You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kratos/third_party/google/cloud/talent/v4beta1/profile.proto

871 lines
25 KiB

// 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/duration.proto";
import "google/protobuf/field_mask.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 [Company][google.cloud.talent.v4beta1.Company], which is
// the company/organization 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.
//
// This field should be generated by the customer. If a value is not provided,
// a random UUI is assigned to this field of the profile.
//
// 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 resume representing this profile.
Resume resume = 53;
// 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;
// Output only. The resource names of the candidate's applications.
repeated string applications = 47;
// Output only. The resource names of the candidate's assignments.
repeated string assignments = 48;
// 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. Custom attributes are `unfilterable`
// by default. These are filterable when the `filterable` flag is set to
// `true`.
//
// Numeric custom attributes: each key can only map to one numeric value,
// otherwise an error is thrown. Client can also filter on numeric custom
// attributes using '>', '<' or '=' operators.
//
// 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.
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. This is only returned in [SearchProfilesResponse][google.cloud.talent.v4beta1.SearchProfilesResponse].
string keyword_snippet = 28;
}
// Resource that represents a resume.
message Resume {
// The format of a structured resume.
enum ResumeType {
// Default value.
RESUME_TYPE_UNSPECIFIED = 0;
// 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.
HRXML = 1;
// Resume type not specified.
OTHER_RESUME_TYPE = 2;
}
// Optional.
//
// Users can create a profile with only this field field, if [resume_type][google.cloud.talent.v4beta1.Resume.resume_type]
// is [HRXML][]. For example, the API parses this field and creates a profile
// with all structured fields populated, for example. [EmploymentRecord][google.cloud.talent.v4beta1.EmploymentRecord],
// [EducationRecord][google.cloud.talent.v4beta1.EducationRecord], and so on. An error is thrown if this field cannot be
// parsed.
//
// If this field is provided during profile creation or update,
// any other structured data provided in the profile is ignored. The
// API populates these fields by parsing this field.
string structured_resume = 1;
// Optional.
//
// The format of [structured_resume][google.cloud.talent.v4beta1.Resume.structured_resume].
ResumeType resume_type = 2;
}
// 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.
//
// Preferred given/first name or nickname.
//
// Number of characters allowed is 100.
string preferred_name = 6;
// 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, and
// so on.)
PersonStructuredName structured_name = 2;
}
// Optional.
//
// Preferred name for the person. This field is ignored if [structured_name][google.cloud.talent.v4beta1.PersonName.structured_name]
// is provided.
//
// Number of characters allowed is 100.
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,
// and so on.
google.type.PostalAddress structured_address = 3;
}
// Optional.
//
// Indicates if it's the person's current address.
google.protobuf.BoolValue 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, and so on. 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.
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", and so on.
//
// Number of characters allowed is 100.
string employer_name = 3;
// Optional.
//
// The division name of the employment.
//
// For example, division, department, client, and so on.
//
// 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", and so on.
//
// 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 the jobs is a supervisor position.
google.protobuf.BoolValue is_supervisor = 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", and so on.
//
// 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", and so on.
//
// 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 an individual or collaborative activity participated
// in by a candidate, for example, an open-source project, a class assignment,
// and so on.
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;
}