// Custom option defs must be proto2 syntax.
syntax = "proto2";

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

import "google/protobuf/descriptor.proto";

// Build API custom Service and Method options.

// Config to allow chroot assertions to be made via service/method options.
enum ChrootAssertion {
  NO_ASSERTION = 0;
  INSIDE = 1;
  OUTSIDE = 2;
}

// Allows setting services or endpoints to invisible in the methods listing.
// Services/endpoints that are hidden can still be called, they just won't
// appear in MethodService/Get.
enum ListVisibility {
  LV_NOT_SPECIFIED = 0;
  LV_VISIBLE = 1;
  LV_HIDDEN = 2;
}

// Custom Service options.
message BuildApiServiceOptions {
  // The name of the controller module implementing the service.
  required string module = 1;
  // Assert any methods in the service are run inside/outside the chroot when
  // specified, unless overridden by the method config.
  optional ChrootAssertion service_chroot_assert = 2;
  // Set to LV_INVISIBLE to hide the entire service from the methods listing.
  optional ListVisibility service_visibility = 3;
}

// Custom Method options.
message BuildApiMethodOptions {
  // The name of the function implementing the method if different than the
  // method name defined in the .proto.
  optional string implementation_name = 1;
  // Assert the method is run inside/outside the chroot when specified,
  // overriding the service config when set.
  optional ChrootAssertion method_chroot_assert = 2;
  // Set to LV_INVISIBLE to hide the entire service from the methods listing.
  optional ListVisibility method_visibility = 3;
}

extend google.protobuf.ServiceOptions {
  optional BuildApiServiceOptions service_options = 55000;
}

extend google.protobuf.MethodOptions {
  optional BuildApiMethodOptions method_options = 55000;
}
