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;
  // The manifest branch being used.
  // Deprecated since R90.
  string tracking_branch = 2 [deprecated = true];
  // 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;
  // Asks the uprev script to skip commiting changes to git when it's not
  // required, for example in CQ builders.
  // Added in R90.
  bool skip_commit = 8;
}

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.  Added in R76.
  rpc UnpinVersion(UnpinVersionRequest)
    returns (UnpinVersionResponse) {
    option (method_options) = {
      method_chroot_assert: INSIDE;
    };
  }
}
