// Copyright 2019 Google LLC. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // syntax = "proto3"; package google.cloud.talent.v4beta1; import "google/api/annotations.proto"; import "google/api/field_behavior.proto"; import "google/protobuf/timestamp.proto"; import "google/protobuf/wrappers.proto"; import "google/type/date.proto"; import "google/type/latlng.proto"; import "google/type/money.proto"; import "google/type/postal_address.proto"; import "google/type/timeofday.proto"; option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent"; option java_multiple_files = true; option java_outer_classname = "CommonProto"; option java_package = "com.google.cloud.talent.v4beta1"; option objc_class_prefix = "CTS"; // Message representing a period of time between two timestamps. message TimestampRange { // Begin of the period (inclusive). google.protobuf.Timestamp start_time = 1; // End of the period (exclusive). google.protobuf.Timestamp end_time = 2; } // A resource that represents a location with full geographic information. message Location { // An enum which represents the type of a location. enum LocationType { // Default value if the type isn't specified. LOCATION_TYPE_UNSPECIFIED = 0; // A country level location. COUNTRY = 1; // A state or equivalent level location. ADMINISTRATIVE_AREA = 2; // A county or equivalent level location. SUB_ADMINISTRATIVE_AREA = 3; // A city or equivalent level location. LOCALITY = 4; // A postal code level location. POSTAL_CODE = 5; // A sublocality is a subdivision of a locality, for example a city borough, // ward, or arrondissement. Sublocalities are usually recognized by a local // political authority. For example, Manhattan and Brooklyn are recognized // as boroughs by the City of New York, and are therefore modeled as // sublocalities. SUB_LOCALITY = 6; // A district or equivalent level location. SUB_LOCALITY_1 = 7; // A smaller district or equivalent level display. SUB_LOCALITY_2 = 8; // A neighborhood level location. NEIGHBORHOOD = 9; // A street address level location. STREET_ADDRESS = 10; } // The type of a location, which corresponds to the address lines field of // [google.type.PostalAddress][google.type.PostalAddress]. For example, // "Downtown, Atlanta, GA, USA" has a type of // [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD], // and "Kansas City, KS, USA" has a type of // [LocationType.LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.LOCALITY]. LocationType location_type = 1; // Postal address of the location that includes human readable information, // such as postal delivery and payments addresses. Given a postal address, // a postal service can deliver items to a premises, P.O. Box, or other // delivery location. google.type.PostalAddress postal_address = 2; // An object representing a latitude/longitude pair. google.type.LatLng lat_lng = 3; // Radius in miles of the job location. This value is derived from the // location bounding box in which a circle with the specified radius // centered from [google.type.LatLng][google.type.LatLng] covers the area // associated with the job location. For example, currently, "Mountain View, // CA, USA" has a radius of 6.17 miles. double radius_miles = 4; } // An enum that represents the size of the company. enum CompanySize { // Default value if the size isn't specified. COMPANY_SIZE_UNSPECIFIED = 0; // The company has less than 50 employees. MINI = 1; // The company has between 50 and 99 employees. SMALL = 2; // The company has between 100 and 499 employees. SMEDIUM = 3; // The company has between 500 and 999 employees. MEDIUM = 4; // The company has between 1,000 and 4,999 employees. BIG = 5; // The company has between 5,000 and 9,999 employees. BIGGER = 6; // The company has 10,000 or more employees. GIANT = 7; } // An enum that represents employee benefits included with the job. enum JobBenefit { // Default value if the type isn't specified. JOB_BENEFIT_UNSPECIFIED = 0; // The job includes access to programs that support child care, such // as daycare. CHILD_CARE = 1; // The job includes dental services covered by a dental // insurance plan. DENTAL = 2; // The job offers specific benefits to domestic partners. DOMESTIC_PARTNER = 3; // The job allows for a flexible work schedule. FLEXIBLE_HOURS = 4; // The job includes health services covered by a medical insurance plan. MEDICAL = 5; // The job includes a life insurance plan provided by the employer or // available for purchase by the employee. LIFE_INSURANCE = 6; // The job allows for a leave of absence to a parent to care for a newborn // child. PARENTAL_LEAVE = 7; // The job includes a workplace retirement plan provided by the // employer or available for purchase by the employee. RETIREMENT_PLAN = 8; // The job allows for paid time off due to illness. SICK_DAYS = 9; // The job includes paid time off for vacation. VACATION = 10; // The job includes vision services covered by a vision // insurance plan. VISION = 11; } // Educational degree level defined in International Standard Classification // of Education (ISCED). enum DegreeType { // Default value. Represents no degree, or early childhood education. // Maps to ISCED code 0. // Ex) Kindergarten DEGREE_TYPE_UNSPECIFIED = 0; // Primary education which is typically the first stage of compulsory // education. ISCED code 1. // Ex) Elementary school PRIMARY_EDUCATION = 1; // Lower secondary education; First stage of secondary education building on // primary education, typically with a more subject-oriented curriculum. // ISCED code 2. // Ex) Middle school LOWER_SECONDARY_EDUCATION = 2; // Middle education; Second/final stage of secondary education preparing for // tertiary education and/or providing skills relevant to employment. // Usually with an increased range of subject options and streams. ISCED // code 3. // Ex) High school UPPER_SECONDARY_EDUCATION = 3; // Adult Remedial Education; Programmes providing learning experiences that // build on secondary education and prepare for labour market entry and/or // tertiary education. The content is broader than secondary but not as // complex as tertiary education. ISCED code 4. ADULT_REMEDIAL_EDUCATION = 4; // Associate's or equivalent; Short first tertiary programmes that are // typically practically-based, occupationally-specific and prepare for // labour market entry. These programmes may also provide a pathway to other // tertiary programmes. ISCED code 5. ASSOCIATES_OR_EQUIVALENT = 5; // Bachelor's or equivalent; Programmes designed to provide intermediate // academic and/or professional knowledge, skills and competencies leading // to a first tertiary degree or equivalent qualification. ISCED code 6. BACHELORS_OR_EQUIVALENT = 6; // Master's or equivalent; Programmes designed to provide advanced academic // and/or professional knowledge, skills and competencies leading to a // second tertiary degree or equivalent qualification. ISCED code 7. MASTERS_OR_EQUIVALENT = 7; // Doctoral or equivalent; Programmes designed primarily to lead to an // advanced research qualification, usually concluding with the submission // and defense of a substantive dissertation of publishable quality based on // original research. ISCED code 8. DOCTORAL_OR_EQUIVALENT = 8; } // An enum that represents the employment type of a job. enum EmploymentType { // The default value if the employment type isn't specified. EMPLOYMENT_TYPE_UNSPECIFIED = 0; // The job requires working a number of hours that constitute full // time employment, typically 40 or more hours per week. FULL_TIME = 1; // The job entails working fewer hours than a full time job, // typically less than 40 hours a week. PART_TIME = 2; // The job is offered as a contracted, as opposed to a salaried employee, // position. CONTRACTOR = 3; // The job is offered as a contracted position with the understanding // that it's converted into a full-time position at the end of the // contract. Jobs of this type are also returned by a search for // [EmploymentType.CONTRACTOR][google.cloud.talent.v4beta1.EmploymentType.CONTRACTOR] // jobs. CONTRACT_TO_HIRE = 4; // The job is offered as a temporary employment opportunity, usually // a short-term engagement. TEMPORARY = 5; // The job is a fixed-term opportunity for students or entry-level job // seekers to obtain on-the-job training, typically offered as a summer // position. INTERN = 6; // The is an opportunity for an individual to volunteer, where there's no // expectation of compensation for the provided services. VOLUNTEER = 7; // The job requires an employee to work on an as-needed basis with a // flexible schedule. PER_DIEM = 8; // The job involves employing people in remote areas and flying them // temporarily to the work site instead of relocating employees and their // families permanently. FLY_IN_FLY_OUT = 9; // The job does not fit any of the other listed types. OTHER_EMPLOYMENT_TYPE = 10; } // An enum that represents the required experience level required for the job. enum JobLevel { // The default value if the level isn't specified. JOB_LEVEL_UNSPECIFIED = 0; // Entry-level individual contributors, typically with less than 2 years of // experience in a similar role. Includes interns. ENTRY_LEVEL = 1; // Experienced individual contributors, typically with 2+ years of // experience in a similar role. EXPERIENCED = 2; // Entry- to mid-level managers responsible for managing a team of people. MANAGER = 3; // Senior-level managers responsible for managing teams of managers. DIRECTOR = 4; // Executive-level managers and above, including C-level positions. EXECUTIVE = 5; } // An enum that represents the categorization or primary focus of specific // role. This value is different than the "industry" associated with a role, // which is related to the categorization of the company listing the job. enum JobCategory { // The default value if the category isn't specified. JOB_CATEGORY_UNSPECIFIED = 0; // An accounting and finance job, such as an Accountant. ACCOUNTING_AND_FINANCE = 1; // An administrative and office job, such as an Administrative Assistant. ADMINISTRATIVE_AND_OFFICE = 2; // An advertising and marketing job, such as Marketing Manager. ADVERTISING_AND_MARKETING = 3; // An animal care job, such as Veterinarian. ANIMAL_CARE = 4; // An art, fashion, or design job, such as Designer. ART_FASHION_AND_DESIGN = 5; // A business operations job, such as Business Operations Manager. BUSINESS_OPERATIONS = 6; // A cleaning and facilities job, such as Custodial Staff. CLEANING_AND_FACILITIES = 7; // A computer and IT job, such as Systems Administrator. COMPUTER_AND_IT = 8; // A construction job, such as General Laborer. CONSTRUCTION = 9; // A customer service job, such s Cashier. CUSTOMER_SERVICE = 10; // An education job, such as School Teacher. EDUCATION = 11; // An entertainment and travel job, such as Flight Attendant. ENTERTAINMENT_AND_TRAVEL = 12; // A farming or outdoor job, such as Park Ranger. FARMING_AND_OUTDOORS = 13; // A healthcare job, such as Registered Nurse. HEALTHCARE = 14; // A human resources job, such as Human Resources Director. HUMAN_RESOURCES = 15; // An installation, maintenance, or repair job, such as Electrician. INSTALLATION_MAINTENANCE_AND_REPAIR = 16; // A legal job, such as Law Clerk. LEGAL = 17; // A management job, often used in conjunction with another category, // such as Store Manager. MANAGEMENT = 18; // A manufacturing or warehouse job, such as Assembly Technician. MANUFACTURING_AND_WAREHOUSE = 19; // A media, communications, or writing job, such as Media Relations. MEDIA_COMMUNICATIONS_AND_WRITING = 20; // An oil, gas or mining job, such as Offshore Driller. OIL_GAS_AND_MINING = 21; // A personal care and services job, such as Hair Stylist. PERSONAL_CARE_AND_SERVICES = 22; // A protective services job, such as Security Guard. PROTECTIVE_SERVICES = 23; // A real estate job, such as Buyer's Agent. REAL_ESTATE = 24; // A restaurant and hospitality job, such as Restaurant Server. RESTAURANT_AND_HOSPITALITY = 25; // A sales and/or retail job, such Sales Associate. SALES_AND_RETAIL = 26; // A science and engineering job, such as Lab Technician. SCIENCE_AND_ENGINEERING = 27; // A social services or non-profit job, such as Case Worker. SOCIAL_SERVICES_AND_NON_PROFIT = 28; // A sports, fitness, or recreation job, such as Personal Trainer. SPORTS_FITNESS_AND_RECREATION = 29; // A transportation or logistics job, such as Truck Driver. TRANSPORTATION_AND_LOGISTICS = 30; } // An enum that represents the job posting region. In most cases, job postings // don't need to specify a region. If a region is given, jobs are // eligible for searches in the specified region. enum PostingRegion { // If the region is unspecified, the job is only returned if it // matches the [LocationFilter][google.cloud.talent.v4beta1.LocationFilter]. POSTING_REGION_UNSPECIFIED = 0; // In addition to exact location matching, job posting is returned when the // [LocationFilter][google.cloud.talent.v4beta1.LocationFilter] in the search // query is in the same administrative area as the returned job posting. For // example, if a `ADMINISTRATIVE_AREA` job is posted in "CA, USA", it's // returned if [LocationFilter][google.cloud.talent.v4beta1.LocationFilter] // has "Mountain View". // // Administrative area refers to top-level administrative subdivision of this // country. For example, US state, IT region, UK constituent nation and // JP prefecture. ADMINISTRATIVE_AREA = 1; // In addition to exact location matching, job is returned when // [LocationFilter][google.cloud.talent.v4beta1.LocationFilter] in search // query is in the same country as this job. For example, if a `NATION_WIDE` // job is posted in "USA", it's returned if // [LocationFilter][google.cloud.talent.v4beta1.LocationFilter] has 'Mountain // View'. NATION = 2; // Job allows employees to work remotely (telecommute). // If locations are provided with this value, the job is // considered as having a location, but telecommuting is allowed. TELECOMMUTE = 3; } // Deprecated. All resources are only visible to the owner. // // An enum that represents who has view access to the resource. enum Visibility { option deprecated = true; // Default value. VISIBILITY_UNSPECIFIED = 0; // The resource is only visible to the GCP account who owns it. ACCOUNT_ONLY = 1; // The resource is visible to the owner and may be visible to other // applications and processes at Google. SHARED_WITH_GOOGLE = 2; // The resource is visible to the owner and may be visible to all other API // clients. SHARED_WITH_PUBLIC = 3; } // Enum that represents the usage of the contact information. enum ContactInfoUsage { // Default value. CONTACT_INFO_USAGE_UNSPECIFIED = 0; // Personal use. PERSONAL = 1; // Work use. WORK = 2; // School use. SCHOOL = 3; } // Option for HTML content sanitization on user input fields, for example, job // description. By setting this option, user can determine whether and how // sanitization is performed on these fields. enum HtmlSanitization { // Default value. HTML_SANITIZATION_UNSPECIFIED = 0; // Disables sanitization on HTML input. HTML_SANITIZATION_DISABLED = 1; // Sanitizes HTML input, only accepts bold, italic, ordered list, and // unordered list markup tags. SIMPLE_FORMATTING_ONLY = 2; } // Method for commute. enum CommuteMethod { // Commute method isn't specified. COMMUTE_METHOD_UNSPECIFIED = 0; // Commute time is calculated based on driving time. DRIVING = 1; // Commute time is calculated based on public transit including bus, metro, // subway, and so on. TRANSIT = 2; // Commute time is calculated based on walking time. WALKING = 3; // Commute time is calculated based on biking time. CYCLING = 4; } // Meta information related to the job searcher or entity // conducting the job search. This information is used to improve the // performance of the service. message RequestMetadata { // Required if // [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids] // is unset or `false`. // // The client-defined scope or source of the service call, which typically // is the domain on // which the service has been implemented and is currently being run. // // For example, if the service is being run by client Foo, Inc., on // job board www.foo.com and career site www.bar.com, then this field is // set to "foo.com" for use on the job board, and "bar.com" for use on the // career site. // // Note that any improvements to the model for a particular tenant site rely // on this field being set correctly to a unique domain. // // The maximum number of allowed characters is 255. string domain = 1; // Required if // [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids] // is unset or `false`. // // A unique session identification string. A session is defined as the // duration of an end user's interaction with the service over a certain // period. // Obfuscate this field for privacy concerns before // providing it to the service. // // Note that any improvements to the model for a particular tenant site rely // on this field being set correctly to a unique session ID. // // The maximum number of allowed characters is 255. string session_id = 2; // Required if // [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids] // is unset or `false`. // // A unique user identification string, as determined by the client. // To have the strongest positive impact on search quality // make sure the client-level is unique. // Obfuscate this field for privacy concerns before // providing it to the service. // // Note that any improvements to the model for a particular tenant site rely // on this field being set correctly to a unique user ID. // // The maximum number of allowed characters is 255. string user_id = 3; // Only set when any of // [domain][google.cloud.talent.v4beta1.RequestMetadata.domain], // [session_id][google.cloud.talent.v4beta1.RequestMetadata.session_id] and // [user_id][google.cloud.talent.v4beta1.RequestMetadata.user_id] isn't // available for some reason. It is highly recommended not to set this field // and provide accurate // [domain][google.cloud.talent.v4beta1.RequestMetadata.domain], // [session_id][google.cloud.talent.v4beta1.RequestMetadata.session_id] and // [user_id][google.cloud.talent.v4beta1.RequestMetadata.user_id] for the best // service experience. bool allow_missing_ids = 4; // The type of device used by the job seeker at the time of the call to the // service. DeviceInfo device_info = 5; } // Additional information returned to client, such as debugging information. message ResponseMetadata { // A unique id associated with this call. // This id is logged for tracking purposes. string request_id = 1; } // Device information collected from the job seeker, candidate, or // other entity conducting the job search. Providing this information improves // the quality of the search results across devices. message DeviceInfo { // An enumeration describing an API access portal and exposure mechanism. enum DeviceType { // The device type isn't specified. DEVICE_TYPE_UNSPECIFIED = 0; // A desktop web browser, such as, Chrome, Firefox, Safari, or Internet // Explorer) WEB = 1; // A mobile device web browser, such as a phone or tablet with a Chrome // browser. MOBILE_WEB = 2; // An Android device native application. ANDROID = 3; // An iOS device native application. IOS = 4; // A bot, as opposed to a device operated by human beings, such as a web // crawler. BOT = 5; // Other devices types. OTHER = 6; } // Type of the device. DeviceType device_type = 1; // A device-specific ID. The ID must be a unique identifier that // distinguishes the device from other devices. string id = 2; } // Custom attribute values that are either filterable or non-filterable. message CustomAttribute { // Exactly one of // [string_values][google.cloud.talent.v4beta1.CustomAttribute.string_values] // or [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values] // must be specified. // // This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or // `CASE_INSENSITIVE_MATCH`) search. // For filterable `string_value`s, a maximum total number of 200 values // is allowed, with each `string_value` has a byte size of no more than // 500B. For unfilterable `string_values`, the maximum total byte size of // unfilterable `string_values` is 50KB. // // Empty string isn't allowed. repeated string string_values = 1; // Exactly one of // [string_values][google.cloud.talent.v4beta1.CustomAttribute.string_values] // or [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values] // must be specified. // // This field is used to perform number range search. // (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`. // // Currently at most 1 // [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values] is // supported. repeated int64 long_values = 2; // If the `filterable` flag is true, custom field values are searchable. // If false, values are not searchable. // // Default is false. bool filterable = 3; } // Spell check result. message SpellingCorrection { // Indicates if the query was corrected by the spell checker. bool corrected = 1; // Correction output consisting of the corrected keyword string. string corrected_text = 2; // Corrected output with html tags to highlight the corrected words. // Corrected words are called out with the "..." html tags. // // For example, the user input query is "software enginear", where the second // word, "enginear," is incorrect. It should be "engineer". When spelling // correction is enabled, this value is // "software engineer". string corrected_html = 3; } // Job compensation details. message CompensationInfo { // A compensation entry that represents one component of compensation, such // as base pay, bonus, or other compensation type. // // Annualization: One compensation entry can be annualized if // - it contains valid // [amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] // or // [range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range]. // - and its // [expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year] // is set or can be derived. Its annualized range is determined as // ([amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] // or // [range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range]) // times // [expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year]. message CompensationEntry { // Compensation type. // // Default is // [CompensationType.COMPENSATION_TYPE_UNSPECIFIED][google.cloud.talent.v4beta1.CompensationInfo.CompensationType.COMPENSATION_TYPE_UNSPECIFIED]. CompensationType type = 1; // Frequency of the specified amount. // // Default is // [CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED]. CompensationUnit unit = 2; // Compensation amount. It could be a fixed amount or a floating range. oneof compensation_amount { // Compensation amount. google.type.Money amount = 3; // Compensation range. CompensationRange range = 4; } // Compensation description. For example, could // indicate equity terms or provide additional context to an estimated // bonus. string description = 5; // Expected number of units paid each year. If not specified, when // [Job.employment_types][google.cloud.talent.v4beta1.Job.employment_types] // is FULLTIME, a default value is inferred based on // [unit][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.unit]. // Default values: // - HOURLY: 2080 // - DAILY: 260 // - WEEKLY: 52 // - MONTHLY: 12 // - ANNUAL: 1 google.protobuf.DoubleValue expected_units_per_year = 6; } // Compensation range. message CompensationRange { // The maximum amount of compensation. If left empty, the value is set // to a maximal compensation value and the currency code is set to // match the [currency code][google.type.Money.currency_code] of // min_compensation. google.type.Money max_compensation = 2; // The minimum amount of compensation. If left empty, the value is set // to zero and the currency code is set to match the // [currency code][google.type.Money.currency_code] of max_compensation. google.type.Money min_compensation = 1; } // The type of compensation. // // For compensation amounts specified in non-monetary amounts, // describe the compensation scheme in the // [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description]. // // For example, tipping format is described in // [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description] // (for example, "expect 15-20% tips based on customer bill.") and an estimate // of the tips provided in // [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] // or // [CompensationEntry.range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range] // ($10 per hour). // // For example, equity is described in // [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description] // (for example, "1% - 2% equity vesting over 4 years, 1 year cliff") and // value estimated in // [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] // or // [CompensationEntry.range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range]. // If no value estimate is possible, units are // [CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED] // and then further clarified in // [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description] // field. enum CompensationType { // Default value. COMPENSATION_TYPE_UNSPECIFIED = 0; // Base compensation: Refers to the fixed amount of money paid to an // employee by an employer in return for work performed. Base compensation // does not include benefits, bonuses or any other potential compensation // from an employer. BASE = 1; // Bonus. BONUS = 2; // Signing bonus. SIGNING_BONUS = 3; // Equity. EQUITY = 4; // Profit sharing. PROFIT_SHARING = 5; // Commission. COMMISSIONS = 6; // Tips. TIPS = 7; // Other compensation type. OTHER_COMPENSATION_TYPE = 8; } // Pay frequency. enum CompensationUnit { // Default value. COMPENSATION_UNIT_UNSPECIFIED = 0; // Hourly. HOURLY = 1; // Daily. DAILY = 2; // Weekly WEEKLY = 3; // Monthly. MONTHLY = 4; // Yearly. YEARLY = 5; // One time. ONE_TIME = 6; // Other compensation units. OTHER_COMPENSATION_UNIT = 7; } // Job compensation information. // // At most one entry can be of type // [CompensationInfo.CompensationType.BASE][google.cloud.talent.v4beta1.CompensationInfo.CompensationType.BASE], // which is referred as **base compensation entry** for the job. repeated CompensationEntry entries = 1; // Output only. Annualized base compensation range. Computed as base // compensation entry's // [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] // times // [CompensationEntry.expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year]. // // See // [CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry] // for explanation on compensation annualization. CompensationRange annualized_base_compensation_range = 2 [(google.api.field_behavior) = OUTPUT_ONLY]; // Output only. Annualized total compensation range. Computed as all // compensation entries' // [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] // times // [CompensationEntry.expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year]. // // See // [CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry] // for explanation on compensation annualization. CompensationRange annualized_total_compensation_range = 3 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Resource that represents a license or certification. message Certification { // Name of license or certification. // // Number of characters allowed is 100. string display_name = 1; // Acquisition date or effective date of license or certification. google.type.Date acquire_date = 2; // Expiration date of license of certification. google.type.Date expire_date = 3; // Authority of license, such as government. // // Number of characters allowed is 100. string authority = 4; // Description of license or certification. // // Number of characters allowed is 100,000. string description = 5; } // Resource that represents a skill of a candidate. message Skill { // Skill display name. // // For example, "Java", "Python". // // Number of characters allowed is 100. string display_name = 1; // The last time this skill was used. google.type.Date last_used_date = 2; // Skill proficiency level which indicates how proficient the candidate is at // this skill. SkillProficiencyLevel level = 3; // A paragraph describes context of this skill. // // Number of characters allowed is 100,000. string context = 4; // Output only. Skill name snippet shows how the // [display_name][google.cloud.talent.v4beta1.Skill.display_name] is related // to a search query. It's empty if the // [display_name][google.cloud.talent.v4beta1.Skill.display_name] isn't // related to the search query. string skill_name_snippet = 5 [(google.api.field_behavior) = OUTPUT_ONLY]; } // Details of an interview. message Interview { // The rating on this interview. Rating rating = 6; // Required. The overall decision resulting from this interview (positive, // negative, nuetral). Outcome outcome = 7 [(google.api.field_behavior) = REQUIRED]; } // The details of the score received for an assessment or interview. message Rating { // Overall score. double overall = 1; // The minimum value for the score. double min = 2; // The maximum value for the score. double max = 3; // The steps within the score (for example, interval = 1 max = 5 // min = 1 indicates that the score can be 1, 2, 3, 4, or 5) double interval = 4; } // Metadata used for long running operations returned by CTS batch APIs. // It's used to replace // [google.longrunning.Operation.metadata][google.longrunning.Operation.metadata]. message BatchOperationMetadata { enum State { // Default value. STATE_UNSPECIFIED = 0; // The batch operation is being prepared for processing. INITIALIZING = 1; // The batch operation is actively being processed. PROCESSING = 2; // The batch operation is processed, and at least one item has been // successfully processed. SUCCEEDED = 3; // The batch operation is done and no item has been successfully processed. FAILED = 4; // The batch operation is in the process of cancelling after // [google.longrunning.Operations.CancelOperation][google.longrunning.Operations.CancelOperation] // is called. CANCELLING = 5; // The batch operation is done after // [google.longrunning.Operations.CancelOperation][google.longrunning.Operations.CancelOperation] // is called. Any items processed before cancelling are returned in the // response. CANCELLED = 6; } // The state of a long running operation. State state = 1; // More detailed information about operation state. string state_description = 2; // Count of successful item(s) inside an operation. int32 success_count = 3; // Count of failed item(s) inside an operation. int32 failure_count = 4; // Count of total item(s) inside an operation. int32 total_count = 5; // The time when the batch operation is created. google.protobuf.Timestamp create_time = 6; // The time when the batch operation status is updated. The metadata and the // [update_time][google.cloud.talent.v4beta1.BatchOperationMetadata.update_time] // is refreshed every minute otherwise cached data is returned. google.protobuf.Timestamp update_time = 7; // The time when the batch operation is finished and // [google.longrunning.Operation.done][google.longrunning.Operation.done] is // set to `true`. google.protobuf.Timestamp end_time = 8; } // Enum that represents the skill proficiency level. enum SkillProficiencyLevel { // Default value. SKILL_PROFICIENCY_LEVEL_UNSPECIFIED = 0; // Lacks any proficiency in this skill. UNSKILLED = 6; // Have a common knowledge or an understanding of basic techniques and // concepts. FUNDAMENTAL_AWARENESS = 1; // Have the level of experience gained in a classroom and/or experimental // scenarios or as a trainee on-the-job. NOVICE = 2; // Be able to successfully complete tasks in this skill as requested. Help // from an expert may be required from time to time, but can usually perform // skill independently. INTERMEDIATE = 3; // Can perform the actions associated with this skill without assistance. ADVANCED = 4; // Known as an expert in this area. EXPERT = 5; } // The overall outcome /decision / result indicator. enum Outcome { // Default value. OUTCOME_UNSPECIFIED = 0; // A positive outcome / passing indicator (for example, candidate was // recommended for hiring or to be moved forward in the hiring process, // candidate passed a test). POSITIVE = 1; // A neutral outcome / no clear indicator (for example, no strong // reccommendation either to move forward / not move forward, neutral score). NEUTRAL = 2; // A negative outcome / failing indicator (for example, candidate was // recommended to NOT move forward in the hiring process, failed a test). NEGATIVE = 3; // The assessment outcome is not available or otherwise unknown (for example, // candidate did not complete assessment). OUTCOME_NOT_AVAILABLE = 4; } // The type of candidate availability signal. enum AvailabilitySignalType { // Default value. AVAILABILITY_SIGNAL_TYPE_UNSPECIFIED = 0; // Job application signal. // // In the context of // [Profile.availability_signals][google.cloud.talent.v4beta1.Profile.availability_signals], // this signal is related to the candidate's most recent application. // [last_update_time][Profile.availability_signals.last_update_time] is // calculated from // max([Application.create_time][google.cloud.talent.v4beta1.Application.create_time]) // from all [Application][google.cloud.talent.v4beta1.Application] records // where [Application.source][google.cloud.talent.v4beta1.Application.source] // is any of the following: // [APPLY_DIRECT_WEB][google.cloud.talent.v4beta1.Application.ApplicationSource.APPLY_DIRECT_WEB] // [APPLY_DIRECT_MOBILE_WEB][google.cloud.talent.v4beta1.Application.ApplicationSource.APPLY_DIRECT_MOBILE_WEB] // [APPLY_DIRECT_MOBILE_APP][google.cloud.talent.v4beta1.Application.ApplicationSource.APPLY_DIRECT_MOBILE_APP] // [APPLY_DIRECT_IN_PERSON][google.cloud.talent.v4beta1.Application.ApplicationSource.APPLY_DIRECT_IN_PERSON] // [APPLY_INDIRECT][google.cloud.talent.v4beta1.Application.ApplicationSource.APPLY_INDIRECT] // // In the context of // [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter], the // filter is applied on // [Profile.availability_signals][google.cloud.talent.v4beta1.Profile.availability_signals] // where [type][Profile.availability_signals.type] is JOB_APPLICATION. JOB_APPLICATION = 1; // Resume update signal. // // In the context of // [Profile.availability_signals][google.cloud.talent.v4beta1.Profile.availability_signals], // this signal is related to the candidate’s most recent update to their // resume. For a // [SummarizedProfile.summary][google.cloud.talent.v4beta1.SummarizedProfile.summary], // [last_update_time][Profile.availability_signals.last_update_time] is // calculated from // max([Profile.resume_update_time][google.cloud.talent.v4beta1.Profile.resume_update_time]) // from all // [SummarizedProfile.profiles][google.cloud.talent.v4beta1.SummarizedProfile.profiles]. // // In the context of // [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter], the // filter is applied on // [Profile.availability_signals][google.cloud.talent.v4beta1.Profile.availability_signals] // where [type][Profile.availability_signals.type] is RESUME_UPDATE. RESUME_UPDATE = 2; // Candidate update signal. // // In the context of // [Profile.availability_signals][google.cloud.talent.v4beta1.Profile.availability_signals], // this signal is related to the candidate’s most recent update to their // profile. For a // [SummarizedProfile.summary][google.cloud.talent.v4beta1.SummarizedProfile.summary], // [last_update_time][Profile.availability_signals.last_update_time] is // calculated from // max([Profile.candidate_update_time][google.cloud.talent.v4beta1.Profile.candidate_update_time]) // from all // [SummarizedProfile.profiles][google.cloud.talent.v4beta1.SummarizedProfile.profiles]. // // In the context of // [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter], the // filter is applied on // [Profile.availability_signals][google.cloud.talent.v4beta1.Profile.availability_signals] // where [type][Profile.availability_signals.type] is CANDIDATE_UPDATE. CANDIDATE_UPDATE = 3; // Client submission signal. // // In the context of // [Profile.availability_signals][google.cloud.talent.v4beta1.Profile.availability_signals], // this signal is related to the candidate’s most recent submission. // [last_update_time][Profile.availability_signals.last_update_time] is // calculated from // max([Application.create_time][google.cloud.talent.v4beta1.Application.create_time]) // from all [Application][google.cloud.talent.v4beta1.Application] records // where [Application.stage][google.cloud.talent.v4beta1.Application.stage] is // any of the following: // [HIRING_MANAGER_REVIEW][google.cloud.talent.v4beta1.Application.ApplicationStage.HIRING_MANAGER_REVIEW] // [INTERVIEW][google.cloud.talent.v4beta1.Application.ApplicationStage.INTERVIEW] // [OFFER_EXTENDED][google.cloud.talent.v4beta1.Application.ApplicationStage.OFFER_EXTENDED] // [OFFER_ACCEPTED][google.cloud.talent.v4beta1.Application.ApplicationStage.OFFER_ACCEPTED] // [STARTED][google.cloud.talent.v4beta1.Application.ApplicationStage.STARTED] // // In the context of // [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter], the // filter is applied on // [Profile.availability_signals][google.cloud.talent.v4beta1.Profile.availability_signals] // where [type][Profile.availability_signals.type] is CLIENT_SUBMISSION. CLIENT_SUBMISSION = 4; }