From 0c412e87e20a1f79eed85399dc7e88505354f71b Mon Sep 17 00:00:00 2001 From: yoshi-automation Date: Fri, 23 Aug 2019 00:59:33 -0700 Subject: [PATCH] Regenerate talent client --- .../v4beta1/BatchOperationMetadata.java | 12 +- .../BatchOperationMetadataOrBuilder.java | 2 +- .../cloud/talent/v4beta1/CommonProto.java | 167 +- .../talent/v4beta1/JobOperationResult.java | 22 +- .../v4beta1/JobOperationResultOrBuilder.java | 2 +- .../cloud/talent/v4beta1/JobServiceProto.java | 322 +-- .../cloud/talent/v4beta1/ProfileQuery.java | 2300 +++++++++++------ .../talent/v4beta1/ProfileQueryOrBuilder.java | 500 ++-- .../google/cloud/talent/v4beta1/common.proto | 64 + .../google/cloud/talent/v4beta1/filters.proto | 107 +- .../cloud/talent/v4beta1/job_service.proto | 35 +- .../talent/v4beta1/profile_service.proto | 1 + .../google-cloud-talent/synth.metadata | 10 +- 13 files changed, 2260 insertions(+), 1284 deletions(-) diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/BatchOperationMetadata.java b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/BatchOperationMetadata.java index 6a86fa557b42..2b0d1a8e3960 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/BatchOperationMetadata.java +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/BatchOperationMetadata.java @@ -1,5 +1,5 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/cloud/talent/v4beta1/batch.proto +// source: google/cloud/talent/v4beta1/common.proto package com.google.cloud.talent.v4beta1; @@ -148,14 +148,14 @@ private BatchOperationMetadata( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.CommonProto .internal_static_google_cloud_talent_v4beta1_BatchOperationMetadata_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.CommonProto .internal_static_google_cloud_talent_v4beta1_BatchOperationMetadata_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.cloud.talent.v4beta1.BatchOperationMetadata.class, @@ -909,14 +909,14 @@ public static final class Builder extends com.google.protobuf.GeneratedMessageV3 // @@protoc_insertion_point(builder_implements:google.cloud.talent.v4beta1.BatchOperationMetadata) com.google.cloud.talent.v4beta1.BatchOperationMetadataOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.CommonProto .internal_static_google_cloud_talent_v4beta1_BatchOperationMetadata_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.CommonProto .internal_static_google_cloud_talent_v4beta1_BatchOperationMetadata_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.cloud.talent.v4beta1.BatchOperationMetadata.class, @@ -973,7 +973,7 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.CommonProto .internal_static_google_cloud_talent_v4beta1_BatchOperationMetadata_descriptor; } diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/BatchOperationMetadataOrBuilder.java b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/BatchOperationMetadataOrBuilder.java index e6d109c792a2..8afdef74c1a1 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/BatchOperationMetadataOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/BatchOperationMetadataOrBuilder.java @@ -1,5 +1,5 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/cloud/talent/v4beta1/batch.proto +// source: google/cloud/talent/v4beta1/common.proto package com.google.cloud.talent.v4beta1; diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/CommonProto.java b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/CommonProto.java index 18e0a54a7677..65b4ca219c30 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/CommonProto.java +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/CommonProto.java @@ -68,6 +68,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_cloud_talent_v4beta1_Rating_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_cloud_talent_v4beta1_Rating_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_talent_v4beta1_BatchOperationMetadata_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_talent_v4beta1_BatchOperationMetadata_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -156,74 +160,86 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "5\n\007outcome\030\007 \001(\0162$.google.cloud.talent.v" + "4beta1.Outcome\"E\n\006Rating\022\017\n\007overall\030\001 \001(" + "\001\022\013\n\003min\030\002 \001(\001\022\013\n\003max\030\003 \001(\001\022\020\n\010interval\030" - + "\004 \001(\001*y\n\013CompanySize\022\034\n\030COMPANY_SIZE_UNS" - + "PECIFIED\020\000\022\010\n\004MINI\020\001\022\t\n\005SMALL\020\002\022\013\n\007SMEDI" - + "UM\020\003\022\n\n\006MEDIUM\020\004\022\007\n\003BIG\020\005\022\n\n\006BIGGER\020\006\022\t\n" - + "\005GIANT\020\007*\342\001\n\nJobBenefit\022\033\n\027JOB_BENEFIT_U" - + "NSPECIFIED\020\000\022\016\n\nCHILD_CARE\020\001\022\n\n\006DENTAL\020\002" - + "\022\024\n\020DOMESTIC_PARTNER\020\003\022\022\n\016FLEXIBLE_HOURS" - + "\020\004\022\013\n\007MEDICAL\020\005\022\022\n\016LIFE_INSURANCE\020\006\022\022\n\016P" - + "ARENTAL_LEAVE\020\007\022\023\n\017RETIREMENT_PLAN\020\010\022\r\n\t" - + "SICK_DAYS\020\t\022\014\n\010VACATION\020\n\022\n\n\006VISION\020\013*\216\002" - + "\n\nDegreeType\022\033\n\027DEGREE_TYPE_UNSPECIFIED\020" - + "\000\022\025\n\021PRIMARY_EDUCATION\020\001\022\035\n\031LOWER_SECOND" - + "ARY_EDUCATION\020\002\022\035\n\031UPPER_SECONDARY_EDUCA" - + "TION\020\003\022\034\n\030ADULT_REMEDIAL_EDUCATION\020\004\022\034\n\030" - + "ASSOCIATES_OR_EQUIVALENT\020\005\022\033\n\027BACHELORS_" - + "OR_EQUIVALENT\020\006\022\031\n\025MASTERS_OR_EQUIVALENT" - + "\020\007\022\032\n\026DOCTORAL_OR_EQUIVALENT\020\010*\334\001\n\016Emplo" - + "ymentType\022\037\n\033EMPLOYMENT_TYPE_UNSPECIFIED" - + "\020\000\022\r\n\tFULL_TIME\020\001\022\r\n\tPART_TIME\020\002\022\016\n\nCONT" - + "RACTOR\020\003\022\024\n\020CONTRACT_TO_HIRE\020\004\022\r\n\tTEMPOR" - + "ARY\020\005\022\n\n\006INTERN\020\006\022\r\n\tVOLUNTEER\020\007\022\014\n\010PER_" - + "DIEM\020\010\022\022\n\016FLY_IN_FLY_OUT\020\t\022\031\n\025OTHER_EMPL" - + "OYMENT_TYPE\020\n*q\n\010JobLevel\022\031\n\025JOB_LEVEL_U" - + "NSPECIFIED\020\000\022\017\n\013ENTRY_LEVEL\020\001\022\017\n\013EXPERIE" - + "NCED\020\002\022\013\n\007MANAGER\020\003\022\014\n\010DIRECTOR\020\004\022\r\n\tEXE" - + "CUTIVE\020\005*\272\006\n\013JobCategory\022\034\n\030JOB_CATEGORY" - + "_UNSPECIFIED\020\000\022\032\n\026ACCOUNTING_AND_FINANCE" - + "\020\001\022\035\n\031ADMINISTRATIVE_AND_OFFICE\020\002\022\035\n\031ADV" - + "ERTISING_AND_MARKETING\020\003\022\017\n\013ANIMAL_CARE\020" - + "\004\022\032\n\026ART_FASHION_AND_DESIGN\020\005\022\027\n\023BUSINES" - + "S_OPERATIONS\020\006\022\033\n\027CLEANING_AND_FACILITIE" - + "S\020\007\022\023\n\017COMPUTER_AND_IT\020\010\022\020\n\014CONSTRUCTION" - + "\020\t\022\024\n\020CUSTOMER_SERVICE\020\n\022\r\n\tEDUCATION\020\013\022" - + "\034\n\030ENTERTAINMENT_AND_TRAVEL\020\014\022\030\n\024FARMING" - + "_AND_OUTDOORS\020\r\022\016\n\nHEALTHCARE\020\016\022\023\n\017HUMAN" - + "_RESOURCES\020\017\022\'\n#INSTALLATION_MAINTENANCE" - + "_AND_REPAIR\020\020\022\t\n\005LEGAL\020\021\022\016\n\nMANAGEMENT\020\022" - + "\022\037\n\033MANUFACTURING_AND_WAREHOUSE\020\023\022$\n MED" - + "IA_COMMUNICATIONS_AND_WRITING\020\024\022\026\n\022OIL_G" - + "AS_AND_MINING\020\025\022\036\n\032PERSONAL_CARE_AND_SER" - + "VICES\020\026\022\027\n\023PROTECTIVE_SERVICES\020\027\022\017\n\013REAL" - + "_ESTATE\020\030\022\036\n\032RESTAURANT_AND_HOSPITALITY\020" - + "\031\022\024\n\020SALES_AND_RETAIL\020\032\022\033\n\027SCIENCE_AND_E" - + "NGINEERING\020\033\022\"\n\036SOCIAL_SERVICES_AND_NON_" - + "PROFIT\020\034\022!\n\035SPORTS_FITNESS_AND_RECREATIO" - + "N\020\035\022 \n\034TRANSPORTATION_AND_LOGISTICS\020\036*e\n" - + "\rPostingRegion\022\036\n\032POSTING_REGION_UNSPECI" - + "FIED\020\000\022\027\n\023ADMINISTRATIVE_AREA\020\001\022\n\n\006NATIO" - + "N\020\002\022\017\n\013TELECOMMUTE\020\003*n\n\nVisibility\022\032\n\026VI" - + "SIBILITY_UNSPECIFIED\020\000\022\020\n\014ACCOUNT_ONLY\020\001" - + "\022\026\n\022SHARED_WITH_GOOGLE\020\002\022\026\n\022SHARED_WITH_" - + "PUBLIC\020\003\032\002\030\001*Z\n\020ContactInfoUsage\022\"\n\036CONT" - + "ACT_INFO_USAGE_UNSPECIFIED\020\000\022\014\n\010PERSONAL" - + "\020\001\022\010\n\004WORK\020\002\022\n\n\006SCHOOL\020\003*q\n\020HtmlSanitiza" - + "tion\022!\n\035HTML_SANITIZATION_UNSPECIFIED\020\000\022" - + "\036\n\032HTML_SANITIZATION_DISABLED\020\001\022\032\n\026SIMPL" - + "E_FORMATTING_ONLY\020\002*c\n\rCommuteMethod\022\036\n\032" - + "COMMUTE_METHOD_UNSPECIFIED\020\000\022\013\n\007DRIVING\020" - + "\001\022\013\n\007TRANSIT\020\002\022\013\n\007WALKING\020\003\022\013\n\007CYCLING\020\004" - + "*\242\001\n\025SkillProficiencyLevel\022\'\n#SKILL_PROF" - + "ICIENCY_LEVEL_UNSPECIFIED\020\000\022\r\n\tUNSKILLED" - + "\020\006\022\031\n\025FUNDAMENTAL_AWARENESS\020\001\022\n\n\006NOVICE\020" - + "\002\022\020\n\014INTERMEDIATE\020\003\022\014\n\010ADVANCED\020\004\022\n\n\006EXP" - + "ERT\020\005*f\n\007Outcome\022\027\n\023OUTCOME_UNSPECIFIED\020" - + "\000\022\014\n\010POSITIVE\020\001\022\013\n\007NEUTRAL\020\002\022\014\n\010NEGATIVE" - + "\020\003\022\031\n\025OUTCOME_NOT_AVAILABLE\020\004By\n\037com.goo" - + "gle.cloud.talent.v4beta1B\013CommonProtoP\001Z" - + "Agoogle.golang.org/genproto/googleapis/c" - + "loud/talent/v4beta1;talent\242\002\003CTSb\006proto3" + + "\004 \001(\001\"\314\003\n\026BatchOperationMetadata\022H\n\005stat" + + "e\030\001 \001(\01629.google.cloud.talent.v4beta1.Ba" + + "tchOperationMetadata.State\022\031\n\021state_desc" + + "ription\030\002 \001(\t\022\025\n\rsuccess_count\030\003 \001(\005\022\025\n\r" + + "failure_count\030\004 \001(\005\022\023\n\013total_count\030\005 \001(\005" + + "\022/\n\013create_time\030\006 \001(\0132\032.google.protobuf." + + "Timestamp\022/\n\013update_time\030\007 \001(\0132\032.google." + + "protobuf.Timestamp\022,\n\010end_time\030\010 \001(\0132\032.g" + + "oogle.protobuf.Timestamp\"z\n\005State\022\025\n\021STA" + + "TE_UNSPECIFIED\020\000\022\020\n\014INITIALIZING\020\001\022\016\n\nPR" + + "OCESSING\020\002\022\r\n\tSUCCEEDED\020\003\022\n\n\006FAILED\020\004\022\016\n" + + "\nCANCELLING\020\005\022\r\n\tCANCELLED\020\006*y\n\013CompanyS" + + "ize\022\034\n\030COMPANY_SIZE_UNSPECIFIED\020\000\022\010\n\004MIN" + + "I\020\001\022\t\n\005SMALL\020\002\022\013\n\007SMEDIUM\020\003\022\n\n\006MEDIUM\020\004\022" + + "\007\n\003BIG\020\005\022\n\n\006BIGGER\020\006\022\t\n\005GIANT\020\007*\342\001\n\nJobB" + + "enefit\022\033\n\027JOB_BENEFIT_UNSPECIFIED\020\000\022\016\n\nC" + + "HILD_CARE\020\001\022\n\n\006DENTAL\020\002\022\024\n\020DOMESTIC_PART" + + "NER\020\003\022\022\n\016FLEXIBLE_HOURS\020\004\022\013\n\007MEDICAL\020\005\022\022" + + "\n\016LIFE_INSURANCE\020\006\022\022\n\016PARENTAL_LEAVE\020\007\022\023" + + "\n\017RETIREMENT_PLAN\020\010\022\r\n\tSICK_DAYS\020\t\022\014\n\010VA" + + "CATION\020\n\022\n\n\006VISION\020\013*\216\002\n\nDegreeType\022\033\n\027D" + + "EGREE_TYPE_UNSPECIFIED\020\000\022\025\n\021PRIMARY_EDUC" + + "ATION\020\001\022\035\n\031LOWER_SECONDARY_EDUCATION\020\002\022\035" + + "\n\031UPPER_SECONDARY_EDUCATION\020\003\022\034\n\030ADULT_R" + + "EMEDIAL_EDUCATION\020\004\022\034\n\030ASSOCIATES_OR_EQU" + + "IVALENT\020\005\022\033\n\027BACHELORS_OR_EQUIVALENT\020\006\022\031" + + "\n\025MASTERS_OR_EQUIVALENT\020\007\022\032\n\026DOCTORAL_OR" + + "_EQUIVALENT\020\010*\334\001\n\016EmploymentType\022\037\n\033EMPL" + + "OYMENT_TYPE_UNSPECIFIED\020\000\022\r\n\tFULL_TIME\020\001" + + "\022\r\n\tPART_TIME\020\002\022\016\n\nCONTRACTOR\020\003\022\024\n\020CONTR" + + "ACT_TO_HIRE\020\004\022\r\n\tTEMPORARY\020\005\022\n\n\006INTERN\020\006" + + "\022\r\n\tVOLUNTEER\020\007\022\014\n\010PER_DIEM\020\010\022\022\n\016FLY_IN_" + + "FLY_OUT\020\t\022\031\n\025OTHER_EMPLOYMENT_TYPE\020\n*q\n\010" + + "JobLevel\022\031\n\025JOB_LEVEL_UNSPECIFIED\020\000\022\017\n\013E" + + "NTRY_LEVEL\020\001\022\017\n\013EXPERIENCED\020\002\022\013\n\007MANAGER" + + "\020\003\022\014\n\010DIRECTOR\020\004\022\r\n\tEXECUTIVE\020\005*\272\006\n\013JobC" + + "ategory\022\034\n\030JOB_CATEGORY_UNSPECIFIED\020\000\022\032\n" + + "\026ACCOUNTING_AND_FINANCE\020\001\022\035\n\031ADMINISTRAT" + + "IVE_AND_OFFICE\020\002\022\035\n\031ADVERTISING_AND_MARK" + + "ETING\020\003\022\017\n\013ANIMAL_CARE\020\004\022\032\n\026ART_FASHION_" + + "AND_DESIGN\020\005\022\027\n\023BUSINESS_OPERATIONS\020\006\022\033\n" + + "\027CLEANING_AND_FACILITIES\020\007\022\023\n\017COMPUTER_A" + + "ND_IT\020\010\022\020\n\014CONSTRUCTION\020\t\022\024\n\020CUSTOMER_SE" + + "RVICE\020\n\022\r\n\tEDUCATION\020\013\022\034\n\030ENTERTAINMENT_" + + "AND_TRAVEL\020\014\022\030\n\024FARMING_AND_OUTDOORS\020\r\022\016" + + "\n\nHEALTHCARE\020\016\022\023\n\017HUMAN_RESOURCES\020\017\022\'\n#I" + + "NSTALLATION_MAINTENANCE_AND_REPAIR\020\020\022\t\n\005" + + "LEGAL\020\021\022\016\n\nMANAGEMENT\020\022\022\037\n\033MANUFACTURING" + + "_AND_WAREHOUSE\020\023\022$\n MEDIA_COMMUNICATIONS" + + "_AND_WRITING\020\024\022\026\n\022OIL_GAS_AND_MINING\020\025\022\036" + + "\n\032PERSONAL_CARE_AND_SERVICES\020\026\022\027\n\023PROTEC" + + "TIVE_SERVICES\020\027\022\017\n\013REAL_ESTATE\020\030\022\036\n\032REST" + + "AURANT_AND_HOSPITALITY\020\031\022\024\n\020SALES_AND_RE" + + "TAIL\020\032\022\033\n\027SCIENCE_AND_ENGINEERING\020\033\022\"\n\036S" + + "OCIAL_SERVICES_AND_NON_PROFIT\020\034\022!\n\035SPORT" + + "S_FITNESS_AND_RECREATION\020\035\022 \n\034TRANSPORTA" + + "TION_AND_LOGISTICS\020\036*e\n\rPostingRegion\022\036\n" + + "\032POSTING_REGION_UNSPECIFIED\020\000\022\027\n\023ADMINIS" + + "TRATIVE_AREA\020\001\022\n\n\006NATION\020\002\022\017\n\013TELECOMMUT" + + "E\020\003*n\n\nVisibility\022\032\n\026VISIBILITY_UNSPECIF" + + "IED\020\000\022\020\n\014ACCOUNT_ONLY\020\001\022\026\n\022SHARED_WITH_G" + + "OOGLE\020\002\022\026\n\022SHARED_WITH_PUBLIC\020\003\032\002\030\001*Z\n\020C" + + "ontactInfoUsage\022\"\n\036CONTACT_INFO_USAGE_UN" + + "SPECIFIED\020\000\022\014\n\010PERSONAL\020\001\022\010\n\004WORK\020\002\022\n\n\006S" + + "CHOOL\020\003*q\n\020HtmlSanitization\022!\n\035HTML_SANI" + + "TIZATION_UNSPECIFIED\020\000\022\036\n\032HTML_SANITIZAT" + + "ION_DISABLED\020\001\022\032\n\026SIMPLE_FORMATTING_ONLY" + + "\020\002*c\n\rCommuteMethod\022\036\n\032COMMUTE_METHOD_UN" + + "SPECIFIED\020\000\022\013\n\007DRIVING\020\001\022\013\n\007TRANSIT\020\002\022\013\n" + + "\007WALKING\020\003\022\013\n\007CYCLING\020\004*\242\001\n\025SkillProfici" + + "encyLevel\022\'\n#SKILL_PROFICIENCY_LEVEL_UNS" + + "PECIFIED\020\000\022\r\n\tUNSKILLED\020\006\022\031\n\025FUNDAMENTAL" + + "_AWARENESS\020\001\022\n\n\006NOVICE\020\002\022\020\n\014INTERMEDIATE" + + "\020\003\022\014\n\010ADVANCED\020\004\022\n\n\006EXPERT\020\005*f\n\007Outcome\022" + + "\027\n\023OUTCOME_UNSPECIFIED\020\000\022\014\n\010POSITIVE\020\001\022\013" + + "\n\007NEUTRAL\020\002\022\014\n\010NEGATIVE\020\003\022\031\n\025OUTCOME_NOT" + + "_AVAILABLE\020\004By\n\037com.google.cloud.talent." + + "v4beta1B\013CommonProtoP\001ZAgoogle.golang.or" + + "g/genproto/googleapis/cloud/talent/v4bet" + + "a1;talent\242\002\003CTSb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -368,6 +384,21 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new java.lang.String[] { "Overall", "Min", "Max", "Interval", }); + internal_static_google_cloud_talent_v4beta1_BatchOperationMetadata_descriptor = + getDescriptor().getMessageTypes().get(12); + internal_static_google_cloud_talent_v4beta1_BatchOperationMetadata_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_talent_v4beta1_BatchOperationMetadata_descriptor, + new java.lang.String[] { + "State", + "StateDescription", + "SuccessCount", + "FailureCount", + "TotalCount", + "CreateTime", + "UpdateTime", + "EndTime", + }); com.google.api.AnnotationsProto.getDescriptor(); com.google.protobuf.TimestampProto.getDescriptor(); com.google.protobuf.WrappersProto.getDescriptor(); diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobOperationResult.java b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobOperationResult.java index 58a6cac1b1b8..33f83e1b076b 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobOperationResult.java +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobOperationResult.java @@ -1,5 +1,5 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/cloud/talent/v4beta1/batch.proto +// source: google/cloud/talent/v4beta1/job_service.proto package com.google.cloud.talent.v4beta1; @@ -94,14 +94,14 @@ private JobOperationResult( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.JobServiceProto .internal_static_google_cloud_talent_v4beta1_JobOperationResult_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.JobServiceProto .internal_static_google_cloud_talent_v4beta1_JobOperationResult_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.cloud.talent.v4beta1.JobOperationResult.class, @@ -297,14 +297,14 @@ private JobResult( } public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.JobServiceProto .internal_static_google_cloud_talent_v4beta1_JobOperationResult_JobResult_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.JobServiceProto .internal_static_google_cloud_talent_v4beta1_JobOperationResult_JobResult_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.cloud.talent.v4beta1.JobOperationResult.JobResult.class, @@ -611,14 +611,14 @@ public static final class Builder // @@protoc_insertion_point(builder_implements:google.cloud.talent.v4beta1.JobOperationResult.JobResult) com.google.cloud.talent.v4beta1.JobOperationResult.JobResultOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.JobServiceProto .internal_static_google_cloud_talent_v4beta1_JobOperationResult_JobResult_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.JobServiceProto .internal_static_google_cloud_talent_v4beta1_JobOperationResult_JobResult_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.cloud.talent.v4beta1.JobOperationResult.JobResult.class, @@ -659,7 +659,7 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.JobServiceProto .internal_static_google_cloud_talent_v4beta1_JobOperationResult_JobResult_descriptor; } @@ -1523,14 +1523,14 @@ public static final class Builder extends com.google.protobuf.GeneratedMessageV3 // @@protoc_insertion_point(builder_implements:google.cloud.talent.v4beta1.JobOperationResult) com.google.cloud.talent.v4beta1.JobOperationResultOrBuilder { public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.JobServiceProto .internal_static_google_cloud_talent_v4beta1_JobOperationResult_descriptor; } @java.lang.Override protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internalGetFieldAccessorTable() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.JobServiceProto .internal_static_google_cloud_talent_v4beta1_JobOperationResult_fieldAccessorTable .ensureFieldAccessorsInitialized( com.google.cloud.talent.v4beta1.JobOperationResult.class, @@ -1567,7 +1567,7 @@ public Builder clear() { @java.lang.Override public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() { - return com.google.cloud.talent.v4beta1.BatchProto + return com.google.cloud.talent.v4beta1.JobServiceProto .internal_static_google_cloud_talent_v4beta1_JobOperationResult_descriptor; } diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobOperationResultOrBuilder.java b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobOperationResultOrBuilder.java index 89a6c0c58245..6762c4737d19 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobOperationResultOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobOperationResultOrBuilder.java @@ -1,5 +1,5 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! -// source: google/cloud/talent/v4beta1/batch.proto +// source: google/cloud/talent/v4beta1/job_service.proto package com.google.cloud.talent.v4beta1; diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobServiceProto.java b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobServiceProto.java index 9f2e5f7e9f11..1f665b88fcf5 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobServiceProto.java +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/JobServiceProto.java @@ -68,6 +68,14 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r internal_static_google_cloud_talent_v4beta1_BatchUpdateJobsRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_google_cloud_talent_v4beta1_BatchUpdateJobsRequest_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_talent_v4beta1_JobOperationResult_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_talent_v4beta1_JobOperationResult_fieldAccessorTable; + static final com.google.protobuf.Descriptors.Descriptor + internal_static_google_cloud_talent_v4beta1_JobOperationResult_JobResult_descriptor; + static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_google_cloud_talent_v4beta1_JobOperationResult_JobResult_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { return descriptor; @@ -80,150 +88,154 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { "\n-google/cloud/talent/v4beta1/job_servic" + "e.proto\022\033google.cloud.talent.v4beta1\032\034go" + "ogle/api/annotations.proto\032\027google/api/c" - + "lient.proto\032\'google/cloud/talent/v4beta1" - + "/batch.proto\032(google/cloud/talent/v4beta" - + "1/common.proto\032)google/cloud/talent/v4be" - + "ta1/filters.proto\032+google/cloud/talent/v" - + "4beta1/histogram.proto\032%google/cloud/tal" - + "ent/v4beta1/job.proto\032#google/longrunnin" - + "g/operations.proto\032\031google/protobuf/any." - + "proto\032\036google/protobuf/duration.proto\032\033g" - + "oogle/protobuf/empty.proto\032 google/proto" - + "buf/field_mask.proto\"Q\n\020CreateJobRequest" - + "\022\016\n\006parent\030\001 \001(\t\022-\n\003job\030\002 \001(\0132 .google.c" - + "loud.talent.v4beta1.Job\"\035\n\rGetJobRequest" - + "\022\014\n\004name\030\001 \001(\t\"r\n\020UpdateJobRequest\022-\n\003jo" - + "b\030\001 \001(\0132 .google.cloud.talent.v4beta1.Jo" - + "b\022/\n\013update_mask\030\002 \001(\0132\032.google.protobuf" - + ".FieldMask\" \n\020DeleteJobRequest\022\014\n\004name\030\001" - + " \001(\t\"8\n\026BatchDeleteJobsRequest\022\016\n\006parent" - + "\030\001 \001(\t\022\016\n\006filter\030\002 \001(\t\"\220\001\n\017ListJobsReque" - + "st\022\016\n\006parent\030\001 \001(\t\022\016\n\006filter\030\002 \001(\t\022\022\n\npa" - + "ge_token\030\003 \001(\t\022\021\n\tpage_size\030\004 \001(\005\0226\n\010job" - + "_view\030\005 \001(\0162$.google.cloud.talent.v4beta" - + "1.JobView\"\234\001\n\020ListJobsResponse\022.\n\004jobs\030\001" - + " \003(\0132 .google.cloud.talent.v4beta1.Job\022\027" - + "\n\017next_page_token\030\002 \001(\t\022?\n\010metadata\030\003 \001(" - + "\0132-.google.cloud.talent.v4beta1.Response" - + "Metadata\"\240\t\n\021SearchJobsRequest\022\016\n\006parent" - + "\030\001 \001(\t\022N\n\013search_mode\030\002 \001(\01629.google.clo" - + "ud.talent.v4beta1.SearchJobsRequest.Sear" - + "chMode\022F\n\020request_metadata\030\003 \001(\0132,.googl" - + "e.cloud.talent.v4beta1.RequestMetadata\0228" - + "\n\tjob_query\030\004 \001(\0132%.google.cloud.talent." - + "v4beta1.JobQuery\022\031\n\021enable_broadening\030\005 " - + "\001(\010\022#\n\033require_precise_result_size\030\006 \001(\010" - + "\022F\n\021histogram_queries\030\007 \003(\0132+.google.clo" - + "ud.talent.v4beta1.HistogramQuery\0226\n\010job_" - + "view\030\010 \001(\0162$.google.cloud.talent.v4beta1" - + ".JobView\022\016\n\006offset\030\t \001(\005\022\021\n\tpage_size\030\n " - + "\001(\005\022\022\n\npage_token\030\013 \001(\t\022\020\n\010order_by\030\014 \001(" - + "\t\022b\n\025diversification_level\030\r \001(\0162C.googl" - + "e.cloud.talent.v4beta1.SearchJobsRequest" - + ".DiversificationLevel\022]\n\023custom_ranking_" - + "info\030\016 \001(\0132@.google.cloud.talent.v4beta1" - + ".SearchJobsRequest.CustomRankingInfo\022\035\n\025" - + "disable_keyword_match\030\020 \001(\010\032\220\002\n\021CustomRa" - + "nkingInfo\022j\n\020importance_level\030\001 \001(\0162P.go" - + "ogle.cloud.talent.v4beta1.SearchJobsRequ" - + "est.CustomRankingInfo.ImportanceLevel\022\032\n" - + "\022ranking_expression\030\002 \001(\t\"s\n\017ImportanceL" - + "evel\022 \n\034IMPORTANCE_LEVEL_UNSPECIFIED\020\000\022\010" - + "\n\004NONE\020\001\022\007\n\003LOW\020\002\022\010\n\004MILD\020\003\022\n\n\006MEDIUM\020\004\022" - + "\010\n\004HIGH\020\005\022\013\n\007EXTREME\020\006\"R\n\nSearchMode\022\033\n\027" - + "SEARCH_MODE_UNSPECIFIED\020\000\022\016\n\nJOB_SEARCH\020" - + "\001\022\027\n\023FEATURED_JOB_SEARCH\020\002\"W\n\024Diversific" - + "ationLevel\022%\n!DIVERSIFICATION_LEVEL_UNSP" - + "ECIFIED\020\000\022\014\n\010DISABLED\020\001\022\n\n\006SIMPLE\020\002\"\327\006\n\022" - + "SearchJobsResponse\022R\n\rmatching_jobs\030\001 \003(" - + "\0132;.google.cloud.talent.v4beta1.SearchJo" - + "bsResponse.MatchingJob\022R\n\027histogram_quer" - + "y_results\030\002 \003(\01321.google.cloud.talent.v4" - + "beta1.HistogramQueryResult\022\027\n\017next_page_" - + "token\030\003 \001(\t\022?\n\020location_filters\030\004 \003(\0132%." - + "google.cloud.talent.v4beta1.Location\022\034\n\024" - + "estimated_total_size\030\005 \001(\005\022\022\n\ntotal_size" - + "\030\006 \001(\005\022?\n\010metadata\030\007 \001(\0132-.google.cloud." - + "talent.v4beta1.ResponseMetadata\022\"\n\032broad" - + "ened_query_jobs_count\030\010 \001(\005\022I\n\020spell_cor" - + "rection\030\t \001(\0132/.google.cloud.talent.v4be" - + "ta1.SpellingCorrection\032\334\001\n\013MatchingJob\022-" - + "\n\003job\030\001 \001(\0132 .google.cloud.talent.v4beta" - + "1.Job\022\023\n\013job_summary\030\002 \001(\t\022\031\n\021job_title_" - + "snippet\030\003 \001(\t\022\033\n\023search_text_snippet\030\004 \001" - + "(\t\022Q\n\014commute_info\030\005 \001(\0132;.google.cloud." - + "talent.v4beta1.SearchJobsResponse.Commut" - + "eInfo\032~\n\013CommuteInfo\022;\n\014job_location\030\001 \001" - + "(\0132%.google.cloud.talent.v4beta1.Locatio" - + "n\0222\n\017travel_duration\030\002 \001(\0132\031.google.prot" - + "obuf.Duration\"X\n\026BatchCreateJobsRequest\022" - + "\016\n\006parent\030\001 \001(\t\022.\n\004jobs\030\002 \003(\0132 .google.c" - + "loud.talent.v4beta1.Job\"\211\001\n\026BatchUpdateJ" - + "obsRequest\022\016\n\006parent\030\001 \001(\t\022.\n\004jobs\030\002 \003(\013" - + "2 .google.cloud.talent.v4beta1.Job\022/\n\013up" - + "date_mask\030\003 \001(\0132\032.google.protobuf.FieldM" - + "ask*v\n\007JobView\022\030\n\024JOB_VIEW_UNSPECIFIED\020\000" - + "\022\024\n\020JOB_VIEW_ID_ONLY\020\001\022\024\n\020JOB_VIEW_MINIM" - + "AL\020\002\022\022\n\016JOB_VIEW_SMALL\020\003\022\021\n\rJOB_VIEW_FUL" - + "L\020\0042\220\021\n\nJobService\022\274\001\n\tCreateJob\022-.googl" - + "e.cloud.talent.v4beta1.CreateJobRequest\032" - + " .google.cloud.talent.v4beta1.Job\"^\202\323\344\223\002" - + "X\"+/v4beta1/{parent=projects/*/tenants/*" - + "}/jobs:\001*Z&\"!/v4beta1/{parent=projects/*" - + "}/jobs:\001*\022\260\001\n\006GetJob\022*.google.cloud.tale" - + "nt.v4beta1.GetJobRequest\032 .google.cloud." - + "talent.v4beta1.Job\"X\202\323\344\223\002R\022+/v4beta1/{na" - + "me=projects/*/tenants/*/jobs/*}Z#\022!/v4be" - + "ta1/{name=projects/*/jobs/*}\022\304\001\n\tUpdateJ" - + "ob\022-.google.cloud.talent.v4beta1.UpdateJ" - + "obRequest\032 .google.cloud.talent.v4beta1." - + "Job\"f\202\323\344\223\002`2//v4beta1/{job.name=projects" - + "/*/tenants/*/jobs/*}:\001*Z*2%/v4beta1/{job" - + ".name=projects/*/jobs/*}:\001*\022\254\001\n\tDeleteJo" - + "b\022-.google.cloud.talent.v4beta1.DeleteJo" - + "bRequest\032\026.google.protobuf.Empty\"X\202\323\344\223\002R" - + "*+/v4beta1/{name=projects/*/tenants/*/jo" - + "bs/*}Z#*!/v4beta1/{name=projects/*/jobs/" - + "*}\022\301\001\n\010ListJobs\022,.google.cloud.talent.v4" - + "beta1.ListJobsRequest\032-.google.cloud.tal" - + "ent.v4beta1.ListJobsResponse\"X\202\323\344\223\002R\022+/v" - + "4beta1/{parent=projects/*/tenants/*}/job" - + "sZ#\022!/v4beta1/{parent=projects/*}/jobs\022\323" - + "\001\n\017BatchDeleteJobs\0223.google.cloud.talent" - + ".v4beta1.BatchDeleteJobsRequest\032\026.google" - + ".protobuf.Empty\"s\202\323\344\223\002m\"7/v4beta1/{paren" - + "t=projects/*/tenants/*}/jobs:batchDelete" - + ":\001*Z/\"-/v4beta1/{parent=projects/*}/jobs" - + ":batchDelete\022\333\001\n\nSearchJobs\022..google.clo" - + "ud.talent.v4beta1.SearchJobsRequest\032/.go" - + "ogle.cloud.talent.v4beta1.SearchJobsResp" - + "onse\"l\202\323\344\223\002f\"2/v4beta1/{parent=projects/" - + "*/tenants/*}/jobs:search:\001*Z-\"(/v4beta1/" - + "{parent=projects/*}/jobs:search:\001*\022\363\001\n\022S" - + "earchJobsForAlert\022..google.cloud.talent." - + "v4beta1.SearchJobsRequest\032/.google.cloud" - + ".talent.v4beta1.SearchJobsResponse\"|\202\323\344\223" - + "\002v\":/v4beta1/{parent=projects/*/tenants/" - + "*}/jobs:searchForAlert:\001*Z5\"0/v4beta1/{p" - + "arent=projects/*}/jobs:searchForAlert:\001*" - + "\022\335\001\n\017BatchCreateJobs\0223.google.cloud.tale" - + "nt.v4beta1.BatchCreateJobsRequest\032\035.goog" - + "le.longrunning.Operation\"v\202\323\344\223\002p\"7/v4bet" - + "a1/{parent=projects/*/tenants/*}/jobs:ba" - + "tchCreate:\001*Z2\"-/v4beta1/{parent=project" - + "s/*}/jobs:batchCreate:\001*\022\335\001\n\017BatchUpdate" - + "Jobs\0223.google.cloud.talent.v4beta1.Batch" - + "UpdateJobsRequest\032\035.google.longrunning.O" - + "peration\"v\202\323\344\223\002p\"7/v4beta1/{parent=proje" - + "cts/*/tenants/*}/jobs:batchUpdate:\001*Z2\"-" - + "/v4beta1/{parent=projects/*}/jobs:batchU" - + "pdate:\001*\032l\312A\023jobs.googleapis.com\322AShttps" - + "://www.googleapis.com/auth/cloud-platfor" - + "m,https://www.googleapis.com/auth/jobsB}" - + "\n\037com.google.cloud.talent.v4beta1B\017JobSe" - + "rviceProtoP\001ZAgoogle.golang.org/genproto" - + "/googleapis/cloud/talent/v4beta1;talent\242" - + "\002\003CTSb\006proto3" + + "lient.proto\032(google/cloud/talent/v4beta1" + + "/common.proto\032)google/cloud/talent/v4bet" + + "a1/filters.proto\032+google/cloud/talent/v4" + + "beta1/histogram.proto\032%google/cloud/tale" + + "nt/v4beta1/job.proto\032#google/longrunning" + + "/operations.proto\032\031google/protobuf/any.p" + + "roto\032\036google/protobuf/duration.proto\032\033go" + + "ogle/protobuf/empty.proto\032 google/protob" + + "uf/field_mask.proto\032\027google/rpc/status.p" + + "roto\"Q\n\020CreateJobRequest\022\016\n\006parent\030\001 \001(\t" + + "\022-\n\003job\030\002 \001(\0132 .google.cloud.talent.v4be" + + "ta1.Job\"\035\n\rGetJobRequest\022\014\n\004name\030\001 \001(\t\"r" + + "\n\020UpdateJobRequest\022-\n\003job\030\001 \001(\0132 .google" + + ".cloud.talent.v4beta1.Job\022/\n\013update_mask" + + "\030\002 \001(\0132\032.google.protobuf.FieldMask\" \n\020De" + + "leteJobRequest\022\014\n\004name\030\001 \001(\t\"8\n\026BatchDel" + + "eteJobsRequest\022\016\n\006parent\030\001 \001(\t\022\016\n\006filter" + + "\030\002 \001(\t\"\220\001\n\017ListJobsRequest\022\016\n\006parent\030\001 \001" + + "(\t\022\016\n\006filter\030\002 \001(\t\022\022\n\npage_token\030\003 \001(\t\022\021" + + "\n\tpage_size\030\004 \001(\005\0226\n\010job_view\030\005 \001(\0162$.go" + + "ogle.cloud.talent.v4beta1.JobView\"\234\001\n\020Li" + + "stJobsResponse\022.\n\004jobs\030\001 \003(\0132 .google.cl" + + "oud.talent.v4beta1.Job\022\027\n\017next_page_toke" + + "n\030\002 \001(\t\022?\n\010metadata\030\003 \001(\0132-.google.cloud" + + ".talent.v4beta1.ResponseMetadata\"\240\t\n\021Sea" + + "rchJobsRequest\022\016\n\006parent\030\001 \001(\t\022N\n\013search" + + "_mode\030\002 \001(\01629.google.cloud.talent.v4beta" + + "1.SearchJobsRequest.SearchMode\022F\n\020reques" + + "t_metadata\030\003 \001(\0132,.google.cloud.talent.v" + + "4beta1.RequestMetadata\0228\n\tjob_query\030\004 \001(" + + "\0132%.google.cloud.talent.v4beta1.JobQuery" + + "\022\031\n\021enable_broadening\030\005 \001(\010\022#\n\033require_p" + + "recise_result_size\030\006 \001(\010\022F\n\021histogram_qu" + + "eries\030\007 \003(\0132+.google.cloud.talent.v4beta" + + "1.HistogramQuery\0226\n\010job_view\030\010 \001(\0162$.goo" + + "gle.cloud.talent.v4beta1.JobView\022\016\n\006offs" + + "et\030\t \001(\005\022\021\n\tpage_size\030\n \001(\005\022\022\n\npage_toke" + + "n\030\013 \001(\t\022\020\n\010order_by\030\014 \001(\t\022b\n\025diversifica" + + "tion_level\030\r \001(\0162C.google.cloud.talent.v" + + "4beta1.SearchJobsRequest.Diversification" + + "Level\022]\n\023custom_ranking_info\030\016 \001(\0132@.goo" + + "gle.cloud.talent.v4beta1.SearchJobsReque" + + "st.CustomRankingInfo\022\035\n\025disable_keyword_" + + "match\030\020 \001(\010\032\220\002\n\021CustomRankingInfo\022j\n\020imp" + + "ortance_level\030\001 \001(\0162P.google.cloud.talen" + + "t.v4beta1.SearchJobsRequest.CustomRankin" + + "gInfo.ImportanceLevel\022\032\n\022ranking_express" + + "ion\030\002 \001(\t\"s\n\017ImportanceLevel\022 \n\034IMPORTAN" + + "CE_LEVEL_UNSPECIFIED\020\000\022\010\n\004NONE\020\001\022\007\n\003LOW\020" + + "\002\022\010\n\004MILD\020\003\022\n\n\006MEDIUM\020\004\022\010\n\004HIGH\020\005\022\013\n\007EXT" + + "REME\020\006\"R\n\nSearchMode\022\033\n\027SEARCH_MODE_UNSP" + + "ECIFIED\020\000\022\016\n\nJOB_SEARCH\020\001\022\027\n\023FEATURED_JO" + + "B_SEARCH\020\002\"W\n\024DiversificationLevel\022%\n!DI" + + "VERSIFICATION_LEVEL_UNSPECIFIED\020\000\022\014\n\010DIS" + + "ABLED\020\001\022\n\n\006SIMPLE\020\002\"\327\006\n\022SearchJobsRespon" + + "se\022R\n\rmatching_jobs\030\001 \003(\0132;.google.cloud" + + ".talent.v4beta1.SearchJobsResponse.Match" + + "ingJob\022R\n\027histogram_query_results\030\002 \003(\0132" + + "1.google.cloud.talent.v4beta1.HistogramQ" + + "ueryResult\022\027\n\017next_page_token\030\003 \001(\t\022?\n\020l" + + "ocation_filters\030\004 \003(\0132%.google.cloud.tal" + + "ent.v4beta1.Location\022\034\n\024estimated_total_" + + "size\030\005 \001(\005\022\022\n\ntotal_size\030\006 \001(\005\022?\n\010metada" + + "ta\030\007 \001(\0132-.google.cloud.talent.v4beta1.R" + + "esponseMetadata\022\"\n\032broadened_query_jobs_" + + "count\030\010 \001(\005\022I\n\020spell_correction\030\t \001(\0132/." + + "google.cloud.talent.v4beta1.SpellingCorr" + + "ection\032\334\001\n\013MatchingJob\022-\n\003job\030\001 \001(\0132 .go" + + "ogle.cloud.talent.v4beta1.Job\022\023\n\013job_sum" + + "mary\030\002 \001(\t\022\031\n\021job_title_snippet\030\003 \001(\t\022\033\n" + + "\023search_text_snippet\030\004 \001(\t\022Q\n\014commute_in" + + "fo\030\005 \001(\0132;.google.cloud.talent.v4beta1.S" + + "earchJobsResponse.CommuteInfo\032~\n\013Commute" + + "Info\022;\n\014job_location\030\001 \001(\0132%.google.clou" + + "d.talent.v4beta1.Location\0222\n\017travel_dura" + + "tion\030\002 \001(\0132\031.google.protobuf.Duration\"X\n" + + "\026BatchCreateJobsRequest\022\016\n\006parent\030\001 \001(\t\022" + + ".\n\004jobs\030\002 \003(\0132 .google.cloud.talent.v4be" + + "ta1.Job\"\211\001\n\026BatchUpdateJobsRequest\022\016\n\006pa" + + "rent\030\001 \001(\t\022.\n\004jobs\030\002 \003(\0132 .google.cloud." + + "talent.v4beta1.Job\022/\n\013update_mask\030\003 \001(\0132" + + "\032.google.protobuf.FieldMask\"\304\001\n\022JobOpera" + + "tionResult\022N\n\013job_results\030\001 \003(\01329.google" + + ".cloud.talent.v4beta1.JobOperationResult" + + ".JobResult\032^\n\tJobResult\022-\n\003job\030\001 \001(\0132 .g" + + "oogle.cloud.talent.v4beta1.Job\022\"\n\006status" + + "\030\002 \001(\0132\022.google.rpc.Status*v\n\007JobView\022\030\n" + + "\024JOB_VIEW_UNSPECIFIED\020\000\022\024\n\020JOB_VIEW_ID_O" + + "NLY\020\001\022\024\n\020JOB_VIEW_MINIMAL\020\002\022\022\n\016JOB_VIEW_" + + "SMALL\020\003\022\021\n\rJOB_VIEW_FULL\020\0042\220\021\n\nJobServic" + + "e\022\274\001\n\tCreateJob\022-.google.cloud.talent.v4" + + "beta1.CreateJobRequest\032 .google.cloud.ta" + + "lent.v4beta1.Job\"^\202\323\344\223\002X\"+/v4beta1/{pare" + + "nt=projects/*/tenants/*}/jobs:\001*Z&\"!/v4b" + + "eta1/{parent=projects/*}/jobs:\001*\022\260\001\n\006Get" + + "Job\022*.google.cloud.talent.v4beta1.GetJob" + + "Request\032 .google.cloud.talent.v4beta1.Jo" + + "b\"X\202\323\344\223\002R\022+/v4beta1/{name=projects/*/ten" + + "ants/*/jobs/*}Z#\022!/v4beta1/{name=project" + + "s/*/jobs/*}\022\304\001\n\tUpdateJob\022-.google.cloud" + + ".talent.v4beta1.UpdateJobRequest\032 .googl" + + "e.cloud.talent.v4beta1.Job\"f\202\323\344\223\002`2//v4b" + + "eta1/{job.name=projects/*/tenants/*/jobs" + + "/*}:\001*Z*2%/v4beta1/{job.name=projects/*/" + + "jobs/*}:\001*\022\254\001\n\tDeleteJob\022-.google.cloud." + + "talent.v4beta1.DeleteJobRequest\032\026.google" + + ".protobuf.Empty\"X\202\323\344\223\002R*+/v4beta1/{name=" + + "projects/*/tenants/*/jobs/*}Z#*!/v4beta1" + + "/{name=projects/*/jobs/*}\022\301\001\n\010ListJobs\022," + + ".google.cloud.talent.v4beta1.ListJobsReq" + + "uest\032-.google.cloud.talent.v4beta1.ListJ" + + "obsResponse\"X\202\323\344\223\002R\022+/v4beta1/{parent=pr" + + "ojects/*/tenants/*}/jobsZ#\022!/v4beta1/{pa" + + "rent=projects/*}/jobs\022\323\001\n\017BatchDeleteJob" + + "s\0223.google.cloud.talent.v4beta1.BatchDel" + + "eteJobsRequest\032\026.google.protobuf.Empty\"s" + + "\202\323\344\223\002m\"7/v4beta1/{parent=projects/*/tena" + + "nts/*}/jobs:batchDelete:\001*Z/\"-/v4beta1/{" + + "parent=projects/*}/jobs:batchDelete\022\333\001\n\n" + + "SearchJobs\022..google.cloud.talent.v4beta1" + + ".SearchJobsRequest\032/.google.cloud.talent" + + ".v4beta1.SearchJobsResponse\"l\202\323\344\223\002f\"2/v4" + + "beta1/{parent=projects/*/tenants/*}/jobs" + + ":search:\001*Z-\"(/v4beta1/{parent=projects/" + + "*}/jobs:search:\001*\022\363\001\n\022SearchJobsForAlert" + + "\022..google.cloud.talent.v4beta1.SearchJob" + + "sRequest\032/.google.cloud.talent.v4beta1.S" + + "earchJobsResponse\"|\202\323\344\223\002v\":/v4beta1/{par" + + "ent=projects/*/tenants/*}/jobs:searchFor" + + "Alert:\001*Z5\"0/v4beta1/{parent=projects/*}" + + "/jobs:searchForAlert:\001*\022\335\001\n\017BatchCreateJ" + + "obs\0223.google.cloud.talent.v4beta1.BatchC" + + "reateJobsRequest\032\035.google.longrunning.Op" + + "eration\"v\202\323\344\223\002p\"7/v4beta1/{parent=projec" + + "ts/*/tenants/*}/jobs:batchCreate:\001*Z2\"-/" + + "v4beta1/{parent=projects/*}/jobs:batchCr" + + "eate:\001*\022\335\001\n\017BatchUpdateJobs\0223.google.clo" + + "ud.talent.v4beta1.BatchUpdateJobsRequest" + + "\032\035.google.longrunning.Operation\"v\202\323\344\223\002p\"" + + "7/v4beta1/{parent=projects/*/tenants/*}/" + + "jobs:batchUpdate:\001*Z2\"-/v4beta1/{parent=" + + "projects/*}/jobs:batchUpdate:\001*\032l\312A\023jobs" + + ".googleapis.com\322AShttps://www.googleapis" + + ".com/auth/cloud-platform,https://www.goo" + + "gleapis.com/auth/jobsB}\n\037com.google.clou" + + "d.talent.v4beta1B\017JobServiceProtoP\001ZAgoo" + + "gle.golang.org/genproto/googleapis/cloud" + + "/talent/v4beta1;talent\242\002\003CTSb\006proto3" }; com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner = new com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner() { @@ -238,7 +250,6 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new com.google.protobuf.Descriptors.FileDescriptor[] { com.google.api.AnnotationsProto.getDescriptor(), com.google.api.ClientProto.getDescriptor(), - com.google.cloud.talent.v4beta1.BatchProto.getDescriptor(), com.google.cloud.talent.v4beta1.CommonProto.getDescriptor(), com.google.cloud.talent.v4beta1.FiltersProto.getDescriptor(), com.google.cloud.talent.v4beta1.HistogramProto.getDescriptor(), @@ -248,6 +259,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.DurationProto.getDescriptor(), com.google.protobuf.EmptyProto.getDescriptor(), com.google.protobuf.FieldMaskProto.getDescriptor(), + com.google.rpc.StatusProto.getDescriptor(), }, assigner); internal_static_google_cloud_talent_v4beta1_CreateJobRequest_descriptor = @@ -390,6 +402,24 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( new java.lang.String[] { "Parent", "Jobs", "UpdateMask", }); + internal_static_google_cloud_talent_v4beta1_JobOperationResult_descriptor = + getDescriptor().getMessageTypes().get(11); + internal_static_google_cloud_talent_v4beta1_JobOperationResult_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_talent_v4beta1_JobOperationResult_descriptor, + new java.lang.String[] { + "JobResults", + }); + internal_static_google_cloud_talent_v4beta1_JobOperationResult_JobResult_descriptor = + internal_static_google_cloud_talent_v4beta1_JobOperationResult_descriptor + .getNestedTypes() + .get(0); + internal_static_google_cloud_talent_v4beta1_JobOperationResult_JobResult_fieldAccessorTable = + new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_google_cloud_talent_v4beta1_JobOperationResult_JobResult_descriptor, + new java.lang.String[] { + "Job", "Status", + }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); registry.add(com.google.api.ClientProto.defaultHost); @@ -399,7 +429,6 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( descriptor, registry); com.google.api.AnnotationsProto.getDescriptor(); com.google.api.ClientProto.getDescriptor(); - com.google.cloud.talent.v4beta1.BatchProto.getDescriptor(); com.google.cloud.talent.v4beta1.CommonProto.getDescriptor(); com.google.cloud.talent.v4beta1.FiltersProto.getDescriptor(); com.google.cloud.talent.v4beta1.HistogramProto.getDescriptor(); @@ -409,6 +438,7 @@ public com.google.protobuf.ExtensionRegistry assignDescriptors( com.google.protobuf.DurationProto.getDescriptor(); com.google.protobuf.EmptyProto.getDescriptor(); com.google.protobuf.FieldMaskProto.getDescriptor(); + com.google.rpc.StatusProto.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/ProfileQuery.java b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/ProfileQuery.java index 6f4ebe2e7273..a31e47c78598 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/ProfileQuery.java +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/ProfileQuery.java @@ -368,25 +368,41 @@ public com.google.protobuf.ByteString getQueryBytes() { * *
    * Optional. The location filter specifies geo-regions containing the profiles
