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

// Code generated file. DO NOT EDIT.

// Package jobs provides access to the Cloud Talent Solution API.
//
// For product documentation, see: https://cloud.google.com/talent-solution/job-search/docs/
//
// # Library status
//
// These client libraries are officially supported by Google. However, this
// library is considered complete and is in maintenance mode. This means
// that we will address critical bugs and security issues but will not add
// any new features.
//
// When possible, we recommend using our newer
// [Cloud Client Libraries for Go](https://pkg.go.dev/cloud.google.com/go)
// that are still actively being worked and iterated on.
//
// # Creating a client
//
// Usage example:
//
//	import "google.golang.org/api/jobs/v4"
//	...
//	ctx := context.Background()
//	jobsService, err := jobs.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
//
// By default, all available scopes (see "Constants") are used to authenticate.
// To restrict scopes, use [google.golang.org/api/option.WithScopes]:
//
//	jobsService, err := jobs.NewService(ctx, option.WithScopes(jobs.JobsScope))
//
// To use an API key for authentication (note: some APIs do not support API
// keys), use [google.golang.org/api/option.WithAPIKey]:
//
//	jobsService, err := jobs.NewService(ctx, option.WithAPIKey("AIza..."))
//
// To use an OAuth token (e.g., a user token obtained via a three-legged OAuth
// flow, use [google.golang.org/api/option.WithTokenSource]:
//
//	config := &oauth2.Config{...}
//	// ...
//	token, err := config.Exchange(ctx, ...)
//	jobsService, err := jobs.NewService(ctx, option.WithTokenSource(config.TokenSource(ctx, token)))
//
// See [google.golang.org/api/option.ClientOption] for details on options.
package jobs // import "google.golang.org/api/jobs/v4"

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

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

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

const apiId = "jobs:v4"
const apiName = "jobs"
const apiVersion = "v4"
const basePath = "https://jobs.googleapis.com/"
const basePathTemplate = "https://jobs.UNIVERSE_DOMAIN/"
const mtlsBasePath = "https://jobs.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"

	// Manage job postings
	JobsScope = "https://www.googleapis.com/auth/jobs"
)

// 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",
		"https://www.googleapis.com/auth/jobs",
	)
	// NOTE: prepend, so we don't override user-specified scopes.
	opts = append([]option.ClientOption{scopesOption}, opts...)
	opts = append(opts, internaloption.WithDefaultEndpoint(basePath))
	opts = append(opts, internaloption.WithDefaultEndpointTemplate(basePathTemplate))
	opts = append(opts, internaloption.WithDefaultMTLSEndpoint(mtlsBasePath))
	opts = append(opts, internaloption.EnableNewAuthLibrary())
	client, endpoint, err := htransport.NewClient(ctx, opts...)
	if err != nil {
		return nil, err
	}
	s := &Service{client: client, BasePath: basePath, logger: internaloption.GetLogger(opts)}
	s.Projects = NewProjectsService(s)
	if endpoint != "" {
		s.BasePath = endpoint
	}
	return s, nil
}

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

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

	Projects *ProjectsService
}

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

func NewProjectsService(s *Service) *ProjectsService {
	rs := &ProjectsService{s: s}
	rs.Operations = NewProjectsOperationsService(s)
	rs.Tenants = NewProjectsTenantsService(s)
	return rs
}

type ProjectsService struct {
	s *Service

	Operations *ProjectsOperationsService

	Tenants *ProjectsTenantsService
}

func NewProjectsOperationsService(s *Service) *ProjectsOperationsService {
	rs := &ProjectsOperationsService{s: s}
	return rs
}

type ProjectsOperationsService struct {
	s *Service
}

func NewProjectsTenantsService(s *Service) *ProjectsTenantsService {
	rs := &ProjectsTenantsService{s: s}
	rs.ClientEvents = NewProjectsTenantsClientEventsService(s)
	rs.Companies = NewProjectsTenantsCompaniesService(s)
	rs.Jobs = NewProjectsTenantsJobsService(s)
	return rs
}

type ProjectsTenantsService struct {
	s *Service

	ClientEvents *ProjectsTenantsClientEventsService

	Companies *ProjectsTenantsCompaniesService

	Jobs *ProjectsTenantsJobsService
}

func NewProjectsTenantsClientEventsService(s *Service) *ProjectsTenantsClientEventsService {
	rs := &ProjectsTenantsClientEventsService{s: s}
	return rs
}

type ProjectsTenantsClientEventsService struct {
	s *Service
}

func NewProjectsTenantsCompaniesService(s *Service) *ProjectsTenantsCompaniesService {
	rs := &ProjectsTenantsCompaniesService{s: s}
	return rs
}

type ProjectsTenantsCompaniesService struct {
	s *Service
}

func NewProjectsTenantsJobsService(s *Service) *ProjectsTenantsJobsService {
	rs := &ProjectsTenantsJobsService{s: s}
	return rs
}

type ProjectsTenantsJobsService struct {
	s *Service
}

// ApplicationInfo: Application related details of a job posting.
type ApplicationInfo struct {
	// Emails: Use this field to specify email address(es) to which resumes or
	// applications can be sent. The maximum number of allowed characters for each
	// entry is 255.
	Emails []string `json:"emails,omitempty"`
	// Instruction: Use this field to provide instructions, such as "Mail your
	// application to ...", that a candidate can follow to apply for the job. This
	// field accepts and sanitizes HTML input, and also accepts bold, italic,
	// ordered list, and unordered list markup tags. The maximum number of allowed
	// characters is 3,000.
	Instruction string `json:"instruction,omitempty"`
	// Uris: Use this URI field to direct an applicant to a website, for example to
	// link to an online application form. The maximum number of allowed characters
	// for each entry is 2,000.
	Uris []string `json:"uris,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Emails") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Emails") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// BatchCreateJobsRequest: Request to create a batch of jobs.
type BatchCreateJobsRequest struct {
	// Jobs: Required. The jobs to be created. A maximum of 200 jobs can be created
	// in a batch.
	Jobs []*Job `json:"jobs,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Jobs") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Jobs") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// BatchCreateJobsResponse: The result of JobService.BatchCreateJobs. It's used
