All Downloads are FREE. Search and download functionalities are using the official Maven repository.

yamcs.protobuf.iam.iam.proto Maven / Gradle / Ivy

There is a newer version: 5.10.1
Show newest version
syntax = "proto2";

package yamcs.protobuf.iam;

option java_package = "org.yamcs.protobuf";
option java_outer_classname = "IamProto";
option java_multiple_files = true;

import "yamcs/api/annotations.proto";
import "google/protobuf/timestamp.proto";
import "google/protobuf/empty.proto";

// Handles incoming requests related to Identity and Access Management (IAM)
service IamApi {

  // List privileges
  rpc ListPrivileges(google.protobuf.Empty) returns (ListPrivilegesResponse) {
    option (yamcs.api.route) = {
      get: "/api/privileges"
    };
  }
  
  // List roles
  rpc ListRoles(google.protobuf.Empty) returns (ListRolesResponse) {
    option (yamcs.api.route) = {
      get: "/api/roles"
    };
  }
  
  // Get a role
  rpc GetRole(GetRoleRequest) returns (RoleInfo) {
    option (yamcs.api.route) = {
      get: "/api/roles/{name}"
    };
  }
  
  // Delete a role assignment
  rpc DeleteRoleAssignment(DeleteRoleAssignmentRequest) returns (google.protobuf.Empty) {
    option (yamcs.api.route) = {
      delete: "/api/users/{name}/roles/{role}"
    };
  }

  // List users
  rpc ListUsers(google.protobuf.Empty) returns (ListUsersResponse) {
    option (yamcs.api.route) = {
      get: "/api/users"
    };
  }

  // Get a user
  rpc GetUser(GetUserRequest) returns (UserInfo) {
    option (yamcs.api.route) = {
      get: "/api/users/{name}"
    };
  }
  
  // Create a user
  rpc CreateUser(CreateUserRequest) returns (UserInfo) {
    option (yamcs.api.route) = {
      post: "/api/users"
      body: "*"
    };
  }
  
  // Update a user
  rpc UpdateUser(UpdateUserRequest) returns (UserInfo) {
    option (yamcs.api.route) = {
      patch: "/api/users/{name}"
      body: "*"
    };
  }
  
  // Get own user
  rpc GetOwnUser(google.protobuf.Empty) returns (UserInfo) {
    option (yamcs.api.route) = {
      get: "/api/user"
    };
  }
  
  // Delete an external identity
  rpc DeleteIdentity(DeleteIdentityRequest) returns (google.protobuf.Empty) {
    option (yamcs.api.route) = {
      delete: "/api/users/{name}/identities/{provider}"
    };
  }
  
  // List groups
  rpc ListGroups(google.protobuf.Empty) returns (ListGroupsResponse) {
    option (yamcs.api.route) = {
      get: "/api/groups"
    };
  }
  
  // Get a group
  rpc GetGroup(GetGroupRequest) returns (GroupInfo) {
    option (yamcs.api.route) = {
      get: "/api/groups/{name}"
    };
  }
  
  // Create a group
  rpc CreateGroup(CreateGroupRequest) returns (GroupInfo) {
    option (yamcs.api.route) = {
      post: "/api/groups"
      body: "*"
    };
  }
  
  // Update a group
  rpc UpdateGroup(UpdateGroupRequest) returns (GroupInfo) {
    option (yamcs.api.route) = {
      patch: "/api/groups/{name}"
      body: "*"
    };
  }
  
  // Delete a group
  rpc DeleteGroup(DeleteGroupRequest) returns (GroupInfo) {
    option (yamcs.api.route) = {
      delete: "/api/groups/{name}"
    };
  }

  // List service accounts
  rpc ListServiceAccounts(google.protobuf.Empty) returns (ListServiceAccountsResponse) {
    option (yamcs.api.route) = {
      get: "/api/service-accounts"
    };
  }
  
  // Get a service account
  rpc GetServiceAccount(GetServiceAccountRequest) returns (ServiceAccountInfo) {
    option (yamcs.api.route) = {
      get: "/api/service-accounts/{name}"
    };
  }
  
  // Delete a service account
  rpc DeleteServiceAccount(DeleteServiceAccountRequest) returns (google.protobuf.Empty) {
    option (yamcs.api.route) = {
      delete: "/api/service-accounts/{name}"
    };
  }
  
  // Create a service account
  rpc CreateServiceAccount(CreateServiceAccountRequest) returns (CreateServiceAccountResponse) {
    option (yamcs.api.route) = {
      post: "/api/service-accounts"
      body: "*"
    };
  }
}

