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

// Keep in sync with corresponding messages in :
// http://google3/google/chrome/webstore/v2/resources.proto
// http://google3/google/chrome/webstore/v2/item_service.proto

syntax = "proto3";

package extensions;

option optimize_for = LITE_RUNTIME;

// A Chrome Web Store (CWS) item's Store Metadata resource. Each item only has
// one StoreMetadata resource.
message StoreMetadata {
  // Item store metadata resource name.
  // Format: items/{itemId}/storeMetadata
  string name = 1;

  // The item is currently published in CWS.
  bool is_live = 2;

  // The publish time of the most recent version of the item. This is also the
  // time displayed in the Chrome Web Store (CWS) item details page. The
  // timestamp is relative to an epoch at UTC midnight on January 1, 1970.
  int64 last_update_time_millis = 3;

  // The violation type for which the item is taken down from CWS.
  // Possible values are:
  //   none
  //   malware
  //   policy-violation
  //   minor-policy-violation
  string violation_type = 4;

  // Labels applied to this item by the Chrome Web Store (CWS) to provide
  // additional item information. Possible values are:
  //   unpublished-long-ago
  //   no-privacy-practice
  repeated string labels = 5;
}

message BatchGetStoreMetadatasRequest {
  // The parent resource.
  // Format: items/{item_id}
  // Callers must specify a - (the hyphen or dash character) as a wildcard
  // character. So, set parent="items/-".
  string parent = 1;

  // The names of the item store metadata to retrieve.
  // A maximum of 100 item store metadata can be retrieved in a batch.
  // Format: items/{item_id}/storeMetadata
  repeated string names = 2;
}

message BatchGetStoreMetadatasResponse {
  // The requested items’ store metadata. If an item is not found, it is not
  // included in the response.
  repeated StoreMetadata store_metadatas = 1;
}

// Request message for FetchItemSnippet.
message FetchItemSnippetRequest {
  // The name of the item to retrieve.
  // Format: items/{item_id}
  // If no resource name is provided or the format is incorrect, the API returns
  // error code INVALID_ARGUMENT.
  string name = 1;
}

// Response message for FetchItemSnippet.
// The localized title and summary are based on the language of the client
// making the API request. If no client language is available, the language
// falls back to the item’s primary language.
message FetchItemSnippetResponse {
  // Extension/item id.
  string item_id = 1;

  // Manifest string.
  string manifest = 2;

  // Localized title, which maps to the "name" field in the manifest.
  string title = 3;

  // Localized summary, which maps to the "description" field in the manifest.
  string summary = 4;

  // Logo uri.
  string logo_uri = 5;

  // Localized user count string.
  string user_count_string = 6;

  // User review rating count.
  int64 rating_count = 7;

  // Average user review rating.
  double average_rating = 8;

  // Localized user review rating count string.
  string rating_count_string = 9;

  // next tag: 10
}

// Request message for BatchFetchItemBlockStatusForEnterprise.
message BatchFetchItemBlockStatusForEnterpriseRequest {
  // The IDs of the items to retrieve. If no IDs are provided, the API returns
  // error code INVALID_ARGUMENT.
  repeated string item_ids = 1;

  // The encrypted DM token of the device.
  string dm_token = 2;

  // The client id unique to the device.
  string client_device_id = 3;

  // next tag: 4
}

// Response message for FetchItemBlockStatusForEnterprise.
message FetchItemBlockStatusForEnterpriseResponse {
  // Item id
  string item_id = 1;

  // Whether the item is blocked by CWS for the caller.
  bool blocked = 2;

  // The code for the block reason. This will be a short string (eg, "CATEGORY")
  // that can be used for logging or metrics. Only set if blocked is true.
  string block_code = 3;

  // next tag: 4
}

// Response message for BatchFetchItemBlockStatusForEnterprise.
message BatchFetchItemBlockStatusForEnterpriseResponse {
  // The responses for each item. The order of the responses is the same as the
  // order of the names in the request.
  repeated FetchItemBlockStatusForEnterpriseResponse responses = 1;

  // next tag: 2
}
