syntax = "proto3";
package chromite.api;

option go_package = "go.chromium.org/chromiumos/infra/proto/go/chromite/api";

import "chromite/api/build_api.proto";
import "chromiumos/common.proto";

message MarkStableRequest {
  // Required if not default.
  // The chroot where.
  chromiumos.Chroot chroot = 1;
  // Required.
  // The manifest branch being used.
  string tracking_branch = 2;
  // Required.
  // Portage package name for Android container.
  string package_name = 3;
  // Required.
  // Android branch to import from.
  string android_build_branch = 4;
  // Force set the android build id that will be used.
  string android_version = 5;
  // Android GTS branch to copy artifacts from.
  // Deprecated.
  string android_gts_build_branch = 6 [deprecated = true];
  // The set of relevant build targets. Used to clean old version and for a
  // emerge-able sanity check for the new version.
  // Recommended.
  repeated chromiumos.BuildTarget build_targets = 7;
}

enum MarkStableStatusType {
  // Unspecified
  MARK_STABLE_STATUS_UNSPECIFIED = 0;
  // Success
  MARK_STABLE_STATUS_SUCCESS = 1;
  // Pinned (at android_atom)
  MARK_STABLE_STATUS_PINNED = 2;
  // Early exit
  MARK_STABLE_STATUS_EARLY_EXIT = 3;
}

message MarkStableResponse {
  // Possible errors.
  MarkStableStatusType status = 1;
  // The new package atom.
  chromiumos.PackageInfo android_atom = 2;
}

message UnpinVersionRequest {
  // The chroot to use to execute the endpoint.
  chromiumos.Chroot chroot = 1;
}

message UnpinVersionResponse {
}

// Service for Android/ARC related functionality.
service AndroidService {
  option (service_options) = {
    module: "android",
    service_chroot_assert: INSIDE,
  };

  // The MarkStable method uprevs Android, verifies the newly revved package
  // can be emerged, and returns the new package info.
  rpc MarkStable(MarkStableRequest)
    returns (MarkStableResponse) {
    // TODO(crbug/904939): When we switch from the cbuildbot/commands.py hack,
    // we need to make this INSIDE.
    option (method_options) = {
      method_chroot_assert: OUTSIDE;
    };
  }

  // Unpin the Android package version.
  rpc UnpinVersion(UnpinVersionRequest)
    returns (UnpinVersionResponse) {
    option (method_options) = {
      method_chroot_assert: INSIDE;
    };
  }
}
