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.
  string android_gts_build_branch = 6;
  // 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;
    };
  }
}
