syntax = "proto3";

import "api_proto/common.proto";
import "google/protobuf/timestamp.proto";

option go_package = "gomodules.avm99963.com/twpt-server/api_proto";

message Feature {
  int32 id = 1;
  string codename = 2;
  enum Type {
    TYPE_UNKNOWN = 0;
    TYPE_EXPERIMENT = 1;
    TYPE_OPTION = 2;
    TYPE_DEPRECATED = 10;
  }
  Type type = 3;
}

message KillSwitch {
  int32 id = 1;
  Feature feature = 2;
  string min_version = 3;
  string max_version = 4;
  repeated Environment.Browser browsers = 5;
  bool active = 6;
}

message KillSwitchAuthorizedUser {
  int32 id = 1;
  string google_uid = 2;
  string email = 3;
  enum AccessLevel {
    ACCESS_LEVEL_NONE = 0;
    ACCESS_LEVEL_ACTIVATOR = 1; // The user may enable/disable kill switches.
    ACCESS_LEVEL_ADMIN = 2; // The user may perform any action.
  }
  AccessLevel access_level = 4;
}

message KillSwitchTransformation {
  KillSwitch kill_switch_from = 1;
  KillSwitch kill_switch_to = 2;
}

// Log entry which describes an action which has taken place.
message KillSwitchAuditLogEntry {
  // Timestamp in which the action was taken.
  google.protobuf.Timestamp timestamp = 1;

  // User who/which performed the action.
  KillSwitchAuthorizedUser user = 2;

  message KillSwitchEnabled {
    KillSwitchTransformation transformation = 1;
  }

  message KillSwitchDisabled {
    KillSwitchTransformation transformation = 1;
  }

  // Description of the action taken
  oneof description {
    KillSwitchEnabled kill_switch_enabled = 3;
    KillSwitchDisabled kill_switch_disabled = 4;
  }
}
