1*d5c09012SAndroid Build Coastguard Worker// Copyright 2021 Google LLC 2*d5c09012SAndroid Build Coastguard Worker// 3*d5c09012SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d5c09012SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d5c09012SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d5c09012SAndroid Build Coastguard Worker// 7*d5c09012SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d5c09012SAndroid Build Coastguard Worker// 9*d5c09012SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d5c09012SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d5c09012SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d5c09012SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d5c09012SAndroid Build Coastguard Worker// limitations under the License. 14*d5c09012SAndroid Build Coastguard Worker 15*d5c09012SAndroid Build Coastguard Workersyntax = "proto3"; 16*d5c09012SAndroid Build Coastguard Worker 17*d5c09012SAndroid Build Coastguard Workerpackage google.cloud.retail.v2beta; 18*d5c09012SAndroid Build Coastguard Worker 19*d5c09012SAndroid Build Coastguard Workerimport "google/api/field_behavior.proto"; 20*d5c09012SAndroid Build Coastguard Workerimport "google/api/resource.proto"; 21*d5c09012SAndroid Build Coastguard Workerimport "google/cloud/retail/v2beta/common.proto"; 22*d5c09012SAndroid Build Coastguard Workerimport "google/protobuf/timestamp.proto"; 23*d5c09012SAndroid Build Coastguard Worker 24*d5c09012SAndroid Build Coastguard Workeroption csharp_namespace = "Google.Cloud.Retail.V2Beta"; 25*d5c09012SAndroid Build Coastguard Workeroption go_package = "cloud.google.com/go/retail/apiv2beta/retailpb;retailpb"; 26*d5c09012SAndroid Build Coastguard Workeroption java_multiple_files = true; 27*d5c09012SAndroid Build Coastguard Workeroption java_outer_classname = "ModelProto"; 28*d5c09012SAndroid Build Coastguard Workeroption java_package = "com.google.cloud.retail.v2beta"; 29*d5c09012SAndroid Build Coastguard Workeroption objc_class_prefix = "RETAIL"; 30*d5c09012SAndroid Build Coastguard Workeroption php_namespace = "Google\\Cloud\\Retail\\V2beta"; 31*d5c09012SAndroid Build Coastguard Workeroption ruby_package = "Google::Cloud::Retail::V2beta"; 32*d5c09012SAndroid Build Coastguard Worker 33*d5c09012SAndroid Build Coastguard Worker// Metadata that describes the training and serving parameters of a 34*d5c09012SAndroid Build Coastguard Worker// [Model][google.cloud.retail.v2beta.Model]. A 35*d5c09012SAndroid Build Coastguard Worker// [Model][google.cloud.retail.v2beta.Model] can be associated with a 36*d5c09012SAndroid Build Coastguard Worker// [ServingConfig][google.cloud.retail.v2beta.ServingConfig] and then queried 37*d5c09012SAndroid Build Coastguard Worker// through the Predict API. 38*d5c09012SAndroid Build Coastguard Workermessage Model { 39*d5c09012SAndroid Build Coastguard Worker option (google.api.resource) = { 40*d5c09012SAndroid Build Coastguard Worker type: "retail.googleapis.com/Model" 41*d5c09012SAndroid Build Coastguard Worker pattern: "projects/{project}/locations/{location}/catalogs/{catalog}/models/{model}" 42*d5c09012SAndroid Build Coastguard Worker }; 43*d5c09012SAndroid Build Coastguard Worker 44*d5c09012SAndroid Build Coastguard Worker // Represents an ordered combination of valid serving configs, which 45*d5c09012SAndroid Build Coastguard Worker // can be used for `PAGE_OPTIMIZATION` recommendations. 46*d5c09012SAndroid Build Coastguard Worker message ServingConfigList { 47*d5c09012SAndroid Build Coastguard Worker // Optional. A set of valid serving configs that may be used for 48*d5c09012SAndroid Build Coastguard Worker // `PAGE_OPTIMIZATION`. 49*d5c09012SAndroid Build Coastguard Worker repeated string serving_config_ids = 1 50*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OPTIONAL]; 51*d5c09012SAndroid Build Coastguard Worker } 52*d5c09012SAndroid Build Coastguard Worker 53*d5c09012SAndroid Build Coastguard Worker // The serving state of the model. 54*d5c09012SAndroid Build Coastguard Worker enum ServingState { 55*d5c09012SAndroid Build Coastguard Worker // Unspecified serving state. 56*d5c09012SAndroid Build Coastguard Worker SERVING_STATE_UNSPECIFIED = 0; 57*d5c09012SAndroid Build Coastguard Worker 58*d5c09012SAndroid Build Coastguard Worker // The model is not serving. 59*d5c09012SAndroid Build Coastguard Worker INACTIVE = 1; 60*d5c09012SAndroid Build Coastguard Worker 61*d5c09012SAndroid Build Coastguard Worker // The model is serving and can be queried. 62*d5c09012SAndroid Build Coastguard Worker ACTIVE = 2; 63*d5c09012SAndroid Build Coastguard Worker 64*d5c09012SAndroid Build Coastguard Worker // The model is trained on tuned hyperparameters and can be 65*d5c09012SAndroid Build Coastguard Worker // queried. 66*d5c09012SAndroid Build Coastguard Worker TUNED = 3; 67*d5c09012SAndroid Build Coastguard Worker } 68*d5c09012SAndroid Build Coastguard Worker 69*d5c09012SAndroid Build Coastguard Worker // The training state of the model. 70*d5c09012SAndroid Build Coastguard Worker enum TrainingState { 71*d5c09012SAndroid Build Coastguard Worker // Unspecified training state. 72*d5c09012SAndroid Build Coastguard Worker TRAINING_STATE_UNSPECIFIED = 0; 73*d5c09012SAndroid Build Coastguard Worker 74*d5c09012SAndroid Build Coastguard Worker // The model training is paused. 75*d5c09012SAndroid Build Coastguard Worker PAUSED = 1; 76*d5c09012SAndroid Build Coastguard Worker 77*d5c09012SAndroid Build Coastguard Worker // The model is training. 78*d5c09012SAndroid Build Coastguard Worker TRAINING = 2; 79*d5c09012SAndroid Build Coastguard Worker } 80*d5c09012SAndroid Build Coastguard Worker 81*d5c09012SAndroid Build Coastguard Worker // Describes whether periodic tuning is enabled for this model 82*d5c09012SAndroid Build Coastguard Worker // or not. Periodic tuning is scheduled at most every three months. You can 83*d5c09012SAndroid Build Coastguard Worker // start a tuning process manually by using the `TuneModel` 84*d5c09012SAndroid Build Coastguard Worker // method, which starts a tuning process immediately and resets the quarterly 85*d5c09012SAndroid Build Coastguard Worker // schedule. Enabling or disabling periodic tuning does not affect any 86*d5c09012SAndroid Build Coastguard Worker // current tuning processes. 87*d5c09012SAndroid Build Coastguard Worker enum PeriodicTuningState { 88*d5c09012SAndroid Build Coastguard Worker // Unspecified default value, should never be explicitly set. 89*d5c09012SAndroid Build Coastguard Worker PERIODIC_TUNING_STATE_UNSPECIFIED = 0; 90*d5c09012SAndroid Build Coastguard Worker 91*d5c09012SAndroid Build Coastguard Worker // The model has periodic tuning disabled. Tuning 92*d5c09012SAndroid Build Coastguard Worker // can be reenabled by calling the `EnableModelPeriodicTuning` 93*d5c09012SAndroid Build Coastguard Worker // method or by calling the `TuneModel` method. 94*d5c09012SAndroid Build Coastguard Worker PERIODIC_TUNING_DISABLED = 1; 95*d5c09012SAndroid Build Coastguard Worker 96*d5c09012SAndroid Build Coastguard Worker // The model cannot be tuned with periodic tuning OR the 97*d5c09012SAndroid Build Coastguard Worker // `TuneModel` method. Hide the options in customer UI and 98*d5c09012SAndroid Build Coastguard Worker // reject any requests through the backend self serve API. 99*d5c09012SAndroid Build Coastguard Worker ALL_TUNING_DISABLED = 3; 100*d5c09012SAndroid Build Coastguard Worker 101*d5c09012SAndroid Build Coastguard Worker // The model has periodic tuning enabled. Tuning 102*d5c09012SAndroid Build Coastguard Worker // can be disabled by calling the `DisableModelPeriodicTuning` 103*d5c09012SAndroid Build Coastguard Worker // method. 104*d5c09012SAndroid Build Coastguard Worker PERIODIC_TUNING_ENABLED = 2; 105*d5c09012SAndroid Build Coastguard Worker } 106*d5c09012SAndroid Build Coastguard Worker 107*d5c09012SAndroid Build Coastguard Worker // Describes whether this model have sufficient training data 108*d5c09012SAndroid Build Coastguard Worker // to be continuously trained. 109*d5c09012SAndroid Build Coastguard Worker enum DataState { 110*d5c09012SAndroid Build Coastguard Worker // Unspecified default value, should never be explicitly set. 111*d5c09012SAndroid Build Coastguard Worker DATA_STATE_UNSPECIFIED = 0; 112*d5c09012SAndroid Build Coastguard Worker 113*d5c09012SAndroid Build Coastguard Worker // The model has sufficient training data. 114*d5c09012SAndroid Build Coastguard Worker DATA_OK = 1; 115*d5c09012SAndroid Build Coastguard Worker 116*d5c09012SAndroid Build Coastguard Worker // The model does not have sufficient training data. Error 117*d5c09012SAndroid Build Coastguard Worker // messages can be queried via Stackdriver. 118*d5c09012SAndroid Build Coastguard Worker DATA_ERROR = 2; 119*d5c09012SAndroid Build Coastguard Worker } 120*d5c09012SAndroid Build Coastguard Worker 121*d5c09012SAndroid Build Coastguard Worker // Required. The fully qualified resource name of the model. 122*d5c09012SAndroid Build Coastguard Worker // 123*d5c09012SAndroid Build Coastguard Worker // Format: 124*d5c09012SAndroid Build Coastguard Worker // `projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id}` 125*d5c09012SAndroid Build Coastguard Worker // catalog_id has char limit of 50. 126*d5c09012SAndroid Build Coastguard Worker // recommendation_model_id has char limit of 40. 127*d5c09012SAndroid Build Coastguard Worker string name = 1 [(google.api.field_behavior) = REQUIRED]; 128*d5c09012SAndroid Build Coastguard Worker 129*d5c09012SAndroid Build Coastguard Worker // Required. The display name of the model. 130*d5c09012SAndroid Build Coastguard Worker // 131*d5c09012SAndroid Build Coastguard Worker // Should be human readable, used to display Recommendation Models in the 132*d5c09012SAndroid Build Coastguard Worker // Retail Cloud Console Dashboard. UTF-8 encoded string with limit of 1024 133*d5c09012SAndroid Build Coastguard Worker // characters. 134*d5c09012SAndroid Build Coastguard Worker string display_name = 2 [(google.api.field_behavior) = REQUIRED]; 135*d5c09012SAndroid Build Coastguard Worker 136*d5c09012SAndroid Build Coastguard Worker // Optional. The training state that the model is in (e.g. 137*d5c09012SAndroid Build Coastguard Worker // `TRAINING` or `PAUSED`). 138*d5c09012SAndroid Build Coastguard Worker // 139*d5c09012SAndroid Build Coastguard Worker // Since part of the cost of running the service 140*d5c09012SAndroid Build Coastguard Worker // is frequency of training - this can be used to determine when to train 141*d5c09012SAndroid Build Coastguard Worker // model in order to control cost. If not specified: the default value for 142*d5c09012SAndroid Build Coastguard Worker // `CreateModel` method is `TRAINING`. The default value for 143*d5c09012SAndroid Build Coastguard Worker // `UpdateModel` method is to keep the state the same as before. 144*d5c09012SAndroid Build Coastguard Worker TrainingState training_state = 3 [(google.api.field_behavior) = OPTIONAL]; 145*d5c09012SAndroid Build Coastguard Worker 146*d5c09012SAndroid Build Coastguard Worker // Output only. The serving state of the model: `ACTIVE`, `NOT_ACTIVE`. 147*d5c09012SAndroid Build Coastguard Worker ServingState serving_state = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; 148*d5c09012SAndroid Build Coastguard Worker 149*d5c09012SAndroid Build Coastguard Worker // Output only. Timestamp the Recommendation Model was created at. 150*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp create_time = 5 151*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 152*d5c09012SAndroid Build Coastguard Worker 153*d5c09012SAndroid Build Coastguard Worker // Output only. Timestamp the Recommendation Model was last updated. E.g. 154*d5c09012SAndroid Build Coastguard Worker // if a Recommendation Model was paused - this would be the time the pause was 155*d5c09012SAndroid Build Coastguard Worker // initiated. 156*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp update_time = 6 157*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 158*d5c09012SAndroid Build Coastguard Worker 159*d5c09012SAndroid Build Coastguard Worker // Required. The type of model e.g. `home-page`. 160*d5c09012SAndroid Build Coastguard Worker // 161*d5c09012SAndroid Build Coastguard Worker // Currently supported values: `recommended-for-you`, `others-you-may-like`, 162*d5c09012SAndroid Build Coastguard Worker // `frequently-bought-together`, `page-optimization`, `similar-items`, 163*d5c09012SAndroid Build Coastguard Worker // `buy-it-again`, `on-sale-items`, and `recently-viewed`(readonly value). 164*d5c09012SAndroid Build Coastguard Worker // 165*d5c09012SAndroid Build Coastguard Worker // 166*d5c09012SAndroid Build Coastguard Worker // This field together with 167*d5c09012SAndroid Build Coastguard Worker // [optimization_objective][google.cloud.retail.v2beta.Model.optimization_objective] 168*d5c09012SAndroid Build Coastguard Worker // describe model metadata to use to control model training and serving. 169*d5c09012SAndroid Build Coastguard Worker // See https://cloud.google.com/retail/docs/models 170*d5c09012SAndroid Build Coastguard Worker // for more details on what the model metadata control and which combination 171*d5c09012SAndroid Build Coastguard Worker // of parameters are valid. For invalid combinations of parameters (e.g. type 172*d5c09012SAndroid Build Coastguard Worker // = `frequently-bought-together` and optimization_objective = `ctr`), you 173*d5c09012SAndroid Build Coastguard Worker // receive an error 400 if you try to create/update a recommendation with 174*d5c09012SAndroid Build Coastguard Worker // this set of knobs. 175*d5c09012SAndroid Build Coastguard Worker string type = 7 [(google.api.field_behavior) = REQUIRED]; 176*d5c09012SAndroid Build Coastguard Worker 177*d5c09012SAndroid Build Coastguard Worker // Optional. The optimization objective e.g. `cvr`. 178*d5c09012SAndroid Build Coastguard Worker // 179*d5c09012SAndroid Build Coastguard Worker // Currently supported 180*d5c09012SAndroid Build Coastguard Worker // values: `ctr`, `cvr`, `revenue-per-order`. 181*d5c09012SAndroid Build Coastguard Worker // 182*d5c09012SAndroid Build Coastguard Worker // If not specified, we choose default based on model type. 183*d5c09012SAndroid Build Coastguard Worker // Default depends on type of recommendation: 184*d5c09012SAndroid Build Coastguard Worker // 185*d5c09012SAndroid Build Coastguard Worker // `recommended-for-you` => `ctr` 186*d5c09012SAndroid Build Coastguard Worker // 187*d5c09012SAndroid Build Coastguard Worker // `others-you-may-like` => `ctr` 188*d5c09012SAndroid Build Coastguard Worker // 189*d5c09012SAndroid Build Coastguard Worker // `frequently-bought-together` => `revenue_per_order` 190*d5c09012SAndroid Build Coastguard Worker // 191*d5c09012SAndroid Build Coastguard Worker // This field together with 192*d5c09012SAndroid Build Coastguard Worker // [optimization_objective][google.cloud.retail.v2beta.Model.type] 193*d5c09012SAndroid Build Coastguard Worker // describe model metadata to use to control model training and serving. 194*d5c09012SAndroid Build Coastguard Worker // See https://cloud.google.com/retail/docs/models 195*d5c09012SAndroid Build Coastguard Worker // for more details on what the model metadata control and which combination 196*d5c09012SAndroid Build Coastguard Worker // of parameters are valid. For invalid combinations of parameters (e.g. type 197*d5c09012SAndroid Build Coastguard Worker // = `frequently-bought-together` and optimization_objective = `ctr`), you 198*d5c09012SAndroid Build Coastguard Worker // receive an error 400 if you try to create/update a recommendation with 199*d5c09012SAndroid Build Coastguard Worker // this set of knobs. 200*d5c09012SAndroid Build Coastguard Worker string optimization_objective = 8 [(google.api.field_behavior) = OPTIONAL]; 201*d5c09012SAndroid Build Coastguard Worker 202*d5c09012SAndroid Build Coastguard Worker // Optional. The state of periodic tuning. 203*d5c09012SAndroid Build Coastguard Worker // 204*d5c09012SAndroid Build Coastguard Worker // The period we use is 3 months - to do a 205*d5c09012SAndroid Build Coastguard Worker // one-off tune earlier use the `TuneModel` method. Default value 206*d5c09012SAndroid Build Coastguard Worker // is `PERIODIC_TUNING_ENABLED`. 207*d5c09012SAndroid Build Coastguard Worker PeriodicTuningState periodic_tuning_state = 11 208*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OPTIONAL]; 209*d5c09012SAndroid Build Coastguard Worker 210*d5c09012SAndroid Build Coastguard Worker // Output only. The timestamp when the latest successful tune finished. 211*d5c09012SAndroid Build Coastguard Worker google.protobuf.Timestamp last_tune_time = 12 212*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 213*d5c09012SAndroid Build Coastguard Worker 214*d5c09012SAndroid Build Coastguard Worker // Output only. The tune operation associated with the model. 215*d5c09012SAndroid Build Coastguard Worker // 216*d5c09012SAndroid Build Coastguard Worker // Can be used to determine if there is an ongoing tune for this 217*d5c09012SAndroid Build Coastguard Worker // recommendation. Empty field implies no tune is goig on. 218*d5c09012SAndroid Build Coastguard Worker string tuning_operation = 15 [(google.api.field_behavior) = OUTPUT_ONLY]; 219*d5c09012SAndroid Build Coastguard Worker 220*d5c09012SAndroid Build Coastguard Worker // Output only. The state of data requirements for this model: `DATA_OK` and 221*d5c09012SAndroid Build Coastguard Worker // `DATA_ERROR`. 222*d5c09012SAndroid Build Coastguard Worker // 223*d5c09012SAndroid Build Coastguard Worker // Recommendation model cannot be trained if the data is in 224*d5c09012SAndroid Build Coastguard Worker // `DATA_ERROR` state. Recommendation model can have `DATA_ERROR` state even 225*d5c09012SAndroid Build Coastguard Worker // if serving state is `ACTIVE`: models were trained successfully before, but 226*d5c09012SAndroid Build Coastguard Worker // cannot be refreshed because model no longer has sufficient 227*d5c09012SAndroid Build Coastguard Worker // data for training. 228*d5c09012SAndroid Build Coastguard Worker DataState data_state = 16 [(google.api.field_behavior) = OUTPUT_ONLY]; 229*d5c09012SAndroid Build Coastguard Worker 230*d5c09012SAndroid Build Coastguard Worker // Optional. If `RECOMMENDATIONS_FILTERING_ENABLED`, recommendation filtering 231*d5c09012SAndroid Build Coastguard Worker // by attributes is enabled for the model. 232*d5c09012SAndroid Build Coastguard Worker RecommendationsFilteringOption filtering_option = 18 233*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OPTIONAL]; 234*d5c09012SAndroid Build Coastguard Worker 235*d5c09012SAndroid Build Coastguard Worker // Output only. The list of valid serving configs associated with the 236*d5c09012SAndroid Build Coastguard Worker // PageOptimizationConfig. 237*d5c09012SAndroid Build Coastguard Worker repeated ServingConfigList serving_config_lists = 19 238*d5c09012SAndroid Build Coastguard Worker [(google.api.field_behavior) = OUTPUT_ONLY]; 239*d5c09012SAndroid Build Coastguard Worker} 240