v4beta1/doc/google/cloud/talent/v4beta1/doc_job_service.js

// Copyright 2020 Google LLC
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     https://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Note: this file is purely for documentation. Any contents are not expected
// to be loaded as the JS file.

/**
 * Create job request.
 *
 * @property {string} parent
 *   Required. 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/tenant/bar". If tenant id is unspecified a default tenant
 *   is created. For example, "projects/foo".
 *
 * @property {Object} job
 *   Required. The Job to be created.
 *
 *   This object should have the same structure as [Job]{@link google.cloud.talent.v4beta1.Job}
 *
 * @typedef CreateJobRequest
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.CreateJobRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const CreateJobRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Get job request.
 *
 * @property {string} name
 *   Required. 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".
 *
 *   If tenant id is unspecified, the default tenant is used. For
 *   example, "projects/foo/jobs/bar".
 *
 * @typedef GetJobRequest
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.GetJobRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const GetJobRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Update job request.
 *
 * @property {Object} job
 *   Required. The Job to be updated.
 *
 *   This object should have the same structure as [Job]{@link google.cloud.talent.v4beta1.Job}
 *
 * @property {Object} 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.
 *
 *   This object should have the same structure as [FieldMask]{@link google.protobuf.FieldMask}
 *
 * @typedef UpdateJobRequest
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.UpdateJobRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const UpdateJobRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Delete job request.
 *
 * @property {string} name
 *   Required. 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".
 *
 *   If tenant id is unspecified, the default tenant is used. For
 *   example, "projects/foo/jobs/bar".
 *
 * @typedef DeleteJobRequest
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.DeleteJobRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const DeleteJobRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Batch delete jobs request.
 *
 * @property {string} parent
 *   Required. 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/tenant/bar". If tenant id is unspecified, a default tenant
 *   is created. For example, "projects/foo".
 *
 * @property {string} filter
 *   Required. The filter string specifies the jobs to be deleted.
 *
 *   Supported operator: =, AND
 *
 *   The fields eligible for filtering are:
 *
 *   * `companyName` (Required)
 *   * `requisitionId` (Required)
 *
 *   Sample Query: companyName = "projects/foo/companies/bar" AND
 *   requisitionId = "req-1"
 *
 * @typedef BatchDeleteJobsRequest
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.BatchDeleteJobsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const BatchDeleteJobsRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * List jobs request.
 *
 * @property {string} parent
 *   Required. 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/tenant/bar". If tenant id is unspecified, a default tenant
 *   is created. For example, "projects/foo".
 *
 * @property {string} filter
 *   Required. The filter string specifies the jobs to be enumerated.
 *
 *   Supported operator: =, AND
 *
 *   The fields eligible for filtering are:
 *
 *   * `companyName` (Required)
 *   * `requisitionId`
 *   * `status` Available values: OPEN, EXPIRED, ALL. Defaults to
 *   OPEN if no value is specified.
 *
 *   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"
 *
 * @property {string} pageToken
 *   The starting point of a query result.
 *
 * @property {number} 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.
 *
 * @property {number} jobView
 *   The desired job attributes returned for jobs in the
 *   search response. Defaults to JobView.JOB_VIEW_FULL if no value is
 *   specified.
 *
 *   The number should be among the values of [JobView]{@link google.cloud.talent.v4beta1.JobView}
 *
 * @typedef ListJobsRequest
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.ListJobsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const ListJobsRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * List jobs response.
 *
 * @property {Object[]} jobs
 *   The Jobs for a given company.
 *
 *   The maximum number of items returned is based on the limit field
 *   provided in the request.
 *
 *   This object should have the same structure as [Job]{@link google.cloud.talent.v4beta1.Job}
 *
 * @property {string} nextPageToken
 *   A token to retrieve the next page of results.
 *
 * @property {Object} metadata
 *   Additional information for the API invocation, such as the request
 *   tracking id.
 *
 *   This object should have the same structure as [ResponseMetadata]{@link google.cloud.talent.v4beta1.ResponseMetadata}
 *
 * @typedef ListJobsResponse
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.ListJobsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const ListJobsResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The Request body of the `SearchJobs` call.
 *
 * @property {string} parent
 *   Required. The resource name of the tenant to search within.
 *
 *   The format is "projects/{project_id}/tenants/{tenant_id}". For example,
 *   "projects/foo/tenant/bar". If tenant id is unspecified, a default tenant
 *   is created. For example, "projects/foo".
 *
 * @property {number} searchMode
 *   Mode of a search.
 *
 *   Defaults to SearchMode.JOB_SEARCH.
 *
 *   The number should be among the values of [SearchMode]{@link google.cloud.talent.v4beta1.SearchMode}
 *
 * @property {Object} 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.
 *
 *   This object should have the same structure as [RequestMetadata]{@link google.cloud.talent.v4beta1.RequestMetadata}
 *
 * @property {Object} jobQuery
 *   Query used to search against jobs, such as keyword, location filters, etc.
 *
 *   This object should have the same structure as [JobQuery]{@link google.cloud.talent.v4beta1.JobQuery}
 *
 * @property {boolean} 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.
 *
 * @property {boolean} requirePreciseResultSize
 *   Controls if the search job request requires the return of a precise
 *   count of the first 300 results. Setting this to `true` ensures
 *   consistency in the number of results per page. Best practice is to set this
 *   value to true if a client allows users to jump directly to a
 *   non-sequential search results page.
 *
 *   Enabling this flag may adversely impact performance.
 *
 *   Defaults to false.
 *
 * @property {Object[]} 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.
 *
 *   Data types:
 *
 *   * Histogram facet: facet names with format [a-zA-Z][a-zA-Z0-9_]+.
 *   * 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: histogram by CompanySize, for example, "SMALL",
 *   "MEDIUM", "BIG".
 *   * 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"])`
 *
 *   This object should have the same structure as [HistogramQuery]{@link google.cloud.talent.v4beta1.HistogramQuery}
 *
 * @property {number} jobView
 *   The desired job attributes returned for jobs in the search response.
 *   Defaults to JobView.JOB_VIEW_SMALL if no value is specified.
 *
 *   The number should be among the values of [JobView]{@link google.cloud.talent.v4beta1.JobView}
 *
 * @property {number} 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.
 *
 *   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).
 *
 * @property {number} pageSize
 *   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.
 *
 * @property {string} 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.
 *
 * @property {string} 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:<br>
 *     `"distance_from('Hawaii')"`: Order by distance from Hawaii.<br>
 *     `"distance_from(19.89, 155.5)"`: Order by distance from a coordinate.<br>
 *     `"distance_from('Hawaii'), distance_from('Puerto Rico')"`: Order by
 *     multiple locations. See details below.<br>
 *     `"distance_from('Hawaii'), distance_from(19.89, 155.5)"`: Order by
 *     multiple locations. See details below.<br>
 *     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.
 *
 * @property {number} 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.
 *
 *   The number should be among the values of [DiversificationLevel]{@link google.cloud.talent.v4beta1.DiversificationLevel}
 *
 * @property {Object} customRankingInfo
 *   Controls over how job documents get ranked on top of existing relevance
 *   score (determined by API algorithm).
 *
 *   This object should have the same structure as [CustomRankingInfo]{@link google.cloud.talent.v4beta1.CustomRankingInfo}
 *
 * @property {boolean} disableKeywordMatch
 *   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.
 *
 * @typedef SearchJobsRequest
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.SearchJobsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const SearchJobsRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Custom ranking information for SearchJobsRequest.
   *
   * @property {number} 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.
   *
   *   The number should be among the values of [ImportanceLevel]{@link google.cloud.talent.v4beta1.ImportanceLevel}
   *
   * @property {string} 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 < 100 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)
   *
   * @typedef CustomRankingInfo
   * @memberof google.cloud.talent.v4beta1
   * @see [google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
   */
  CustomRankingInfo: {
    // This is for documentation. Actual contents will be loaded by gRPC.

    /**
     * The importance level for CustomRankingInfo.ranking_expression.
     *
     * @enum {number}
     * @memberof google.cloud.talent.v4beta1
     */
    ImportanceLevel: {

      /**
       * Default value if the importance level isn't specified.
       */
      IMPORTANCE_LEVEL_UNSPECIFIED: 0,

      /**
       * The given ranking expression is of None importance, existing relevance
       * score (determined by API algorithm) dominates job's final ranking
       * position.
       */
      NONE: 1,

      /**
       * 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).
       */
      LOW: 2,

      /**
       * 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).
       */
      MILD: 3,

      /**
       * 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).
       */
      MEDIUM: 4,

      /**
       * 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).
       */
      HIGH: 5,

      /**
       * The given ranking expression is of Extreme importance, and dominates
       * job's final ranking position with existing relevance
       * score (determined by API algorithm) ignored.
       */
      EXTREME: 6
    }
  },

  /**
   * 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.
   *
   * @enum {number}
   * @memberof google.cloud.talent.v4beta1
   */
  DiversificationLevel: {

    /**
     * The diversification level isn't specified.
     */
    DIVERSIFICATION_LEVEL_UNSPECIFIED: 0,

    /**
     * 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.
     */
    DISABLED: 1,

    /**
     * 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. If you are using pageToken to page through the result set,
     * latency might be lower but we can't guarantee that all results are
     * returned. If you are using page offset, latency might be higher but all
     * results are returned.
     */
    SIMPLE: 2
  },

  /**
   * A string-represented enumeration of the job search mode. The service
   * operate differently for different modes of service.
   *
   * @enum {number}
   * @memberof google.cloud.talent.v4beta1
   */
  SearchMode: {

    /**
     * The mode of the search method isn't specified. The default search
     * behavior is identical to JOB_SEARCH search behavior.
     */
    SEARCH_MODE_UNSPECIFIED: 0,

    /**
     * The job search matches against all jobs, and featured jobs
     * (jobs with promotionValue > 0) are not specially handled.
     */
    JOB_SEARCH: 1,

    /**
     * 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.
     */
    FEATURED_JOB_SEARCH: 2
  }
};

