// 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 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; }