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

syntax = "proto3";
package explore_sites;

option optimize_for = LITE_RUNTIME;

// Represents the entire Explore Sites catalog, containing multiple categories
// each with a list of sites.
message Catalog {
  // List of categories in priority order.  The first N will be shown directly
  // on the NTP.
  repeated Category categories = 1;
}

// A logical grouping of sites, with a title and an icon.
message Category {
  // The canonical types of category.
  enum CategoryType {
    DEFAULT = 0;
    SOCIAL = 1;
    ENTERTAINMENT = 2;
    SPORT = 3;
    NEWS = 4;
    SHOPPING = 5;
    REFERENCE = 6;
    BANKING = 7;
    GOVERNMENT = 8;
    TRAVEL = 9;
    EDUCATION = 10;
    JOBS = 11;
    APPS_GAMES = 12;
    FAVORITE = 13;
    GOOGLE = 14;
    FOOD = 15;
    HEALTH = 16;
    BOOKS = 17;
    TECHNOLOGY = 18;
    SCIENCE = 19;
  }

  // Used to identify the category and as a hash tag within the Explore Sites
  // page to scroll directly to this category.
  CategoryType type = 1;

  // Displayed beneath each title icon on the NTP as well as on the Explore
  // Sites page. Localized to the primary language specified in the
  // GetCatalogRequest.
  string localized_title = 2;

  // The icon that represents this category's sites.
  // Binary encoding: WebP
  // |icon| may be omitted for certain API requests.
  bytes icon = 3;

  // List of sites within the category in priority order.
  // |sites| may be omitted for certain API requests.
  repeated Site sites = 4;
}

// A single site that can be clicked on and navigated to from the Explore Sites
// page.
message Site {
  // The url of the site that will be shown on click.
  string site_url = 1;

  // The icon of the site that can be displayed on the Explore Sites page.
  // Binary encoding: WebP
  bytes icon = 2;

  // The title of the page that will be displayed near the page icon. This title
  // will be in the language presented by the site, not localized to the user's
  // language preferences.
  string title = 3;
}

message GetCatalogRequest {
  reserved 1;

  // The country code for the catalog that was returned.
  string country_code = 2;

  // The latest version token the client currently has cached as received in
  // GetCatalogResponse.
  string version_token = 3;
}

message GetCatalogResponse {
  reserved 2;

  // Catalog of categories and sites that are appropriate for the client. Will
  // be empty if the client sends a request with the latest timestamp.
  Catalog catalog = 1;

  // The country code for the catalog that was returned.
  string country_code = 3;

  // The version token for the latest ExploreSites Catalog. This is a
  // server-generated opaque string.
  string version_token = 4;
}