// to replace google.longrunning.Operation.response in case of success.
type BatchCreateJobsResponse struct {
	// JobResults: List of job mutation results from a batch create operation. It
	// can change until operation status is FINISHED, FAILED or CANCELLED.
	JobResults []*JobResult `json:"jobResults,omitempty"`
	// ForceSendFields is a list of field names (e.g. "JobResults") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "JobResults") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// BatchDeleteJobsRequest: Request to delete a batch of jobs.
type BatchDeleteJobsRequest struct {
	// Names: The names of the jobs to delete. The format is
	// "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For example,
	// "projects/foo/tenants/bar/jobs/baz". A maximum of 200 jobs can be deleted in
	// a batch.
	Names []string `json:"names,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Names") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Names") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// BatchDeleteJobsResponse: The result of JobService.BatchDeleteJobs. It's used
// to replace google.longrunning.Operation.response in case of success.
type BatchDeleteJobsResponse struct {
	// JobResults: List of job mutation results from a batch delete operation. It
	// can change until operation status is FINISHED, FAILED or CANCELLED.
	JobResults []*JobResult `json:"jobResults,omitempty"`
	// ForceSendFields is a list of field names (e.g. "JobResults") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "JobResults") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// BatchOperationMetadata: Metadata used for long running operations returned
// by CTS batch APIs. It's used to replace
// google.longrunning.Operation.metadata.
type BatchOperationMetadata struct {
	// CreateTime: The time when the batch operation is created.
	CreateTime string `json:"createTime,omitempty"`
	// EndTime: The time when the batch operation is finished and
	// google.longrunning.Operation.done is set to `true`.
	EndTime string `json:"endTime,omitempty"`
	// FailureCount: Count of failed item(s) inside an operation.
	FailureCount int64 `json:"failureCount,omitempty"`
	// State: The state of a long running operation.
	//
	// Possible values:
	//   "STATE_UNSPECIFIED" - Default value.
	//   "INITIALIZING" - The batch operation is being prepared for processing.
	//   "PROCESSING" - The batch operation is actively being processed.
	//   "SUCCEEDED" - The batch operation is processed, and at least one item has
	// been successfully processed.
	//   "FAILED" - The batch operation is done and no item has been successfully
	// processed.
	//   "CANCELLING" - The batch operation is in the process of cancelling after
	// google.longrunning.Operations.CancelOperation is called.
	//   "CANCELLED" - The batch operation is done after
	// google.longrunning.Operations.CancelOperation is called. Any items processed
	// before cancelling are returned in the response.
	State string `json:"state,omitempty"`
	// StateDescription: More detailed information about operation state.
	StateDescription string `json:"stateDescription,omitempty"`
	// SuccessCount: Count of successful item(s) inside an operation.
	SuccessCount int64 `json:"successCount,omitempty"`
	// TotalCount: Count of total item(s) inside an operation.
	TotalCount int64 `json:"totalCount,omitempty"`
	// UpdateTime: The time when the batch operation status is updated. The
	// metadata and the update_time is refreshed every minute otherwise cached data
	// is returned.
	UpdateTime string `json:"updateTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CreateTime") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CreateTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// BatchUpdateJobsRequest: Request to update a batch of jobs.
type BatchUpdateJobsRequest struct {
	// Jobs: Required. The jobs to be updated. A maximum of 200 jobs can be updated
	// in a batch.
	Jobs []*Job `json:"jobs,omitempty"`
	// UpdateMask: Strongly recommended for the best service experience. Be aware
	// that it will also increase latency when checking the status of a batch
	// operation. If update_mask is provided, only the specified fields in Job are
	// updated. Otherwise all the fields are updated. A field mask to restrict the
	// fields that are updated. Only top level fields of Job are supported. If
	// update_mask is provided, The Job inside JobResult will only contains fields
	// that is updated, plus the Id of the Job. Otherwise, Job will include all
	// fields, which can yield a very large response.
	UpdateMask string `json:"updateMask,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Jobs") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Jobs") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// BatchUpdateJobsResponse: The result of JobService.BatchUpdateJobs. It's used
// to replace google.longrunning.Operation.response in case of success.
type BatchUpdateJobsResponse struct {
	// JobResults: List of job mutation results from a batch update operation. It
	// can change until operation status is FINISHED, FAILED or CANCELLED.
	JobResults []*JobResult `json:"jobResults,omitempty"`
	// ForceSendFields is a list of field names (e.g. "JobResults") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "JobResults") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// ClientEvent: An event issued when an end user interacts with the application
// that implements Cloud Talent Solution. Providing this information improves
// the quality of results for the API clients, enabling the service to perform
// optimally. The number of events sent must be consistent with other calls,
// such as job searches, issued to the service by the client.
type ClientEvent struct {
	// CreateTime: Required. The timestamp of the event.
	CreateTime string `json:"createTime,omitempty"`
	// EventId: Required. A unique identifier, generated by the client application.
	EventId string `json:"eventId,omitempty"`
	// EventNotes: Notes about the event provided by recruiters or other users, for
	// example, feedback on why a job was bookmarked.
	EventNotes string `json:"eventNotes,omitempty"`
	// JobEvent: An event issued when a job seeker interacts with the application
	// that implements Cloud Talent Solution.
	JobEvent *JobEvent `json:"jobEvent,omitempty"`
	// RequestId: Strongly recommended for the best service experience. A unique ID
	// generated in the API responses. It can be found in
	// ResponseMetadata.request_id.
	RequestId string `json:"requestId,omitempty"`

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

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

// CommuteFilter: Parameters needed for commute search.
type CommuteFilter struct {
	// AllowImpreciseAddresses: If `true`, jobs without street level addresses may
	// also be returned. For city level addresses, the city center is used. For
	// state and coarser level addresses, text matching is used. If this field is
	// set to `false` or isn't specified, only jobs that include street level
	// addresses will be returned by commute search.
	AllowImpreciseAddresses bool `json:"allowImpreciseAddresses,omitempty"`
	// CommuteMethod: Required. The method of transportation to calculate the
	// commute time for.
	//
	// Possible values:
	//   "COMMUTE_METHOD_UNSPECIFIED" - Commute method isn't specified.
	//   "DRIVING" - Commute time is calculated based on driving time.
	//   "TRANSIT" - Commute time is calculated based on public transit including
	// bus, metro, subway, and so on.
	//   "WALKING" - Commute time is calculated based on walking time.
	//   "CYCLING" - Commute time is calculated based on biking time.
	//   "TRANSIT_ACCESSIBLE" - Commute time is calculated based on public transit
	// that is wheelchair accessible.
	CommuteMethod string `json:"commuteMethod,omitempty"`
	// DepartureTime: The departure time used to calculate traffic impact,
	// represented as google.type.TimeOfDay in local time zone. Currently traffic
	// model is restricted to hour level resolution.
	DepartureTime *TimeOfDay `json:"departureTime,omitempty"`
	// RoadTraffic: Specifies the traffic density to use when calculating commute
	// time.
	//
	// Possible values:
	//   "ROAD_TRAFFIC_UNSPECIFIED" - Road traffic situation isn't specified.
	//   "TRAFFIC_FREE" - Optimal commute time without considering any traffic
	// impact.
	//   "BUSY_HOUR" - Commute time calculation takes in account the peak traffic
	// impact.
	RoadTraffic string `json:"roadTraffic,omitempty"`
	// StartCoordinates: Required. The latitude and longitude of the location to
	// calculate the commute time from.
	StartCoordinates *LatLng `json:"startCoordinates,omitempty"`
	// TravelDuration: Required. The maximum travel time in seconds. The maximum
	// allowed value is `3600s` (one hour). Format is `123s`.
	TravelDuration string `json:"travelDuration,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AllowImpreciseAddresses") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AllowImpreciseAddresses") to
	// include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// CommuteInfo: Commute details related to this job.
type CommuteInfo struct {
	// JobLocation: Location used as the destination in the commute calculation.
	JobLocation *Location `json:"jobLocation,omitempty"`
	// TravelDuration: The number of seconds required to travel to the job location
	// from the query location. A duration of 0 seconds indicates that the job
	// isn't reachable within the requested duration, but was returned as part of
	// an expanded query.
	TravelDuration string `json:"travelDuration,omitempty"`
	// ForceSendFields is a list of field names (e.g. "JobLocation") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "JobLocation") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Company: A Company resource represents a company in the service. A company
// is the entity that owns job postings, that is, the hiring entity responsible
// for employing applicants for the job position.
type Company struct {
	// CareerSiteUri: The URI to employer's career site or careers page on the
	// employer's web site, for example, "https://careers.google.com".
	CareerSiteUri string `json:"careerSiteUri,omitempty"`
	// DerivedInfo: Output only. Derived details about the company.
	DerivedInfo *CompanyDerivedInfo `json:"derivedInfo,omitempty"`
	// DisplayName: Required. The display name of the company, for example, "Google
	// LLC".
	DisplayName string `json:"displayName,omitempty"`
	// EeoText: Equal Employment Opportunity legal disclaimer text to be associated
	// with all jobs, and typically to be displayed in all roles. The maximum
	// number of allowed characters is 500.
	EeoText string `json:"eeoText,omitempty"`
	// ExternalId: Required. Client side company identifier, used to uniquely
	// identify the company. The maximum number of allowed characters is 255.
	ExternalId string `json:"externalId,omitempty"`
	// HeadquartersAddress: The street address of the company's main headquarters,
	// which may be different from the job location. The service attempts to
	// geolocate the provided address, and populates a more specific location
	// wherever possible in DerivedInfo.headquarters_location.
	HeadquartersAddress string `json:"headquartersAddress,omitempty"`
	// HiringAgency: Set to true if it is the hiring agency that post jobs for
	// other employers. Defaults to false if not provided.
	HiringAgency bool `json:"hiringAgency,omitempty"`
	// ImageUri: A URI that hosts the employer's company logo.
	ImageUri string `json:"imageUri,omitempty"`
	// KeywordSearchableJobCustomAttributes: This field is deprecated. Please set
	// the searchability of the custom attribute in the Job.custom_attributes going
	// forward. A list of keys of filterable Job.custom_attributes, whose
	// corresponding `string_values` are used in keyword searches. Jobs with
	// `string_values` under these specified field keys are returned if any of the
	// values match the search keyword. Custom field values with parenthesis,
	// brackets and special symbols are not searchable as-is, and those keyword
	// queries must be surrounded by quotes.
	KeywordSearchableJobCustomAttributes []string `json:"keywordSearchableJobCustomAttributes,omitempty"`
	// Name: Required during company update. The resource name for a company. This
	// is generated by the service when a company is created. The format is
	// "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for
	// example, "projects/foo/tenants/bar/companies/baz".
	Name string `json:"name,omitempty"`
	// Size: The employer's company size.
	//
	// Possible values:
	//   "COMPANY_SIZE_UNSPECIFIED" - Default value if the size isn't specified.
	//   "MINI" - The company has less than 50 employees.
	//   "SMALL" - The company has between 50 and 99 employees.
	//   "SMEDIUM" - The company has between 100 and 499 employees.
	//   "MEDIUM" - The company has between 500 and 999 employees.
	//   "BIG" - The company has between 1,000 and 4,999 employees.
	//   "BIGGER" - The company has between 5,000 and 9,999 employees.
	//   "GIANT" - The company has 10,000 or more employees.
	Size string `json:"size,omitempty"`
	// Suspended: Output only. Indicates whether a company is flagged to be
	// suspended from public availability by the service when job content appears
	// suspicious, abusive, or spammy.
	Suspended bool `json:"suspended,omitempty"`
	// WebsiteUri: The URI representing the company's primary web site or home
	// page, for example, "https://www.google.com". The maximum number of allowed
	// characters is 255.
	WebsiteUri string `json:"websiteUri,omitempty"`

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

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

// CompanyDerivedInfo: Derived details about the company.
type CompanyDerivedInfo struct {
	// HeadquartersLocation: A structured headquarters location of the company,
	// resolved from Company.headquarters_address if provided.
	HeadquartersLocation *Location `json:"headquartersLocation,omitempty"`
	// ForceSendFields is a list of field names (e.g. "HeadquartersLocation") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HeadquartersLocation") to include
	// in API requests with the JSON null value. By default, fields with empty
	// values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// CompensationEntry: A compensation entry that represents one component of
// compensation, such as base pay, bonus, or other compensation type.
// Annualization: One compensation entry can be annualized if - it contains
// valid amount or range. - and its expected_units_per_year is set or can be
// derived. Its annualized range is determined as (amount or range) times
// expected_units_per_year.
type CompensationEntry struct {
	// Amount: Compensation amount.
	Amount *Money `json:"amount,omitempty"`
	// Description: Compensation description. For example, could indicate equity
	// terms or provide additional context to an estimated bonus.
	Description string `json:"description,omitempty"`
	// ExpectedUnitsPerYear: Expected number of units paid each year. If not
	// specified, when Job.employment_types is FULLTIME, a default value is
	// inferred based on unit. Default values: - HOURLY: 2080 - DAILY: 260 -
	// WEEKLY: 52 - MONTHLY: 12 - ANNUAL: 1
	ExpectedUnitsPerYear float64 `json:"expectedUnitsPerYear,omitempty"`
	// Range: Compensation range.
	Range *CompensationRange `json:"range,omitempty"`
	// Type: Compensation type. Default is
	// CompensationType.COMPENSATION_TYPE_UNSPECIFIED.
	//
	// Possible values:
	//   "COMPENSATION_TYPE_UNSPECIFIED" - Default value.
	//   "BASE" - Base compensation: Refers to the fixed amount of money paid to an
	// employee by an employer in return for work performed. Base compensation does
	// not include benefits, bonuses or any other potential compensation from an
	// employer.
	//   "BONUS" - Bonus.
	//   "SIGNING_BONUS" - Signing bonus.
	//   "EQUITY" - Equity.
	//   "PROFIT_SHARING" - Profit sharing.
	//   "COMMISSIONS" - Commission.
	//   "TIPS" - Tips.
	//   "OTHER_COMPENSATION_TYPE" - Other compensation type.
	Type string `json:"type,omitempty"`
	// Unit: Frequency of the specified amount. Default is
	// CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED.
	//
	// Possible values:
	//   "COMPENSATION_UNIT_UNSPECIFIED" - Default value.
	//   "HOURLY" - Hourly.
	//   "DAILY" - Daily.
	//   "WEEKLY" - Weekly
	//   "MONTHLY" - Monthly.
	//   "YEARLY" - Yearly.
	//   "ONE_TIME" - One time.
	//   "OTHER_COMPENSATION_UNIT" - Other compensation units.
	Unit string `json:"unit,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Amount") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Amount") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

func (s *CompensationEntry) UnmarshalJSON(data []byte) error {
	type NoMethod CompensationEntry
	var s1 struct {
		ExpectedUnitsPerYear gensupport.JSONFloat64 `json:"expectedUnitsPerYear"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.ExpectedUnitsPerYear = float64(s1.ExpectedUnitsPerYear)
	return nil
}

// CompensationFilter: Filter on job compensation type and amount.
type CompensationFilter struct {
	// IncludeJobsWithUnspecifiedCompensationRange: If set to true, jobs with
	// unspecified compensation range fields are included.
	IncludeJobsWithUnspecifiedCompensationRange bool `json:"includeJobsWithUnspecifiedCompensationRange,omitempty"`
	// Range: Compensation range.
	Range *CompensationRange `json:"range,omitempty"`
	// Type: Required. Type of filter.
	//
	// Possible values:
	//   "FILTER_TYPE_UNSPECIFIED" - Filter type unspecified. Position holder,
	// INVALID, should never be used.
	//   "UNIT_ONLY" - Filter by `base compensation entry's` unit. A job is a match
	// if and only if the job contains a base CompensationEntry and the base
	// CompensationEntry's unit matches provided units. Populate one or more units.
	// See CompensationInfo.CompensationEntry for definition of base compensation
	// entry.
	//   "UNIT_AND_AMOUNT" - Filter by `base compensation entry's` unit and amount
	// / range. A job is a match if and only if the job contains a base
	// CompensationEntry, and the base entry's unit matches provided
	// CompensationUnit and amount or range overlaps with provided
	// CompensationRange. See CompensationInfo.CompensationEntry for definition of
	// base compensation entry. Set exactly one units and populate range.
	//   "ANNUALIZED_BASE_AMOUNT" - Filter by annualized base compensation amount
	// and `base compensation entry's` unit. Populate range and zero or more units.
	//   "ANNUALIZED_TOTAL_AMOUNT" - Filter by annualized total compensation amount
	// and `base compensation entry's` unit . Populate range and zero or more
	// units.
	Type string `json:"type,omitempty"`
	// Units: Required. Specify desired `base compensation entry's`
	// CompensationInfo.CompensationUnit.
	//
	// Possible values:
	//   "COMPENSATION_UNIT_UNSPECIFIED" - Default value.
	//   "HOURLY" - Hourly.
	//   "DAILY" - Daily.
	//   "WEEKLY" - Weekly
	//   "MONTHLY" - Monthly.
	//   "YEARLY" - Yearly.
	//   "ONE_TIME" - One time.
	//   "OTHER_COMPENSATION_UNIT" - Other compensation units.
	Units []string `json:"units,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "IncludeJobsWithUnspecifiedCompensationRange") to unconditionally include in
	// API requests. By default, fields with empty or default values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g.
	// "IncludeJobsWithUnspecifiedCompensationRange") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// CompensationInfo: Job compensation details.
type CompensationInfo struct {
	// AnnualizedBaseCompensationRange: Output only. Annualized base compensation
	// range. Computed as base compensation entry's CompensationEntry.amount times
	// CompensationEntry.expected_units_per_year. See CompensationEntry for
	// explanation on compensation annualization.
	AnnualizedBaseCompensationRange *CompensationRange `json:"annualizedBaseCompensationRange,omitempty"`
	// AnnualizedTotalCompensationRange: Output only. Annualized total compensation
	// range. Computed as all compensation entries' CompensationEntry.amount times
	// CompensationEntry.expected_units_per_year. See CompensationEntry for
	// explanation on compensation annualization.
	AnnualizedTotalCompensationRange *CompensationRange `json:"annualizedTotalCompensationRange,omitempty"`
	// Entries: Job compensation information. At most one entry can be of type
	// CompensationInfo.CompensationType.BASE, which is referred as **base
	// compensation entry** for the job.
	Entries []*CompensationEntry `json:"entries,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "AnnualizedBaseCompensationRange") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AnnualizedBaseCompensationRange")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// CompensationRange: Compensation range.
type CompensationRange struct {
	// MaxCompensation: The maximum amount of compensation. If left empty, the
	// value is set to a maximal compensation value and the currency code is set to
	// match the currency code of min_compensation.
	MaxCompensation *Money `json:"maxCompensation,omitempty"`
	// MinCompensation: The minimum amount of compensation. If left empty, the
	// value is set to zero and the currency code is set to match the currency code
	// of max_compensation.
	MinCompensation *Money `json:"minCompensation,omitempty"`
	// ForceSendFields is a list of field names (e.g. "MaxCompensation") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "MaxCompensation") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// CompleteQueryResponse: Response of auto-complete query.
type CompleteQueryResponse struct {
	// CompletionResults: Results of the matching job/company candidates.
	CompletionResults []*CompletionResult `json:"completionResults,omitempty"`
	// Metadata: Additional information for the API invocation, such as the request
	// tracking id.
	Metadata *ResponseMetadata `json:"metadata,omitempty"`

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

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

// CompletionResult: Resource that represents completion results.
type CompletionResult struct {
	// ImageUri: The URI of the company image for COMPANY_NAME.
	ImageUri string `json:"imageUri,omitempty"`
	// Suggestion: The suggestion for the query.
	Suggestion string `json:"suggestion,omitempty"`
	// Type: The completion topic.
	//
	// Possible values:
	//   "COMPLETION_TYPE_UNSPECIFIED" - Default value.
	//   "JOB_TITLE" - Suggest job titles for jobs autocomplete. For
	// CompletionType.JOB_TITLE type, only open jobs with the same language_codes
	// are returned.
	//   "COMPANY_NAME" - Suggest company names for jobs autocomplete. For
	// CompletionType.COMPANY_NAME type, only companies having open jobs with the
	// same language_codes are returned.
	//   "COMBINED" - Suggest both job titles and company names for jobs
	// autocomplete. For CompletionType.COMBINED type, only open jobs with the same
	// language_codes or companies having open jobs with the same language_codes
	// are returned.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ImageUri") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ImageUri") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// CustomAttribute: Custom attribute values that are either filterable or
// non-filterable.
type CustomAttribute struct {
	// Filterable: If the `filterable` flag is true, the custom field values may be
	// used for custom attribute filters JobQuery.custom_attribute_filter. If
	// false, these values may not be used for custom attribute filters. Default is
	// false.
	Filterable bool `json:"filterable,omitempty"`
	// KeywordSearchable: If the `keyword_searchable` flag is true, the keywords in
	// custom fields are searchable by keyword match. If false, the values are not
	// searchable by keyword match. Default is false.
	KeywordSearchable bool `json:"keywordSearchable,omitempty"`
	// LongValues: Exactly one of string_values or long_values must be specified.
	// This field is used to perform number range search. (`EQ`, `GT`, `GE`, `LE`,
	// `LT`) over filterable `long_value`. Currently at most 1 long_values is
	// supported.
	LongValues googleapi.Int64s `json:"longValues,omitempty"`
	// StringValues: Exactly one of string_values or long_values must be specified.
	// This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or
	// `CASE_INSENSITIVE_MATCH`) search. For filterable `string_value`s, a maximum
	// total number of 200 values is allowed, with each `string_value` has a byte
	// size of no more than 500B. For unfilterable `string_values`, the maximum
	// total byte size of unfilterable `string_values` is 50KB. Empty string isn't
	// allowed.
	StringValues []string `json:"stringValues,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Filterable") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Filterable") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// CustomRankingInfo: Custom ranking information for SearchJobsRequest.
type CustomRankingInfo struct {
	// ImportanceLevel: Required. Controls over how important the score of
	// CustomRankingInfo.ranking_expression gets applied to job's final ranking
	// position. An error is thrown if not specified.
	//
	// Possible values:
	//   "IMPORTANCE_LEVEL_UNSPECIFIED" - Default value if the importance level
	// isn't specified.
	//   "NONE" - The given ranking expression is of None importance, existing
	// relevance score (determined by API algorithm) dominates job's final ranking
	// position.
	//   "LOW" - The given ranking expression is of Low importance in terms of
	// job's final ranking position compared to existing relevance score
	// (determined by API algorithm).
	//   "MILD" - The given ranking expression is of Mild importance in terms of
	// job's final ranking position compared to existing relevance score
	// (determined by API algorithm).
	//   "MEDIUM" - The given ranking expression is of Medium importance in terms
	// of job's final ranking position compared to existing relevance score
	// (determined by API algorithm).
	//   "HIGH" - The given ranking expression is of High importance in terms of
	// job's final ranking position compared to existing relevance score
	// (determined by API algorithm).
	//   "EXTREME" - The given ranking expression is of Extreme importance, and
	// dominates job's final ranking position with existing relevance score
	// (determined by API algorithm) ignored.
	ImportanceLevel string `json:"importanceLevel,omitempty"`
	// RankingExpression: Required. Controls over how job documents get ranked on
	// top of existing relevance score (determined by API algorithm). A combination
	// of the ranking expression and relevance score is used to determine job's
	// final ranking position. The syntax for this expression is a subset of Google
	// SQL syntax. Supported operators are: +, -, *, /, where the left and right
	// side of the operator is either a numeric Job.custom_attributes key,
	// integer/double value or an expression that can be evaluated to a number.
	// Parenthesis are supported to adjust calculation precedence. The expression
	// must be < 200 characters in length. The expression is considered invalid for
	// a job if the expression references custom attributes that are not populated
	// on the job or if the expression results in a divide by zero. If an
	// expression is invalid for a job, that job is demoted to the end of the
	// results. Sample ranking expression (year + 25) * 0.25 - (freshness / 0.5)
	RankingExpression string `json:"rankingExpression,omitempty"`
	// ForceSendFields is a list of field names (e.g. "ImportanceLevel") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "ImportanceLevel") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// DeviceInfo: Device information collected from the job seeker, candidate, or
// other entity conducting the job search. Providing this information improves
// the quality of the search results across devices.
type DeviceInfo struct {
	// DeviceType: Type of the device.
	//
	// Possible values:
	//   "DEVICE_TYPE_UNSPECIFIED" - The device type isn't specified.
	//   "WEB" - A desktop web browser, such as, Chrome, Firefox, Safari, or
	// Internet Explorer)
	//   "MOBILE_WEB" - A mobile device web browser, such as a phone or tablet with
	// a Chrome browser.
	//   "ANDROID" - An Android device native application.
	//   "IOS" - An iOS device native application.
	//   "BOT" - A bot, as opposed to a device operated by human beings, such as a
	// web crawler.
	//   "OTHER" - Other devices types.
	DeviceType string `json:"deviceType,omitempty"`
	// Id: A device-specific ID. The ID must be a unique identifier that
	// distinguishes the device from other devices.
	Id string `json:"id,omitempty"`
	// ForceSendFields is a list of field names (e.g. "DeviceType") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DeviceType") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

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

// HistogramQuery: The histogram request.
type HistogramQuery struct {
	// HistogramQuery: An expression specifies a histogram request against matching
	// jobs for searches. See SearchJobsRequest.histogram_queries for details about
	// syntax.
	HistogramQuery string `json:"histogramQuery,omitempty"`
	// ForceSendFields is a list of field names (e.g. "HistogramQuery") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "HistogramQuery") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// HistogramQueryResult: Histogram result that matches HistogramQuery specified
// in searches.
type HistogramQueryResult struct {
	// Histogram: A map from the values of the facet associated with distinct
	// values to the number of matching entries with corresponding value. The key
	// format is: * (for string histogram) string values stored in the field. *
	// (for named numeric bucket) name specified in `bucket()` function, like for
	// `bucket(0, MAX, "non-negative")`, the key will be `non-negative`. * (for
	// anonymous numeric bucket) range formatted as `-`, for example, `0-1000`,
	// `MIN-0`, and `0-MAX`.
	Histogram map[string]string `json:"histogram,omitempty"`
	// HistogramQuery: Requested histogram expression.
	HistogramQuery string `json:"histogramQuery,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Histogram") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Histogram") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Job: A Job resource represents a job posting (also referred to as a "job
// listing" or "job requisition"). A job belongs to a Company, which is the
// hiring entity responsible for the job.
type Job struct {
	// Addresses: Strongly recommended for the best service experience. Location(s)
	// where the employer is looking to hire for this job posting. Specifying the
	// full street address(es) of the hiring location enables better API results,
	// especially job searches by commute time. At most 50 locations are allowed
	// for best search performance. If a job has more locations, it is suggested to
	// split it into multiple jobs with unique requisition_ids (e.g. 'ReqA' becomes
	// 'ReqA-1', 'ReqA-2', and so on.) as multiple jobs with the same company,
	// language_code and requisition_id are not allowed. If the original
	// requisition_id must be preserved, a custom field should be used for storage.
	// It is also suggested to group the locations that close to each other in the
	// same job for better search experience. Jobs with multiple addresses must
	// have their addresses with the same LocationType to allow location filtering
	// to work properly. (For example, a Job with addresses "1600 Amphitheatre
	// Parkway, Mountain View, CA, USA" and "London, UK" may not have location
	// filters applied correctly at search time since the first is a
	// LocationType.STREET_ADDRESS and the second is a LocationType.LOCALITY.) If a
	// job needs to have multiple addresses, it is suggested to split it into
	// multiple jobs with same LocationTypes. The maximum number of allowed
	// characters is 500.
	Addresses []string `json:"addresses,omitempty"`
	// ApplicationInfo: Job application information.
	ApplicationInfo *ApplicationInfo `json:"applicationInfo,omitempty"`
	// Company: Required. The resource name of the company listing the job. The
	// format is
	// "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}". For
	// example, "projects/foo/tenants/bar/companies/baz".
	Company string `json:"company,omitempty"`
	// CompanyDisplayName: Output only. Display name of the company listing the
	// job.
	CompanyDisplayName string `json:"companyDisplayName,omitempty"`
	// CompensationInfo: Job compensation information (a.k.a. "pay rate") i.e., the
	// compensation that will paid to the employee.
	CompensationInfo *CompensationInfo `json:"compensationInfo,omitempty"`
	// CustomAttributes: A map of fields to hold both filterable and non-filterable
	// custom job attributes that are not covered by the provided structured
	// fields. The keys of the map are strings up to 64 bytes and must match the
	// pattern: `a-zA-Z*`. For example, key0LikeThis or KEY_1_LIKE_THIS. At most
	// 100 filterable and at most 100 unfilterable keys are supported. For
	// filterable `string_values`, across all keys at most 200 values are allowed,
	// with each string no more than 255 characters. For unfilterable
	// `string_values`, the maximum total size of `string_values` across all keys
	// is 50KB.
	CustomAttributes map[string]CustomAttribute `json:"customAttributes,omitempty"`
	// DegreeTypes: The desired education degrees for the job, such as Bachelors,
	// Masters.
	//
	// Possible values:
	//   "DEGREE_TYPE_UNSPECIFIED" - Default value. Represents no degree, or early
	// childhood education. Maps to ISCED code 0. Ex) Kindergarten
	//   "PRIMARY_EDUCATION" - Primary education which is typically the first stage
	// of compulsory education. ISCED code 1. Ex) Elementary school
	//   "LOWER_SECONDARY_EDUCATION" - Lower secondary education; First stage of
	// secondary education building on primary education, typically with a more
	// subject-oriented curriculum. ISCED code 2. Ex) Middle school
	//   "UPPER_SECONDARY_EDUCATION" - Middle education; Second/final stage of
	// secondary education preparing for tertiary education and/or providing skills
	// relevant to employment. Usually with an increased range of subject options
	// and streams. ISCED code 3. Ex) High school
	//   "ADULT_REMEDIAL_EDUCATION" - Adult Remedial Education; Programmes
	// providing learning experiences that build on secondary education and prepare
	// for labour market entry and/or tertiary education. The content is broader
	// than secondary but not as complex as tertiary education. ISCED code 4.
	//   "ASSOCIATES_OR_EQUIVALENT" - Associate's or equivalent; Short first
	// tertiary programmes that are typically practically-based,
	// occupationally-specific and prepare for labour market entry. These
	// programmes may also provide a pathway to other tertiary programmes. ISCED
	// code 5.
	//   "BACHELORS_OR_EQUIVALENT" - Bachelor's or equivalent; Programmes designed
	// to provide intermediate academic and/or professional knowledge, skills and
	// competencies leading to a first tertiary degree or equivalent qualification.
	// ISCED code 6.
	//   "MASTERS_OR_EQUIVALENT" - Master's or equivalent; Programmes designed to
	// provide advanced academic and/or professional knowledge, skills and
	// competencies leading to a second tertiary degree or equivalent
	// qualification. ISCED code 7.
	//   "DOCTORAL_OR_EQUIVALENT" - Doctoral or equivalent; Programmes designed
	// primarily to lead to an advanced research qualification, usually concluding
	// with the submission and defense of a substantive dissertation of publishable
	// quality based on original research. ISCED code 8.
	DegreeTypes []string `json:"degreeTypes,omitempty"`
	// Department: The department or functional area within the company with the
	// open position. The maximum number of allowed characters is 255.
	Department string `json:"department,omitempty"`
	// DerivedInfo: Output only. Derived details about the job posting.
	DerivedInfo *JobDerivedInfo `json:"derivedInfo,omitempty"`
	// Description: Required. The description of the job, which typically includes
	// a multi-paragraph description of the company and related information.
	// Separate fields are provided on the job object for responsibilities,
	// qualifications, and other job characteristics. Use of these separate job
	// fields is recommended. This field accepts and sanitizes HTML input, and also
	// accepts bold, italic, ordered list, and unordered list markup tags. The
	// maximum number of allowed characters is 100,000.
	Description string `json:"description,omitempty"`
	// EmploymentTypes: The employment type(s) of a job, for example, full time or
	// part time.
	//
	// Possible values:
	//   "EMPLOYMENT_TYPE_UNSPECIFIED" - The default value if the employment type
	// isn't specified.
	//   "FULL_TIME" - The job requires working a number of hours that constitute
	// full time employment, typically 40 or more hours per week.
	//   "PART_TIME" - The job entails working fewer hours than a full time job,
	// typically less than 40 hours a week.
	//   "CONTRACTOR" - The job is offered as a contracted, as opposed to a
	// salaried employee, position.
	//   "CONTRACT_TO_HIRE" - The job is offered as a contracted position with the
	// understanding that it's converted into a full-time position at the end of
	// the contract. Jobs of this type are also returned by a search for
	// EmploymentType.CONTRACTOR jobs.
	//   "TEMPORARY" - The job is offered as a temporary employment opportunity,
	// usually a short-term engagement.
	//   "INTERN" - The job is a fixed-term opportunity for students or entry-level
	// job seekers to obtain on-the-job training, typically offered as a summer
	// position.
	//   "VOLUNTEER" - The is an opportunity for an individual to volunteer, where
	// there's no expectation of compensation for the provided services.
	//   "PER_DIEM" - The job requires an employee to work on an as-needed basis
	// with a flexible schedule.
	//   "FLY_IN_FLY_OUT" - The job involves employing people in remote areas and
	// flying them temporarily to the work site instead of relocating employees and
	// their families permanently.
	//   "OTHER_EMPLOYMENT_TYPE" - The job does not fit any of the other listed
	// types.
	EmploymentTypes []string `json:"employmentTypes,omitempty"`
	// Incentives: A description of bonus, commission, and other compensation
	// incentives associated with the job not including salary or pay. The maximum
	// number of allowed characters is 10,000.
	Incentives string `json:"incentives,omitempty"`
	// JobBenefits: The benefits included with the job.
	//
	// Possible values:
	//   "JOB_BENEFIT_UNSPECIFIED" - Default value if the type isn't specified.
	//   "CHILD_CARE" - The job includes access to programs that support child
	// care, such as daycare.
	//   "DENTAL" - The job includes dental services covered by a dental insurance
	// plan.
	//   "DOMESTIC_PARTNER" - The job offers specific benefits to domestic
	// partners.
	//   "FLEXIBLE_HOURS" - The job allows for a flexible work schedule.
	//   "MEDICAL" - The job includes health services covered by a medical
	// insurance plan.
	//   "LIFE_INSURANCE" - The job includes a life insurance plan provided by the
	// employer or available for purchase by the employee.
	//   "PARENTAL_LEAVE" - The job allows for a leave of absence to a parent to
	// care for a newborn child.
	//   "RETIREMENT_PLAN" - The job includes a workplace retirement plan provided
	// by the employer or available for purchase by the employee.
	//   "SICK_DAYS" - The job allows for paid time off due to illness.
	//   "VACATION" - The job includes paid time off for vacation.
	//   "VISION" - The job includes vision services covered by a vision insurance
	// plan.
	JobBenefits []string `json:"jobBenefits,omitempty"`
	// JobEndTime: The end timestamp of the job. Typically this field is used for
	// contracting engagements. Invalid timestamps are ignored.
	JobEndTime string `json:"jobEndTime,omitempty"`
	// JobLevel: The experience level associated with the job, such as "Entry
	// Level".
	//
	// Possible values:
	//   "JOB_LEVEL_UNSPECIFIED" - The default value if the level isn't specified.
	//   "ENTRY_LEVEL" - Entry-level individual contributors, typically with less
	// than 2 years of experience in a similar role. Includes interns.
	//   "EXPERIENCED" - Experienced individual contributors, typically with 2+
	// years of experience in a similar role.
	//   "MANAGER" - Entry- to mid-level managers responsible for managing a team
	// of people.
	//   "DIRECTOR" - Senior-level managers responsible for managing teams of
	// managers.
	//   "EXECUTIVE" - Executive-level managers and above, including C-level
	// positions.
	JobLevel string `json:"jobLevel,omitempty"`
	// JobStartTime: The start timestamp of the job in UTC time zone. Typically
	// this field is used for contracting engagements. Invalid timestamps are
	// ignored.
	JobStartTime string `json:"jobStartTime,omitempty"`
	// LanguageCode: The language of the posting. This field is distinct from any
	// requirements for fluency that are associated with the job. Language codes
	// must be in BCP-47 format, such as "en-US" or "sr-Latn". For more
	// information, see Tags for Identifying Languages
	// (https://tools.ietf.org/html/bcp47){: class="external" target="_blank" }. If
	// this field is unspecified and Job.description is present, detected language
	// code based on Job.description is assigned, otherwise defaults to 'en_US'.
	LanguageCode string `json:"languageCode,omitempty"`
	// Name: Required during job update. The resource name for the job. This is
	// generated by the service when a job is created. The format is
	// "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For example,
	// "projects/foo/tenants/bar/jobs/baz". Use of this field in job queries and
	// API calls is preferred over the use of requisition_id since this value is
	// unique.
	Name string `json:"name,omitempty"`
	// PostingCreateTime: Output only. The timestamp when this job posting was
	// created.
	PostingCreateTime string `json:"postingCreateTime,omitempty"`
	// PostingExpireTime: Strongly recommended for the best service experience. The
	// expiration timestamp of the job. After this timestamp, the job is marked as
	// expired, and it no longer appears in search results. The expired job can't
	// be listed by the ListJobs API, but it can be retrieved with the GetJob API
	// or updated with the UpdateJob API or deleted with the DeleteJob API. An
	// expired job can be updated and opened again by using a future expiration
	// timestamp. Updating an expired job fails if there is another existing open
	// job with same company, language_code and requisition_id. The expired jobs
	// are retained in our system for 90 days. However, the overall expired job
	// count cannot exceed 3 times the maximum number of open jobs over previous 7
	// days. If this threshold is exceeded, expired jobs are cleaned out in order
	// of earliest expire time. Expired jobs are no longer accessible after they
	// are cleaned out. Invalid timestamps are ignored, and treated as expire time
	// not provided. If the timestamp is before the instant request is made, the
	// job is treated as expired immediately on creation. This kind of job can not
	// be updated. And when creating a job with past timestamp, the
	// posting_publish_time must be set before posting_expire_time. The purpose of
	// this feature is to allow other objects, such as ApplicationInfo, to refer a
	// job that didn't exist in the system prior to becoming expired. If you want
	// to modify a job that was expired on creation, delete it and create a new
	// one. If this value isn't provided at the time of job creation or is invalid,
	// the job posting expires after 30 days from the job's creation time. For
	// example, if the job was created on 2017/01/01 13:00AM UTC with an
	// unspecified expiration date, the job expires after 2017/01/31 13:00AM UTC.
	// If this value isn't provided on job update, it depends on the field masks
	// set by UpdateJobRequest.update_mask. If the field masks include
	// job_end_time, or the masks are empty meaning that every field is updated,
	// the job posting expires after 30 days from the job's last update time.
	// Otherwise the expiration date isn't updated.
	PostingExpireTime string `json:"postingExpireTime,omitempty"`
	// PostingPublishTime: The timestamp this job posting was most recently
	// published. The default value is the time the request arrives at the server.
	// Invalid timestamps are ignored.
	PostingPublishTime string `json:"postingPublishTime,omitempty"`
	// PostingRegion: The job PostingRegion (for example, state, country)
	// throughout which the job is available. If this field is set, a
	// LocationFilter in a search query within the job region finds this job
	// posting if an exact location match isn't specified. If this field is set to
	// PostingRegion.NATION or PostingRegion.ADMINISTRATIVE_AREA, setting job
	// Job.addresses to the same location level as this field is strongly
	// recommended.
	//
	// Possible values:
	//   "POSTING_REGION_UNSPECIFIED" - If the region is unspecified, the job is
	// only returned if it matches the LocationFilter.
	//   "ADMINISTRATIVE_AREA" - In addition to exact location matching, job
	// posting is returned when the LocationFilter in the search query is in the
	// same administrative area as the returned job posting. For example, if a
	// `ADMINISTRATIVE_AREA` job is posted in "CA, USA", it's returned if
	// LocationFilter has "Mountain View". Administrative area refers to top-level
	// administrative subdivision of this country. For example, US state, IT
	// region, UK constituent nation and JP prefecture.
	//   "NATION" - In addition to exact location matching, job is returned when
	// LocationFilter in search query is in the same country as this job. For
	// example, if a `NATION_WIDE` job is posted in "USA", it's returned if
	// LocationFilter has 'Mountain View'.
	//   "TELECOMMUTE" - Job allows employees to work remotely (telecommute). If
	// locations are provided with this value, the job is considered as having a
	// location, but telecommuting is allowed.
	PostingRegion string `json:"postingRegion,omitempty"`
	// PostingUpdateTime: Output only. The timestamp when this job posting was last
	// updated.
	PostingUpdateTime string `json:"postingUpdateTime,omitempty"`
	// ProcessingOptions: Options for job processing.
	ProcessingOptions *ProcessingOptions `json:"processingOptions,omitempty"`
	// PromotionValue: A promotion value of the job, as determined by the client.
	// The value determines the sort order of the jobs returned when searching for
	// jobs using the featured jobs search call, with higher promotional values
	// being returned first and ties being resolved by relevance sort. Only the
	// jobs with a promotionValue >0 are returned in a FEATURED_JOB_SEARCH. Default
	// value is 0, and negative values are treated as 0.
	PromotionValue int64 `json:"promotionValue,omitempty"`
	// Qualifications: A description of the qualifications required to perform the
	// job. The use of this field is recommended as an alternative to using the
	// more general description field. This field accepts and sanitizes HTML input,
	// and also accepts bold, italic, ordered list, and unordered list markup tags.
	// The maximum number of allowed characters is 10,000.
	Qualifications string `json:"qualifications,omitempty"`
	// RequisitionId: Required. The requisition ID, also referred to as the posting
	// ID, is assigned by the client to identify a job. This field is intended to
	// be used by clients for client identification and tracking of postings. A job
	// isn't allowed to be created if there is another job with the same company,
	// language_code and requisition_id. The maximum number of allowed characters
	// is 255.
	RequisitionId string `json:"requisitionId,omitempty"`
	// Responsibilities: A description of job responsibilities. The use of this
	// field is recommended as an alternative to using the more general description
	// field. This field accepts and sanitizes HTML input, and also accepts bold,
	// italic, ordered list, and unordered list markup tags. The maximum number of
	// allowed characters is 10,000.
	Responsibilities string `json:"responsibilities,omitempty"`
	// Title: Required. The title of the job, such as "Software Engineer" The
	// maximum number of allowed characters is 500.
	Title string `json:"title,omitempty"`
	// Visibility: Deprecated. The job is only visible to the owner. The visibility
	// of the job. Defaults to Visibility.ACCOUNT_ONLY if not specified.
	//
	// Possible values:
	//   "VISIBILITY_UNSPECIFIED" - Default value.
	//   "ACCOUNT_ONLY" - The resource is only visible to the Google Cloud account
	// who owns it.
	//   "SHARED_WITH_GOOGLE" - The resource is visible to the owner and may be
	// visible to other applications and processes at Google.
	//   "SHARED_WITH_PUBLIC" - The resource is visible to the owner and may be
	// visible to all other API clients.
	Visibility string `json:"visibility,omitempty"`

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

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

// JobDerivedInfo: Derived details about the job posting.
type JobDerivedInfo struct {
	// JobCategories: Job categories derived from Job.title and Job.description.
	//
	// Possible values:
	//   "JOB_CATEGORY_UNSPECIFIED" - The default value if the category isn't
	// specified.
	//   "ACCOUNTING_AND_FINANCE" - An accounting and finance job, such as an
	// Accountant.
	//   "ADMINISTRATIVE_AND_OFFICE" - An administrative and office job, such as an
	// Administrative Assistant.
	//   "ADVERTISING_AND_MARKETING" - An advertising and marketing job, such as
	// Marketing Manager.
	//   "ANIMAL_CARE" - An animal care job, such as Veterinarian.
	//   "ART_FASHION_AND_DESIGN" - An art, fashion, or design job, such as
	// Designer.
	//   "BUSINESS_OPERATIONS" - A business operations job, such as Business
	// Operations Manager.
	//   "CLEANING_AND_FACILITIES" - A cleaning and facilities job, such as
	// Custodial Staff.
	//   "COMPUTER_AND_IT" - A computer and IT job, such as Systems Administrator.
	//   "CONSTRUCTION" - A construction job, such as General Laborer.
	//   "CUSTOMER_SERVICE" - A customer service job, such s Cashier.
	//   "EDUCATION" - An education job, such as School Teacher.
	//   "ENTERTAINMENT_AND_TRAVEL" - An entertainment and travel job, such as
	// Flight Attendant.
	//   "FARMING_AND_OUTDOORS" - A farming or outdoor job, such as Park Ranger.
	//   "HEALTHCARE" - A healthcare job, such as Registered Nurse.
	//   "HUMAN_RESOURCES" - A human resources job, such as Human Resources
	// Director.
	//   "INSTALLATION_MAINTENANCE_AND_REPAIR" - An installation, maintenance, or
	// repair job, such as Electrician.
	//   "LEGAL" - A legal job, such as Law Clerk.
	//   "MANAGEMENT" - A management job, often used in conjunction with another
	// category, such as Store Manager.
	//   "MANUFACTURING_AND_WAREHOUSE" - A manufacturing or warehouse job, such as
	// Assembly Technician.
	//   "MEDIA_COMMUNICATIONS_AND_WRITING" - A media, communications, or writing
	// job, such as Media Relations.
	//   "OIL_GAS_AND_MINING" - An oil, gas or mining job, such as Offshore
	// Driller.
	//   "PERSONAL_CARE_AND_SERVICES" - A personal care and services job, such as
	// Hair Stylist.
	//   "PROTECTIVE_SERVICES" - A protective services job, such as Security Guard.
	//   "REAL_ESTATE" - A real estate job, such as Buyer's Agent.
	//   "RESTAURANT_AND_HOSPITALITY" - A restaurant and hospitality job, such as
	// Restaurant Server.
	//   "SALES_AND_RETAIL" - A sales and/or retail job, such Sales Associate.
	//   "SCIENCE_AND_ENGINEERING" - A science and engineering job, such as Lab
	// Technician.
	//   "SOCIAL_SERVICES_AND_NON_PROFIT" - A social services or non-profit job,
	// such as Case Worker.
	//   "SPORTS_FITNESS_AND_RECREATION" - A sports, fitness, or recreation job,
	// such as Personal Trainer.
	//   "TRANSPORTATION_AND_LOGISTICS" - A transportation or logistics job, such
	// as Truck Driver.
	JobCategories []string `json:"jobCategories,omitempty"`
	// Locations: Structured locations of the job, resolved from Job.addresses.
	// locations are exactly matched to Job.addresses in the same order.
	Locations []*Location `json:"locations,omitempty"`
	// ForceSendFields is a list of field names (e.g. "JobCategories") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "JobCategories") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// JobEvent: An event issued when a job seeker interacts with the application
// that implements Cloud Talent Solution.
type JobEvent struct {
	// Jobs: Required. The job name(s) associated with this event. For example, if
	// this is an impression event, this field contains the identifiers of all jobs
	// shown to the job seeker. If this was a view event, this field contains the
	// identifier of the viewed job. The format is
	// "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}", for example,
	// "projects/foo/tenants/bar/jobs/baz".
	Jobs []string `json:"jobs,omitempty"`
	// Type: Required. The type of the event (see JobEventType).
	//
	// Possible values:
	//   "JOB_EVENT_TYPE_UNSPECIFIED" - The event is unspecified by other provided
	// values.
	//   "IMPRESSION" - The job seeker or other entity interacting with the service
	// has had a job rendered in their view, such as in a list of search results in
	// a compressed or clipped format. This event is typically associated with the
	// viewing of a jobs list on a single page by a job seeker.
	//   "VIEW" - The job seeker, or other entity interacting with the service, has
	// viewed the details of a job, including the full description. This event
	// doesn't apply to the viewing a snippet of a job appearing as a part of the
	// job search results. Viewing a snippet is associated with an impression).
	//   "VIEW_REDIRECT" - The job seeker or other entity interacting with the
	// service performed an action to view a job and was redirected to a different
	// website for job.
	//   "APPLICATION_START" - The job seeker or other entity interacting with the
	// service began the process or demonstrated the intention of applying for a
	// job.
	//   "APPLICATION_FINISH" - The job seeker or other entity interacting with the
	// service submitted an application for a job.
	//   "APPLICATION_QUICK_SUBMISSION" - The job seeker or other entity
	// interacting with the service submitted an application for a job with a
	// single click without entering information. If a job seeker performs this
	// action, send only this event to the service. Do not also send
	// JobEventType.APPLICATION_START or JobEventType.APPLICATION_FINISH events.
	//   "APPLICATION_REDIRECT" - The job seeker or other entity interacting with
	// the service performed an action to apply to a job and was redirected to a
	// different website to complete the application.
	//   "APPLICATION_START_FROM_SEARCH" - The job seeker or other entity
	// interacting with the service began the process or demonstrated the intention
	// of applying for a job from the search results page without viewing the
	// details of the job posting. If sending this event, JobEventType.VIEW event
	// shouldn't be sent.
	//   "APPLICATION_REDIRECT_FROM_SEARCH" - The job seeker, or other entity
	// interacting with the service, performs an action with a single click from
	// the search results page to apply to a job (without viewing the details of
	// the job posting), and is redirected to a different website to complete the
	// application. If a candidate performs this action, send only this event to
	// the service. Do not also send JobEventType.APPLICATION_START,
	// JobEventType.APPLICATION_FINISH or JobEventType.VIEW events.
	//   "APPLICATION_COMPANY_SUBMIT" - This event should be used when a company
	// submits an application on behalf of a job seeker. This event is intended for
	// use by staffing agencies attempting to place candidates.
	//   "BOOKMARK" - The job seeker or other entity interacting with the service
	// demonstrated an interest in a job by bookmarking or saving it.
	//   "NOTIFICATION" - The job seeker or other entity interacting with the
	// service was sent a notification, such as an email alert or device
	// notification, containing one or more jobs listings generated by the service.
	//   "HIRED" - The job seeker or other entity interacting with the service was
	// employed by the hiring entity (employer). Send this event only if the job
	// seeker was hired through an application that was initiated by a search
	// conducted through the Cloud Talent Solution service.
	//   "SENT_CV" - A recruiter or staffing agency submitted an application on
	// behalf of the candidate after interacting with the service to identify a
	// suitable job posting.
	//   "INTERVIEW_GRANTED" - The entity interacting with the service (for
	// example, the job seeker), was granted an initial interview by the hiring
	// entity (employer). This event should only be sent if the job seeker was
	// granted an interview as part of an application that was initiated by a
	// search conducted through / recommendation provided by the Cloud Talent
	// Solution service.
	Type string `json:"type,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Jobs") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Jobs") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// JobQuery: The query required to perform a search query.
type JobQuery struct {
	// CommuteFilter: Allows filtering jobs by commute time with different travel
	// methods (for example, driving or public transit). Note: This only works when
	// you specify a CommuteMethod. In this case, location_filters is ignored.
	// Currently we don't support sorting by commute time.
	CommuteFilter *CommuteFilter `json:"commuteFilter,omitempty"`
	// Companies: This filter specifies the company entities to search against. If
	// a value isn't specified, jobs are searched for against all companies. If
	// multiple values are specified, jobs are searched against the companies
	// specified. The format is
	// "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}". For
	// example, "projects/foo/tenants/bar/companies/baz". At most 20 company
	// filters are allowed.
	Companies []string `json:"companies,omitempty"`
	// CompanyDisplayNames: This filter specifies the company Company.display_name
	// of the jobs to search against. The company name must match the value
	// exactly. Alternatively, the value being searched for can be wrapped in
	// different match operators. `SUBSTRING_MATCH([value])` The company name must
	// contain a case insensitive substring match of the value. Using this function
	// may increase latency. Sample Value: `SUBSTRING_MATCH(google)`
	// `MULTI_WORD_TOKEN_MATCH([value])` The value will be treated as a multi word
	// token and the company name must contain a case insensitive match of the
	// value. Using this function may increase latency. Sample Value:
	// `MULTI_WORD_TOKEN_MATCH(google)` If a value isn't specified, jobs within the
	// search results are associated with any company. If multiple values are
	// specified, jobs within the search results may be associated with any of the
	// specified companies. At most 20 company display name filters are allowed.
	CompanyDisplayNames []string `json:"companyDisplayNames,omitempty"`
	// CompensationFilter: This search filter is applied only to
	// Job.compensation_info. For example, if the filter is specified as "Hourly
	// job with per-hour compensation > $15", only jobs meeting these criteria are
	// searched. If a filter isn't defined, all open jobs are searched.
	CompensationFilter *CompensationFilter `json:"compensationFilter,omitempty"`
	// CustomAttributeFilter: This filter specifies a structured syntax to match
	// against the Job.custom_attributes marked as `filterable`. The syntax for
	// this expression is a subset of SQL syntax. Supported operators are: `=`,
	// `!=`, `<`, `<=`, `>`, and `>=` where the left of the operator is a custom
	// field key and the right of the operator is a number or a quoted string. You
	// must escape backslash (\\) and quote (\") characters. Supported functions
	// are `LOWER([field_name])` to perform a case insensitive match and
	// `EMPTY([field_name])` to filter on the existence of a key. Boolean
	// expressions (AND/OR/NOT) are supported up to 3 levels of nesting (for
	// example, "((A AND B AND C) OR NOT D) AND E"), a maximum of 100 comparisons
	// or functions are allowed in the expression. The expression must be < 10000
	// bytes in length. Sample Query: `(LOWER(driving_license)="class \"a\"" OR
	// EMPTY(driving_license)) AND driving_years > 10`
	CustomAttributeFilter string `json:"customAttributeFilter,omitempty"`
	// DisableSpellCheck: This flag controls the spell-check feature. If false, the
	// service attempts to correct a misspelled query, for example, "enginee" is
	// corrected to "engineer". Defaults to false: a spell check is performed.
	DisableSpellCheck bool `json:"disableSpellCheck,omitempty"`
	// EmploymentTypes: The employment type filter specifies the employment type of
	// jobs to search against, such as EmploymentType.FULL_TIME. If a value isn't
	// specified, jobs in the search results includes any employment type. If
	// multiple values are specified, jobs in the search results include any of the
	// specified employment types.
	//
	// Possible values:
	//   "EMPLOYMENT_TYPE_UNSPECIFIED" - The default value if the employment type
	// isn't specified.
	//   "FULL_TIME" - The job requires working a number of hours that constitute
	// full time employment, typically 40 or more hours per week.
	//   "PART_TIME" - The job entails working fewer hours than a full time job,
	// typically less than 40 hours a week.
	//   "CONTRACTOR" - The job is offered as a contracted, as opposed to a
	// salaried employee, position.
	//   "CONTRACT_TO_HIRE" - The job is offered as a contracted position with the
	// understanding that it's converted into a full-time position at the end of
	// the contract. Jobs of this type are also returned by a search for
	// EmploymentType.CONTRACTOR jobs.
	//   "TEMPORARY" - The job is offered as a temporary employment opportunity,
	// usually a short-term engagement.
	//   "INTERN" - The job is a fixed-term opportunity for students or entry-level
	// job seekers to obtain on-the-job training, typically offered as a summer
	// position.
	//   "VOLUNTEER" - The is an opportunity for an individual to volunteer, where
	// there's no expectation of compensation for the provided services.
	//   "PER_DIEM" - The job requires an employee to work on an as-needed basis
	// with a flexible schedule.
	//   "FLY_IN_FLY_OUT" - The job involves employing people in remote areas and
	// flying them temporarily to the work site instead of relocating employees and
	// their families permanently.
	//   "OTHER_EMPLOYMENT_TYPE" - The job does not fit any of the other listed
	// types.
	EmploymentTypes []string `json:"employmentTypes,omitempty"`
	// ExcludedJobs: This filter specifies a list of job names to be excluded
	// during search. At most 400 excluded job names are allowed.
	ExcludedJobs []string `json:"excludedJobs,omitempty"`
	// JobCategories: The category filter specifies the categories of jobs to
	// search against. See JobCategory for more information. If a value isn't
	// specified, jobs from any category are searched against. If multiple values
	// are specified, jobs from any of the specified categories are searched
	// against.
	//
	// Possible values:
	//   "JOB_CATEGORY_UNSPECIFIED" - The default value if the category isn't
	// specified.
	//   "ACCOUNTING_AND_FINANCE" - An accounting and finance job, such as an
	// Accountant.
	//   "ADMINISTRATIVE_AND_OFFICE" - An administrative and office job, such as an
	// Administrative Assistant.
	//   "ADVERTISING_AND_MARKETING" - An advertising and marketing job, such as
	// Marketing Manager.
	//   "ANIMAL_CARE" - An animal care job, such as Veterinarian.
	//   "ART_FASHION_AND_DESIGN" - An art, fashion, or design job, such as
	// Designer.
	//   "BUSINESS_OPERATIONS" - A business operations job, such as Business
	// Operations Manager.
	//   "CLEANING_AND_FACILITIES" - A cleaning and facilities job, such as
	// Custodial Staff.
	//   "COMPUTER_AND_IT" - A computer and IT job, such as Systems Administrator.
	//   "CONSTRUCTION" - A construction job, such as General Laborer.
	//   "CUSTOMER_SERVICE" - A customer service job, such s Cashier.
	//   "EDUCATION" - An education job, such as School Teacher.
	//   "ENTERTAINMENT_AND_TRAVEL" - An entertainment and travel job, such as
	// Flight Attendant.
	//   "FARMING_AND_OUTDOORS" - A farming or outdoor job, such as Park Ranger.
	//   "HEALTHCARE" - A healthcare job, such as Registered Nurse.
	//   "HUMAN_RESOURCES" - A human resources job, such as Human Resources
	// Director.
	//   "INSTALLATION_MAINTENANCE_AND_REPAIR" - An installation, maintenance, or
	// repair job, such as Electrician.
	//   "LEGAL" - A legal job, such as Law Clerk.
	//   "MANAGEMENT" - A management job, often used in conjunction with another
	// category, such as Store Manager.
	//   "MANUFACTURING_AND_WAREHOUSE" - A manufacturing or warehouse job, such as
	// Assembly Technician.
	//   "MEDIA_COMMUNICATIONS_AND_WRITING" - A media, communications, or writing
	// job, such as Media Relations.
	//   "OIL_GAS_AND_MINING" - An oil, gas or mining job, such as Offshore
	// Driller.
	//   "PERSONAL_CARE_AND_SERVICES" - A personal care and services job, such as
	// Hair Stylist.
	//   "PROTECTIVE_SERVICES" - A protective services job, such as Security Guard.
	//   "REAL_ESTATE" - A real estate job, such as Buyer's Agent.
	//   "RESTAURANT_AND_HOSPITALITY" - A restaurant and hospitality job, such as
	// Restaurant Server.
	//   "SALES_AND_RETAIL" - A sales and/or retail job, such Sales Associate.
	//   "SCIENCE_AND_ENGINEERING" - A science and engineering job, such as Lab
	// Technician.
	//   "SOCIAL_SERVICES_AND_NON_PROFIT" - A social services or non-profit job,
	// such as Case Worker.
	//   "SPORTS_FITNESS_AND_RECREATION" - A sports, fitness, or recreation job,
	// such as Personal Trainer.
	//   "TRANSPORTATION_AND_LOGISTICS" - A transportation or logistics job, such
	// as Truck Driver.
	JobCategories []string `json:"jobCategories,omitempty"`
	// LanguageCodes: This filter specifies the locale of jobs to search against,
	// for example, "en-US". If a value isn't specified, the search results can
	// contain jobs in any locale. Language codes should be in BCP-47 format, such
	// as "en-US" or "sr-Latn". For more information, see Tags for Identifying
	// Languages (https://tools.ietf.org/html/bcp47). At most 10 language code
	// filters are allowed.
	LanguageCodes []string `json:"languageCodes,omitempty"`
	// LocationFilters: The location filter specifies geo-regions containing the
	// jobs to search against. See LocationFilter for more information. If a
	// location value isn't specified, jobs fitting the other search criteria are
	// retrieved regardless of where they're located. If multiple values are
	// specified, jobs are retrieved from any of the specified locations. If
	// different values are specified for the LocationFilter.distance_in_miles
	// parameter, the maximum provided distance is used for all locations. At most
	// 5 location filters are allowed.
	LocationFilters []*LocationFilter `json:"locationFilters,omitempty"`
	// PublishTimeRange: Jobs published within a range specified by this filter are
	// searched against.
	PublishTimeRange *TimestampRange `json:"publishTimeRange,omitempty"`
	// Query: The query string that matches against the job title, description, and
	// location fields. The maximum number of allowed characters is 255.
	Query string `json:"query,omitempty"`
	// QueryLanguageCode: The language code of query. For example, "en-US". This
	// field helps to better interpret the query. If a value isn't specified, the
	// query language code is automatically detected, which may not be accurate.
	// Language code should be in BCP-47 format, such as "en-US" or "sr-Latn". For
	// more information, see Tags for Identifying Languages
	// (https://tools.ietf.org/html/bcp47).
	QueryLanguageCode string `json:"queryLanguageCode,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CommuteFilter") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CommuteFilter") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// JobResult: Mutation result of a job from a batch operation.
type JobResult struct {
	// Job: Here Job only contains basic information including name, company,
	// language_code and requisition_id, use getJob method to retrieve detailed
	// information of the created/updated job.
	Job *Job `json:"job,omitempty"`
	// Status: The status of the job processed. This field is populated if the
	// processing of the job fails.
	Status *Status `json:"status,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Job") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Job") to include in API requests
	// with the JSON null value. By default, fields with empty values are omitted
	// from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// LatLng: An object that represents a latitude/longitude pair. This is
// expressed as a pair of doubles to represent degrees latitude and degrees
// longitude. Unless specified otherwise, this object must conform to the WGS84
// standard. Values must be within normalized ranges.
type LatLng struct {
	// Latitude: The latitude in degrees. It must be in the range [-90.0, +90.0].
	Latitude float64 `json:"latitude,omitempty"`
	// Longitude: The longitude in degrees. It must be in the range [-180.0,
	// +180.0].
	Longitude float64 `json:"longitude,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Latitude") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Latitude") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

func (s *LatLng) UnmarshalJSON(data []byte) error {
	type NoMethod LatLng
	var s1 struct {
		Latitude  gensupport.JSONFloat64 `json:"latitude"`
		Longitude gensupport.JSONFloat64 `json:"longitude"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.Latitude = float64(s1.Latitude)
	s.Longitude = float64(s1.Longitude)
	return nil
}

// ListCompaniesResponse: The List companies response object.
type ListCompaniesResponse struct {
	// Companies: Companies for the current client.
	Companies []*Company `json:"companies,omitempty"`
	// Metadata: Additional information for the API invocation, such as the request
	// tracking id.
	Metadata *ResponseMetadata `json:"metadata,omitempty"`
	// NextPageToken: A token to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

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

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

// ListJobsResponse: List jobs response.
type ListJobsResponse struct {
	// Jobs: The Jobs for a given company. The maximum number of items returned is
	// based on the limit field provided in the request.
	Jobs []*Job `json:"jobs,omitempty"`
	// Metadata: Additional information for the API invocation, such as the request
	// tracking id.
	Metadata *ResponseMetadata `json:"metadata,omitempty"`
	// NextPageToken: A token to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`

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

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

// ListTenantsResponse: The List tenants response object.
type ListTenantsResponse struct {
	// Metadata: Additional information for the API invocation, such as the request
	// tracking id.
	Metadata *ResponseMetadata `json:"metadata,omitempty"`
	// NextPageToken: A token to retrieve the next page of results.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// Tenants: Tenants for the current client.
	Tenants []*Tenant `json:"tenants,omitempty"`

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

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

// Location: A resource that represents a location with full geographic
// information.
type Location struct {
	// LatLng: An object representing a latitude/longitude pair.
	LatLng *LatLng `json:"latLng,omitempty"`
	// LocationType: The type of a location, which corresponds to the address lines
	// field of google.type.PostalAddress. For example, "Downtown, Atlanta, GA,
	// USA" has a type of LocationType.NEIGHBORHOOD, and "Kansas City, KS, USA" has
	// a type of LocationType.LOCALITY.
	//
	// Possible values:
	//   "LOCATION_TYPE_UNSPECIFIED" - Default value if the type isn't specified.
	//   "COUNTRY" - A country level location.
	//   "ADMINISTRATIVE_AREA" - A state or equivalent level location.
	//   "SUB_ADMINISTRATIVE_AREA" - A county or equivalent level location.
	//   "LOCALITY" - A city or equivalent level location.
	//   "POSTAL_CODE" - A postal code level location.
	//   "SUB_LOCALITY" - A sublocality is a subdivision of a locality, for example
	// a city borough, ward, or arrondissement. Sublocalities are usually
	// recognized by a local political authority. For example, Manhattan and
	// Brooklyn are recognized as boroughs by the City of New York, and are
	// therefore modeled as sublocalities.
	//   "SUB_LOCALITY_1" - A district or equivalent level location.
	//   "SUB_LOCALITY_2" - A smaller district or equivalent level display.
	//   "NEIGHBORHOOD" - A neighborhood level location.
	//   "STREET_ADDRESS" - A street address level location.
	LocationType string `json:"locationType,omitempty"`
	// PostalAddress: Postal address of the location that includes human readable
	// information, such as postal delivery and payments addresses. Given a postal
	// address, a postal service can deliver items to a premises, P.O. Box, or
	// other delivery location.
	PostalAddress *PostalAddress `json:"postalAddress,omitempty"`
	// RadiusMiles: Radius in miles of the job location. This value is derived from
	// the location bounding box in which a circle with the specified radius
	// centered from google.type.LatLng covers the area associated with the job
	// location. For example, currently, "Mountain View, CA, USA" has a radius of
	// 6.17 miles.
	RadiusMiles float64 `json:"radiusMiles,omitempty"`
	// ForceSendFields is a list of field names (e.g. "LatLng") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "LatLng") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

func (s *Location) UnmarshalJSON(data []byte) error {
	type NoMethod Location
	var s1 struct {
		RadiusMiles gensupport.JSONFloat64 `json:"radiusMiles"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.RadiusMiles = float64(s1.RadiusMiles)
	return nil
}

// LocationFilter: Geographic region of the search.
type LocationFilter struct {
	// Address: The address name, such as "Mountain View" or "Bay Area".
	Address string `json:"address,omitempty"`
	// DistanceInMiles: The distance_in_miles is applied when the location being
	// searched for is identified as a city or smaller. This field is ignored if
	// the location being searched for is a state or larger.
	DistanceInMiles float64 `json:"distanceInMiles,omitempty"`
	// LatLng: The latitude and longitude of the geographic center to search from.
	// This field is ignored if `address` is provided.
	LatLng *LatLng `json:"latLng,omitempty"`
	// RegionCode: CLDR region code of the country/region. This field may be used
	// in two ways: 1) If telecommute preference is not set, this field is used
	// address ambiguity of the user-input address. For example, "Liverpool" may
	// refer to "Liverpool, NY, US" or "Liverpool, UK". This region code biases the
	// address resolution toward a specific country or territory. If this field is
	// not set, address resolution is biased toward the United States by default.
	// 2) If telecommute preference is set to TELECOMMUTE_ALLOWED, the telecommute
	// location filter will be limited to the region specified in this field. If
	// this field is not set, the telecommute job locations will not be See
	// https://unicode-org.github.io/cldr-staging/charts/latest/supplemental/territory_information.html
	// for details. Example: "CH" for Switzerland.
	RegionCode string `json:"regionCode,omitempty"`
	// TelecommutePreference: Allows the client to return jobs without a set
	// location, specifically, telecommuting jobs (telecommuting is considered by
	// the service as a special location). Job.posting_region indicates if a job
	// permits telecommuting. If this field is set to
	// TelecommutePreference.TELECOMMUTE_ALLOWED, telecommuting jobs are searched,
	// and address and lat_lng are ignored. If not set or set to
	// TelecommutePreference.TELECOMMUTE_EXCLUDED, the telecommute status of the
	// jobs is ignored. Jobs that have PostingRegion.TELECOMMUTE and have
	// additional Job.addresses may still be matched based on other location
	// filters using address or lat_lng. This filter can be used by itself to
	// search exclusively for telecommuting jobs, or it can be combined with
	// another location filter to search for a combination of job locations, such
	// as "Mountain View" or "telecommuting" jobs. However, when used in
	// combination with other location filters, telecommuting jobs can be treated
	// as less relevant than other jobs in the search response. This field is only
	// used for job search requests.
	//
	// Possible values:
	//   "TELECOMMUTE_PREFERENCE_UNSPECIFIED" - Default value if the telecommute
	// preference isn't specified.
	//   "TELECOMMUTE_EXCLUDED" - Deprecated: Ignore telecommute status of jobs.
	// Use TELECOMMUTE_JOBS_EXCLUDED if want to exclude telecommute jobs.
	//   "TELECOMMUTE_ALLOWED" - Allow telecommute jobs.
	//   "TELECOMMUTE_JOBS_EXCLUDED" - Exclude telecommute jobs.
	TelecommutePreference string `json:"telecommutePreference,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Address") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Address") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

func (s *LocationFilter) UnmarshalJSON(data []byte) error {
	type NoMethod LocationFilter
	var s1 struct {
		DistanceInMiles gensupport.JSONFloat64 `json:"distanceInMiles"`
		*NoMethod
	}
	s1.NoMethod = (*NoMethod)(s)
	if err := json.Unmarshal(data, &s1); err != nil {
		return err
	}
	s.DistanceInMiles = float64(s1.DistanceInMiles)
	return nil
}

// MatchingJob: Job entry with metadata inside SearchJobsResponse.
type MatchingJob struct {
	// CommuteInfo: Commute information which is generated based on specified
	// CommuteFilter.
	CommuteInfo *CommuteInfo `json:"commuteInfo,omitempty"`
	// Job: Job resource that matches the specified SearchJobsRequest.
	Job *Job `json:"job,omitempty"`
	// JobSummary: A summary of the job with core information that's displayed on
	// the search results listing page.
	JobSummary string `json:"jobSummary,omitempty"`
	// JobTitleSnippet: Contains snippets of text from the Job.title field most
	// closely matching a search query's keywords, if available. The matching query
	// keywords are enclosed in HTML bold tags.
	JobTitleSnippet string `json:"jobTitleSnippet,omitempty"`
	// SearchTextSnippet: Contains snippets of text from the Job.description and
	// similar fields that most closely match a search query's keywords, if
	// available. All HTML tags in the original fields are stripped when returned
	// in this field, and matching query keywords are enclosed in HTML bold tags.
	SearchTextSnippet string `json:"searchTextSnippet,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CommuteInfo") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CommuteInfo") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// Money: Represents an amount of money with its currency type.
type Money struct {
	// CurrencyCode: The three-letter currency code defined in ISO 4217.
	CurrencyCode string `json:"currencyCode,omitempty"`
	// Nanos: Number of nano (10^-9) units of the amount. The value must be between
	// -999,999,999 and +999,999,999 inclusive. If `units` is positive, `nanos`
	// must be positive or zero. If `units` is zero, `nanos` can be positive, zero,
	// or negative. If `units` is negative, `nanos` must be negative or zero. For
	// example $-1.75 is represented as `units`=-1 and `nanos`=-750,000,000.
	Nanos int64 `json:"nanos,omitempty"`
	// Units: The whole units of the amount. For example if `currencyCode` is
	// "USD", then 1 unit is one US dollar.
	Units int64 `json:"units,omitempty,string"`
	// ForceSendFields is a list of field names (e.g. "CurrencyCode") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CurrencyCode") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

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

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

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

// PostalAddress: Represents a postal address (for example, for postal delivery
// or payments addresses). Given a postal address, a postal service can deliver
// items to a premise, P.O. box or similar. It is not intended to model
// geographical locations (roads, towns, mountains). In typical usage, an
// address would be created by user input or from importing existing data,
// depending on the type of process. Advice on address input or editing: - Use
// an internationalization-ready address widget such as
// https://github.com/google/libaddressinput. - Users should not be presented
// with UI elements for input or editing of fields outside countries where that
// field is used. For more guidance on how to use this schema, see:
// https://support.google.com/business/answer/6397478.
type PostalAddress struct {
	// AddressLines: Unstructured address lines describing the lower levels of an
	// address. Because values in `address_lines` do not have type information and
	// may sometimes contain multiple values in a single field (for example,
	// "Austin, TX"), it is important that the line order is clear. The order of
	// address lines should be "envelope order" for the country or region of the
	// address. In places where this can vary (for example, Japan),
	// `address_language` is used to make it explicit (for example, "ja" for
	// large-to-small ordering and "ja-Latn" or "en" for small-to-large). In this
	// way, the most specific line of an address can be selected based on the
	// language. The minimum permitted structural representation of an address
	// consists of a `region_code` with all remaining information placed in the
	// `address_lines`. It would be possible to format such an address very
	// approximately without geocoding, but no semantic reasoning could be made
	// about any of the address components until it was at least partially
	// resolved. Creating an address only containing a `region_code` and
	// `address_lines` and then geocoding is the recommended way to handle
	// completely unstructured addresses (as opposed to guessing which parts of the
	// address should be localities or administrative areas).
	AddressLines []string `json:"addressLines,omitempty"`
	// AdministrativeArea: Optional. Highest administrative subdivision which is
	// used for postal addresses of a country or region. For example, this can be a
	// state, a province, an oblast, or a prefecture. For Spain, this is the
	// province and not the autonomous community (for example, "Barcelona" and not
	// "Catalonia"). Many countries don't use an administrative area in postal
	// addresses. For example, in Switzerland, this should be left unpopulated.
	AdministrativeArea string `json:"administrativeArea,omitempty"`
	// LanguageCode: Optional. BCP-47 language code of the contents of this address
	// (if known). This is often the UI language of the input form or is expected
	// to match one of the languages used in the address' country/region, or their
	// transliterated equivalents. This can affect formatting in certain countries,
	// but is not critical to the correctness of the data and will never affect any
	// validation or other non-formatting related operations. If this value is not
	// known, it should be omitted (rather than specifying a possibly incorrect
	// default). Examples: "zh-Hant", "ja", "ja-Latn", "en".
	LanguageCode string `json:"languageCode,omitempty"`
	// Locality: Optional. Generally refers to the city or town portion of the
	// address. Examples: US city, IT comune, UK post town. In regions of the world
	// where localities are not well defined or do not fit into this structure
	// well, leave `locality` empty and use `address_lines`.
	Locality string `json:"locality,omitempty"`
	// Organization: Optional. The name of the organization at the address.
	Organization string `json:"organization,omitempty"`
	// PostalCode: Optional. Postal code of the address. Not all countries use or
	// require postal codes to be present, but where they are used, they may
	// trigger additional validation with other parts of the address (for example,
	// state or zip code validation in the United States).
	PostalCode string `json:"postalCode,omitempty"`
	// Recipients: Optional. The recipient at the address. This field may, under
	// certain circumstances, contain multiline information. For example, it might
	// contain "care of" information.
	Recipients []string `json:"recipients,omitempty"`
	// RegionCode: Required. CLDR region code of the country/region of the address.
	// This is never inferred and it is up to the user to ensure the value is
	// correct. See https://cldr.unicode.org/ and
	// https://www.unicode.org/cldr/charts/30/supplemental/territory_information.html
	// for details. Example: "CH" for Switzerland.
	RegionCode string `json:"regionCode,omitempty"`
	// Revision: The schema revision of the `PostalAddress`. This must be set to 0,
	// which is the latest revision. All new revisions **must** be backward
	// compatible with old revisions.
	Revision int64 `json:"revision,omitempty"`
	// SortingCode: Optional. Additional, country-specific, sorting code. This is
	// not used in most regions. Where it is used, the value is either a string
	// like "CEDEX", optionally followed by a number (for example, "CEDEX 7"), or
	// just a number alone, representing the "sector code" (Jamaica), "delivery
	// area indicator" (Malawi) or "post office indicator" (Côte d'Ivoire).
	SortingCode string `json:"sortingCode,omitempty"`
	// Sublocality: Optional. Sublocality of the address. For example, this can be
	// a neighborhood, borough, or district.
	Sublocality string `json:"sublocality,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AddressLines") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AddressLines") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// ProcessingOptions: Options for job processing.
type ProcessingOptions struct {
	// DisableStreetAddressResolution: If set to `true`, the service does not
	// attempt to resolve a more precise address for the job.
	DisableStreetAddressResolution bool `json:"disableStreetAddressResolution,omitempty"`
	// HtmlSanitization: Option for job HTML content sanitization. Applied fields
	// are: * description * applicationInfo.instruction * incentives *
	// qualifications * responsibilities HTML tags in these fields may be stripped
	// if sanitiazation isn't disabled. Defaults to
	// HtmlSanitization.SIMPLE_FORMATTING_ONLY.
	//
	// Possible values:
	//   "HTML_SANITIZATION_UNSPECIFIED" - Default value.
	//   "HTML_SANITIZATION_DISABLED" - Disables sanitization on HTML input.
	//   "SIMPLE_FORMATTING_ONLY" - Sanitizes HTML input, only accepts bold,
	// italic, ordered list, and unordered list markup tags.
	HtmlSanitization string `json:"htmlSanitization,omitempty"`
	// ForceSendFields is a list of field names (e.g.
	// "DisableStreetAddressResolution") to unconditionally include in API
	// requests. By default, fields with empty or default values are omitted from
	// API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "DisableStreetAddressResolution")
	// to include in API requests with the JSON null value. By default, fields with
	// empty values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// RequestMetadata: Meta information related to the job searcher or entity
// conducting the job search. This information is used to improve the
// performance of the service.
type RequestMetadata struct {
	// AllowMissingIds: Only set when any of domain, session_id and user_id isn't
	// available for some reason. It is highly recommended not to set this field
	// and provide accurate domain, session_id and user_id for the best service
	// experience.
	AllowMissingIds bool `json:"allowMissingIds,omitempty"`
	// DeviceInfo: The type of device used by the job seeker at the time of the
	// call to the service.
	DeviceInfo *DeviceInfo `json:"deviceInfo,omitempty"`
	// Domain: Required if allow_missing_ids is unset or `false`. The
	// client-defined scope or source of the service call, which typically is the
	// domain on which the service has been implemented and is currently being run.
	// For example, if the service is being run by client *Foo, Inc.*, on job board
	// www.foo.com and career site www.bar.com, then this field is set to "foo.com"
	// for use on the job board, and "bar.com" for use on the career site. Note
	// that any improvements to the model for a particular tenant site rely on this
	// field being set correctly to a unique domain. The maximum number of allowed
	// characters is 255.
	Domain string `json:"domain,omitempty"`
	// SessionId: Required if allow_missing_ids is unset or `false`. A unique
	// session identification string. A session is defined as the duration of an
	// end user's interaction with the service over a certain period. Obfuscate
	// this field for privacy concerns before providing it to the service. Note
	// that any improvements to the model for a particular tenant site rely on this
	// field being set correctly to a unique session ID. The maximum number of
	// allowed characters is 255.
	SessionId string `json:"sessionId,omitempty"`
	// UserId: Required if allow_missing_ids is unset or `false`. A unique user
	// identification string, as determined by the client. To have the strongest
	// positive impact on search quality make sure the client-level is unique.
	// Obfuscate this field for privacy concerns before providing it to the
	// service. Note that any improvements to the model for a particular tenant
	// site rely on this field being set correctly to a unique user ID. The maximum
	// number of allowed characters is 255.
	UserId string `json:"userId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "AllowMissingIds") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "AllowMissingIds") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// ResponseMetadata: Additional information returned to client, such as
// debugging information.
type ResponseMetadata struct {
	// RequestId: A unique id associated with this call. This id is logged for
	// tracking purposes.
	RequestId string `json:"requestId,omitempty"`
	// ForceSendFields is a list of field names (e.g. "RequestId") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "RequestId") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// SearchJobsRequest: The Request body of the `SearchJobs` call.
type SearchJobsRequest struct {
	// CustomRankingInfo: Controls over how job documents get ranked on top of
	// existing relevance score (determined by API algorithm).
	CustomRankingInfo *CustomRankingInfo `json:"customRankingInfo,omitempty"`
	// DisableKeywordMatch: This field is deprecated. Please use
	// SearchJobsRequest.keyword_match_mode going forward. To migrate,
	// disable_keyword_match set to false maps to
	// KeywordMatchMode.KEYWORD_MATCH_ALL, and disable_keyword_match set to true
	// maps to KeywordMatchMode.KEYWORD_MATCH_DISABLED. If
	// SearchJobsRequest.keyword_match_mode is set, this field is ignored. Controls
	// whether to disable exact keyword match on Job.title, Job.description,
	// Job.company_display_name, Job.addresses, Job.qualifications. When disable
	// keyword match is turned off, a keyword match returns jobs that do not match
	// given category filters when there are matching keywords. For example, for
	// the query "program manager," a result is returned even if the job posting
	// has the title "software developer," which doesn't fall into "program
	// manager" ontology, but does have "program manager" appearing in its
	// description. For queries like "cloud" that don't contain title or location
	// specific ontology, jobs with "cloud" keyword matches are returned regardless
	// of this flag's value. Use Company.keyword_searchable_job_custom_attributes
	// if company-specific globally matched custom field/attribute string values
	// are needed. Enabling keyword match improves recall of subsequent search
	// requests. Defaults to false.
	DisableKeywordMatch bool `json:"disableKeywordMatch,omitempty"`
	// DiversificationLevel: Controls whether highly similar jobs are returned next
	// to each other in the search results. Jobs are identified as highly similar
	// based on their titles, job categories, and locations. Highly similar results
	// are clustered so that only one representative job of the cluster is
	// displayed to the job seeker higher up in the results, with the other jobs
	// being displayed lower down in the results. Defaults to
	// DiversificationLevel.SIMPLE if no value is specified.
	//
	// Possible values:
	//   "DIVERSIFICATION_LEVEL_UNSPECIFIED" - The diversification level isn't
	// specified.
	//   "DISABLED" - Disables diversification. Jobs that would normally be pushed
	// to the last page would not have their positions altered. This may result in
	// highly similar jobs appearing in sequence in the search results.
	//   "SIMPLE" - Default diversifying behavior. The result list is ordered so
	// that highly similar results are pushed to the end of the last page of search
	// results.
	//   "ONE_PER_COMPANY" - Only one job from the same company will be shown at
	// once, other jobs under same company are pushed to the end of the last page
	// of search result.
	//   "TWO_PER_COMPANY" - Similar to ONE_PER_COMPANY, but it allows at most two
	// jobs in the same company to be shown at once, the other jobs under same
	// company are pushed to the end of the last page of search result.
	//   "MAX_THREE_PER_COMPANY" - Similar to ONE_PER_COMPANY, but it allows at
	// most three jobs in the same company to be shown at once, the other jobs
	// under same company are dropped.
	//   "DIVERSIFY_BY_LOOSER_SIMILARITY" - The result list is ordered such that
	// somewhat similar results are pushed to the end of the last page of the
	// search results. This option is recommended if SIMPLE diversification does
	// not diversify enough.
	DiversificationLevel string `json:"diversificationLevel,omitempty"`
	// EnableBroadening: Controls whether to broaden the search when it produces
	// sparse results. Broadened queries append results to the end of the matching
	// results list. Defaults to false.
	EnableBroadening bool `json:"enableBroadening,omitempty"`
	// HistogramQueries: An expression specifies a histogram request against
	// matching jobs. Expression syntax is an aggregation function call with
	// histogram facets and other options. Available aggregation function calls
	// are: * `count(string_histogram_facet)`: Count the number of matching
	// entities, for each distinct attribute value. *
	// `count(numeric_histogram_facet, list of buckets)`: Count the number of
	// matching entities within each bucket. A maximum of 200 histogram buckets are
	// supported. Data types: * Histogram facet: facet names with format `a-zA-Z+`.
	// * String: string like "any string with backslash escape for quote(\")." *
	// Number: whole number and floating point number like 10, -1 and -0.01. *
	// List: list of elements with comma(,) separator surrounded by square
	// brackets, for example, [1, 2, 3] and ["one", "two", "three"]. Built-in
	// constants: * MIN (minimum number similar to java Double.MIN_VALUE) * MAX
	// (maximum number similar to java Double.MAX_VALUE) Built-in functions: *
	// bucket(start, end[, label]): bucket built-in function creates a bucket with
	// range of start, end). Note that the end is exclusive, for example, bucket(1,
	// MAX, "positive number") or bucket(1, 10). Job histogram facets: *
	// company_display_name: histogram by [Job.company_display_name. *
	// employment_type: histogram by Job.employment_types, for example,
	// "FULL_TIME", "PART_TIME". * company_size (DEPRECATED): histogram by
	// CompanySize, for example, "SMALL", "MEDIUM", "BIG". * publish_time_in_day:
	// histogram by the Job.posting_publish_time in days. Must specify list of
	// numeric buckets in spec. * publish_time_in_month: histogram by the
	// Job.posting_publish_time in months. Must specify list of numeric buckets in
	// spec. * publish_time_in_year: histogram by the Job.posting_publish_time in
	// years. Must specify list of numeric buckets in spec. * degree_types:
	// histogram by the Job.degree_types, for example, "Bachelors", "Masters". *
	// job_level: histogram by the Job.job_level, for example, "Entry Level". *
	// country: histogram by the country code of jobs, for example, "US", "FR". *
	// admin1: histogram by the admin1 code of jobs, which is a global placeholder
	// referring to the state, province, or the particular term a country uses to
	// define the geographic structure below the country level, for example, "CA",
	// "IL". * city: histogram by a combination of the "city name, admin1 code".
	// For example, "Mountain View, CA", "New York, NY". * admin1_country:
	// histogram by a combination of the "admin1 code, country", for example, "CA,
	// US", "IL, US". * city_coordinate: histogram by the city center's GPS
	// coordinates (latitude and longitude), for example, 37.4038522,-122.0987765.
	// Since the coordinates of a city center can change, customers may need to
	// refresh them periodically. * locale: histogram by the Job.language_code, for
	// example, "en-US", "fr-FR". * language: histogram by the language subtag of
	// the Job.language_code, for example, "en", "fr". * category: histogram by the
	// JobCategory, for example, "COMPUTER_AND_IT", "HEALTHCARE". *
	// base_compensation_unit: histogram by the CompensationInfo.CompensationUnit
	// of base salary, for example, "WEEKLY", "MONTHLY". * base_compensation:
	// histogram by the base salary. Must specify list of numeric buckets to group
	// results by. * annualized_base_compensation: histogram by the base annualized
	// salary. Must specify list of numeric buckets to group results by. *
	// annualized_total_compensation: histogram by the total annualized salary.
	// Must specify list of numeric buckets to group results by. *
	// string_custom_attribute: histogram by string Job.custom_attributes. Values
	// can be accessed via square bracket notations like
	// string_custom_attribute["key1"]. * numeric_custom_attribute: histogram by
	// numeric Job.custom_attributes. Values can be accessed via square bracket
	// notations like numeric_custom_attribute["key1"]. Must specify list of
	// numeric buckets to group results by. Example expressions: * `count(admin1)`
	// * `count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000),
	// bucket(100000, MAX)])` *
	// `count(string_custom_attribute["some-string-custom-attribute"])` *
	// `count(numeric_custom_attribute["some-numeric-custom-attribute"],
	// [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative")])`
	HistogramQueries []*HistogramQuery `json:"histogramQueries,omitempty"`
	// JobQuery: Query used to search against jobs, such as keyword, location
	// filters, etc.
	JobQuery *JobQuery `json:"jobQuery,omitempty"`
	// JobView: The desired job attributes returned for jobs in the search
	// response. Defaults to JobView.JOB_VIEW_SMALL if no value is specified.
	//
	// Possible values:
	//   "JOB_VIEW_UNSPECIFIED" - Default value.
	//   "JOB_VIEW_ID_ONLY" - A ID only view of job, with following attributes:
	// Job.name, Job.requisition_id, Job.language_code.
	//   "JOB_VIEW_MINIMAL" - A minimal view of the job, with the following
	// attributes: Job.name, Job.requisition_id, Job.title, Job.company,
	// Job.DerivedInfo.locations, Job.language_code.
	//   "JOB_VIEW_SMALL" - A small view of the job, with the following attributes
	// in the search results: Job.name, Job.requisition_id, Job.title, Job.company,
	// Job.DerivedInfo.locations, Job.visibility, Job.language_code,
	// Job.description.
	//   "JOB_VIEW_FULL" - All available attributes are included in the search
	// results.
	JobView string `json:"jobView,omitempty"`
	// KeywordMatchMode: Controls what keyword match options to use. If both
	// keyword_match_mode and disable_keyword_match are set, keyword_match_mode
	// will take precedence. Defaults to KeywordMatchMode.KEYWORD_MATCH_ALL if no
	// value is specified.
	//
	// Possible values:
	//   "KEYWORD_MATCH_MODE_UNSPECIFIED" - The keyword match option isn't
	// specified. Defaults to KeywordMatchMode.KEYWORD_MATCH_ALL behavior.
	//   "KEYWORD_MATCH_DISABLED" - Disables keyword matching.
	//   "KEYWORD_MATCH_ALL" - Enable keyword matching over Job.title,
	// Job.description, Job.company_display_name, Job.addresses,
	// Job.qualifications, and keyword searchable Job.custom_attributes fields.
	//   "KEYWORD_MATCH_TITLE_ONLY" - Only enable keyword matching over Job.title.
	KeywordMatchMode string `json:"keywordMatchMode,omitempty"`
	// MaxPageSize: A limit on the number of jobs returned in the search results.
	// Increasing this value above the default value of 10 can increase search
	// response time. The value can be between 1 and 100.
	MaxPageSize int64 `json:"maxPageSize,omitempty"`
	// Offset: An integer that specifies the current offset (that is, starting
	// result location, amongst the jobs deemed by the API as relevant) in search
	// results. This field is only considered if page_token is unset. The maximum
	// allowed value is 5000. Otherwise an error is thrown. For example, 0 means to
	// return results starting from the first matching job, and 10 means to return
	// from the 11th job. This can be used for pagination, (for example, pageSize =
	// 10 and offset = 10 means to return from the second page).
	Offset int64 `json:"offset,omitempty"`
	// OrderBy: The criteria determining how search results are sorted. Default is
	// "relevance desc". Supported options are: * "relevance desc": By
	// relevance descending, as determined by the API algorithms. Relevance
	// thresholding of query results is only available with this ordering. *
	// "posting_publish_time desc": By Job.posting_publish_time descending. *
	// "posting_update_time desc": By Job.posting_update_time descending. *
	// "title": By Job.title ascending. * "title desc": By Job.title
	// descending. * "annualized_base_compensation": By job's
	// CompensationInfo.annualized_base_compensation_range ascending. Jobs whose
	// annualized base compensation is unspecified are put at the end of search
	// results. * "annualized_base_compensation desc": By job's
	// CompensationInfo.annualized_base_compensation_range descending. Jobs whose
	// annualized base compensation is unspecified are put at the end of search
	// results. * "annualized_total_compensation": By job's
	// CompensationInfo.annualized_total_compensation_range ascending. Jobs whose
	// annualized base compensation is unspecified are put at the end of search
	// results. * "annualized_total_compensation desc": By job's
	// CompensationInfo.annualized_total_compensation_range descending. Jobs whose
	// annualized base compensation is unspecified are put at the end of search
	// results. * "custom_ranking desc": By the relevance score adjusted to the
	// SearchJobsRequest.CustomRankingInfo.ranking_expression with weight factor
	// assigned by SearchJobsRequest.CustomRankingInfo.importance_level in
	// descending order. * Location sorting: Use the special syntax to order jobs
	// by distance: "distance_from('Hawaii')": Order by distance from Hawaii.
	// "distance_from(19.89, 155.5)": Order by distance from a coordinate.
	// "distance_from('Hawaii'), distance_from('Puerto Rico')": Order by multiple
	// locations. See details below. "distance_from('Hawaii'),
	// distance_from(19.89, 155.5)": Order by multiple locations. See details
	// below. The string can have a maximum of 256 characters. When multiple
	// distance centers are provided, a job that is close to any of the distance
	// centers would have a high rank. When a job has multiple locations, the job
	// location closest to one of the distance centers will be used. Jobs that
	// don't have locations will be ranked at the bottom. Distance is calculated
	// with a precision of 11.3 meters (37.4 feet). Diversification strategy is
	// still applied unless explicitly disabled in diversification_level.
	OrderBy string `json:"orderBy,omitempty"`
	// PageToken: The token specifying the current offset within search results.
	// See SearchJobsResponse.next_page_token for an explanation of how to obtain
	// the next set of query results.
	PageToken string `json:"pageToken,omitempty"`
	// RelevanceThreshold: Optional. The relevance threshold of the search results.
	// Default to Google defined threshold, leveraging a balance of precision and
	// recall to deliver both highly accurate results and comprehensive coverage of
	// relevant information.
	//
	// Possible values:
	//   "RELEVANCE_THRESHOLD_UNSPECIFIED" - Default value. In this case, server
	// behavior defaults to Google defined threshold.
	//   "LOWEST" - Lowest relevance threshold.
	//   "LOW" - Low relevance threshold.
	//   "MEDIUM" - Medium relevance threshold.
	//   "HIGH" - High relevance threshold.
	RelevanceThreshold string `json:"relevanceThreshold,omitempty"`
	// RequestMetadata: Required. The meta information collected about the job
	// searcher, used to improve the search quality of the service. The identifiers
	// (such as `user_id`) are provided by users, and must be unique and
	// consistent.
	RequestMetadata *RequestMetadata `json:"requestMetadata,omitempty"`
	// SearchMode: Mode of a search. Defaults to SearchMode.JOB_SEARCH.
	//
	// Possible values:
	//   "SEARCH_MODE_UNSPECIFIED" - The mode of the search method isn't specified.
	// The default search behavior is identical to JOB_SEARCH search behavior.
	//   "JOB_SEARCH" - The job search matches against all jobs, and featured jobs
	// (jobs with promotionValue > 0) are not specially handled.
	//   "FEATURED_JOB_SEARCH" - The job search matches only against featured jobs
	// (jobs with a promotionValue > 0). This method doesn't return any jobs having
	// a promotionValue <= 0. The search results order is determined by the
	// promotionValue (jobs with a higher promotionValue are returned higher up in
	// the search results), with relevance being used as a tiebreaker.
	SearchMode string `json:"searchMode,omitempty"`
	// ForceSendFields is a list of field names (e.g. "CustomRankingInfo") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "CustomRankingInfo") to include in
	// API requests with the JSON null value. By default, fields with empty values
	// are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// SearchJobsResponse: Response for SearchJob method.
type SearchJobsResponse struct {
	// BroadenedQueryJobsCount: If query broadening is enabled, we may append
	// additional results from the broadened query. This number indicates how many
	// of the jobs returned in the jobs field are from the broadened query. These
	// results are always at the end of the jobs list. In particular, a value of 0,
	// or if the field isn't set, all the jobs in the jobs list are from the
	// original (without broadening) query. If this field is non-zero, subsequent
	// requests with offset after this result set should contain all broadened
	// results.
	BroadenedQueryJobsCount int64 `json:"broadenedQueryJobsCount,omitempty"`
	// HistogramQueryResults: The histogram results that match with specified
	// SearchJobsRequest.histogram_queries.
	HistogramQueryResults []*HistogramQueryResult `json:"histogramQueryResults,omitempty"`
	// LocationFilters: The location filters that the service applied to the
	// specified query. If any filters are lat-lng based, the
	// Location.location_type is Location.LocationType.LOCATION_TYPE_UNSPECIFIED.
	LocationFilters []*Location `json:"locationFilters,omitempty"`
	// MatchingJobs: The Job entities that match the specified SearchJobsRequest.
	MatchingJobs []*MatchingJob `json:"matchingJobs,omitempty"`
	// Metadata: Additional information for the API invocation, such as the request
	// tracking id.
	Metadata *ResponseMetadata `json:"metadata,omitempty"`
	// NextPageToken: The token that specifies the starting position of the next
	// page of results. This field is empty if there are no more results.
	NextPageToken string `json:"nextPageToken,omitempty"`
	// SpellCorrection: The spell checking result, and correction.
	SpellCorrection *SpellingCorrection `json:"spellCorrection,omitempty"`
	// TotalSize: Number of jobs that match the specified query. Note: This size is
	// precise only if the total is less than 100,000.
	TotalSize int64 `json:"totalSize,omitempty"`

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

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

// SpellingCorrection: Spell check result.
type SpellingCorrection struct {
	// Corrected: Indicates if the query was corrected by the spell checker.
	Corrected bool `json:"corrected,omitempty"`
	// CorrectedHtml: Corrected output with html tags to highlight the corrected
	// words. Corrected words are called out with the "*...*" html tags. For
	// example, the user input query is "software enginear", where the second word,
	// "enginear," is incorrect. It should be "engineer". When spelling correction
	// is enabled, this value is "software *engineer*".
	CorrectedHtml string `json:"correctedHtml,omitempty"`
	// CorrectedText: Correction output consisting of the corrected keyword string.
	CorrectedText string `json:"correctedText,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Corrected") to
	// unconditionally include in API requests. By default, fields with empty or
	// default values are omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Corrected") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

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

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

// Tenant: A Tenant resource represents a tenant in the service. A tenant is a
// group or entity that shares common access with specific privileges for
// resources like jobs. Customer may create multiple tenants to provide data
// isolation for different groups.
type Tenant struct {
	// ExternalId: Required. Client side tenant identifier, used to uniquely
	// identify the tenant. The maximum number of allowed characters is 255.
	ExternalId string `json:"externalId,omitempty"`
	// Name: Required during tenant update. The resource name for a tenant. This is
	// generated by the service when a tenant is created. The format is
	// "projects/{project_id}/tenants/{tenant_id}", for example,
	// "projects/foo/tenants/bar".
	Name string `json:"name,omitempty"`

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

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

// TimeOfDay: Represents a time of day. The date and time zone are either not
// significant or are specified elsewhere. An API may choose to allow leap
// seconds. Related types are google.type.Date and `google.protobuf.Timestamp`.
type TimeOfDay struct {
	// Hours: Hours of a day in 24 hour format. Must be greater than or equal to 0
	// and typically must be less than or equal to 23. An API may choose to allow
	// the value "24:00:00" for scenarios like business closing time.
	Hours int64 `json:"hours,omitempty"`
	// Minutes: Minutes of an hour. Must be greater than or equal to 0 and less
	// than or equal to 59.
	Minutes int64 `json:"minutes,omitempty"`
	// Nanos: Fractions of seconds, in nanoseconds. Must be greater than or equal
	// to 0 and less than or equal to 999,999,999.
	Nanos int64 `json:"nanos,omitempty"`
	// Seconds: Seconds of a minute. Must be greater than or equal to 0 and
	// typically must be less than or equal to 59. An API may allow the value 60 if
	// it allows leap-seconds.
	Seconds int64 `json:"seconds,omitempty"`
	// ForceSendFields is a list of field names (e.g. "Hours") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "Hours") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

// TimestampRange: Message representing a period of time between two
// timestamps.
type TimestampRange struct {
	// EndTime: End of the period (exclusive).
	EndTime string `json:"endTime,omitempty"`
	// StartTime: Begin of the period (inclusive).
	StartTime string `json:"startTime,omitempty"`
	// ForceSendFields is a list of field names (e.g. "EndTime") to unconditionally
	// include in API requests. By default, fields with empty or default values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-ForceSendFields for more
	// details.
	ForceSendFields []string `json:"-"`
	// NullFields is a list of field names (e.g. "EndTime") to include in API
	// requests with the JSON null value. By default, fields with empty values are
	// omitted from API requests. See
	// https://pkg.go.dev/google.golang.org/api#hdr-NullFields for more details.
	NullFields []string `json:"-"`
}

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

type ProjectsOperationsGetCall 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 *ProjectsOperationsService) Get(name string) *ProjectsOperationsGetCall {
	c := &ProjectsOperationsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

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

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

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

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

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

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

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

// CompleteQuery: Completes the specified prefix with keyword suggestions.
// Intended for use by a job search auto-complete search box.
//
//   - tenant: Resource name of tenant the completion is performed within. The
//     format is "projects/{project_id}/tenants/{tenant_id}", for example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsService) CompleteQuery(tenant string) *ProjectsTenantsCompleteQueryCall {
	c := &ProjectsTenantsCompleteQueryCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.tenant = tenant
	return c
}

// Company sets the optional parameter "company": If provided, restricts
// completion to specified company. The format is
// "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for
// example, "projects/foo/tenants/bar/companies/baz".
func (c *ProjectsTenantsCompleteQueryCall) Company(company string) *ProjectsTenantsCompleteQueryCall {
	c.urlParams_.Set("company", company)
	return c
}

// LanguageCodes sets the optional parameter "languageCodes": The list of
// languages of the query. This is the BCP-47 language code, such as "en-US" or
// "sr-Latn". For more information, see Tags for Identifying Languages
// (https://tools.ietf.org/html/bcp47). The maximum number of allowed
// characters is 255.
func (c *ProjectsTenantsCompleteQueryCall) LanguageCodes(languageCodes ...string) *ProjectsTenantsCompleteQueryCall {
	c.urlParams_.SetMulti("languageCodes", append([]string{}, languageCodes...))
	return c
}

// PageSize sets the optional parameter "pageSize": Required. Completion result
// count. The maximum allowed page size is 10.
func (c *ProjectsTenantsCompleteQueryCall) PageSize(pageSize int64) *ProjectsTenantsCompleteQueryCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// Query sets the optional parameter "query": Required. The query used to
// generate suggestions. The maximum number of allowed characters is 255.
func (c *ProjectsTenantsCompleteQueryCall) Query(query string) *ProjectsTenantsCompleteQueryCall {
	c.urlParams_.Set("query", query)
	return c
}

// Scope sets the optional parameter "scope": The scope of the completion. The
// defaults is CompletionScope.PUBLIC.
//
// Possible values:
//
//	"COMPLETION_SCOPE_UNSPECIFIED" - Default value.
//	"TENANT" - Suggestions are based only on the data provided by the client.
//	"PUBLIC" - Suggestions are based on all jobs data in the system that's
//
// visible to the client
func (c *ProjectsTenantsCompleteQueryCall) Scope(scope string) *ProjectsTenantsCompleteQueryCall {
	c.urlParams_.Set("scope", scope)
	return c
}

// Type sets the optional parameter "type": The completion topic. The default
// is CompletionType.COMBINED.
//
// Possible values:
//
//	"COMPLETION_TYPE_UNSPECIFIED" - Default value.
//	"JOB_TITLE" - Suggest job titles for jobs autocomplete. For
//
// CompletionType.JOB_TITLE type, only open jobs with the same language_codes
// are returned.
//
//	"COMPANY_NAME" - Suggest company names for jobs autocomplete. For
//
// CompletionType.COMPANY_NAME type, only companies having open jobs with the
// same language_codes are returned.
//
//	"COMBINED" - Suggest both job titles and company names for jobs
//
// autocomplete. For CompletionType.COMBINED type, only open jobs with the same
// language_codes or companies having open jobs with the same language_codes
// are returned.
func (c *ProjectsTenantsCompleteQueryCall) Type(type_ string) *ProjectsTenantsCompleteQueryCall {
	c.urlParams_.Set("type", type_)
	return c
}

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

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

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

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

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

// Do executes the "jobs.projects.tenants.completeQuery" call.
// Any non-2xx status code is an error. Response headers are in either
// *CompleteQueryResponse.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 *ProjectsTenantsCompleteQueryCall) Do(opts ...googleapi.CallOption) (*CompleteQueryResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &CompleteQueryResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.completeQuery", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsTenantsCreateCall struct {
	s          *Service
	parent     string
	tenant     *Tenant
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Create: Creates a new tenant entity.
//
//   - parent: Resource name of the project under which the tenant is created.
//     The format is "projects/{project_id}", for example, "projects/foo".
func (r *ProjectsTenantsService) Create(parent string, tenant *Tenant) *ProjectsTenantsCreateCall {
	c := &ProjectsTenantsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.tenant = tenant
	return c
}

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

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

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

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

// Do executes the "jobs.projects.tenants.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Tenant.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 *ProjectsTenantsCreateCall) Do(opts ...googleapi.CallOption) (*Tenant, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Tenant{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Delete: Deletes specified tenant.
//
//   - name: The resource name of the tenant to be deleted. The format is
//     "projects/{project_id}/tenants/{tenant_id}", for example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsService) Delete(name string) *ProjectsTenantsDeleteCall {
	c := &ProjectsTenantsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

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

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

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

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

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

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

// Get: Retrieves specified tenant.
//
//   - name: The resource name of the tenant to be retrieved. The format is
//     "projects/{project_id}/tenants/{tenant_id}", for example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsService) Get(name string) *ProjectsTenantsGetCall {
	c := &ProjectsTenantsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

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

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

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

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

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

// Do executes the "jobs.projects.tenants.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Tenant.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 *ProjectsTenantsGetCall) Do(opts ...googleapi.CallOption) (*Tenant, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Tenant{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists all tenants associated with the project.
//
//   - parent: Resource name of the project under which the tenant is created.
//     The format is "projects/{project_id}", for example, "projects/foo".
func (r *ProjectsTenantsService) List(parent string) *ProjectsTenantsListCall {
	c := &ProjectsTenantsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// tenants to be returned, at most 100. Default is 100 if a non-positive number
// is provided.
func (c *ProjectsTenantsListCall) PageSize(pageSize int64) *ProjectsTenantsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The starting indicator
// from which to return results.
func (c *ProjectsTenantsListCall) PageToken(pageToken string) *ProjectsTenantsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

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

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

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

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

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

// Do executes the "jobs.projects.tenants.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListTenantsResponse.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 *ProjectsTenantsListCall) Do(opts ...googleapi.CallOption) (*ListTenantsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListTenantsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

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

// Patch: Updates specified tenant.
//
//   - name: Required during tenant update. The resource name for a tenant. This
//     is generated by the service when a tenant is created. The format is
//     "projects/{project_id}/tenants/{tenant_id}", for example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsService) Patch(name string, tenant *Tenant) *ProjectsTenantsPatchCall {
	c := &ProjectsTenantsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.tenant = tenant
	return c
}

// UpdateMask sets the optional parameter "updateMask": Strongly recommended
// for the best service experience. If update_mask is provided, only the
// specified fields in tenant are updated. Otherwise all the fields are
// updated. A field mask to specify the tenant fields to be updated. Only top
// level fields of Tenant are supported.
func (c *ProjectsTenantsPatchCall) UpdateMask(updateMask string) *ProjectsTenantsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

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

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

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

func (c *ProjectsTenantsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.tenant)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+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,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "jobs.projects.tenants.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "jobs.projects.tenants.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *Tenant.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 *ProjectsTenantsPatchCall) Do(opts ...googleapi.CallOption) (*Tenant, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Tenant{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsTenantsClientEventsCreateCall struct {
	s           *Service
	parent      string
	clientevent *ClientEvent
	urlParams_  gensupport.URLParams
	ctx_        context.Context
	header_     http.Header
}

// Create: Report events issued when end user interacts with customer's
// application that uses Cloud Talent Solution. You may inspect the created
// events in self service tools
// (https://console.cloud.google.com/talent-solution/overview). Learn more
// (https://cloud.google.com/talent-solution/docs/management-tools) about self
// service tools.
//
//   - parent: Resource name of the tenant under which the event is created. The
//     format is "projects/{project_id}/tenants/{tenant_id}", for example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsClientEventsService) Create(parent string, clientevent *ClientEvent) *ProjectsTenantsClientEventsCreateCall {
	c := &ProjectsTenantsClientEventsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.clientevent = clientevent
	return c
}

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

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

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

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

// Do executes the "jobs.projects.tenants.clientEvents.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *ClientEvent.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 *ProjectsTenantsClientEventsCreateCall) Do(opts ...googleapi.CallOption) (*ClientEvent, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ClientEvent{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.clientEvents.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsTenantsCompaniesCreateCall struct {
	s          *Service
	parent     string
	company    *Company
	urlParams_ gensupport.URLParams
	ctx_       context.Context
	header_    http.Header
}

// Create: Creates a new company entity.
//
//   - parent: Resource name of the tenant under which the company is created.
//     The format is "projects/{project_id}/tenants/{tenant_id}", for example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsCompaniesService) Create(parent string, company *Company) *ProjectsTenantsCompaniesCreateCall {
	c := &ProjectsTenantsCompaniesCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.company = company
	return c
}

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

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

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

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

// Do executes the "jobs.projects.tenants.companies.create" call.
// Any non-2xx status code is an error. Response headers are in either
// *Company.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 *ProjectsTenantsCompaniesCreateCall) Do(opts ...googleapi.CallOption) (*Company, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Company{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.companies.create", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// Delete: Deletes specified company. Prerequisite: The company has no jobs
// associated with it.
//
//   - name: The resource name of the company to be deleted. The format is
//     "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for
//     example, "projects/foo/tenants/bar/companies/baz".
func (r *ProjectsTenantsCompaniesService) Delete(name string) *ProjectsTenantsCompaniesDeleteCall {
	c := &ProjectsTenantsCompaniesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

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

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

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

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

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

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

// Get: Retrieves specified company.
//
//   - name: The resource name of the company to be retrieved. The format is
//     "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for
//     example, "projects/api-test-project/tenants/foo/companies/bar".
func (r *ProjectsTenantsCompaniesService) Get(name string) *ProjectsTenantsCompaniesGetCall {
	c := &ProjectsTenantsCompaniesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

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

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

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

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

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

// Do executes the "jobs.projects.tenants.companies.get" call.
// Any non-2xx status code is an error. Response headers are in either
// *Company.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 *ProjectsTenantsCompaniesGetCall) Do(opts ...googleapi.CallOption) (*Company, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Company{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.companies.get", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

// List: Lists all companies associated with the project.
//
//   - parent: Resource name of the tenant under which the company is created.
//     The format is "projects/{project_id}/tenants/{tenant_id}", for example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsCompaniesService) List(parent string) *ProjectsTenantsCompaniesListCall {
	c := &ProjectsTenantsCompaniesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of
// companies to be returned, at most 100. Default is 100 if a non-positive
// number is provided.
func (c *ProjectsTenantsCompaniesListCall) PageSize(pageSize int64) *ProjectsTenantsCompaniesListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The starting indicator
// from which to return results.
func (c *ProjectsTenantsCompaniesListCall) PageToken(pageToken string) *ProjectsTenantsCompaniesListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

// RequireOpenJobs sets the optional parameter "requireOpenJobs": Set to true
// if the companies requested must have open jobs. Defaults to false. If true,
// at most page_size of companies are fetched, among which only those with open
// jobs are returned.
func (c *ProjectsTenantsCompaniesListCall) RequireOpenJobs(requireOpenJobs bool) *ProjectsTenantsCompaniesListCall {
	c.urlParams_.Set("requireOpenJobs", fmt.Sprint(requireOpenJobs))
	return c
}

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

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

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

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

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

// Do executes the "jobs.projects.tenants.companies.list" call.
// Any non-2xx status code is an error. Response headers are in either
// *ListCompaniesResponse.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 *ProjectsTenantsCompaniesListCall) Do(opts ...googleapi.CallOption) (*ListCompaniesResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &ListCompaniesResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.companies.list", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

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

// Patch: Updates specified company.
//
//   - name: Required during company update. The resource name for a company.
//     This is generated by the service when a company is created. The format is
//     "projects/{project_id}/tenants/{tenant_id}/companies/{company_id}", for
//     example, "projects/foo/tenants/bar/companies/baz".
func (r *ProjectsTenantsCompaniesService) Patch(name string, company *Company) *ProjectsTenantsCompaniesPatchCall {
	c := &ProjectsTenantsCompaniesPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.company = company
	return c
}

// UpdateMask sets the optional parameter "updateMask": Strongly recommended
// for the best service experience. If update_mask is provided, only the
// specified fields in company are updated. Otherwise all the fields are
// updated. A field mask to specify the company fields to be updated. Only top
// level fields of Company are supported.
func (c *ProjectsTenantsCompaniesPatchCall) UpdateMask(updateMask string) *ProjectsTenantsCompaniesPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

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

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

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

func (c *ProjectsTenantsCompaniesPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.company)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+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,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "jobs.projects.tenants.companies.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

// Do executes the "jobs.projects.tenants.companies.patch" call.
// Any non-2xx status code is an error. Response headers are in either
// *Company.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 *ProjectsTenantsCompaniesPatchCall) Do(opts ...googleapi.CallOption) (*Company, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &Company{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.companies.patch", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

type ProjectsTenantsJobsBatchCreateCall struct {
	s                      *Service
	parent                 string
	batchcreatejobsrequest *BatchCreateJobsRequest
	urlParams_             gensupport.URLParams
	ctx_                   context.Context
	header_                http.Header
}

// BatchCreate: Begins executing a batch create jobs operation.
//
//   - parent: The resource name of the tenant under which the job is created.
//     The format is "projects/{project_id}/tenants/{tenant_id}". For example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsJobsService) BatchCreate(parent string, batchcreatejobsrequest *BatchCreateJobsRequest) *ProjectsTenantsJobsBatchCreateCall {
	c := &ProjectsTenantsJobsBatchCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.batchcreatejobsrequest = batchcreatejobsrequest
	return c
}

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

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

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

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

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

type ProjectsTenantsJobsBatchDeleteCall struct {
	s                      *Service
	parent                 string
	batchdeletejobsrequest *BatchDeleteJobsRequest
	urlParams_             gensupport.URLParams
	ctx_                   context.Context
	header_                http.Header
}

// BatchDelete: Begins executing a batch delete jobs operation.
//
//   - parent: The resource name of the tenant under which the job is created.
//     The format is "projects/{project_id}/tenants/{tenant_id}". For example,
//     "projects/foo/tenants/bar". The parent of all of the jobs specified in
//     `names` must match this field.
func (r *ProjectsTenantsJobsService) BatchDelete(parent string, batchdeletejobsrequest *BatchDeleteJobsRequest) *ProjectsTenantsJobsBatchDeleteCall {
	c := &ProjectsTenantsJobsBatchDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.batchdeletejobsrequest = batchdeletejobsrequest
	return c
}

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

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

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

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

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

type ProjectsTenantsJobsBatchUpdateCall struct {
	s                      *Service
	parent                 string
	batchupdatejobsrequest *BatchUpdateJobsRequest
	urlParams_             gensupport.URLParams
	ctx_                   context.Context
	header_                http.Header
}

// BatchUpdate: Begins executing a batch update jobs operation.
//
//   - parent: The resource name of the tenant under which the job is created.
//     The format is "projects/{project_id}/tenants/{tenant_id}". For example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsJobsService) BatchUpdate(parent string, batchupdatejobsrequest *BatchUpdateJobsRequest) *ProjectsTenantsJobsBatchUpdateCall {
	c := &ProjectsTenantsJobsBatchUpdateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.batchupdatejobsrequest = batchupdatejobsrequest
	return c
}

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

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

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

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

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

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

// Create: Creates a new job. Typically, the job becomes searchable within 10
// seconds, but it may take up to 5 minutes.
//
//   - parent: The resource name of the tenant under which the job is created.
//     The format is "projects/{project_id}/tenants/{tenant_id}". For example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsJobsService) Create(parent string, job *Job) *ProjectsTenantsJobsCreateCall {
	c := &ProjectsTenantsJobsCreateCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.job = job
	return c
}

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

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

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

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

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

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

// Delete: Deletes the specified job. Typically, the job becomes unsearchable
// within 10 seconds, but it may take up to 5 minutes.
//
//   - name: The resource name of the job to be deleted. The format is
//     "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For example,
//     "projects/foo/tenants/bar/jobs/baz".
func (r *ProjectsTenantsJobsService) Delete(name string) *ProjectsTenantsJobsDeleteCall {
	c := &ProjectsTenantsJobsDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

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

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

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

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

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

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

// Get: Retrieves the specified job, whose status is OPEN or recently EXPIRED
// within the last 90 days.
//
//   - name: The resource name of the job to retrieve. The format is
//     "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For example,
//     "projects/foo/tenants/bar/jobs/baz".
func (r *ProjectsTenantsJobsService) Get(name string) *ProjectsTenantsJobsGetCall {
	c := &ProjectsTenantsJobsGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	return c
}

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

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

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

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

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

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

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

// List: Lists jobs by filter.
//
//   - parent: The resource name of the tenant under which the job is created.
//     The format is "projects/{project_id}/tenants/{tenant_id}". For example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsJobsService) List(parent string) *ProjectsTenantsJobsListCall {
	c := &ProjectsTenantsJobsListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	return c
}

// Filter sets the optional parameter "filter": Required. The filter string
// specifies the jobs to be enumerated. Supported operator: =, AND The fields
// eligible for filtering are: * `companyName` * `requisitionId` * `status`
// Available values: OPEN, EXPIRED, ALL. Defaults to OPEN if no value is
// specified. At least one of `companyName` and `requisitionId` must present or
// an INVALID_ARGUMENT error is thrown. Sample Query: * companyName =
// "projects/foo/tenants/bar/companies/baz" * companyName =
// "projects/foo/tenants/bar/companies/baz" AND requisitionId = "req-1" *
// companyName = "projects/foo/tenants/bar/companies/baz" AND status =
// "EXPIRED" * requisitionId = "req-1" * requisitionId = "req-1" AND status =
// "EXPIRED"
func (c *ProjectsTenantsJobsListCall) Filter(filter string) *ProjectsTenantsJobsListCall {
	c.urlParams_.Set("filter", filter)
	return c
}

// JobView sets the optional parameter "jobView": The desired job attributes
// returned for jobs in the search response. Defaults to JobView.JOB_VIEW_FULL
// if no value is specified.
//
// Possible values:
//
//	"JOB_VIEW_UNSPECIFIED" - Default value.
//	"JOB_VIEW_ID_ONLY" - A ID only view of job, with following attributes:
//
// Job.name, Job.requisition_id, Job.language_code.
//
//	"JOB_VIEW_MINIMAL" - A minimal view of the job, with the following
//
// attributes: Job.name, Job.requisition_id, Job.title, Job.company,
// Job.DerivedInfo.locations, Job.language_code.
//
//	"JOB_VIEW_SMALL" - A small view of the job, with the following attributes
//
// in the search results: Job.name, Job.requisition_id, Job.title, Job.company,
// Job.DerivedInfo.locations, Job.visibility, Job.language_code,
// Job.description.
//
//	"JOB_VIEW_FULL" - All available attributes are included in the search
//
// results.
func (c *ProjectsTenantsJobsListCall) JobView(jobView string) *ProjectsTenantsJobsListCall {
	c.urlParams_.Set("jobView", jobView)
	return c
}

// PageSize sets the optional parameter "pageSize": The maximum number of jobs
// to be returned per page of results. If job_view is set to
// JobView.JOB_VIEW_ID_ONLY, the maximum allowed page size is 1000. Otherwise,
// the maximum allowed page size is 100. Default is 100 if empty or a number <
// 1 is specified.
func (c *ProjectsTenantsJobsListCall) PageSize(pageSize int64) *ProjectsTenantsJobsListCall {
	c.urlParams_.Set("pageSize", fmt.Sprint(pageSize))
	return c
}

// PageToken sets the optional parameter "pageToken": The starting point of a
// query result.
func (c *ProjectsTenantsJobsListCall) PageToken(pageToken string) *ProjectsTenantsJobsListCall {
	c.urlParams_.Set("pageToken", pageToken)
	return c
}

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

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

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

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

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

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

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

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

// Patch: Updates specified job. Typically, updated contents become visible in
// search results within 10 seconds, but it may take up to 5 minutes.
//
//   - name: Required during job update. The resource name for the job. This is
//     generated by the service when a job is created. The format is
//     "projects/{project_id}/tenants/{tenant_id}/jobs/{job_id}". For example,
//     "projects/foo/tenants/bar/jobs/baz". Use of this field in job queries and
//     API calls is preferred over the use of requisition_id since this value is
//     unique.
func (r *ProjectsTenantsJobsService) Patch(name string, job *Job) *ProjectsTenantsJobsPatchCall {
	c := &ProjectsTenantsJobsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.name = name
	c.job = job
	return c
}

// UpdateMask sets the optional parameter "updateMask": Strongly recommended
// for the best service experience. If update_mask is provided, only the
// specified fields in job are updated. Otherwise all the fields are updated. A
// field mask to restrict the fields that are updated. Only top level fields of
// Job are supported.
func (c *ProjectsTenantsJobsPatchCall) UpdateMask(updateMask string) *ProjectsTenantsJobsPatchCall {
	c.urlParams_.Set("updateMask", updateMask)
	return c
}

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

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

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

func (c *ProjectsTenantsJobsPatchCall) doRequest(alt string) (*http.Response, error) {
	reqHeaders := gensupport.SetHeaders(c.s.userAgent(), "application/json", c.header_)
	body, err := googleapi.WithoutDataWrapper.JSONBuffer(c.job)
	if err != nil {
		return nil, err
	}
	c.urlParams_.Set("alt", alt)
	c.urlParams_.Set("prettyPrint", "false")
	urls := googleapi.ResolveRelative(c.s.BasePath, "v4/{+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,
	})
	c.s.logger.DebugContext(c.ctx_, "api request", "serviceName", apiName, "rpcName", "jobs.projects.tenants.jobs.patch", "request", internallog.HTTPRequest(req, body.Bytes()))
	return gensupport.SendRequest(c.ctx_, c.s.client, req)
}

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

type ProjectsTenantsJobsSearchCall struct {
	s                 *Service
	parent            string
	searchjobsrequest *SearchJobsRequest
	urlParams_        gensupport.URLParams
	ctx_              context.Context
	header_           http.Header
}

// Search: Searches for jobs using the provided SearchJobsRequest. This call
// constrains the visibility of jobs present in the database, and only returns
// jobs that the caller has permission to search against.
//
//   - parent: The resource name of the tenant to search within. The format is
//     "projects/{project_id}/tenants/{tenant_id}". For example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsJobsService) Search(parent string, searchjobsrequest *SearchJobsRequest) *ProjectsTenantsJobsSearchCall {
	c := &ProjectsTenantsJobsSearchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.searchjobsrequest = searchjobsrequest
	return c
}

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

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

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

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

// Do executes the "jobs.projects.tenants.jobs.search" call.
// Any non-2xx status code is an error. Response headers are in either
// *SearchJobsResponse.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 *ProjectsTenantsJobsSearchCall) Do(opts ...googleapi.CallOption) (*SearchJobsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &SearchJobsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.jobs.search", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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

type ProjectsTenantsJobsSearchForAlertCall struct {
	s                 *Service
	parent            string
	searchjobsrequest *SearchJobsRequest
	urlParams_        gensupport.URLParams
	ctx_              context.Context
	header_           http.Header
}

// SearchForAlert: Searches for jobs using the provided SearchJobsRequest. This
// API call is intended for the use case of targeting passive job seekers (for
// example, job seekers who have signed up to receive email alerts about
// potential job opportunities), it has different algorithmic adjustments that
// are designed to specifically target passive job seekers. This call
// constrains the visibility of jobs present in the database, and only returns
// jobs the caller has permission to search against.
//
//   - parent: The resource name of the tenant to search within. The format is
//     "projects/{project_id}/tenants/{tenant_id}". For example,
//     "projects/foo/tenants/bar".
func (r *ProjectsTenantsJobsService) SearchForAlert(parent string, searchjobsrequest *SearchJobsRequest) *ProjectsTenantsJobsSearchForAlertCall {
	c := &ProjectsTenantsJobsSearchForAlertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
	c.parent = parent
	c.searchjobsrequest = searchjobsrequest
	return c
}

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

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

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

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

// Do executes the "jobs.projects.tenants.jobs.searchForAlert" call.
// Any non-2xx status code is an error. Response headers are in either
// *SearchJobsResponse.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 *ProjectsTenantsJobsSearchForAlertCall) Do(opts ...googleapi.CallOption) (*SearchJobsResponse, error) {
	gensupport.SetOptions(c.urlParams_, opts...)
	res, err := c.doRequest("json")
	if res != nil && res.StatusCode == http.StatusNotModified {
		if res.Body != nil {
			res.Body.Close()
		}
		return nil, gensupport.WrapError(&googleapi.Error{
			Code:   res.StatusCode,
			Header: res.Header,
		})
	}
	if err != nil {
		return nil, err
	}
	defer googleapi.CloseBody(res)
	if err := googleapi.CheckResponse(res); err != nil {
		return nil, gensupport.WrapError(err)
	}
	ret := &SearchJobsResponse{
		ServerResponse: googleapi.ServerResponse{
			Header:         res.Header,
			HTTPStatusCode: res.StatusCode,
		},
	}
	target := &ret
	b, err := gensupport.DecodeResponseBytes(target, res)
	if err != nil {
		return nil, err
	}
	c.s.logger.DebugContext(c.ctx_, "api response", "serviceName", apiName, "rpcName", "jobs.projects.tenants.jobs.searchForAlert", "response", internallog.HTTPResponse(res, b))
	return ret, nil
}

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