syntax = "proto3";

package coda.admin.v1;

option java_package = "coda.admin.v1";
option java_outer_classname = "TypesProto";

import "google/protobuf/timestamp.proto";
import "coda/common/v1/types.proto";

// Shared enums and messages for admin-api services.

enum TenantStatus {
  TENANT_STATUS_UNSPECIFIED = 0;
  TENANT_STATUS_ACTIVE = 1;
  TENANT_STATUS_SUSPENDED = 2;
  TENANT_STATUS_DEACTIVATED = 3;
}

enum TenantUserStatus {
  TENANT_USER_STATUS_UNSPECIFIED = 0;
  TENANT_USER_STATUS_ACTIVE = 1;
  TENANT_USER_STATUS_INVITED = 2;
  TENANT_USER_STATUS_SUSPENDED = 3;
  TENANT_USER_STATUS_DEACTIVATED = 4;
}

enum SuperAdminLevel {
  SUPER_ADMIN_LEVEL_UNSPECIFIED = 0;
  SUPER_ADMIN_LEVEL_FULL = 1;
  SUPER_ADMIN_LEVEL_READ_ONLY = 2;
  SUPER_ADMIN_LEVEL_SUPPORT = 3;
  SUPER_ADMIN_LEVEL_PRODUCT = 4;
  SUPER_ADMIN_LEVEL_ANALYTICS = 5;
}

message TenantInfo {
  string id = 1;
  string name = 2;
  string slug = 3;
  TenantStatus status = 4;
  string plan_id = 5;
  string data_residency = 6;
  string primary_jurisdiction = 7;
  bool is_test = 8;
  string logo_url = 9;
  string display_name = 10;
  google.protobuf.Timestamp created_at = 11;
  google.protobuf.Timestamp updated_at = 12;
}

message TenantUserInfo {
  string id = 1;
  string tenant_id = 2;
  string user_id = 3;
  TenantUserStatus status = 4;
  string department_id = 5;
  string user_jurisdiction = 6;
  string invited_by = 7;
  google.protobuf.Timestamp joined_at = 8;
  google.protobuf.Timestamp created_at = 9;
}

message SuperAdminInfo {
  string id = 1;
  string user_id = 2;
  SuperAdminLevel level = 3;
  string granted_by = 4;
  google.protobuf.Timestamp granted_at = 5;
}

