syntax = “proto3”; package event_store.client.users; option java_package = “com.eventstore.dbclient.proto.users”;

service Users {

rpc Create (CreateReq) returns (CreateResp);
rpc Update (UpdateReq) returns (UpdateResp);
rpc Delete (DeleteReq) returns (DeleteResp);
rpc Disable (DisableReq) returns (DisableResp);
rpc Enable (EnableReq) returns (EnableResp);
rpc Details (DetailsReq) returns (stream DetailsResp);
rpc ChangePassword (ChangePasswordReq) returns (ChangePasswordResp);
rpc ResetPassword (ResetPasswordReq) returns (ResetPasswordResp);

}

message CreateReq {

Options options = 1;
message Options {
        string login_name = 1;
        string password = 2;
        string full_name = 3;
        repeated string groups = 4;
}

}

message CreateResp {

}

message UpdateReq {

Options options = 1;
message Options {
        string login_name = 1;
        string password = 2;
        string full_name = 3;
        repeated string groups = 4;
}

}

message UpdateResp {

}

message DeleteReq {

Options options = 1;
message Options {
        string login_name = 1;
}

}

message DeleteResp {

}

message EnableReq {

Options options = 1;
message Options {
        string login_name = 1;
}

}

message EnableResp {

}

message DisableReq {

Options options = 1;
message Options {
        string login_name = 1;
}

}

message DisableResp { }

message DetailsReq {

Options options = 1;
message Options {
        string login_name = 1;
}

}

message DetailsResp {

UserDetails user_details = 1;
message UserDetails {
        string login_name = 1;
        string full_name = 2;
        repeated string groups = 3;
        DateTime last_updated = 4;
        bool disabled = 5;

        message DateTime {
                int64 ticks_since_epoch = 1;
        }
}

}

message ChangePasswordReq {

Options options = 1;
message Options {
        string login_name = 1;
        string current_password = 2;
        string new_password = 3;
}

}

message ChangePasswordResp { }

message ResetPasswordReq {

Options options = 1;
message Options {
        string login_name = 1;
        string new_password = 2;
}

}

message ResetPasswordResp { }