message ListUsersResponse {
  repeated UserInfo users = 1;
}

message ListGroupsResponse {
  repeated GroupInfo groups = 1;
}

message CreateGroupRequest {
  optional string name = 1;
  optional string description = 2;
  repeated string users = 3;
  repeated string serviceAccounts = 4;
}

message GetGroupRequest {
  optional string name  = 1;
}

message DeleteGroupRequest {
  optional string name  = 1;
}

message UpdateGroupRequest {
  message MemberInfo {
    repeated string users = 1;
    repeated string serviceAccounts = 2;
  }
  optional string name = 1;
  optional string newName = 2;
  optional string description = 3;
  optional MemberInfo memberInfo = 4;
}

message ListServiceAccountsResponse {
  repeated ServiceAccountInfo serviceAccounts = 1;
}

message GetServiceAccountRequest {
  optional string name  = 1;
}

message CreateServiceAccountRequest {
  optional string name = 1;
}

message CreateServiceAccountResponse {
  optional string name = 1;
  optional string applicationId = 2;
  optional string applicationSecret = 3;
}

message DeleteServiceAccountRequest {
  optional string name = 1;
}

message GetUserRequest {
  optional string name  = 1;
}

message CreateUserRequest {
  optional string name = 1;
  optional string displayName = 2;
  optional string email = 3;
  optional string password = 4;
}

message UpdateUserRequest {
  optional string name = 1;
  optional string displayName = 2;
  optional string email = 3;
  optional bool active = 4;
  optional bool superuser = 5;
  optional string password = 6;
  optional RoleAssignment roleAssignment = 7;
}

message RoleAssignment {
  repeated string roles = 1;
}

message UserInfo {
  optional string login = 1 [deprecated=true];
  optional string name = 17;
  optional string displayName = 18;
  optional string email = 19;
  optional bool active = 16;
  optional bool superuser = 13;
  optional UserInfo createdBy = 20;
  optional google.protobuf.Timestamp creationTime = 14;
  optional google.protobuf.Timestamp confirmationTime = 21;
  optional google.protobuf.Timestamp lastLoginTime = 15;
  repeated string systemPrivilege = 11;
  repeated ObjectPrivilegeInfo objectPrivilege = 12;
  repeated GroupInfo groups = 22;
  repeated ExternalIdentityInfo identities = 23;
  repeated RoleInfo roles = 24;
}

message DeleteIdentityRequest {
  optional string name = 1;
  optional string provider = 2;
}

message ExternalIdentityInfo {
  optional string identity = 1;
  optional string provider = 2;
}

message DeleteRoleAssignmentRequest {
  optional string name = 1;
  optional string role = 2;
}

message GroupInfo {
  optional string name = 1;
  optional string description = 2;
  repeated UserInfo users = 3;
  repeated ServiceAccountInfo serviceAccounts = 4;
}

message ServiceAccountInfo {
  optional string name = 1;
  optional string displayName = 2;
  optional bool active = 3;
  optional UserInfo createdBy = 4;
  optional google.protobuf.Timestamp creationTime = 5;
  optional google.protobuf.Timestamp confirmationTime = 6;
  optional google.protobuf.Timestamp lastLoginTime = 7;
}

message ObjectPrivilegeInfo {
  optional string type = 1;
  repeated string object = 2;
}

message ListPrivilegesResponse {
  repeated string systemPrivileges = 1; 
}

message GetRoleRequest {
  optional string name  = 1;
}

message ListRolesResponse {
  repeated RoleInfo roles = 1;
}

message RoleInfo {
  optional string name = 1;
  optional string description = 2;
  repeated string systemPrivileges = 3;
  repeated ObjectPrivilegeInfo objectPrivileges = 4;
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy