chromium/chrome/browser/apps/app_discovery_service/almanac_api/launcher_app.proto

// 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.

syntax = "proto2";

option optimize_for = LITE_RUNTIME;

package apps.proto;

import "chrome/browser/apps/almanac_api_client/proto/client_context.proto";

// This file is a mirror of the proto file maintained in the server code base at
// go/launcher-app-proto. Changes should be made by updating the server code
// base and then copying the result to Chromium.

message LauncherAppRequest {
  // Context information about the device making this request.
  optional ClientDeviceContext device_context = 1;

  // Context information about the user making this request.
  optional ClientUserContext user_context = 2;
}

message LauncherAppResponse {
  // The list of app groups to be used by the launcher.
  repeated AppGroup app_groups = 1;

  message AppGroup {
    // The unique identifier for the app group.
    optional string uuid = 1;

    // The name of the app group in the requested language.
    optional string name = 2;

    // Optional badging text to render next to the name in the requested
    // language.
    optional string badge_text = 5;

    // A set of icons for the app group in the requested language.
    repeated Icon icons = 3;

    // An action link for the app. This is typically a deeplink.
    optional string action_link = 4;
  }

  message Icon {
    // URL to query to get the icon.
    optional string url = 1;

    // Width of the icon in pixels.
    optional int32 width_in_pixels = 2;

    // Whether or not we have permission from the platform to mask the icon.
    optional bool is_masking_allowed = 3;
  }
}