diff --git a/google/cloud/talent/talent_v4beta1.yaml b/google/cloud/talent/talent_v4beta1.yaml
index 7bb9de2f..b5cd345c 100644
--- a/google/cloud/talent/talent_v4beta1.yaml
+++ b/google/cloud/talent/talent_v4beta1.yaml
@@ -10,6 +10,7 @@ apis:
- name: google.cloud.talent.v4beta1.JobService
- name: google.cloud.talent.v4beta1.ProfileService
- name: google.cloud.talent.v4beta1.ResumeService
+- name: google.cloud.talent.v4beta1.TenantService
documentation:
summary: |-
@@ -83,6 +84,16 @@ backend:
deadline: 30.0
- selector: google.cloud.talent.v4beta1.ResumeService.ParseResume
deadline: 30.0
+ - selector: google.cloud.talent.v4beta1.TenantService.CreateTenant
+ deadline: 30.0
+ - selector: google.cloud.talent.v4beta1.TenantService.GetTenant
+ deadline: 30.0
+ - selector: google.cloud.talent.v4beta1.TenantService.UpdateTenant
+ deadline: 30.0
+ - selector: google.cloud.talent.v4beta1.TenantService.DeleteTenant
+ deadline: 30.0
+ - selector: google.cloud.talent.v4beta1.TenantService.ListTenants
+ deadline: 30.0
http:
rules:
diff --git a/google/cloud/talent/v4beta1/batch.proto b/google/cloud/talent/v4beta1/batch.proto
index cb92ac88..6b330c3c 100644
--- a/google/cloud/talent/v4beta1/batch.proto
+++ b/google/cloud/talent/v4beta1/batch.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -18,9 +18,9 @@ syntax = "proto3";
package google.cloud.talent.v4beta1;
import "google/api/annotations.proto";
-import "google/cloud/talent/v4beta1/job.proto";
import "google/protobuf/timestamp.proto";
import "google/rpc/status.proto";
+import "google/cloud/talent/v4beta1/job.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
option java_multiple_files = true;
diff --git a/google/cloud/talent/v4beta1/common.proto b/google/cloud/talent/v4beta1/common.proto
index 5ed452d3..d174a2c6 100644
--- a/google/cloud/talent/v4beta1/common.proto
+++ b/google/cloud/talent/v4beta1/common.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -40,421 +40,6 @@ message TimestampRange {
google.protobuf.Timestamp end_time = 2;
}
-// Output only.
-//
-// A resource that represents a location with full geographic information.
-message Location {
- // An enum which represents the type of a location.
- enum LocationType {
- // Default value if the type isn't specified.
- LOCATION_TYPE_UNSPECIFIED = 0;
-
- // A country level location.
- COUNTRY = 1;
-
- // A state or equivalent level location.
- ADMINISTRATIVE_AREA = 2;
-
- // A county or equivalent level location.
- SUB_ADMINISTRATIVE_AREA = 3;
-
- // A city or equivalent level location.
- LOCALITY = 4;
-
- // A postal code level location.
- POSTAL_CODE = 5;
-
- // A sublocality is a subdivision of a locality, for example a city borough,
- // ward, or arrondissement. Sublocalities are usually recognized by a local
- // political authority. For example, Manhattan and Brooklyn are recognized
- // as boroughs by the City of New York, and are therefore modeled as
- // sublocalities.
- SUB_LOCALITY = 6;
-
- // A district or equivalent level location.
- SUB_LOCALITY_1 = 7;
-
- // A smaller district or equivalent level display.
- SUB_LOCALITY_2 = 8;
-
- // A neighborhood level location.
- NEIGHBORHOOD = 9;
-
- // A street address level location.
- STREET_ADDRESS = 10;
- }
-
- // The type of a location, which corresponds to the address lines field of
- // [PostalAddress][]. For example, "Downtown, Atlanta, GA, USA" has a type of
- // [LocationType#NEIGHBORHOOD][], and "Kansas City, KS, USA" has a type of
- // [LocationType#LOCALITY][].
- LocationType location_type = 1;
-
- // Postal address of the location that includes human readable information,
- // such as postal delivery and payments addresses. Given a postal address,
- // a postal service can deliver items to a premises, P.O. Box, or other
- // delivery location.
- google.type.PostalAddress postal_address = 2;
-
- // An object representing a latitude/longitude pair.
- google.type.LatLng lat_lng = 3;
-
- // Radius in miles of the job location. This value is derived from the
- // location bounding box in which a circle with the specified radius
- // centered from [LatLng][] covers the area associated with the job location.
- // For example, currently, "Mountain View, CA, USA" has a radius of
- // 6.17 miles.
- double radius_miles = 4;
-}
-
-// Input only.
-//
-// Meta information related to the job searcher or entity
-// conducting the job search. This information is used to improve the
-// performance of the service.
-message RequestMetadata {
- // Required if [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids] is unset or `false`.
- //
- // The client-defined scope or source of the service call, which typically
- // is the domain on
- // which the service has been implemented and is currently being run.
- //
- // For example, if the service is being run by client Foo, Inc., on
- // job board www.foo.com and career site www.bar.com, then this field is
- // set to "foo.com" for use on the job board, and "bar.com" for use on the
- // career site.
- //
- // Note that any improvements to the model for a particular tenant site rely
- // on this field being set correctly to a unique domain.
- //
- // The maximum number of allowed characters is 255.
- string domain = 1;
-
- // Required if [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids] is unset or `false`.
- //
- // A unique session identification string. A session is defined as the
- // duration of an end user's interaction with the service over a certain
- // period.
- // Obfuscate this field for privacy concerns before
- // providing it to the service.
- //
- // Note that any improvements to the model for a particular tenant site rely
- // on this field being set correctly to a unique session ID.
- //
- // The maximum number of allowed characters is 255.
- string session_id = 2;
-
- // Required if [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids] is unset or `false`.
- //
- // A unique user identification string, as determined by the client.
- // To have the strongest positive impact on search quality
- // make sure the client-level is unique.
- // Obfuscate this field for privacy concerns before
- // providing it to the service.
- //
- // Note that any improvements to the model for a particular tenant site rely
- // on this field being set correctly to a unique user ID.
- //
- // The maximum number of allowed characters is 255.
- string user_id = 3;
-
- // Optional.
- //
- // If set to `true`, [domain][google.cloud.talent.v4beta1.RequestMetadata.domain], [session_id][google.cloud.talent.v4beta1.RequestMetadata.session_id] and [user_id][google.cloud.talent.v4beta1.RequestMetadata.user_id] are optional.
- // Only set when any of these fields isn't available for some reason. It
- // is highly recommended not to set this field and provide accurate
- // [domain][google.cloud.talent.v4beta1.RequestMetadata.domain], [session_id][google.cloud.talent.v4beta1.RequestMetadata.session_id] and [user_id][google.cloud.talent.v4beta1.RequestMetadata.user_id] for the best service experience.
- bool allow_missing_ids = 4;
-
- // Optional.
- //
- // The type of device used by the job seeker at the time of the call to the
- // service.
- DeviceInfo device_info = 5;
-}
-
-// Output only.
-//
-// Additional information returned to client, such as debugging information.
-message ResponseMetadata {
- // A unique id associated with this call.
- // This id is logged for tracking purposes.
- string request_id = 1;
-}
-
-// Device information collected from the job seeker, candidate, or
-// other entity conducting the job search. Providing this information improves
-// the quality of the search results across devices.
-message DeviceInfo {
- // An enumeration describing an API access portal and exposure mechanism.
- enum DeviceType {
- // The device type isn't specified.
- DEVICE_TYPE_UNSPECIFIED = 0;
-
- // A desktop web browser, such as, Chrome, Firefox, Safari, or Internet
- // Explorer)
- WEB = 1;
-
- // A mobile device web browser, such as a phone or tablet with a Chrome
- // browser.
- MOBILE_WEB = 2;
-
- // An Android device native application.
- ANDROID = 3;
-
- // An iOS device native application.
- IOS = 4;
-
- // A bot, as opposed to a device operated by human beings, such as a web
- // crawler.
- BOT = 5;
-
- // Other devices types.
- OTHER = 6;
- }
-
- // Optional.
- //
- // Type of the device.
- DeviceType device_type = 1;
-
- // Optional.
- //
- // A device-specific ID. The ID must be a unique identifier that
- // distinguishes the device from other devices.
- string id = 2;
-}
-
-// Custom attribute values that are either filterable or non-filterable.
-message CustomAttribute {
- // Optional but exactly one of [string_values][google.cloud.talent.v4beta1.CustomAttribute.string_values] or [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values] must
- // be specified.
- //
- // This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or
- // `CASE_INSENSITIVE_MATCH`) search.
- // For filterable `string_value`s, a maximum total number of 200 values
- // is allowed, with each `string_value` has a byte size of no more than
- // 255B. For unfilterable `string_values`, the maximum total byte size of
- // unfilterable `string_values` is 50KB.
- //
- // Empty string isn't allowed.
- repeated string string_values = 1;
-
- // Optional but exactly one of [string_values][google.cloud.talent.v4beta1.CustomAttribute.string_values] or [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values] must
- // be specified.
- //
- // This field is used to perform number range search.
- // (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`.
- //
- // Currently at most 1 [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values] is supported.
- repeated int64 long_values = 2;
-
- // Optional.
- //
- // If the `filterable` flag is true, custom field values are searchable.
- // If false, values are not searchable.
- //
- // Default is false.
- bool filterable = 3;
-}
-
-// Output only.
-//
-// Spell check result.
-message SpellingCorrection {
- // Indicates if the query was corrected by the spell checker.
- bool corrected = 1;
-
- // Correction output consisting of the corrected keyword string.
- string corrected_text = 2;
-
- // Corrected output with html tags to highlight the corrected words.
- // Corrected words are called out with the "..." html tags.
- //
- // For example, the user input query is "software enginear", where the second
- // word, "enginear," is incorrect. It should be "engineer". When spelling
- // correction is enabled, this value is
- // "software engineer".
- string corrected_html = 3;
-}
-
-// Job compensation details.
-message CompensationInfo {
- // A compensation entry that represents one component of compensation, such
- // as base pay, bonus, or other compensation type.
- //
- // Annualization: One compensation entry can be annualized if
- // - it contains valid [amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] or [range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range].
- // - and its [expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year] is set or can be derived.
- // Its annualized range is determined as ([amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] or [range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range]) times
- // [expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year].
- message CompensationEntry {
- // Optional.
- //
- // Compensation type.
- //
- // Default is [CompensationUnit.OTHER_COMPENSATION_TYPE][].
- CompensationType type = 1;
-
- // Optional.
- //
- // Frequency of the specified amount.
- //
- // Default is [CompensationUnit.OTHER_COMPENSATION_UNIT][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit.OTHER_COMPENSATION_UNIT].
- CompensationUnit unit = 2;
-
- // Optional.
- //
- // Compensation amount. It could be a fixed amount or a floating range.
- oneof compensation_amount {
- // Optional.
- //
- // Compensation amount.
- google.type.Money amount = 3;
-
- // Optional.
- //
- // Compensation range.
- CompensationRange range = 4;
- }
-
- // Optional.
- //
- // Compensation description. For example, could
- // indicate equity terms or provide additional context to an estimated
- // bonus.
- string description = 5;
-
- // Optional.
- //
- // Expected number of units paid each year. If not specified, when
- // [Job.employment_types][google.cloud.talent.v4beta1.Job.employment_types] is FULLTIME, a default value is inferred
- // based on [unit][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.unit]. Default values:
- // - HOURLY: 2080
- // - DAILY: 260
- // - WEEKLY: 52
- // - MONTHLY: 12
- // - ANNUAL: 1
- google.protobuf.DoubleValue expected_units_per_year = 6;
- }
-
- // Compensation range.
- message CompensationRange {
- // Optional.
- //
- // The maximum amount of compensation. If left empty, the value is set
- // to a maximal compensation value and the currency code is set to
- // match the [currency code][google.type.Money.currency_code] of
- // min_compensation.
- google.type.Money max_compensation = 2;
-
- // Optional.
- //
- // The minimum amount of compensation. If left empty, the value is set
- // to zero and the currency code is set to match the
- // [currency code][google.type.Money.currency_code] of max_compensation.
- google.type.Money min_compensation = 1;
- }
-
- // The type of compensation.
- //
- // For compensation amounts specified in non-monetary amounts,
- // describe the compensation scheme in the [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description].
- //
- // For example, tipping format is described in
- // [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description] (for example, “expect 15-20% tips based
- // on customer bill.”) and an estimate of the tips provided in
- // [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] or [CompensationEntry.range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range] ($10 per hour).
- //
- // For example, equity is described in [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description]
- // (for example, “1% - 2% equity vesting over 4 years, 1 year cliff”) and
- // value estimated in [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] or
- // [CompensationEntry.range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range]. If no value estimate is possible, units are
- // [CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED] and then further
- // clarified in [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description] field.
- enum CompensationType {
- // Default value.
- COMPENSATION_TYPE_UNSPECIFIED = 0;
-
- // Base compensation: Refers to the fixed amount of money paid to an
- // employee by an employer in return for work performed. Base compensation
- // does not include benefits, bonuses or any other potential compensation
- // from an employer.
- BASE = 1;
-
- // Bonus.
- BONUS = 2;
-
- // Signing bonus.
- SIGNING_BONUS = 3;
-
- // Equity.
- EQUITY = 4;
-
- // Profit sharing.
- PROFIT_SHARING = 5;
-
- // Commission.
- COMMISSIONS = 6;
-
- // Tips.
- TIPS = 7;
-
- // Other compensation type.
- OTHER_COMPENSATION_TYPE = 8;
- }
-
- // Pay frequency.
- enum CompensationUnit {
- // Default value.
- COMPENSATION_UNIT_UNSPECIFIED = 0;
-
- // Hourly.
- HOURLY = 1;
-
- // Daily.
- DAILY = 2;
-
- // Weekly
- WEEKLY = 3;
-
- // Monthly.
- MONTHLY = 4;
-
- // Yearly.
- YEARLY = 5;
-
- // One time.
- ONE_TIME = 6;
-
- // Other compensation units.
- OTHER_COMPENSATION_UNIT = 7;
- }
-
- // Optional.
- //
- // Job compensation information.
- //
- // At most one entry can be of type
- // [CompensationInfo.CompensationType.BASE][google.cloud.talent.v4beta1.CompensationInfo.CompensationType.BASE], which is
- // referred as ** base compensation entry ** for the job.
- repeated CompensationEntry entries = 1;
-
- // Output only. Annualized base compensation range. Computed as
- // base compensation entry's [CompensationEntry.compensation][] times
- // [CompensationEntry.expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year].
- //
- // See [CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry] for explanation on compensation annualization.
- CompensationRange annualized_base_compensation_range = 2;
-
- // Output only. Annualized total compensation range. Computed as
- // all compensation entries' [CompensationEntry.compensation][] times
- // [CompensationEntry.expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year].
- //
- // See [CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry] for explanation on compensation annualization.
- CompensationRange annualized_total_compensation_range = 3;
-}
-
// An enum that represents the size of the company.
enum CompanySize {
// Default value if the size isn't specified.
@@ -832,3 +417,441 @@ enum HtmlSanitization {
// unordered list markup tags.
SIMPLE_FORMATTING_ONLY = 2;
}
+
+// Method for commute.
+enum CommuteMethod {
+ // Commute method isn't specified.
+ COMMUTE_METHOD_UNSPECIFIED = 0;
+
+ // Commute time is calculated based on driving time.
+ DRIVING = 1;
+
+ // Commute time is calculated based on public transit including bus, metro,
+ // subway, etc.
+ TRANSIT = 2;
+
+ // Commute time is calculated based on walking time.
+ WALKING = 3;
+
+ // Commute time is calculated based on biking time.
+ CYCLING = 4;
+
+ // Commute time is calculated based on public transit that is wheelchair
+ // accessible.
+ TRANSIT_ACCESSIBLE = 5;
+}
+
+// Output only.
+//
+// A resource that represents a location with full geographic information.
+message Location {
+ // An enum which represents the type of a location.
+ enum LocationType {
+ // Default value if the type isn't specified.
+ LOCATION_TYPE_UNSPECIFIED = 0;
+
+ // A country level location.
+ COUNTRY = 1;
+
+ // A state or equivalent level location.
+ ADMINISTRATIVE_AREA = 2;
+
+ // A county or equivalent level location.
+ SUB_ADMINISTRATIVE_AREA = 3;
+
+ // A city or equivalent level location.
+ LOCALITY = 4;
+
+ // A postal code level location.
+ POSTAL_CODE = 5;
+
+ // A sublocality is a subdivision of a locality, for example a city borough,
+ // ward, or arrondissement. Sublocalities are usually recognized by a local
+ // political authority. For example, Manhattan and Brooklyn are recognized
+ // as boroughs by the City of New York, and are therefore modeled as
+ // sublocalities.
+ SUB_LOCALITY = 6;
+
+ // A district or equivalent level location.
+ SUB_LOCALITY_1 = 7;
+
+ // A smaller district or equivalent level display.
+ SUB_LOCALITY_2 = 8;
+
+ // A neighborhood level location.
+ NEIGHBORHOOD = 9;
+
+ // A street address level location.
+ STREET_ADDRESS = 10;
+ }
+
+ // The type of a location, which corresponds to the address lines field of
+ // [PostalAddress][]. For example, "Downtown, Atlanta, GA, USA" has a type of
+ // [LocationType#NEIGHBORHOOD][], and "Kansas City, KS, USA" has a type of
+ // [LocationType#LOCALITY][].
+ LocationType location_type = 1;
+
+ // Postal address of the location that includes human readable information,
+ // such as postal delivery and payments addresses. Given a postal address,
+ // a postal service can deliver items to a premises, P.O. Box, or other
+ // delivery location.
+ google.type.PostalAddress postal_address = 2;
+
+ // An object representing a latitude/longitude pair.
+ google.type.LatLng lat_lng = 3;
+
+ // Radius in miles of the job location. This value is derived from the
+ // location bounding box in which a circle with the specified radius
+ // centered from [LatLng][] covers the area associated with the job location.
+ // For example, currently, "Mountain View, CA, USA" has a radius of
+ // 6.17 miles.
+ double radius_miles = 4;
+}
+
+// Input only.
+//
+// Meta information related to the job searcher or entity
+// conducting the job search. This information is used to improve the
+// performance of the service.
+message RequestMetadata {
+ // Required if [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids] is unset or `false`.
+ //
+ // The client-defined scope or source of the service call, which typically
+ // is the domain on
+ // which the service has been implemented and is currently being run.
+ //
+ // For example, if the service is being run by client Foo, Inc., on
+ // job board www.foo.com and career site www.bar.com, then this field is
+ // set to "foo.com" for use on the job board, and "bar.com" for use on the
+ // career site.
+ //
+ // Note that any improvements to the model for a particular tenant site rely
+ // on this field being set correctly to a unique domain.
+ //
+ // The maximum number of allowed characters is 255.
+ string domain = 1;
+
+ // Required if [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids] is unset or `false`.
+ //
+ // A unique session identification string. A session is defined as the
+ // duration of an end user's interaction with the service over a certain
+ // period.
+ // Obfuscate this field for privacy concerns before
+ // providing it to the service.
+ //
+ // Note that any improvements to the model for a particular tenant site rely
+ // on this field being set correctly to a unique session ID.
+ //
+ // The maximum number of allowed characters is 255.
+ string session_id = 2;
+
+ // Required if [allow_missing_ids][google.cloud.talent.v4beta1.RequestMetadata.allow_missing_ids] is unset or `false`.
+ //
+ // A unique user identification string, as determined by the client.
+ // To have the strongest positive impact on search quality
+ // make sure the client-level is unique.
+ // Obfuscate this field for privacy concerns before
+ // providing it to the service.
+ //
+ // Note that any improvements to the model for a particular tenant site rely
+ // on this field being set correctly to a unique user ID.
+ //
+ // The maximum number of allowed characters is 255.
+ string user_id = 3;
+
+ // Optional.
+ //
+ // If set to `true`, [domain][google.cloud.talent.v4beta1.RequestMetadata.domain], [session_id][google.cloud.talent.v4beta1.RequestMetadata.session_id] and [user_id][google.cloud.talent.v4beta1.RequestMetadata.user_id] are optional.
+ // Only set when any of these fields isn't available for some reason. It
+ // is highly recommended not to set this field and provide accurate
+ // [domain][google.cloud.talent.v4beta1.RequestMetadata.domain], [session_id][google.cloud.talent.v4beta1.RequestMetadata.session_id] and [user_id][google.cloud.talent.v4beta1.RequestMetadata.user_id] for the best service experience.
+ bool allow_missing_ids = 4;
+
+ // Optional.
+ //
+ // The type of device used by the job seeker at the time of the call to the
+ // service.
+ DeviceInfo device_info = 5;
+}
+
+// Output only.
+//
+// Additional information returned to client, such as debugging information.
+message ResponseMetadata {
+ // A unique id associated with this call.
+ // This id is logged for tracking purposes.
+ string request_id = 1;
+}
+
+// Device information collected from the job seeker, candidate, or
+// other entity conducting the job search. Providing this information improves
+// the quality of the search results across devices.
+message DeviceInfo {
+ // An enumeration describing an API access portal and exposure mechanism.
+ enum DeviceType {
+ // The device type isn't specified.
+ DEVICE_TYPE_UNSPECIFIED = 0;
+
+ // A desktop web browser, such as, Chrome, Firefox, Safari, or Internet
+ // Explorer)
+ WEB = 1;
+
+ // A mobile device web browser, such as a phone or tablet with a Chrome
+ // browser.
+ MOBILE_WEB = 2;
+
+ // An Android device native application.
+ ANDROID = 3;
+
+ // An iOS device native application.
+ IOS = 4;
+
+ // A bot, as opposed to a device operated by human beings, such as a web
+ // crawler.
+ BOT = 5;
+
+ // Other devices types.
+ OTHER = 6;
+ }
+
+ // Optional.
+ //
+ // Type of the device.
+ DeviceType device_type = 1;
+
+ // Optional.
+ //
+ // A device-specific ID. The ID must be a unique identifier that
+ // distinguishes the device from other devices.
+ string id = 2;
+}
+
+// Custom attribute values that are either filterable or non-filterable.
+message CustomAttribute {
+ // Optional but exactly one of [string_values][google.cloud.talent.v4beta1.CustomAttribute.string_values] or [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values] must
+ // be specified.
+ //
+ // This field is used to perform a string match (`CASE_SENSITIVE_MATCH` or
+ // `CASE_INSENSITIVE_MATCH`) search.
+ // For filterable `string_value`s, a maximum total number of 200 values
+ // is allowed, with each `string_value` has a byte size of no more than
+ // 255B. For unfilterable `string_values`, the maximum total byte size of
+ // unfilterable `string_values` is 50KB.
+ //
+ // Empty string isn't allowed.
+ repeated string string_values = 1;
+
+ // Optional but exactly one of [string_values][google.cloud.talent.v4beta1.CustomAttribute.string_values] or [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values] must
+ // be specified.
+ //
+ // This field is used to perform number range search.
+ // (`EQ`, `GT`, `GE`, `LE`, `LT`) over filterable `long_value`.
+ //
+ // Currently at most 1 [long_values][google.cloud.talent.v4beta1.CustomAttribute.long_values] is supported.
+ repeated int64 long_values = 2;
+
+ // Optional.
+ //
+ // If the `filterable` flag is true, custom field values are searchable.
+ // If false, values are not searchable.
+ //
+ // Default is false.
+ bool filterable = 3;
+}
+
+// Output only.
+//
+// Spell check result.
+message SpellingCorrection {
+ // Indicates if the query was corrected by the spell checker.
+ bool corrected = 1;
+
+ // Correction output consisting of the corrected keyword string.
+ string corrected_text = 2;
+
+ // Corrected output with html tags to highlight the corrected words.
+ // Corrected words are called out with the "..." html tags.
+ //
+ // For example, the user input query is "software enginear", where the second
+ // word, "enginear," is incorrect. It should be "engineer". When spelling
+ // correction is enabled, this value is
+ // "software engineer".
+ string corrected_html = 3;
+}
+
+// Job compensation details.
+message CompensationInfo {
+ // A compensation entry that represents one component of compensation, such
+ // as base pay, bonus, or other compensation type.
+ //
+ // Annualization: One compensation entry can be annualized if
+ // - it contains valid [amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] or [range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range].
+ // - and its [expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year] is set or can be derived.
+ // Its annualized range is determined as ([amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] or [range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range]) times
+ // [expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year].
+ message CompensationEntry {
+ // Optional.
+ //
+ // Compensation type.
+ //
+ // Default is [CompensationUnit.OTHER_COMPENSATION_TYPE][].
+ CompensationType type = 1;
+
+ // Optional.
+ //
+ // Frequency of the specified amount.
+ //
+ // Default is [CompensationUnit.OTHER_COMPENSATION_UNIT][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit.OTHER_COMPENSATION_UNIT].
+ CompensationUnit unit = 2;
+
+ // Optional.
+ //
+ // Compensation amount. It could be a fixed amount or a floating range.
+ oneof compensation_amount {
+ // Optional.
+ //
+ // Compensation amount.
+ google.type.Money amount = 3;
+
+ // Optional.
+ //
+ // Compensation range.
+ CompensationRange range = 4;
+ }
+
+ // Optional.
+ //
+ // Compensation description. For example, could
+ // indicate equity terms or provide additional context to an estimated
+ // bonus.
+ string description = 5;
+
+ // Optional.
+ //
+ // Expected number of units paid each year. If not specified, when
+ // [Job.employment_types][google.cloud.talent.v4beta1.Job.employment_types] is FULLTIME, a default value is inferred
+ // based on [unit][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.unit]. Default values:
+ // - HOURLY: 2080
+ // - DAILY: 260
+ // - WEEKLY: 52
+ // - MONTHLY: 12
+ // - ANNUAL: 1
+ google.protobuf.DoubleValue expected_units_per_year = 6;
+ }
+
+ // Compensation range.
+ message CompensationRange {
+ // Optional.
+ //
+ // The maximum amount of compensation. If left empty, the value is set
+ // to a maximal compensation value and the currency code is set to
+ // match the [currency code][google.type.Money.currency_code] of
+ // min_compensation.
+ google.type.Money max_compensation = 2;
+
+ // Optional.
+ //
+ // The minimum amount of compensation. If left empty, the value is set
+ // to zero and the currency code is set to match the
+ // [currency code][google.type.Money.currency_code] of max_compensation.
+ google.type.Money min_compensation = 1;
+ }
+
+ // The type of compensation.
+ //
+ // For compensation amounts specified in non-monetary amounts,
+ // describe the compensation scheme in the [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description].
+ //
+ // For example, tipping format is described in
+ // [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description] (for example, "expect 15-20% tips based
+ // on customer bill.") and an estimate of the tips provided in
+ // [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] or [CompensationEntry.range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range] ($10 per hour).
+ //
+ // For example, equity is described in [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description]
+ // (for example, "1% - 2% equity vesting over 4 years, 1 year cliff") and
+ // value estimated in [CompensationEntry.amount][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.amount] or
+ // [CompensationEntry.range][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.range]. If no value estimate is possible, units are
+ // [CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED][google.cloud.talent.v4beta1.CompensationInfo.CompensationUnit.COMPENSATION_UNIT_UNSPECIFIED] and then further
+ // clarified in [CompensationEntry.description][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.description] field.
+ enum CompensationType {
+ // Default value.
+ COMPENSATION_TYPE_UNSPECIFIED = 0;
+
+ // Base compensation: Refers to the fixed amount of money paid to an
+ // employee by an employer in return for work performed. Base compensation
+ // does not include benefits, bonuses or any other potential compensation
+ // from an employer.
+ BASE = 1;
+
+ // Bonus.
+ BONUS = 2;
+
+ // Signing bonus.
+ SIGNING_BONUS = 3;
+
+ // Equity.
+ EQUITY = 4;
+
+ // Profit sharing.
+ PROFIT_SHARING = 5;
+
+ // Commission.
+ COMMISSIONS = 6;
+
+ // Tips.
+ TIPS = 7;
+
+ // Other compensation type.
+ OTHER_COMPENSATION_TYPE = 8;
+ }
+
+ // Pay frequency.
+ enum CompensationUnit {
+ // Default value.
+ COMPENSATION_UNIT_UNSPECIFIED = 0;
+
+ // Hourly.
+ HOURLY = 1;
+
+ // Daily.
+ DAILY = 2;
+
+ // Weekly
+ WEEKLY = 3;
+
+ // Monthly.
+ MONTHLY = 4;
+
+ // Yearly.
+ YEARLY = 5;
+
+ // One time.
+ ONE_TIME = 6;
+
+ // Other compensation units.
+ OTHER_COMPENSATION_UNIT = 7;
+ }
+
+ // Optional.
+ //
+ // Job compensation information.
+ //
+ // At most one entry can be of type
+ // [CompensationInfo.CompensationType.BASE][google.cloud.talent.v4beta1.CompensationInfo.CompensationType.BASE], which is
+ // referred as ** base compensation entry ** for the job.
+ repeated CompensationEntry entries = 1;
+
+ // Output only. Annualized base compensation range. Computed as
+ // base compensation entry's [CompensationEntry.compensation][] times
+ // [CompensationEntry.expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year].
+ //
+ // See [CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry] for explanation on compensation annualization.
+ CompensationRange annualized_base_compensation_range = 2;
+
+ // Output only. Annualized total compensation range. Computed as
+ // all compensation entries' [CompensationEntry.compensation][] times
+ // [CompensationEntry.expected_units_per_year][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry.expected_units_per_year].
+ //
+ // See [CompensationEntry][google.cloud.talent.v4beta1.CompensationInfo.CompensationEntry] for explanation on compensation annualization.
+ CompensationRange annualized_total_compensation_range = 3;
+}
diff --git a/google/cloud/talent/v4beta1/company.proto b/google/cloud/talent/v4beta1/company.proto
index 8cd727d1..d9264b52 100644
--- a/google/cloud/talent/v4beta1/company.proto
+++ b/google/cloud/talent/v4beta1/company.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -17,8 +17,8 @@ syntax = "proto3";
package google.cloud.talent.v4beta1;
-import "google/api/annotations.proto";
import "google/cloud/talent/v4beta1/common.proto";
+import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
option java_multiple_files = true;
@@ -38,20 +38,6 @@ message Company {
Location headquarters_location = 1;
}
- // Enum that represents how user data owned by the company is used.
- enum DataLearningType {
- // Default value.
- DATA_LEARNING_TYPE_UNSPECIFIED = 0;
-
- // Data owned by this company is used to improve search/recommendation
- // quality across companies.
- AGGREGATED = 1;
-
- // Data owned by this company is used to improve search/recommendation
- // quality for this company only.
- ISOLATED = 2;
- }
-
// Required during company update.
//
// The resource name for a company. This is generated by the service when a
@@ -140,12 +126,4 @@ message Company {
// public availability by the service when job content appears suspicious,
// abusive, or spammy.
bool suspended = 13;
-
- // Optional.
- //
- // Indicates whether data owned by this company may be used to provide product
- // improvements across other companies.
- //
- // Defaults behavior is [DataLearningType.ISOLATED][google.cloud.talent.v4beta1.Company.DataLearningType.ISOLATED] if it's unset.
- DataLearningType learning_type = 14;
}
diff --git a/google/cloud/talent/v4beta1/company_service.proto b/google/cloud/talent/v4beta1/company_service.proto
index a2654317..275cd2bf 100644
--- a/google/cloud/talent/v4beta1/company_service.proto
+++ b/google/cloud/talent/v4beta1/company_service.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -18,10 +18,10 @@ syntax = "proto3";
package google.cloud.talent.v4beta1;
import "google/api/annotations.proto";
-import "google/cloud/talent/v4beta1/common.proto";
-import "google/cloud/talent/v4beta1/company.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
+import "google/cloud/talent/v4beta1/common.proto";
+import "google/cloud/talent/v4beta1/company.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
option java_multiple_files = true;
@@ -30,7 +30,7 @@ option java_package = "com.google.cloud.talent.v4beta1";
option objc_class_prefix = "CTS";
-// A service handles company management, including CRUD and job enumeration.
+// A service that handles company management, including CRUD and enumeration.
service CompanyService {
// Creates a new company entity.
rpc CreateCompany(CreateCompanyRequest) returns (Company) {
@@ -47,9 +47,7 @@ service CompanyService {
};
}
- // Updates specified company. Company names can't be updated. To update a
- // company name, delete the company and all jobs associated with it, and only
- // then re-create them.
+ // Updates specified company.
rpc UpdateCompany(UpdateCompanyRequest) returns (Company) {
option (google.api.http) = {
patch: "/v4beta1/{company.name=projects/*/companies/*}"
@@ -65,7 +63,7 @@ service CompanyService {
};
}
- // Lists all companies associated with the service account.
+ // Lists all companies associated with the project.
rpc ListCompanies(ListCompaniesRequest) returns (ListCompaniesResponse) {
option (google.api.http) = {
get: "/v4beta1/{parent=projects/*}/companies"
@@ -73,8 +71,6 @@ service CompanyService {
}
}
-// Input only.
-//
// The Request of the CreateCompany method.
message CreateCompanyRequest {
// Required.
@@ -91,8 +87,6 @@ message CreateCompanyRequest {
Company company = 2;
}
-// Input only.
-//
// Request for getting a company by name.
message GetCompanyRequest {
// Required.
@@ -104,8 +98,6 @@ message GetCompanyRequest {
string name = 1;
}
-// Input only.
-//
// Request for updating a specified company.
message UpdateCompanyRequest {
// Required.
@@ -124,8 +116,6 @@ message UpdateCompanyRequest {
google.protobuf.FieldMask update_mask = 2;
}
-// Input only.
-//
// Request to delete a company.
message DeleteCompanyRequest {
// Required.
@@ -137,8 +127,6 @@ message DeleteCompanyRequest {
string name = 1;
}
-// Input only.
-//
// List companies for which the client has ACL visibility.
message ListCompaniesRequest {
// Required.
diff --git a/google/cloud/talent/v4beta1/completion_service.proto b/google/cloud/talent/v4beta1/completion_service.proto
index 80041e7f..2429a944 100644
--- a/google/cloud/talent/v4beta1/completion_service.proto
+++ b/google/cloud/talent/v4beta1/completion_service.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/google/cloud/talent/v4beta1/event.proto b/google/cloud/talent/v4beta1/event.proto
index 56043497..d573c165 100644
--- a/google/cloud/talent/v4beta1/event.proto
+++ b/google/cloud/talent/v4beta1/event.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -41,22 +41,9 @@ message ClientEvent {
// Required.
//
- // A unique identifier, generated by the client application. This `event_id`
- // is used to establish the relationship between different events
- // (see [parent_event_id][google.cloud.talent.v4beta1.ClientEvent.parent_event_id]).
+ // A unique identifier, generated by the client application.
string event_id = 2;
- // Required except the first event.
- //
- // The event_id of an event that resulted in the current event. For example, a
- // [Job view][JobEventType.VIEW] event usually follows a parent
- // [impression][JobEventType.IMPRESSION] event: A job seeker first does a
- // search where a list of jobs appears
- // ([impression][JobEventType.IMPRESSION]). The job seeker then selects a
- // result and views the description of a particular job ([Job
- // view][JobEventType.VIEW]).
- string parent_event_id = 3;
-
// Required.
//
// The timestamp of the event.
@@ -160,7 +147,7 @@ message JobEvent {
// The job seeker or other entity interacting with the service was
// sent a notification, such as an email alert or device notification,
- // contatining one or more jobs listings generated by the service.
+ // containing one or more jobs listings generated by the service.
NOTIFICATION = 12;
// The job seeker or other entity interacting with the service was
diff --git a/google/cloud/talent/v4beta1/event_service.proto b/google/cloud/talent/v4beta1/event_service.proto
index 454eebcf..f8623fc8 100644
--- a/google/cloud/talent/v4beta1/event_service.proto
+++ b/google/cloud/talent/v4beta1/event_service.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/google/cloud/talent/v4beta1/filters.proto b/google/cloud/talent/v4beta1/filters.proto
index b060a56f..36f70546 100644
--- a/google/cloud/talent/v4beta1/filters.proto
+++ b/google/cloud/talent/v4beta1/filters.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -17,16 +17,16 @@ syntax = "proto3";
package google.cloud.talent.v4beta1;
-import "google/api/annotations.proto";
-import "google/cloud/talent/v4beta1/common.proto";
-import "google/cloud/talent/v4beta1/job.proto";
-import "google/cloud/talent/v4beta1/profile.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/wrappers.proto";
import "google/type/date.proto";
import "google/type/latlng.proto";
import "google/type/timeofday.proto";
+import "google/cloud/talent/v4beta1/common.proto";
+import "google/cloud/talent/v4beta1/job.proto";
+import "google/cloud/talent/v4beta1/profile.proto";
+import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
option java_multiple_files = true;
@@ -508,29 +508,6 @@ message CompensationFilter {
//
// Parameters needed for commute search.
message CommuteFilter {
- // Method for commute.
- enum CommuteMethod {
- // Commute method isn't specified.
- COMMUTE_METHOD_UNSPECIFIED = 0;
-
- // Commute time is calculated based on driving time.
- DRIVING = 1;
-
- // Commute time is calculated based on public transit including bus, metro,
- // subway, etc.
- TRANSIT = 2;
-
- // Commute time is calculated based on walking time.
- WALKING = 3;
-
- // Commute time is calculated based on biking time.
- BICYCLING = 4;
-
- // Commute time is calculated based on public transit that is wheelchair
- // accessible.
- TRANSIT_ACCESSIBLE = 5;
- }
-
// The traffic density to use when calculating commute time.
enum RoadTraffic {
// Road traffic situation isn't specified.
diff --git a/google/cloud/talent/v4beta1/histogram.proto b/google/cloud/talent/v4beta1/histogram.proto
index 9f882e94..b69f2f7b 100644
--- a/google/cloud/talent/v4beta1/histogram.proto
+++ b/google/cloud/talent/v4beta1/histogram.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -17,8 +17,8 @@ syntax = "proto3";
package google.cloud.talent.v4beta1;
-import "google/api/annotations.proto";
import "google/protobuf/wrappers.proto";
+import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
option java_multiple_files = true;
diff --git a/google/cloud/talent/v4beta1/job.proto b/google/cloud/talent/v4beta1/job.proto
index 91826bed..51f67958 100644
--- a/google/cloud/talent/v4beta1/job.proto
+++ b/google/cloud/talent/v4beta1/job.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -17,9 +17,9 @@ syntax = "proto3";
package google.cloud.talent.v4beta1;
-import "google/api/annotations.proto";
-import "google/cloud/talent/v4beta1/common.proto";
import "google/protobuf/timestamp.proto";
+import "google/cloud/talent/v4beta1/common.proto";
+import "google/api/annotations.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
option java_multiple_files = true;
diff --git a/google/cloud/talent/v4beta1/job_service.proto b/google/cloud/talent/v4beta1/job_service.proto
index a02b2899..c6fa957a 100644
--- a/google/cloud/talent/v4beta1/job_service.proto
+++ b/google/cloud/talent/v4beta1/job_service.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -18,15 +18,15 @@ syntax = "proto3";
package google.cloud.talent.v4beta1;
import "google/api/annotations.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";
-import "google/cloud/talent/v4beta1/job.proto";
-import "google/longrunning/operations.proto";
import "google/protobuf/duration.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
+import "google/longrunning/operations.proto";
+import "google/cloud/talent/v4beta1/common.proto";
+import "google/cloud/talent/v4beta1/filters.proto";
+import "google/cloud/talent/v4beta1/job.proto";
+import "google/cloud/talent/v4beta1/histogram.proto";
+import "google/cloud/talent/v4beta1/batch.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
option java_multiple_files = true;
@@ -236,12 +236,16 @@ message ListJobsRequest {
//
// * `companyName` (Required)
// * `requisitionId` (Optional)
+ // * `status` (Optional) Available values: OPEN, EXPIRED, ALL. Defaults to
+ // OPEN if no value is specified.
//
// Sample Query:
//
// * companyName = "projects/api-test-project/companies/123"
// * companyName = "projects/api-test-project/companies/123" AND requisitionId
// = "req-1"
+ // * companyName = "projects/api-test-project/companies/123" AND status =
+ // "EXPIRED"
string filter = 2;
// Optional.
@@ -267,6 +271,32 @@ message ListJobsRequest {
JobView job_view = 5;
}
+// An enum that specifies the job attributes that are returned in the
+// [MatchingJob.Job][] in [SearchJobsResponse][google.cloud.talent.v4beta1.SearchJobsResponse] or [Job][google.cloud.talent.v4beta1.Job] objects in
+// [ListJobsResponse][google.cloud.talent.v4beta1.ListJobsResponse].
+enum JobView {
+ // Default value.
+ JOB_VIEW_UNSPECIFIED = 0;
+
+ // A ID only view of job, with following attributes:
+ // [Job.name][google.cloud.talent.v4beta1.Job.name], [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id], [Job.language_code][google.cloud.talent.v4beta1.Job.language_code].
+ JOB_VIEW_ID_ONLY = 1;
+
+ // A minimal view of the job, with the following attributes:
+ // [Job.name][google.cloud.talent.v4beta1.Job.name], [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id], [Job.job_title][],
+ // [Job.company_name][google.cloud.talent.v4beta1.Job.company_name], [Job.DerivedInfo.locations][google.cloud.talent.v4beta1.Job.DerivedInfo.locations], [Job.language_code][google.cloud.talent.v4beta1.Job.language_code].
+ JOB_VIEW_MINIMAL = 2;
+
+ // A small view of the job, with the following attributes in the search
+ // results: [Job.name][google.cloud.talent.v4beta1.Job.name], [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id], [Job.job_title][],
+ // [Job.company_name][google.cloud.talent.v4beta1.Job.company_name], [Job.DerivedInfo.locations][google.cloud.talent.v4beta1.Job.DerivedInfo.locations], [Job.visibility][google.cloud.talent.v4beta1.Job.visibility],
+ // [Job.language_code][google.cloud.talent.v4beta1.Job.language_code], [Job.description][google.cloud.talent.v4beta1.Job.description].
+ JOB_VIEW_SMALL = 3;
+
+ // All available attributes are included in the search results.
+ JOB_VIEW_FULL = 4;
+}
+
// Output only.
//
// List jobs response.
@@ -753,29 +783,3 @@ message SearchJobsResponse {
// The spell checking result, and correction.
SpellingCorrection spell_correction = 9;
}
-
-// An enum that specifies the job attributes that are returned in the
-// [MatchingJob.Job][] in [SearchJobsResponse][google.cloud.talent.v4beta1.SearchJobsResponse] or [Job][google.cloud.talent.v4beta1.Job] objects in
-// [ListJobsResponse][google.cloud.talent.v4beta1.ListJobsResponse].
-enum JobView {
- // Default value.
- JOB_VIEW_UNSPECIFIED = 0;
-
- // A ID only view of job, with following attributes:
- // [Job.name][google.cloud.talent.v4beta1.Job.name], [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id], [Job.language_code][google.cloud.talent.v4beta1.Job.language_code].
- JOB_VIEW_ID_ONLY = 1;
-
- // A minimal view of the job, with the following attributes:
- // [Job.name][google.cloud.talent.v4beta1.Job.name], [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id], [Job.job_title][],
- // [Job.company_name][google.cloud.talent.v4beta1.Job.company_name], [Job.DerivedInfo.locations][google.cloud.talent.v4beta1.Job.DerivedInfo.locations], [Job.language_code][google.cloud.talent.v4beta1.Job.language_code].
- JOB_VIEW_MINIMAL = 2;
-
- // A small view of the job, with the following attributes in the search
- // results: [Job.name][google.cloud.talent.v4beta1.Job.name], [Job.requisition_id][google.cloud.talent.v4beta1.Job.requisition_id], [Job.job_title][],
- // [Job.company_name][google.cloud.talent.v4beta1.Job.company_name], [Job.DerivedInfo.locations][google.cloud.talent.v4beta1.Job.DerivedInfo.locations], [Job.visibility][google.cloud.talent.v4beta1.Job.visibility],
- // [Job.language_code][google.cloud.talent.v4beta1.Job.language_code], [Job.description][google.cloud.talent.v4beta1.Job.description].
- JOB_VIEW_SMALL = 3;
-
- // All available attributes are included in the search results.
- JOB_VIEW_FULL = 4;
-}
diff --git a/google/cloud/talent/v4beta1/profile.proto b/google/cloud/talent/v4beta1/profile.proto
index 5db6bf56..604b187f 100644
--- a/google/cloud/talent/v4beta1/profile.proto
+++ b/google/cloud/talent/v4beta1/profile.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -18,12 +18,12 @@ syntax = "proto3";
package google.cloud.talent.v4beta1;
import "google/api/annotations.proto";
-import "google/cloud/talent/v4beta1/common.proto";
-import "google/cloud/talent/v4beta1/job.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/wrappers.proto";
import "google/type/date.proto";
import "google/type/postal_address.proto";
+import "google/cloud/talent/v4beta1/common.proto";
+import "google/cloud/talent/v4beta1/job.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
option java_multiple_files = true;
@@ -33,16 +33,16 @@ option objc_class_prefix = "CTS";
// Cloud Profile Discovery API definition
// A resource that represents the profile for a job candidate (also referred to
-// as a "single-source profile"). A profile belongs to a [Company][google.cloud.talent.v4beta1.Company], which is
-// the company/organization that owns the profile.
+// as a "single-source profile"). A profile belongs to a [Tenant][google.cloud.talent.v4beta1.Tenant], which is
+// an isolated instance of the customer that owns the profile.
message Profile {
// Required during profile update.
//
// Resource name assigned to a profile by the API.
//
// The format is
- // "projects/{project_id}/companies/{company_id}/profiles/{profile_id}",
- // for example, "projects/api-test-project/companies/foo/profiles/bar".
+ // "projects/{project_id}/tenants/{tenant_id}/profiles/{profile_id}",
+ // for example, "projects/api-test-project/tenants/foo/profiles/bar".
string name = 1;
// Optional.
diff --git a/google/cloud/talent/v4beta1/profile_service.proto b/google/cloud/talent/v4beta1/profile_service.proto
index 309c4fd7..e7b657fe 100644
--- a/google/cloud/talent/v4beta1/profile_service.proto
+++ b/google/cloud/talent/v4beta1/profile_service.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -18,12 +18,12 @@ syntax = "proto3";
package google.cloud.talent.v4beta1;
import "google/api/annotations.proto";
-import "google/cloud/talent/v4beta1/common.proto";
-import "google/cloud/talent/v4beta1/filters.proto";
-import "google/cloud/talent/v4beta1/histogram.proto";
-import "google/cloud/talent/v4beta1/profile.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
+import "google/cloud/talent/v4beta1/common.proto";
+import "google/cloud/talent/v4beta1/histogram.proto";
+import "google/cloud/talent/v4beta1/profile.proto";
+import "google/cloud/talent/v4beta1/filters.proto";
option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
option java_multiple_files = true;
@@ -38,14 +38,14 @@ service ProfileService {
// Lists profiles by filter. The order is unspecified.
rpc ListProfiles(ListProfilesRequest) returns (ListProfilesResponse) {
option (google.api.http) = {
- get: "/v4beta1/{parent=projects/*/companies/*}/profiles"
+ get: "/v4beta1/{parent=projects/*/tenants/*}/profiles"
};
}
// Creates and returns a new profile.
rpc CreateProfile(CreateProfileRequest) returns (Profile) {
option (google.api.http) = {
- post: "/v4beta1/{parent=projects/*/companies/*}/profiles"
+ post: "/v4beta1/{parent=projects/*/tenants/*}/profiles"
body: "*"
};
}
@@ -53,14 +53,14 @@ service ProfileService {
// Gets the specified profile.
rpc GetProfile(GetProfileRequest) returns (Profile) {
option (google.api.http) = {
- get: "/v4beta1/{name=projects/*/companies/*/profiles/*}"
+ get: "/v4beta1/{name=projects/*/tenants/*/profiles/*}"
};
}
// Updates the specified profile and returns the updated result.
rpc UpdateProfile(UpdateProfileRequest) returns (Profile) {
option (google.api.http) = {
- patch: "/v4beta1/{profile.name=projects/*/companies/*/profiles/*}"
+ patch: "/v4beta1/{profile.name=projects/*/tenants/*/profiles/*}"
body: "*"
};
}
@@ -68,11 +68,11 @@ service ProfileService {
// Deletes the specified profile.
rpc DeleteProfile(DeleteProfileRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
- delete: "/v4beta1/{name=projects/*/companies/*/profiles/*}"
+ delete: "/v4beta1/{name=projects/*/tenants/*/profiles/*}"
};
}
- // Searches for profiles within a company.
+ // Searches for profiles within a tenant.
//
// For example, search by raw queries "software engineer in Mountain View" or
// search by structured filters (location filter, education filter, etc.).
@@ -80,7 +80,7 @@ service ProfileService {
// See [SearchProfilesRequest][google.cloud.talent.v4beta1.SearchProfilesRequest] for more information.
rpc SearchProfiles(SearchProfilesRequest) returns (SearchProfilesResponse) {
option (google.api.http) = {
- post: "/v4beta1/{parent=projects/*/companies/*}:search"
+ post: "/v4beta1/{parent=projects/*/tenants/*}:search"
body: "*"
};
}
@@ -90,10 +90,10 @@ service ProfileService {
message ListProfilesRequest {
// Required.
//
- // The resource name of the company under which the job is created.
+ // The resource name of the tenant under which the job is created.
//
- // The format is "projects/{project_id}/companies/{company_id}", for example,
- // "projects/api-test-project/companies/foo".
+ // The format is "projects/{project_id}/tenants/{tenant_id}", for example,
+ // "projects/api-test-project/tenants/foo".
string parent = 1;
// Optional.
@@ -124,7 +124,7 @@ message ListProfilesRequest {
// The List profiles response object.
message ListProfilesResponse {
- // Profiles for the specific company.
+ // Profiles for the specific tenant.
repeated Profile profiles = 1;
// A token to retrieve the next page of results. This is empty if there are no
@@ -136,10 +136,10 @@ message ListProfilesResponse {
message CreateProfileRequest {
// Required.
//
- // The name of the company this profile belongs to.
+ // The name of the tenant this profile belongs to.
//
- // The format is "projects/{project_id}/companies/{company_id}", for example,
- // "projects/api-test-project/companies/foo".
+ // The format is "projects/{project_id}/tenants/{tenant_id}", for example,
+ // "projects/api-test-project/tenants/foo".
string parent = 1;
// Required.
@@ -155,8 +155,8 @@ message GetProfileRequest {
// Resource name of the profile to get.
//
// The format is
- // "projects/{project_id}/companies/{company_id}/profiles/{profile_id}",
- // for example, "projects/api-test-project/companies/foo/profiles/bar".
+ // "projects/{project_id}/tenants/{tenant_id}/profiles/{profile_id}",
+ // for example, "projects/api-test-project/tenants/foo/profiles/bar".
string name = 1;
}
@@ -208,8 +208,8 @@ message DeleteProfileRequest {
// Resource name of the profile to be deleted.
//
// The format is
- // "projects/{project_id}/companies/{company_id}/profiles/{profile_id}",
- // for example, "projects/api-test-project/companies/foo/profiles/bar".
+ // "projects/{project_id}/tenants/{tenant_id}/profiles/{profile_id}",
+ // for example, "projects/api-test-project/tenants/foo/profiles/bar".
string name = 1;
}
@@ -217,10 +217,10 @@ message DeleteProfileRequest {
message SearchProfilesRequest {
// Required.
//
- // The resource name of the company to search within.
+ // The resource name of the tenant to search within.
//
- // The format is "projects/{project_id}/companies/{company_id}", for example,
- // "projects/api-test-project/companies/foo".
+ // The format is "projects/{project_id}/tenants/{tenant_id}", for example,
+ // "projects/api-test-project/tenants/foo".
string parent = 1;
// Required.
diff --git a/google/cloud/talent/v4beta1/resume_service.proto b/google/cloud/talent/v4beta1/resume_service.proto
index f8116331..7dc81931 100644
--- a/google/cloud/talent/v4beta1/resume_service.proto
+++ b/google/cloud/talent/v4beta1/resume_service.proto
@@ -1,4 +1,4 @@
-// Copyright 2018 Google LLC.
+// Copyright 2019 Google LLC.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -48,15 +48,15 @@ service ResumeService {
// resume, clients need to call the CreateProfile method again with the
// profile returned.
//
- // This API supports the following list of formats:
+ // The following list of formats are supported:
//
// * PDF
// * TXT
// * DOC
// * RTF
// * DOCX
- //
- // An error is thrown if the input format is not supported.
+ // * PNG (only when [ParseResumeRequest.enable_ocr][] is set to `true`,
+ // otherwise an error is thrown)
rpc ParseResume(ParseResumeRequest) returns (ParseResumeResponse) {
option (google.api.http) = {
post: "/v4beta1/{parent=projects/*}/resumes:parse"
@@ -77,9 +77,9 @@ message ParseResumeRequest {
// Required.
//
- // The bytes of the resume file in common format. Currently the API supports
- // the following formats:
- // PDF, TXT, DOC, RTF and DOCX.
+ // The bytes of the resume file in common format, for example, PDF, TXT.
+ // UTF-8 encoding is required if the resume is text-based, otherwise an error
+ // is thrown.
bytes resume = 2;
// Optional.
@@ -102,6 +102,34 @@ message ParseResumeRequest {
// [Tags for Identifying Languages](https://tools.ietf.org/html/bcp47){:
// class="external" target="_blank" }.
string language_code = 4;
+
+ // Optional.
+ //
+ // Options that change how the resume parse is performed.
+ ParseResumeOptions options = 5;
+}
+
+// Options that change how the resume parse is performed.
+message ParseResumeOptions {
+ // Optional.
+ //
+ // Controls whether Optical Character Recognition (OCR) is enabled.
+ //
+ // OCR is used to decipher pictorial resumes, or resumes that have some
+ // element of pictorial detail (for example, contact information placed within
+ // an image in a pdf). Note that the API call has a higher latency if OCR is
+ // enabled.
+ bool enable_ocr = 1;
+
+ // Optional.
+ //
+ // Controls whether detected skills are included in the parsed profile from
+ // sections of the resume other than just skills sections.
+ //
+ // Normally, returned skills are limited to those taken from a resume section
+ // intended to list skills. When enabled, this feature causes detected
+ // skills in other sections to also be included in the returned profile.
+ bool enable_full_skill_detection = 2;
}
// Parse resume response.
diff --git a/google/cloud/talent/v4beta1/talent_gapic.yaml b/google/cloud/talent/v4beta1/talent_gapic.yaml
index ffab023e..21dcb876 100644
--- a/google/cloud/talent/v4beta1/talent_gapic.yaml
+++ b/google/cloud/talent/v4beta1/talent_gapic.yaml
@@ -43,8 +43,10 @@ collections:
entity_name: company
- name_pattern: projects/{project}/jobs/{jobs}
entity_name: job
-- name_pattern: projects/{project}/companies/{company}/profiles/{profile}
+- name_pattern: projects/{project}/tenants/{tenant}/profiles/{profile}
entity_name: profile
+- name_pattern: projects/{project}/tenants/{tenant}
+ entity_name: tenant
# A list of API interface configurations.
interfaces:
# The fully qualified name of the API interface.
@@ -659,7 +661,7 @@ interfaces:
retry_codes_name: idempotent
retry_params_name: default
field_name_patterns:
- parent: company
+ parent: tenant
timeout_millis: 30000
- name: CreateProfile
flattening:
@@ -674,7 +676,7 @@ interfaces:
retry_codes_name: non_idempotent
retry_params_name: default
field_name_patterns:
- parent: company
+ parent: tenant
timeout_millis: 30000
- name: GetProfile
flattening:
@@ -727,7 +729,7 @@ interfaces:
retry_codes_name: non_idempotent
retry_params_name: default
field_name_patterns:
- parent: company
+ parent: tenant
timeout_millis: 30000
# The fully qualified name of the API interface.
- name: google.cloud.talent.v4beta1.ResumeService
@@ -819,6 +821,152 @@ interfaces:
field_name_patterns:
parent: project
timeout_millis: 30000
+# The fully qualified name of the API interface.
+- name: google.cloud.talent.v4beta1.TenantService
+ # Definition for retryable codes.
+ retry_codes_def:
+ - name: idempotent
+ retry_codes:
+ - DEADLINE_EXCEEDED
+ - UNAVAILABLE
+ - name: non_idempotent
+ retry_codes: []
+ # Definition for retry/backoff parameters.
+ retry_params_def:
+ - name: default
+ initial_retry_delay_millis: 100
+ retry_delay_multiplier: 1.3
+ max_retry_delay_millis: 60000
+ initial_rpc_timeout_millis: 20000
+ rpc_timeout_multiplier: 1
+ max_rpc_timeout_millis: 20000
+ total_timeout_millis: 600000
+ # A list of method configurations.
+ # Common properties:
+ #
+ # name - The simple name of the method.
+ #
+ # flattening - Specifies the configuration for parameter flattening.
+ # Describes the parameter groups for which a generator should produce method
+ # overloads which allow a client to directly pass request message fields as
+ # method parameters. This information may or may not be used, depending on
+ # the target language.
+ # Consists of groups, which each represent a list of parameters to be
+ # flattened. Each parameter listed must be a field of the request message.
+ #
+ # required_fields - Fields that are always required for a request to be
+ # valid.
+ #
+ # resource_name_treatment - An enum that specifies how to treat the resource
+ # name formats defined in the field_name_patterns and
+ # response_field_name_patterns fields.
+ # UNSET: default value
+ # NONE: the collection configs will not be used by the generated code.
+ # VALIDATE: string fields will be validated by the client against the
+ # specified resource name formats.
+ # STATIC_TYPES: the client will use generated types for resource names.
+ #
+ # page_streaming - Specifies the configuration for paging.
+ # Describes information for generating a method which transforms a paging
+ # list RPC into a stream of resources.
+ # Consists of a request and a response.
+ # The request specifies request information of the list method. It defines
+ # which fields match the paging pattern in the request. The request consists
+ # of a page_size_field and a token_field. The page_size_field is the name of
+ # the optional field specifying the maximum number of elements to be
+ # returned in the response. The token_field is the name of the field in the
+ # request containing the page token.
+ # The response specifies response information of the list method. It defines
+ # which fields match the paging pattern in the response. The response
+ # consists of a token_field and a resources_field. The token_field is the
+ # name of the field in the response containing the next page token. The
+ # resources_field is the name of the field in the response containing the
+ # list of resources belonging to the page.
+ #
+ # retry_codes_name - Specifies the configuration for retryable codes. The
+ # name must be defined in interfaces.retry_codes_def.
+ #
+ # retry_params_name - Specifies the configuration for retry/backoff
+ # parameters. The name must be defined in interfaces.retry_params_def.
+ #
+ # field_name_patterns - Maps the field name of the request type to
+ # entity_name of interfaces.collections.
+ # Specifies the string pattern that the field must follow.
+ #
+ # timeout_millis - Specifies the default timeout for a non-retrying call. If
+ # the call is retrying, refer to retry_params_name instead.
+ methods:
+ - name: CreateTenant
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ - tenant
+ required_fields:
+ - parent
+ - tenant
+ resource_name_treatment: STATIC_TYPES
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: project
+ timeout_millis: 30000
+ - name: GetTenant
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ resource_name_treatment: STATIC_TYPES
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: tenant
+ timeout_millis: 30000
+ - name: UpdateTenant
+ flattening:
+ groups:
+ - parameters:
+ - tenant
+ required_fields:
+ - tenant
+ retry_codes_name: non_idempotent
+ retry_params_name: default
+ timeout_millis: 30000
+ - name: DeleteTenant
+ flattening:
+ groups:
+ - parameters:
+ - name
+ required_fields:
+ - name
+ resource_name_treatment: STATIC_TYPES
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ name: tenant
+ timeout_millis: 30000
+ - name: ListTenants
+ flattening:
+ groups:
+ - parameters:
+ - parent
+ required_fields:
+ - parent
+ resource_name_treatment: STATIC_TYPES
+ page_streaming:
+ request:
+ page_size_field: page_size
+ token_field: page_token
+ response:
+ token_field: next_page_token
+ resources_field: tenants
+ retry_codes_name: idempotent
+ retry_params_name: default
+ field_name_patterns:
+ parent: project
+ timeout_millis: 30000
resource_name_generation:
- message_name: Company
field_entity_map:
@@ -835,6 +983,12 @@ resource_name_generation:
- message_name: ListCompaniesRequest
field_entity_map:
parent: project
+- message_name: CompleteQueryRequest
+ field_entity_map:
+ name: project
+- message_name: CreateClientEventRequest
+ field_entity_map:
+ parent: project
- message_name: Job
field_entity_map:
name: job
@@ -864,7 +1018,7 @@ resource_name_generation:
name: profile
- message_name: CreateProfileRequest
field_entity_map:
- parent: company
+ parent: tenant
- message_name: GetProfileRequest
field_entity_map:
name: profile
@@ -873,16 +1027,25 @@ resource_name_generation:
name: profile
- message_name: ListProfilesRequest
field_entity_map:
- parent: company
+ parent: tenant
- message_name: SearchProfilesRequest
field_entity_map:
- parent: company
+ parent: tenant
- message_name: ParseResumeRequest
field_entity_map:
parent: project
-- message_name: CompleteQueryRequest
+- message_name: Tenant
field_entity_map:
- name: project
-- message_name: CreateClientEventRequest
+ name: tenant
+- message_name: CreateTenantRequest
+ field_entity_map:
+ parent: project
+- message_name: GetTenantRequest
+ field_entity_map:
+ name: tenant
+- message_name: DeleteTenantRequest
+ field_entity_map:
+ name: tenant
+- message_name: ListTenantsRequest
field_entity_map:
parent: project
diff --git a/google/cloud/talent/v4beta1/tenant.proto b/google/cloud/talent/v4beta1/tenant.proto
new file mode 100644
index 00000000..36573096
--- /dev/null
+++ b/google/cloud/talent/v4beta1/tenant.proto
@@ -0,0 +1,72 @@
+// Copyright 2019 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.cloud.talent.v4beta1;
+
+import "google/cloud/talent/v4beta1/common.proto";
+import "google/api/annotations.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
+option java_multiple_files = true;
+option java_outer_classname = "TenantResourceProto";
+option java_package = "com.google.cloud.talent.v4beta1";
+option objc_class_prefix = "CTS";
+
+
+// A Tenant resource represents a tenant in the service. A tenant is a group or
+// entity that shares common access with specific privileges for resources like
+// profiles. Customer may create multiple tenants to provide data isolation for
+// different groups.
+message Tenant {
+ // Enum that represents how user data owned by the tenant is used.
+ enum DataUsageType {
+ // Default value.
+ DATA_USAGE_TYPE_UNSPECIFIED = 0;
+
+ // Data owned by this tenant is used to improve search/recommendation
+ // quality across tenants.
+ AGGREGATED = 1;
+
+ // Data owned by this tenant is used to improve search/recommendation
+ // quality for this tenant only.
+ ISOLATED = 2;
+ }
+
+ // Required during tenant update.
+ //
+ // The resource name for a tenant. This is generated by the service when a
+ // tenant is created.
+ //
+ // The format is "projects/{project_id}/tenants/{tenant_id}", for example,
+ // "projects/api-test-project/tenants/foo".
+ string name = 1;
+
+ // Required.
+ //
+ // Client side tenant identifier, used to uniquely identify the tenant.
+ //
+ // The maximum number of allowed characters is 255.
+ string external_id = 2;
+
+ // Optional.
+ //
+ // Indicates whether data owned by this tenant may be used to provide product
+ // improvements across other tenants.
+ //
+ // Defaults behavior is [DataUsageType.ISOLATED][google.cloud.talent.v4beta1.Tenant.DataUsageType.ISOLATED] if it's unset.
+ DataUsageType usage_type = 3;
+}
diff --git a/google/cloud/talent/v4beta1/tenant_service.proto b/google/cloud/talent/v4beta1/tenant_service.proto
new file mode 100644
index 00000000..95c8bbf0
--- /dev/null
+++ b/google/cloud/talent/v4beta1/tenant_service.proto
@@ -0,0 +1,164 @@
+// Copyright 2019 Google LLC.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+syntax = "proto3";
+
+package google.cloud.talent.v4beta1;
+
+import "google/api/annotations.proto";
+import "google/protobuf/empty.proto";
+import "google/protobuf/field_mask.proto";
+import "google/cloud/talent/v4beta1/common.proto";
+import "google/cloud/talent/v4beta1/tenant.proto";
+
+option go_package = "google.golang.org/genproto/googleapis/cloud/talent/v4beta1;talent";
+option java_multiple_files = true;
+option java_outer_classname = "TenantServiceProto";
+option java_package = "com.google.cloud.talent.v4beta1";
+option objc_class_prefix = "CTS";
+
+
+// A service that handles tenant management, including CRUD and enumeration.
+service TenantService {
+ // Creates a new tenant entity.
+ rpc CreateTenant(CreateTenantRequest) returns (Tenant) {
+ option (google.api.http) = {
+ post: "/v4beta1/{parent=projects/*}/tenants"
+ body: "*"
+ };
+ }
+
+ // Retrieves specified tenant.
+ rpc GetTenant(GetTenantRequest) returns (Tenant) {
+ option (google.api.http) = {
+ get: "/v4beta1/{name=projects/*/tenants/*}"
+ };
+ }
+
+ // Updates specified tenant.
+ rpc UpdateTenant(UpdateTenantRequest) returns (Tenant) {
+ option (google.api.http) = {
+ patch: "/v4beta1/{tenant.name=projects/*/tenants/*}"
+ body: "*"
+ };
+ }
+
+ // Deletes specified tenant.
+ rpc DeleteTenant(DeleteTenantRequest) returns (google.protobuf.Empty) {
+ option (google.api.http) = {
+ delete: "/v4beta1/{name=projects/*/tenants/*}"
+ };
+ }
+
+ // Lists all tenants associated with the project.
+ rpc ListTenants(ListTenantsRequest) returns (ListTenantsResponse) {
+ option (google.api.http) = {
+ get: "/v4beta1/{parent=projects/*}/tenants"
+ };
+ }
+}
+
+// The Request of the CreateTenant method.
+message CreateTenantRequest {
+ // Required.
+ //
+ // Resource name of the project under which the tenant is created.
+ //
+ // The format is "projects/{project_id}", for example,
+ // "projects/api-test-project".
+ string parent = 1;
+
+ // Required.
+ //
+ // The tenant to be created.
+ Tenant tenant = 2;
+}
+
+// Request for getting a tenant by name.
+message GetTenantRequest {
+ // Required.
+ //
+ // The resource name of the tenant to be retrieved.
+ //
+ // The format is "projects/{project_id}/tenants/{tenant_id}", for example,
+ // "projects/api-test-project/tenants/foo".
+ string name = 1;
+}
+
+// Request for updating a specified tenant.
+message UpdateTenantRequest {
+ // Required.
+ //
+ // The tenant resource to replace the current resource in the system.
+ Tenant tenant = 1;
+
+ // Optional but strongly recommended for the best service
+ // experience.
+ //
+ // If [update_mask][google.cloud.talent.v4beta1.UpdateTenantRequest.update_mask] is provided, only the specified fields in
+ // [tenant][google.cloud.talent.v4beta1.UpdateTenantRequest.tenant] are updated. Otherwise all the fields are updated.
+ //
+ // A field mask to specify the tenant fields to be updated. Only
+ // top level fields of [Tenant][google.cloud.talent.v4beta1.Tenant] are supported.
+ google.protobuf.FieldMask update_mask = 2;
+}
+
+// Request to delete a tenant.
+message DeleteTenantRequest {
+ // Required.
+ //
+ // The resource name of the tenant to be deleted.
+ //
+ // The format is "projects/{project_id}/tenants/{tenant_id}", for example,
+ // "projects/api-test-project/tenants/foo".
+ string name = 1;
+}
+
+// List tenants for which the client has ACL visibility.
+message ListTenantsRequest {
+ // Required.
+ //
+ // Resource name of the project under which the tenant is created.
+ //
+ // The format is "projects/{project_id}", for example,
+ // "projects/api-test-project".
+ string parent = 1;
+
+ // Optional.
+ //
+ // The starting indicator from which to return results.
+ string page_token = 2;
+
+ // Optional.
+ //
+ // The maximum number of tenants to be returned, at most 100.
+ // Default is 100 if a non-positive number is provided.
+ int32 page_size = 3;
+}
+
+// Output only.
+//
+// The List tenants response object.
+message ListTenantsResponse {
+ // Tenants for the current client.
+ repeated Tenant tenants = 1;
+
+ // A token to retrieve the next page of results.
+ string next_page_token = 2;
+
+ // Additional information for the API invocation, such as the request
+ // tracking id.
+ ResponseMetadata metadata = 3;
+}