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.v4; 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/apiv4/talentpb;talentpb"; 27option java_multiple_files = true; 28option java_outer_classname = "CommonProto"; 29option java_package = "com.google.cloud.talent.v4"; 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.v4.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.v4.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.v4.LocationFilter] in the search query 350 // 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.v4.LocationFilter] has 353 // "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.v4.LocationFilter] in search query is 362 // in the same country as this job. For example, if a `NATION_WIDE` job is 363 // posted in "USA", it's returned if 364 // [LocationFilter][google.cloud.talent.v4.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. Walking, biking and wheelchair accessible transit is 411// still in the Preview stage. 412enum CommuteMethod { 413 // Commute method isn't specified. 414 COMMUTE_METHOD_UNSPECIFIED = 0; 415 416 // Commute time is calculated based on driving time. 417 DRIVING = 1; 418 419 // Commute time is calculated based on public transit including bus, metro, 420 // subway, and so on. 421 TRANSIT = 2; 422 423 // Commute time is calculated based on walking time. 424 WALKING = 3; 425 426 // Commute time is calculated based on biking time. 427 CYCLING = 4; 428 429 // Commute time is calculated based on public transit that is wheelchair 430 // accessible. 431 TRANSIT_ACCESSIBLE = 5; 432} 433 434// A resource that represents a location with full geographic information. 435message Location { 436 // An enum which represents the type of a location. 437 enum LocationType { 438 // Default value if the type isn't specified. 439 LOCATION_TYPE_UNSPECIFIED = 0; 440 441 // A country level location. 442 COUNTRY = 1; 443 444 // A state or equivalent level location. 445 ADMINISTRATIVE_AREA = 2; 446 447 // A county or equivalent level location. 448 SUB_ADMINISTRATIVE_AREA = 3; 449 450 // A city or equivalent level location. 451 LOCALITY = 4; 452 453 // A postal code level location. 454 POSTAL_CODE = 5; 455 456 // A sublocality is a subdivision of a locality, for example a city borough, 457 // ward, or arrondissement. Sublocalities are usually recognized by a local 458 // political authority. For example, Manhattan and Brooklyn are recognized 459 // as boroughs by the City of New York, and are therefore modeled as 460 // sublocalities. 461 SUB_LOCALITY = 6; 462 463 // A district or equivalent level location. 464 SUB_LOCALITY_1 = 7; 465 466 // A smaller district or equivalent level display. 467 SUB_LOCALITY_2 = 8; 468 469 // A neighborhood level location. 470 NEIGHBORHOOD = 9; 471 472 // A street address level location. 473 STREET_ADDRESS = 10; 474 } 475 476 // The type of a location, which corresponds to the address lines field of 477 // [google.type.PostalAddress][google.type.PostalAddress]. For example, 478 // "Downtown, Atlanta, GA, USA" has a type of 479 // [LocationType.NEIGHBORHOOD][google.cloud.talent.v4.Location.LocationType.NEIGHBORHOOD], 480 // and "Kansas City, KS, USA" has a type of 481 // [LocationType.LOCALITY][google.cloud.talent.v4.Location.LocationType.LOCALITY]. 482 LocationType location_type = 1; 483 484 // Postal address of the location that includes human readable information, 485 // such as postal delivery and payments addresses. Given a postal address, 486 // a postal service can deliver items to a premises, P.O. Box, or other 487 // delivery location. 488 google.type.PostalAddress postal_address = 2; 489 490 // An object representing a latitude/longitude pair. 491 google.type.LatLng lat_lng = 3; 492 493 // Radius in miles of the job location. This value is derived from the 494 // location bounding box in which a circle with the specified radius 495 // centered from [google.type.LatLng][google.type.LatLng] covers the area 496 // associated with the job location. For example, currently, "Mountain View, 497 // CA, USA" has a radius of 6.17 miles. 498 double radius_miles = 4; 499} 500 501// Meta information related to the job searcher or entity 502// conducting the job search. This information is used to improve the 503// performance of the service. 504message RequestMetadata { 505 // Required if 506 // [allow_missing_ids][google.cloud.talent.v4.RequestMetadata.allow_missing_ids] 507 // is unset or `false`. 508 // 509 // The client-defined scope or source of the service call, which typically 510 // is the domain on 511 // which the service has been implemented and is currently being run. 512 // 513 // For example, if the service is being run by client <em>Foo, Inc.</em>, on 514 // job board www.foo.com and career site www.bar.com, then this field is 515 // set to "foo.com" for use on the job board, and "bar.com" for use on the 516 // career site. 517 // 518 // Note that any improvements to the model for a particular tenant site rely 519 // on this field being set correctly to a unique domain. 520 // 521 // The maximum number of allowed characters is 255. 522 string domain = 1; 523 524 // Required if 525 // [allow_missing_ids][google.cloud.talent.v4.RequestMetadata.allow_missing_ids] 526 // is unset or `false`. 527 // 528 // A unique session identification string. A session is defined as the 529 // duration of an end user's interaction with the service over a certain 530 // period. 531 // Obfuscate this field for privacy concerns before 532 // providing it to the service. 533 // 534 // Note that any improvements to the model for a particular tenant site rely 535 // on this field being set correctly to a unique session ID. 536 // 537 // The maximum number of allowed characters is 255. 538 string session_id = 2; 539 540 // Required if 541 // [allow_missing_ids][google.cloud.talent.v4.RequestMetadata.allow_missing_ids] 542 // is unset or `false`. 543 // 544 // A unique user identification string, as determined by the client. 545 // To have the strongest positive impact on search quality 546 // make sure the client-level is unique. 547 // Obfuscate this field for privacy concerns before 548 // providing it to the service. 549 // 550 // Note that any improvements to the model for a particular tenant site rely 551 // on this field being set correctly to a unique user ID. 552 // 553 // The maximum number of allowed characters is 255. 554 string user_id = 3; 555 556 // Only set when any of 557 // [domain][google.cloud.talent.v4.RequestMetadata.domain], 558 // [session_id][google.cloud.talent.v4.RequestMetadata.session_id] and 559 // [user_id][google.cloud.talent.v4.RequestMetadata.user_id] isn't available 560 // for some reason. It is highly recommended not to set this field and provide 561 // accurate [domain][google.cloud.talent.v4.RequestMetadata.domain], 562 // [session_id][google.cloud.talent.v4.RequestMetadata.session_id] and 563 // [user_id][google.cloud.talent.v4.RequestMetadata.user_id] for the best 564 // service experience. 565 bool allow_missing_ids = 4; 566 567 // The type of device used by the job seeker at the time of the call to the 568 // service. 569 DeviceInfo device_info = 5; 570} 571 572// Additional information returned to client, such as debugging information. 573message ResponseMetadata { 574 // A unique id associated with this call. 575 // This id is logged for tracking purposes. 576 string request_id = 1; 577} 578 579// Device information collected from the job seeker, candidate, or 580// other entity conducting the job search. Providing this information improves 581// the quality of the search results across devices. 582message DeviceInfo { 583 // An enumeration describing an API access portal and exposure mechanism. 584 enum DeviceType { 585 // The device type isn't specified. 586 DEVICE_TYPE_UNSPECIFIED = 0; 587 588 // A desktop web browser, such as, Chrome, Firefox, Safari, or Internet 589 // Explorer) 590 WEB = 1; 591 592 // A mobile device web browser, such as a phone or tablet with a Chrome 593 // browser. 594 MOBILE_WEB = 2; 595 596 // An Android device native application. 597 ANDROID = 3; 598 599 // An iOS device native application. 600 IOS = 4; 601 602 // A bot, as opposed to a device operated by human beings, such as a web 603 // crawler. 604 BOT = 5; 605 606 // Other devices types. 607 OTHER = 6; 608 } 609 610 // Type of the device. 611 DeviceType device_type = 1; 612 613 // A device-specific ID. The ID must be a unique identifier that 614 // distinguishes the device from other devices. 615 string id = 2; 616} 617 618// Custom attribute values that are either filterable or non-filterable. 619message CustomAttribute { 620 // Exactly one of 621 // [string_values][google.cloud.talent.v4.CustomAttribute.string_values] or 622 // [long_values][google.cloud.talent.v4.CustomAttribute.long_values] must be 623 // specified. 624 // 625 // This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or 626 // `CASE_INSENSITIVE_MATCH`) search. 627 // For filterable `string_value`s, a maximum total number of 200 values 628 // is allowed, with each `string_value` has a byte size of no more than 629 // 500B. For unfilterable `string_values`, the maximum total byte size of 630 // unfilterable `string_values` is 50KB. 631 // 632 // Empty string isn't allowed. 633 repeated string string_values = 1; 634 635 // Exactly one of 636 // [string_values][google.cloud.talent.v4.CustomAttribute.string_values] or 637 // [long_values][google.cloud.talent.v4.CustomAttribute.long_values] must be 638 // specified. 639 // 640 // This field is used to perform number range search. 641 // (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. 642 // 643 // Currently at most 1 644 // [long_values][google.cloud.talent.v4.CustomAttribute.long_values] is 645 // supported. 646 repeated int64 long_values = 2; 647 648 // If the `filterable` flag is true, the custom field values may be used for 649 // custom attribute filters 650 // [JobQuery.custom_attribute_filter][google.cloud.talent.v4.JobQuery.custom_attribute_filter]. 651 // If false, these values may not be used for custom attribute filters. 652 // 653 // Default is false. 654 bool filterable = 3; 655 656 // If the `keyword_searchable` flag is true, the keywords in custom fields are 657 // searchable by keyword match. 658 // If false, the values are not searchable by keyword match. 659 // 660 // Default is false. 661 bool keyword_searchable = 4; 662} 663 664// Spell check result. 665message SpellingCorrection { 666 // Indicates if the query was corrected by the spell checker. 667 bool corrected = 1; 668 669 // Correction output consisting of the corrected keyword string. 670 string corrected_text = 2; 671 672 // Corrected output with html tags to highlight the corrected words. 673 // Corrected words are called out with the "<b><i>...</i></b>" html tags. 674 // 675 // For example, the user input query is "software enginear", where the second 676 // word, "enginear," is incorrect. It should be "engineer". When spelling 677 // correction is enabled, this value is 678 // "software <b><i>engineer</i></b>". 679 string corrected_html = 3; 680} 681 682// Job compensation details. 683message CompensationInfo { 684 // A compensation entry that represents one component of compensation, such 685 // as base pay, bonus, or other compensation type. 686 // 687 // Annualization: One compensation entry can be annualized if 688 // - it contains valid 689 // [amount][google.cloud.talent.v4.CompensationInfo.CompensationEntry.amount] 690 // or 691 // [range][google.cloud.talent.v4.CompensationInfo.CompensationEntry.range]. 692 // - and its 693 // [expected_units_per_year][google.cloud.talent.v4.CompensationInfo.CompensationEntry.expected_units_per_year] 694 // is set or can be derived. Its annualized range is determined as 695 // ([amount][google.cloud.talent.v4.CompensationInfo.CompensationEntry.amount] 696 // or 697 // [range][google.cloud.talent.v4.CompensationInfo.CompensationEntry.range]) 698 // times 699 // [expected_units_per_year][google.cloud.talent.v4.CompensationInfo.CompensationEntry.expected_units_per_year]. 700 message CompensationEntry { 701 // Compensation type. 702 // 703 // Default is 704 // [CompensationType.COMPENSATION_TYPE_UNSPECIFIED][google.cloud.talent.v4.CompensationInfo.CompensationType.COMPENSATION_TYPE_UNSPECIFIED]. 705 CompensationType type = 1; 706 707 // Frequency of the specified amount. 708 // 709 // Default is 710 // [CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED][google.cloud.talent.v4.CompensationInfo.CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED]. 711 CompensationUnit unit = 2; 712 713 // Compensation amount. It could be a fixed amount or a floating range. 714 oneof compensation_amount { 715 // Compensation amount. 716 google.type.Money amount = 3; 717 718 // Compensation range. 719 CompensationRange range = 4; 720 } 721 722 // Compensation description. For example, could 723 // indicate equity terms or provide additional context to an estimated 724 // bonus. 725 string description = 5; 726 727 // Expected number of units paid each year. If not specified, when 728 // [Job.employment_types][google.cloud.talent.v4.Job.employment_types] is 729 // FULLTIME, a default value is inferred based on 730 // [unit][google.cloud.talent.v4.CompensationInfo.CompensationEntry.unit]. 731 // Default values: 732 // - HOURLY: 2080 733 // - DAILY: 260 734 // - WEEKLY: 52 735 // - MONTHLY: 12 736 // - ANNUAL: 1 737 google.protobuf.DoubleValue expected_units_per_year = 6; 738 } 739 740 // The type of compensation. 741 // 742 // For compensation amounts specified in non-monetary amounts, 743 // describe the compensation scheme in the 744 // [CompensationEntry.description][google.cloud.talent.v4.CompensationInfo.CompensationEntry.description]. 745 // 746 // For example, tipping format is described in 747 // [CompensationEntry.description][google.cloud.talent.v4.CompensationInfo.CompensationEntry.description] 748 // (for example, "expect 15-20% tips based on customer bill.") and an estimate 749 // of the tips provided in 750 // [CompensationEntry.amount][google.cloud.talent.v4.CompensationInfo.CompensationEntry.amount] 751 // or 752 // [CompensationEntry.range][google.cloud.talent.v4.CompensationInfo.CompensationEntry.range] 753 // ($10 per hour). 754 // 755 // For example, equity is described in 756 // [CompensationEntry.description][google.cloud.talent.v4.CompensationInfo.CompensationEntry.description] 757 // (for example, "1% - 2% equity vesting over 4 years, 1 year cliff") and 758 // value estimated in 759 // [CompensationEntry.amount][google.cloud.talent.v4.CompensationInfo.CompensationEntry.amount] 760 // or 761 // [CompensationEntry.range][google.cloud.talent.v4.CompensationInfo.CompensationEntry.range]. 762 // If no value estimate is possible, units are 763 // [CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED][google.cloud.talent.v4.CompensationInfo.CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED] 764 // and then further clarified in 765 // [CompensationEntry.description][google.cloud.talent.v4.CompensationInfo.CompensationEntry.description] 766 // field. 767 enum CompensationType { 768 // Default value. 769 COMPENSATION_TYPE_UNSPECIFIED = 0; 770 771 // Base compensation: Refers to the fixed amount of money paid to an 772 // employee by an employer in return for work performed. Base compensation 773 // does not include benefits, bonuses or any other potential compensation 774 // from an employer. 775 BASE = 1; 776 777 // Bonus. 778 BONUS = 2; 779 780 // Signing bonus. 781 SIGNING_BONUS = 3; 782 783 // Equity. 784 EQUITY = 4; 785 786 // Profit sharing. 787 PROFIT_SHARING = 5; 788 789 // Commission. 790 COMMISSIONS = 6; 791 792 // Tips. 793 TIPS = 7; 794 795 // Other compensation type. 796 OTHER_COMPENSATION_TYPE = 8; 797 } 798 799 // Pay frequency. 800 enum CompensationUnit { 801 // Default value. 802 COMPENSATION_UNIT_UNSPECIFIED = 0; 803 804 // Hourly. 805 HOURLY = 1; 806 807 // Daily. 808 DAILY = 2; 809 810 // Weekly 811 WEEKLY = 3; 812 813 // Monthly. 814 MONTHLY = 4; 815 816 // Yearly. 817 YEARLY = 5; 818 819 // One time. 820 ONE_TIME = 6; 821 822 // Other compensation units. 823 OTHER_COMPENSATION_UNIT = 7; 824 } 825 826 // Compensation range. 827 message CompensationRange { 828 // The maximum amount of compensation. If left empty, the value is set 829 // to a maximal compensation value and the currency code is set to 830 // match the [currency code][google.type.Money.currency_code] of 831 // min_compensation. 832 google.type.Money max_compensation = 2; 833 834 // The minimum amount of compensation. If left empty, the value is set 835 // to zero and the currency code is set to match the 836 // [currency code][google.type.Money.currency_code] of max_compensation. 837 google.type.Money min_compensation = 1; 838 } 839 840 // Job compensation information. 841 // 842 // At most one entry can be of type 843 // [CompensationInfo.CompensationType.BASE][google.cloud.talent.v4.CompensationInfo.CompensationType.BASE], 844 // which is referred as **base compensation entry** for the job. 845 repeated CompensationEntry entries = 1; 846 847 // Output only. Annualized base compensation range. Computed as base 848 // compensation entry's 849 // [CompensationEntry.amount][google.cloud.talent.v4.CompensationInfo.CompensationEntry.amount] 850 // times 851 // [CompensationEntry.expected_units_per_year][google.cloud.talent.v4.CompensationInfo.CompensationEntry.expected_units_per_year]. 852 // 853 // See 854 // [CompensationEntry][google.cloud.talent.v4.CompensationInfo.CompensationEntry] 855 // for explanation on compensation annualization. 856 CompensationRange annualized_base_compensation_range = 2 857 [(google.api.field_behavior) = OUTPUT_ONLY]; 858 859 // Output only. Annualized total compensation range. Computed as all 860 // compensation entries' 861 // [CompensationEntry.amount][google.cloud.talent.v4.CompensationInfo.CompensationEntry.amount] 862 // times 863 // [CompensationEntry.expected_units_per_year][google.cloud.talent.v4.CompensationInfo.CompensationEntry.expected_units_per_year]. 864 // 865 // See 866 // [CompensationEntry][google.cloud.talent.v4.CompensationInfo.CompensationEntry] 867 // for explanation on compensation annualization. 868 CompensationRange annualized_total_compensation_range = 3 869 [(google.api.field_behavior) = OUTPUT_ONLY]; 870} 871 872// Metadata used for long running operations returned by CTS batch APIs. 873// It's used to replace 874// [google.longrunning.Operation.metadata][google.longrunning.Operation.metadata]. 875message BatchOperationMetadata { 876 enum State { 877 // Default value. 878 STATE_UNSPECIFIED = 0; 879 880 // The batch operation is being prepared for processing. 881 INITIALIZING = 1; 882 883 // The batch operation is actively being processed. 884 PROCESSING = 2; 885 886 // The batch operation is processed, and at least one item has been 887 // successfully processed. 888 SUCCEEDED = 3; 889 890 // The batch operation is done and no item has been successfully processed. 891 FAILED = 4; 892 893 // The batch operation is in the process of cancelling after 894 // [google.longrunning.Operations.CancelOperation][google.longrunning.Operations.CancelOperation] 895 // is called. 896 CANCELLING = 5; 897 898 // The batch operation is done after 899 // [google.longrunning.Operations.CancelOperation][google.longrunning.Operations.CancelOperation] 900 // is called. Any items processed before cancelling are returned in the 901 // response. 902 CANCELLED = 6; 903 } 904 905 // The state of a long running operation. 906 State state = 1; 907 908 // More detailed information about operation state. 909 string state_description = 2; 910 911 // Count of successful item(s) inside an operation. 912 int32 success_count = 3; 913 914 // Count of failed item(s) inside an operation. 915 int32 failure_count = 4; 916 917 // Count of total item(s) inside an operation. 918 int32 total_count = 5; 919 920 // The time when the batch operation is created. 921 google.protobuf.Timestamp create_time = 6; 922 923 // The time when the batch operation status is updated. The metadata and the 924 // [update_time][google.cloud.talent.v4.BatchOperationMetadata.update_time] is 925 // refreshed every minute otherwise cached data is returned. 926 google.protobuf.Timestamp update_time = 7; 927 928 // The time when the batch operation is finished and 929 // [google.longrunning.Operation.done][google.longrunning.Operation.done] is 930 // set to `true`. 931 google.protobuf.Timestamp end_time = 8; 932} 933