/*
 * Copyright 2020 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
 *
 *     https://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.
 */
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/cloud/recommendationengine/v1beta1/prediction_service.proto

package com.google.cloud.recommendationengine.v1beta1;

public interface PredictRequestOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.recommendationengine.v1beta1.PredictRequest)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Required. Full resource name of the format:
   * `{name=projects/&#42;&#47;locations/global/catalogs/default_catalog/eventStores/default_event_store/placements/&#42;}`
   * The id of the recommendation engine placement. This id is used to identify
   * the set of models that will be used to make the prediction.
   * We currently support three placements with the following IDs by default:
   * * `shopping_cart`: Predicts items frequently bought together with one or
   *   more catalog items in the same shopping session. Commonly displayed after
   *   `add-to-cart` events, on product detail pages, or on the shopping cart
   *   page.
   * * `home_page`: Predicts the next product that a user will most likely
   *   engage with or purchase based on the shopping or viewing history of the
   *   specified `userId` or `visitorId`. For example - Recommendations for you.
   * * `product_detail`: Predicts the next product that a user will most likely
   *   engage with or purchase. The prediction is based on the shopping or
   *   viewing history of the specified `userId` or `visitorId` and its
   *   relevance to a specified `CatalogItem`. Typically used on product detail
   *   pages. For example - More items like this.
   * * `recently_viewed_default`: Returns up to 75 items recently viewed by the
   *   specified `userId` or `visitorId`, most recent ones first. Returns
   *   nothing if neither of them has viewed any items yet. For example -
   *   Recently viewed.
   * The full list of available placements can be seen at
   * https://console.cloud.google.com/recommendation/datafeeds/default_catalog/dashboard
   * </pre>
   *
   * <code>
   * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
   * </code>
   *
   * @return The name.
   */
  java.lang.String getName();
  /**
   *
   *
   * <pre>
   * Required. Full resource name of the format:
   * `{name=projects/&#42;&#47;locations/global/catalogs/default_catalog/eventStores/default_event_store/placements/&#42;}`
   * The id of the recommendation engine placement. This id is used to identify
   * the set of models that will be used to make the prediction.
   * We currently support three placements with the following IDs by default:
   * * `shopping_cart`: Predicts items frequently bought together with one or
   *   more catalog items in the same shopping session. Commonly displayed after
   *   `add-to-cart` events, on product detail pages, or on the shopping cart
   *   page.
   * * `home_page`: Predicts the next product that a user will most likely
   *   engage with or purchase based on the shopping or viewing history of the
   *   specified `userId` or `visitorId`. For example - Recommendations for you.
   * * `product_detail`: Predicts the next product that a user will most likely
   *   engage with or purchase. The prediction is based on the shopping or
   *   viewing history of the specified `userId` or `visitorId` and its
   *   relevance to a specified `CatalogItem`. Typically used on product detail
   *   pages. For example - More items like this.
   * * `recently_viewed_default`: Returns up to 75 items recently viewed by the
   *   specified `userId` or `visitorId`, most recent ones first. Returns
   *   nothing if neither of them has viewed any items yet. For example -
   *   Recently viewed.
   * The full list of available placements can be seen at
   * https://console.cloud.google.com/recommendation/datafeeds/default_catalog/dashboard
   * </pre>
   *
   * <code>
   * string name = 1 [(.google.api.field_behavior) = REQUIRED, (.google.api.resource_reference) = { ... }
   * </code>
   *
   * @return The bytes for name.
   */
  com.google.protobuf.ByteString getNameBytes();

  /**
   *
   *
   * <pre>
   * Required. Context about the user, what they are looking at and what action
   * they took to trigger the predict request. Note that this user event detail
   * won't be ingested to userEvent logs. Thus, a separate userEvent write
   * request is required for event logging.
   * </pre>
   *
   * <code>
   * .google.cloud.recommendationengine.v1beta1.UserEvent user_event = 2 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @return Whether the userEvent field is set.
   */
  boolean hasUserEvent();
  /**
   *
   *
   * <pre>
   * Required. Context about the user, what they are looking at and what action
   * they took to trigger the predict request. Note that this user event detail
   * won't be ingested to userEvent logs. Thus, a separate userEvent write
   * request is required for event logging.
   * </pre>
   *
   * <code>
   * .google.cloud.recommendationengine.v1beta1.UserEvent user_event = 2 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   *
   * @return The userEvent.
   */
  com.google.cloud.recommendationengine.v1beta1.UserEvent getUserEvent();
  /**
   *
   *
   * <pre>
   * Required. Context about the user, what they are looking at and what action
   * they took to trigger the predict request. Note that this user event detail
   * won't be ingested to userEvent logs. Thus, a separate userEvent write
   * request is required for event logging.
   * </pre>
   *
   * <code>
   * .google.cloud.recommendationengine.v1beta1.UserEvent user_event = 2 [(.google.api.field_behavior) = REQUIRED];
   * </code>
   */
  com.google.cloud.recommendationengine.v1beta1.UserEventOrBuilder getUserEventOrBuilder();

  /**
   *
   *
   * <pre>
   * Optional. Maximum number of results to return per page. Set this property
   * to the number of prediction results required. If zero, the service will
   * choose a reasonable default.
   * </pre>
   *
   * <code>int32 page_size = 7 [(.google.api.field_behavior) = OPTIONAL];</code>
   *
   * @return The pageSize.
   */
  int getPageSize();

  /**
   *
   *
   * <pre>
   * Optional. The previous PredictResponse.next_page_token.
   * </pre>
   *
   * <code>string page_token = 8 [(.google.api.field_behavior) = OPTIONAL];</code>
   *
   * @return The pageToken.
   */
  java.lang.String getPageToken();
  /**
   *
   *
   * <pre>
   * Optional. The previous PredictResponse.next_page_token.
   * </pre>
   *
   * <code>string page_token = 8 [(.google.api.field_behavior) = OPTIONAL];</code>
   *
   * @return The bytes for pageToken.
   */
  com.google.protobuf.ByteString getPageTokenBytes();

  /**
   *
   *
   * <pre>
   * Optional. Filter for restricting prediction results. Accepts values for
   * tags and the `filterOutOfStockItems` flag.
   *  * Tag expressions. Restricts predictions to items that match all of the
   *    specified tags. Boolean operators `OR` and `NOT` are supported if the
   *    expression is enclosed in parentheses, and must be separated from the
   *    tag values by a space. `-"tagA"` is also supported and is equivalent to
   *    `NOT "tagA"`. Tag values must be double quoted UTF-8 encoded strings
   *    with a size limit of 1 KiB.
   *  * filterOutOfStockItems. Restricts predictions to items that do not have a
   *    stockState value of OUT_OF_STOCK.
   * Examples:
   *  * tag=("Red" OR "Blue") tag="New-Arrival" tag=(NOT "promotional")
   *  * filterOutOfStockItems  tag=(-"promotional")
   *  * filterOutOfStockItems
   * </pre>
   *
   * <code>string filter = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
   *
   * @return The filter.
   */
  java.lang.String getFilter();
  /**
   *
   *
   * <pre>
   * Optional. Filter for restricting prediction results. Accepts values for
   * tags and the `filterOutOfStockItems` flag.
   *  * Tag expressions. Restricts predictions to items that match all of the
   *    specified tags. Boolean operators `OR` and `NOT` are supported if the
   *    expression is enclosed in parentheses, and must be separated from the
   *    tag values by a space. `-"tagA"` is also supported and is equivalent to
   *    `NOT "tagA"`. Tag values must be double quoted UTF-8 encoded strings
   *    with a size limit of 1 KiB.
   *  * filterOutOfStockItems. Restricts predictions to items that do not have a
   *    stockState value of OUT_OF_STOCK.
   * Examples:
   *  * tag=("Red" OR "Blue") tag="New-Arrival" tag=(NOT "promotional")
   *  * filterOutOfStockItems  tag=(-"promotional")
   *  * filterOutOfStockItems
   * </pre>
   *
   * <code>string filter = 3 [(.google.api.field_behavior) = OPTIONAL];</code>
   *
   * @return The bytes for filter.
   */
  com.google.protobuf.ByteString getFilterBytes();

  /**
   *
   *
   * <pre>
   * Optional. Use dryRun mode for this prediction query. If set to true, a
   * dummy model will be used that returns arbitrary catalog items.
   * Note that the dryRun mode should only be used for testing the API, or if
   * the model is not ready.
   * </pre>
   *
   * <code>bool dry_run = 4 [(.google.api.field_behavior) = OPTIONAL];</code>
   *
   * @return The dryRun.
   */
  boolean getDryRun();

  /**
   *
   *
   * <pre>
   * Optional. Additional domain specific parameters for the predictions.
   * Allowed values:
   * * `returnCatalogItem`: Boolean. If set to true, the associated catalogItem
   *    object will be returned in the
   *   `PredictResponse.PredictionResult.itemMetadata` object in the method
   *    response.
   * * `returnItemScore`: Boolean. If set to true, the prediction 'score'
   *    corresponding to each returned item will be set in the `metadata`
   *    field in the prediction response. The given 'score' indicates the
   *    probability of an item being clicked/purchased given the user's context
   *    and history.
   * </pre>
   *
   * <code>
   * map&lt;string, .google.protobuf.Value&gt; params = 6 [(.google.api.field_behavior) = OPTIONAL];
   * </code>
   */
  int getParamsCount();
  /**
   *
   *
   * <pre>
   * Optional. Additional domain specific parameters for the predictions.
   * Allowed values:
   * * `returnCatalogItem`: Boolean. If set to true, the associated catalogItem
   *    object will be returned in the
   *   `PredictResponse.PredictionResult.itemMetadata` object in the method
   *    response.
   * * `returnItemScore`: Boolean. If set to true, the prediction 'score'
   *    corresponding to each returned item will be set in the `metadata`
   *    field in the prediction response. The given 'score' indicates the
   *    probability of an item being clicked/purchased given the user's context
   *    and history.
   * </pre>
   *
   * <code>
   * map&lt;string, .google.protobuf.Value&gt; params = 6 [(.google.api.field_behavior) = OPTIONAL];
   * </code>
   */
  boolean containsParams(java.lang.String key);
  /** Use {@link #getParamsMap()} instead. */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, com.google.protobuf.Value> getParams();
  /**
   *
   *
   * <pre>
   * Optional. Additional domain specific parameters for the predictions.
   * Allowed values:
   * * `returnCatalogItem`: Boolean. If set to true, the associated catalogItem
   *    object will be returned in the
   *   `PredictResponse.PredictionResult.itemMetadata` object in the method
   *    response.
   * * `returnItemScore`: Boolean. If set to true, the prediction 'score'
   *    corresponding to each returned item will be set in the `metadata`
   *    field in the prediction response. The given 'score' indicates the
   *    probability of an item being clicked/purchased given the user's context
   *    and history.
   * </pre>
   *
   * <code>
   * map&lt;string, .google.protobuf.Value&gt; params = 6 [(.google.api.field_behavior) = OPTIONAL];
   * </code>
   */
  java.util.Map<java.lang.String, com.google.protobuf.Value> getParamsMap();
  /**
   *
   *
   * <pre>
   * Optional. Additional domain specific parameters for the predictions.
   * Allowed values:
   * * `returnCatalogItem`: Boolean. If set to true, the associated catalogItem
   *    object will be returned in the
   *   `PredictResponse.PredictionResult.itemMetadata` object in the method
   *    response.
   * * `returnItemScore`: Boolean. If set to true, the prediction 'score'
   *    corresponding to each returned item will be set in the `metadata`
   *    field in the prediction response. The given 'score' indicates the
   *    probability of an item being clicked/purchased given the user's context
   *    and history.
   * </pre>
   *
   * <code>
   * map&lt;string, .google.protobuf.Value&gt; params = 6 [(.google.api.field_behavior) = OPTIONAL];
   * </code>
   */
  /* nullable */
  com.google.protobuf.Value getParamsOrDefault(
      java.lang.String key,
      /* nullable */
      com.google.protobuf.Value defaultValue);
  /**
   *
   *
   * <pre>
   * Optional. Additional domain specific parameters for the predictions.
   * Allowed values:
   * * `returnCatalogItem`: Boolean. If set to true, the associated catalogItem
   *    object will be returned in the
   *   `PredictResponse.PredictionResult.itemMetadata` object in the method
   *    response.
   * * `returnItemScore`: Boolean. If set to true, the prediction 'score'
   *    corresponding to each returned item will be set in the `metadata`
   *    field in the prediction response. The given 'score' indicates the
   *    probability of an item being clicked/purchased given the user's context
   *    and history.
   * </pre>
   *
   * <code>
   * map&lt;string, .google.protobuf.Value&gt; params = 6 [(.google.api.field_behavior) = OPTIONAL];
   * </code>
   */
  com.google.protobuf.Value getParamsOrThrow(java.lang.String key);

  /**
   *
   *
   * <pre>
   * Optional. The labels for the predict request.
   *  * Label keys can contain lowercase letters, digits and hyphens, must start
   *    with a letter, and must end with a letter or digit.
   *  * Non-zero label values can contain lowercase letters, digits and hyphens,
   *    must start with a letter, and must end with a letter or digit.
   *  * No more than 64 labels can be associated with a given request.
   * See https://goo.gl/xmQnxf for more information on and examples of labels.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
   */
  int getLabelsCount();
  /**
   *
   *
   * <pre>
   * Optional. The labels for the predict request.
   *  * Label keys can contain lowercase letters, digits and hyphens, must start
   *    with a letter, and must end with a letter or digit.
   *  * Non-zero label values can contain lowercase letters, digits and hyphens,
   *    must start with a letter, and must end with a letter or digit.
   *  * No more than 64 labels can be associated with a given request.
   * See https://goo.gl/xmQnxf for more information on and examples of labels.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
   */
  boolean containsLabels(java.lang.String key);
  /** Use {@link #getLabelsMap()} instead. */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, java.lang.String> getLabels();
  /**
   *
   *
   * <pre>
   * Optional. The labels for the predict request.
   *  * Label keys can contain lowercase letters, digits and hyphens, must start
   *    with a letter, and must end with a letter or digit.
   *  * Non-zero label values can contain lowercase letters, digits and hyphens,
   *    must start with a letter, and must end with a letter or digit.
   *  * No more than 64 labels can be associated with a given request.
   * See https://goo.gl/xmQnxf for more information on and examples of labels.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
   */
  java.util.Map<java.lang.String, java.lang.String> getLabelsMap();
  /**
   *
   *
   * <pre>
   * Optional. The labels for the predict request.
   *  * Label keys can contain lowercase letters, digits and hyphens, must start
   *    with a letter, and must end with a letter or digit.
   *  * Non-zero label values can contain lowercase letters, digits and hyphens,
   *    must start with a letter, and must end with a letter or digit.
   *  * No more than 64 labels can be associated with a given request.
   * See https://goo.gl/xmQnxf for more information on and examples of labels.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
   */
  /* nullable */
  java.lang.String getLabelsOrDefault(
      java.lang.String key,
      /* nullable */
      java.lang.String defaultValue);
  /**
   *
   *
   * <pre>
   * Optional. The labels for the predict request.
   *  * Label keys can contain lowercase letters, digits and hyphens, must start
   *    with a letter, and must end with a letter or digit.
   *  * Non-zero label values can contain lowercase letters, digits and hyphens,
   *    must start with a letter, and must end with a letter or digit.
   *  * No more than 64 labels can be associated with a given request.
   * See https://goo.gl/xmQnxf for more information on and examples of labels.
   * </pre>
   *
   * <code>map&lt;string, string&gt; labels = 9 [(.google.api.field_behavior) = OPTIONAL];</code>
   */
  java.lang.String getLabelsOrThrow(java.lang.String key);
}