/**
 * Response for SearchJob method.
 *
 * @property {Object[]} matchingJobs
 *   The Job entities that match the specified SearchJobsRequest.
 *
 *   This object should have the same structure as [MatchingJob]{@link google.cloud.talent.v4beta1.MatchingJob}
 *
 * @property {Object[]} histogramQueryResults
 *   The histogram results that match with specified
 *   SearchJobsRequest.histogram_queries.
 *
 *   This object should have the same structure as [HistogramQueryResult]{@link google.cloud.talent.v4beta1.HistogramQueryResult}
 *
 * @property {string} nextPageToken
 *   The token that specifies the starting position of the next page of results.
 *   This field is empty if there are no more results.
 *
 * @property {Object[]} 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.
 *
 *   This object should have the same structure as [Location]{@link google.cloud.talent.v4beta1.Location}
 *
 * @property {number} estimatedTotalSize
 *   An estimation of the number of jobs that match the specified query.
 *
 *   This number isn't guaranteed to be accurate. For accurate results,
 *   see SearchJobsRequest.require_precise_result_size.
 *
 * @property {number} totalSize
 *   The precise result count, which is available only if the client set
 *   SearchJobsRequest.require_precise_result_size to `true`, or if the
 *   response is the last page of results. Otherwise, the value is `-1`.
 *
 * @property {Object} metadata
 *   Additional information for the API invocation, such as the request
 *   tracking id.
 *
 *   This object should have the same structure as [ResponseMetadata]{@link google.cloud.talent.v4beta1.ResponseMetadata}
 *
 * @property {number} 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.
 *
 * @property {Object} spellCorrection
 *   The spell checking result, and correction.
 *
 *   This object should have the same structure as [SpellingCorrection]{@link google.cloud.talent.v4beta1.SpellingCorrection}
 *
 * @typedef SearchJobsResponse
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.SearchJobsResponse definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const SearchJobsResponse = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Job entry with metadata inside SearchJobsResponse.
   *
   * @property {Object} job
   *   Job resource that matches the specified SearchJobsRequest.
   *
   *   This object should have the same structure as [Job]{@link google.cloud.talent.v4beta1.Job}
   *
   * @property {string} jobSummary
   *   A summary of the job with core information that's displayed on the search
   *   results listing page.
   *
   * @property {string} 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.
   *
   * @property {string} 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.
   *
   * @property {Object} commuteInfo
   *   Commute information which is generated based on specified
   *    CommuteFilter.
   *
   *   This object should have the same structure as [CommuteInfo]{@link google.cloud.talent.v4beta1.CommuteInfo}
   *
   * @typedef MatchingJob
   * @memberof google.cloud.talent.v4beta1
   * @see [google.cloud.talent.v4beta1.SearchJobsResponse.MatchingJob definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
   */
  MatchingJob: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  },

  /**
   * Commute details related to this job.
   *
   * @property {Object} jobLocation
   *   Location used as the destination in the commute calculation.
   *
   *   This object should have the same structure as [Location]{@link google.cloud.talent.v4beta1.Location}
   *
   * @property {Object} 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.
   *
   *   This object should have the same structure as [Duration]{@link google.protobuf.Duration}
   *
   * @typedef CommuteInfo
   * @memberof google.cloud.talent.v4beta1
   * @see [google.cloud.talent.v4beta1.SearchJobsResponse.CommuteInfo definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
   */
  CommuteInfo: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * Request to create a batch of jobs.
 *
 * @property {string} parent
 *   Required. 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/tenant/bar". If tenant id is unspecified, a default tenant
 *   is created. For example, "projects/foo".
 *
 * @property {Object[]} jobs
 *   Required. The jobs to be created.
 *
 *   This object should have the same structure as [Job]{@link google.cloud.talent.v4beta1.Job}
 *
 * @typedef BatchCreateJobsRequest
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.BatchCreateJobsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const BatchCreateJobsRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * Request to update a batch of jobs.
 *
 * @property {string} parent
 *   Required. 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/tenant/bar". If tenant id is unspecified, a default tenant
 *   is created. For example, "projects/foo".
 *
 * @property {Object[]} jobs
 *   Required. The jobs to be updated.
 *
 *   This object should have the same structure as [Job]{@link google.cloud.talent.v4beta1.Job}
 *
 * @property {Object} 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.
 *
 *   This object should have the same structure as [FieldMask]{@link google.protobuf.FieldMask}
 *
 * @typedef BatchUpdateJobsRequest
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.BatchUpdateJobsRequest definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const BatchUpdateJobsRequest = {
  // This is for documentation. Actual contents will be loaded by gRPC.
};

