--- /dev/null
+// 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/cloud/talent/v4beta1/common.proto";
+import "google/cloud/talent/v4beta1/job.proto";
+import "google/protobuf/timestamp.proto";
+import "google/protobuf/wrappers.proto";
+import "google/type/date.proto";
+import "google/type/postal_address.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
+option java_multiple_files = true;
+option java_outer_classname = "ProfileResourceProto";
+option java_package = "com.google.cloud.talent.v4beta1";
+option objc_class_prefix = "CTS";
+
+// Cloud Profile Discovery API definition
+
+// A resource that represents the profile for a job candidate (also referred to
+// as a "single-source profile"). A profile belongs to a
+// [Tenant][google.cloud.talent.v4beta1.Tenant], which is an isolated instance
+// of the customer that owns the profile.
+message Profile {
+ // Required during profile update.
+ //
+ // Resource name assigned to a profile by the API.
+ //
+ // The format is
+ // "projects/{project_id}/tenants/{tenant_id}/profiles/{profile_id}",
+ // for example, "projects/api-test-project/tenants/foo/profiles/bar".
+ string name = 1;
+
+ // Optional.
+ //
+ // Profile's id in client system if available.
+ //
+ // The maximum number of bytes allowed is 100.
+ string external_id = 2;
+
+ // Optional.
+ //
+ // The source description indicating where the profile is acquired.
+ //
+ // For example, if a candidate profile is acquired from a resume, the user can
+ // input "resume" here to indicate the source.
+ //
+ // The maximum number of bytes allowed is 100.
+ string source = 3;
+
+ // Optional.
+ //
+ // The URI set by clients that links to this profile's client-side copy.
+ //
+ // The maximum number of bytes allowed is 4000.
+ string uri = 4;
+
+ // Optional.
+ //
+ // The cluster id of the profile to associate with other profile(s) for the
+ // same candidate.
+ //
+ // A random UUID is assigned if
+ // [group_id][google.cloud.talent.v4beta1.Profile.group_id] isn't provided. To
+ // ensure global uniqueness, customized
+ // [group_id][google.cloud.talent.v4beta1.Profile.group_id] isn't supported.
+ // If [group_id][google.cloud.talent.v4beta1.Profile.group_id] is set, there
+ // must be at least one other profile with the same system generated
+ // [group_id][google.cloud.talent.v4beta1.Profile.group_id], otherwise an
+ // error is thrown.
+ //
+ // This is used to link multiple profiles to the same candidate. For example,
+ // a client has a candidate with two profiles, where one was created recently
+ // and the other one was created 5 years ago. These two profiles may be very
+ // different. The clients can create the first profile and get a generated
+ // [group_id][google.cloud.talent.v4beta1.Profile.group_id], and assign it
+ // when the second profile is created, indicating these two profiles are
+ // referring to the same candidate.
+ string group_id = 5;
+
+ // Optional.
+ //
+ // Indicates the hirable status of the candidate.
+ google.protobuf.BoolValue is_hirable = 6;
+
+ // Optional.
+ //
+ // The timestamp when the profile was first created at this source.
+ google.protobuf.Timestamp create_time = 7;
+
+ // Optional.
+ //
+ // The timestamp when the profile was last updated at this source.
+ google.protobuf.Timestamp update_time = 8;
+
+ // Optional.
+ //
+ // The profile contents in HR-XML format.
+ // See http://schemas.liquid-technologies.com/hr-xml/2007-04-15/ for more
+ // information about Human Resources XML.
+ //
+ // Users can create a profile with only
+ // [resume_hrxml][google.cloud.talent.v4beta1.Profile.resume_hrxml] field. For
+ // example, the API parses the
+ // [resume_hrxml][google.cloud.talent.v4beta1.Profile.resume_hrxml] and
+ // creates a profile with all structured fields populated, for example.
+ // [EmploymentRecord][google.cloud.talent.v4beta1.EmploymentRecord],
+ // [EducationRecord][google.cloud.talent.v4beta1.EducationRecord], etc. An
+ // error is thrown if the
+ // [resume_hrxml][google.cloud.talent.v4beta1.Profile.resume_hrxml] can't be
+ // parsed.
+ //
+ // If the [resume_hrxml][google.cloud.talent.v4beta1.Profile.resume_hrxml] is
+ // provided during profile creation or update, any other structured data
+ // provided in the profile is ignored. The API populates these fields by
+ // parsing the HR-XML.
+ string resume_hrxml = 10;
+
+ // Optional.
+ //
+ // The names of the candidate this profile references.
+ //
+ // Currently only one person name is supported.
+ repeated PersonName person_names = 11;
+
+ // Optional.
+ //
+ // The candidate's postal addresses.
+ repeated Address addresses = 12;
+
+ // Optional.
+ //
+ // The candidate's email addresses.
+ repeated Email email_addresses = 13;
+
+ // Optional.
+ //
+ // The candidate's phone number(s).
+ repeated Phone phone_numbers = 14;
+
+ // Optional.
+ //
+ // The candidate's personal URIs.
+ repeated PersonalUri personal_uris = 15;
+
+ // Optional.
+ //
+ // Available contact information besides
+ // [addresses][google.cloud.talent.v4beta1.Profile.addresses],
+ // [email_addresses][google.cloud.talent.v4beta1.Profile.email_addresses],
+ // [phone_numbers][google.cloud.talent.v4beta1.Profile.phone_numbers] and
+ // [personal_uris][google.cloud.talent.v4beta1.Profile.personal_uris]. For
+ // example, Hang-out, Skype.
+ repeated AdditionalContactInfo additional_contact_info = 16;
+
+ // Optional.
+ //
+ // The employment history records of the candidate. It's highly recommended
+ // to input this information as accurately as possible to help improve search
+ // quality. Here are some recommendations:
+ //
+ // * Specify the start and end dates of the employment records.
+ // * List different employment types separately, no matter how minor the
+ // change is.
+ // For example, only job title is changed from "software engineer" to "senior
+ // software engineer".
+ // * Provide
+ // [EmploymentRecord.is_current][google.cloud.talent.v4beta1.EmploymentRecord.is_current]
+ // for the current employment if possible. If not, it's inferred from user
+ // inputs.
+ repeated EmploymentRecord employment_records = 17;
+
+ // Optional.
+ //
+ // The education history record of the candidate. It's highly recommended to
+ // input this information as accurately as possible to help improve search
+ // quality. Here are some recommendations:
+ //
+ // * Specify the start and end dates of the education records.
+ // * List each education type separately, no matter how minor the change is.
+ // For example, the profile contains the education experience from the same
+ // school but different degrees.
+ // * Provide
+ // [EducationRecord.is_current][google.cloud.talent.v4beta1.EducationRecord.is_current]
+ // for the current education if possible. If not, it's inferred from user
+ // inputs.
+ repeated EducationRecord education_records = 18;
+
+ // Optional.
+ //
+ // The skill set of the candidate. It's highly recommended to provide as
+ // much information as possible to help improve the search quality.
+ repeated Skill skills = 19;
+
+ // Optional.
+ //
+ // The individual or collaborative activities which the candidate has
+ // participated in, for example, open-source projects, class assignments that
+ // aren't listed in
+ // [employment_records][google.cloud.talent.v4beta1.Profile.employment_records].
+ repeated Activity activities = 20;
+
+ // Optional.
+ //
+ // The publications published by the candidate.
+ repeated Publication publications = 21;
+
+ // Optional.
+ //
+ // The patents acquired by the candidate.
+ repeated Patent patents = 22;
+
+ // Optional.
+ //
+ // The certifications acquired by the candidate.
+ repeated Certification certifications = 23;
+
+ // Optional.
+ //
+ // The job applications of the candidate.
+ repeated JobApplication job_applications = 24;
+
+ // Optional.
+ //
+ // The recruiting notes added for the candidate.
+ //
+ // For example, the recruiter can add some unstructured comments for this
+ // candidate like "this candidate also has experiences in volunteer work".
+ repeated RecruitingNote recruiting_notes = 25;
+
+ // Optional.
+ //
+ // A map of fields to hold both filterable and non-filterable custom profile
+ // attributes that aren't covered by the provided structured fields. See
+ // [CustomAttribute][google.cloud.talent.v4beta1.CustomAttribute] for more
+ // details.
+ //
+ // At most 100 filterable and at most 100 unfilterable keys are supported. If
+ // limit is exceeded, an error is thrown.
+ //
+ // Numeric custom attributes: each key can only map to one numeric value,
+ // otherwise an error is thrown.
+ //
+ // String custom attributes: each key can map up to 50 string values. For
+ // filterable string value, each value has a byte size of no more than 256B.
+ // For unfilterable string values, the maximum byte size of a single key is
+ // 64B. An error is thrown for any request exceeding the limit.
+ // The maximum total byte size is 10KB.
+ //
+ // Currently filterable numeric custom attributes are not supported, and
+ // they automatically set to unfilterable.
+ map<string, CustomAttribute> custom_attributes = 26;
+
+ // Output only. Indicates if the profile is fully processed and searchable.
+ bool processed = 27;
+
+ // Output only. Keyword snippet shows how the search result is related to a
+ // search query.
+ string keyword_snippet = 28;
+}
+
+// Resource that represents the name of a person.
+message PersonName {
+ // Resource that represents a person's structured name.
+ message PersonStructuredName {
+ // Optional.
+ //
+ // Given/first name.
+ //
+ // It's derived from
+ // [formatted_name][google.cloud.talent.v4beta1.PersonName.formatted_name]
+ // if not provided.
+ //
+ // Number of characters allowed is 100.
+ string given_name = 1;
+
+ // Optional.
+ //
+ // Middle initial.
+ //
+ // It's derived from
+ // [formatted_name][google.cloud.talent.v4beta1.PersonName.formatted_name]
+ // if not provided.
+ //
+ // Number of characters allowed is 20.
+ string middle_initial = 2;
+
+ // Optional.
+ //
+ // Family/last name.
+ //
+ // It's derived from
+ // [formatted_name][google.cloud.talent.v4beta1.PersonName.formatted_name]
+ // if not provided.
+ //
+ // Number of characters allowed is 100.
+ string family_name = 3;
+
+ // Optional.
+ //
+ // Suffixes.
+ //
+ // Number of characters allowed is 20.
+ repeated string suffixes = 4;
+
+ // Optional.
+ //
+ // Prefixes.
+ //
+ // Number of characters allowed is 20.
+ repeated string prefixes = 5;
+ }
+
+ // The name of a person. It can be one of [formatted_name][] or
+ // [structured_name][].
+ oneof person_name {
+ // Optional.
+ //
+ // A string represents a person's full name. For example, "Dr. John Smith".
+ //
+ // Number of characters allowed is 100.
+ string formatted_name = 1;
+
+ // Optional.
+ //
+ // A person's name in a structured way (last name, first name, suffix, etc.)
+ PersonStructuredName structured_name = 2;
+ }
+
+ // Optional.
+ //
+ // Preferred name for the person.
+ string preferred_name = 3;
+}
+
+// Resource that represents a address.
+message Address {
+ // Optional.
+ //
+ // The usage of the address. For example, SCHOOL, WORK, PERSONAL.
+ ContactInfoUsage usage = 1;
+
+ // The address of a person. It can be one of [unstructured_address][] or
+ // [structured_address][].
+ oneof address {
+ // Optional.
+ //
+ // Unstructured address.
+ //
+ // For example, "1600 Amphitheatre Pkwy, Mountain View, CA 94043",
+ // "Sunnyvale, California".
+ //
+ // Number of characters allowed is 100.
+ string unstructured_address = 2;
+
+ // Optional.
+ //
+ // Structured address that contains street address, city, state, country,
+ // etc.
+ google.type.PostalAddress structured_address = 3;
+ }
+
+ // Optional.
+ //
+ // Indicates if it's the person's current address.
+ google.protobuf.BoolValue is_current = 4;
+}
+
+// Resource that represents a person's email address.
+message Email {
+ // Optional.
+ //
+ // The usage of the email address. For example, SCHOOL, WORK, PERSONAL.
+ ContactInfoUsage usage = 1;
+
+ // Optional.
+ //
+ // Email address.
+ //
+ // Number of characters allowed is 4,000.
+ string email_address = 2;
+}
+
+// Resource that represents a person's telephone number.
+message Phone {
+ // Enum that represents the type of the telephone.
+ enum PhoneType {
+ // Default value.
+ PHONE_TYPE_UNSPECIFIED = 0;
+
+ // A landline.
+ LANDLINE = 1;
+
+ // A mobile.
+ MOBILE = 2;
+
+ // A fax.
+ FAX = 3;
+
+ // A pager.
+ PAGER = 4;
+
+ // A TTY (test telephone) or TDD (telecommunication device for the deaf).
+ TTY_OR_TDD = 5;
+
+ // A voicemail.
+ VOICEMAIL = 6;
+
+ // A virtual telephone number is a number that can be routed to another
+ // number and managed by the user via Web, SMS, IVR, etc. It is associated
+ // with a particular person, and may be routed to either a MOBILE or
+ // LANDLINE number. The phone usage (see ContactInfoUsage above) should be
+ // set to PERSONAL for these phone types. Some more information can be
+ // found here: http://en.wikipedia.org/wiki/Personal_Numbers
+ VIRTUAL = 7;
+
+ // Voice over IP numbers. This includes TSoIP (Telephony Service over IP).
+ VOIP = 8;
+
+ // In some regions (e.g. the USA), it is impossible to distinguish between
+ // fixed-line and mobile numbers by looking at the phone number itself.
+ MOBILE_OR_LANDLINE = 9;
+ }
+
+ // Optional.
+ //
+ // The usage of the phone. For example, SCHOOL, WORK, PERSONAL.
+ ContactInfoUsage usage = 1;
+
+ // Optional.
+ //
+ // The phone type. For example, LANDLINE, MOBILE, FAX.
+ PhoneType type = 2;
+
+ // Optional.
+ //
+ // Phone number.
+ //
+ // Any phone formats are supported and only exact matches are performed on
+ // searches. For example, if a phone number in profile is provided in the
+ // format of "(xxx)xxx-xxxx", in profile searches the same phone format
+ // has to be provided.
+ //
+ // Number of characters allowed is 20.
+ string number = 3;
+
+ // Optional.
+ //
+ // When this number is available. Any descriptive string is expected.
+ //
+ // Number of characters allowed is 100.
+ string when_available = 4;
+}
+
+// Resource that represents a valid URI for a personal use.
+message PersonalUri {
+ // Optional.
+ //
+ // The personal URI.
+ //
+ // Number of characters allowed is 4,000.
+ string uri = 1;
+}
+
+// Resource that represents contact information other than phone, email,
+// URI and addresses.
+message AdditionalContactInfo {
+ // Optional.
+ //
+ // The usage of this contact method. For example, SCHOOL, WORK, PERSONAL.
+ ContactInfoUsage usage = 1;
+
+ // Optional.
+ //
+ // The name of the contact method.
+ //
+ // For example, "hangout", "skype".
+ //
+ // Number of characters allowed is 100.
+ string name = 2;
+
+ // Optional.
+ //
+ // The contact id.
+ //
+ // Number of characters allowed is 100.
+ string contact_id = 3;
+}
+
+// Resource that represents an employment record of a candidate.
+message EmploymentRecord {
+ // Optional.
+ //
+ // Start date of the employment.
+ //
+ // It can be a partial date (only year, or only year and month), but must be
+ // valid. Otherwise an error is thrown.
+ //
+ // Examples:
+ // {"year": 2017, "month": 2, "day": 28} is valid.
+ // {"year": 2020, "month": 1, "date": 31} is valid.
+ // {"year": 2018, "month": 12} is valid (partial date).
+ // {"year": 2018} is valid (partial date).
+ // {"year": 2015, "day": 21} is not valid (month is missing but day is
+ // presented).
+ // {"year": 2018, "month": 13} is not valid (invalid month).
+ // {"year": 2017, "month": 1, "day": 32} is not valid (invalid day).
+ google.type.Date start_date = 1;
+
+ // Optional.
+ //
+ // End date of the employment.
+ google.type.Date end_date = 2;
+
+ // Optional.
+ //
+ // The name of the employer company/organization.
+ //
+ // For example, "Google", "Alphabet", etc.
+ //
+ // Number of characters allowed is 100.
+ string employer_name = 3;
+
+ // Optional.
+ //
+ // The division name of the employment.
+ //
+ // For example, division, department, client, etc.
+ //
+ // Number of characters allowed is 100.
+ string division_name = 4;
+
+ // Optional.
+ //
+ // The physical address of the employer.
+ Address address = 5;
+
+ // Optional.
+ //
+ // The job title of the employment.
+ //
+ // For example, "Software Engineer", "Data Scientist", etc.
+ //
+ // Number of characters allowed is 100.
+ string job_title = 6;
+
+ // Optional.
+ //
+ // The description of job content.
+ //
+ // Number of characters allowed is 100,000.
+ string job_description = 7;
+
+ // Optional.
+ //
+ // If it's a supervised position.
+ google.protobuf.BoolValue is_supervised_position = 8;
+
+ // Optional.
+ //
+ // If this employment is self-employed.
+ google.protobuf.BoolValue is_self_employed = 9;
+
+ // Optional.
+ //
+ // If this employment is current.
+ google.protobuf.BoolValue is_current = 10;
+
+ // Output only. The job title snippet shows how the
+ // [job_title][google.cloud.talent.v4beta1.EmploymentRecord.job_title] is
+ // related to a search query. It's empty if the
+ // [job_title][google.cloud.talent.v4beta1.EmploymentRecord.job_title] isn't
+ // related to the search query.
+ string job_title_snippet = 11;
+
+ // Output only. The job description snippet shows how the
+ // [job_description][google.cloud.talent.v4beta1.EmploymentRecord.job_description]
+ // is related to a search query. It's empty if the
+ // [job_description][google.cloud.talent.v4beta1.EmploymentRecord.job_description]
+ // isn't related to the search query.
+ string job_description_snippet = 12;
+
+ // Output only. The employer name snippet shows how the
+ // [employer_name][google.cloud.talent.v4beta1.EmploymentRecord.employer_name]
+ // is related to a search query. It's empty if the
+ // [employer_name][google.cloud.talent.v4beta1.EmploymentRecord.employer_name]
+ // isn't related to the search query.
+ string employer_name_snippet = 13;
+}
+
+// Resource that represents an education record of a candidate.
+message EducationRecord {
+ // Optional.
+ //
+ // The start date of the education.
+ google.type.Date start_date = 1;
+
+ // Optional.
+ //
+ // The end date of the education.
+ google.type.Date end_date = 2;
+
+ // Optional.
+ //
+ // The expected graduation date if currently pursuing a degree.
+ google.type.Date expected_graduation_date = 3;
+
+ // Optional.
+ //
+ // The name of the school or institution.
+ //
+ // For example, "Stanford University", "UC Berkeley", etc.
+ //
+ // Number of characters allowed is 100.
+ string school_name = 4;
+
+ // Optional.
+ //
+ // The physical address of the education institution.
+ Address address = 5;
+
+ // The degree information. It can be one of [degree_description][] or
+ // [structured_degree][].
+ oneof degree {
+ // Optional.
+ //
+ // The full description of the degree.
+ //
+ // For example, "Master of Science in Computer Science", "B.S in Math".
+ //
+ // Number of characters allowed is 100.
+ string degree_description = 6;
+
+ // Optional.
+ //
+ // The structured notation of the degree.
+ Degree structured_degree = 7;
+ }
+
+ // Optional.
+ //
+ // The description of the education.
+ //
+ // Number of characters allowed is 100,000.
+ string description = 8;
+
+ // Optional.
+ //
+ // If this education is current.
+ google.protobuf.BoolValue is_current = 9;
+
+ // Output only. The school name snippet shows how the
+ // [school_name][google.cloud.talent.v4beta1.EducationRecord.school_name] is
+ // related to a search query in search result. It's empty if the
+ // [school_name][google.cloud.talent.v4beta1.EducationRecord.school_name]
+ // isn't related to the search query.
+ string school_name_snippet = 10;
+
+ // Output only. The job description snippet shows how the
+ // [degree][google.cloud.talent.v4beta1.degree] is related to a search query
+ // in search result. It's empty if the
+ // [degree][google.cloud.talent.v4beta1.degree] isn't related to the search
+ // query.
+ string degree_snippet = 11;
+}
+
+// Resource that represents a degree pursuing or acquired by a candidate.
+message Degree {
+ // Optional.
+ //
+ // ISCED degree type.
+ DegreeType degree_type = 1;
+
+ // Optional.
+ //
+ // Full Degree name.
+ //
+ // For example, "B.S.", "Master of Arts", etc.
+ //
+ // Number of characters allowed is 100.
+ string degree_name = 2;
+
+ // Optional.
+ //
+ // Fields of study for the degree.
+ //
+ // For example, "Computer science", "engineering".
+ //
+ // Number of characters allowed is 100.
+ repeated string fields_of_study = 3;
+}
+
+// Resource that represents a skill of a candidate.
+message Skill {
+ // Enum that represents the skill proficiency level.
+ enum SkillProficiencyLevel {
+ // Default value.
+ SKILL_PROFICIENCY_LEVEL_UNSPECIFIED = 0;
+
+ // 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;
+ }
+
+ // Optional.
+ //
+ // Skill display name.
+ //
+ // For example, "Java", "Python".
+ //
+ // Number of characters allowed is 100.
+ string display_name = 1;
+
+ // Optional.
+ //
+ // The last time this skill was used.
+ google.type.Date last_used_date = 2;
+
+ // Optional.
+ //
+ // Skill proficiency level which indicates how proficient the candidate is at
+ // this skill.
+ SkillProficiencyLevel level = 3;
+
+ // Optional.
+ //
+ // 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;
+}
+
+// Resource that represents an individual or collaborative activity participated
+// in by a candidate, for example, an open-source project, a class assignment,
+// etc.
+message Activity {
+ // Optional.
+ //
+ // Activity display name.
+ //
+ // Number of characters allowed is 100.
+ string display_name = 1;
+
+ // Optional.
+ //
+ // Activity description.
+ //
+ // Number of characters allowed is 100,000.
+ string description = 2;
+
+ // Optional.
+ //
+ // Activity URI.
+ //
+ // Number of characters allowed is 4,000.
+ string uri = 3;
+
+ // Optional.
+ //
+ // The first creation date of the activity.
+ google.type.Date create_date = 4;
+
+ // Optional.
+ //
+ // The last update date of the activity.
+ google.type.Date update_date = 5;
+
+ // Optional.
+ //
+ // A list of team members involved in this activity.
+ //
+ // Number of characters allowed is 100.
+ repeated string team_members = 6;
+
+ // Optional.
+ //
+ // A list of skills used in this activity.
+ repeated Skill skills_used = 7;
+
+ // Output only. Activity name snippet shows how the
+ // [display_name][google.cloud.talent.v4beta1.Activity.display_name] is
+ // related to a search query. It's empty if the
+ // [display_name][google.cloud.talent.v4beta1.Activity.display_name] isn't
+ // related to the search query.
+ string activity_name_snippet = 8;
+
+ // Output only. Activity description snippet shows how the
+ // [description][google.cloud.talent.v4beta1.Activity.description] is related
+ // to a search query. It's empty if the
+ // [description][google.cloud.talent.v4beta1.Activity.description] isn't
+ // related to the search query.
+ string activity_description_snippet = 9;
+
+ // Output only. Skill used snippet shows how the corresponding
+ // [skills_used][google.cloud.talent.v4beta1.Activity.skills_used] are related
+ // to a search query. It's empty if the corresponding
+ // [skills_used][google.cloud.talent.v4beta1.Activity.skills_used] are not
+ // related to the search query.
+ repeated string skills_used_snippet = 10;
+}
+
+// Resource that represents a publication resource of a candidate.
+message Publication {
+ // Optional.
+ //
+ // A list of author names.
+ //
+ // Number of characters allowed is 100.
+ repeated string authors = 1;
+
+ // Optional.
+ //
+ // The title of the publication.
+ //
+ // Number of characters allowed is 100.
+ string title = 2;
+
+ // Optional.
+ //
+ // The description of the publication.
+ //
+ // Number of characters allowed is 100,000.
+ string description = 3;
+
+ // Optional.
+ //
+ // The journal name of the publication.
+ //
+ // Number of characters allowed is 100.
+ string journal = 4;
+
+ // Optional.
+ //
+ // Volume number.
+ //
+ // Number of characters allowed is 100.
+ string volume = 5;
+
+ // Optional.
+ //
+ // The publisher of the journal.
+ //
+ // Number of characters allowed is 100.
+ string publisher = 6;
+
+ // Optional.
+ //
+ // The publication date.
+ google.type.Date publication_date = 7;
+
+ // Optional.
+ //
+ // The publication type.
+ //
+ // Number of characters allowed is 100.
+ string publication_type = 8;
+
+ // Optional.
+ //
+ // ISBN number.
+ //
+ // Number of characters allowed is 100.
+ string isbn = 9;
+}
+
+// Resource that represents the patent acquired by a candidate.
+message Patent {
+ // Optional.
+ //
+ // Name of the patent.
+ //
+ // Number of characters allowed is 100.
+ string display_name = 1;
+
+ // Optional.
+ //
+ // A list of inventors' names.
+ //
+ // Number of characters allowed for each is 100.
+ repeated string inventors = 2;
+
+ // Optional.
+ //
+ // The status of the patent.
+ //
+ // Number of characters allowed is 100.
+ string patent_status = 3;
+
+ // Optional.
+ //
+ // The date the last time the status of the patent was checked.
+ google.type.Date patent_status_date = 4;
+
+ // Optional.
+ //
+ // The date that the patent was filed.
+ google.type.Date patent_filing_date = 5;
+
+ // Optional.
+ //
+ // The name of the patent office.
+ //
+ // Number of characters allowed is 100.
+ string patent_office = 6;
+
+ // Optional.
+ //
+ // The number of the patent.
+ //
+ // Number of characters allowed is 100.
+ string patent_number = 7;
+
+ // Optional.
+ //
+ // The description of the patent.
+ //
+ // Number of characters allowed is 100,000.
+ string patent_description = 8;
+
+ // Optional.
+ //
+ // The skills used in this patent.
+ repeated Skill skills_used = 9;
+}
+
+// Resource that represents a job application record of a candidate.
+message JobApplication {
+ // Enum that represents the application status.
+ enum ApplicationStatus {
+ // Default value.
+ APPLICATION_STATUS_UNSPECIFIED = 0;
+
+ // The offer is extended.
+ OFFER_EXTENDED = 1;
+
+ // The offer is rejected by candidate.
+ REJECTED_BY_CANDIDATE = 2;
+
+ // The application is active.
+ ACTIVE = 3;
+
+ // The candidate is rejected by employer.
+ REJECTED_BY_EMPLOYER = 4;
+
+ // The candidate is hired and hasn't started the new job.
+ HIRED_PENDING_DATE = 5;
+
+ // The candidate is hired started.
+ HIRED_STARTED = 6;
+
+ // The candidate is a prospect candidate.
+ PROSPECTED = 7;
+ }
+
+ // Optional.
+ //
+ // The information of job which the candidate applied for.
+ //
+ // If [Job.name][google.cloud.talent.v4beta1.Job.name] is provided, the
+ // corresponding [Job][google.cloud.talent.v4beta1.Job] must be created.
+ //
+ // Otherwise, only
+ // [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id],
+ // [Job.title][google.cloud.talent.v4beta1.Job.title],
+ // [Job.description][google.cloud.talent.v4beta1.Job.description] and
+ // [Job.addresses][google.cloud.talent.v4beta1.Job.addresses] provided here
+ // are persisted in the application. No [Job][google.cloud.talent.v4beta1.Job]
+ // entity is created in this case.
+ Job job = 1;
+
+ // Optional.
+ //
+ // The job application id.
+ //
+ // Number of characters allowed is 100.
+ string application_id = 2;
+
+ // Optional.
+ //
+ // The application date.
+ google.type.Date application_date = 3;
+
+ // Optional.
+ //
+ // The last stage the candidate reached in the application progress.
+ // For example, "new", "phone screen", "interview".
+ string last_stage = 4;
+
+ // Optional.
+ //
+ // The application state.
+ ApplicationStatus state = 5;
+
+ // Optional.
+ //
+ // The average interview score.
+ double average_interview_score = 6;
+
+ // Optional.
+ //
+ // The scale id of the interview score.
+ //
+ // Number of characters allowed is 100.
+ string interview_score_scale_id = 7;
+
+ // Optional.
+ //
+ // The number of interviews.
+ int32 number_of_interviews = 8;
+
+ // Optional.
+ //
+ // If the candidate is referred by a employee.
+ google.protobuf.BoolValue is_employee_referred = 9;
+
+ // Optional.
+ //
+ // The last update timestamp.
+ google.protobuf.Timestamp update_time = 10;
+
+ // Optional.
+ //
+ // The outcome reason for the job application.
+ //
+ // Number of characters allowed is 100.
+ string outcome_reason = 11;
+
+ // Optional.
+ //
+ // Outcome positiveness shows how positive the outcome is.
+ //
+ // Currently only -1, 0 and 1 are accepted, where -1 means not positive, 0
+ // means neutral and 1 means positive. An error is thrown if other value is
+ // set.
+ double outcome_positiveness = 12;
+
+ // Output only. Indicates whether this job application is a match to
+ // application related filters. This value is only applicable in profile
+ // search response.
+ google.protobuf.BoolValue is_match = 13;
+
+ // Output only. Job title snippet shows how the job title is related to a
+ // search query. It's empty if the job title isn't related to the search
+ // query.
+ string job_title_snippet = 14;
+}
+
+// Resource that represents a license or certification.
+message Certification {
+ // Optional.
+ //
+ // Name of license or certification.
+ //
+ // Number of characters allowed is 100.
+ string display_name = 1;
+
+ // Optional.
+ //
+ // Acquirement date or effective date of license or certification.
+ google.type.Date acquire_date = 2;
+
+ // Optional.
+ //
+ // Expiration date of license of certification.
+ google.type.Date expire_date = 3;
+
+ // Optional.
+ //
+ // Authority of license, such as government.
+ //
+ // Number of characters allowed is 100.
+ string authority = 4;
+
+ // Optional.
+ //
+ // Description of license or certification.
+ //
+ // Number of characters allowed is 100,000.
+ string description = 5;
+}
+
+// RecruitingNote represents a note/comment regarding the recruiting for a
+// candidate. For example, "This candidate is a potential match for a frontend
+// engineer at SF".
+message RecruitingNote {
+ // Optional.
+ //
+ // The content of note.
+ //
+ // Number of characters allowed is 4,000.
+ string note = 1;
+
+ // Optional.
+ //
+ // The person who wrote the notes.
+ //
+ // Number of characters allowed is 100.
+ string commenter = 2;
+
+ // Optional.
+ //
+ // The create date of the note.
+ google.type.Date create_date = 3;
+
+ // Optional.
+ //
+ // The note type.
+ //
+ // Number of characters allowed is 100.
+ string type = 4;
+}