diff options
Diffstat (limited to 'third_party/googleapis/google/cloud/retail/v2alpha/model.proto')
| -rw-r--r-- | third_party/googleapis/google/cloud/retail/v2alpha/model.proto | 432 | 
1 files changed, 432 insertions, 0 deletions
diff --git a/third_party/googleapis/google/cloud/retail/v2alpha/model.proto b/third_party/googleapis/google/cloud/retail/v2alpha/model.proto new file mode 100644 index 0000000..5f4ead9 --- /dev/null +++ b/third_party/googleapis/google/cloud/retail/v2alpha/model.proto @@ -0,0 +1,432 @@ +// Copyright 2021 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.retail.v2alpha; + +import "google/api/field_behavior.proto"; +import "google/api/resource.proto"; +import "google/cloud/retail/v2alpha/common.proto"; +import "google/protobuf/timestamp.proto"; + +option csharp_namespace = "Google.Cloud.Retail.V2Alpha"; +option go_package = "google.golang.org/genproto/googleapis/cloud/retail/v2alpha;retail"; +option java_multiple_files = true; +option java_outer_classname = "ModelProto"; +option java_package = "com.google.cloud.retail.v2alpha"; +option objc_class_prefix = "RETAIL"; +option php_namespace = "Google\\Cloud\\Retail\\V2alpha"; +option ruby_package = "Google::Cloud::Retail::V2alpha"; + +// Metadata that describes the training and serving parameters of a +// [Model][google.cloud.retail.v2alpha.Model]. A +// [Model][google.cloud.retail.v2alpha.Model] can be associated with a +// [ServingConfig][google.cloud.retail.v2alpha.ServingConfig] and then queried +// through the Predict api. +message Model { +  option (google.api.resource) = { +    type: "retail.googleapis.com/Model" +    pattern: "projects/{project}/locations/{location}/catalogs/{catalog}/models/{model}" +  }; + +  // The PageOptimizationConfig for model training. +  // +  // This determines how many panels to optimize for, and which serving +  // configurations to consider for each panel. +  // The purpose of this model is to optimize which +  // [ServingConfig][google.cloud.retail.v2alpha.ServingConfig] to show on which +  // panels in way that optimizes the visitors shopping journey. +  message PageOptimizationConfig { +    // A candidate to consider for a given panel. Currently only +    // [ServingConfig][google.cloud.retail.v2alpha.ServingConfig] are valid +    // candidates. +    message Candidate { +      oneof candidate { +        // This has to be a valid +        // [ServingConfig][google.cloud.retail.v2alpha.ServingConfig] +        // identifier. e.g. for a ServingConfig with full name: +        // `projects/*/locations/global/catalogs/default_catalog/servingConfigs/my_candidate_config` +        // this would be 'my_candidate_config' +        string serving_config_id = 1; +      } +    } + +    // An individual panel with a list of +    // [ServingConfigs][google.cloud.retail.v2alpha.ServingConfig] to consider +    // for it. +    message Panel { +      // Optional. The name to display for the panel. +      string display_name = 1 [(google.api.field_behavior) = OPTIONAL]; + +      // Required. The candidates to consider on the panel. +      // +      // Limit = 10. +      repeated Candidate candidates = 2 +          [(google.api.field_behavior) = REQUIRED]; + +      // Required. The default candidate (in case the model fails at serving +      // time, we can fall back to the default). +      Candidate default_candidate = 3 [(google.api.field_behavior) = REQUIRED]; +    } + +    // Restrictions of expected returned results. +    enum Restriction { +      // Unspecified value for restriction. +      RESTRICTION_UNSPECIFIED = 0; + +      // Allow any [ServingConfig][google.cloud.retail.v2alpha.ServingConfig] to +      // be show on any number of panels. +      // +      // Example: +      // +      // `Panel1 candidates`: pdp_ctr, pdp_cvr, home_page_ctr_no_diversity +      // +      // `Panel2 candidates`: home_page_ctr_no_diversity, +      // home_page_ctr_diversity, +      //  pdp_cvr_no_diversity +      // +      // `Restriction` = NO_RESTRICTION +      // +      // `Valid combinations`: +      // +      //   * <i> (pdp_ctr, home_page_ctr_no_diversity) +      //   * (pdp_ctr, home_page_ctr_diversity) +      //   * (pdp_ctr, pdp_cvr_no_diversity) +      //   * (pdp_cvr, home_page_ctr_no_diversity) +      //   * (pdp_cvr, home_page_ctr_diversity) +      //   * (pdp_cvr, pdp_cvr_no_diversity) +      //   * (home_page_ctr_no_diversity, home_page_ctr_no_diversity) +      //   * (home_page_ctr_no_diversity, home_page_ctr_diversity) +      //   * (home_page_ctr_no_diversity, pdp_cvr_no_diversity) </i> +      // +      // `Invalid combinations`: [] +      NO_RESTRICTION = 1; + +      // Do not allow the same +      // [ServingConfig.name][google.cloud.retail.v2alpha.ServingConfig.name] to +      // be shown on multiple panels. +      // +      // Example: +      // +      // `Panel1 candidates`: <i> pdp_ctr, pdp_cvr, home_page_ctr_no_diversity +      // </i> +      // +      // `Panel2 candidates`: <i> home_page_ctr_no_diversity, +      // home_page_ctr_diversity_low, +      //    pdp_cvr_no_diversity </i> +      // +      // `Restriction` = UNIQUE_SERVING_CONFIG_RESTRICTION +      // +      // `Valid combinations`: +      // +      //   * <i> (pdp_ctr, home_page_ctr_no_diversity) +      //   * (pdp_ctr, home_page_ctr_diversity_low) +      //   * (pdp_ctr, pdp_cvr_no_diversity) +      //   * (pdp_ctr, pdp_cvr_no_diversity) +      //   * (pdp_cvr, home_page_ctr_no_diversity) +      //   * (pdp_cvr, home_page_ctr_diversity_low) +      //   * (pdp_cvr, pdp_cvr_no_diversity) +      //   * (home_page_ctr_no_diversity, home_page_ctr_diversity_low) +      //   * (home_page_ctr_no_diversity, pdp_cvr_no_diversity) </i> +      // +      // `Invalid combinations`: +      // +      //  * <i> (home_page_ctr_no_diversity, home_page_ctr_no_diversity) </i> +      UNIQUE_SERVING_CONFIG_RESTRICTION = 2; + +      // Do not allow multiple +      // [ServingConfigs][google.cloud.retail.v2alpha.ServingConfig] with same +      // [Model.name][google.cloud.retail.v2alpha.Model.name] to be show on on +      // different panels. +      // +      // Example: +      // +      // `Panel1 candidates`: <i> pdp_ctr, pdp_cvr, home_page_ctr_no_diversity +      // </i> +      // +      // `Panel2 candidates`: <i> home_page_ctr_no_diversity, +      // home_page_ctr_diversity_low, +      //  pdp_cvr_no_diversity </i> +      // +      // `Restriction` = UNIQUE_MODEL_RESTRICTION +      // +      // `Valid combinations`: +      // +      //  * <i> (pdp_ctr, home_page_ctr_no_diversity) +      //  * (pdp_ctr, home_page_ctr_diversity) +      //  * (pdp_ctr, pdp_cvr_no_diversity) +      //  * (pdp_ctr, pdp_cvr_no_diversity) +      //  * (pdp_cvr, home_page_ctr_no_diversity) +      //  * (pdp_cvr, home_page_ctr_diversity_low) +      //  * (home_page_ctr_no_diversity, pdp_cvr_no_diversity) </i> +      // +      // `Invalid combinations`: +      // +      //  *  <i> (home_page_ctr_no_diversity, home_page_ctr_no_diversity) +      //  * (pdp_cvr, pdp_cvr_no_diversity) </i> +      UNIQUE_MODEL_RESTRICTION = 3; + +      // Do not allow multiple +      // [ServingConfigs][google.cloud.retail.v2alpha.ServingConfig] with same +      // [Model.type][google.cloud.retail.v2alpha.Model.type] to be shown on +      // different panels. +      // +      // Example: +      // +      // `Panel1 candidates`: <i> pdp_ctr, pdp_cvr, home_page_ctr_no_diversity +      // </i> +      // +      // `Panel2 candidates`: <i> home_page_ctr_no_diversity, +      // home_page_ctr_diversity_low, +      //  pdp_cvr_no_diversity </i> +      // +      // `Restriction` = UNIQUE_MODEL_RESTRICTION +      // +      // `Valid combinations`: +      // +      // * <i> (pdp_ctr, home_page_ctr_no_diversity) +      // * (pdp_ctr, home_page_ctr_diversity) +      // * (pdp_cvr, home_page_ctr_no_diversity) +      // *   (pdp_cvr, home_page_ctr_diversity_low) +      // * (home_page_ctr_no_diversity, pdp_cvr_no_diversity) </i> +      // +      // `Invalid combinations`: +      // +      //  *  <i> (pdp_ctr, pdp_cvr_no_diversity) +      //  * (pdp_ctr, pdp_cvr_no_diversity) +      //  * (pdp_cvr, pdp_cvr_no_diversity) +      //  * (home_page_ctr_no_diversity, home_page_ctr_no_diversity) +      //  *  (home_page_ctr_no_diversity, home_page_ctr_diversity) </i> +      UNIQUE_MODEL_TYPE_RESTRICTION = 4; +    } + +    // Required. The type of [UserEvent][google.cloud.retail.v2alpha.UserEvent] +    // this page optimization is shown for. +    // +    // Each page has an associated event type - this will be the +    // corresponding event type for the page that the page optimization +    // model is used on. +    // +    // Supported types: +    // +    // * `add-to-cart`: Products being added to cart. +    // * `detail-page-view`: Products detail page viewed. +    // * `home-page-view`: Homepage viewed +    // * `category-page-view`: Homepage viewed +    // * `shopping-cart-page-view`: User viewing a shopping cart. +    // +    // `home-page-view` only allows models with type `recommended-for-you`. +    // All other page_optimization_event_type allow all +    // [Model.types][google.cloud.retail.v2alpha.Model.type]. +    string page_optimization_event_type = 1 +        [(google.api.field_behavior) = REQUIRED]; + +    // Required. A list of panel configurations. +    // +    // Limit = 5. +    repeated Panel panels = 2 [(google.api.field_behavior) = REQUIRED]; + +    // Optional. How to restrict results across panels e.g. can the same +    // [ServingConfig][google.cloud.retail.v2alpha.ServingConfig] be shown on +    // multiple panels at once. +    // +    // If unspecified, default to `UNIQUE_MODEL_RESTRICTION`. +    Restriction restriction = 3 [(google.api.field_behavior) = OPTIONAL]; +  } + +  // Represents an ordered combination of valid serving configs, which +  // / may be used for PAGE_OPTIMIZATION recommendations. +  message ServingConfigList { +    // Optional. A set of valid serving configs that may be used for +    // PAGE_OPTIMIZATION. +    repeated string serving_config_ids = 1 +        [(google.api.field_behavior) = OPTIONAL]; +  } + +  // The serving state of the model. +  enum ServingState { +    // Unspecified serving state. +    SERVING_STATE_UNSPECIFIED = 0; + +    // The model is not serving. +    INACTIVE = 1; + +    // The model is serving and can be queried. +    ACTIVE = 2; + +    // The model is trained on tuned hyperparameters, and can be +    // queried. +    TUNED = 3; +  } + +  // The training state of the model. +  enum TrainingState { +    // Unspecified training state. +    TRAINING_STATE_UNSPECIFIED = 0; + +    // The model training is paused. +    PAUSED = 1; + +    // The model is training. +    TRAINING = 2; +  } + +  // Describes whether periodic tuning is enabled for this model +  // or not. Periodic tuning is scheduled at most every three months. You can +  // start a tuning process manually by using the ModelTune +  // method, which starts a tuning process immediately and resets the quarterly +  // schedule. Enabling or disabling periodic tuning does not affect any +  // current tuning processes. +  enum PeriodicTuningState { +    // Unspecified default value - should never be explicitly set. +    PERIODIC_TUNING_STATE_UNSPECIFIED = 0; + +    // The model has periodic tuning disabled. Tuning +    // can be reenabled by calling the EnableModelPeriodicTuning +    // method or by calling the TuneModel method. +    PERIODIC_TUNING_DISABLED = 1; + +    // The model cannot be tuned with periodic tuning OR the +    // TuneModel method. Hide the options in customer UI and +    // reject any requests through the backend self serve API. +    ALL_TUNING_DISABLED = 3; + +    // The model has periodic tuning enabled. Tuning +    // can be disabled by calling the DisableModelPeriodicTuning +    // method. +    PERIODIC_TUNING_ENABLED = 2; +  } + +  // Describes whether this model have sufficient training data +  // to be continuously trained. +  enum DataState { +    // Unspecified default value - should never be explicitly set. +    DATA_STATE_UNSPECIFIED = 0; + +    // The model has sufficient training data. +    DATA_OK = 1; + +    // The model does not have sufficient training data. Error +    // messages can be queried via Stackdriver. +    DATA_ERROR = 2; +  } + +  // Training configuration specific to a +  // [Model.type][google.cloud.retail.v2alpha.Model.type] - currently, only for +  // page optimization. +  oneof training_config { +    // Optional. The page optimization config. +    PageOptimizationConfig page_optimization_config = 17 +        [(google.api.field_behavior) = OPTIONAL]; +  } + +  // Required. The fully qualified resource name of the model. +  // +  // Format: +  // projects/{project_number}/locations/{location_id}/catalogs/{catalog_id}/models/{model_id} +  // catalog_id has char limit of 50. +  // recommendation_model_id has char limit of 40. +  string name = 1 [(google.api.field_behavior) = REQUIRED]; + +  // Required. The display name of the model. +  // +  // Should be human readable, used to display Recommendation Models in the +  // Retail Cloud Cosole Dashboard. UTF-8 encoded string with limit of 1024 +  // characters. +  string display_name = 2 [(google.api.field_behavior) = REQUIRED]; + +  // Optional. The training state that the model is in (e.g. +  // TRAINING or PAUSED). +  // +  // Since part of the cost of running the service +  // is frequency of training - this can be used to determine when to train +  // model in order to control cost. If not specified: the default value for +  // CreateModel method is TRAINING. the default value for +  // UpdateModel method is to keep the state the same as before. +  TrainingState training_state = 3 [(google.api.field_behavior) = OPTIONAL]; + +  // Output only. The serving state of the model: ACTIVE, NOT_ACTIVE. +  ServingState serving_state = 4 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. Timestamp the Recommendation Model was created at. +  google.protobuf.Timestamp create_time = 5 +      [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. Timestamp the Recommendation Model was last updated. E.g. +  // if a Recommendation Model was paused - this would be the time the pause was +  // initiated. +  google.protobuf.Timestamp update_time = 6 +      [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Required. The type of model e.g. `home-page`. +  // +  // Currently supported values: `recommended-for-you`, `others-you-may-like`, +  // `frequently-bought-together`, `page-optimization`, 'similar-items', +  // 'buy-it-again', `recently-viewed`(readonly value). +  string type = 7 [(google.api.field_behavior) = REQUIRED]; + +  // Optional. The optimization objective e.g. `cvr`. +  // +  // Currently supported +  // values: `ctr`, `cvr`, `revenue-per-order`. +  // +  //  If not specified, we choose default based on model type. +  // Default depends on type of recommendation: +  // +  // `recommended-for-you` => `ctr` +  // +  // `others-you-may-like` => `ctr` +  // +  // `frequently-bought-together` => `revenue_per_order` +  string optimization_objective = 8 [(google.api.field_behavior) = OPTIONAL]; + +  // Optional. The state of periodic tuning. +  // +  // The period we use is 3 months - to do a +  // one-off tune earlier use the TuneModel method. Default value +  // is PERIODIC_TUNING_ENABLED. +  PeriodicTuningState periodic_tuning_state = 11 +      [(google.api.field_behavior) = OPTIONAL]; + +  // Output only. The timestamp when the latest successful tune finished. +  google.protobuf.Timestamp last_tune_time = 12 +      [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The tune operation associated with the model. +  // +  // Can be used to determine if there is an ongoing tune for this +  // recommendation. Empty field implies no tune is goig on. +  string tuning_operation = 15 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Output only. The state of data requirements for this model: DATA_OK and +  // DATA_ERROR. +  // +  // Recommendation model cannot be trained if the data is in +  // DATA_ERROR state. Recommendation model can have DATA_ERROR state even if +  // serving state is ACTIVE: models were trained successfully before, but +  // cannot be refreshed because model no longer has sufficient +  // data for training. +  DataState data_state = 16 [(google.api.field_behavior) = OUTPUT_ONLY]; + +  // Optional. If RECOMMENDATIONS_FILTERING_ENABLED, recommendation filtering by +  // attributes is enabled for the model. +  RecommendationsFilteringOption filtering_option = 18 +      [(google.api.field_behavior) = OPTIONAL]; + +  // Output only. The list of valid serving configs associated with the +  // PageOptimizationConfig. +  repeated ServingConfigList serving_config_lists = 19 +      [(google.api.field_behavior) = OUTPUT_ONLY]; +}  | 
