chromium/components/optimization_guide/proto/features/product_specifications.proto

// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

syntax = "proto3";

package optimization_guide.proto;

import "components/optimization_guide/proto/features/common_quality_data.proto";

option optimize_for = LITE_RUNTIME;
option java_package = "org.chromium.components.optimization_guide.features.proto";

option java_outer_classname = "ProductSpecificationsProto";

// DO NOT EDIT THIS FILE DIRECTLY!
//
// This file is generated in g3 and then synced to Chrome. Instead, please
// refer to http://go/chrome-intelligence-feature-protos (Google-internal link),
// and then changes will be synced with Chrome automatically.

message ProductSpecificationsLoggingData {
  ProductSpecificationsQuality quality = 3;
}

// Protos for the AiData representing the Product Specifications inference flow.
// Please note that this feature doesn't not use MES so there is no proto for
// request and response. Part of the model request and response are stored in
// the quality proto by Chrome client.

// Data logged for each Product Specifications table by client.
// Next ID: 4
message ProductSpecificationsQuality {
  // The identifiers of the products that user is requesting product
  // specifications for.
  repeated ProductIdentifier product_identifiers = 1;

  // The product specifications data returned from server that is used to render
  // the product specifications table.
  ProductSpecificationData product_specification_data = 2;

  // Whether the user thumbs upped or downed the Product Specifications table.
  UserFeedback user_feedback = 3;
}

// Information needed to identify a product.
// Next ID: 3
message ProductIdentifier {
  // The GPC ID of the product.
  uint64 gpc_id = 1;

  // The URL of the product.
  string product_url = 2;
}

// Next ID: 3
message ProductSpecificationData {
  // List of specification section titles and their associated keys.
  repeated ProductSpecificationSection product_specification_sections = 1;

  // List of ProductSpecifications.
  repeated ProductSpecification product_specifications = 2;
}

// Next ID: 3
message ProductSpecificationSection {
  // Key identifying the section.
  string key = 1;

  // Title of the section.
  string title = 2;
}

// Product metadata and per-product specifications.
// Next ID: 6
message ProductSpecification {
  // Available identifier of the product specification.
  ProductSpecificationIdentifiers identifiers = 1;

  // Title of the product.
  string title = 2;

  // Image URL for the product thumbnail.
  string image_url = 3;

  // List of product specification values.
  repeated ProductSpecificationValue product_specification_values = 4;

  // Generated summary description for the product.
  repeated DescriptionText summary_description = 5;
}

// Can contain any available identifiers for the product specification.
// Next ID: 3
message ProductSpecificationIdentifiers {
  // Global Product Cluster ID.
  uint64 gpc_id = 1;

  // KG entity identifier (mid).
  string mid = 2;
}

// Product specifications grouped into a Key-Factor with an optional summary.
// Next ID: 4
message ProductSpecificationValue {
  // Key identifying the associated section.
  string key = 1;

  // List of specification descriptions. Preferred over "descriptions".
  repeated ProductSpecificationDescription specification_descriptions = 2;

  // Summary description across entire Key-Factor. Preferred over "summary".
  repeated DescriptionText summary_description = 3;
}

// Descriptive text and associated metadata for a product specification value.
// Next ID: 5
message ProductSpecificationDescription {
  repeated Option options = 1;

  // Optional associated label or title for the text.
  string label = 2;

  // Optional alternative text with additional context for this description.
  string alternative_text = 3;

  // Associated attribute ID of the descriptive text.
  string attribute_id = 4;

  // Products can have several options available for an attribute.
  // Examples are: Color, Installed Memory, Drive Capacity, Screen Size, etc.
  message Option {
    // Description texts for this product option. Multiple texts may be present.
    // Substrings may have different citation URLs but these are typically 1:1.
    repeated DescriptionText description = 1;
  }
}

// Next ID: 3
message DescriptionText {
  // Text to display.
  string text = 1;

  // Optional resource URLs for additional contexts related to this text.
  // Citation URLs are one example.
  repeated ReferenceUrl urls = 2;

  message ReferenceUrl {
    // URL of the reference, source, or citation.
    string url = 1;

    // Optional title text associated with the URL.
    string title = 2;

    // Optional favicon URL.
    string favicon_url = 3;

    // Optional thumbmnail image URL.
    string thumbail_image_url = 4;
  }
}