-   * to search against. It filters against all of a profile's
+   * to search against.
+   * One of
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * or
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * must be provided or an error is thrown. If both
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * and
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * are provided, an error is thrown.
+   * The following logic is used to determine which locations in
+   * the profile to filter against:
+   * 1. All of the profile's geocoded
    * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
    * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-   * no such address exists, a fallback logic is applied in an attempt to
-   * determine the profile's primary address.
-   * The fallback logic selects an address from a profile's
-   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-   * following order of priority:
-   * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-   * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-   * or not set.
-   * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+   * 2. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
    * CONTACT_INFO_USAGE_UNSPECIFIED and
    * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-   * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * 3. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
    * CONTACT_INFO_USAGE_UNSPECIFIED and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-   * not set.
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+   * This means that any profiles without any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+   * match any of the above criteria will not be included in a search with
+   * location filter. Furthermore, any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+   * SCHOOL or where
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+   * not considered for location filter.
    * If a location filter isn't specified, profiles fitting the other search
    * criteria are retrieved regardless of where they're located.
    * If
@@ -399,35 +415,47 @@ public com.google.protobuf.ByteString getQueryBytes() {
    * point (latitude and longitude), and radius are automatically detected by
    * the Google Maps Geocoding API and included as well. If
    * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-   * is not recognized as a location, the filter falls back to keyword search.
+   * cannot be geocoded, the filter falls back to keyword search.
    * If the detected
    * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
    * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
    * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
    * or
    * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-   * or location is recognized but a radius can not be determined by the
-   * geo-coder, the filter is performed against the detected location name
-   * (using exact text matching). Otherwise, the filter is performed against the
-   * detected center point and a radius. The largest value from among the
-   * following options is automatically set as the radius value:
-   * 1. 10 miles.
-   * 2. Detected location radius +
+   * the filter is performed against the detected location name (using exact
+   * text matching). Otherwise, the filter is performed against the detected
+   * center point and a radius of detected location radius +
    * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-   * 3. If the detected
-   * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-   * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-   * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-   * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-   * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-   * or
-   * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-   * the following two values are calculated and the larger of the two is
-   * compared to #1 and #2, above:
-   *   - Calculated radius of the city (from the city center) that contains the
-   *   geo-coded location.
-   *   - Distance from the city center (of the city containing the geo-coded
-   *   location) to the detected location center + 0.5 miles.
+   * If
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the additional radius on top of the radius of the location geocoded from
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+   * If
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the only radius that is used.
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 10 by default. Note that the value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 0 if it is unset, so the server does not differentiate
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is explicitly set to 0 and
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is not set. Which means that if
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is explicitly set to 0, the server will use the default value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * which is 10. To work around this and effectively set
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to 0, we recommend setting
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to a very small decimal number (such as 0.00001).
+   * If
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is negative, an error is thrown.
    * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -440,25 +468,41 @@ public java.util.List getLocatio * *
    * Optional. The location filter specifies geo-regions containing the profiles
-   * to search against. It filters against all of a profile's
+   * to search against.
+   * One of
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * or
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * must be provided or an error is thrown. If both
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * and
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * are provided, an error is thrown.
+   * The following logic is used to determine which locations in
+   * the profile to filter against:
+   * 1. All of the profile's geocoded
    * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
    * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-   * no such address exists, a fallback logic is applied in an attempt to
-   * determine the profile's primary address.
-   * The fallback logic selects an address from a profile's
-   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-   * following order of priority:
-   * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-   * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-   * or not set.
-   * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+   * 2. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
    * CONTACT_INFO_USAGE_UNSPECIFIED and
    * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-   * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * 3. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
    * CONTACT_INFO_USAGE_UNSPECIFIED and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-   * not set.
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+   * This means that any profiles without any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+   * match any of the above criteria will not be included in a search with
+   * location filter. Furthermore, any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+   * SCHOOL or where
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+   * not considered for location filter.
    * If a location filter isn't specified, profiles fitting the other search
    * criteria are retrieved regardless of where they're located.
    * If
@@ -471,35 +515,47 @@ public java.util.List getLocatio
    * point (latitude and longitude), and radius are automatically detected by
    * the Google Maps Geocoding API and included as well. If
    * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-   * is not recognized as a location, the filter falls back to keyword search.
+   * cannot be geocoded, the filter falls back to keyword search.
    * If the detected
    * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
    * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
    * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
    * or
    * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-   * or location is recognized but a radius can not be determined by the
-   * geo-coder, the filter is performed against the detected location name
-   * (using exact text matching). Otherwise, the filter is performed against the
-   * detected center point and a radius. The largest value from among the
-   * following options is automatically set as the radius value:
-   * 1. 10 miles.
-   * 2. Detected location radius +
+   * the filter is performed against the detected location name (using exact
+   * text matching). Otherwise, the filter is performed against the detected
+   * center point and a radius of detected location radius +
    * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-   * 3. If the detected
-   * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-   * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-   * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-   * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-   * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-   * or
-   * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-   * the following two values are calculated and the larger of the two is
-   * compared to #1 and #2, above:
-   *   - Calculated radius of the city (from the city center) that contains the
-   *   geo-coded location.
-   *   - Distance from the city center (of the city containing the geo-coded
-   *   location) to the detected location center + 0.5 miles.
+   * If
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the additional radius on top of the radius of the location geocoded from
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+   * If
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the only radius that is used.
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 10 by default. Note that the value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 0 if it is unset, so the server does not differentiate
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is explicitly set to 0 and
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is not set. Which means that if
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is explicitly set to 0, the server will use the default value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * which is 10. To work around this and effectively set
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to 0, we recommend setting
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to a very small decimal number (such as 0.00001).
+   * If
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is negative, an error is thrown.
    * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -513,25 +569,41 @@ public java.util.List getLocatio * *
    * Optional. The location filter specifies geo-regions containing the profiles
-   * to search against. It filters against all of a profile's
+   * to search against.
+   * One of
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * or
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * must be provided or an error is thrown. If both
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * and
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * are provided, an error is thrown.
+   * The following logic is used to determine which locations in
+   * the profile to filter against:
+   * 1. All of the profile's geocoded
    * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
    * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-   * no such address exists, a fallback logic is applied in an attempt to
-   * determine the profile's primary address.
-   * The fallback logic selects an address from a profile's
-   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-   * following order of priority:
-   * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-   * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-   * or not set.
-   * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+   * 2. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
    * CONTACT_INFO_USAGE_UNSPECIFIED and
    * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-   * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * 3. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
    * CONTACT_INFO_USAGE_UNSPECIFIED and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-   * not set.
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+   * This means that any profiles without any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+   * match any of the above criteria will not be included in a search with
+   * location filter. Furthermore, any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+   * SCHOOL or where
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+   * not considered for location filter.
    * If a location filter isn't specified, profiles fitting the other search
    * criteria are retrieved regardless of where they're located.
    * If
@@ -544,35 +616,47 @@ public java.util.List getLocatio
    * point (latitude and longitude), and radius are automatically detected by
    * the Google Maps Geocoding API and included as well. If
    * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-   * is not recognized as a location, the filter falls back to keyword search.
+   * cannot be geocoded, the filter falls back to keyword search.
    * If the detected
    * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
    * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
    * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
    * or
    * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-   * or location is recognized but a radius can not be determined by the
-   * geo-coder, the filter is performed against the detected location name
-   * (using exact text matching). Otherwise, the filter is performed against the
-   * detected center point and a radius. The largest value from among the
-   * following options is automatically set as the radius value:
-   * 1. 10 miles.
-   * 2. Detected location radius +
+   * the filter is performed against the detected location name (using exact
+   * text matching). Otherwise, the filter is performed against the detected
+   * center point and a radius of detected location radius +
    * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-   * 3. If the detected
-   * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-   * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-   * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-   * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-   * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-   * or
-   * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-   * the following two values are calculated and the larger of the two is
-   * compared to #1 and #2, above:
-   *   - Calculated radius of the city (from the city center) that contains the
-   *   geo-coded location.
-   *   - Distance from the city center (of the city containing the geo-coded
-   *   location) to the detected location center + 0.5 miles.
+   * If
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the additional radius on top of the radius of the location geocoded from
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+   * If
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the only radius that is used.
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 10 by default. Note that the value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 0 if it is unset, so the server does not differentiate
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is explicitly set to 0 and
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is not set. Which means that if
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is explicitly set to 0, the server will use the default value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * which is 10. To work around this and effectively set
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to 0, we recommend setting
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to a very small decimal number (such as 0.00001).
+   * If
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is negative, an error is thrown.
    * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -585,25 +669,41 @@ public int getLocationFiltersCount() { * *
    * Optional. The location filter specifies geo-regions containing the profiles
-   * to search against. It filters against all of a profile's
+   * to search against.
+   * One of
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * or
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * must be provided or an error is thrown. If both
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * and
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * are provided, an error is thrown.
+   * The following logic is used to determine which locations in
+   * the profile to filter against:
+   * 1. All of the profile's geocoded
    * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
    * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-   * no such address exists, a fallback logic is applied in an attempt to
-   * determine the profile's primary address.
-   * The fallback logic selects an address from a profile's
-   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-   * following order of priority:
-   * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-   * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-   * or not set.
-   * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+   * 2. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
    * CONTACT_INFO_USAGE_UNSPECIFIED and
    * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-   * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * 3. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
    * CONTACT_INFO_USAGE_UNSPECIFIED and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-   * not set.
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+   * This means that any profiles without any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+   * match any of the above criteria will not be included in a search with
+   * location filter. Furthermore, any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+   * SCHOOL or where
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+   * not considered for location filter.
    * If a location filter isn't specified, profiles fitting the other search
    * criteria are retrieved regardless of where they're located.
    * If
@@ -616,35 +716,47 @@ public int getLocationFiltersCount() {
    * point (latitude and longitude), and radius are automatically detected by
    * the Google Maps Geocoding API and included as well. If
    * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-   * is not recognized as a location, the filter falls back to keyword search.
+   * cannot be geocoded, the filter falls back to keyword search.
    * If the detected
    * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
    * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
    * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
    * or
    * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-   * or location is recognized but a radius can not be determined by the
-   * geo-coder, the filter is performed against the detected location name
-   * (using exact text matching). Otherwise, the filter is performed against the
-   * detected center point and a radius. The largest value from among the
-   * following options is automatically set as the radius value:
-   * 1. 10 miles.
-   * 2. Detected location radius +
+   * the filter is performed against the detected location name (using exact
+   * text matching). Otherwise, the filter is performed against the detected
+   * center point and a radius of detected location radius +
    * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-   * 3. If the detected
-   * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-   * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-   * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-   * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-   * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-   * or
-   * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-   * the following two values are calculated and the larger of the two is
-   * compared to #1 and #2, above:
-   *   - Calculated radius of the city (from the city center) that contains the
-   *   geo-coded location.
-   *   - Distance from the city center (of the city containing the geo-coded
-   *   location) to the detected location center + 0.5 miles.
+   * If
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the additional radius on top of the radius of the location geocoded from
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+   * If
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the only radius that is used.
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 10 by default. Note that the value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 0 if it is unset, so the server does not differentiate
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is explicitly set to 0 and
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is not set. Which means that if
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is explicitly set to 0, the server will use the default value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * which is 10. To work around this and effectively set
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to 0, we recommend setting
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to a very small decimal number (such as 0.00001).
+   * If
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is negative, an error is thrown.
    * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -657,25 +769,41 @@ public com.google.cloud.talent.v4beta1.LocationFilter getLocationFilters(int ind * *
    * Optional. The location filter specifies geo-regions containing the profiles
-   * to search against. It filters against all of a profile's
+   * to search against.
+   * One of
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * or
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * must be provided or an error is thrown. If both
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * and
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * are provided, an error is thrown.
+   * The following logic is used to determine which locations in
+   * the profile to filter against:
+   * 1. All of the profile's geocoded
    * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
    * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-   * no such address exists, a fallback logic is applied in an attempt to
-   * determine the profile's primary address.
-   * The fallback logic selects an address from a profile's
-   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-   * following order of priority:
-   * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-   * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-   * or not set.
-   * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+   * 2. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
    * CONTACT_INFO_USAGE_UNSPECIFIED and
    * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-   * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * 3. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
    * CONTACT_INFO_USAGE_UNSPECIFIED and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-   * not set.
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+   * This means that any profiles without any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+   * match any of the above criteria will not be included in a search with
+   * location filter. Furthermore, any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+   * SCHOOL or where
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+   * not considered for location filter.
    * If a location filter isn't specified, profiles fitting the other search
    * criteria are retrieved regardless of where they're located.
    * If
@@ -688,35 +816,47 @@ public com.google.cloud.talent.v4beta1.LocationFilter getLocationFilters(int ind
    * point (latitude and longitude), and radius are automatically detected by
    * the Google Maps Geocoding API and included as well. If
    * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-   * is not recognized as a location, the filter falls back to keyword search.
+   * cannot be geocoded, the filter falls back to keyword search.
    * If the detected
    * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
    * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
    * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
    * or
    * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-   * or location is recognized but a radius can not be determined by the
-   * geo-coder, the filter is performed against the detected location name
-   * (using exact text matching). Otherwise, the filter is performed against the
-   * detected center point and a radius. The largest value from among the
-   * following options is automatically set as the radius value:
-   * 1. 10 miles.
-   * 2. Detected location radius +
+   * the filter is performed against the detected location name (using exact
+   * text matching). Otherwise, the filter is performed against the detected
+   * center point and a radius of detected location radius +
    * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-   * 3. If the detected
-   * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-   * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-   * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-   * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-   * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-   * or
-   * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-   * the following two values are calculated and the larger of the two is
-   * compared to #1 and #2, above:
-   *   - Calculated radius of the city (from the city center) that contains the
-   *   geo-coded location.
-   *   - Distance from the city center (of the city containing the geo-coded
-   *   location) to the detected location center + 0.5 miles.
+   * If
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the additional radius on top of the radius of the location geocoded from
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+   * If
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the only radius that is used.
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 10 by default. Note that the value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 0 if it is unset, so the server does not differentiate
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is explicitly set to 0 and
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is not set. Which means that if
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is explicitly set to 0, the server will use the default value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * which is 10. To work around this and effectively set
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to 0, we recommend setting
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to a very small decimal number (such as 0.00001).
+   * If
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is negative, an error is thrown.
    * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -2974,25 +3114,41 @@ private void ensureLocationFiltersIsMutable() { * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3005,35 +3161,47 @@ private void ensureLocationFiltersIsMutable() {
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3050,25 +3218,41 @@ public java.util.List getLocatio * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3081,35 +3265,47 @@ public java.util.List getLocatio
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3126,25 +3322,41 @@ public int getLocationFiltersCount() { * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3157,35 +3369,47 @@ public int getLocationFiltersCount() {
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3202,25 +3426,41 @@ public com.google.cloud.talent.v4beta1.LocationFilter getLocationFilters(int ind * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3233,35 +3473,47 @@ public com.google.cloud.talent.v4beta1.LocationFilter getLocationFilters(int ind
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3285,25 +3537,41 @@ public Builder setLocationFilters( * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3316,35 +3584,47 @@ public Builder setLocationFilters(
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3365,25 +3645,41 @@ public Builder setLocationFilters( * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3396,35 +3692,47 @@ public Builder setLocationFilters(
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3447,25 +3755,41 @@ public Builder addLocationFilters(com.google.cloud.talent.v4beta1.LocationFilter * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3478,35 +3802,47 @@ public Builder addLocationFilters(com.google.cloud.talent.v4beta1.LocationFilter
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3530,25 +3866,41 @@ public Builder addLocationFilters( * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3561,35 +3913,47 @@ public Builder addLocationFilters(
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3610,25 +3974,41 @@ public Builder addLocationFilters( * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3641,35 +4021,47 @@ public Builder addLocationFilters(
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3690,25 +4082,41 @@ public Builder addLocationFilters( * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3721,35 +4129,47 @@ public Builder addLocationFilters(
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3770,25 +4190,41 @@ public Builder addAllLocationFilters( * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3801,35 +4237,47 @@ public Builder addAllLocationFilters(
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3849,25 +4297,41 @@ public Builder clearLocationFilters() { * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3880,35 +4344,47 @@ public Builder clearLocationFilters() {
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -3928,25 +4404,41 @@ public Builder removeLocationFilters(int index) { * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -3959,35 +4451,47 @@ public Builder removeLocationFilters(int index) {
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -4001,25 +4505,41 @@ public com.google.cloud.talent.v4beta1.LocationFilter.Builder getLocationFilters * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -4032,35 +4552,47 @@ public com.google.cloud.talent.v4beta1.LocationFilter.Builder getLocationFilters
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -4078,25 +4610,41 @@ public com.google.cloud.talent.v4beta1.LocationFilterOrBuilder getLocationFilter * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -4109,35 +4657,47 @@ public com.google.cloud.talent.v4beta1.LocationFilterOrBuilder getLocationFilter
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -4155,25 +4715,41 @@ public com.google.cloud.talent.v4beta1.LocationFilterOrBuilder getLocationFilter * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -4186,35 +4762,47 @@ public com.google.cloud.talent.v4beta1.LocationFilterOrBuilder getLocationFilter
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -4228,25 +4816,41 @@ public com.google.cloud.talent.v4beta1.LocationFilter.Builder addLocationFilters * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -4259,35 +4863,47 @@ public com.google.cloud.talent.v4beta1.LocationFilter.Builder addLocationFilters
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -4302,25 +4918,41 @@ public com.google.cloud.talent.v4beta1.LocationFilter.Builder addLocationFilters * *
      * Optional. The location filter specifies geo-regions containing the profiles
-     * to search against. It filters against all of a profile's
+     * to search against.
+     * One of
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * or
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * must be provided or an error is thrown. If both
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * and
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * are provided, an error is thrown.
+     * The following logic is used to determine which locations in
+     * the profile to filter against:
+     * 1. All of the profile's geocoded
      * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
      * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-     * no such address exists, a fallback logic is applied in an attempt to
-     * determine the profile's primary address.
-     * The fallback logic selects an address from a profile's
-     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-     * following order of priority:
-     * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-     * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-     * or not set.
-     * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+     * 2. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
      * CONTACT_INFO_USAGE_UNSPECIFIED and
      * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-     * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+     * 3. If the above set of locations is empty, all of the profile's geocoded
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
      * CONTACT_INFO_USAGE_UNSPECIFIED and
-     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-     * not set.
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+     * This means that any profiles without any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+     * match any of the above criteria will not be included in a search with
+     * location filter. Furthermore, any
+     * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+     * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+     * SCHOOL or where
+     * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+     * not considered for location filter.
      * If a location filter isn't specified, profiles fitting the other search
      * criteria are retrieved regardless of where they're located.
      * If
@@ -4333,35 +4965,47 @@ public com.google.cloud.talent.v4beta1.LocationFilter.Builder addLocationFilters
      * point (latitude and longitude), and radius are automatically detected by
      * the Google Maps Geocoding API and included as well. If
      * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-     * is not recognized as a location, the filter falls back to keyword search.
+     * cannot be geocoded, the filter falls back to keyword search.
      * If the detected
      * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
      * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
      * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
      * or
      * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-     * or location is recognized but a radius can not be determined by the
-     * geo-coder, the filter is performed against the detected location name
-     * (using exact text matching). Otherwise, the filter is performed against the
-     * detected center point and a radius. The largest value from among the
-     * following options is automatically set as the radius value:
-     * 1. 10 miles.
-     * 2. Detected location radius +
+     * the filter is performed against the detected location name (using exact
+     * text matching). Otherwise, the filter is performed against the detected
+     * center point and a radius of detected location radius +
      * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-     * 3. If the detected
-     * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-     * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-     * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-     * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-     * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-     * or
-     * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-     * the following two values are calculated and the larger of the two is
-     * compared to #1 and #2, above:
-     *   - Calculated radius of the city (from the city center) that contains the
-     *   geo-coded location.
-     *   - Distance from the city center (of the city containing the geo-coded
-     *   location) to the detected location center + 0.5 miles.
+     * If
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the additional radius on top of the radius of the location geocoded from
+     * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+     * If
+     * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+     * is provided,
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is the only radius that is used.
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 10 by default. Note that the value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is 0 if it is unset, so the server does not differentiate
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is explicitly set to 0 and
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * that is not set. Which means that if
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is explicitly set to 0, the server will use the default value of
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * which is 10. To work around this and effectively set
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to 0, we recommend setting
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * to a very small decimal number (such as 0.00001).
+     * If
+     * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+     * is negative, an error is thrown.
      * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/ProfileQueryOrBuilder.java b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/ProfileQueryOrBuilder.java index 146266e939ac..e10e01ebe629 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/ProfileQueryOrBuilder.java +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/java/com/google/cloud/talent/v4beta1/ProfileQueryOrBuilder.java @@ -36,25 +36,41 @@ public interface ProfileQueryOrBuilder * *
    * Optional. The location filter specifies geo-regions containing the profiles
-   * to search against. It filters against all of a profile's
+   * to search against.
+   * One of
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * or
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * must be provided or an error is thrown. If both
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * and
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * are provided, an error is thrown.
+   * The following logic is used to determine which locations in
+   * the profile to filter against:
+   * 1. All of the profile's geocoded
    * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
    * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-   * no such address exists, a fallback logic is applied in an attempt to
-   * determine the profile's primary address.
-   * The fallback logic selects an address from a profile's
-   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-   * following order of priority:
-   * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-   * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-   * or not set.
-   * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+   * 2. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
    * CONTACT_INFO_USAGE_UNSPECIFIED and
    * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-   * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * 3. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
    * CONTACT_INFO_USAGE_UNSPECIFIED and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-   * not set.
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+   * This means that any profiles without any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+   * match any of the above criteria will not be included in a search with
+   * location filter. Furthermore, any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+   * SCHOOL or where
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+   * not considered for location filter.
    * If a location filter isn't specified, profiles fitting the other search
    * criteria are retrieved regardless of where they're located.
    * If
@@ -67,35 +83,47 @@ public interface ProfileQueryOrBuilder
    * point (latitude and longitude), and radius are automatically detected by
    * the Google Maps Geocoding API and included as well. If
    * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-   * is not recognized as a location, the filter falls back to keyword search.
+   * cannot be geocoded, the filter falls back to keyword search.
    * If the detected
    * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
    * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
    * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
    * or
    * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-   * or location is recognized but a radius can not be determined by the
-   * geo-coder, the filter is performed against the detected location name
-   * (using exact text matching). Otherwise, the filter is performed against the
-   * detected center point and a radius. The largest value from among the
-   * following options is automatically set as the radius value:
-   * 1. 10 miles.
-   * 2. Detected location radius +
+   * the filter is performed against the detected location name (using exact
+   * text matching). Otherwise, the filter is performed against the detected
+   * center point and a radius of detected location radius +
    * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-   * 3. If the detected
-   * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-   * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-   * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-   * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-   * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-   * or
-   * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-   * the following two values are calculated and the larger of the two is
-   * compared to #1 and #2, above:
-   *   - Calculated radius of the city (from the city center) that contains the
-   *   geo-coded location.
-   *   - Distance from the city center (of the city containing the geo-coded
-   *   location) to the detected location center + 0.5 miles.
+   * If
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the additional radius on top of the radius of the location geocoded from
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+   * If
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the only radius that is used.
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 10 by default. Note that the value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 0 if it is unset, so the server does not differentiate
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is explicitly set to 0 and
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is not set. Which means that if
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is explicitly set to 0, the server will use the default value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * which is 10. To work around this and effectively set
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to 0, we recommend setting
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to a very small decimal number (such as 0.00001).
+   * If
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is negative, an error is thrown.
    * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -106,25 +134,41 @@ public interface ProfileQueryOrBuilder * *
    * Optional. The location filter specifies geo-regions containing the profiles
-   * to search against. It filters against all of a profile's
+   * to search against.
+   * One of
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * or
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * must be provided or an error is thrown. If both
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * and
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * are provided, an error is thrown.
+   * The following logic is used to determine which locations in
+   * the profile to filter against:
+   * 1. All of the profile's geocoded
    * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
    * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-   * no such address exists, a fallback logic is applied in an attempt to
-   * determine the profile's primary address.
-   * The fallback logic selects an address from a profile's
-   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-   * following order of priority:
-   * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-   * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-   * or not set.
-   * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+   * 2. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
    * CONTACT_INFO_USAGE_UNSPECIFIED and
    * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-   * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * 3. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
    * CONTACT_INFO_USAGE_UNSPECIFIED and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-   * not set.
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+   * This means that any profiles without any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+   * match any of the above criteria will not be included in a search with
+   * location filter. Furthermore, any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+   * SCHOOL or where
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+   * not considered for location filter.
    * If a location filter isn't specified, profiles fitting the other search
    * criteria are retrieved regardless of where they're located.
    * If
@@ -137,35 +181,47 @@ public interface ProfileQueryOrBuilder
    * point (latitude and longitude), and radius are automatically detected by
    * the Google Maps Geocoding API and included as well. If
    * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-   * is not recognized as a location, the filter falls back to keyword search.
+   * cannot be geocoded, the filter falls back to keyword search.
    * If the detected
    * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
    * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
    * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
    * or
    * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-   * or location is recognized but a radius can not be determined by the
-   * geo-coder, the filter is performed against the detected location name
-   * (using exact text matching). Otherwise, the filter is performed against the
-   * detected center point and a radius. The largest value from among the
-   * following options is automatically set as the radius value:
-   * 1. 10 miles.
-   * 2. Detected location radius +
+   * the filter is performed against the detected location name (using exact
+   * text matching). Otherwise, the filter is performed against the detected
+   * center point and a radius of detected location radius +
    * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-   * 3. If the detected
-   * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-   * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-   * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-   * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-   * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-   * or
-   * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-   * the following two values are calculated and the larger of the two is
-   * compared to #1 and #2, above:
-   *   - Calculated radius of the city (from the city center) that contains the
-   *   geo-coded location.
-   *   - Distance from the city center (of the city containing the geo-coded
-   *   location) to the detected location center + 0.5 miles.
+   * If
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the additional radius on top of the radius of the location geocoded from
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+   * If
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the only radius that is used.
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 10 by default. Note that the value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 0 if it is unset, so the server does not differentiate
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is explicitly set to 0 and
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is not set. Which means that if
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is explicitly set to 0, the server will use the default value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * which is 10. To work around this and effectively set
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to 0, we recommend setting
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to a very small decimal number (such as 0.00001).
+   * If
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is negative, an error is thrown.
    * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -176,25 +232,41 @@ public interface ProfileQueryOrBuilder * *
    * Optional. The location filter specifies geo-regions containing the profiles
-   * to search against. It filters against all of a profile's
+   * to search against.
+   * One of
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * or
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * must be provided or an error is thrown. If both
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * and
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * are provided, an error is thrown.
+   * The following logic is used to determine which locations in
+   * the profile to filter against:
+   * 1. All of the profile's geocoded
    * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
    * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-   * no such address exists, a fallback logic is applied in an attempt to
-   * determine the profile's primary address.
-   * The fallback logic selects an address from a profile's
-   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-   * following order of priority:
-   * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-   * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-   * or not set.
-   * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+   * 2. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
    * CONTACT_INFO_USAGE_UNSPECIFIED and
    * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-   * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * 3. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
    * CONTACT_INFO_USAGE_UNSPECIFIED and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-   * not set.
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+   * This means that any profiles without any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+   * match any of the above criteria will not be included in a search with
+   * location filter. Furthermore, any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+   * SCHOOL or where
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+   * not considered for location filter.
    * If a location filter isn't specified, profiles fitting the other search
    * criteria are retrieved regardless of where they're located.
    * If
@@ -207,35 +279,47 @@ public interface ProfileQueryOrBuilder
    * point (latitude and longitude), and radius are automatically detected by
    * the Google Maps Geocoding API and included as well. If
    * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-   * is not recognized as a location, the filter falls back to keyword search.
+   * cannot be geocoded, the filter falls back to keyword search.
    * If the detected
    * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
    * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
    * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
    * or
    * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-   * or location is recognized but a radius can not be determined by the
-   * geo-coder, the filter is performed against the detected location name
-   * (using exact text matching). Otherwise, the filter is performed against the
-   * detected center point and a radius. The largest value from among the
-   * following options is automatically set as the radius value:
-   * 1. 10 miles.
-   * 2. Detected location radius +
+   * the filter is performed against the detected location name (using exact
+   * text matching). Otherwise, the filter is performed against the detected
+   * center point and a radius of detected location radius +
    * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-   * 3. If the detected
-   * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-   * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-   * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-   * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-   * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-   * or
-   * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-   * the following two values are calculated and the larger of the two is
-   * compared to #1 and #2, above:
-   *   - Calculated radius of the city (from the city center) that contains the
-   *   geo-coded location.
-   *   - Distance from the city center (of the city containing the geo-coded
-   *   location) to the detected location center + 0.5 miles.
+   * If
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the additional radius on top of the radius of the location geocoded from
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+   * If
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the only radius that is used.
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 10 by default. Note that the value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 0 if it is unset, so the server does not differentiate
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is explicitly set to 0 and
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is not set. Which means that if
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is explicitly set to 0, the server will use the default value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * which is 10. To work around this and effectively set
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to 0, we recommend setting
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to a very small decimal number (such as 0.00001).
+   * If
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is negative, an error is thrown.
    * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -246,25 +330,41 @@ public interface ProfileQueryOrBuilder * *
    * Optional. The location filter specifies geo-regions containing the profiles
-   * to search against. It filters against all of a profile's
+   * to search against.
+   * One of
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * or
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * must be provided or an error is thrown. If both
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * and
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * are provided, an error is thrown.
+   * The following logic is used to determine which locations in
+   * the profile to filter against:
+   * 1. All of the profile's geocoded
    * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
    * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-   * no such address exists, a fallback logic is applied in an attempt to
-   * determine the profile's primary address.
-   * The fallback logic selects an address from a profile's
-   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-   * following order of priority:
-   * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-   * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-   * or not set.
-   * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+   * 2. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
    * CONTACT_INFO_USAGE_UNSPECIFIED and
    * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-   * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * 3. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
    * CONTACT_INFO_USAGE_UNSPECIFIED and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-   * not set.
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+   * This means that any profiles without any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+   * match any of the above criteria will not be included in a search with
+   * location filter. Furthermore, any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+   * SCHOOL or where
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+   * not considered for location filter.
    * If a location filter isn't specified, profiles fitting the other search
    * criteria are retrieved regardless of where they're located.
    * If
@@ -277,35 +377,47 @@ public interface ProfileQueryOrBuilder
    * point (latitude and longitude), and radius are automatically detected by
    * the Google Maps Geocoding API and included as well. If
    * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-   * is not recognized as a location, the filter falls back to keyword search.
+   * cannot be geocoded, the filter falls back to keyword search.
    * If the detected
    * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
    * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
    * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
    * or
    * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-   * or location is recognized but a radius can not be determined by the
-   * geo-coder, the filter is performed against the detected location name
-   * (using exact text matching). Otherwise, the filter is performed against the
-   * detected center point and a radius. The largest value from among the
-   * following options is automatically set as the radius value:
-   * 1. 10 miles.
-   * 2. Detected location radius +
+   * the filter is performed against the detected location name (using exact
+   * text matching). Otherwise, the filter is performed against the detected
+   * center point and a radius of detected location radius +
    * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-   * 3. If the detected
-   * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-   * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-   * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-   * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-   * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-   * or
-   * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-   * the following two values are calculated and the larger of the two is
-   * compared to #1 and #2, above:
-   *   - Calculated radius of the city (from the city center) that contains the
-   *   geo-coded location.
-   *   - Distance from the city center (of the city containing the geo-coded
-   *   location) to the detected location center + 0.5 miles.
+   * If
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the additional radius on top of the radius of the location geocoded from
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+   * If
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the only radius that is used.
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 10 by default. Note that the value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 0 if it is unset, so the server does not differentiate
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is explicitly set to 0 and
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is not set. Which means that if
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is explicitly set to 0, the server will use the default value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * which is 10. To work around this and effectively set
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to 0, we recommend setting
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to a very small decimal number (such as 0.00001).
+   * If
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is negative, an error is thrown.
    * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; @@ -317,25 +429,41 @@ public interface ProfileQueryOrBuilder * *
    * Optional. The location filter specifies geo-regions containing the profiles
-   * to search against. It filters against all of a profile's
+   * to search against.
+   * One of
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * or
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * must be provided or an error is thrown. If both
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * and
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * are provided, an error is thrown.
+   * The following logic is used to determine which locations in
+   * the profile to filter against:
+   * 1. All of the profile's geocoded
    * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
    * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If
-   * no such address exists, a fallback logic is applied in an attempt to
-   * determine the profile's primary address.
-   * The fallback logic selects an address from a profile's
-   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the
-   * following order of priority:
-   * 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL
-   * and [Address.current][google.cloud.talent.v4beta1.Address.current] is false
-   * or not set.
-   * 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
+   * 2. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
    * CONTACT_INFO_USAGE_UNSPECIFIED and
    * [Address.current][google.cloud.talent.v4beta1.Address.current] is true.
-   * 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is
+   * 3. If the above set of locations is empty, all of the profile's geocoded
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or
    * CONTACT_INFO_USAGE_UNSPECIFIED and
-   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false or
-   * not set.
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is not set.
+   * This means that any profiles without any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that
+   * match any of the above criteria will not be included in a search with
+   * location filter. Furthermore, any
+   * [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where
+   * [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or
+   * SCHOOL or where
+   * [Address.current][google.cloud.talent.v4beta1.Address.current] is false are
+   * not considered for location filter.
    * If a location filter isn't specified, profiles fitting the other search
    * criteria are retrieved regardless of where they're located.
    * If
@@ -348,35 +476,47 @@ public interface ProfileQueryOrBuilder
    * point (latitude and longitude), and radius are automatically detected by
    * the Google Maps Geocoding API and included as well. If
    * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
-   * is not recognized as a location, the filter falls back to keyword search.
+   * cannot be geocoded, the filter falls back to keyword search.
    * If the detected
    * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is
    * [LocationType.SUB_ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.SUB_ADMINISTRATIVE_AREA],
    * [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA],
    * or
    * [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY],
-   * or location is recognized but a radius can not be determined by the
-   * geo-coder, the filter is performed against the detected location name
-   * (using exact text matching). Otherwise, the filter is performed against the
-   * detected center point and a radius. The largest value from among the
-   * following options is automatically set as the radius value:
-   * 1. 10 miles.
-   * 2. Detected location radius +
+   * the filter is performed against the detected location name (using exact
+   * text matching). Otherwise, the filter is performed against the detected
+   * center point and a radius of detected location radius +
    * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles].
-   * 3. If the detected
-   * [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of
-   * [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY],
-   * [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2],
-   * [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD],
-   * [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE],
-   * or
-   * [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS],
-   * the following two values are calculated and the larger of the two is
-   * compared to #1 and #2, above:
-   *   - Calculated radius of the city (from the city center) that contains the
-   *   geo-coded location.
-   *   - Distance from the city center (of the city containing the geo-coded
-   *   location) to the detected location center + 0.5 miles.
+   * If
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the additional radius on top of the radius of the location geocoded from
+   * [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address].
+   * If
+   * [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng]
+   * is provided,
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is the only radius that is used.
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 10 by default. Note that the value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is 0 if it is unset, so the server does not differentiate
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is explicitly set to 0 and
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * that is not set. Which means that if
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is explicitly set to 0, the server will use the default value of
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * which is 10. To work around this and effectively set
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to 0, we recommend setting
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * to a very small decimal number (such as 0.00001).
+   * If
+   * [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]
+   * is negative, an error is thrown.
    * 
* * repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2; diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/common.proto b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/common.proto index 6294f4a59105..bf70eb472de2 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/common.proto +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/common.proto @@ -958,6 +958,70 @@ message Rating { double interval = 4; } +// Output only. +// +// Metadata used for long running operations returned by CTS batch APIs. +// It's used to replace +// [google.longrunning.Operation.metadata][google.longrunning.Operation.metadata]. +message BatchOperationMetadata { + enum State { + // Default value. + STATE_UNSPECIFIED = 0; + + // The batch operation is being prepared for processing. + INITIALIZING = 1; + + // The batch operation is actively being processed. + PROCESSING = 2; + + // The batch operation is processed, and at least one item has been + // successfully processed. + SUCCEEDED = 3; + + // The batch operation is done and no item has been successfully processed. + FAILED = 4; + + // The batch operation is in the process of cancelling after + // [google.longrunning.Operations.CancelOperation][google.longrunning.Operations.CancelOperation] + // is called. + CANCELLING = 5; + + // The batch operation is done after + // [google.longrunning.Operations.CancelOperation][google.longrunning.Operations.CancelOperation] + // is called. Any items processed before cancelling are returned in the + // response. + CANCELLED = 6; + } + + // The state of a long running operation. + State state = 1; + + // More detailed information about operation state. + string state_description = 2; + + // Count of successful item(s) inside an operation. + int32 success_count = 3; + + // Count of failed item(s) inside an operation. + int32 failure_count = 4; + + // Count of total item(s) inside an operation. + int32 total_count = 5; + + // The time when the batch operation is created. + google.protobuf.Timestamp create_time = 6; + + // The time when the batch operation status is updated. The metadata and the + // [update_time][google.cloud.talent.v4beta1.BatchOperationMetadata.update_time] + // is refreshed every minute otherwise cached data is returned. + google.protobuf.Timestamp update_time = 7; + + // The time when the batch operation is finished and + // [google.longrunning.Operation.done][google.longrunning.Operation.done] is + // set to `true`. + google.protobuf.Timestamp end_time = 8; +} + // Enum that represents the skill proficiency level. enum SkillProficiencyLevel { // Default value. diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/filters.proto b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/filters.proto index bc81003da0ad..35f5d8279457 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/filters.proto +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/filters.proto @@ -194,26 +194,44 @@ message ProfileQuery { string query = 1; // Optional. The location filter specifies geo-regions containing the profiles - // to search against. It filters against all of a profile's + // to search against. + // + // One of + // [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] + // or + // [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] + // must be provided or an error is thrown. If both + // [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] + // and + // [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] + // are provided, an error is thrown. + // + // The following logic is used to determine which locations in + // the profile to filter against: + // 1. All of the profile's geocoded // [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where // [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL and - // [Address.current][google.cloud.talent.v4beta1.Address.current] is true. If - // no such address exists, a fallback logic is applied in an attempt to - // determine the profile's primary address. - // - // The fallback logic selects an address from a profile's - // [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] in the - // following order of priority: - // 1. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL - // and [Address.current][google.cloud.talent.v4beta1.Address.current] is false - // or not set. - // 2. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is + // [Address.current][google.cloud.talent.v4beta1.Address.current] is true. + // 2. If the above set of locations is empty, all of the profile's geocoded + // [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where + // [Address.usage][google.cloud.talent.v4beta1.Address.usage] is // CONTACT_INFO_USAGE_UNSPECIFIED and // [Address.current][google.cloud.talent.v4beta1.Address.current] is true. - // 3. [Address.usage][google.cloud.talent.v4beta1.Address.usage] is + // 3. If the above set of locations is empty, all of the profile's geocoded + // [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where + // [Address.usage][google.cloud.talent.v4beta1.Address.usage] is PERSONAL or // CONTACT_INFO_USAGE_UNSPECIFIED and - // [Address.current][google.cloud.talent.v4beta1.Address.current] is false or - // not set. + // [Address.current][google.cloud.talent.v4beta1.Address.current] is not set. + // + // This means that any profiles without any + // [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] that + // match any of the above criteria will not be included in a search with + // location filter. Furthermore, any + // [Profile.addresses][google.cloud.talent.v4beta1.Profile.addresses] where + // [Address.usage][google.cloud.talent.v4beta1.Address.usage] is WORK or + // SCHOOL or where + // [Address.current][google.cloud.talent.v4beta1.Address.current] is false are + // not considered for location filter. // // If a location filter isn't specified, profiles fitting the other search // criteria are retrieved regardless of where they're located. @@ -229,7 +247,7 @@ message ProfileQuery { // point (latitude and longitude), and radius are automatically detected by // the Google Maps Geocoding API and included as well. If // [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] - // is not recognized as a location, the filter falls back to keyword search. + // cannot be geocoded, the filter falls back to keyword search. // // If the detected // [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is @@ -237,28 +255,43 @@ message ProfileQuery { // [LocationType.ADMINISTRATIVE_AREA][google.cloud.talent.v4beta1.Location.LocationType.ADMINISTRATIVE_AREA], // or // [LocationType.COUNTRY][google.cloud.talent.v4beta1.Location.LocationType.COUNTRY], - // or location is recognized but a radius can not be determined by the - // geo-coder, the filter is performed against the detected location name - // (using exact text matching). Otherwise, the filter is performed against the - // detected center point and a radius. The largest value from among the - // following options is automatically set as the radius value: - // 1. 10 miles. - // 2. Detected location radius + + // the filter is performed against the detected location name (using exact + // text matching). Otherwise, the filter is performed against the detected + // center point and a radius of detected location radius + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles]. - // 3. If the detected - // [LocationType][google.cloud.talent.v4beta1.Location.LocationType] is one of - // [LocationType.SUB_LOCALITY][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY], - // [LocationType.SUB_LOCALITY_2][google.cloud.talent.v4beta1.Location.LocationType.SUB_LOCALITY_2], - // [LocationType.NEIGHBORHOOD][google.cloud.talent.v4beta1.Location.LocationType.NEIGHBORHOOD], - // [LocationType.POSTAL_CODE][google.cloud.talent.v4beta1.Location.LocationType.POSTAL_CODE], - // or - // [LocationType.STREET_ADDRESS][google.cloud.talent.v4beta1.Location.LocationType.STREET_ADDRESS], - // the following two values are calculated and the larger of the two is - // compared to #1 and #2, above: - // - Calculated radius of the city (from the city center) that contains the - // geo-coded location. - // - Distance from the city center (of the city containing the geo-coded - // location) to the detected location center + 0.5 miles. + // + // If + // [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address] + // is provided, + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // is the additional radius on top of the radius of the location geocoded from + // [LocationFilter.address][google.cloud.talent.v4beta1.LocationFilter.address]. + // If + // [LocationFilter.lat_lng][google.cloud.talent.v4beta1.LocationFilter.lat_lng] + // is provided, + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // is the only radius that is used. + // + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // is 10 by default. Note that the value of + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // is 0 if it is unset, so the server does not differentiate + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // that is explicitly set to 0 and + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // that is not set. Which means that if + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // is explicitly set to 0, the server will use the default value of + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // which is 10. To work around this and effectively set + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // to 0, we recommend setting + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // to a very small decimal number (such as 0.00001). + // + // If + // [LocationFilter.distance_in_miles][google.cloud.talent.v4beta1.LocationFilter.distance_in_miles] + // is negative, an error is thrown. repeated LocationFilter location_filters = 2; // Optional. Job title filter specifies job titles of profiles to match on. diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/job_service.proto b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/job_service.proto index a79dcc502795..ddec147d8410 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/job_service.proto +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/job_service.proto @@ -19,7 +19,6 @@ package google.cloud.talent.v4beta1; import "google/api/annotations.proto"; import "google/api/client.proto"; -import "google/cloud/talent/v4beta1/batch.proto"; import "google/cloud/talent/v4beta1/common.proto"; import "google/cloud/talent/v4beta1/filters.proto"; import "google/cloud/talent/v4beta1/histogram.proto"; @@ -29,6 +28,7 @@ import "google/protobuf/any.proto"; import "google/protobuf/duration.proto"; import "google/protobuf/empty.proto"; import "google/protobuf/field_mask.proto"; +import "google/rpc/status.proto"; option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent"; option java_multiple_files = true; @@ -927,3 +927,36 @@ message BatchUpdateJobsRequest { // which can yield a very large response. google.protobuf.FieldMask update_mask = 3; } + +// Output only. +// +// The result of +// [JobService.BatchCreateJobs][google.cloud.talent.v4beta1.JobService.BatchCreateJobs] +// or +// [JobService.BatchUpdateJobs][google.cloud.talent.v4beta1.JobService.BatchUpdateJobs] +// APIs. It's used to replace +// [google.longrunning.Operation.response][google.longrunning.Operation.response] +// in case of success. +message JobOperationResult { + // Mutation result of a job. + message JobResult { + // Here [Job][google.cloud.talent.v4beta1.Job] only contains basic + // information including [name][google.cloud.talent.v4beta1.Job.name], + // [company][google.cloud.talent.v4beta1.Job.company], + // [language_code][google.cloud.talent.v4beta1.Job.language_code] and + // [requisition_id][google.cloud.talent.v4beta1.Job.requisition_id], use + // getJob method to retrieve detailed information of the created/updated + // job. + Job job = 1; + + // The status of the job processed. This field is populated if the + // processing of the + // [job][google.cloud.talent.v4beta1.JobOperationResult.JobResult.job] + // fails. + google.rpc.Status status = 2; + } + + // List of job mutation results from a batch mutate operation. It can change + // until operation status is FINISHED, FAILED or CANCELLED. + repeated JobResult job_results = 1; +} diff --git a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/profile_service.proto b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/profile_service.proto index 67483ce176e5..97cb9588f038 100644 --- a/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/profile_service.proto +++ b/google-api-grpc/proto-google-cloud-talent-v4beta1/src/main/proto/google/cloud/talent/v4beta1/profile_service.proto @@ -168,6 +168,7 @@ message UpdateProfileRequest { // A full update is performed if it is unset. // // Valid values are: + // // * external_id // * source // * uri diff --git a/google-cloud-clients/google-cloud-talent/synth.metadata b/google-cloud-clients/google-cloud-talent/synth.metadata index 5516226774ab..105d0157aab7 100644 --- a/google-cloud-clients/google-cloud-talent/synth.metadata +++ b/google-cloud-clients/google-cloud-talent/synth.metadata @@ -1,19 +1,19 @@ { - "updateTime": "2019-08-20T07:58:59.720718Z", + "updateTime": "2019-08-23T07:59:33.128582Z", "sources": [ { "generator": { "name": "artman", - "version": "0.33.0", - "dockerImage": "googleapis/artman@sha256:c6231efb525569736226b1f7af7565dbc84248efafb3692a5bb1d2d8a7975d53" + "version": "0.34.0", + "dockerImage": "googleapis/artman@sha256:38a27ba6245f96c3e86df7acb2ebcc33b4f186d9e475efe2d64303aec3d4e0ea" } }, { "git": { "name": "googleapis", "remote": "https://github.com/googleapis/googleapis.git", - "sha": "4bb50a3e4c8d49d1cec1a98434cccaeaec55a886", - "internalRef": "264193378" + "sha": "9c9f778aedde02f9826d2ae5d0f9c96409ba0f25", + "internalRef": "264996596" } } ],