1 // Copyright 2019 Google LLC.
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
7 // http://www.apache.org/licenses/LICENSE-2.0
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
18 package google.cloud.talent.v4beta1;
20 import "google/api/annotations.proto";
21 import "google/cloud/talent/v4beta1/batch.proto";
22 import "google/cloud/talent/v4beta1/common.proto";
23 import "google/cloud/talent/v4beta1/filters.proto";
24 import "google/cloud/talent/v4beta1/histogram.proto";
25 import "google/cloud/talent/v4beta1/job.proto";
26 import "google/longrunning/operations.proto";
27 import "google/protobuf/duration.proto";
28 import "google/protobuf/empty.proto";
29 import "google/protobuf/field_mask.proto";
31 option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
32 option java_multiple_files = true;
33 option java_outer_classname = "JobServiceProto";
34 option java_package = "com.google.cloud.talent.v4beta1";
35 option objc_class_prefix = "CTS";
37 // A service handles job management, including job CRUD, enumeration and search.
41 // Typically, the job becomes searchable within 10 seconds, but it may take
43 rpc CreateJob(CreateJobRequest) returns (Job) {
44 option (google.api.http) = {
45 post: "/v4beta1/{parent=projects/*}/jobs"
50 // Retrieves the specified job, whose status is OPEN or recently EXPIRED
51 // within the last 90 days.
52 rpc GetJob(GetJobRequest) returns (Job) {
53 option (google.api.http) = {
54 get: "/v4beta1/{name=projects/*/jobs/*}"
58 // Updates specified job.
60 // Typically, updated contents become visible in search results within 10
61 // seconds, but it may take up to 5 minutes.
62 rpc UpdateJob(UpdateJobRequest) returns (Job) {
63 option (google.api.http) = {
64 patch: "/v4beta1/{job.name=projects/*/jobs/*}"
69 // Deletes the specified job.
71 // Typically, the job becomes unsearchable within 10 seconds, but it may take
73 rpc DeleteJob(DeleteJobRequest) returns (google.protobuf.Empty) {
74 option (google.api.http) = {
75 delete: "/v4beta1/{name=projects/*/jobs/*}"
79 // Lists jobs by filter.
80 rpc ListJobs(ListJobsRequest) returns (ListJobsResponse) {
81 option (google.api.http) = {
82 get: "/v4beta1/{parent=projects/*}/jobs"
86 // Deletes a list of [Job][google.cloud.talent.v4beta1.Job]s by filter.
87 rpc BatchDeleteJobs(BatchDeleteJobsRequest) returns (google.protobuf.Empty) {
88 option (google.api.http) = {
89 post: "/v4beta1/{parent=projects/*}/jobs:batchDelete"
94 // Searches for jobs using the provided
95 // [SearchJobsRequest][google.cloud.talent.v4beta1.SearchJobsRequest].
97 // This call constrains the
98 // [visibility][google.cloud.talent.v4beta1.Job.visibility] of jobs present in
99 // the database, and only returns jobs that the caller has permission to
101 rpc SearchJobs(SearchJobsRequest) returns (SearchJobsResponse) {
102 option (google.api.http) = {
103 post: "/v4beta1/{parent=projects/*}/jobs:search"
108 // Searches for jobs using the provided
109 // [SearchJobsRequest][google.cloud.talent.v4beta1.SearchJobsRequest].
111 // This API call is intended for the use case of targeting passive job
112 // seekers (for example, job seekers who have signed up to receive email
113 // alerts about potential job opportunities), and has different algorithmic
114 // adjustments that are targeted to passive job seekers.
116 // This call constrains the
117 // [visibility][google.cloud.talent.v4beta1.Job.visibility] of jobs present in
118 // the database, and only returns jobs the caller has permission to search
120 rpc SearchJobsForAlert(SearchJobsRequest) returns (SearchJobsResponse) {
121 option (google.api.http) = {
122 post: "/v4beta1/{parent=projects/*}/jobs:searchForAlert"
130 // Create job request.
131 message CreateJobRequest {
134 // The resource name of the project under which the job is created.
136 // The format is "projects/{project_id}", for example,
137 // "projects/api-test-project".
142 // The Job to be created.
149 message GetJobRequest {
152 // The resource name of the job to retrieve.
154 // The format is "projects/{project_id}/jobs/{job_id}",
155 // for example, "projects/api-test-project/jobs/1234".
161 // Update job request.
162 message UpdateJobRequest {
165 // The Job to be updated.
168 // Optional but strongly recommended to be provided for the best service
171 // If [update_mask][google.cloud.talent.v4beta1.UpdateJobRequest.update_mask]
172 // is provided, only the specified fields in
173 // [job][google.cloud.talent.v4beta1.UpdateJobRequest.job] are updated.
174 // Otherwise all the fields are updated.
176 // A field mask to restrict the fields that are updated. Only
177 // top level fields of [Job][google.cloud.talent.v4beta1.Job] are supported.
178 google.protobuf.FieldMask update_mask = 2;
183 // Delete job request.
184 message DeleteJobRequest {
187 // The resource name of the job to be deleted.
189 // The format is "projects/{project_id}/jobs/{job_id}",
190 // for example, "projects/api-test-project/jobs/1234".
196 // Batch delete jobs request.
197 message BatchDeleteJobsRequest {
200 // The resource name of the project under which the job is created.
202 // The format is "projects/{project_id}", for example,
203 // "projects/api-test-project".
208 // The filter string specifies the jobs to be deleted.
210 // Supported operator: =, AND
212 // The fields eligible for filtering are:
214 // * `companyName` (Required)
215 // * `requisitionId` (Required)
217 // Sample Query: companyName = "projects/api-test-project/companies/123" AND
218 // requisitionId = "req-1"
224 // List jobs request.
225 message ListJobsRequest {
228 // The resource name of the project under which the job is created.
230 // The format is "projects/{project_id}", for example,
231 // "projects/api-test-project".
236 // The filter string specifies the jobs to be enumerated.
238 // Supported operator: =, AND
240 // The fields eligible for filtering are:
242 // * `companyName` (Required)
243 // * `requisitionId` (Optional)
244 // * `status` (Optional) Available values: OPEN, EXPIRED, ALL. Defaults to
245 // OPEN if no value is specified.
249 // * companyName = "projects/api-test-project/companies/123"
250 // * companyName = "projects/api-test-project/companies/123" AND requisitionId
252 // * companyName = "projects/api-test-project/companies/123" AND status =
258 // The starting point of a query result.
259 string page_token = 3;
263 // The maximum number of jobs to be returned per page of results.
265 // If [job_view][google.cloud.talent.v4beta1.ListJobsRequest.job_view] is set
267 // [JobView.JOB_VIEW_ID_ONLY][google.cloud.talent.v4beta1.JobView.JOB_VIEW_ID_ONLY],
268 // the maximum allowed page size is 1000. Otherwise, the maximum allowed page
271 // Default is 100 if empty or a number < 1 is specified.
276 // The desired job attributes returned for jobs in the
277 // search response. Defaults to
278 // [JobView.JOB_VIEW_FULL][google.cloud.talent.v4beta1.JobView.JOB_VIEW_FULL]
279 // if no value is specified.
280 JobView job_view = 5;
283 // An enum that specifies the job attributes that are returned in the
284 // [MatchingJob.Job][] in
285 // [SearchJobsResponse][google.cloud.talent.v4beta1.SearchJobsResponse] or
286 // [Job][google.cloud.talent.v4beta1.Job] objects in
287 // [ListJobsResponse][google.cloud.talent.v4beta1.ListJobsResponse].
290 JOB_VIEW_UNSPECIFIED = 0;
292 // A ID only view of job, with following attributes:
293 // [Job.name][google.cloud.talent.v4beta1.Job.name],
294 // [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id],
295 // [Job.language_code][google.cloud.talent.v4beta1.Job.language_code].
296 JOB_VIEW_ID_ONLY = 1;
298 // A minimal view of the job, with the following attributes:
299 // [Job.name][google.cloud.talent.v4beta1.Job.name],
300 // [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id],
301 // [Job.job_title][],
302 // [Job.company_name][google.cloud.talent.v4beta1.Job.company_name],
303 // [Job.DerivedInfo.locations][google.cloud.talent.v4beta1.Job.DerivedInfo.locations],
304 // [Job.language_code][google.cloud.talent.v4beta1.Job.language_code].
305 JOB_VIEW_MINIMAL = 2;
307 // A small view of the job, with the following attributes in the search
308 // results: [Job.name][google.cloud.talent.v4beta1.Job.name],
309 // [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id],
310 // [Job.job_title][],
311 // [Job.company_name][google.cloud.talent.v4beta1.Job.company_name],
312 // [Job.DerivedInfo.locations][google.cloud.talent.v4beta1.Job.DerivedInfo.locations],
313 // [Job.visibility][google.cloud.talent.v4beta1.Job.visibility],
314 // [Job.language_code][google.cloud.talent.v4beta1.Job.language_code],
315 // [Job.description][google.cloud.talent.v4beta1.Job.description].
318 // All available attributes are included in the search results.
324 // List jobs response.
325 message ListJobsResponse {
326 // The Jobs for a given company.
328 // The maximum number of items returned is based on the limit field
329 // provided in the request.
330 repeated Job jobs = 1;
332 // A token to retrieve the next page of results.
333 string next_page_token = 2;
335 // Additional information for the API invocation, such as the request
337 ResponseMetadata metadata = 3;
342 // The Request body of the `SearchJobs` call.
343 message SearchJobsRequest {
346 // Custom ranking information for
347 // [SearchJobsRequest][google.cloud.talent.v4beta1.SearchJobsRequest].
348 message CustomRankingInfo {
349 // The importance level for
350 // [CustomRankingInfo.ranking_expression][google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.ranking_expression].
351 enum ImportanceLevel {
352 // Default value if the importance level isn't specified.
353 IMPORTANCE_LEVEL_UNSPECIFIED = 0;
355 // The given ranking expression is of None importance, existing relevance
356 // score (determined by API algorithm) dominates job's final ranking
360 // The given ranking expression is of Low importance in terms of job's
361 // final ranking position compared to existing relevance
362 // score (determined by API algorithm).
365 // The given ranking expression is of Mild importance in terms of job's
366 // final ranking position compared to existing relevance
367 // score (determined by API algorithm).
370 // The given ranking expression is of Medium importance in terms of job's
371 // final ranking position compared to existing relevance
372 // score (determined by API algorithm).
375 // The given ranking expression is of High importance in terms of job's
376 // final ranking position compared to existing relevance
377 // score (determined by API algorithm).
380 // The given ranking expression is of Extreme importance, and dominates
381 // job's final ranking position with existing relevance
382 // score (determined by API algorithm) ignored.
388 // Controls over how important the score of
389 // [CustomRankingInfo.ranking_expression][google.cloud.talent.v4beta1.SearchJobsRequest.CustomRankingInfo.ranking_expression]
390 // gets applied to job's final ranking position.
392 // An error is thrown if not specified.
393 ImportanceLevel importance_level = 1;
397 // Controls over how job documents get ranked on top of existing relevance
398 // score (determined by API algorithm). The product of ranking expression
399 // and relevance score is used to determine job's final ranking position.
401 // The syntax for this expression is a subset of Google SQL syntax.
403 // Supported operators are: +, -, *, /, where the left and right side of
404 // the operator is either a numeric
405 // [Job.custom_attributes][google.cloud.talent.v4beta1.Job.custom_attributes]
406 // key, integer/double value or an expression that can be evaluated to a
409 // Parenthesis are supported to adjust calculation precedence. The
410 // expression must be < 100 characters in length.
412 // Sample ranking expression
413 // (year + 25) * 0.25 - (freshness / 0.5)
414 string ranking_expression = 2;
417 // A string-represented enumeration of the job search mode. The service
418 // operate differently for different modes of service.
420 // The mode of the search method isn't specified.
421 SEARCH_MODE_UNSPECIFIED = 0;
423 // The job search matches against all jobs, and featured jobs
424 // (jobs with promotionValue > 0) are not specially handled.
427 // The job search matches only against featured jobs (jobs with a
428 // promotionValue > 0). This method doesn't return any jobs having a
429 // promotionValue <= 0. The search results order is determined by the
430 // promotionValue (jobs with a higher promotionValue are returned higher up
431 // in the search results), with relevance being used as a tiebreaker.
432 FEATURED_JOB_SEARCH = 2;
435 // Controls whether highly similar jobs are returned next to each other in
436 // the search results. Jobs are identified as highly similar based on
437 // their titles, job categories, and locations. Highly similar results are
438 // clustered so that only one representative job of the cluster is
439 // displayed to the job seeker higher up in the results, with the other jobs
440 // being displayed lower down in the results.
441 enum DiversificationLevel {
442 // The diversification level isn't specified.
443 DIVERSIFICATION_LEVEL_UNSPECIFIED = 0;
445 // Disables diversification. Jobs that would normally be pushed to the last
446 // page would not have their positions altered. This may result in highly
447 // similar jobs appearing in sequence in the search results.
450 // Default diversifying behavior. The result list is ordered so that
451 // highly similar results are pushed to the end of the last page of search
458 // The resource name of the project to search within.
460 // The format is "projects/{project_id}", for example,
461 // "projects/api-test-project".
469 // [SearchMode.JOB_SEARCH][google.cloud.talent.v4beta1.SearchJobsRequest.SearchMode.JOB_SEARCH].
470 SearchMode search_mode = 2;
474 // The meta information collected about the job searcher, used to improve the
475 // search quality of the service.. The identifiers, (such as `user_id`) are
476 // provided by users, and must be unique and consistent.
477 RequestMetadata request_metadata = 3;
481 // Query used to search against jobs, such as keyword, location filters, etc.
482 JobQuery job_query = 4;
486 // Controls whether to broaden the search when it produces sparse results.
487 // Broadened queries append results to the end of the matching results
490 // Defaults to false.
491 bool enable_broadening = 5;
495 // Controls if the search job request requires the return of a precise
496 // count of the first 300 results. Setting this to `true` ensures
497 // consistency in the number of results per page. Best practice is to set this
498 // value to true if a client allows users to jump directly to a
499 // non-sequential search results page.
501 // Enabling this flag may adversely impact performance.
503 // Defaults to false.
504 bool require_precise_result_size = 6;
508 // An expression specifies a histogram request against matching jobs.
510 // Expression syntax is an aggregation function call with histogram facets and
513 // Available aggregation function calls are:
514 // * `count(string_histogram_facet)`: Count the number of matching entities,
515 // for each distinct attribute value.
516 // * `count(numeric_histogram_facet, list of buckets)`: Count the number of
517 // matching entities within each bucket.
521 // * Histogram facet: facet names with format [a-zA-Z][a-zA-Z0-9_]+.
522 // * String: string like "any string with backslash escape for quote(\")."
523 // * Number: whole number and floating point number like 10, -1 and -0.01.
524 // * List: list of elements with comma(,) separator surrounded by square
525 // brackets, for example, [1, 2, 3] and ["one", "two", "three"].
527 // Built-in constants:
529 // * MIN (minimum number similar to java Double.MIN_VALUE)
530 // * MAX (maximum number similar to java Double.MAX_VALUE)
532 // Built-in functions:
534 // * bucket(start, end[, label]): bucket built-in function creates a bucket
535 // with range of [start, end). Note that the end is exclusive, for example,
536 // bucket(1, MAX, "positive number") or bucket(1, 10).
538 // Job histogram facets:
540 // * company_id: histogram by [Job.distributor_company_id][].
541 // * company_display_name: histogram by
542 // [Job.company_display_name][google.cloud.talent.v4beta1.Job.company_display_name].
543 // * employment_type: histogram by
544 // [Job.employment_types][google.cloud.talent.v4beta1.Job.employment_types],
545 // for example, "FULL_TIME", "PART_TIME".
546 // * company_size: histogram by
547 // [CompanySize][google.cloud.talent.v4beta1.CompanySize], for example,
548 // "SMALL", "MEDIUM", "BIG".
549 // * publish_time_in_month: histogram by the [Job.publish_time][] in months.
550 // Must specify list of numeric buckets in spec.
551 // * publish_time_in_year: histogram by the [Job.publish_time][] in years.
552 // Must specify list of numeric buckets in spec.
553 // * degree_type: histogram by the [Job.degree_type][], for example,
554 // "Bachelors", "Masters".
555 // * job_level: histogram by the
556 // [Job.job_level][google.cloud.talent.v4beta1.Job.job_level], for example,
558 // * country: histogram by the country code of jobs, for example, "US", "FR".
559 // * admin1: histogram by the admin1 code of jobs, which is a global
560 // placeholder referring to the state, province, or the particular term a
561 // country uses to define the geographic structure below the country level,
562 // for example, "CA", "IL".
563 // * city: histogram by a combination of the "city name, admin1 code". For
564 // example, "Mountain View, CA", "New York, NY".
565 // * admin1_country: histogram by a combination of the "admin1 code, country",
566 // for example, "CA, US", "IL, US".
567 // * city_coordinate: histogram by the city center's GPS coordinates (latitude
568 // and longitude), for example, 37.4038522,-122.0987765. Since the coordinates
569 // of a city center can change, customers may need to refresh them
571 // * locale: histogram by the
572 // [Job.language_code][google.cloud.talent.v4beta1.Job.language_code], for
573 // example, "en-US", "fr-FR".
574 // * language: histogram by the language subtag of the
575 // [Job.language_code][google.cloud.talent.v4beta1.Job.language_code], for
576 // example, "en", "fr".
577 // * category: histogram by the
578 // [JobCategory][google.cloud.talent.v4beta1.JobCategory], for example,
579 // "COMPUTER_AND_IT", "HEALTHCARE".
580 // * base_compensation_unit: histogram by the [CompensationUnit][] of base
581 // salary, for example, "WEEKLY", "MONTHLY".
582 // * base_compensation: histogram by the base salary. Must specify list of
583 // numeric buckets to group results by.
584 // * annualized_base_compensation: histogram by the base annualized salary.
585 // Must specify list of numeric buckets to group results by.
586 // * annualized_total_compensation: histogram by the total annualized salary.
587 // Must specify list of numeric buckets to group results by.
588 // * string_custom_attribute: histogram by string
589 // [Job.custom_attributes][google.cloud.talent.v4beta1.Job.custom_attributes].
590 // Values can be accessed via square bracket notations like
591 // string_custom_attribute["key1"].
592 // * numeric_custom_attribute: histogram by numeric
593 // [Job.custom_attributes][google.cloud.talent.v4beta1.Job.custom_attributes].
594 // Values can be accessed via square bracket notations like
595 // numeric_custom_attribute["key1"]. Must specify list of numeric buckets to
598 // Example expressions:
600 // * count(base_compensation, [bucket(1000, 10000), bucket(10000, 100000),
601 // bucket(100000, MAX)])
602 // * count(string_custom_attribute["some-string-custom-attribute"])
603 // * count(numeric_custom_attribute["some-numeric-custom-attribute"],
604 // [bucket(MIN, 0, "negative"), bucket(0, MAX, "non-negative"])
605 repeated HistogramQuery histogram_queries = 7;
609 // The desired job attributes returned for jobs in the
610 // search response. Defaults to [JobView.SMALL][] if no value is specified.
611 JobView job_view = 8;
615 // An integer that specifies the current offset (that is, starting result
616 // location, amongst the jobs deemed by the API as relevant) in search
617 // results. This field is only considered if
618 // [page_token][google.cloud.talent.v4beta1.SearchJobsRequest.page_token] is
621 // For example, 0 means to return results starting from the first matching
622 // job, and 10 means to return from the 11th job. This can be used for
623 // pagination, (for example, pageSize = 10 and offset = 10 means to return
624 // from the second page).
629 // A limit on the number of jobs returned in the search results.
630 // Increasing this value above the default value of 10 can increase search
631 // response time. The value can be between 1 and 100.
632 int32 page_size = 10;
636 // The token specifying the current offset within
637 // search results. See
638 // [SearchJobsResponse.next_page_token][google.cloud.talent.v4beta1.SearchJobsResponse.next_page_token]
639 // for an explanation of how to obtain the next set of query results.
640 string page_token = 11;
644 // The criteria determining how search results are sorted. Default is
647 // Supported options are:
649 // * "relevance desc": By relevance descending, as determined by the API
650 // algorithms. Relevance thresholding of query results is only available
651 // with this ordering.
652 // * "posting`_`publish`_`time desc": By
653 // [Job.posting_publish_time][google.cloud.talent.v4beta1.Job.posting_publish_time]
655 // * "posting`_`update`_`time desc": By
656 // [Job.posting_update_time][google.cloud.talent.v4beta1.Job.posting_update_time]
658 // * "title": By [Job.title][google.cloud.talent.v4beta1.Job.title] ascending.
659 // * "title desc": By [Job.title][google.cloud.talent.v4beta1.Job.title]
661 // * "annualized`_`base`_`compensation": By job's
662 // [CompensationInfo.annualized_base_compensation_range][google.cloud.talent.v4beta1.CompensationInfo.annualized_base_compensation_range]
663 // ascending. Jobs whose annualized base compensation is unspecified are put
664 // at the end of search results.
665 // * "annualized`_`base`_`compensation desc": By job's
666 // [CompensationInfo.annualized_base_compensation_range][google.cloud.talent.v4beta1.CompensationInfo.annualized_base_compensation_range]
667 // descending. Jobs whose annualized base compensation is unspecified are put
668 // at the end of search results.
669 // * "annualized`_`total`_`compensation": By job's
670 // [CompensationInfo.annualized_total_compensation_range][google.cloud.talent.v4beta1.CompensationInfo.annualized_total_compensation_range]
671 // ascending. Jobs whose annualized base compensation is unspecified are put
672 // at the end of search results.
673 // * "annualized`_`total`_`compensation desc": By job's
674 // [CompensationInfo.annualized_total_compensation_range][google.cloud.talent.v4beta1.CompensationInfo.annualized_total_compensation_range]
675 // descending. Jobs whose annualized base compensation is unspecified are put
676 // at the end of search results.
677 // * "custom`_`ranking desc": By the relevance score adjusted to the
678 // [SearchJobsRequest.custom_ranking_info.ranking_expression][] with weight
679 // factor assigned by
680 // [SearchJobsRequest.custom_ranking_info.importance_level][] in descending
682 // * "location`_`distance": By the distance between the location on jobs and
683 // locations specified in the
684 // [SearchJobsRequest.job_query.location_filters][].
685 // When this order is selected, the
686 // [SearchJobsRequest.job_query.location_filters][] must not be empty. When
687 // a job has multiple locations, the location closest to one of the locations
688 // specified in the location filter will be used to calculate location
689 // distance. Distance is calculated by the distance between two lat/long
690 // coordinates, with a precision of 10e-4 degrees (11.3 meters).
691 // Jobs that don't have locations specified will be ranked below jobs having
693 // Diversification strategy is still applied unless explicitly disabled in
694 // [SearchJobsRequest.diversification_level][google.cloud.talent.v4beta1.SearchJobsRequest.diversification_level].
695 string order_by = 12;
699 // Controls whether highly similar jobs are returned next to each other in
700 // the search results. Jobs are identified as highly similar based on
701 // their titles, job categories, and locations. Highly similar results are
702 // clustered so that only one representative job of the cluster is
703 // displayed to the job seeker higher up in the results, with the other jobs
704 // being displayed lower down in the results.
707 // [DiversificationLevel.SIMPLE][google.cloud.talent.v4beta1.SearchJobsRequest.DiversificationLevel.SIMPLE]
708 // if no value is specified.
709 DiversificationLevel diversification_level = 13;
713 // Controls over how job documents get ranked on top of existing relevance
714 // score (determined by API algorithm).
715 CustomRankingInfo custom_ranking_info = 14;
719 // Controls whether to disable exact keyword match on [Job.job_title][],
720 // [Job.description][google.cloud.talent.v4beta1.Job.description],
721 // [Job.company_display_name][google.cloud.talent.v4beta1.Job.company_display_name],
722 // [Job.locations][0],
723 // [Job.qualifications][google.cloud.talent.v4beta1.Job.qualifications]. When
724 // disable keyword match is turned off, a keyword match returns jobs that do
725 // not match given category filters when there are matching keywords. For
726 // example, for the query "program manager," a result is returned even if the
727 // job posting has the title "software developer," which doesn't fall into
728 // "program manager" ontology, but does have "program manager" appearing in
731 // For queries like "cloud" that don't contain title or
732 // location specific ontology, jobs with "cloud" keyword matches are returned
733 // regardless of this flag's value.
735 // Please use [Company.keyword_searchable_custom_fields][] or
736 // [Company.keyword_searchable_custom_attributes][] if company specific
737 // globally matched custom field/attribute string values is needed. Enabling
738 // keyword match improves recall of subsequent search requests.
740 // Defaults to false.
741 bool disable_keyword_match = 16;
746 // Response for SearchJob method.
747 message SearchJobsResponse {
750 // Job entry with metadata inside
751 // [SearchJobsResponse][google.cloud.talent.v4beta1.SearchJobsResponse].
752 message MatchingJob {
753 // Job resource that matches the specified
754 // [SearchJobsRequest][google.cloud.talent.v4beta1.SearchJobsRequest].
757 // A summary of the job with core information that's displayed on the search
758 // results listing page.
759 string job_summary = 2;
761 // Contains snippets of text from the [Job.job_title][] field most
762 // closely matching a search query's keywords, if available. The matching
763 // query keywords are enclosed in HTML bold tags.
764 string job_title_snippet = 3;
766 // Contains snippets of text from the
767 // [Job.description][google.cloud.talent.v4beta1.Job.description] and
768 // similar fields that most closely match a search query's keywords, if
769 // available. All HTML tags in the original fields are stripped when
770 // returned in this field, and matching query keywords are enclosed in HTML
772 string search_text_snippet = 4;
774 // Commute information which is generated based on specified
775 // [CommuteFilter][google.cloud.talent.v4beta1.CommuteFilter].
776 CommuteInfo commute_info = 5;
781 // Commute details related to this job.
782 message CommuteInfo {
783 // Location used as the destination in the commute calculation.
784 Location job_location = 1;
786 // The number of seconds required to travel to the job location from the
787 // query location. A duration of 0 seconds indicates that the job isn't
788 // reachable within the requested duration, but was returned as part of an
790 google.protobuf.Duration travel_duration = 2;
793 // The Job entities that match the specified
794 // [SearchJobsRequest][google.cloud.talent.v4beta1.SearchJobsRequest].
795 repeated MatchingJob matching_jobs = 1;
797 // The histogram results that match with specified
798 // [SearchJobsRequest.histogram_queries][google.cloud.talent.v4beta1.SearchJobsRequest.histogram_queries].
799 repeated HistogramQueryResult histogram_query_results = 2;
801 // The token that specifies the starting position of the next page of results.
802 // This field is empty if there are no more results.
803 string next_page_token = 3;
805 // The location filters that the service applied to the specified query. If
806 // any filters are lat-lng based, the [JobLocation.location_type][] is
807 // [JobLocation.LocationType#LOCATION_TYPE_UNSPECIFIED][].
808 repeated Location location_filters = 4;
810 // An estimation of the number of jobs that match the specified query.
812 // This number isn't guaranteed to be accurate. For accurate results,
813 // see [enable_precise_result_size][].
814 int32 estimated_total_size = 5;
816 // The precise result count, which is available only if the client set
817 // [enable_precise_result_size][] to `true`, or if the response
818 // is the last page of results. Otherwise, the value is `-1`.
819 int32 total_size = 6;
821 // Additional information for the API invocation, such as the request
823 ResponseMetadata metadata = 7;
825 // If query broadening is enabled, we may append additional results from the
826 // broadened query. This number indicates how many of the jobs returned in the
827 // jobs field are from the broadened query. These results are always at the
828 // end of the jobs list. In particular, a value of 0, or if the field isn't
829 // set, all the jobs in the jobs list are from the original
830 // (without broadening) query. If this field is non-zero, subsequent requests
831 // with offset after this result set should contain all broadened results.
832 int32 broadened_query_jobs_count = 8;
834 // The spell checking result, and correction.
835 SpellingCorrection spell_correction = 9;