text: // NOTE: This file was generated by the ServiceGenerator.
  
  // ----------------------------------------------------------------------------
  // API:
  //   Retail API (retail/v2)
  // Description:
  //   Cloud Retail service enables customers to build end-to-end personalized
  //   recommendation systems without requiring a high level of expertise in
  //   machine learning, recommendation system, or Google Cloud.
  // Documentation:
  //   https://cloud.google.com/recommendations
  
  #if SWIFT_PACKAGE || GTLR_USE_MODULAR_IMPORT
    @import GoogleAPIClientForRESTCore;
  #elif GTLR_BUILT_AS_FRAMEWORK
    #import "GTLR/GTLRObject.h"
  #else
    #import "GTLRObject.h"
  #endif
  
  #if GTLR_RUNTIME_VERSION != 3000
  #error This file was generated by a different version of ServiceGenerator which is incompatible with this GTLR library source.
  #endif
  
  @class GTLRCloudRetail_GoogleApiHttpBody_Extensions_Item;
  @class GTLRCloudRetail_GoogleCloudRetailLoggingErrorContext;
  @class GTLRCloudRetail_GoogleCloudRetailLoggingErrorLog_RequestPayload;
  @class GTLRCloudRetail_GoogleCloudRetailLoggingErrorLog_ResponsePayload;
  @class GTLRCloudRetail_GoogleCloudRetailLoggingHttpRequestContext;
  @class GTLRCloudRetail_GoogleCloudRetailLoggingImportErrorContext;
  @class GTLRCloudRetail_GoogleCloudRetailLoggingServiceContext;
  @class GTLRCloudRetail_GoogleCloudRetailLoggingSourceLocation;
  @class GTLRCloudRetail_GoogleCloudRetailV2alphaExportErrorsConfig;
  @class GTLRCloudRetail_GoogleCloudRetailV2alphaImportErrorsConfig;
  @class GTLRCloudRetail_GoogleCloudRetailV2alphaUserEventImportSummary;
  @class GTLRCloudRetail_GoogleCloudRetailV2betaExportErrorsConfig;
  @class GTLRCloudRetail_GoogleCloudRetailV2betaImportErrorsConfig;
  @class GTLRCloudRetail_GoogleCloudRetailV2betaUserEventImportSummary;
  @class GTLRCloudRetail_GoogleCloudRetailV2BigQuerySource;
  @class GTLRCloudRetail_GoogleCloudRetailV2Catalog;
  @class GTLRCloudRetail_GoogleCloudRetailV2CustomAttribute;
  @class GTLRCloudRetail_GoogleCloudRetailV2GcsSource;
  @class GTLRCloudRetail_GoogleCloudRetailV2Image;
  @class GTLRCloudRetail_GoogleCloudRetailV2ImportErrorsConfig;
  @class GTLRCloudRetail_GoogleCloudRetailV2PredictRequest_Labels;
  @class GTLRCloudRetail_GoogleCloudRetailV2PredictRequest_Params;
  @class GTLRCloudRetail_GoogleCloudRetailV2PredictResponsePredictionResult;
  @class GTLRCloudRetail_GoogleCloudRetailV2PredictResponsePredictionResult_Metadata;
  @class GTLRCloudRetail_GoogleCloudRetailV2PriceInfo;
  @class GTLRCloudRetail_GoogleCloudRetailV2Product;
  @class GTLRCloudRetail_GoogleCloudRetailV2Product_Attributes;
  @class GTLRCloudRetail_GoogleCloudRetailV2ProductDetail;
  @class GTLRCloudRetail_GoogleCloudRetailV2ProductInlineSource;
  @class GTLRCloudRetail_GoogleCloudRetailV2ProductInputConfig;
  @class GTLRCloudRetail_GoogleCloudRetailV2ProductLevelConfig;
  @class GTLRCloudRetail_GoogleCloudRetailV2PurchaseTransaction;
  @class GTLRCloudRetail_GoogleCloudRetailV2UserEvent;
  @class GTLRCloudRetail_GoogleCloudRetailV2UserEvent_Attributes;
  @class GTLRCloudRetail_GoogleCloudRetailV2UserEventImportSummary;
  @class GTLRCloudRetail_GoogleCloudRetailV2UserEventInlineSource;
  @class GTLRCloudRetail_GoogleCloudRetailV2UserEventInputConfig;
  @class GTLRCloudRetail_GoogleCloudRetailV2UserInfo;
  @class GTLRCloudRetail_GoogleLongrunningOperation;
  @class GTLRCloudRetail_GoogleLongrunningOperation_Metadata;
  @class GTLRCloudRetail_GoogleLongrunningOperation_Response;
  @class GTLRCloudRetail_GoogleRpcStatus;
  @class GTLRCloudRetail_GoogleRpcStatus_Details_Item;
  
  // Generated comments include content from the discovery document; avoid them
  // causing warnings since clang's checks are some what arbitrary.
  #pragma clang diagnostic push
  #pragma clang diagnostic ignored "-Wdocumentation"
  
  NS_ASSUME_NONNULL_BEGIN
  
  // ----------------------------------------------------------------------------
  // Constants - For some of the classes' properties below.
  
  // ----------------------------------------------------------------------------
  // GTLRCloudRetail_GoogleCloudRetailV2Product.availability
  
  /**
   *  Default product availability. Default to Availability.IN_STOCK if unset.
   *
   *  Value: "AVAILABILITY_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2Product_Availability_AvailabilityUnspecified;
  /**
   *  Product that is back-ordered (i.e. temporarily out of stock).
   *
   *  Value: "BACKORDER"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2Product_Availability_Backorder;
  /**
   *  Product in stock.
   *
   *  Value: "IN_STOCK"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2Product_Availability_InStock;
  /**
   *  Product out of stock.
   *
   *  Value: "OUT_OF_STOCK"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2Product_Availability_OutOfStock;
  /**
   *  Product that is in pre-order state.
   *
   *  Value: "PREORDER"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2Product_Availability_Preorder;
  
  // ----------------------------------------------------------------------------
  // GTLRCloudRetail_GoogleCloudRetailV2Product.type
  
  /**
   *  The collection type. Collection products are bundled Type.PRIMARY Products
   *  or Type.VARIANT Products that are sold together, such as a jewelry set with
   *  necklaces, earrings and rings, etc.
   *
   *  Value: "COLLECTION"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2Product_Type_Collection;
  /**
   *  The primary type. As the primary unit for predicting, indexing and search
   *  serving, a Type.PRIMARY Product is grouped with multiple Type.VARIANT
   *  Products.
   *
   *  Value: "PRIMARY"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2Product_Type_Primary;
  /**
   *  Default value. Default to Type.PRIMARY if unset.
   *
   *  Value: "TYPE_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2Product_Type_TypeUnspecified;
  /**
   *  The variant type. Type.VARIANT Products usually share some common attributes
   *  on the same Type.PRIMARY Products, but they have variant attributes like
   *  different colors, sizes and prices, etc.
   *
   *  Value: "VARIANT"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2Product_Type_Variant;
  
  // ----------------------------------------------------------------------------
  // GTLRCloudRetail_GoogleCloudRetailV2RejoinUserEventsRequest.userEventRejoinScope
  
  /**
   *  Only rejoin joined events with the latest product catalog.
   *
   *  Value: "JOINED_EVENTS"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2RejoinUserEventsRequest_UserEventRejoinScope_JoinedEvents;
  /**
   *  Only rejoin unjoined events with the latest product catalog.
   *
   *  Value: "UNJOINED_EVENTS"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2RejoinUserEventsRequest_UserEventRejoinScope_UnjoinedEvents;
  /**
   *  Rejoin all events with the latest product catalog, including both joined
   *  events and unjoined events.
   *
   *  Value: "USER_EVENT_REJOIN_SCOPE_UNSPECIFIED"
   */
  FOUNDATION_EXTERN NSString * const kGTLRCloudRetail_GoogleCloudRetailV2RejoinUserEventsRequest_UserEventRejoinScope_UserEventRejoinScopeUnspecified;
  
  /**
   *  Message that represents an arbitrary HTTP body. It should only be used for
   *  payload formats that can't be represented as JSON, such as raw binary or an
   *  HTML page. This message can be used both in streaming and non-streaming API
   *  methods in the request as well as the response. It can be used as a
   *  top-level request field, which is convenient if one wants to extract
   *  parameters from either the URL or HTTP template into the request fields and
   *  also want access to the raw HTTP body. Example: message GetResourceRequest {
   *  // A unique request id. string request_id = 1; // The raw HTTP body is bound
   *  to this field. google.api.HttpBody http_body = 2; } service ResourceService
   *  { rpc GetResource(GetResourceRequest) returns (google.api.HttpBody); rpc
   *  UpdateResource(google.api.HttpBody) returns (google.protobuf.Empty); }
   *  Example with streaming methods: service CaldavService { rpc
   *  GetCalendar(stream google.api.HttpBody) returns (stream
   *  google.api.HttpBody); rpc UpdateCalendar(stream google.api.HttpBody) returns
   *  (stream google.api.HttpBody); } Use of this type only changes how the
   *  request and response bodies are handled, all other features will continue to
   *  work unchanged.
   */
  @interface GTLRCloudRetail_GoogleApiHttpBody : GTLRObject
  
  /**
   *  The HTTP Content-Type header value specifying the content type of the body.
   */
  @property(nonatomic, copy, nullable) NSString *contentType;
  
  /**
   *  The HTTP request/response body as raw binary.
   *
   *  Contains encoded binary data; GTLRBase64 can encode/decode (probably
   *  web-safe format).
   */
  @property(nonatomic, copy, nullable) NSString *data;
  
  /**
   *  Application specific response metadata. Must be set in the first response
   *  for streaming APIs.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleApiHttpBody_Extensions_Item *> *extensions;
  
  @end
  
  
  /**
   *  GTLRCloudRetail_GoogleApiHttpBody_Extensions_Item
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleApiHttpBody_Extensions_Item : GTLRObject
  @end
  
  
  /**
   *  A description of the context in which an error occurred.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailLoggingErrorContext : GTLRObject
  
  /** The HTTP request which was processed when the error was triggered. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailLoggingHttpRequestContext *httpRequest;
  
  /**
   *  The location in the source code where the decision was made to report the
   *  error, usually the place where it was logged.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailLoggingSourceLocation *reportLocation;
  
  @end
  
  
  /**
   *  An error log which is reported to the Error Reporting system. This proto a
   *  superset of google.devtools.clouderrorreporting.v1beta1.ReportedErrorEvent.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailLoggingErrorLog : GTLRObject
  
  /** A description of the context in which the error occurred. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailLoggingErrorContext *context;
  
  /** The error payload that is populated on LRO import APIs. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailLoggingImportErrorContext *importPayload;
  
  /** A message describing the error. */
  @property(nonatomic, copy, nullable) NSString *message;
  
  /**
   *  The API request payload, represented as a protocol buffer. Most API request
   *  types are supported. For example:
   *  "type.googleapis.com/google.cloud.retail.v2.ProductService.CreateProductRequest"
   *  "type.googleapis.com/google.cloud.retail.v2.UserEventService.WriteUserEventRequest"
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailLoggingErrorLog_RequestPayload *requestPayload;
  
  /**
   *  The API response payload, represented as a protocol buffer. This is used to
   *  log some "soft errors", where the response is valid but we consider there
   *  are some quality issues like unjoined events. The following API responses
   *  are supported and no PII is included:
   *  "google.cloud.retail.v2.PredictionService.Predict"
   *  "google.cloud.retail.v2.UserEventService.WriteUserEvent"
   *  "google.cloud.retail.v2.UserEventService.CollectUserEvent"
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailLoggingErrorLog_ResponsePayload *responsePayload;
  
  /** The service context in which this error has occurred. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailLoggingServiceContext *serviceContext;
  
  /** The RPC status associated with the error log. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleRpcStatus *status;
  
  @end
  
  
  /**
   *  The API request payload, represented as a protocol buffer. Most API request
   *  types are supported. For example:
   *  "type.googleapis.com/google.cloud.retail.v2.ProductService.CreateProductRequest"
   *  "type.googleapis.com/google.cloud.retail.v2.UserEventService.WriteUserEventRequest"
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailLoggingErrorLog_RequestPayload : GTLRObject
  @end
  
  
  /**
   *  The API response payload, represented as a protocol buffer. This is used to
   *  log some "soft errors", where the response is valid but we consider there
   *  are some quality issues like unjoined events. The following API responses
   *  are supported and no PII is included:
   *  "google.cloud.retail.v2.PredictionService.Predict"
   *  "google.cloud.retail.v2.UserEventService.WriteUserEvent"
   *  "google.cloud.retail.v2.UserEventService.CollectUserEvent"
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailLoggingErrorLog_ResponsePayload : GTLRObject
  @end
  
  
  /**
   *  HTTP request data that is related to a reported error.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailLoggingHttpRequestContext : GTLRObject
  
  /**
   *  The HTTP response status code for the request.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *responseStatusCode;
  
  @end
  
  
  /**
   *  The error payload that is populated on LRO import APIs. Including:
   *  "google.cloud.retail.v2.ProductService.ImportProducts"
   *  "google.cloud.retail.v2.EventService.ImportUserEvents"
   */
  @interface GTLRCloudRetail_GoogleCloudRetailLoggingImportErrorContext : GTLRObject
  
  /**
   *  The detailed content which caused the error on importing a catalog item.
   */
  @property(nonatomic, copy, nullable) NSString *catalogItem;
  
  /**
   *  GCS file path of the import source. Can be set for batch operation error.
   */
  @property(nonatomic, copy, nullable) NSString *gcsPath;
  
  /**
   *  Line number of the content in file. Should be empty for permission or batch
   *  operation error.
   */
  @property(nonatomic, copy, nullable) NSString *lineNumber;
  
  /** The operation resource name of the LRO. */
  @property(nonatomic, copy, nullable) NSString *operationName;
  
  /** The detailed content which caused the error on importing a product. */
  @property(nonatomic, copy, nullable) NSString *product;
  
  /** The detailed content which caused the error on importing a user event. */
  @property(nonatomic, copy, nullable) NSString *userEvent;
  
  @end
  
  
  /**
   *  Describes a running service that sends errors.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailLoggingServiceContext : GTLRObject
  
  /** An identifier of the service. For example, "retail.googleapis.com". */
  @property(nonatomic, copy, nullable) NSString *service;
  
  @end
  
  
  /**
   *  Indicates a location in the source code of the service for which errors are
   *  reported.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailLoggingSourceLocation : GTLRObject
  
  /**
   *  Human-readable name of a function or method. For example,
   *  "google.cloud.retail.v2.UserEventService.ImportUserEvents".
   */
  @property(nonatomic, copy, nullable) NSString *functionName;
  
  @end
  
  
  /**
   *  Configuration of destination for Export related errors.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaExportErrorsConfig : GTLRObject
  
  /**
   *  Google Cloud Storage path for import errors. This must be an empty, existing
   *  Cloud Storage bucket. Export errors will be written to a file in this
   *  bucket, one per line, as a JSON-encoded `google.rpc.Status` message.
   */
  @property(nonatomic, copy, nullable) NSString *gcsPrefix;
  
  @end
  
  
  /**
   *  Metadata related to the progress of the Export operation. This will be
   *  returned by the google.longrunning.Operation.metadata field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaExportMetadata : GTLRObject
  
  /** Operation create time. */
  @property(nonatomic, strong, nullable) GTLRDateTime *createTime;
  
  /**
   *  Operation last update time. If the operation is done, this is also the
   *  finish time.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *updateTime;
  
  @end
  
  
  /**
   *  Response of the ExportProductsRequest. If the long running operation is
   *  done, then this message is returned by the
   *  google.longrunning.Operations.response field if the operation was
   *  successful.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaExportProductsResponse : GTLRObject
  
  /** A sample of errors encountered while processing the request. */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus *> *errorSamples;
  
  /** Echoes the destination for the complete errors in the request if set. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2alphaExportErrorsConfig *errorsConfig;
  
  @end
  
  
  /**
   *  Response of the ExportUserEventsRequest. If the long running operation was
   *  successful, then this message is returned by the
   *  google.longrunning.Operations.response field if the operation was
   *  successful.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaExportUserEventsResponse : GTLRObject
  
  /** A sample of errors encountered while processing the request. */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus *> *errorSamples;
  
  /**
   *  Echoes the destination for the complete errors if this field was set in the
   *  request.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2alphaExportErrorsConfig *errorsConfig;
  
  @end
  
  
  /**
   *  Configuration of destination for Import related errors.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaImportErrorsConfig : GTLRObject
  
  /**
   *  Google Cloud Storage path for import errors. This must be an empty, existing
   *  Cloud Storage bucket. Import errors will be written to a file in this
   *  bucket, one per line, as a JSON-encoded `google.rpc.Status` message.
   */
  @property(nonatomic, copy, nullable) NSString *gcsPrefix;
  
  @end
  
  
  /**
   *  Metadata related to the progress of the Import operation. This will be
   *  returned by the google.longrunning.Operation.metadata field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaImportMetadata : GTLRObject
  
  /** Operation create time. */
  @property(nonatomic, strong, nullable) GTLRDateTime *createTime;
  
  /**
   *  Count of entries that encountered errors while processing.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *failureCount;
  
  /**
   *  Count of entries that were processed successfully.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *successCount;
  
  /**
   *  Operation last update time. If the operation is done, this is also the
   *  finish time.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *updateTime;
  
  @end
  
  
  /**
   *  Response of the ImportProductsRequest. If the long running operation is
   *  done, then this message is returned by the
   *  google.longrunning.Operations.response field if the operation was
   *  successful.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaImportProductsResponse : GTLRObject
  
  /** A sample of errors encountered while processing the request. */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus *> *errorSamples;
  
  /** Echoes the destination for the complete errors in the request if set. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2alphaImportErrorsConfig *errorsConfig;
  
  @end
  
  
  /**
   *  Response of the ImportUserEventsRequest. If the long running operation was
   *  successful, then this message is returned by the
   *  google.longrunning.Operations.response field if the operation was
   *  successful.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaImportUserEventsResponse : GTLRObject
  
  /** A sample of errors encountered while processing the request. */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus *> *errorSamples;
  
  /**
   *  Echoes the destination for the complete errors if this field was set in the
   *  request.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2alphaImportErrorsConfig *errorsConfig;
  
  /** Aggregated statistics of user event import status. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2alphaUserEventImportSummary *importSummary;
  
  @end
  
  
  /**
   *  Metadata related to the progress of the Purge operation. This will be
   *  returned by the google.longrunning.Operation.metadata field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaPurgeMetadata : GTLRObject
  @end
  
  
  /**
   *  Response of the PurgeUserEventsRequest. If the long running operation is
   *  successfully done, then this message is returned by the
   *  google.longrunning.Operations.response field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaPurgeUserEventsResponse : GTLRObject
  
  /**
   *  The total count of events purged as a result of the operation.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *purgedEventsCount;
  
  @end
  
  
  /**
   *  Metadata for RejoinUserEvents method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaRejoinUserEventsMetadata : GTLRObject
  @end
  
  
  /**
   *  Response message for RejoinUserEvents method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaRejoinUserEventsResponse : GTLRObject
  
  /**
   *  Number of user events that were joined with latest product catalog.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *rejoinedUserEventsCount;
  
  @end
  
  
  /**
   *  A summary of import result. The UserEventImportSummary summarizes the import
   *  status for user events.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2alphaUserEventImportSummary : GTLRObject
  
  /**
   *  Count of user events imported with complete existing catalog information.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *joinedEventsCount;
  
  /**
   *  Count of user events imported, but with catalog information not found in the
   *  imported catalog.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *unjoinedEventsCount;
  
  @end
  
  
  /**
   *  Configuration of destination for Export related errors.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaExportErrorsConfig : GTLRObject
  
  /**
   *  Google Cloud Storage path for import errors. This must be an empty, existing
   *  Cloud Storage bucket. Export errors will be written to a file in this
   *  bucket, one per line, as a JSON-encoded `google.rpc.Status` message.
   */
  @property(nonatomic, copy, nullable) NSString *gcsPrefix;
  
  @end
  
  
  /**
   *  Metadata related to the progress of the Export operation. This will be
   *  returned by the google.longrunning.Operation.metadata field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaExportMetadata : GTLRObject
  
  /** Operation create time. */
  @property(nonatomic, strong, nullable) GTLRDateTime *createTime;
  
  /**
   *  Operation last update time. If the operation is done, this is also the
   *  finish time.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *updateTime;
  
  @end
  
  
  /**
   *  Response of the ExportProductsRequest. If the long running operation is
   *  done, then this message is returned by the
   *  google.longrunning.Operations.response field if the operation was
   *  successful.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaExportProductsResponse : GTLRObject
  
  /** A sample of errors encountered while processing the request. */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus *> *errorSamples;
  
  /** Echoes the destination for the complete errors in the request if set. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2betaExportErrorsConfig *errorsConfig;
  
  @end
  
  
  /**
   *  Response of the ExportUserEventsRequest. If the long running operation was
   *  successful, then this message is returned by the
   *  google.longrunning.Operations.response field if the operation was
   *  successful.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaExportUserEventsResponse : GTLRObject
  
  /** A sample of errors encountered while processing the request. */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus *> *errorSamples;
  
  /**
   *  Echoes the destination for the complete errors if this field was set in the
   *  request.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2betaExportErrorsConfig *errorsConfig;
  
  @end
  
  
  /**
   *  Configuration of destination for Import related errors.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaImportErrorsConfig : GTLRObject
  
  /**
   *  Google Cloud Storage path for import errors. This must be an empty, existing
   *  Cloud Storage bucket. Import errors will be written to a file in this
   *  bucket, one per line, as a JSON-encoded `google.rpc.Status` message.
   */
  @property(nonatomic, copy, nullable) NSString *gcsPrefix;
  
  @end
  
  
  /**
   *  Metadata related to the progress of the Import operation. This will be
   *  returned by the google.longrunning.Operation.metadata field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaImportMetadata : GTLRObject
  
  /** Operation create time. */
  @property(nonatomic, strong, nullable) GTLRDateTime *createTime;
  
  /**
   *  Count of entries that encountered errors while processing.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *failureCount;
  
  /**
   *  Count of entries that were processed successfully.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *successCount;
  
  /**
   *  Operation last update time. If the operation is done, this is also the
   *  finish time.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *updateTime;
  
  @end
  
  
  /**
   *  Response of the ImportProductsRequest. If the long running operation is
   *  done, then this message is returned by the
   *  google.longrunning.Operations.response field if the operation was
   *  successful.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaImportProductsResponse : GTLRObject
  
  /** A sample of errors encountered while processing the request. */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus *> *errorSamples;
  
  /** Echoes the destination for the complete errors in the request if set. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2betaImportErrorsConfig *errorsConfig;
  
  @end
  
  
  /**
   *  Response of the ImportUserEventsRequest. If the long running operation was
   *  successful, then this message is returned by the
   *  google.longrunning.Operations.response field if the operation was
   *  successful.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaImportUserEventsResponse : GTLRObject
  
  /** A sample of errors encountered while processing the request. */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus *> *errorSamples;
  
  /**
   *  Echoes the destination for the complete errors if this field was set in the
   *  request.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2betaImportErrorsConfig *errorsConfig;
  
  /** Aggregated statistics of user event import status. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2betaUserEventImportSummary *importSummary;
  
  @end
  
  
  /**
   *  Metadata related to the progress of the Purge operation. This will be
   *  returned by the google.longrunning.Operation.metadata field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaPurgeMetadata : GTLRObject
  @end
  
  
  /**
   *  Response of the PurgeUserEventsRequest. If the long running operation is
   *  successfully done, then this message is returned by the
   *  google.longrunning.Operations.response field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaPurgeUserEventsResponse : GTLRObject
  
  /**
   *  The total count of events purged as a result of the operation.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *purgedEventsCount;
  
  @end
  
  
  /**
   *  Metadata for RejoinUserEvents method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaRejoinUserEventsMetadata : GTLRObject
  @end
  
  
  /**
   *  Response message for RejoinUserEvents method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaRejoinUserEventsResponse : GTLRObject
  
  /**
   *  Number of user events that were joined with latest product catalog.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *rejoinedUserEventsCount;
  
  @end
  
  
  /**
   *  A summary of import result. The UserEventImportSummary summarizes the import
   *  status for user events.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2betaUserEventImportSummary : GTLRObject
  
  /**
   *  Count of user events imported with complete existing catalog information.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *joinedEventsCount;
  
  /**
   *  Count of user events imported, but with catalog information not found in the
   *  imported catalog.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *unjoinedEventsCount;
  
  @end
  
  
  /**
   *  BigQuery source import data from.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2BigQuerySource : GTLRObject
  
  /**
   *  The schema to use when parsing the data from the source. Supported values
   *  for product imports: * `product` (default): One JSON Product per line. Each
   *  product must have a valid Product.id. * `product_merchant_center`: See
   *  [Importing catalog data from Merchant
   *  Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mc).
   *  Supported values for user events imports: * `user_event` (default): One JSON
   *  UserEvent per line. * `user_event_ga360`: Using
   *  https://support.google.com/analytics/answer/3437719?hl=en.
   */
  @property(nonatomic, copy, nullable) NSString *dataSchema;
  
  /**
   *  Required. The BigQuery data set to copy the data from with a length limit of
   *  1,024 characters.
   */
  @property(nonatomic, copy, nullable) NSString *datasetId;
  
  /**
   *  Intermediate Cloud Storage directory used for the import with a length limit
   *  of 2,000 characters. Can be specified if one wants to have the BigQuery
   *  export to a specific Cloud Storage directory.
   */
  @property(nonatomic, copy, nullable) NSString *gcsStagingDir;
  
  /**
   *  The project id (can be project # or id) that the BigQuery source is in with
   *  a length limit of 128 characters. If not specified, inherits the project id
   *  from the parent request.
   */
  @property(nonatomic, copy, nullable) NSString *projectId;
  
  /**
   *  Required. The BigQuery table to copy the data from with a length limit of
   *  1,024 characters.
   */
  @property(nonatomic, copy, nullable) NSString *tableId;
  
  @end
  
  
  /**
   *  The catalog configuration.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2Catalog : GTLRObject
  
  /**
   *  Required. Immutable. The catalog display name. This field must be a UTF-8
   *  encoded string with a length limit of 128 characters. Otherwise, an
   *  INVALID_ARGUMENT error is returned.
   */
  @property(nonatomic, copy, nullable) NSString *displayName;
  
  /** Required. Immutable. The fully qualified resource name of the catalog. */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /** Required. The product level configuration. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2ProductLevelConfig *productLevelConfig;
  
  @end
  
  
  /**
   *  A custom attribute that is not explicitly modeled in Product.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2CustomAttribute : GTLRObject
  
  /**
   *  The numerical values of this custom attribute. For example, `[2.3, 15.4]`
   *  when the key is "lengths_cm". At most 400 values are allowed.Otherwise, an
   *  INVALID_ARGUMENT error is returned. Exactly one of text or numbers should be
   *  set. Otherwise, an INVALID_ARGUMENT error is returned.
   *
   *  Uses NSNumber of doubleValue.
   */
  @property(nonatomic, strong, nullable) NSArray<NSNumber *> *numbers;
  
  /**
   *  The textual values of this custom attribute. For example, `["yellow",
   *  "green"]` when the key is "color". At most 400 values are allowed. Empty
   *  values are not allowed. Each value must be a UTF-8 encoded string with a
   *  length limit of 256 characters. Otherwise, an INVALID_ARGUMENT error is
   *  returned. Exactly one of text or numbers should be set. Otherwise, an
   *  INVALID_ARGUMENT error is returned.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *text;
  
  @end
  
  
  /**
   *  Google Cloud Storage location for input content. format.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2GcsSource : GTLRObject
  
  /**
   *  The schema to use when parsing the data from the source. Supported values
   *  for product imports: * `product` (default): One JSON Product per line. Each
   *  product must have a valid Product.id. * `product_merchant_center`: See
   *  [Importing catalog data from Merchant
   *  Center](https://cloud.google.com/retail/recommendations-ai/docs/upload-catalog#mcc).
   *  Supported values for user events imports: * `user_event` (default): One JSON
   *  UserEvent per line. * `user_event_ga360`: Using
   *  https://support.google.com/analytics/answer/3437719?hl=en.
   */
  @property(nonatomic, copy, nullable) NSString *dataSchema;
  
  /**
   *  Required. Google Cloud Storage URIs to input files. URI can be up to 2000
   *  characters long. URIs can match the full object path (for example,
   *  `gs://bucket/directory/object.json`) or a pattern matching one or more
   *  files, such as `gs://bucket/directory/ *.json`. A request can contain at
   *  most 100 files, and each file can be up to 2 GB. See [Importing product
   *  information](https://cloud.google.com/recommendations-ai/docs/upload-catalog)
   *  for the expected file format and setup instructions.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *inputUris;
  
  @end
  
  
  /**
   *  Product thumbnail/detail image.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2Image : GTLRObject
  
  /**
   *  Height of the image in number of pixels. This field must be nonnegative.
   *  Otherwise, an INVALID_ARGUMENT error is returned.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *height;
  
  /**
   *  Required. URI of the image. This field must be a valid UTF-8 encoded URI
   *  with a length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT
   *  error is returned. Google Merchant Center property
   *  [image_link](https://support.google.com/merchants/answer/6324350).
   *  Schema.org property [Product.image](https://schema.org/image).
   */
  @property(nonatomic, copy, nullable) NSString *uri;
  
  /**
   *  Width of the image in number of pixels. This field must be nonnegative.
   *  Otherwise, an INVALID_ARGUMENT error is returned.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *width;
  
  @end
  
  
  /**
   *  Configuration of destination for Import related errors.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ImportErrorsConfig : GTLRObject
  
  /**
   *  Google Cloud Storage path for import errors. This must be an empty, existing
   *  Cloud Storage bucket. Import errors will be written to a file in this
   *  bucket, one per line, as a JSON-encoded `google.rpc.Status` message.
   */
  @property(nonatomic, copy, nullable) NSString *gcsPrefix;
  
  @end
  
  
  /**
   *  Metadata related to the progress of the Import operation. This will be
   *  returned by the google.longrunning.Operation.metadata field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ImportMetadata : GTLRObject
  
  /** Operation create time. */
  @property(nonatomic, strong, nullable) GTLRDateTime *createTime;
  
  /**
   *  Count of entries that encountered errors while processing.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *failureCount;
  
  /**
   *  Count of entries that were processed successfully.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *successCount;
  
  /**
   *  Operation last update time. If the operation is done, this is also the
   *  finish time.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *updateTime;
  
  @end
  
  
  /**
   *  Request message for Import methods.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ImportProductsRequest : GTLRObject
  
  /** The desired location of errors incurred during the Import. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2ImportErrorsConfig *errorsConfig;
  
  /** Required. The desired input location of the data. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2ProductInputConfig *inputConfig;
  
  /**
   *  Indicates which fields in the provided imported 'products' to update. If not
   *  set, will by default update all fields.
   *
   *  String format is a comma-separated list of fields.
   */
  @property(nonatomic, copy, nullable) NSString *updateMask;
  
  @end
  
  
  /**
   *  Response of the ImportProductsRequest. If the long running operation is
   *  done, then this message is returned by the
   *  google.longrunning.Operations.response field if the operation was
   *  successful.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ImportProductsResponse : GTLRObject
  
  /** A sample of errors encountered while processing the request. */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus *> *errorSamples;
  
  /** Echoes the destination for the complete errors in the request if set. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2ImportErrorsConfig *errorsConfig;
  
  @end
  
  
  /**
   *  Request message for the ImportUserEvents request.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ImportUserEventsRequest : GTLRObject
  
  /**
   *  The desired location of errors incurred during the Import. Cannot be set for
   *  inline user event imports.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2ImportErrorsConfig *errorsConfig;
  
  /** Required. The desired input location of the data. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2UserEventInputConfig *inputConfig;
  
  @end
  
  
  /**
   *  Response of the ImportUserEventsRequest. If the long running operation was
   *  successful, then this message is returned by the
   *  google.longrunning.Operations.response field if the operation was
   *  successful.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ImportUserEventsResponse : GTLRObject
  
  /** A sample of errors encountered while processing the request. */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus *> *errorSamples;
  
  /**
   *  Echoes the destination for the complete errors if this field was set in the
   *  request.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2ImportErrorsConfig *errorsConfig;
  
  /** Aggregated statistics of user event import status. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2UserEventImportSummary *importSummary;
  
  @end
  
  
  /**
   *  Response for CatalogService.ListCatalogs method.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "catalogs" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ListCatalogsResponse : GTLRCollectionObject
  
  /**
   *  All the customer's Catalogs.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleCloudRetailV2Catalog *> *catalogs;
  
  /**
   *  A token that can be sent as ListCatalogsRequest.page_token to retrieve the
   *  next page. If this field is omitted, there are no subsequent pages.
   */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  @end
  
  
  /**
   *  Request message for Predict method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PredictRequest : GTLRObject
  
  /**
   *  Filter for restricting prediction results with a length limit of 5,000
   *  characters. Accepts values for tags and the `filterOutOfStockItems` flag. *
   *  Tag expressions. Restricts predictions to products 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,000 characters. Note: "Recently viewed" models don't support tag
   *  filtering at the moment. * filterOutOfStockItems. Restricts predictions to
   *  products 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 If your
   *  filter blocks all prediction results, nothing will be returned. If you want
   *  generic (unfiltered) popular products to be returned instead, set
   *  `strictFiltering` to false in `PredictRequest.params`.
   */
  @property(nonatomic, copy, nullable) NSString *filter;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2PredictRequest_Labels *labels;
  
  /**
   *  Maximum number of results to return per page. Set this property to the
   *  number of prediction results needed. If zero, the service will choose a
   *  reasonable default. The maximum allowed value is 100. Values above 100 will
   *  be coerced to 100.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *pageSize;
  
  /** The previous PredictResponse.next_page_token. */
  @property(nonatomic, copy, nullable) NSString *pageToken;
  
  /**
   *  Additional domain specific parameters for the predictions. Allowed values: *
   *  `returnProduct`: Boolean. If set to true, the associated product object will
   *  be returned in the `results.metadata` field in the prediction response. *
   *  `returnScore`: Boolean. If set to true, the prediction 'score' corresponding
   *  to each returned product will be set in the `results.metadata` field in the
   *  prediction response. The given 'score' indicates the probability of an
   *  product being clicked/purchased given the user's context and history. *
   *  `strictFiltering`: Boolean. True by default. If set to false, the service
   *  will return generic (unfiltered) popular products instead of empty if your
   *  filter blocks all prediction results.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2PredictRequest_Params *params;
  
  /**
   *  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.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2UserEvent *userEvent;
  
  /**
   *  Use validate only mode for this prediction query. If set to true, a dummy
   *  model will be used that returns arbitrary products. Note that the validate
   *  only mode should only be used for testing the API, or if the model is not
   *  ready.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *validateOnly;
  
  @end
  
  
  /**
   *  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.
   *
   *  @note This class is documented as having more properties of NSString. Use @c
   *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
   *        of properties and then fetch them; or @c -additionalProperties to
   *        fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PredictRequest_Labels : GTLRObject
  @end
  
  
  /**
   *  Additional domain specific parameters for the predictions. Allowed values: *
   *  `returnProduct`: Boolean. If set to true, the associated product object will
   *  be returned in the `results.metadata` field in the prediction response. *
   *  `returnScore`: Boolean. If set to true, the prediction 'score' corresponding
   *  to each returned product will be set in the `results.metadata` field in the
   *  prediction response. The given 'score' indicates the probability of an
   *  product being clicked/purchased given the user's context and history. *
   *  `strictFiltering`: Boolean. True by default. If set to false, the service
   *  will return generic (unfiltered) popular products instead of empty if your
   *  filter blocks all prediction results.
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PredictRequest_Params : GTLRObject
  @end
  
  
  /**
   *  Response message for predict method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PredictResponse : GTLRObject
  
  /**
   *  A unique attribution token. This should be included in the UserEvent logs
   *  resulting from this recommendation, which enables accurate attribution of
   *  recommendation model performance.
   */
  @property(nonatomic, copy, nullable) NSString *attributionToken;
  
  /** IDs of products in the request that were missing from the inventory. */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *missingIds;
  
  /**
   *  A list of recommended products. The order represents the ranking (from the
   *  most relevant product to the least).
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleCloudRetailV2PredictResponsePredictionResult *> *results;
  
  /**
   *  True if the validateOnly property was set in the request.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *validateOnly;
  
  @end
  
  
  /**
   *  PredictionResult represents the recommendation prediction results.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PredictResponsePredictionResult : GTLRObject
  
  /**
   *  ID of the recommended product
   *
   *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
   */
  @property(nonatomic, copy, nullable) NSString *identifier;
  
  /**
   *  Additional product metadata / annotations. Possible values: * `product`:
   *  JSON representation of the product. Will be set if `returnProduct` is set to
   *  true in `PredictRequest.params`. * `score`: Prediction score in double
   *  value. Will be set if `returnScore` is set to true in
   *  `PredictRequest.params`.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2PredictResponsePredictionResult_Metadata *metadata;
  
  @end
  
  
  /**
   *  Additional product metadata / annotations. Possible values: * `product`:
   *  JSON representation of the product. Will be set if `returnProduct` is set to
   *  true in `PredictRequest.params`. * `score`: Prediction score in double
   *  value. Will be set if `returnScore` is set to true in
   *  `PredictRequest.params`.
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PredictResponsePredictionResult_Metadata : GTLRObject
  @end
  
  
  /**
   *  The price information of a Product.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PriceInfo : GTLRObject
  
  /**
   *  The costs associated with the sale of a particular product. Used for gross
   *  profit reporting. * Profit = price - cost Google Merchant Center property
   *  [cost_of_goods_sold](https://support.google.com/merchants/answer/9017895).
   *
   *  Uses NSNumber of floatValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *cost;
  
  /**
   *  The 3-letter currency code defined in [ISO
   *  4217](https://www.iso.org/iso-4217-currency-codes.html). If this field is an
   *  unrecognizable currency code, an INVALID_ARGUMENT error is returned.
   */
  @property(nonatomic, copy, nullable) NSString *currencyCode;
  
  /**
   *  Price of the product without any discount. If zero, by default set to be the
   *  price.
   *
   *  Uses NSNumber of floatValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *originalPrice;
  
  /**
   *  Price of the product. Google Merchant Center property
   *  [price](https://support.google.com/merchants/answer/6324371). Schema.org
   *  property [Offer.priceSpecification](https://schema.org/priceSpecification).
   *
   *  Uses NSNumber of floatValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *price;
  
  @end
  
  
  /**
   *  Product captures all metadata information of items to be recommended or
   *  searched.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2Product : GTLRObject
  
  /**
   *  Highly encouraged. Extra product attributes to be included. For example, for
   *  products, this could include the store name, vendor, style, color, etc.
   *  These are very strong signals for recommendation model, thus we highly
   *  recommend providing the attributes here. Features that can take on one of a
   *  limited number of possible values. Two types of features can be set are:
   *  Textual features. some examples would be the brand/maker of a product, or
   *  country of a customer. Numerical features. Some examples would be the
   *  height/weight of a product, or age of a customer. For example: `{ "vendor":
   *  {"text": ["vendor123", "vendor456"]}, "lengths_cm": {"numbers":[2.3, 15.4]},
   *  "heights_cm": {"numbers":[8.1, 6.4]} }`. This field needs to pass all below
   *  criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries
   *  count: 150 by default; 100 for Type.VARIANT. * The key must be a UTF-8
   *  encoded string with a length limit of 128 characters.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2Product_Attributes *attributes;
  
  /**
   *  The online availability of the Product. Default to Availability.IN_STOCK.
   *  Google Merchant Center Property
   *  [availability](https://support.google.com/merchants/answer/6324448).
   *  Schema.org Property [Offer.availability](https://schema.org/availability).
   *
   *  Likely values:
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2Product_Availability_AvailabilityUnspecified
   *        Default product availability. Default to Availability.IN_STOCK if
   *        unset. (Value: "AVAILABILITY_UNSPECIFIED")
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2Product_Availability_Backorder
   *        Product that is back-ordered (i.e. temporarily out of stock). (Value:
   *        "BACKORDER")
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2Product_Availability_InStock
   *        Product in stock. (Value: "IN_STOCK")
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2Product_Availability_OutOfStock
   *        Product out of stock. (Value: "OUT_OF_STOCK")
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2Product_Availability_Preorder
   *        Product that is in pre-order state. (Value: "PREORDER")
   */
  @property(nonatomic, copy, nullable) NSString *availability;
  
  /**
   *  The available quantity of the item.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *availableQuantity;
  
  /** The timestamp when this Product becomes available for recommendation. */
  @property(nonatomic, strong, nullable) GTLRDateTime *availableTime;
  
  /**
   *  Product categories. This field is repeated for supporting one product
   *  belonging to several parallel categories. Strongly recommended using the
   *  full path for better search / recommendation quality. To represent full path
   *  of category, use '>' sign to separate different hierarchies. If '>' is part
   *  of the category name, please replace it with other character(s). For
   *  example, if a shoes product belongs to both ["Shoes & Accessories" ->
   *  "Shoes"] and ["Sports & Fitness" -> "Athletic Clothing" -> "Shoes"], it
   *  could be represented as: "categories": [ "Shoes & Accessories > Shoes",
   *  "Sports & Fitness > Athletic Clothing > Shoes" ] Must be set for
   *  Type.PRIMARY Product otherwise an INVALID_ARGUMENT error is returned. At
   *  most 250 values are allowed per Product. Empty values are not allowed. Each
   *  value must be a UTF-8 encoded string with a length limit of 5,000
   *  characters. Otherwise, an INVALID_ARGUMENT error is returned. Google
   *  Merchant Center property google_product_category. Schema.org property
   *  [Product.category] (https://schema.org/category).
   *  [mc_google_product_category]:
   *  https://support.google.com/merchants/answer/6324436
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *categories;
  
  /**
   *  Product description. This field must be a UTF-8 encoded string with a length
   *  limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is returned.
   *  Google Merchant Center property
   *  [description](https://support.google.com/merchants/answer/6324468).
   *  schema.org property [Product.description](https://schema.org/description).
   *
   *  Remapped to 'descriptionProperty' to avoid NSObject's 'description'.
   */
  @property(nonatomic, copy, nullable) NSString *descriptionProperty;
  
  /**
   *  Immutable. Product identifier, which is the final component of name. For
   *  example, this field is "id_1", if name is `projects/ *
   *  /locations/global/catalogs/default_catalog/branches/default_branch/products/id_1`.
   *  This field must be a UTF-8 encoded string with a length limit of 128
   *  characters. Otherwise, an INVALID_ARGUMENT error is returned. Google
   *  Merchant Center property
   *  [id](https://support.google.com/merchants/answer/6324405). Schema.org
   *  Property [Product.sku](https://schema.org/sku).
   *
   *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
   */
  @property(nonatomic, copy, nullable) NSString *identifier;
  
  /**
   *  Product images for the product.Highly recommended to put the main image to
   *  the first. A maximum of 300 images are allowed. Google Merchant Center
   *  property [image_link](https://support.google.com/merchants/answer/6324350).
   *  Schema.org property [Product.image](https://schema.org/image).
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleCloudRetailV2Image *> *images;
  
  /**
   *  Immutable. Full resource name of the product, such as `projects/ *
   *  /locations/global/catalogs/default_catalog/branches/default_branch/products/product_id`.
   *  The branch ID must be "default_branch".
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  Product price and cost information. Google Merchant Center property
   *  [price](https://support.google.com/merchants/answer/6324371).
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2PriceInfo *priceInfo;
  
  /**
   *  Variant group identifier. Must be an id, with the same parent branch with
   *  this product. Otherwise, an error is thrown. For Type.PRIMARY Products, this
   *  field can only be empty or set to the same value as id. For VARIANT
   *  Products, this field cannot be empty. A maximum of 2,000 products are
   *  allowed to share the same Type.PRIMARY Product. Otherwise, an
   *  INVALID_ARGUMENT error is returned. Google Merchant Center Property
   *  [item_group_id](https://support.google.com/merchants/answer/6324507).
   *  Schema.org Property
   *  [Product.inProductGroupWithID](https://schema.org/inProductGroupWithID).
   *  This field must be enabled before it can be used. [Learn
   *  more](/recommendations-ai/docs/catalog#item-group-id).
   */
  @property(nonatomic, copy, nullable) NSString *primaryProductId;
  
  /**
   *  Custom tags associated with the product. At most 250 values are allowed per
   *  Product. This value must be a UTF-8 encoded string with a length limit of
   *  1,000 characters. Otherwise, an INVALID_ARGUMENT error is returned. This tag
   *  can be used for filtering recommendation results by passing the tag as part
   *  of the PredictRequest.filter. Google Merchant Center property
   *  [custom_label_0–4](https://support.google.com/merchants/answer/6324473).
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *tags;
  
  /**
   *  Required. Product title. This field must be a UTF-8 encoded string with a
   *  length limit of 1,000 characters. Otherwise, an INVALID_ARGUMENT error is
   *  returned. Google Merchant Center property
   *  [title](https://support.google.com/merchants/answer/6324415). Schema.org
   *  property [Product.name](https://schema.org/name).
   */
  @property(nonatomic, copy, nullable) NSString *title;
  
  /**
   *  Immutable. The type of the product. This field is output-only.
   *
   *  Likely values:
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2Product_Type_Collection The
   *        collection type. Collection products are bundled Type.PRIMARY Products
   *        or Type.VARIANT Products that are sold together, such as a jewelry set
   *        with necklaces, earrings and rings, etc. (Value: "COLLECTION")
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2Product_Type_Primary The
   *        primary type. As the primary unit for predicting, indexing and search
   *        serving, a Type.PRIMARY Product is grouped with multiple Type.VARIANT
   *        Products. (Value: "PRIMARY")
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2Product_Type_TypeUnspecified
   *        Default value. Default to Type.PRIMARY if unset. (Value:
   *        "TYPE_UNSPECIFIED")
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2Product_Type_Variant The
   *        variant type. Type.VARIANT Products usually share some common
   *        attributes on the same Type.PRIMARY Products, but they have variant
   *        attributes like different colors, sizes and prices, etc. (Value:
   *        "VARIANT")
   */
  @property(nonatomic, copy, nullable) NSString *type;
  
  /**
   *  Canonical URL directly linking to the product detail page. It is strongly
   *  recommended to provide a valid uri for the product, otherwise the service
   *  performance could be significantly degraded. This field must be a UTF-8
   *  encoded string with a length limit of 5,000 characters. Otherwise, an
   *  INVALID_ARGUMENT error is returned. Google Merchant Center property
   *  [link](https://support.google.com/merchants/answer/6324416). Schema.org
   *  property [Offer.url](https://schema.org/url).
   */
  @property(nonatomic, copy, nullable) NSString *uri;
  
  @end
  
  
  /**
   *  Highly encouraged. Extra product attributes to be included. For example, for
   *  products, this could include the store name, vendor, style, color, etc.
   *  These are very strong signals for recommendation model, thus we highly
   *  recommend providing the attributes here. Features that can take on one of a
   *  limited number of possible values. Two types of features can be set are:
   *  Textual features. some examples would be the brand/maker of a product, or
   *  country of a customer. Numerical features. Some examples would be the
   *  height/weight of a product, or age of a customer. For example: `{ "vendor":
   *  {"text": ["vendor123", "vendor456"]}, "lengths_cm": {"numbers":[2.3, 15.4]},
   *  "heights_cm": {"numbers":[8.1, 6.4]} }`. This field needs to pass all below
   *  criteria, otherwise an INVALID_ARGUMENT error is returned: * Max entries
   *  count: 150 by default; 100 for Type.VARIANT. * The key must be a UTF-8
   *  encoded string with a length limit of 128 characters.
   *
   *  @note This class is documented as having more properties of
   *        GTLRCloudRetail_GoogleCloudRetailV2CustomAttribute. Use @c
   *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
   *        of properties and then fetch them; or @c -additionalProperties to
   *        fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2Product_Attributes : GTLRObject
  @end
  
  
  /**
   *  Detailed product information associated with a user event.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ProductDetail : GTLRObject
  
  /**
   *  Required. Product information. Only Product.id field is used when ingesting
   *  an event, all other product fields are ignored as we will look them up from
   *  the catalog.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2Product *product;
  
  /**
   *  Quantity of the product associated with the user event. For example, this
   *  field will be 2 if two products are added to the shopping cart for
   *  `purchase-complete` event. Required for `add-to-cart` and
   *  `purchase-complete` event types.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *quantity;
  
  @end
  
  
  /**
   *  The inline source for the input config for ImportProducts method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ProductInlineSource : GTLRObject
  
  /**
   *  Required. A list of products to update/create. Each product must have a
   *  valid Product.id. Recommended max of 10k items.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleCloudRetailV2Product *> *products;
  
  @end
  
  
  /**
   *  The input config source for products.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ProductInputConfig : GTLRObject
  
  /** BigQuery input source. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2BigQuerySource *bigQuerySource;
  
  /** Google Cloud Storage location for the input content. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2GcsSource *gcsSource;
  
  /** The Inline source for the input content for products. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2ProductInlineSource *productInlineSource;
  
  @end
  
  
  /**
   *  Configures what level the product should be uploaded with regards to how
   *  users will be send events and how predictions will be made.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2ProductLevelConfig : GTLRObject
  
  /**
   *  The type of Products allowed to be ingested into the catalog. Acceptable
   *  values are: * `primary` (default): You can only ingest Product.Type.PRIMARY
   *  Products. This means Product.primary_product_id can only be empty or set to
   *  the same value as Product.id. * `variant`: You can only ingest
   *  Product.Type.VARIANT Products. This means Product.primary_product_id cannot
   *  be empty. If this field is set to an invalid value other than these, an
   *  INVALID_ARGUMENT error is returned. If this field is `variant` and
   *  merchant_center_product_id_field is `itemGroupId`, an INVALID_ARGUMENT error
   *  is returned. See [Using catalog
   *  levels](/retail/recommendations-ai/docs/catalog#catalog-levels) for more
   *  details.
   */
  @property(nonatomic, copy, nullable) NSString *ingestionProductType;
  
  /**
   *  Which field of [Merchant Center
   *  Product](/bigquery-transfer/docs/merchant-center-products-schema) should be
   *  imported as Product.id. Acceptable values are: * `offerId` (default): Import
   *  `offerId` as the product ID. * `itemGroupId`: Import `itemGroupId` as the
   *  product ID. Notice that Retail API will choose one item from the ones with
   *  the same `itemGroupId`, and use it to represent the item group. If this
   *  field is set to an invalid value other than these, an INVALID_ARGUMENT error
   *  is returned. If this field is `itemGroupId` and ingestion_product_type is
   *  `variant`, an INVALID_ARGUMENT error is returned. See [Using catalog
   *  levels](/retail/recommendations-ai/docs/catalog#catalog-levels) for more
   *  details.
   */
  @property(nonatomic, copy, nullable) NSString *merchantCenterProductIdField;
  
  @end
  
  
  /**
   *  A transaction represents the entire purchase transaction.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PurchaseTransaction : GTLRObject
  
  /**
   *  All the costs associated with the products. These can be manufacturing
   *  costs, shipping expenses not borne by the end user, or any other costs, such
   *  that: * Profit = revenue - tax - cost
   *
   *  Uses NSNumber of floatValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *cost;
  
  /** Required. Currency code. Use three-character ISO-4217 code. */
  @property(nonatomic, copy, nullable) NSString *currencyCode;
  
  /**
   *  The transaction ID with a length limit of 128 characters.
   *
   *  identifier property maps to 'id' in JSON (to avoid Objective C's 'id').
   */
  @property(nonatomic, copy, nullable) NSString *identifier;
  
  /**
   *  Required. Total non-zero revenue or grand total associated with the
   *  transaction. This value include shipping, tax, or other adjustments to total
   *  revenue that you want to include as part of your revenue calculations.
   *
   *  Uses NSNumber of floatValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *revenue;
  
  /**
   *  All the taxes associated with the transaction.
   *
   *  Uses NSNumber of floatValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *tax;
  
  @end
  
  
  /**
   *  Metadata related to the progress of the Purge operation. This will be
   *  returned by the google.longrunning.Operation.metadata field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PurgeMetadata : GTLRObject
  @end
  
  
  /**
   *  Request message for PurgeUserEvents method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PurgeUserEventsRequest : GTLRObject
  
  /**
   *  Required. The filter string to specify the events to be deleted with a
   *  length limit of 5,000 characters. Empty string filter is not allowed. The
   *  eligible fields for filtering are: * `eventType`: Double quoted
   *  UserEvent.event_type string. * `eventTime`: in ISO 8601 "zulu" format. *
   *  `visitorId`: Double quoted string. Specifying this will delete all events
   *  associated with a visitor. * `userId`: Double quoted string. Specifying this
   *  will delete all events associated with a user. Examples: * Deleting all
   *  events in a time range: `eventTime > "2012-04-23T18:25:43.511Z" eventTime <
   *  "2012-04-23T18:30:43.511Z"` * Deleting specific eventType in time range:
   *  `eventTime > "2012-04-23T18:25:43.511Z" eventType = "detail-page-view"` *
   *  Deleting all events for a specific visitor: `visitorId = "visitor1024"` The
   *  filtering fields are assumed to have an implicit AND.
   */
  @property(nonatomic, copy, nullable) NSString *filter;
  
  /**
   *  Actually perform the purge. If `force` is set to false, the method will
   *  return the expected purge count without deleting any user events.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *force;
  
  @end
  
  
  /**
   *  Response of the PurgeUserEventsRequest. If the long running operation is
   *  successfully done, then this message is returned by the
   *  google.longrunning.Operations.response field.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2PurgeUserEventsResponse : GTLRObject
  
  /**
   *  The total count of events purged as a result of the operation.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *purgedEventsCount;
  
  @end
  
  
  /**
   *  Metadata for RejoinUserEvents method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2RejoinUserEventsMetadata : GTLRObject
  @end
  
  
  /**
   *  Request message for RejoinUserEvents method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2RejoinUserEventsRequest : GTLRObject
  
  /**
   *  The type of the user event rejoin to define the scope and range of the user
   *  events to be rejoined with the latest product catalog. Defaults to
   *  USER_EVENT_REJOIN_SCOPE_UNSPECIFIED if this field is not set, or set to an
   *  invalid integer value.
   *
   *  Likely values:
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2RejoinUserEventsRequest_UserEventRejoinScope_JoinedEvents
   *        Only rejoin joined events with the latest product catalog. (Value:
   *        "JOINED_EVENTS")
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2RejoinUserEventsRequest_UserEventRejoinScope_UnjoinedEvents
   *        Only rejoin unjoined events with the latest product catalog. (Value:
   *        "UNJOINED_EVENTS")
   *    @arg @c kGTLRCloudRetail_GoogleCloudRetailV2RejoinUserEventsRequest_UserEventRejoinScope_UserEventRejoinScopeUnspecified
   *        Rejoin all events with the latest product catalog, including both
   *        joined events and unjoined events. (Value:
   *        "USER_EVENT_REJOIN_SCOPE_UNSPECIFIED")
   */
  @property(nonatomic, copy, nullable) NSString *userEventRejoinScope;
  
  @end
  
  
  /**
   *  Response message for RejoinUserEvents method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2RejoinUserEventsResponse : GTLRObject
  
  /**
   *  Number of user events that were joined with latest product catalog.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *rejoinedUserEventsCount;
  
  @end
  
  
  /**
   *  UserEvent captures all metadata information Retail API needs to know about
   *  how end users interact with customers' website.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2UserEvent : GTLRObject
  
  /**
   *  Extra user event features to include in the recommendation model. The key
   *  must be a UTF-8 encoded string with a length limit of 5,000 characters.
   *  Otherwise, an INVALID_ARGUMENT error is returned. For product
   *  recommendation, an example of extra user information is traffic_channel,
   *  i.e. how user arrives at the site. Users can arrive at the site by coming to
   *  the site directly, or coming through Google search, and etc.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2UserEvent_Attributes *attributes;
  
  /**
   *  Highly recommended for user events that are the result of
   *  PredictionService.Predict. This field enables accurate attribution of
   *  recommendation model performance. The value must be a valid
   *  PredictResponse.attribution_token for user events that are the result of
   *  PredictionService.Predict. This token enables us to accurately attribute
   *  page view or purchase back to the event and the particular predict response
   *  containing this clicked/purchased product. If user clicks on product K in
   *  the recommendation results, pass PredictResponse.attribution_token as a URL
   *  parameter to product K's page. When recording events on product K's page,
   *  log the PredictResponse.attribution_token to this field.
   */
  @property(nonatomic, copy, nullable) NSString *attributionToken;
  
  /**
   *  The id or name of the associated shopping cart. This id is used to associate
   *  multiple items added or present in the cart before purchase. This can only
   *  be set for `add-to-cart`, `purchase-complete`, or `shopping-cart-page-view`
   *  events.
   */
  @property(nonatomic, copy, nullable) NSString *cartId;
  
  /**
   *  Only required for UserEventService.ImportUserEvents method. Timestamp of
   *  when the user event happened.
   */
  @property(nonatomic, strong, nullable) GTLRDateTime *eventTime;
  
  /**
   *  Required. User event type. Allowed values are: * `add-to-cart`: Products
   *  being added to cart. * `category-page-view`: Special pages such as sale or
   *  promotion pages viewed. * `detail-page-view`: Products detail page viewed. *
   *  `home-page-view`: Homepage viewed. * `promotion-offered`: Promotion is
   *  offered to a user. * `promotion-not-offered`: Promotion is not offered to a
   *  user. * `purchase-complete`: User finishing a purchase. * `search`: Product
   *  search. * `shopping-cart-page-view`: User viewing a shopping cart.
   */
  @property(nonatomic, copy, nullable) NSString *eventType;
  
  /**
   *  A list of identifiers for the independent experiment groups this user event
   *  belongs to. This is used to distinguish between user events associated with
   *  different experiment setups (e.g. using Retail API, using different
   *  recommendation models).
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *experimentIds;
  
  /**
   *  The categories associated with a category page. To represent full path of
   *  category, use '>' sign to separate different hierarchies. If '>' is part of
   *  the category name, please replace it with other character(s). Category pages
   *  include special pages such as sales or promotions. For instance, a special
   *  sale page may have the category hierarchy: "pageCategories" : ["Sales > 2017
   *  Black Friday Deals"]. Required for `category-page-view` events. At least one
   *  of search_query or page_categories is required for `search` events. Other
   *  event types should not set this field. Otherwise, an INVALID_ARGUMENT error
   *  is returned.
   */
  @property(nonatomic, strong, nullable) NSArray<NSString *> *pageCategories;
  
  /**
   *  A unique id of a web page view. This should be kept the same for all user
   *  events triggered from the same pageview. For example, an item detail page
   *  view could trigger multiple events as the user is browsing the page. The
   *  `pageViewId` property should be kept the same for all these events so that
   *  they can be grouped together properly. When using the client side event
   *  reporting with JavaScript pixel and Google Tag Manager, this value is filled
   *  in automatically.
   */
  @property(nonatomic, copy, nullable) NSString *pageViewId;
  
  /**
   *  The main product details related to the event. This field is required for
   *  the following event types: * `add-to-cart` * `detail-page-view` *
   *  `purchase-complete` In a `search` event, this field represents the products
   *  returned to the end user on the current page (the end user may have not
   *  finished broswing the whole page yet). When a new page is returned to the
   *  end user, after pagination/filtering/ordering even for the same query, a new
   *  `search` event with different product_details is desired. The end user may
   *  have not finished broswing the whole page yet.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleCloudRetailV2ProductDetail *> *productDetails;
  
  /**
   *  A transaction represents the entire purchase transaction. Required for
   *  `purchase-complete` events. Other event types should not set this field.
   *  Otherwise, an INVALID_ARGUMENT error is returned.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2PurchaseTransaction *purchaseTransaction;
  
  /**
   *  The referrer URL of the current page. When using the client side event
   *  reporting with JavaScript pixel and Google Tag Manager, this value is filled
   *  in automatically.
   */
  @property(nonatomic, copy, nullable) NSString *referrerUri;
  
  /**
   *  The user's search query. The value must be a UTF-8 encoded string with a
   *  length limit of 5,000 characters. Otherwise, an INVALID_ARGUMENT error is
   *  returned. At least one of search_query or page_categories is required for
   *  `search` events. Other event types should not set this field. Otherwise, an
   *  INVALID_ARGUMENT error is returned.
   */
  @property(nonatomic, copy, nullable) NSString *searchQuery;
  
  /**
   *  Complete URL (window.location.href) of the user's current page. When using
   *  the client side event reporting with JavaScript pixel and Google Tag
   *  Manager, this value is filled in automatically. Maximum length 5,000
   *  characters.
   */
  @property(nonatomic, copy, nullable) NSString *uri;
  
  /** User information. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2UserInfo *userInfo;
  
  /**
   *  Required. A unique identifier for tracking visitors. For example, this could
   *  be implemented with an HTTP cookie, which should be able to uniquely
   *  identify a visitor on a single device. This unique identifier should not
   *  change if the visitor log in/out of the website. The field must be a UTF-8
   *  encoded string with a length limit of 128 characters. Otherwise, an
   *  INVALID_ARGUMENT error is returned.
   */
  @property(nonatomic, copy, nullable) NSString *visitorId;
  
  @end
  
  
  /**
   *  Extra user event features to include in the recommendation model. The key
   *  must be a UTF-8 encoded string with a length limit of 5,000 characters.
   *  Otherwise, an INVALID_ARGUMENT error is returned. For product
   *  recommendation, an example of extra user information is traffic_channel,
   *  i.e. how user arrives at the site. Users can arrive at the site by coming to
   *  the site directly, or coming through Google search, and etc.
   *
   *  @note This class is documented as having more properties of
   *        GTLRCloudRetail_GoogleCloudRetailV2CustomAttribute. Use @c
   *        -additionalJSONKeys and @c -additionalPropertyForName: to get the list
   *        of properties and then fetch them; or @c -additionalProperties to
   *        fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2UserEvent_Attributes : GTLRObject
  @end
  
  
  /**
   *  A summary of import result. The UserEventImportSummary summarizes the import
   *  status for user events.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2UserEventImportSummary : GTLRObject
  
  /**
   *  Count of user events imported with complete existing catalog information.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *joinedEventsCount;
  
  /**
   *  Count of user events imported, but with catalog information not found in the
   *  imported catalog.
   *
   *  Uses NSNumber of longLongValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *unjoinedEventsCount;
  
  @end
  
  
  /**
   *  The inline source for the input config for ImportUserEvents method.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2UserEventInlineSource : GTLRObject
  
  /**
   *  Required. A list of user events to import. Recommended max of 10k items.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleCloudRetailV2UserEvent *> *userEvents;
  
  @end
  
  
  /**
   *  The input config source for user events.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2UserEventInputConfig : GTLRObject
  
  /** Required. BigQuery input source. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2BigQuerySource *bigQuerySource;
  
  /** Required. Google Cloud Storage location for the input content. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2GcsSource *gcsSource;
  
  /** Required. The Inline source for the input content for UserEvents. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleCloudRetailV2UserEventInlineSource *userEventInlineSource;
  
  @end
  
  
  /**
   *  Information of an end user.
   */
  @interface GTLRCloudRetail_GoogleCloudRetailV2UserInfo : GTLRObject
  
  /**
   *  True if the request is made directly from the end user, in which case the
   *  ip_address and user_agent can be populated from the HTTP request. This flag
   *  should be set only if the API request is made directly from the end user
   *  such as a mobile app (and not if a gateway or a server is processing and
   *  pushing the user events). This should not be set when using the JavaScript
   *  tag in UserEventService.CollectUserEvent.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *directUserRequest;
  
  /**
   *  The end user's IP address. This field is used to extract location
   *  information for personalization. This field must be either an IPv4 address
   *  (e.g. "104.133.9.80") or an IPv6 address (e.g.
   *  "2001:0db8:85a3:0000:0000:8a2e:0370:7334"). Otherwise, an INVALID_ARGUMENT
   *  error is returned. This should not be set when using the JavaScript tag in
   *  UserEventService.CollectUserEvent or if direct_user_request is set.
   */
  @property(nonatomic, copy, nullable) NSString *ipAddress;
  
  /**
   *  User agent as included in the HTTP header. The field must be a UTF-8 encoded
   *  string with a length limit of 1,000 characters. Otherwise, an
   *  INVALID_ARGUMENT error is returned. This should not be set when using the
   *  client side event reporting with GTM or JavaScript tag in
   *  UserEventService.CollectUserEvent or if direct_user_request is set.
   */
  @property(nonatomic, copy, nullable) NSString *userAgent;
  
  /**
   *  Highly recommended for logged-in users. Unique identifier for logged-in
   *  user, such as a user name. The field must be a UTF-8 encoded string with a
   *  length limit of 128 characters. Otherwise, an INVALID_ARGUMENT error is
   *  returned.
   */
  @property(nonatomic, copy, nullable) NSString *userId;
  
  @end
  
  
  /**
   *  The response message for Operations.ListOperations.
   *
   *  @note This class supports NSFastEnumeration and indexed subscripting over
   *        its "operations" property. If returned as the result of a query, it
   *        should support automatic pagination (when @c shouldFetchNextPages is
   *        enabled).
   */
  @interface GTLRCloudRetail_GoogleLongrunningListOperationsResponse : GTLRCollectionObject
  
  /** The standard List next-page token. */
  @property(nonatomic, copy, nullable) NSString *nextPageToken;
  
  /**
   *  A list of operations that matches the specified filter in the request.
   *
   *  @note This property is used to support NSFastEnumeration and indexed
   *        subscripting on this class.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleLongrunningOperation *> *operations;
  
  @end
  
  
  /**
   *  This resource represents a long-running operation that is the result of a
   *  network API call.
   */
  @interface GTLRCloudRetail_GoogleLongrunningOperation : GTLRObject
  
  /**
   *  If the value is `false`, it means the operation is still in progress. If
   *  `true`, the operation is completed, and either `error` or `response` is
   *  available.
   *
   *  Uses NSNumber of boolValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *done;
  
  /** The error result of the operation in case of failure or cancellation. */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleRpcStatus *error;
  
  /**
   *  Service-specific metadata associated with the operation. It typically
   *  contains progress information and common metadata such as create time. Some
   *  services might not provide such metadata. Any method that returns a
   *  long-running operation should document the metadata type, if any.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleLongrunningOperation_Metadata *metadata;
  
  /**
   *  The server-assigned name, which is only unique within the same service that
   *  originally returns it. If you use the default HTTP mapping, the `name`
   *  should be a resource name ending with `operations/{unique_id}`.
   */
  @property(nonatomic, copy, nullable) NSString *name;
  
  /**
   *  The normal response of the operation in case of success. If the original
   *  method returns no data on success, such as `Delete`, the response is
   *  `google.protobuf.Empty`. If the original method is standard
   *  `Get`/`Create`/`Update`, the response should be the resource. For other
   *  methods, the response should have the type `XxxResponse`, where `Xxx` is the
   *  original method name. For example, if the original method name is
   *  `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
   */
  @property(nonatomic, strong, nullable) GTLRCloudRetail_GoogleLongrunningOperation_Response *response;
  
  @end
  
  
  /**
   *  Service-specific metadata associated with the operation. It typically
   *  contains progress information and common metadata such as create time. Some
   *  services might not provide such metadata. Any method that returns a
   *  long-running operation should document the metadata type, if any.
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleLongrunningOperation_Metadata : GTLRObject
  @end
  
  
  /**
   *  The normal response of the operation in case of success. If the original
   *  method returns no data on success, such as `Delete`, the response is
   *  `google.protobuf.Empty`. If the original method is standard
   *  `Get`/`Create`/`Update`, the response should be the resource. For other
   *  methods, the response should have the type `XxxResponse`, where `Xxx` is the
   *  original method name. For example, if the original method name is
   *  `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleLongrunningOperation_Response : GTLRObject
  @end
  
  
  /**
   *  A generic empty message that you can re-use to avoid defining duplicated
   *  empty messages in your APIs. A typical example is to use it as the request
   *  or the response type of an API method. For instance: service Foo { rpc
   *  Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON
   *  representation for `Empty` is empty JSON object `{}`.
   */
  @interface GTLRCloudRetail_GoogleProtobufEmpty : GTLRObject
  @end
  
  
  /**
   *  The `Status` type defines a logical error model that is suitable for
   *  different programming environments, including REST APIs and RPC APIs. It is
   *  used by [gRPC](https://github.com/grpc). Each `Status` message contains
   *  three pieces of data: error code, error message, and error details. You can
   *  find out more about this error model and how to work with it in the [API
   *  Design Guide](https://cloud.google.com/apis/design/errors).
   */
  @interface GTLRCloudRetail_GoogleRpcStatus : GTLRObject
  
  /**
   *  The status code, which should be an enum value of google.rpc.Code.
   *
   *  Uses NSNumber of intValue.
   */
  @property(nonatomic, strong, nullable) NSNumber *code;
  
  /**
   *  A list of messages that carry the error details. There is a common set of
   *  message types for APIs to use.
   */
  @property(nonatomic, strong, nullable) NSArray<GTLRCloudRetail_GoogleRpcStatus_Details_Item *> *details;
  
  /**
   *  A developer-facing error message, which should be in English. Any
   *  user-facing error message should be localized and sent in the
   *  google.rpc.Status.details field, or localized by the client.
   */
  @property(nonatomic, copy, nullable) NSString *message;
  
  @end
  
  
  /**
   *  GTLRCloudRetail_GoogleRpcStatus_Details_Item
   *
   *  @note This class is documented as having more properties of any valid JSON
   *        type. Use @c -additionalJSONKeys and @c -additionalPropertyForName: to
   *        get the list of properties and then fetch them; or @c
   *        -additionalProperties to fetch them all at once.
   */
  @interface GTLRCloudRetail_GoogleRpcStatus_Details_Item : GTLRObject
  @end
  
  NS_ASSUME_NONNULL_END
  
  #pragma clang diagnostic pop
  