1// Copyright 2023 Google LLC
2//
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
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
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.
14
15syntax = "proto3";
16
17package google.cloud.talent.v4beta1;
18
19import "google/api/field_behavior.proto";
20import "google/protobuf/timestamp.proto";
21import "google/protobuf/wrappers.proto";
22import "google/type/latlng.proto";
23import "google/type/money.proto";
24import "google/type/postal_address.proto";
25
26option go_package = "cloud.google.com/go/talent/apiv4beta1/talentpb;talentpb";
27option java_multiple_files = true;
28option java_outer_classname = "CommonProto";
29option java_package = "com.google.cloud.talent.v4beta1";
30option objc_class_prefix = "CTS";
31
32// Message representing a period of time between two timestamps.
33message TimestampRange {
34  // Begin of the period (inclusive).
35  google.protobuf.Timestamp start_time = 1;
36
37  // End of the period (exclusive).
38  google.protobuf.Timestamp end_time = 2;
39}
40
41// An enum that represents the size of the company.
42enum CompanySize {
43  // Default value if the size isn't specified.
44  COMPANY_SIZE_UNSPECIFIED = 0;
45
46  // The company has less than 50 employees.
47  MINI = 1;
48
49  // The company has between 50 and 99 employees.
50  SMALL = 2;
51
52  // The company has between 100 and 499 employees.
53  SMEDIUM = 3;
54
55  // The company has between 500 and 999 employees.
56  MEDIUM = 4;
57
58  // The company has between 1,000 and 4,999 employees.
59  BIG = 5;
60
61  // The company has between 5,000 and 9,999 employees.
62  BIGGER = 6;
63
64  // The company has 10,000 or more employees.
65  GIANT = 7;
66}
67
68// An enum that represents employee benefits included with the job.
69enum JobBenefit {
70  // Default value if the type isn't specified.
71  JOB_BENEFIT_UNSPECIFIED = 0;
72
73  // The job includes access to programs that support child care, such
74  // as daycare.
75  CHILD_CARE = 1;
76
77  // The job includes dental services covered by a dental
78  // insurance plan.
79  DENTAL = 2;
80
81  // The job offers specific benefits to domestic partners.
82  DOMESTIC_PARTNER = 3;
83
84  // The job allows for a flexible work schedule.
85  FLEXIBLE_HOURS = 4;
86
87  // The job includes health services covered by a medical insurance plan.
88  MEDICAL = 5;
89
90  // The job includes a life insurance plan provided by the employer or
91  // available for purchase by the employee.
92  LIFE_INSURANCE = 6;
93
94  // The job allows for a leave of absence to a parent to care for a newborn
95  // child.
96  PARENTAL_LEAVE = 7;
97
98  // The job includes a workplace retirement plan provided by the
99  // employer or available for purchase by the employee.
100  RETIREMENT_PLAN = 8;
101
102  // The job allows for paid time off due to illness.
103  SICK_DAYS = 9;
104
105  // The job includes paid time off for vacation.
106  VACATION = 10;
107
108  // The job includes vision services covered by a vision
109  // insurance plan.
110  VISION = 11;
111}
112
113// Educational degree level defined in International Standard Classification
114// of Education (ISCED).
115enum DegreeType {
116  // Default value. Represents no degree, or early childhood education.
117  // Maps to ISCED code 0.
118  // Ex) Kindergarten
119  DEGREE_TYPE_UNSPECIFIED = 0;
120
121  // Primary education which is typically the first stage of compulsory
122  // education. ISCED code 1.
123  // Ex) Elementary school
124  PRIMARY_EDUCATION = 1;
125
126  // Lower secondary education; First stage of secondary education building on
127  // primary education, typically with a more subject-oriented curriculum.
128  // ISCED code 2.
129  // Ex) Middle school
130  LOWER_SECONDARY_EDUCATION = 2;
131
132  // Middle education; Second/final stage of secondary education preparing for
133  // tertiary education and/or providing skills relevant to employment.
134  // Usually with an increased range of subject options and streams. ISCED
135  // code 3.
136  // Ex) High school
137  UPPER_SECONDARY_EDUCATION = 3;
138
139  // Adult Remedial Education; Programmes providing learning experiences that
140  // build on secondary education and prepare for labour market entry and/or
141  // tertiary education. The content is broader than secondary but not as
142  // complex as tertiary education. ISCED code 4.
143  ADULT_REMEDIAL_EDUCATION = 4;
144
145  // Associate's or equivalent; Short first tertiary programmes that are
146  // typically practically-based, occupationally-specific and prepare for
147  // labour market entry. These programmes may also provide a pathway to other
148  // tertiary programmes. ISCED code 5.
149  ASSOCIATES_OR_EQUIVALENT = 5;
150
151  // Bachelor's or equivalent; Programmes designed to provide intermediate
152  // academic and/or professional knowledge, skills and competencies leading
153  // to a first tertiary degree or equivalent qualification. ISCED code 6.
154  BACHELORS_OR_EQUIVALENT = 6;
155
156  // Master's or equivalent; Programmes designed to provide advanced academic
157  // and/or professional knowledge, skills and competencies leading to a
158  // second tertiary degree or equivalent qualification. ISCED code 7.
159  MASTERS_OR_EQUIVALENT = 7;
160
161  // Doctoral or equivalent; Programmes designed primarily to lead to an
162  // advanced research qualification, usually concluding with the submission
163  // and defense of a substantive dissertation of publishable quality based on
164  // original research. ISCED code 8.
165  DOCTORAL_OR_EQUIVALENT = 8;
166}
167
168// An enum that represents the employment type of a job.
169enum EmploymentType {
170  // The default value if the employment type isn't specified.
171  EMPLOYMENT_TYPE_UNSPECIFIED = 0;
172
173  // The job requires working a number of hours that constitute full
174  // time employment, typically 40 or more hours per week.
175  FULL_TIME = 1;
176
177  // The job entails working fewer hours than a full time job,
178  // typically less than 40 hours a week.
179  PART_TIME = 2;
180
181  // The job is offered as a contracted, as opposed to a salaried employee,
182  // position.
183  CONTRACTOR = 3;
184
185  // The job is offered as a contracted position with the understanding
186  // that it's converted into a full-time position at the end of the
187  // contract. Jobs of this type are also returned by a search for
188  // [EmploymentType.CONTRACTOR][google.cloud.talent.v4beta1.EmploymentType.CONTRACTOR]
189  // jobs.
190  CONTRACT_TO_HIRE = 4;
191
192  // The job is offered as a temporary employment opportunity, usually
193  // a short-term engagement.
194  TEMPORARY = 5;
195
196  // The job is a fixed-term opportunity for students or entry-level job
197  // seekers to obtain on-the-job training, typically offered as a summer
198  // position.
199  INTERN = 6;
200
201  // The is an opportunity for an individual to volunteer, where there's no
202  // expectation of compensation for the provided services.
203  VOLUNTEER = 7;
204
205  // The job requires an employee to work on an as-needed basis with a
206  // flexible schedule.
207  PER_DIEM = 8;
208
209  // The job involves employing people in remote areas and flying them
210  // temporarily to the work site instead of relocating employees and their
211  // families permanently.
212  FLY_IN_FLY_OUT = 9;
213
214  // The job does not fit any of the other listed types.
215  OTHER_EMPLOYMENT_TYPE = 10;
216}
217
218// An enum that represents the required experience level required for the job.
219enum JobLevel {
220  // The default value if the level isn't specified.
221  JOB_LEVEL_UNSPECIFIED = 0;
222
223  // Entry-level individual contributors, typically with less than 2 years of
224  // experience in a similar role. Includes interns.
225  ENTRY_LEVEL = 1;
226
227  // Experienced individual contributors, typically with 2+ years of
228  // experience in a similar role.
229  EXPERIENCED = 2;
230
231  // Entry- to mid-level managers responsible for managing a team of people.
232  MANAGER = 3;
233
234  // Senior-level managers responsible for managing teams of managers.
235  DIRECTOR = 4;
236
237  // Executive-level managers and above, including C-level positions.
238  EXECUTIVE = 5;
239}
240
241// An enum that represents the categorization or primary focus of specific
242// role. This value is different than the "industry" associated with a role,
243// which is related to the categorization of the company listing the job.
244enum JobCategory {
245  // The default value if the category isn't specified.
246  JOB_CATEGORY_UNSPECIFIED = 0;
247
248  // An accounting and finance job, such as an Accountant.
249  ACCOUNTING_AND_FINANCE = 1;
250
251  // An administrative and office job, such as an Administrative Assistant.
252  ADMINISTRATIVE_AND_OFFICE = 2;
253
254  // An advertising and marketing job, such as Marketing Manager.
255  ADVERTISING_AND_MARKETING = 3;
256
257  // An animal care job, such as Veterinarian.
258  ANIMAL_CARE = 4;
259
260  // An art, fashion, or design job, such as Designer.
261  ART_FASHION_AND_DESIGN = 5;
262
263  // A business operations job, such as Business Operations Manager.
264  BUSINESS_OPERATIONS = 6;
265
266  // A cleaning and facilities job, such as Custodial Staff.
267  CLEANING_AND_FACILITIES = 7;
268
269  // A computer and IT job, such as Systems Administrator.
270  COMPUTER_AND_IT = 8;
271
272  // A construction job, such as General Laborer.
273  CONSTRUCTION = 9;
274
275  // A customer service job, such s Cashier.
276  CUSTOMER_SERVICE = 10;
277
278  // An education job, such as School Teacher.
279  EDUCATION = 11;
280
281  // An entertainment and travel job, such as Flight Attendant.
282  ENTERTAINMENT_AND_TRAVEL = 12;
283
284  // A farming or outdoor job, such as Park Ranger.
285  FARMING_AND_OUTDOORS = 13;
286
287  // A healthcare job, such as Registered Nurse.
288  HEALTHCARE = 14;
289
290  // A human resources job, such as Human Resources Director.
291  HUMAN_RESOURCES = 15;
292
293  // An installation, maintenance, or repair job, such as Electrician.
294  INSTALLATION_MAINTENANCE_AND_REPAIR = 16;
295
296  // A legal job, such as Law Clerk.
297  LEGAL = 17;
298
299  // A management job, often used in conjunction with another category,
300  // such as Store Manager.
301  MANAGEMENT = 18;
302
303  // A manufacturing or warehouse job, such as Assembly Technician.
304  MANUFACTURING_AND_WAREHOUSE = 19;
305
306  // A media, communications, or writing job, such as Media Relations.
307  MEDIA_COMMUNICATIONS_AND_WRITING = 20;
308
309  // An oil, gas or mining job, such as Offshore Driller.
310  OIL_GAS_AND_MINING = 21;
311
312  // A personal care and services job, such as Hair Stylist.
313  PERSONAL_CARE_AND_SERVICES = 22;
314
315  // A protective services job, such as Security Guard.
316  PROTECTIVE_SERVICES = 23;
317
318  // A real estate job, such as Buyer's Agent.
319  REAL_ESTATE = 24;
320
321  // A restaurant and hospitality job, such as Restaurant Server.
322  RESTAURANT_AND_HOSPITALITY = 25;
323
324  // A sales and/or retail job, such Sales Associate.
325  SALES_AND_RETAIL = 26;
326
327  // A science and engineering job, such as Lab Technician.
328  SCIENCE_AND_ENGINEERING = 27;
329
330  // A social services or non-profit job, such as Case Worker.
331  SOCIAL_SERVICES_AND_NON_PROFIT = 28;
332
333  // A sports, fitness, or recreation job, such as Personal Trainer.
334  SPORTS_FITNESS_AND_RECREATION = 29;
335
336  // A transportation or logistics job, such as Truck Driver.
337  TRANSPORTATION_AND_LOGISTICS = 30;
338}
339
340// An enum that represents the job posting region. In most cases, job postings
341// don't need to specify a region. If a region is given, jobs are
342// eligible for searches in the specified region.
343enum PostingRegion {
344  // If the region is unspecified, the job is only returned if it
345  // matches the [LocationFilter][google.cloud.talent.v4beta1.LocationFilter].
346  POSTING_REGION_UNSPECIFIED = 0;
347
348  // In addition to exact location matching, job posting is returned when the
349  // [LocationFilter][google.cloud.talent.v4beta1.LocationFilter] in the search
350  // query is in the same administrative area as the returned job posting. For
351  // example, if a `ADMINISTRATIVE_AREA` job is posted in "CA, USA", it's
352  // returned if [LocationFilter][google.cloud.talent.v4beta1.LocationFilter]
353  // has "Mountain View".
354  //
355  // Administrative area refers to top-level administrative subdivision of this
356  // country. For example, US state, IT region, UK constituent nation and
357  // JP prefecture.
358  ADMINISTRATIVE_AREA = 1;
359
360  // In addition to exact location matching, job is returned when
361  // [LocationFilter][google.cloud.talent.v4beta1.LocationFilter] in search
362  // query is in the same country as this job. For example, if a `NATION_WIDE`
363  // job is posted in "USA", it's returned if
364  // [LocationFilter][google.cloud.talent.v4beta1.LocationFilter] has 'Mountain
365  // View'.
366  NATION = 2;
367
368  // Job allows employees to work remotely (telecommute).
369  // If locations are provided with this value, the job is
370  // considered as having a location, but telecommuting is allowed.
371  TELECOMMUTE = 3;
372}
373
374// Deprecated. All resources are only visible to the owner.
375//
376// An enum that represents who has view access to the resource.
377enum Visibility {
378  option deprecated = true;
379
380  // Default value.
381  VISIBILITY_UNSPECIFIED = 0;
382
383  // The resource is only visible to the GCP account who owns it.
384  ACCOUNT_ONLY = 1;
385
386  // The resource is visible to the owner and may be visible to other
387  // applications and processes at Google.
388  SHARED_WITH_GOOGLE = 2;
389
390  // The resource is visible to the owner and may be visible to all other API
391  // clients.
392  SHARED_WITH_PUBLIC = 3;
393}
394
395// Option for HTML content sanitization on user input fields, for example, job
396// description. By setting this option, user can determine whether and how
397// sanitization is performed on these fields.
398enum HtmlSanitization {
399  // Default value.
400  HTML_SANITIZATION_UNSPECIFIED = 0;
401
402  // Disables sanitization on HTML input.
403  HTML_SANITIZATION_DISABLED = 1;
404
405  // Sanitizes HTML input, only accepts bold, italic, ordered list, and
406  // unordered list markup tags.
407  SIMPLE_FORMATTING_ONLY = 2;
408}
409
410// Method for commute.
411enum CommuteMethod {
412  // Commute method isn't specified.
413  COMMUTE_METHOD_UNSPECIFIED = 0;
414
415  // Commute time is calculated based on driving time.
416  DRIVING = 1;
417
418  // Commute time is calculated based on public transit including bus, metro,
419  // subway, and so on.
420  TRANSIT = 2;
421
422  // Commute time is calculated based on walking time.
423  WALKING = 3;
424
425  // Commute time is calculated based on biking time.
426  CYCLING = 4;
427}
428
429// A resource that represents a location with full geographic information.
430message Location {
431  // An enum which represents the type of a location.
432  enum LocationType {
433    // Default value if the type isn't specified.
434    LOCATION_TYPE_UNSPECIFIED = 0;
435
436    // A country level location.
437    COUNTRY = 1;
438
439    // A state or equivalent level location.
440    ADMINISTRATIVE_AREA = 2;
441
442    // A county or equivalent level location.
443    SUB_ADMINISTRATIVE_AREA = 3;
444
445    // A city or equivalent level location.
446    LOCALITY = 4;
447
448    // A postal code level location.
449    POSTAL_CODE = 5;
450
451    // A sublocality is a subdivision of a locality, for example a city borough,
452    // ward, or arrondissement. Sublocalities are usually recognized by a local
453    // political authority. For example, Manhattan and Brooklyn are recognized
454    // as boroughs by the City of New York, and are therefore modeled as
455    // sublocalities.
456    SUB_LOCALITY = 6;
457
458    // A district or equivalent level location.
459    SUB_LOCALITY_1 = 7;
460
461    // A smaller district or equivalent level display.
462    SUB_LOCALITY_2 = 8;
463
464    // A neighborhood level location.
465    NEIGHBORHOOD = 9;
466
467    // A street address level location.
468    STREET_ADDRESS = 10;
469  }
470
471  // The type of a location, which corresponds to the address lines field of
472  // [google.type.PostalAddress][google.type.PostalAddress]. For example,
473  // "Downtown, Atlanta, GA, USA" has a type of
474  // [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
475  // and "Kansas City, KS, USA" has a type of
476  // [LocationType.LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.LOCALITY].
477  LocationType location_type = 1;
478
479  // Postal address of the location that includes human readable information,
480  // such as postal delivery and payments addresses. Given a postal address,
481  // a postal service can deliver items to a premises, P.O. Box, or other
482  // delivery location.
483  google.type.PostalAddress postal_address = 2;
484
485  // An object representing a latitude/longitude pair.
486  google.type.LatLng lat_lng = 3;
487
488  // Radius in miles of the job location. This value is derived from the
489  // location bounding box in which a circle with the specified radius
490  // centered from [google.type.LatLng][google.type.LatLng] covers the area
491  // associated with the job location. For example, currently, "Mountain View,
492  // CA, USA" has a radius of 6.17 miles.
493  double radius_miles = 4;
494}
495
496// Meta information related to the job searcher or entity
497// conducting the job search. This information is used to improve the
498// performance of the service.
499message RequestMetadata {
500  // Required if
501  // [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids]
502  // is unset or `false`.
503  //
504  // The client-defined scope or source of the service call, which typically
505  // is the domain on
506  // which the service has been implemented and is currently being run.
507  //
508  // For example, if the service is being run by client <em>Foo, Inc.</em>, on
509  // job board www.foo.com and career site www.bar.com, then this field is
510  // set to "foo.com" for use on the job board, and "bar.com" for use on the
511  // career site.
512  //
513  // Note that any improvements to the model for a particular tenant site rely
514  // on this field being set correctly to a unique domain.
515  //
516  // The maximum number of allowed characters is 255.
517  string domain = 1;
518
519  // Required if
520  // [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids]
521  // is unset or `false`.
522  //
523  // A unique session identification string. A session is defined as the
524  // duration of an end user's interaction with the service over a certain
525  // period.
526  // Obfuscate this field for privacy concerns before
527  // providing it to the service.
528  //
529  // Note that any improvements to the model for a particular tenant site rely
530  // on this field being set correctly to a unique session ID.
531  //
532  // The maximum number of allowed characters is 255.
533  string session_id = 2;
534
535  // Required if
536  // [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids]
537  // is unset or `false`.
538  //
539  // A unique user identification string, as determined by the client.
540  // To have the strongest positive impact on search quality
541  // make sure the client-level is unique.
542  // Obfuscate this field for privacy concerns before
543  // providing it to the service.
544  //
545  // Note that any improvements to the model for a particular tenant site rely
546  // on this field being set correctly to a unique user ID.
547  //
548  // The maximum number of allowed characters is 255.
549  string user_id = 3;
550
551  // Only set when any of
552  // [domain][google.cloud.talent.v4beta1.RequestMetadata.domain],
553  // [session_id][google.cloud.talent.v4beta1.RequestMetadata.session_id] and
554  // [user_id][google.cloud.talent.v4beta1.RequestMetadata.user_id] isn't
555  // available for some reason. It is highly recommended not to set this field
556  // and provide accurate
557  // [domain][google.cloud.talent.v4beta1.RequestMetadata.domain],
558  // [session_id][google.cloud.talent.v4beta1.RequestMetadata.session_id] and
559  // [user_id][google.cloud.talent.v4beta1.RequestMetadata.user_id] for the best
560  // service experience.
561  bool allow_missing_ids = 4;
562
563  // The type of device used by the job seeker at the time of the call to the
564  // service.
565  DeviceInfo device_info = 5;
566}
567
568// Additional information returned to client, such as debugging information.
569message ResponseMetadata {
570  // A unique id associated with this call.
571  // This id is logged for tracking purposes.
572  string request_id = 1;
573}
574
575// Device information collected from the job seeker, candidate, or
576// other entity conducting the job search. Providing this information improves
577// the quality of the search results across devices.
578message DeviceInfo {
579  // An enumeration describing an API access portal and exposure mechanism.
580  enum DeviceType {
581    // The device type isn't specified.
582    DEVICE_TYPE_UNSPECIFIED = 0;
583
584    // A desktop web browser, such as, Chrome, Firefox, Safari, or Internet
585    // Explorer)
586    WEB = 1;
587
588    // A mobile device web browser, such as a phone or tablet with a Chrome
589    // browser.
590    MOBILE_WEB = 2;
591
592    // An Android device native application.
593    ANDROID = 3;
594
595    // An iOS device native application.
596    IOS = 4;
597
598    // A bot, as opposed to a device operated by human beings, such as a web
599    // crawler.
600    BOT = 5;
601
602    // Other devices types.
603    OTHER = 6;
604  }
605
606  // Type of the device.
607  DeviceType device_type = 1;
608
609  // A device-specific ID. The ID must be a unique identifier that
610  // distinguishes the device from other devices.
611  string id = 2;
612}
613
614// Custom attribute values that are either filterable or non-filterable.
615message CustomAttribute {
616  // Exactly one of
617  // [string_values][google.cloud.talent.v4beta1.CustomAttribute.string_values]
618  // or [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values]
619  // must be specified.
620  //
621  // This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or
622  // `CASE_INSENSITIVE_MATCH`) search.
623  // For filterable `string_value`s, a maximum total number of 200 values
624  // is allowed, with each `string_value` has a byte size of no more than
625  // 500B. For unfilterable `string_values`, the maximum total byte size of
626  // unfilterable `string_values` is 50KB.
627  //
628  // Empty string isn't allowed.
629  repeated string string_values = 1;
630
631  // Exactly one of
632  // [string_values][google.cloud.talent.v4beta1.CustomAttribute.string_values]
633  // or [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values]
634  // must be specified.
635  //
636  // This field is used to perform number range search.
637  // (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`.
638  //
639  // Currently at most 1
640  // [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values] is
641  // supported.
642  repeated int64 long_values = 2;
643
644  // If the `filterable` flag is true, the custom field values may be used for
645  // custom attribute filters
646  // [JobQuery.custom_attribute_filter][google.cloud.talent.v4beta1.JobQuery.custom_attribute_filter].
647  // If false, these values may not be used for custom attribute filters.
648  //
649  // Default is false.
650  bool filterable = 3;
651
652  // If the `keyword_searchable` flag is true, the keywords in custom fields are
653  // searchable by keyword match.
654  // If false, the values are not searchable by keyword match.
655  //
656  // Default is false.
657  bool keyword_searchable = 4;
658}
659
660// Spell check result.
661message SpellingCorrection {
662  // Indicates if the query was corrected by the spell checker.
663  bool corrected = 1;
664
665  // Correction output consisting of the corrected keyword string.
666  string corrected_text = 2;
667
668  // Corrected output with html tags to highlight the corrected words.
669  // Corrected words are called out with the "<b><i>...</i></b>" html tags.
670  //
671  // For example, the user input query is "software enginear", where the second
672  // word, "enginear," is incorrect. It should be "engineer". When spelling
673  // correction is enabled, this value is
674  // "software <b><i>engineer</i></b>".
675  string corrected_html = 3;
676}
677
678// Job compensation details.
679message CompensationInfo {
680  // A compensation entry that represents one component of compensation, such
681  // as base pay, bonus, or other compensation type.
682  //
683  // Annualization: One compensation entry can be annualized if
684  // - it contains valid
685  // [amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount]
686  // or
687  // [range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range].
688  // - and its
689  // [expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year]
690  // is set or can be derived. Its annualized range is determined as
691  // ([amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount]
692  // or
693  // [range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range])
694  // times
695  // [expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year].
696  message CompensationEntry {
697    // Compensation type.
698    //
699    // Default is
700    // [CompensationType.COMPENSATION_TYPE_UNSPECIFIED][google.cloud.talent.v4beta1.CompensationInfo.CompensationType.COMPENSATION_TYPE_UNSPECIFIED].
701    CompensationType type = 1;
702
703    // Frequency of the specified amount.
704    //
705    // Default is
706    // [CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED].
707    CompensationUnit unit = 2;
708
709    // Compensation amount. It could be a fixed amount or a floating range.
710    oneof compensation_amount {
711      // Compensation amount.
712      google.type.Money amount = 3;
713
714      // Compensation range.
715      CompensationRange range = 4;
716    }
717
718    // Compensation description.  For example, could
719    // indicate equity terms or provide additional context to an estimated
720    // bonus.
721    string description = 5;
722
723    // Expected number of units paid each year. If not specified, when
724    // [Job.employment_types][google.cloud.talent.v4beta1.Job.employment_types]
725    // is FULLTIME, a default value is inferred based on
726    // [unit][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.unit].
727    // Default values:
728    // - HOURLY: 2080
729    // - DAILY: 260
730    // - WEEKLY: 52
731    // - MONTHLY: 12
732    // - ANNUAL: 1
733    google.protobuf.DoubleValue expected_units_per_year = 6;
734  }
735
736  // The type of compensation.
737  //
738  // For compensation amounts specified in non-monetary amounts,
739  // describe the compensation scheme in the
740  // [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description].
741  //
742  // For example, tipping format is described in
743  // [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description]
744  // (for example, "expect 15-20% tips based on customer bill.") and an estimate
745  // of the tips provided in
746  // [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount]
747  // or
748  // [CompensationEntry.range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range]
749  // ($10 per hour).
750  //
751  // For example, equity is described in
752  // [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description]
753  // (for example, "1% - 2% equity vesting over 4 years, 1 year cliff") and
754  // value estimated in
755  // [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount]
756  // or
757  // [CompensationEntry.range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range].
758  // If no value estimate is possible, units are
759  // [CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED]
760  // and then further clarified in
761  // [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description]
762  // field.
763  enum CompensationType {
764    // Default value.
765    COMPENSATION_TYPE_UNSPECIFIED = 0;
766
767    // Base compensation: Refers to the fixed amount of money paid to an
768    // employee by an employer in return for work performed. Base compensation
769    // does not include benefits, bonuses or any other potential compensation
770    // from an employer.
771    BASE = 1;
772
773    // Bonus.
774    BONUS = 2;
775
776    // Signing bonus.
777    SIGNING_BONUS = 3;
778
779    // Equity.
780    EQUITY = 4;
781
782    // Profit sharing.
783    PROFIT_SHARING = 5;
784
785    // Commission.
786    COMMISSIONS = 6;
787
788    // Tips.
789    TIPS = 7;
790
791    // Other compensation type.
792    OTHER_COMPENSATION_TYPE = 8;
793  }
794
795  // Pay frequency.
796  enum CompensationUnit {
797    // Default value.
798    COMPENSATION_UNIT_UNSPECIFIED = 0;
799
800    // Hourly.
801    HOURLY = 1;
802
803    // Daily.
804    DAILY = 2;
805
806    // Weekly
807    WEEKLY = 3;
808
809    // Monthly.
810    MONTHLY = 4;
811
812    // Yearly.
813    YEARLY = 5;
814
815    // One time.
816    ONE_TIME = 6;
817
818    // Other compensation units.
819    OTHER_COMPENSATION_UNIT = 7;
820  }
821
822  // Compensation range.
823  message CompensationRange {
824    // The maximum amount of compensation. If left empty, the value is set
825    // to a maximal compensation value and the currency code is set to
826    // match the [currency code][google.type.Money.currency_code] of
827    // min_compensation.
828    google.type.Money max_compensation = 2;
829
830    // The minimum amount of compensation. If left empty, the value is set
831    // to zero and the currency code is set to match the
832    // [currency code][google.type.Money.currency_code] of max_compensation.
833    google.type.Money min_compensation = 1;
834  }
835
836  // Job compensation information.
837  //
838  // At most one entry can be of type
839  // [CompensationInfo.CompensationType.BASE][google.cloud.talent.v4beta1.CompensationInfo.CompensationType.BASE],
840  // which is referred as **base compensation entry** for the job.
841  repeated CompensationEntry entries = 1;
842
843  // Output only. Annualized base compensation range. Computed as base
844  // compensation entry's
845  // [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount]
846  // times
847  // [CompensationEntry.expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year].
848  //
849  // See
850  // [CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry]
851  // for explanation on compensation annualization.
852  CompensationRange annualized_base_compensation_range = 2
853      [(google.api.field_behavior) = OUTPUT_ONLY];
854
855  // Output only. Annualized total compensation range. Computed as all
856  // compensation entries'
857  // [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount]
858  // times
859  // [CompensationEntry.expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year].
860  //
861  // See
862  // [CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry]
863  // for explanation on compensation annualization.
864  CompensationRange annualized_total_compensation_range = 3
865      [(google.api.field_behavior) = OUTPUT_ONLY];
866}
867
868// Metadata used for long running operations returned by CTS batch APIs.
869// It's used to replace
870// [google.longrunning.Operation.metadata][google.longrunning.Operation.metadata].
871message BatchOperationMetadata {
872  enum State {
873    // Default value.
874    STATE_UNSPECIFIED = 0;
875
876    // The batch operation is being prepared for processing.
877    INITIALIZING = 1;
878
879    // The batch operation is actively being processed.
880    PROCESSING = 2;
881
882    // The batch operation is processed, and at least one item has been
883    // successfully processed.
884    SUCCEEDED = 3;
885
886    // The batch operation is done and no item has been successfully processed.
887    FAILED = 4;
888
889    // The batch operation is in the process of cancelling after
890    // [google.longrunning.Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
891    // is called.
892    CANCELLING = 5;
893
894    // The batch operation is done after
895    // [google.longrunning.Operations.CancelOperation][google.longrunning.Operations.CancelOperation]
896    // is called. Any items processed before cancelling are returned in the
897    // response.
898    CANCELLED = 6;
899  }
900
901  // The state of a long running operation.
902  State state = 1;
903
904  // More detailed information about operation state.
905  string state_description = 2;
906
907  // Count of successful item(s) inside an operation.
908  int32 success_count = 3;
909
910  // Count of failed item(s) inside an operation.
911  int32 failure_count = 4;
912
913  // Count of total item(s) inside an operation.
914  int32 total_count = 5;
915
916  // The time when the batch operation is created.
917  google.protobuf.Timestamp create_time = 6;
918
919  // The time when the batch operation status is updated. The metadata and the
920  // [update_time][google.cloud.talent.v4beta1.BatchOperationMetadata.update_time]
921  // is refreshed every minute otherwise cached data is returned.
922  google.protobuf.Timestamp update_time = 7;
923
924  // The time when the batch operation is finished and
925  // [google.longrunning.Operation.done][google.longrunning.Operation.done] is
926  // set to `true`.
927  google.protobuf.Timestamp end_time = 8;
928}
929