// Copyright 2022 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 assuredworkloads provides access to the Assured Workloads API.
//
// For product documentation, see: https://cloud.google.com
//
// Creating a client
//
// Usage example:
//
//   import "google.golang.org/api/assuredworkloads/v1"
//   ...
//   ctx := context.Background()
//   assuredworkloadsService, err := assuredworkloads.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 option.WithAPIKey:
//
//   assuredworkloadsService, err := assuredworkloads.NewService(ctx, option.WithAPIKey("AIza..."))
//
// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth flow), use option.WithTokenSource:
//
//   config := &oauth2.Config{...}
//   // ...
//   token, err := config.Exchange(ctx, ...)
//   assuredworkloadsService, err := assuredworkloads.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See https://godoc.org/google.golang.org/api/option/ for details on options.
package assuredworkloads // import "google.golang.org/api/assuredworkloads/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

const apiId = "assuredworkloads:v1"
const apiName = "assuredworkloads"
const apiVersion = "v1"
const basePath = "https://assuredworkloads.googleapis.com/"
const mtlsBasePath = "https://assuredworkloads.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.WithDefaultMTLSEndpoint(mtlsBasePath))
	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.Organizations = NewOrganizationsService(s)
	return s, nil
}

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

	Organizations *OrganizationsService
}

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

func NewOrganizationsService(s *Service) *OrganizationsService {
	rs := &OrganizationsService{s: s}
	rs.Locations = NewOrganizationsLocationsService(s)
	return rs
}

type OrganizationsService struct {
	s *Service

	Locations *OrganizationsLocationsService
}

func NewOrganizationsLocationsService(s *Service) *OrganizationsLocationsService {
	rs := &OrganizationsLocationsService{s: s}
	rs.Operations = NewOrganizationsLocationsOperationsService(s)
	rs.Workloads = NewOrganizationsLocationsWorkloadsService(s)
	return rs
}

type OrganizationsLocationsService struct {
	s *Service

	Operations *OrganizationsLocationsOperationsService

	Workloads *OrganizationsLocationsWorkloadsService
}

func NewOrganizationsLocationsOperationsService(s *Service) *OrganizationsLocationsOperationsService {
	rs := &OrganizationsLocationsOperationsService{s: s}
	return rs
}

type OrganizationsLocationsOperationsService struct {
	s *Service
}

func NewOrganizationsLocationsWorkloadsService(s *Service) *OrganizationsLocationsWorkloadsService {
	rs := &OrganizationsLocationsWorkloadsService{s: s}
	return rs
}

type OrganizationsLocationsWorkloadsService struct {
	s *Service
}

// GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata:
// Operation metadata to give request details of CreateWorkload.
type GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata struct {
	// ComplianceRegime: Optional. Compliance controls that should be
	// applied to the resources managed by the workload.
	//
	// Possible values:
	//   "COMPLIANCE_REGIME_UNSPECIFIED" - Unknown compliance regime.
	//   "IL4" - Information protection as per DoD IL4 requirements.
	//   "CJIS" - Criminal Justice Information Services (CJIS) Security
	// policies.
	//   "FEDRAMP_HIGH" - FedRAMP High data protection controls
	//   "FEDRAMP_MODERATE" - FedRAMP Moderate data protection controls
	//   "US_REGIONAL_ACCESS" - Assured Workloads For US Regions data
	// protection controls
	//   "HIPAA" - Health Insurance Portability and Accountability Act
	// controls
	//   "HITRUST" - Health Information Trust Alliance controls
	//   "EU_REGIONS_AND_SUPPORT" - Assured Workloads For EU Regions and
	// Support controls
	//   "CA_REGIONS_AND_SUPPORT" - Assured Workloads For Canada Regions and
	// Support controls
	ComplianceRegime string `json:"complianceRegime,omitempty"`

	// CreateTime: Optional. Time when the operation was created.
	CreateTime string `json:"createTime,omitempty"`

	// DisplayName: Optional. The display name of the workload.
	DisplayName string `json:"displayName,omitempty"`

	// Parent: Optional. The parent of the workload.
	Parent string `json:"parent,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ComplianceRegime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ComplianceRegime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1CreateWorkloadOperationMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1ListWorkloadsResponse: Response of
// ListWorkloads endpoint.
type GoogleCloudAssuredworkloadsV1ListWorkloadsResponse struct {
	// NextPageToken: The next page token. Return empty if reached the last
	// page.
	NextPageToken string `json:"nextPageToken,omitempty"`

	// Workloads: List of Workloads under a given parent.
	Workloads []*GoogleCloudAssuredworkloadsV1Workload `json:"workloads,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. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	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. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1ListWorkloadsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1ListWorkloadsResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1Workload: An Workload object for
// managing highly regulated workloads of cloud customers.
type GoogleCloudAssuredworkloadsV1Workload struct {
	// BillingAccount: Optional. The billing account used for the resources
	// which are direct children of workload. This billing account is
	// initially associated with the resources created as part of Workload
	// creation. After the initial creation of these resources, the customer
	// can change the assigned billing account. The resource name has the
	// form `billingAccounts/{billing_account_id}`. For example,
	// `billingAccounts/012345-567890-ABCDEF`.
	BillingAccount string `json:"billingAccount,omitempty"`

	// ComplianceRegime: Required. Immutable. Compliance Regime associated
	// with this workload.
	//
	// Possible values:
	//   "COMPLIANCE_REGIME_UNSPECIFIED" - Unknown compliance regime.
	//   "IL4" - Information protection as per DoD IL4 requirements.
	//   "CJIS" - Criminal Justice Information Services (CJIS) Security
	// policies.
	//   "FEDRAMP_HIGH" - FedRAMP High data protection controls
	//   "FEDRAMP_MODERATE" - FedRAMP Moderate data protection controls
	//   "US_REGIONAL_ACCESS" - Assured Workloads For US Regions data
	// protection controls
	//   "HIPAA" - Health Insurance Portability and Accountability Act
	// controls
	//   "HITRUST" - Health Information Trust Alliance controls
	//   "EU_REGIONS_AND_SUPPORT" - Assured Workloads For EU Regions and
	// Support controls
	//   "CA_REGIONS_AND_SUPPORT" - Assured Workloads For Canada Regions and
	// Support controls
	ComplianceRegime string `json:"complianceRegime,omitempty"`

	// CreateTime: Output only. Immutable. The Workload creation timestamp.
	CreateTime string `json:"createTime,omitempty"`

	// DisplayName: Required. The user-assigned display name of the
	// Workload. When present it must be between 4 to 30 characters. Allowed
	// characters are: lowercase and uppercase letters, numbers, hyphen, and
	// spaces. Example: My Workload
	DisplayName string `json:"displayName,omitempty"`

	// EnableSovereignControls: Optional. Indicates the sovereignty status
	// of the given workload. Currently meant to be used by Europe/Canada
	// customers.
	EnableSovereignControls bool `json:"enableSovereignControls,omitempty"`

	// Etag: Optional. ETag of the workload, it is calculated on the basis
	// of the Workload contents. It will be used in Update & Delete
	// operations.
	Etag string `json:"etag,omitempty"`

	// KajEnrollmentState: Output only. Represents the KAJ enrollment state
	// of the given workload.
	//
	// Possible values:
	//   "KAJ_ENROLLMENT_STATE_UNSPECIFIED" - Default State for KAJ
	// Enrollment.
	//   "KAJ_ENROLLMENT_STATE_PENDING" - Pending State for KAJ Enrollment.
	//   "KAJ_ENROLLMENT_STATE_COMPLETE" - Complete State for KAJ
	// Enrollment.
	KajEnrollmentState string `json:"kajEnrollmentState,omitempty"`

	// KmsSettings: Input only. Settings used to create a CMEK crypto key.
	// When set, a project with a KMS CMEK key is provisioned. This field is
	// deprecated as of Feb 28, 2022. In order to create a Keyring, callers
	// should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in
	// ResourceSettings.resource_type field.
	KmsSettings *GoogleCloudAssuredworkloadsV1WorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// Labels: Optional. Labels applied to the workload.
	Labels map[string]string `json:"labels,omitempty"`

	// Name: Optional. The resource name of the workload. Format:
	// organizations/{organization}/locations/{location}/workloads/{workload}
	//  Read-only.
	Name string `json:"name,omitempty"`

	// ProvisionedResourcesParent: Input only. The parent resource for the
	// resources managed by this Assured Workload. May be either empty or a
	// folder resource which is a child of the Workload parent. If not
	// specified all resources are created under the parent organization.
	// Format: folders/{folder_id}
	ProvisionedResourcesParent string `json:"provisionedResourcesParent,omitempty"`

	// ResourceSettings: Input only. Resource properties that are used to
	// customize workload resources. These properties (such as custom
	// project id) will be used to create workload resources if possible.
	// This field is optional.
	ResourceSettings []*GoogleCloudAssuredworkloadsV1WorkloadResourceSettings `json:"resourceSettings,omitempty"`

	// Resources: Output only. The resources associated with this workload.
	// These resources will be created when creating the workload. If any of
	// the projects already exist, the workload creation will fail. Always
	// read only.
	Resources []*GoogleCloudAssuredworkloadsV1WorkloadResourceInfo `json:"resources,omitempty"`

	// SaaEnrollmentResponse: Output only. Represents the SAA enrollment
	// response of the given workload. SAA enrollment response is queried
	// during GetWorkload call. In failure cases, user friendly error
	// message is shown in SAA details page.
	SaaEnrollmentResponse *GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse `json:"saaEnrollmentResponse,omitempty"`

	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`

	// ForceSendFields is a list of field names (e.g. "BillingAccount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BillingAccount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1Workload) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1Workload
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1WorkloadKMSSettings: Settings specific
// to the Key Management Service.
type GoogleCloudAssuredworkloadsV1WorkloadKMSSettings struct {
	// NextRotationTime: Required. Input only. Immutable. The time at which
	// the Key Management Service will automatically create a new version of
	// the crypto key and mark it as the primary.
	NextRotationTime string `json:"nextRotationTime,omitempty"`

	// RotationPeriod: Required. Input only. Immutable. [next_rotation_time]
	// will be advanced by this period when the Key Management Service
	// automatically rotates a key. Must be at least 24 hours and at most
	// 876,000 hours.
	RotationPeriod string `json:"rotationPeriod,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NextRotationTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NextRotationTime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1WorkloadKMSSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1WorkloadKMSSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1WorkloadResourceInfo: Represent the
// resources that are children of this Workload.
type GoogleCloudAssuredworkloadsV1WorkloadResourceInfo struct {
	// ResourceId: Resource identifier. For a project this represents
	// project_number.
	ResourceId int64 `json:"resourceId,omitempty,string"`

	// ResourceType: Indicates the type of resource.
	//
	// Possible values:
	//   "RESOURCE_TYPE_UNSPECIFIED" - Unknown resource type.
	//   "CONSUMER_PROJECT" - Consumer project. AssuredWorkloads Projects
	// are no longer supported. This field will be ignored only in
	// CreateWorkload requests. ListWorkloads and GetWorkload will continue
	// to provide projects information. Use CONSUMER_FOLDER instead.
	//   "CONSUMER_FOLDER" - Consumer Folder.
	//   "ENCRYPTION_KEYS_PROJECT" - Consumer project containing encryption
	// keys.
	//   "KEYRING" - Keyring resource that hosts encryption keys.
	ResourceType string `json:"resourceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ResourceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ResourceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1WorkloadResourceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1WorkloadResourceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1WorkloadResourceSettings: Represent the
// custom settings for the resources to be created.
type GoogleCloudAssuredworkloadsV1WorkloadResourceSettings struct {
	// DisplayName: User-assigned resource display name. If not empty it
	// will be used to create a resource with the specified name.
	DisplayName string `json:"displayName,omitempty"`

	// ResourceId: Resource identifier. For a project this represents
	// project_id. If the project is already taken, the workload creation
	// will fail. For KeyRing, this represents the keyring_id. For a folder,
	// don't set this value as folder_id is assigned by Google.
	ResourceId string `json:"resourceId,omitempty"`

	// ResourceType: Indicates the type of resource. This field should be
	// specified to correspond the id to the right project type
	// (CONSUMER_PROJECT or ENCRYPTION_KEYS_PROJECT)
	//
	// Possible values:
	//   "RESOURCE_TYPE_UNSPECIFIED" - Unknown resource type.
	//   "CONSUMER_PROJECT" - Consumer project. AssuredWorkloads Projects
	// are no longer supported. This field will be ignored only in
	// CreateWorkload requests. ListWorkloads and GetWorkload will continue
	// to provide projects information. Use CONSUMER_FOLDER instead.
	//   "CONSUMER_FOLDER" - Consumer Folder.
	//   "ENCRYPTION_KEYS_PROJECT" - Consumer project containing encryption
	// keys.
	//   "KEYRING" - Keyring resource that hosts encryption keys.
	ResourceType string `json:"resourceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1WorkloadResourceSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1WorkloadResourceSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse: Signed
// Access Approvals (SAA) enrollment response.
type GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse struct {
	// SetupErrors: Indicates SAA enrollment setup error if any.
	//
	// Possible values:
	//   "SETUP_ERROR_UNSPECIFIED" - Unspecified.
	//   "ERROR_INVALID_BASE_SETUP" - Invalid states for all customers, to
	// be redirected to AA UI for additional details.
	//   "ERROR_MISSING_EXTERNAL_SIGNING_KEY" - Returned when there is not
	// an EKM key configured.
	//   "ERROR_NOT_ALL_SERVICES_ENROLLED" - Returned when there are no
	// enrolled services or the customer is enrolled in CAA only for a
	// subset of services.
	//   "ERROR_SETUP_CHECK_FAILED" - Returned when exception was
	// encountered during evaluation of other criteria.
	SetupErrors []string `json:"setupErrors,omitempty"`

	// SetupStatus: Indicates SAA enrollment status of a given workload.
	//
	// Possible values:
	//   "SETUP_STATE_UNSPECIFIED" - Unspecified.
	//   "STATUS_PENDING" - SAA enrollment pending.
	//   "STATUS_COMPLETE" - SAA enrollment comopleted.
	SetupStatus string `json:"setupStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SetupErrors") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SetupErrors") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1WorkloadSaaEnrollmentResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1beta1CreateWorkloadOperationMetadata:
// Operation metadata to give request details of CreateWorkload.
type GoogleCloudAssuredworkloadsV1beta1CreateWorkloadOperationMetadata struct {
	// ComplianceRegime: Optional. Compliance controls that should be
	// applied to the resources managed by the workload.
	//
	// Possible values:
	//   "COMPLIANCE_REGIME_UNSPECIFIED" - Unknown compliance regime.
	//   "IL4" - Information protection as per DoD IL4 requirements.
	//   "CJIS" - Criminal Justice Information Services (CJIS) Security
	// policies.
	//   "FEDRAMP_HIGH" - FedRAMP High data protection controls
	//   "FEDRAMP_MODERATE" - FedRAMP Moderate data protection controls
	//   "US_REGIONAL_ACCESS" - Assured Workloads For US Regions data
	// protection controls
	//   "HIPAA" - Health Insurance Portability and Accountability Act
	// controls
	//   "HITRUST" - Health Information Trust Alliance controls
	//   "EU_REGIONS_AND_SUPPORT" - Assured Workloads For EU Regions and
	// Support controls
	//   "CA_REGIONS_AND_SUPPORT" - Assured Workloads For Canada Regions and
	// Support controls
	ComplianceRegime string `json:"complianceRegime,omitempty"`

	// CreateTime: Optional. Time when the operation was created.
	CreateTime string `json:"createTime,omitempty"`

	// DisplayName: Optional. The display name of the workload.
	DisplayName string `json:"displayName,omitempty"`

	// Parent: Optional. The parent of the workload.
	Parent string `json:"parent,omitempty"`

	// ResourceSettings: Optional. Resource properties in the input that are
	// used for creating/customizing workload resources.
	ResourceSettings []*GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings `json:"resourceSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ComplianceRegime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ComplianceRegime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1beta1CreateWorkloadOperationMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1beta1CreateWorkloadOperationMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1beta1Workload: An Workload object for
// managing highly regulated workloads of cloud customers.
type GoogleCloudAssuredworkloadsV1beta1Workload struct {
	// BillingAccount: Input only. The billing account used for the
	// resources which are direct children of workload. This billing account
	// is initially associated with the resources created as part of
	// Workload creation. After the initial creation of these resources, the
	// customer can change the assigned billing account. The resource name
	// has the form `billingAccounts/{billing_account_id}`. For example,
	// `billingAccounts/012345-567890-ABCDEF`.
	BillingAccount string `json:"billingAccount,omitempty"`

	// CjisSettings: Input only. Immutable. Settings specific to resources
	// needed for CJIS.
	CjisSettings *GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettings `json:"cjisSettings,omitempty"`

	// ComplianceRegime: Required. Immutable. Compliance Regime associated
	// with this workload.
	//
	// Possible values:
	//   "COMPLIANCE_REGIME_UNSPECIFIED" - Unknown compliance regime.
	//   "IL4" - Information protection as per DoD IL4 requirements.
	//   "CJIS" - Criminal Justice Information Services (CJIS) Security
	// policies.
	//   "FEDRAMP_HIGH" - FedRAMP High data protection controls
	//   "FEDRAMP_MODERATE" - FedRAMP Moderate data protection controls
	//   "US_REGIONAL_ACCESS" - Assured Workloads For US Regions data
	// protection controls
	//   "HIPAA" - Health Insurance Portability and Accountability Act
	// controls
	//   "HITRUST" - Health Information Trust Alliance controls
	//   "EU_REGIONS_AND_SUPPORT" - Assured Workloads For EU Regions and
	// Support controls
	//   "CA_REGIONS_AND_SUPPORT" - Assured Workloads For Canada Regions and
	// Support controls
	ComplianceRegime string `json:"complianceRegime,omitempty"`

	// CreateTime: Output only. Immutable. The Workload creation timestamp.
	CreateTime string `json:"createTime,omitempty"`

	// DisplayName: Required. The user-assigned display name of the
	// Workload. When present it must be between 4 to 30 characters. Allowed
	// characters are: lowercase and uppercase letters, numbers, hyphen, and
	// spaces. Example: My Workload
	DisplayName string `json:"displayName,omitempty"`

	// EnableSovereignControls: Optional. Indicates the sovereignty status
	// of the given workload. Currently meant to be used by Europe/Canada
	// customers.
	EnableSovereignControls bool `json:"enableSovereignControls,omitempty"`

	// Etag: Optional. ETag of the workload, it is calculated on the basis
	// of the Workload contents. It will be used in Update & Delete
	// operations.
	Etag string `json:"etag,omitempty"`

	// FedrampHighSettings: Input only. Immutable. Settings specific to
	// resources needed for FedRAMP High.
	FedrampHighSettings *GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettings `json:"fedrampHighSettings,omitempty"`

	// FedrampModerateSettings: Input only. Immutable. Settings specific to
	// resources needed for FedRAMP Moderate.
	FedrampModerateSettings *GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettings `json:"fedrampModerateSettings,omitempty"`

	// Il4Settings: Input only. Immutable. Settings specific to resources
	// needed for IL4.
	Il4Settings *GoogleCloudAssuredworkloadsV1beta1WorkloadIL4Settings `json:"il4Settings,omitempty"`

	// KajEnrollmentState: Output only. Represents the KAJ enrollment state
	// of the given workload.
	//
	// Possible values:
	//   "KAJ_ENROLLMENT_STATE_UNSPECIFIED" - Default State for KAJ
	// Enrollment.
	//   "KAJ_ENROLLMENT_STATE_PENDING" - Pending State for KAJ Enrollment.
	//   "KAJ_ENROLLMENT_STATE_COMPLETE" - Complete State for KAJ
	// Enrollment.
	KajEnrollmentState string `json:"kajEnrollmentState,omitempty"`

	// KmsSettings: Input only. Settings used to create a CMEK crypto key.
	// When set, a project with a KMS CMEK key is provisioned. This field is
	// deprecated as of Feb 28, 2022. In order to create a Keyring, callers
	// should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in
	// ResourceSettings.resource_type field.
	KmsSettings *GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// Labels: Optional. Labels applied to the workload.
	Labels map[string]string `json:"labels,omitempty"`

	// Name: Optional. The resource name of the workload. Format:
	// organizations/{organization}/locations/{location}/workloads/{workload}
	//  Read-only.
	Name string `json:"name,omitempty"`

	// ProvisionedResourcesParent: Input only. The parent resource for the
	// resources managed by this Assured Workload. May be either empty or a
	// folder resource which is a child of the Workload parent. If not
	// specified all resources are created under the parent organization.
	// Format: folders/{folder_id}
	ProvisionedResourcesParent string `json:"provisionedResourcesParent,omitempty"`

	// ResourceSettings: Input only. Resource properties that are used to
	// customize workload resources. These properties (such as custom
	// project id) will be used to create workload resources if possible.
	// This field is optional.
	ResourceSettings []*GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings `json:"resourceSettings,omitempty"`

	// Resources: Output only. The resources associated with this workload.
	// These resources will be created when creating the workload. If any of
	// the projects already exist, the workload creation will fail. Always
	// read only.
	Resources []*GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfo `json:"resources,omitempty"`

	// SaaEnrollmentResponse: Output only. Represents the SAA enrollment
	// response of the given workload. SAA enrollment response is queried
	// during GetWorkload call. In failure cases, user friendly error
	// message is shown in SAA details page.
	SaaEnrollmentResponse *GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponse `json:"saaEnrollmentResponse,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BillingAccount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BillingAccount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1beta1Workload) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1beta1Workload
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettings: Settings
// specific to resources needed for CJIS.
type GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettings struct {
	// KmsSettings: Input only. Immutable. Settings used to create a CMEK
	// crypto key.
	KmsSettings *GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KmsSettings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KmsSettings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1beta1WorkloadCJISSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettings:
// Settings specific to resources needed for FedRAMP High.
type GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettings struct {
	// KmsSettings: Input only. Immutable. Settings used to create a CMEK
	// crypto key.
	KmsSettings *GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KmsSettings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KmsSettings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampHighSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettings:
// Settings specific to resources needed for FedRAMP Moderate.
type GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettings struct {
	// KmsSettings: Input only. Immutable. Settings used to create a CMEK
	// crypto key.
	KmsSettings *GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KmsSettings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KmsSettings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1beta1WorkloadFedrampModerateSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1beta1WorkloadIL4Settings: Settings
// specific to resources needed for IL4.
type GoogleCloudAssuredworkloadsV1beta1WorkloadIL4Settings struct {
	// KmsSettings: Input only. Immutable. Settings used to create a CMEK
	// crypto key.
	KmsSettings *GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KmsSettings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KmsSettings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1beta1WorkloadIL4Settings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1beta1WorkloadIL4Settings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings: Settings
// specific to the Key Management Service.
type GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings struct {
	// NextRotationTime: Required. Input only. Immutable. The time at which
	// the Key Management Service will automatically create a new version of
	// the crypto key and mark it as the primary.
	NextRotationTime string `json:"nextRotationTime,omitempty"`

	// RotationPeriod: Required. Input only. Immutable. [next_rotation_time]
	// will be advanced by this period when the Key Management Service
	// automatically rotates a key. Must be at least 24 hours and at most
	// 876,000 hours.
	RotationPeriod string `json:"rotationPeriod,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NextRotationTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NextRotationTime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1beta1WorkloadKMSSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfo: Represent the
// resources that are children of this Workload.
type GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfo struct {
	// ResourceId: Resource identifier. For a project this represents
	// project_number.
	ResourceId int64 `json:"resourceId,omitempty,string"`

	// ResourceType: Indicates the type of resource.
	//
	// Possible values:
	//   "RESOURCE_TYPE_UNSPECIFIED" - Unknown resource type.
	//   "CONSUMER_PROJECT" - Deprecated. Existing workloads will continue
	// to support this, but new CreateWorkloadRequests should not specify
	// this as an input value.
	//   "CONSUMER_FOLDER" - Consumer Folder.
	//   "ENCRYPTION_KEYS_PROJECT" - Consumer project containing encryption
	// keys.
	//   "KEYRING" - Keyring resource that hosts encryption keys.
	ResourceType string `json:"resourceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ResourceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ResourceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1beta1WorkloadResourceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings: Represent
// the custom settings for the resources to be created.
type GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings struct {
	// DisplayName: User-assigned resource display name. If not empty it
	// will be used to create a resource with the specified name.
	DisplayName string `json:"displayName,omitempty"`

	// ResourceId: Resource identifier. For a project this represents
	// project_id. If the project is already taken, the workload creation
	// will fail. For KeyRing, this represents the keyring_id. For a folder,
	// don't set this value as folder_id is assigned by Google.
	ResourceId string `json:"resourceId,omitempty"`

	// ResourceType: Indicates the type of resource. This field should be
	// specified to correspond the id to the right project type
	// (CONSUMER_PROJECT or ENCRYPTION_KEYS_PROJECT)
	//
	// Possible values:
	//   "RESOURCE_TYPE_UNSPECIFIED" - Unknown resource type.
	//   "CONSUMER_PROJECT" - Deprecated. Existing workloads will continue
	// to support this, but new CreateWorkloadRequests should not specify
	// this as an input value.
	//   "CONSUMER_FOLDER" - Consumer Folder.
	//   "ENCRYPTION_KEYS_PROJECT" - Consumer project containing encryption
	// keys.
	//   "KEYRING" - Keyring resource that hosts encryption keys.
	ResourceType string `json:"resourceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1beta1WorkloadResourceSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponse:
// Signed Access Approvals (SAA) enrollment response.
type GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponse struct {
	// SetupErrors: Indicates SAA enrollment setup error if any.
	//
	// Possible values:
	//   "SETUP_ERROR_UNSPECIFIED" - Unspecified.
	//   "ERROR_INVALID_BASE_SETUP" - Invalid states for all customers, to
	// be redirected to AA UI for additional details.
	//   "ERROR_MISSING_EXTERNAL_SIGNING_KEY" - Returned when there is not
	// an EKM key configured.
	//   "ERROR_NOT_ALL_SERVICES_ENROLLED" - Returned when there are no
	// enrolled services or the customer is enrolled in CAA only for a
	// subset of services.
	//   "ERROR_SETUP_CHECK_FAILED" - Returned when exception was
	// encountered during evaluation of other criteria.
	SetupErrors []string `json:"setupErrors,omitempty"`

	// SetupStatus: Indicates SAA enrollment status of a given workload.
	//
	// Possible values:
	//   "SETUP_STATE_UNSPECIFIED" - Unspecified.
	//   "STATUS_PENDING" - SAA enrollment pending.
	//   "STATUS_COMPLETE" - SAA enrollment comopleted.
	SetupStatus string `json:"setupStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SetupErrors") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SetupErrors") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsV1beta1WorkloadSaaEnrollmentResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsVersioningV1mainCreateWorkloadOperationMeta
// data: Operation metadata to give request details of CreateWorkload.
type GoogleCloudAssuredworkloadsVersioningV1mainCreateWorkloadOperationMetadata struct {
	// ComplianceRegime: Optional. Compliance controls that should be
	// applied to the resources managed by the workload.
	//
	// Possible values:
	//   "COMPLIANCE_REGIME_UNSPECIFIED" - Unknown compliance regime.
	//   "IL4" - Information protection as per DoD IL4 requirements.
	//   "CJIS" - Criminal Justice Information Services (CJIS) Security
	// policies.
	//   "FEDRAMP_HIGH" - FedRAMP High data protection controls
	//   "FEDRAMP_MODERATE" - FedRAMP Moderate data protection controls
	//   "US_REGIONAL_ACCESS" - Assured Workloads For US Regions data
	// protection controls
	//   "HIPAA" - Health Insurance Portability and Accountability Act
	// controls
	//   "HITRUST" - Health Information Trust Alliance controls
	//   "EU_REGIONS_AND_SUPPORT" - Assured Workloads For EU Regions and
	// Support controls
	//   "CA_REGIONS_AND_SUPPORT" - Assured Workloads For Canada Regions and
	// Support controls
	ComplianceRegime string `json:"complianceRegime,omitempty"`

	// CreateTime: Optional. Time when the operation was created.
	CreateTime string `json:"createTime,omitempty"`

	// DisplayName: Optional. The display name of the workload.
	DisplayName string `json:"displayName,omitempty"`

	// Parent: Optional. The parent of the workload.
	Parent string `json:"parent,omitempty"`

	// ResourceSettings: Optional. Resource properties in the input that are
	// used for creating/customizing workload resources.
	ResourceSettings []*GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceSettings `json:"resourceSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ComplianceRegime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ComplianceRegime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsVersioningV1mainCreateWorkloadOperationMetadata) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsVersioningV1mainCreateWorkloadOperationMetadata
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsVersioningV1mainWorkload: An Workload
// object for managing highly regulated workloads of cloud customers.
type GoogleCloudAssuredworkloadsVersioningV1mainWorkload struct {
	// BillingAccount: Input only. The billing account used for the
	// resources which are direct children of workload. This billing account
	// is initially associated with the resources created as part of
	// Workload creation. After the initial creation of these resources, the
	// customer can change the assigned billing account. The resource name
	// has the form `billingAccounts/{billing_account_id}`. For example,
	// `billingAccounts/012345-567890-ABCDEF`.
	BillingAccount string `json:"billingAccount,omitempty"`

	// CjisSettings: Required. Input only. Immutable. Settings specific to
	// resources needed for CJIS.
	CjisSettings *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadCJISSettings `json:"cjisSettings,omitempty"`

	// ComplianceRegime: Required. Immutable. Compliance Regime associated
	// with this workload.
	//
	// Possible values:
	//   "COMPLIANCE_REGIME_UNSPECIFIED" - Unknown compliance regime.
	//   "IL4" - Information protection as per DoD IL4 requirements.
	//   "CJIS" - Criminal Justice Information Services (CJIS) Security
	// policies.
	//   "FEDRAMP_HIGH" - FedRAMP High data protection controls
	//   "FEDRAMP_MODERATE" - FedRAMP Moderate data protection controls
	//   "US_REGIONAL_ACCESS" - Assured Workloads For US Regions data
	// protection controls
	//   "HIPAA" - Health Insurance Portability and Accountability Act
	// controls
	//   "HITRUST" - Health Information Trust Alliance controls
	//   "EU_REGIONS_AND_SUPPORT" - Assured Workloads For EU Regions and
	// Support controls
	//   "CA_REGIONS_AND_SUPPORT" - Assured Workloads For Canada Regions and
	// Support controls
	ComplianceRegime string `json:"complianceRegime,omitempty"`

	// CreateTime: Output only. Immutable. The Workload creation timestamp.
	CreateTime string `json:"createTime,omitempty"`

	// DisplayName: Required. The user-assigned display name of the
	// Workload. When present it must be between 4 to 30 characters. Allowed
	// characters are: lowercase and uppercase letters, numbers, hyphen, and
	// spaces. Example: My Workload
	DisplayName string `json:"displayName,omitempty"`

	// EnableSovereignControls: Optional. Indicates the sovereignty status
	// of the given workload. Currently meant to be used by Europe/Canada
	// customers.
	EnableSovereignControls bool `json:"enableSovereignControls,omitempty"`

	// Etag: Optional. ETag of the workload, it is calculated on the basis
	// of the Workload contents. It will be used in Update & Delete
	// operations.
	Etag string `json:"etag,omitempty"`

	// FedrampHighSettings: Required. Input only. Immutable. Settings
	// specific to resources needed for FedRAMP High.
	FedrampHighSettings *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadFedrampHighSettings `json:"fedrampHighSettings,omitempty"`

	// FedrampModerateSettings: Required. Input only. Immutable. Settings
	// specific to resources needed for FedRAMP Moderate.
	FedrampModerateSettings *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadFedrampModerateSettings `json:"fedrampModerateSettings,omitempty"`

	// Il4Settings: Required. Input only. Immutable. Settings specific to
	// resources needed for IL4.
	Il4Settings *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadIL4Settings `json:"il4Settings,omitempty"`

	// KajEnrollmentState: Output only. Represents the KAJ enrollment state
	// of the given workload.
	//
	// Possible values:
	//   "KAJ_ENROLLMENT_STATE_UNSPECIFIED" - Default State for KAJ
	// Enrollment.
	//   "KAJ_ENROLLMENT_STATE_PENDING" - Pending State for KAJ Enrollment.
	//   "KAJ_ENROLLMENT_STATE_COMPLETE" - Complete State for KAJ
	// Enrollment.
	KajEnrollmentState string `json:"kajEnrollmentState,omitempty"`

	// KmsSettings: Input only. Settings used to create a CMEK crypto key.
	// When set, a project with a KMS CMEK key is provisioned. This field is
	// deprecated as of Feb 28, 2022. In order to create a Keyring, callers
	// should specify, ENCRYPTION_KEYS_PROJECT or KEYRING in
	// ResourceSettings.resource_type field.
	KmsSettings *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// Labels: Optional. Labels applied to the workload.
	Labels map[string]string `json:"labels,omitempty"`

	// Name: Optional. The resource name of the workload. Format:
	// organizations/{organization}/locations/{location}/workloads/{workload}
	//  Read-only.
	Name string `json:"name,omitempty"`

	// ProvisionedResourcesParent: Input only. The parent resource for the
	// resources managed by this Assured Workload. May be either empty or a
	// folder resource which is a child of the Workload parent. If not
	// specified all resources are created under the parent organization.
	// Format: folders/{folder_id}
	ProvisionedResourcesParent string `json:"provisionedResourcesParent,omitempty"`

	// ResourceSettings: Input only. Resource properties that are used to
	// customize workload resources. These properties (such as custom
	// project id) will be used to create workload resources if possible.
	// This field is optional.
	ResourceSettings []*GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceSettings `json:"resourceSettings,omitempty"`

	// Resources: Output only. The resources associated with this workload.
	// These resources will be created when creating the workload. If any of
	// the projects already exist, the workload creation will fail. Always
	// read only.
	Resources []*GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceInfo `json:"resources,omitempty"`

	// SaaEnrollmentResponse: Output only. Represents the SAA enrollment
	// response of the given workload. SAA enrollment response is queried
	// during GetWorkload call. In failure cases, user friendly error
	// message is shown in SAA details page.
	SaaEnrollmentResponse *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadSaaEnrollmentResponse `json:"saaEnrollmentResponse,omitempty"`

	// ForceSendFields is a list of field names (e.g. "BillingAccount") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "BillingAccount") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsVersioningV1mainWorkload) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsVersioningV1mainWorkload
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsVersioningV1mainWorkloadCJISSettings:
// Settings specific to resources needed for CJIS.
type GoogleCloudAssuredworkloadsVersioningV1mainWorkloadCJISSettings struct {
	// KmsSettings: Input only. Immutable. Settings used to create a CMEK
	// crypto key.
	KmsSettings *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KmsSettings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KmsSettings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadCJISSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsVersioningV1mainWorkloadCJISSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsVersioningV1mainWorkloadFedrampHighSettings
// : Settings specific to resources needed for FedRAMP High.
type GoogleCloudAssuredworkloadsVersioningV1mainWorkloadFedrampHighSettings struct {
	// KmsSettings: Input only. Immutable. Settings used to create a CMEK
	// crypto key.
	KmsSettings *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KmsSettings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KmsSettings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadFedrampHighSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsVersioningV1mainWorkloadFedrampHighSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsVersioningV1mainWorkloadFedrampModerateSett
// ings: Settings specific to resources needed for FedRAMP Moderate.
type GoogleCloudAssuredworkloadsVersioningV1mainWorkloadFedrampModerateSettings struct {
	// KmsSettings: Input only. Immutable. Settings used to create a CMEK
	// crypto key.
	KmsSettings *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KmsSettings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KmsSettings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadFedrampModerateSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsVersioningV1mainWorkloadFedrampModerateSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsVersioningV1mainWorkloadIL4Settings:
// Settings specific to resources needed for IL4.
type GoogleCloudAssuredworkloadsVersioningV1mainWorkloadIL4Settings struct {
	// KmsSettings: Input only. Immutable. Settings used to create a CMEK
	// crypto key.
	KmsSettings *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadKMSSettings `json:"kmsSettings,omitempty"`

	// ForceSendFields is a list of field names (e.g. "KmsSettings") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "KmsSettings") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadIL4Settings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsVersioningV1mainWorkloadIL4Settings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsVersioningV1mainWorkloadKMSSettings:
// Settings specific to the Key Management Service.
type GoogleCloudAssuredworkloadsVersioningV1mainWorkloadKMSSettings struct {
	// NextRotationTime: Required. Input only. Immutable. The time at which
	// the Key Management Service will automatically create a new version of
	// the crypto key and mark it as the primary.
	NextRotationTime string `json:"nextRotationTime,omitempty"`

	// RotationPeriod: Required. Input only. Immutable. [next_rotation_time]
	// will be advanced by this period when the Key Management Service
	// automatically rotates a key. Must be at least 24 hours and at most
	// 876,000 hours.
	RotationPeriod string `json:"rotationPeriod,omitempty"`

	// ForceSendFields is a list of field names (e.g. "NextRotationTime") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "NextRotationTime") to
	// include in API requests with the JSON null value. By default, fields
	// with empty values are omitted from API requests. However, any field
	// with an empty value appearing in NullFields will be sent to the
	// server as null. It is an error if a field in this list has a
	// non-empty value. This may be used to include null fields in Patch
	// requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadKMSSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsVersioningV1mainWorkloadKMSSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceInfo:
// Represent the resources that are children of this Workload.
type GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceInfo struct {
	// ResourceId: Resource identifier. For a project this represents
	// project_number.
	ResourceId int64 `json:"resourceId,omitempty,string"`

	// ResourceType: Indicates the type of resource.
	//
	// Possible values:
	//   "RESOURCE_TYPE_UNSPECIFIED" - Unknown resource type.
	//   "CONSUMER_PROJECT" - Deprecated. Existing workloads will continue
	// to support this, but new CreateWorkloadRequests should not specify
	// this as an input value.
	//   "CONSUMER_FOLDER" - Consumer Folder.
	//   "ENCRYPTION_KEYS_PROJECT" - Consumer project containing encryption
	// keys.
	//   "KEYRING" - Keyring resource that hosts encryption keys.
	ResourceType string `json:"resourceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "ResourceId") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "ResourceId") to include in
	// API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceInfo) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceInfo
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceSettings:
// Represent the custom settings for the resources to be created.
type GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceSettings struct {
	// DisplayName: User-assigned resource display name. If not empty it
	// will be used to create a resource with the specified name.
	DisplayName string `json:"displayName,omitempty"`

	// ResourceId: Resource identifier. For a project this represents
	// project_id. If the project is already taken, the workload creation
	// will fail. For KeyRing, this represents the keyring_id. For a folder,
	// don't set this value as folder_id is assigned by Google.
	ResourceId string `json:"resourceId,omitempty"`

	// ResourceType: Indicates the type of resource. This field should be
	// specified to correspond the id to the right project type
	// (CONSUMER_PROJECT or ENCRYPTION_KEYS_PROJECT)
	//
	// Possible values:
	//   "RESOURCE_TYPE_UNSPECIFIED" - Unknown resource type.
	//   "CONSUMER_PROJECT" - Deprecated. Existing workloads will continue
	// to support this, but new CreateWorkloadRequests should not specify
	// this as an input value.
	//   "CONSUMER_FOLDER" - Consumer Folder.
	//   "ENCRYPTION_KEYS_PROJECT" - Consumer project containing encryption
	// keys.
	//   "KEYRING" - Keyring resource that hosts encryption keys.
	ResourceType string `json:"resourceType,omitempty"`

	// ForceSendFields is a list of field names (e.g. "DisplayName") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "DisplayName") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceSettings) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsVersioningV1mainWorkloadResourceSettings
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleCloudAssuredworkloadsVersioningV1mainWorkloadSaaEnrollmentRespon
// se: Signed Access Approvals (SAA) enrollment response.
type GoogleCloudAssuredworkloadsVersioningV1mainWorkloadSaaEnrollmentResponse struct {
	// SetupErrors: Indicates SAA enrollment setup error if any.
	//
	// Possible values:
	//   "SETUP_ERROR_UNSPECIFIED" - Unspecified.
	//   "ERROR_INVALID_BASE_SETUP" - Invalid states for all customers, to
	// be redirected to AA UI for additional details.
	//   "ERROR_MISSING_EXTERNAL_SIGNING_KEY" - Returned when there is not
	// an EKM key configured.
	//   "ERROR_NOT_ALL_SERVICES_ENROLLED" - Returned when there are no
	// enrolled services or the customer is enrolled in CAA only for a
	// subset of services.
	//   "ERROR_SETUP_CHECK_FAILED" - Returned when exception was
	// encountered during evaluation of other criteria.
	SetupErrors []string `json:"setupErrors,omitempty"`

	// SetupStatus: Indicates SAA enrollment status of a given workload.
	//
	// Possible values:
	//   "SETUP_STATE_UNSPECIFIED" - Unspecified.
	//   "STATUS_PENDING" - SAA enrollment pending.
	//   "STATUS_COMPLETE" - SAA enrollment comopleted.
	SetupStatus string `json:"setupStatus,omitempty"`

	// ForceSendFields is a list of field names (e.g. "SetupErrors") to
	// unconditionally include in API requests. By default, fields with
	// empty or default values are omitted from API requests. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	ForceSendFields []string `json:"-"`

	// NullFields is a list of field names (e.g. "SetupErrors") to include
	// in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleCloudAssuredworkloadsVersioningV1mainWorkloadSaaEnrollmentResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleCloudAssuredworkloadsVersioningV1mainWorkloadSaaEnrollmentResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleLongrunningListOperationsResponse: The response message for
// Operations.ListOperations.
type GoogleLongrunningListOperationsResponse 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 []*GoogleLongrunningOperation `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. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	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. However, any field with
	// an empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleLongrunningListOperationsResponse) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleLongrunningListOperationsResponse
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleLongrunningOperation: This resource represents a long-running
// operation that is the result of a network API call.
type GoogleLongrunningOperation 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 *GoogleRpcStatus `json:"error,omitempty"`

	// Metadata: Service-specific metadata associated with the operation. It
	// typically contains progress information and common metadata such as
	// create time. Some services might not provide such metadata. Any
	// method that returns a long-running operation should document the
	// metadata type, if any.
	Metadata googleapi.RawMessage `json:"metadata,omitempty"`

	// Name: The server-assigned name, which is only unique within the same
	// service that originally returns it. If you use the default HTTP
	// mapping, the `name` should be a resource name ending with
	// `operations/{unique_id}`.
	Name string `json:"name,omitempty"`

	// Response: The normal response of the operation in case of success. 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. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	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. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleLongrunningOperation) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleLongrunningOperation
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// GoogleProtobufEmpty: 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 GoogleProtobufEmpty struct {
	// ServerResponse contains the HTTP response code and headers from the
	// server.
	googleapi.ServerResponse `json:"-"`
}

// GoogleRpcStatus: 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 GoogleRpcStatus 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. However, any
	// non-pointer, non-interface field appearing in ForceSendFields will be
	// sent to the server regardless of whether the field is empty or not.
	// This may be used to include empty fields in Patch requests.
	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. However, any field with an
	// empty value appearing in NullFields will be sent to the server as
	// null. It is an error if a field in this list has a non-empty value.
	// This may be used to include null fields in Patch requests.
	NullFields []string `json:"-"`
}

func (s *GoogleRpcStatus) MarshalJSON() ([]byte, error) {
	type NoMethod GoogleRpcStatus
	raw := NoMethod(*s)
	return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}

// method id "assuredworkloads.organizations.locations.operations.get":

type OrganizationsLocationsOperationsGetCall 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 *OrganizationsLocationsOperationsService) Get(name string) *OrganizationsLocationsOperationsGetCall {
	c := &OrganizationsLocationsOperationsGetCall{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 information.
func (c *OrganizationsLocationsOperationsGetCall) Fields(s ...googleapi.Field) *OrganizationsLocationsOperationsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the 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. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *OrganizationsLocationsOperationsGetCall) IfNoneMatch(entityTag string) *OrganizationsLocationsOperationsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *OrganizationsLocationsOperationsGetCall) Context(ctx context.Context) *OrganizationsLocationsOperationsGetCall {
	c.ctx_ = ctx
	return c
}

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

func (c *OrganizationsLocationsOperationsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	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 "assuredworkloads.organizations.locations.operations.get" call.
// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleLongrunningOperation.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 *OrganizationsLocationsOperationsGetCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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, &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, err
	}
	ret := &GoogleLongrunningOperation{
		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
	// {
	//   "description": "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.",
	//   "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/operations/{operationsId}",
	//   "httpMethod": "GET",
	//   "id": "assuredworkloads.organizations.locations.operations.get",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "The name of the operation resource.",
	//       "location": "path",
	//       "pattern": "^organizations/[^/]+/locations/[^/]+/operations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "response": {
	//     "$ref": "GoogleLongrunningOperation"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "assuredworkloads.organizations.locations.operations.list":

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

// List: Lists operations that match the specified filter in the
// request. If the server doesn't support this method, it returns
// `UNIMPLEMENTED`. NOTE: the `name` binding allows API services to
// override the binding to use different resource name schemes, such as
// `users/*/operations`. To override the binding, API services can add a
// binding such as "/v1/{name=users/*}/operations" to their service
// configuration. For backwards compatibility, the default name includes
// the operations collection id, however overriding users must ensure
// the name binding is the parent resource, without the operations
// collection id.
//
// - name: The name of the operation's parent resource.
func (r *OrganizationsLocationsOperationsService) List(name string) *OrganizationsLocationsOperationsListCall {
	c := &OrganizationsLocationsOperationsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

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

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

// PageToken sets the optional parameter "pageToken": The standard list
// page token.
func (c *OrganizationsLocationsOperationsListCall) PageToken(pageToken string) *OrganizationsLocationsOperationsListCall {
	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 information.
func (c *OrganizationsLocationsOperationsListCall) Fields(s ...googleapi.Field) *OrganizationsLocationsOperationsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the 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. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *OrganizationsLocationsOperationsListCall) IfNoneMatch(entityTag string) *OrganizationsLocationsOperationsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *OrganizationsLocationsOperationsListCall) Context(ctx context.Context) *OrganizationsLocationsOperationsListCall {
	c.ctx_ = ctx
	return c
}

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

func (c *OrganizationsLocationsOperationsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	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}/operations")
	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 "assuredworkloads.organizations.locations.operations.list" call.
// Exactly one of *GoogleLongrunningListOperationsResponse or error will
// be non-nil. Any non-2xx status code is an error. Response headers are
// in either
// *GoogleLongrunningListOperationsResponse.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 *OrganizationsLocationsOperationsListCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningListOperationsResponse, 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, &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, err
	}
	ret := &GoogleLongrunningListOperationsResponse{
		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
	// {
	//   "description": "Lists operations that match the specified filter in the request. If the server doesn't support this method, it returns `UNIMPLEMENTED`. NOTE: the `name` binding allows API services to override the binding to use different resource name schemes, such as `users/*/operations`. To override the binding, API services can add a binding such as `\"/v1/{name=users/*}/operations\"` to their service configuration. For backwards compatibility, the default name includes the operations collection id, however overriding users must ensure the name binding is the parent resource, without the operations collection id.",
	//   "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/operations",
	//   "httpMethod": "GET",
	//   "id": "assuredworkloads.organizations.locations.operations.list",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "filter": {
	//       "description": "The standard list filter.",
	//       "location": "query",
	//       "type": "string"
	//     },
	//     "name": {
	//       "description": "The name of the operation's parent resource.",
	//       "location": "path",
	//       "pattern": "^organizations/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     },
	//     "pageSize": {
	//       "description": "The standard list page size.",
	//       "format": "int32",
	//       "location": "query",
	//       "type": "integer"
	//     },
	//     "pageToken": {
	//       "description": "The standard list page token.",
	//       "location": "query",
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}/operations",
	//   "response": {
	//     "$ref": "GoogleLongrunningListOperationsResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// 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 *OrganizationsLocationsOperationsListCall) Pages(ctx context.Context, f func(*GoogleLongrunningListOperationsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
	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)
	}
}

// method id "assuredworkloads.organizations.locations.workloads.create":

type OrganizationsLocationsWorkloadsCreateCall struct {
	s                                     *Service
	parent                                string
	googlecloudassuredworkloadsv1workload *GoogleCloudAssuredworkloadsV1Workload
	urlParams_                            gensupport.URLParams
	ctx_                                  context.Context
	header_                               http.Header
}

// Create: Creates Assured Workload.
//
// - parent: The resource name of the new Workload's parent. Must be of
//   the form `organizations/{org_id}/locations/{location_id}`.
func (r *OrganizationsLocationsWorkloadsService) Create(parent string, googlecloudassuredworkloadsv1workload *GoogleCloudAssuredworkloadsV1Workload) *OrganizationsLocationsWorkloadsCreateCall {
	c := &OrganizationsLocationsWorkloadsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.googlecloudassuredworkloadsv1workload = googlecloudassuredworkloadsv1workload
	return c
}

// ExternalId sets the optional parameter "externalId": A identifier
// associated with the workload and underlying projects which allows for
// the break down of billing costs for a workload. The value provided
// for the identifier will add a label to the workload and contained
// projects with the identifier as the value.
func (c *OrganizationsLocationsWorkloadsCreateCall) ExternalId(externalId string) *OrganizationsLocationsWorkloadsCreateCall {
	c.urlParams_.Set("externalId", externalId)
	return c
}

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

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *OrganizationsLocationsWorkloadsCreateCall) Context(ctx context.Context) *OrganizationsLocationsWorkloadsCreateCall {
	c.ctx_ = ctx
	return c
}

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

func (c *OrganizationsLocationsWorkloadsCreateCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudassuredworkloadsv1workload)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v1/{+parent}/workloads")
	urls += "?" + c.urlParams_.Encode()
	req, err := http.NewRequest("POST", urls, body)
	if err != nil {
		return nil, err
	}
	req.Header = reqHeaders
	googleapi.Expand(req.URL, map[string]string{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "assuredworkloads.organizations.locations.workloads.create" call.
// Exactly one of *GoogleLongrunningOperation or error will be non-nil.
// Any non-2xx status code is an error. Response headers are in either
// *GoogleLongrunningOperation.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 *OrganizationsLocationsWorkloadsCreateCall) Do(opts ...googleapi.CallOption) (*GoogleLongrunningOperation, 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, &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, err
	}
	ret := &GoogleLongrunningOperation{
		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
	// {
	//   "description": "Creates Assured Workload.",
	//   "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/workloads",
	//   "httpMethod": "POST",
	//   "id": "assuredworkloads.organizations.locations.workloads.create",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "externalId": {
	//       "description": "Optional. A identifier associated with the workload and underlying projects which allows for the break down of billing costs for a workload. The value provided for the identifier will add a label to the workload and contained projects with the identifier as the value.",
	//       "location": "query",
	//       "type": "string"
	//     },
	//     "parent": {
	//       "description": "Required. The resource name of the new Workload's parent. Must be of the form `organizations/{org_id}/locations/{location_id}`.",
	//       "location": "path",
	//       "pattern": "^organizations/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/workloads",
	//   "request": {
	//     "$ref": "GoogleCloudAssuredworkloadsV1Workload"
	//   },
	//   "response": {
	//     "$ref": "GoogleLongrunningOperation"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "assuredworkloads.organizations.locations.workloads.delete":

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

// Delete: Deletes the workload. Make sure that workload's direct
// children are already in a deleted state, otherwise the request will
// fail with a FAILED_PRECONDITION error.
//
// - name: The `name` field is used to identify the workload. Format:
//   organizations/{org_id}/locations/{location_id}/workloads/{workload_i
//   d}.
func (r *OrganizationsLocationsWorkloadsService) Delete(name string) *OrganizationsLocationsWorkloadsDeleteCall {
	c := &OrganizationsLocationsWorkloadsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

// Etag sets the optional parameter "etag": The etag of the workload. If
// this is provided, it must match the server's etag.
func (c *OrganizationsLocationsWorkloadsDeleteCall) Etag(etag string) *OrganizationsLocationsWorkloadsDeleteCall {
	c.urlParams_.Set("etag", etag)
	return c
}

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

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *OrganizationsLocationsWorkloadsDeleteCall) Context(ctx context.Context) *OrganizationsLocationsWorkloadsDeleteCall {
	c.ctx_ = ctx
	return c
}

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

func (c *OrganizationsLocationsWorkloadsDeleteCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	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 "assuredworkloads.organizations.locations.workloads.delete" call.
// Exactly one of *GoogleProtobufEmpty or error will be non-nil. Any
// non-2xx status code is an error. Response headers are in either
// *GoogleProtobufEmpty.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 *OrganizationsLocationsWorkloadsDeleteCall) Do(opts ...googleapi.CallOption) (*GoogleProtobufEmpty, 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, &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, err
	}
	ret := &GoogleProtobufEmpty{
		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
	// {
	//   "description": "Deletes the workload. Make sure that workload's direct children are already in a deleted state, otherwise the request will fail with a FAILED_PRECONDITION error.",
	//   "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}",
	//   "httpMethod": "DELETE",
	//   "id": "assuredworkloads.organizations.locations.workloads.delete",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "etag": {
	//       "description": "Optional. The etag of the workload. If this is provided, it must match the server's etag.",
	//       "location": "query",
	//       "type": "string"
	//     },
	//     "name": {
	//       "description": "Required. The `name` field is used to identify the workload. Format: organizations/{org_id}/locations/{location_id}/workloads/{workload_id}",
	//       "location": "path",
	//       "pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "response": {
	//     "$ref": "GoogleProtobufEmpty"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "assuredworkloads.organizations.locations.workloads.get":

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

// Get: Gets Assured Workload associated with a CRM Node
//
// - name: The resource name of the Workload to fetch. This is the
//   workloads's relative path in the API, formatted as
//   "organizations/{organization_id}/locations/{location_id}/workloads/{
//   workload_id}". For example,
//   "organizations/123/locations/us-east1/workloads/assured-workload-1".
func (r *OrganizationsLocationsWorkloadsService) Get(name string) *OrganizationsLocationsWorkloadsGetCall {
	c := &OrganizationsLocationsWorkloadsGetCall{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 information.
func (c *OrganizationsLocationsWorkloadsGetCall) Fields(s ...googleapi.Field) *OrganizationsLocationsWorkloadsGetCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the 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. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *OrganizationsLocationsWorkloadsGetCall) IfNoneMatch(entityTag string) *OrganizationsLocationsWorkloadsGetCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *OrganizationsLocationsWorkloadsGetCall) Context(ctx context.Context) *OrganizationsLocationsWorkloadsGetCall {
	c.ctx_ = ctx
	return c
}

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

func (c *OrganizationsLocationsWorkloadsGetCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	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 "assuredworkloads.organizations.locations.workloads.get" call.
// Exactly one of *GoogleCloudAssuredworkloadsV1Workload or error will
// be non-nil. Any non-2xx status code is an error. Response headers are
// in either
// *GoogleCloudAssuredworkloadsV1Workload.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 *OrganizationsLocationsWorkloadsGetCall) Do(opts ...googleapi.CallOption) (*GoogleCloudAssuredworkloadsV1Workload, 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, &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, err
	}
	ret := &GoogleCloudAssuredworkloadsV1Workload{
		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
	// {
	//   "description": "Gets Assured Workload associated with a CRM Node",
	//   "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}",
	//   "httpMethod": "GET",
	//   "id": "assuredworkloads.organizations.locations.workloads.get",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Required. The resource name of the Workload to fetch. This is the workloads's relative path in the API, formatted as \"organizations/{organization_id}/locations/{location_id}/workloads/{workload_id}\". For example, \"organizations/123/locations/us-east1/workloads/assured-workload-1\".",
	//       "location": "path",
	//       "pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "response": {
	//     "$ref": "GoogleCloudAssuredworkloadsV1Workload"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// method id "assuredworkloads.organizations.locations.workloads.list":

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

// List: Lists Assured Workloads under a CRM Node.
//
// - parent: Parent Resource to list workloads from. Must be of the form
//   `organizations/{org_id}/locations/{location}`.
func (r *OrganizationsLocationsWorkloadsService) List(parent string) *OrganizationsLocationsWorkloadsListCall {
	c := &OrganizationsLocationsWorkloadsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": A custom filter for
// filtering by properties of a workload. At this time, only filtering
// by labels is supported.
func (c *OrganizationsLocationsWorkloadsListCall) Filter(filter string) *OrganizationsLocationsWorkloadsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

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

// PageToken sets the optional parameter "pageToken": Page token
// returned from previous request. Page token contains context from
// previous request. Page token needs to be passed in the second and
// following requests.
func (c *OrganizationsLocationsWorkloadsListCall) PageToken(pageToken string) *OrganizationsLocationsWorkloadsListCall {
	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 information.
func (c *OrganizationsLocationsWorkloadsListCall) Fields(s ...googleapi.Field) *OrganizationsLocationsWorkloadsListCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// IfNoneMatch sets the 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. Use googleapi.IsNotModified to check whether the response
// error from Do is the result of In-None-Match.
func (c *OrganizationsLocationsWorkloadsListCall) IfNoneMatch(entityTag string) *OrganizationsLocationsWorkloadsListCall {
	c.ifNoneMatch_ = entityTag
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *OrganizationsLocationsWorkloadsListCall) Context(ctx context.Context) *OrganizationsLocationsWorkloadsListCall {
	c.ctx_ = ctx
	return c
}

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

func (c *OrganizationsLocationsWorkloadsListCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	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/{+parent}/workloads")
	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{
		"parent": c.parent,
	})
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "assuredworkloads.organizations.locations.workloads.list" call.
// Exactly one of *GoogleCloudAssuredworkloadsV1ListWorkloadsResponse or
// error will be non-nil. Any non-2xx status code is an error. Response
// headers are in either
// *GoogleCloudAssuredworkloadsV1ListWorkloadsResponse.ServerResponse.Hea
// der 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 *OrganizationsLocationsWorkloadsListCall) Do(opts ...googleapi.CallOption) (*GoogleCloudAssuredworkloadsV1ListWorkloadsResponse, 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, &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, err
	}
	ret := &GoogleCloudAssuredworkloadsV1ListWorkloadsResponse{
		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
	// {
	//   "description": "Lists Assured Workloads under a CRM Node.",
	//   "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/workloads",
	//   "httpMethod": "GET",
	//   "id": "assuredworkloads.organizations.locations.workloads.list",
	//   "parameterOrder": [
	//     "parent"
	//   ],
	//   "parameters": {
	//     "filter": {
	//       "description": "A custom filter for filtering by properties of a workload. At this time, only filtering by labels is supported.",
	//       "location": "query",
	//       "type": "string"
	//     },
	//     "pageSize": {
	//       "description": "Page size.",
	//       "format": "int32",
	//       "location": "query",
	//       "type": "integer"
	//     },
	//     "pageToken": {
	//       "description": "Page token returned from previous request. Page token contains context from previous request. Page token needs to be passed in the second and following requests.",
	//       "location": "query",
	//       "type": "string"
	//     },
	//     "parent": {
	//       "description": "Required. Parent Resource to list workloads from. Must be of the form `organizations/{org_id}/locations/{location}`.",
	//       "location": "path",
	//       "pattern": "^organizations/[^/]+/locations/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+parent}/workloads",
	//   "response": {
	//     "$ref": "GoogleCloudAssuredworkloadsV1ListWorkloadsResponse"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}

// 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 *OrganizationsLocationsWorkloadsListCall) Pages(ctx context.Context, f func(*GoogleCloudAssuredworkloadsV1ListWorkloadsResponse) error) error {
	c.ctx_ = ctx
	defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
	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)
	}
}

// method id "assuredworkloads.organizations.locations.workloads.patch":

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

// Patch: Updates an existing workload. Currently allows updating of
// workload display_name and labels. For force updates don't set etag
// field in the Workload. Only one update operation per workload can be
// in progress.
//
// - name: Optional. The resource name of the workload. Format:
//   organizations/{organization}/locations/{location}/workloads/{workloa
//   d} Read-only.
func (r *OrganizationsLocationsWorkloadsService) Patch(name string, googlecloudassuredworkloadsv1workload *GoogleCloudAssuredworkloadsV1Workload) *OrganizationsLocationsWorkloadsPatchCall {
	c := &OrganizationsLocationsWorkloadsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.googlecloudassuredworkloadsv1workload = googlecloudassuredworkloadsv1workload
	return c
}

// UpdateMask sets the optional parameter "updateMask": Required. The
// list of fields to be updated.
func (c *OrganizationsLocationsWorkloadsPatchCall) UpdateMask(updateMask string) *OrganizationsLocationsWorkloadsPatchCall {
	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 information.
func (c *OrganizationsLocationsWorkloadsPatchCall) Fields(s ...googleapi.Field) *OrganizationsLocationsWorkloadsPatchCall {
	c.urlParams_.Set("fields", googleapi.CombineFields(s))
	return c
}

// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
func (c *OrganizationsLocationsWorkloadsPatchCall) Context(ctx context.Context) *OrganizationsLocationsWorkloadsPatchCall {
	c.ctx_ = ctx
	return c
}

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

func (c *OrganizationsLocationsWorkloadsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := make(http.Header)
	reqHeaders.Set("x-goog-api-client", "gl-go/"+gensupport.GoVersion()+" gdcl/"+internal.Version)
	for k, v := range c.header_ {
		reqHeaders[k] = v
	}
	reqHeaders.Set("User-Agent", c.s.userAgent())
	var body io.Reader = nil
	body, err := googleapi.WithoutDataWrapper.JSONReader(c.googlecloudassuredworkloadsv1workload)
	if err != nil {
		return nil, err
	}
	reqHeaders.Set("Content-Type", "application/json")
	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 "assuredworkloads.organizations.locations.workloads.patch" call.
// Exactly one of *GoogleCloudAssuredworkloadsV1Workload or error will
// be non-nil. Any non-2xx status code is an error. Response headers are
// in either
// *GoogleCloudAssuredworkloadsV1Workload.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 *OrganizationsLocationsWorkloadsPatchCall) Do(opts ...googleapi.CallOption) (*GoogleCloudAssuredworkloadsV1Workload, 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, &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, err
	}
	ret := &GoogleCloudAssuredworkloadsV1Workload{
		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
	// {
	//   "description": "Updates an existing workload. Currently allows updating of workload display_name and labels. For force updates don't set etag field in the Workload. Only one update operation per workload can be in progress.",
	//   "flatPath": "v1/organizations/{organizationsId}/locations/{locationsId}/workloads/{workloadsId}",
	//   "httpMethod": "PATCH",
	//   "id": "assuredworkloads.organizations.locations.workloads.patch",
	//   "parameterOrder": [
	//     "name"
	//   ],
	//   "parameters": {
	//     "name": {
	//       "description": "Optional. The resource name of the workload. Format: organizations/{organization}/locations/{location}/workloads/{workload} Read-only.",
	//       "location": "path",
	//       "pattern": "^organizations/[^/]+/locations/[^/]+/workloads/[^/]+$",
	//       "required": true,
	//       "type": "string"
	//     },
	//     "updateMask": {
	//       "description": "Required. The list of fields to be updated.",
	//       "format": "google-fieldmask",
	//       "location": "query",
	//       "type": "string"
	//     }
	//   },
	//   "path": "v1/{+name}",
	//   "request": {
	//     "$ref": "GoogleCloudAssuredworkloadsV1Workload"
	//   },
	//   "response": {
	//     "$ref": "GoogleCloudAssuredworkloadsV1Workload"
	//   },
	//   "scopes": [
	//     "https://www.googleapis.com/auth/cloud-platform"
	//   ]
	// }

}