/**
 * The result of JobService.BatchCreateJobs or
 * JobService.BatchUpdateJobs APIs. It's used to
 * replace google.longrunning.Operation.response in case of success.
 *
 * @property {Object[]} jobResults
 *   List of job mutation results from a batch mutate operation. It can change
 *   until operation status is FINISHED, FAILED or CANCELLED.
 *
 *   This object should have the same structure as [JobResult]{@link google.cloud.talent.v4beta1.JobResult}
 *
 * @typedef JobOperationResult
 * @memberof google.cloud.talent.v4beta1
 * @see [google.cloud.talent.v4beta1.JobOperationResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
 */
const JobOperationResult = {
  // This is for documentation. Actual contents will be loaded by gRPC.

  /**
   * Mutation result of a job.
   *
   * @property {Object} 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.
   *
   *   This object should have the same structure as [Job]{@link google.cloud.talent.v4beta1.Job}
   *
   * @property {Object} status
   *   The status of the job processed. This field is populated if the
   *   processing of the job fails.
   *
   *   This object should have the same structure as [Status]{@link google.rpc.Status}
   *
   * @typedef JobResult
   * @memberof google.cloud.talent.v4beta1
   * @see [google.cloud.talent.v4beta1.JobOperationResult.JobResult definition in proto format]{@link https://github.com/googleapis/googleapis/blob/master/google/cloud/talent/v4beta1/job_service.proto}
   */
  JobResult: {
    // This is for documentation. Actual contents will be loaded by gRPC.
  }
};

/**
 * An enum that specifies the job attributes that are returned in the
 * MatchingJob.job or
 * ListJobsResponse.jobs fields.
 *
 * @enum {number}
 * @memberof google.cloud.talent.v4beta1
 */
const JobView = {

  /**
   * Default value.
   */
  JOB_VIEW_UNSPECIFIED: 0,

  /**
   * A ID only view of job, with following attributes:
   * Job.name, Job.requisition_id, Job.language_code.
   */
  JOB_VIEW_ID_ONLY: 1,

  /**
   * 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_MINIMAL: 2,

  /**
   * 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_SMALL: 3,

  /**
   * All available attributes are included in the search results.
   */
  JOB_VIEW_FULL: 4
};