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