profile.proto 29 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783
  1. // Copyright 2020 Google LLC
  2. //
  3. // Licensed under the Apache License, Version 2.0 (the "License");
  4. // you may not use this file except in compliance with the License.
  5. // You may obtain a copy of the License at
  6. //
  7. // http://www.apache.org/licenses/LICENSE-2.0
  8. //
  9. // Unless required by applicable law or agreed to in writing, software
  10. // distributed under the License is distributed on an "AS IS" BASIS,
  11. // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. syntax = "proto3";
  15. package google.cloud.talent.v4beta1;
  16. import "google/api/field_behavior.proto";
  17. import "google/api/resource.proto";
  18. import "google/cloud/talent/v4beta1/common.proto";
  19. import "google/protobuf/duration.proto";
  20. import "google/protobuf/timestamp.proto";
  21. import "google/protobuf/wrappers.proto";
  22. import "google/type/date.proto";
  23. import "google/type/postal_address.proto";
  24. import "google/api/annotations.proto";
  25. option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
  26. option java_multiple_files = true;
  27. option java_outer_classname = "ProfileResourceProto";
  28. option java_package = "com.google.cloud.talent.v4beta1";
  29. option objc_class_prefix = "CTS";
  30. // Cloud Profile Discovery API definition
  31. // A resource that represents the profile for a job candidate (also referred to
  32. // as a "single-source profile").
  33. message Profile {
  34. option (google.api.resource) = {
  35. type: "jobs.googleapis.com/Profile"
  36. pattern: "projects/{project}/tenants/{tenant}/profiles/{profile}"
  37. };
  38. // Required during profile update.
  39. //
  40. // Resource name assigned to a profile by the API.
  41. //
  42. // The format is
  43. // "projects/{project_id}/tenants/{tenant_id}/profiles/{profile_id}",
  44. // for example, "projects/foo/tenants/bar/profiles/baz".
  45. string name = 1;
  46. // Profile's id in client system, if available. This value is unique for each
  47. // profile inside a tenant. An error is thrown if another profile with the
  48. // same external_id is created.
  49. //
  50. // The maximum number of bytes allowed is 100.
  51. string external_id = 2;
  52. // The source description indicating where the profile is acquired.
  53. //
  54. // For example, if a candidate profile is acquired from a resume, the user can
  55. // input "resume" here to indicate the source.
  56. //
  57. // The maximum number of bytes allowed is 100.
  58. string source = 3;
  59. // The URI set by clients that links to this profile's client-side copy.
  60. //
  61. // The maximum number of bytes allowed is 4000.
  62. string uri = 4;
  63. // The cluster id of the profile to associate with other profile(s) for the
  64. // same candidate.
  65. //
  66. // This field should be generated by the customer. If a value is not provided,
  67. // a random UUID is assigned to this field of the profile.
  68. //
  69. // This is used to link multiple profiles to the same candidate. For example,
  70. // a client has a candidate with two profiles, where one was created recently
  71. // and the other one was created 5 years ago. These two profiles may be very
  72. // different. The clients can create the first profile and get a generated
  73. // [group_id][google.cloud.talent.v4beta1.Profile.group_id], and assign it when the second profile is created,
  74. // indicating these two profiles are referring to the same candidate.
  75. string group_id = 5;
  76. // Indicates the hirable status of the candidate.
  77. google.protobuf.BoolValue is_hirable = 6;
  78. // The timestamp when the profile was first created at this source.
  79. google.protobuf.Timestamp create_time = 7;
  80. // The timestamp when the profile was last updated at this source.
  81. google.protobuf.Timestamp update_time = 8;
  82. // The timestamp when the profile was last updated as a result of a direct or
  83. // indirect action by a candidate.
  84. //
  85. // These actions include:
  86. //
  87. // * Direct actions such as the candidate submitting a new resume as part of a
  88. // job application to the agency, using a self-service tool such as a website
  89. // to update their profile, and so on.
  90. // * Indirect actions by the candidate such as uploading a resume to a job
  91. // board that is collected by the agency through a feed, providing a resume to
  92. // a recruiter who then uploads it into the ATS, and so on.
  93. // * Updates made to the candidate's profile by the recruiter as a result of
  94. // interacting with the candidate (for example adding a skill or work
  95. // preference, and so on). Changes to [recruiting_notes][google.cloud.talent.v4beta1.Profile.recruiting_notes] are specifically
  96. // excluded from this action type.
  97. //
  98. // Note: [candidate_update_time][google.cloud.talent.v4beta1.Profile.candidate_update_time] must be greater than or equal to
  99. // [resume_update_time][google.cloud.talent.v4beta1.Profile.resume_update_time] or an error is thrown.
  100. google.protobuf.Timestamp candidate_update_time = 67;
  101. // The timestamp when the candidate's resume was added or updated on the
  102. // candidate's profile. Whether that resume was directly uploaded by a
  103. // candidate, pulled from a 3rd party job board feed, added by a recruiter,
  104. // and so on.
  105. //
  106. // If this field is updated, it's expected that [resume][google.cloud.talent.v4beta1.Profile.resume] is provided in
  107. // the create or update calls.
  108. google.protobuf.Timestamp resume_update_time = 68;
  109. // The resume representing this profile.
  110. Resume resume = 53;
  111. // The names of the candidate this profile references.
  112. //
  113. // Currently only one person name is supported.
  114. repeated PersonName person_names = 11;
  115. // The candidate's postal addresses. It's highly recommended to
  116. // input this information as accurately as possible to help improve search
  117. // quality. Here are some recommendations:
  118. //
  119. // * Provide [Address.usage][google.cloud.talent.v4beta1.Address.usage] if possible, especially if the address is
  120. // PERSONAL. During a search only personal addresses are considered. If there
  121. // is no such address, all addresses with unspecified usage are assumed to be
  122. // personal.
  123. // * Provide [Address.current][google.cloud.talent.v4beta1.Address.current] for the current address if possible. During
  124. // a search, only current addresses are considered. If there is no such
  125. // address, all addresses are assumed to be current.
  126. //
  127. // When displaying a candidate's addresses, it is sometimes desirable to limit
  128. // the number of addresses shown. In these cases we recommend that you display
  129. // the addresses in the following order of priority:
  130. // 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
  131. // 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and [Address.current][google.cloud.talent.v4beta1.Address.current] is false or not
  132. // set.
  133. // 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is CONTACT_INFO_USAGE_UNSPECIFIED and
  134. // [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
  135. // 4. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is CONTACT_INFO_USAGE_UNSPECIFIED and
  136. // [Address.current][google.cloud.talent.v4beta1.Address.current] is false or not set.
  137. repeated Address addresses = 12;
  138. // The candidate's email addresses.
  139. repeated Email email_addresses = 13;
  140. // The candidate's phone number(s).
  141. repeated Phone phone_numbers = 14;
  142. // The candidate's personal URIs.
  143. repeated PersonalUri personal_uris = 15;
  144. // Available contact information besides [addresses][google.cloud.talent.v4beta1.Profile.addresses], [email_addresses][google.cloud.talent.v4beta1.Profile.email_addresses],
  145. // [phone_numbers][google.cloud.talent.v4beta1.Profile.phone_numbers] and [personal_uris][google.cloud.talent.v4beta1.Profile.personal_uris]. For example, Hang-out, Skype.
  146. repeated AdditionalContactInfo additional_contact_info = 16;
  147. // The employment history records of the candidate. It's highly recommended
  148. // to input this information as accurately as possible to help improve search
  149. // quality. Here are some recommendations:
  150. //
  151. // * Specify the start and end dates of the employment records.
  152. // * List different employment types separately, no matter how minor the
  153. // change is.
  154. // For example, only job title is changed from "software engineer" to "senior
  155. // software engineer".
  156. // * Provide [EmploymentRecord.is_current][google.cloud.talent.v4beta1.EmploymentRecord.is_current] for the current employment if
  157. // possible. If not, it's inferred from user inputs.
  158. //
  159. // The limitation for max number of employment records is 100.
  160. repeated EmploymentRecord employment_records = 17;
  161. // The education history record of the candidate. It's highly recommended to
  162. // input this information as accurately as possible to help improve search
  163. // quality. Here are some recommendations:
  164. //
  165. // * Specify the start and end dates of the education records.
  166. // * List each education type separately, no matter how minor the change is.
  167. // For example, the profile contains the education experience from the same
  168. // school but different degrees.
  169. // * Provide [EducationRecord.is_current][google.cloud.talent.v4beta1.EducationRecord.is_current] for the current education if
  170. // possible. If not, it's inferred from user inputs.
  171. //
  172. // The limitation for max number of education records is 100.
  173. repeated EducationRecord education_records = 18;
  174. // The skill set of the candidate. It's highly recommended to provide as
  175. // much information as possible to help improve the search quality.
  176. //
  177. // The limitation for max number of skills is 500.
  178. repeated Skill skills = 19;
  179. // The individual or collaborative activities which the candidate has
  180. // participated in, for example, open-source projects, class assignments that
  181. // aren't listed in [employment_records][google.cloud.talent.v4beta1.Profile.employment_records].
  182. //
  183. // The limitation for max number of activities is 50.
  184. repeated Activity activities = 20;
  185. // The publications published by the candidate.
  186. //
  187. // The limitation for max number of publications is 50.
  188. repeated Publication publications = 21;
  189. // The patents acquired by the candidate.
  190. repeated Patent patents = 22;
  191. // The certifications acquired by the candidate.
  192. repeated Certification certifications = 23;
  193. // Output only. The resource names of the candidate's applications.
  194. repeated string applications = 47 [(google.api.field_behavior) = OUTPUT_ONLY];
  195. // Output only. The resource names of the candidate's assignments.
  196. repeated string assignments = 48 [(google.api.field_behavior) = OUTPUT_ONLY];
  197. // A map of fields to hold both filterable and non-filterable custom profile
  198. // attributes that aren't covered by the provided structured fields. See
  199. // [CustomAttribute][google.cloud.talent.v4beta1.CustomAttribute] for more details.
  200. //
  201. // At most 100 filterable and at most 100 unfilterable keys are supported. If
  202. // limit is exceeded, an error is thrown. Custom attributes are `unfilterable`
  203. // by default. These are filterable when the `filterable` flag is set to
  204. // `true`.
  205. //
  206. // Numeric custom attributes: each key can only map to one numeric value,
  207. // otherwise an error is thrown. Client can also filter on numeric custom
  208. // attributes using '>', '<' or '=' operators.
  209. //
  210. // String custom attributes: each key can map up to 50 string values. For
  211. // filterable string value, each value has a byte size of no more than 256B.
  212. // For unfilterable string values, the maximum byte size of a single key is
  213. // 64B. An error is thrown for any request exceeding the limit.
  214. // The maximum total byte size is 10KB.
  215. map<string, CustomAttribute> custom_attributes = 26;
  216. // Output only. Indicates if a summarized profile was created as part of the
  217. // profile creation API call. This flag does not indicate whether a profile is
  218. // searchable or not.
  219. bool processed = 27 [(google.api.field_behavior) = OUTPUT_ONLY];
  220. // Output only. Keyword snippet shows how the search result is related to a
  221. // search query. This is only returned in [SearchProfilesResponse][google.cloud.talent.v4beta1.SearchProfilesResponse].
  222. string keyword_snippet = 28 [(google.api.field_behavior) = OUTPUT_ONLY];
  223. // Output only. Candidate's availability signals.
  224. repeated AvailabilitySignal availability_signals = 70 [(google.api.field_behavior) = OUTPUT_ONLY];
  225. // Output only. Derived locations of the profile, resolved from [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses].
  226. //
  227. // [derived_addresses][google.cloud.talent.v4beta1.Profile.derived_addresses] are exactly matched to [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
  228. // same order.
  229. repeated Location derived_addresses = 64 [(google.api.field_behavior) = OUTPUT_ONLY];
  230. }
  231. // Candidate availability signal.
  232. message AvailabilitySignal {
  233. // Type of signal.
  234. AvailabilitySignalType type = 1;
  235. // Timestamp of when the given availability activity last happened.
  236. google.protobuf.Timestamp last_update_time = 2;
  237. // Indicates if the [last_update_time][google.cloud.talent.v4beta1.AvailabilitySignal.last_update_time] is within
  238. // [AvailabilityFilter.range][google.cloud.talent.v4beta1.AvailabilityFilter.range].
  239. //
  240. // Returned only in a search response when there is an [AvailabilityFilter][google.cloud.talent.v4beta1.AvailabilityFilter]
  241. // in [ProfileQuery.availability_filters][google.cloud.talent.v4beta1.ProfileQuery.availability_filters] where
  242. // [signal_type][google.cloud.talent.v4beta1.AvailabilityFilter.signal_type] matches [type][google.cloud.talent.v4beta1.AvailabilitySignal.type].
  243. google.protobuf.BoolValue filter_satisfied = 3;
  244. }
  245. // Resource that represents a resume.
  246. message Resume {
  247. // The format of a structured resume.
  248. enum ResumeType {
  249. // Default value.
  250. RESUME_TYPE_UNSPECIFIED = 0;
  251. // The profile contents in HR-XML format.
  252. // See https://schemas.liquid-technologies.com/hr-xml/2007-04-15/ for more
  253. // information about Human Resources XML.
  254. HRXML = 1;
  255. // Resume type not specified.
  256. OTHER_RESUME_TYPE = 2;
  257. }
  258. // Users can create a profile with only this field field, if [resume_type][google.cloud.talent.v4beta1.Resume.resume_type]
  259. // is [HRXML][google.cloud.talent.v4beta1.Resume.ResumeType.HRXML]. For example, the API parses this field and
  260. // creates a profile
  261. // with all structured fields populated. [EmploymentRecord][google.cloud.talent.v4beta1.EmploymentRecord],
  262. // [EducationRecord][google.cloud.talent.v4beta1.EducationRecord], and so on. An error is thrown if this field cannot be
  263. // parsed.
  264. //
  265. // Note that the use of the functionality offered by this field to extract
  266. // data from resumes is an Alpha feature and as such is not covered by any
  267. // SLA.
  268. string structured_resume = 1;
  269. // The format of [structured_resume][google.cloud.talent.v4beta1.Resume.structured_resume].
  270. ResumeType resume_type = 2;
  271. }
  272. // Resource that represents the name of a person.
  273. message PersonName {
  274. // Resource that represents a person's structured name.
  275. message PersonStructuredName {
  276. // Given/first name.
  277. //
  278. // It's derived from [formatted_name][google.cloud.talent.v4beta1.PersonName.formatted_name] if not provided.
  279. //
  280. // Number of characters allowed is 100.
  281. string given_name = 1;
  282. // Preferred given/first name or nickname.
  283. //
  284. // Number of characters allowed is 100.
  285. string preferred_name = 6;
  286. // Middle initial.
  287. //
  288. // It's derived from [formatted_name][google.cloud.talent.v4beta1.PersonName.formatted_name] if not provided.
  289. //
  290. // Number of characters allowed is 20.
  291. string middle_initial = 2;
  292. // Family/last name.
  293. //
  294. // It's derived from [formatted_name][google.cloud.talent.v4beta1.PersonName.formatted_name] if not provided.
  295. //
  296. // Number of characters allowed is 100.
  297. string family_name = 3;
  298. // Suffixes.
  299. //
  300. // Number of characters allowed is 20.
  301. repeated string suffixes = 4;
  302. // Prefixes.
  303. //
  304. // Number of characters allowed is 20.
  305. repeated string prefixes = 5;
  306. }
  307. // The name of a person. It can be one of
  308. // [formatted_name][google.cloud.talent.v4beta1.PersonName.formatted_name] or
  309. // [structured_name][google.cloud.talent.v4beta1.PersonName.structured_name].
  310. oneof person_name {
  311. // A string represents a person's full name. For example, "Dr. John Smith".
  312. //
  313. // Number of characters allowed is 100.
  314. string formatted_name = 1;
  315. // A person's name in a structured way (last name, first name, suffix, and
  316. // so on.)
  317. PersonStructuredName structured_name = 2;
  318. }
  319. // Preferred name for the person. This field is ignored if [structured_name][google.cloud.talent.v4beta1.PersonName.structured_name]
  320. // is provided.
  321. //
  322. // Number of characters allowed is 100.
  323. string preferred_name = 3;
  324. }
  325. // Resource that represents a address.
  326. message Address {
  327. // The usage of the address. For example, SCHOOL, WORK, PERSONAL.
  328. ContactInfoUsage usage = 1;
  329. // The address of a person. It can be one of
  330. // [unstructured_address][google.cloud.talent.v4beta1.Address.unstructured_address] or
  331. // [structured_address][google.cloud.talent.v4beta1.Address.structured_address].
  332. oneof address {
  333. // Unstructured address.
  334. //
  335. // For example, "1600 Amphitheatre Pkwy, Mountain View, CA 94043",
  336. // "Sunnyvale, California".
  337. //
  338. // Number of characters allowed is 100.
  339. string unstructured_address = 2;
  340. // Structured address that contains street address, city, state, country,
  341. // and so on.
  342. google.type.PostalAddress structured_address = 3;
  343. }
  344. // Indicates if it's the person's current address.
  345. google.protobuf.BoolValue current = 4;
  346. }
  347. // Resource that represents a person's email address.
  348. message Email {
  349. // The usage of the email address. For example, SCHOOL, WORK, PERSONAL.
  350. ContactInfoUsage usage = 1;
  351. // Email address.
  352. //
  353. // Number of characters allowed is 4,000.
  354. string email_address = 2;
  355. }
  356. // Resource that represents a person's telephone number.
  357. message Phone {
  358. // Enum that represents the type of the telephone.
  359. enum PhoneType {
  360. // Default value.
  361. PHONE_TYPE_UNSPECIFIED = 0;
  362. // A landline.
  363. LANDLINE = 1;
  364. // A mobile.
  365. MOBILE = 2;
  366. // A fax.
  367. FAX = 3;
  368. // A pager.
  369. PAGER = 4;
  370. // A TTY (test telephone) or TDD (telecommunication device for the deaf).
  371. TTY_OR_TDD = 5;
  372. // A voicemail.
  373. VOICEMAIL = 6;
  374. // A virtual telephone number is a number that can be routed to another
  375. // number and managed by the user via Web, SMS, IVR, and so on. It is
  376. // associated with a particular person, and may be routed to either a MOBILE
  377. // or LANDLINE number. The [phone usage][google.cloud.talent.v4beta1.ContactInfoUsage] should
  378. // be set to PERSONAL for these phone types. Some more information can be
  379. // found here: https://en.wikipedia.org/wiki/Personal_Numbers
  380. VIRTUAL = 7;
  381. // Voice over IP numbers. This includes TSoIP (Telephony Service over IP).
  382. VOIP = 8;
  383. // In some regions (e.g. the USA), it is impossible to distinguish between
  384. // fixed-line and mobile numbers by looking at the phone number itself.
  385. MOBILE_OR_LANDLINE = 9;
  386. }
  387. // The usage of the phone. For example, SCHOOL, WORK, PERSONAL.
  388. ContactInfoUsage usage = 1;
  389. // The phone type. For example, LANDLINE, MOBILE, FAX.
  390. PhoneType type = 2;
  391. // Phone number.
  392. //
  393. // Any phone formats are supported and only exact matches are performed on
  394. // searches. For example, if a phone number in profile is provided in the
  395. // format of "(xxx)xxx-xxxx", in profile searches the same phone format
  396. // has to be provided.
  397. //
  398. // Number of characters allowed is 20.
  399. string number = 3;
  400. // When this number is available. Any descriptive string is expected.
  401. //
  402. // Number of characters allowed is 100.
  403. string when_available = 4;
  404. }
  405. // Resource that represents a valid URI for a personal use.
  406. message PersonalUri {
  407. // The personal URI.
  408. //
  409. // Number of characters allowed is 4,000.
  410. string uri = 1;
  411. }
  412. // Resource that represents contact information other than phone, email,
  413. // URI and addresses.
  414. message AdditionalContactInfo {
  415. // The usage of this contact method. For example, SCHOOL, WORK, PERSONAL.
  416. ContactInfoUsage usage = 1;
  417. // The name of the contact method.
  418. //
  419. // For example, "hangout", "skype".
  420. //
  421. // Number of characters allowed is 100.
  422. string name = 2;
  423. // The contact id.
  424. //
  425. // Number of characters allowed is 100.
  426. string contact_id = 3;
  427. }
  428. // Resource that represents an employment record of a candidate.
  429. message EmploymentRecord {
  430. // Start date of the employment.
  431. google.type.Date start_date = 1;
  432. // End date of the employment.
  433. google.type.Date end_date = 2;
  434. // The name of the employer company/organization.
  435. //
  436. // For example, "Google", "Alphabet", and so on.
  437. //
  438. // Number of characters allowed is 250.
  439. string employer_name = 3;
  440. // The division name of the employment.
  441. //
  442. // For example, division, department, client, and so on.
  443. //
  444. // Number of characters allowed is 100.
  445. string division_name = 4;
  446. // The physical address of the employer.
  447. Address address = 5;
  448. // The job title of the employment.
  449. //
  450. // For example, "Software Engineer", "Data Scientist", and so on.
  451. //
  452. // Number of characters allowed is 250.
  453. string job_title = 6;
  454. // The description of job content.
  455. //
  456. // Number of characters allowed is 100,000.
  457. string job_description = 7;
  458. // If the jobs is a supervisor position.
  459. google.protobuf.BoolValue is_supervisor = 8;
  460. // If this employment is self-employed.
  461. google.protobuf.BoolValue is_self_employed = 9;
  462. // If this employment is current.
  463. google.protobuf.BoolValue is_current = 10;
  464. // Output only. The job title snippet shows how the [job_title][google.cloud.talent.v4beta1.EmploymentRecord.job_title] is related
  465. // to a search query. It's empty if the [job_title][google.cloud.talent.v4beta1.EmploymentRecord.job_title] isn't related to the
  466. // search query.
  467. string job_title_snippet = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
  468. // Output only. The job description snippet shows how the [job_description][google.cloud.talent.v4beta1.EmploymentRecord.job_description]
  469. // is related to a search query. It's empty if the [job_description][google.cloud.talent.v4beta1.EmploymentRecord.job_description] isn't
  470. // related to the search query.
  471. string job_description_snippet = 12 [(google.api.field_behavior) = OUTPUT_ONLY];
  472. // Output only. The employer name snippet shows how the [employer_name][google.cloud.talent.v4beta1.EmploymentRecord.employer_name] is
  473. // related to a search query. It's empty if the [employer_name][google.cloud.talent.v4beta1.EmploymentRecord.employer_name] isn't
  474. // related to the search query.
  475. string employer_name_snippet = 13 [(google.api.field_behavior) = OUTPUT_ONLY];
  476. }
  477. // Resource that represents an education record of a candidate.
  478. message EducationRecord {
  479. // The start date of the education.
  480. google.type.Date start_date = 1;
  481. // The end date of the education.
  482. google.type.Date end_date = 2;
  483. // The expected graduation date if currently pursuing a degree.
  484. google.type.Date expected_graduation_date = 3;
  485. // The name of the school or institution.
  486. //
  487. // For example, "Stanford University", "UC Berkeley", and so on.
  488. //
  489. // Number of characters allowed is 250.
  490. string school_name = 4;
  491. // The physical address of the education institution.
  492. Address address = 5;
  493. // The degree information. It can be one of
  494. // [degree_description][google.cloud.talent.v4beta1.EducationRecord.degree_description] or
  495. // [structured_degree][google.cloud.talent.v4beta1.EducationRecord.structured_degree].
  496. oneof degree {
  497. // The full description of the degree.
  498. //
  499. // For example, "Master of Science in Computer Science", "B.S in Math".
  500. //
  501. // Number of characters allowed is 100.
  502. string degree_description = 6;
  503. // The structured notation of the degree.
  504. Degree structured_degree = 7;
  505. }
  506. // The description of the education.
  507. //
  508. // Number of characters allowed is 100,000.
  509. string description = 8;
  510. // If this education is current.
  511. google.protobuf.BoolValue is_current = 9;
  512. // Output only. The school name snippet shows how the [school_name][google.cloud.talent.v4beta1.EducationRecord.school_name] is related to a
  513. // search query in search result. It's empty if the [school_name][google.cloud.talent.v4beta1.EducationRecord.school_name] isn't
  514. // related to the search query.
  515. string school_name_snippet = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
  516. // Output only. The job description snippet shows how the [Degree][google.cloud.talent.v4beta1.Degree] is related to a search
  517. // query in search result. It's empty if the [Degree][google.cloud.talent.v4beta1.Degree] isn't related to the
  518. // search query.
  519. string degree_snippet = 11 [(google.api.field_behavior) = OUTPUT_ONLY];
  520. }
  521. // Resource that represents a degree pursuing or acquired by a candidate.
  522. message Degree {
  523. // ISCED degree type.
  524. DegreeType degree_type = 1;
  525. // Full Degree name.
  526. //
  527. // For example, "B.S.", "Master of Arts", and so on.
  528. //
  529. // Number of characters allowed is 100.
  530. string degree_name = 2;
  531. // Fields of study for the degree.
  532. //
  533. // For example, "Computer science", "engineering".
  534. //
  535. // Number of characters allowed is 100.
  536. repeated string fields_of_study = 3;
  537. }
  538. // Resource that represents an individual or collaborative activity participated
  539. // in by a candidate, for example, an open-source project, a class assignment,
  540. // and so on.
  541. message Activity {
  542. // Activity display name.
  543. //
  544. // Number of characters allowed is 100.
  545. string display_name = 1;
  546. // Activity description.
  547. //
  548. // Number of characters allowed is 100,000.
  549. string description = 2;
  550. // Activity URI.
  551. //
  552. // Number of characters allowed is 4,000.
  553. string uri = 3;
  554. // The first creation date of the activity.
  555. google.type.Date create_date = 4;
  556. // The last update date of the activity.
  557. google.type.Date update_date = 5;
  558. // A list of team members involved in this activity.
  559. //
  560. // Number of characters allowed is 100.
  561. //
  562. // The limitation for max number of team members is 50.
  563. repeated string team_members = 6;
  564. // A list of skills used in this activity.
  565. //
  566. // The limitation for max number of skills used is 50.
  567. repeated Skill skills_used = 7;
  568. // Output only. Activity name snippet shows how the [display_name][google.cloud.talent.v4beta1.Activity.display_name] is related to a search
  569. // query. It's empty if the [display_name][google.cloud.talent.v4beta1.Activity.display_name] isn't related to the search
  570. // query.
  571. string activity_name_snippet = 8 [(google.api.field_behavior) = OUTPUT_ONLY];
  572. // Output only. Activity description snippet shows how the
  573. // [description][google.cloud.talent.v4beta1.Activity.description] is related to a search query. It's empty if the
  574. // [description][google.cloud.talent.v4beta1.Activity.description] isn't related to the search query.
  575. string activity_description_snippet = 9 [(google.api.field_behavior) = OUTPUT_ONLY];
  576. // Output only. Skill used snippet shows how the corresponding
  577. // [skills_used][google.cloud.talent.v4beta1.Activity.skills_used] are related to a search query. It's empty if the
  578. // corresponding [skills_used][google.cloud.talent.v4beta1.Activity.skills_used] are not related to the search query.
  579. repeated string skills_used_snippet = 10 [(google.api.field_behavior) = OUTPUT_ONLY];
  580. }
  581. // Resource that represents a publication resource of a candidate.
  582. message Publication {
  583. // A list of author names.
  584. //
  585. // Number of characters allowed is 100.
  586. repeated string authors = 1;
  587. // The title of the publication.
  588. //
  589. // Number of characters allowed is 100.
  590. string title = 2;
  591. // The description of the publication.
  592. //
  593. // Number of characters allowed is 100,000.
  594. string description = 3;
  595. // The journal name of the publication.
  596. //
  597. // Number of characters allowed is 100.
  598. string journal = 4;
  599. // Volume number.
  600. //
  601. // Number of characters allowed is 100.
  602. string volume = 5;
  603. // The publisher of the journal.
  604. //
  605. // Number of characters allowed is 100.
  606. string publisher = 6;
  607. // The publication date.
  608. google.type.Date publication_date = 7;
  609. // The publication type.
  610. //
  611. // Number of characters allowed is 100.
  612. string publication_type = 8;
  613. // ISBN number.
  614. //
  615. // Number of characters allowed is 100.
  616. string isbn = 9;
  617. }
  618. // Resource that represents the patent acquired by a candidate.
  619. message Patent {
  620. // Name of the patent.
  621. //
  622. // Number of characters allowed is 100.
  623. string display_name = 1;
  624. // A list of inventors' names.
  625. //
  626. // Number of characters allowed for each is 100.
  627. repeated string inventors = 2;
  628. // The status of the patent.
  629. //
  630. // Number of characters allowed is 100.
  631. string patent_status = 3;
  632. // The date the last time the status of the patent was checked.
  633. google.type.Date patent_status_date = 4;
  634. // The date that the patent was filed.
  635. google.type.Date patent_filing_date = 5;
  636. // The name of the patent office.
  637. //
  638. // Number of characters allowed is 100.
  639. string patent_office = 6;
  640. // The number of the patent.
  641. //
  642. // Number of characters allowed is 100.
  643. string patent_number = 7;
  644. // The description of the patent.
  645. //
  646. // Number of characters allowed is 100,000.
  647. string patent_description = 8;
  648. // The skills used in this patent.
  649. repeated Skill skills_used = 9;
  650. }