// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/talent/v4beta1/profile.proto

package com.google.cloud.talent.v4beta1;

public interface ProfileOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.talent.v4beta1.Profile)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * 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".
   * </pre>
   *
   * <code>string name = 1;</code>
   */
  java.lang.String getName();
  /**
   *
   *
   * <pre>
   * 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".
   * </pre>
   *
   * <code>string name = 1;</code>
   */
  com.google.protobuf.ByteString getNameBytes();

  /**
   *
   *
   * <pre>
   * Optional.
   * Profile's id in client system if available.
   * The maximum number of bytes allowed is 100.
   * </pre>
   *
   * <code>string external_id = 2;</code>
   */
  java.lang.String getExternalId();
  /**
   *
   *
   * <pre>
   * Optional.
   * Profile's id in client system if available.
   * The maximum number of bytes allowed is 100.
   * </pre>
   *
   * <code>string external_id = 2;</code>
   */
  com.google.protobuf.ByteString getExternalIdBytes();

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string source = 3;</code>
   */
  java.lang.String getSource();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string source = 3;</code>
   */
  com.google.protobuf.ByteString getSourceBytes();

  /**
   *
   *
   * <pre>
   * Optional.
   * The URI set by clients that links to this profile's client-side copy.
   * The maximum number of bytes allowed is 4000.
   * </pre>
   *
   * <code>string uri = 4;</code>
   */
  java.lang.String getUri();
  /**
   *
   *
   * <pre>
   * Optional.
   * The URI set by clients that links to this profile's client-side copy.
   * The maximum number of bytes allowed is 4000.
   * </pre>
   *
   * <code>string uri = 4;</code>
   */
  com.google.protobuf.ByteString getUriBytes();

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string group_id = 5;</code>
   */
  java.lang.String getGroupId();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>string group_id = 5;</code>
   */
  com.google.protobuf.ByteString getGroupIdBytes();

  /**
   *
   *
   * <pre>
   * Optional.
   * Indicates the hirable status of the candidate.
   * </pre>
   *
   * <code>.google.protobuf.BoolValue is_hirable = 6;</code>
   */
  boolean hasIsHirable();
  /**
   *
   *
   * <pre>
   * Optional.
   * Indicates the hirable status of the candidate.
   * </pre>
   *
   * <code>.google.protobuf.BoolValue is_hirable = 6;</code>
   */
  com.google.protobuf.BoolValue getIsHirable();
  /**
   *
   *
   * <pre>
   * Optional.
   * Indicates the hirable status of the candidate.
   * </pre>
   *
   * <code>.google.protobuf.BoolValue is_hirable = 6;</code>
   */
  com.google.protobuf.BoolValueOrBuilder getIsHirableOrBuilder();

  /**
   *
   *
   * <pre>
   * Optional.
   * The timestamp when the profile was first created at this source.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 7;</code>
   */
  boolean hasCreateTime();
  /**
   *
   *
   * <pre>
   * Optional.
   * The timestamp when the profile was first created at this source.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 7;</code>
   */
  com.google.protobuf.Timestamp getCreateTime();
  /**
   *
   *
   * <pre>
   * Optional.
   * The timestamp when the profile was first created at this source.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp create_time = 7;</code>
   */
  com.google.protobuf.TimestampOrBuilder getCreateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Optional.
   * The timestamp when the profile was last updated at this source.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 8;</code>
   */
  boolean hasUpdateTime();
  /**
   *
   *
   * <pre>
   * Optional.
   * The timestamp when the profile was last updated at this source.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 8;</code>
   */
  com.google.protobuf.Timestamp getUpdateTime();
  /**
   *
   *
   * <pre>
   * Optional.
   * The timestamp when the profile was last updated at this source.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 8;</code>
   */
  com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Optional.
   * The resume representing this profile.
   * </pre>
   *
   * <code>.google.cloud.talent.v4beta1.Resume resume = 53;</code>
   */
  boolean hasResume();
  /**
   *
   *
   * <pre>
   * Optional.
   * The resume representing this profile.
   * </pre>
   *
   * <code>.google.cloud.talent.v4beta1.Resume resume = 53;</code>
   */
  com.google.cloud.talent.v4beta1.Resume getResume();
  /**
   *
   *
   * <pre>
   * Optional.
   * The resume representing this profile.
   * </pre>
   *
   * <code>.google.cloud.talent.v4beta1.Resume resume = 53;</code>
   */
  com.google.cloud.talent.v4beta1.ResumeOrBuilder getResumeOrBuilder();

  /**
   *
   *
   * <pre>
   * Optional.
   * The names of the candidate this profile references.
   * Currently only one person name is supported.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.PersonName person_names = 11;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.PersonName> getPersonNamesList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The names of the candidate this profile references.
   * Currently only one person name is supported.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.PersonName person_names = 11;</code>
   */
  com.google.cloud.talent.v4beta1.PersonName getPersonNames(int index);
  /**
   *
   *
   * <pre>
   * Optional.
   * The names of the candidate this profile references.
   * Currently only one person name is supported.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.PersonName person_names = 11;</code>
   */
  int getPersonNamesCount();
  /**
   *
   *
   * <pre>
   * Optional.
   * The names of the candidate this profile references.
   * Currently only one person name is supported.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.PersonName person_names = 11;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.PersonNameOrBuilder>
      getPersonNamesOrBuilderList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The names of the candidate this profile references.
   * Currently only one person name is supported.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.PersonName person_names = 11;</code>
   */
  com.google.cloud.talent.v4beta1.PersonNameOrBuilder getPersonNamesOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's postal addresses.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Address addresses = 12;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.Address> getAddressesList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's postal addresses.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Address addresses = 12;</code>
   */
  com.google.cloud.talent.v4beta1.Address getAddresses(int index);
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's postal addresses.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Address addresses = 12;</code>
   */
  int getAddressesCount();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's postal addresses.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Address addresses = 12;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.AddressOrBuilder>
      getAddressesOrBuilderList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's postal addresses.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Address addresses = 12;</code>
   */
  com.google.cloud.talent.v4beta1.AddressOrBuilder getAddressesOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's email addresses.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Email email_addresses = 13;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.Email> getEmailAddressesList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's email addresses.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Email email_addresses = 13;</code>
   */
  com.google.cloud.talent.v4beta1.Email getEmailAddresses(int index);
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's email addresses.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Email email_addresses = 13;</code>
   */
  int getEmailAddressesCount();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's email addresses.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Email email_addresses = 13;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.EmailOrBuilder>
      getEmailAddressesOrBuilderList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's email addresses.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Email email_addresses = 13;</code>
   */
  com.google.cloud.talent.v4beta1.EmailOrBuilder getEmailAddressesOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's phone number(s).
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Phone phone_numbers = 14;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.Phone> getPhoneNumbersList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's phone number(s).
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Phone phone_numbers = 14;</code>
   */
  com.google.cloud.talent.v4beta1.Phone getPhoneNumbers(int index);
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's phone number(s).
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Phone phone_numbers = 14;</code>
   */
  int getPhoneNumbersCount();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's phone number(s).
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Phone phone_numbers = 14;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.PhoneOrBuilder>
      getPhoneNumbersOrBuilderList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's phone number(s).
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Phone phone_numbers = 14;</code>
   */
  com.google.cloud.talent.v4beta1.PhoneOrBuilder getPhoneNumbersOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's personal URIs.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.PersonalUri personal_uris = 15;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.PersonalUri> getPersonalUrisList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's personal URIs.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.PersonalUri personal_uris = 15;</code>
   */
  com.google.cloud.talent.v4beta1.PersonalUri getPersonalUris(int index);
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's personal URIs.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.PersonalUri personal_uris = 15;</code>
   */
  int getPersonalUrisCount();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's personal URIs.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.PersonalUri personal_uris = 15;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.PersonalUriOrBuilder>
      getPersonalUrisOrBuilderList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The candidate's personal URIs.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.PersonalUri personal_uris = 15;</code>
   */
  com.google.cloud.talent.v4beta1.PersonalUriOrBuilder getPersonalUrisOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.AdditionalContactInfo additional_contact_info = 16;
   * </code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.AdditionalContactInfo>
      getAdditionalContactInfoList();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.AdditionalContactInfo additional_contact_info = 16;
   * </code>
   */
  com.google.cloud.talent.v4beta1.AdditionalContactInfo getAdditionalContactInfo(int index);
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.AdditionalContactInfo additional_contact_info = 16;
   * </code>
   */
  int getAdditionalContactInfoCount();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.AdditionalContactInfo additional_contact_info = 16;
   * </code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.AdditionalContactInfoOrBuilder>
      getAdditionalContactInfoOrBuilderList();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.AdditionalContactInfo additional_contact_info = 16;
   * </code>
   */
  com.google.cloud.talent.v4beta1.AdditionalContactInfoOrBuilder getAdditionalContactInfoOrBuilder(
      int index);

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.EmploymentRecord employment_records = 17;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.EmploymentRecord> getEmploymentRecordsList();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.EmploymentRecord employment_records = 17;</code>
   */
  com.google.cloud.talent.v4beta1.EmploymentRecord getEmploymentRecords(int index);
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.EmploymentRecord employment_records = 17;</code>
   */
  int getEmploymentRecordsCount();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.EmploymentRecord employment_records = 17;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.EmploymentRecordOrBuilder>
      getEmploymentRecordsOrBuilderList();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.EmploymentRecord employment_records = 17;</code>
   */
  com.google.cloud.talent.v4beta1.EmploymentRecordOrBuilder getEmploymentRecordsOrBuilder(
      int index);

  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.EducationRecord education_records = 18;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.EducationRecord> getEducationRecordsList();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.EducationRecord education_records = 18;</code>
   */
  com.google.cloud.talent.v4beta1.EducationRecord getEducationRecords(int index);
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.EducationRecord education_records = 18;</code>
   */
  int getEducationRecordsCount();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.EducationRecord education_records = 18;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.EducationRecordOrBuilder>
      getEducationRecordsOrBuilderList();
  /**
   *
   *
   * <pre>
   * 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.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.EducationRecord education_records = 18;</code>
   */
  com.google.cloud.talent.v4beta1.EducationRecordOrBuilder getEducationRecordsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Optional.
   * The skill set of the candidate. It's highly recommended to provide as
   * much information as possible to help improve the search quality.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Skill skills = 19;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.Skill> getSkillsList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The skill set of the candidate. It's highly recommended to provide as
   * much information as possible to help improve the search quality.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Skill skills = 19;</code>
   */
  com.google.cloud.talent.v4beta1.Skill getSkills(int index);
  /**
   *
   *
   * <pre>
   * Optional.
   * The skill set of the candidate. It's highly recommended to provide as
   * much information as possible to help improve the search quality.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Skill skills = 19;</code>
   */
  int getSkillsCount();
  /**
   *
   *
   * <pre>
   * Optional.
   * The skill set of the candidate. It's highly recommended to provide as
   * much information as possible to help improve the search quality.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Skill skills = 19;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.SkillOrBuilder> getSkillsOrBuilderList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The skill set of the candidate. It's highly recommended to provide as
   * much information as possible to help improve the search quality.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Skill skills = 19;</code>
   */
  com.google.cloud.talent.v4beta1.SkillOrBuilder getSkillsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * 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].
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Activity activities = 20;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.Activity> getActivitiesList();
  /**
   *
   *
   * <pre>
   * 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].
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Activity activities = 20;</code>
   */
  com.google.cloud.talent.v4beta1.Activity getActivities(int index);
  /**
   *
   *
   * <pre>
   * 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].
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Activity activities = 20;</code>
   */
  int getActivitiesCount();
  /**
   *
   *
   * <pre>
   * 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].
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Activity activities = 20;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.ActivityOrBuilder>
      getActivitiesOrBuilderList();
  /**
   *
   *
   * <pre>
   * 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].
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Activity activities = 20;</code>
   */
  com.google.cloud.talent.v4beta1.ActivityOrBuilder getActivitiesOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Optional.
   * The publications published by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Publication publications = 21;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.Publication> getPublicationsList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The publications published by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Publication publications = 21;</code>
   */
  com.google.cloud.talent.v4beta1.Publication getPublications(int index);
  /**
   *
   *
   * <pre>
   * Optional.
   * The publications published by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Publication publications = 21;</code>
   */
  int getPublicationsCount();
  /**
   *
   *
   * <pre>
   * Optional.
   * The publications published by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Publication publications = 21;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.PublicationOrBuilder>
      getPublicationsOrBuilderList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The publications published by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Publication publications = 21;</code>
   */
  com.google.cloud.talent.v4beta1.PublicationOrBuilder getPublicationsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Optional.
   * The patents acquired by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Patent patents = 22;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.Patent> getPatentsList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The patents acquired by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Patent patents = 22;</code>
   */
  com.google.cloud.talent.v4beta1.Patent getPatents(int index);
  /**
   *
   *
   * <pre>
   * Optional.
   * The patents acquired by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Patent patents = 22;</code>
   */
  int getPatentsCount();
  /**
   *
   *
   * <pre>
   * Optional.
   * The patents acquired by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Patent patents = 22;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.PatentOrBuilder>
      getPatentsOrBuilderList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The patents acquired by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Patent patents = 22;</code>
   */
  com.google.cloud.talent.v4beta1.PatentOrBuilder getPatentsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Optional.
   * The certifications acquired by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Certification certifications = 23;</code>
   */
  java.util.List<com.google.cloud.talent.v4beta1.Certification> getCertificationsList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The certifications acquired by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Certification certifications = 23;</code>
   */
  com.google.cloud.talent.v4beta1.Certification getCertifications(int index);
  /**
   *
   *
   * <pre>
   * Optional.
   * The certifications acquired by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Certification certifications = 23;</code>
   */
  int getCertificationsCount();
  /**
   *
   *
   * <pre>
   * Optional.
   * The certifications acquired by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Certification certifications = 23;</code>
   */
  java.util.List<? extends com.google.cloud.talent.v4beta1.CertificationOrBuilder>
      getCertificationsOrBuilderList();
  /**
   *
   *
   * <pre>
   * Optional.
   * The certifications acquired by the candidate.
   * </pre>
   *
   * <code>repeated .google.cloud.talent.v4beta1.Certification certifications = 23;</code>
   */
  com.google.cloud.talent.v4beta1.CertificationOrBuilder getCertificationsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Output only. The resource names of the candidate's applications.
   * </pre>
   *
   * <code>repeated string applications = 47;</code>
   */
  java.util.List<java.lang.String> getApplicationsList();
  /**
   *
   *
   * <pre>
   * Output only. The resource names of the candidate's applications.
   * </pre>
   *
   * <code>repeated string applications = 47;</code>
   */
  int getApplicationsCount();
  /**
   *
   *
   * <pre>
   * Output only. The resource names of the candidate's applications.
   * </pre>
   *
   * <code>repeated string applications = 47;</code>
   */
  java.lang.String getApplications(int index);
  /**
   *
   *
   * <pre>
   * Output only. The resource names of the candidate's applications.
   * </pre>
   *
   * <code>repeated string applications = 47;</code>
   */
  com.google.protobuf.ByteString getApplicationsBytes(int index);

  /**
   *
   *
   * <pre>
   * Output only. The resource names of the candidate's assignments.
   * </pre>
   *
   * <code>repeated string assignments = 48;</code>
   */
  java.util.List<java.lang.String> getAssignmentsList();
  /**
   *
   *
   * <pre>
   * Output only. The resource names of the candidate's assignments.
   * </pre>
   *
   * <code>repeated string assignments = 48;</code>
   */
  int getAssignmentsCount();
  /**
   *
   *
   * <pre>
   * Output only. The resource names of the candidate's assignments.
   * </pre>
   *
   * <code>repeated string assignments = 48;</code>
   */
  java.lang.String getAssignments(int index);
  /**
   *
   *
   * <pre>
   * Output only. The resource names of the candidate's assignments.
   * </pre>
   *
   * <code>repeated string assignments = 48;</code>
   */
  com.google.protobuf.ByteString getAssignmentsBytes(int index);

  /**
   *
   *
   * <pre>
   * 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 '&gt;', '&lt;' 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.
   * </pre>
   *
   * <code>map&lt;string, .google.cloud.talent.v4beta1.CustomAttribute&gt; custom_attributes = 26;
   * </code>
   */
  int getCustomAttributesCount();
  /**
   *
   *
   * <pre>
   * 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 '&gt;', '&lt;' 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.
   * </pre>
   *
   * <code>map&lt;string, .google.cloud.talent.v4beta1.CustomAttribute&gt; custom_attributes = 26;
   * </code>
   */
  boolean containsCustomAttributes(java.lang.String key);
  /** Use {@link #getCustomAttributesMap()} instead. */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, com.google.cloud.talent.v4beta1.CustomAttribute>
      getCustomAttributes();
  /**
   *
   *
   * <pre>
   * 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 '&gt;', '&lt;' 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.
   * </pre>
   *
   * <code>map&lt;string, .google.cloud.talent.v4beta1.CustomAttribute&gt; custom_attributes = 26;
   * </code>
   */
  java.util.Map<java.lang.String, com.google.cloud.talent.v4beta1.CustomAttribute>
      getCustomAttributesMap();
  /**
   *
   *
   * <pre>
   * 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 '&gt;', '&lt;' 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.
   * </pre>
   *
   * <code>map&lt;string, .google.cloud.talent.v4beta1.CustomAttribute&gt; custom_attributes = 26;
   * </code>
   */
  com.google.cloud.talent.v4beta1.CustomAttribute getCustomAttributesOrDefault(
      java.lang.String key, com.google.cloud.talent.v4beta1.CustomAttribute defaultValue);
  /**
   *
   *
   * <pre>
   * 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 '&gt;', '&lt;' 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.
   * </pre>
   *
   * <code>map&lt;string, .google.cloud.talent.v4beta1.CustomAttribute&gt; custom_attributes = 26;
   * </code>
   */
  com.google.cloud.talent.v4beta1.CustomAttribute getCustomAttributesOrThrow(java.lang.String key);

  /**
   *
   *
   * <pre>
   * Output only. Indicates if the profile is fully processed and searchable.
   * </pre>
   *
   * <code>bool processed = 27;</code>
   */
  boolean getProcessed();

  /**
   *
   *
   * <pre>
   * 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].
   * </pre>
   *
   * <code>string keyword_snippet = 28;</code>
   */
  java.lang.String getKeywordSnippet();
  /**
   *
   *
   * <pre>
   * 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].
   * </pre>
   *
   * <code>string keyword_snippet = 28;</code>
   */
  com.google.protobuf.ByteString getKeywordSnippetBytes();
}
