syntax = "proto3"; package authenticationservice; option go_package = "grpc"; service AuthenticationService { rpc Login (LoginRequest) returns (LoginResponse); rpc Logout (Empty) returns (Empty); rpc VerifyToken (VerifyTokenRequest) returns (VerifyTokenResponse); rpc Me (Empty) returns (MeResponse); rpc RequestPasswordReset (RequestPasswordResetRequest) returns (Empty); rpc RedeemPasswordReset (RedeemPasswordResetRequest) returns (Empty); rpc ListTokens (Empty) returns (ListTokensResponse); rpc DeleteToken (DeleteTokenRequest) returns (Empty); } message LoginRequest { Credentials credentials = 1; } message LoginResponse { Token token = 1; } message VerifyTokenRequest { repeated string rights = 1; } message VerifyTokenResponse { bool valid = 1; } message MeResponse { User user = 1; } message RequestPasswordResetRequest { string userName = 1; } message RedeemPasswordResetRequest { string userName = 1; string resetCode = 2; string password = 3; string passwordVerify = 4; } message ListTokensResponse { repeated OpaqueToken tokens = 1; } message DeleteTokenRequest { string opaqueId = 1; } message Credentials { string username = 1; string companyCode = 2; string password = 3; } message User { int64 userId = 1; string userName = 2; Company company = 3; repeated Role roles = 4; } message Company { int64 id = 1; string name = 2; string code = 3; } message Role { string name = 1; repeated string rights = 2; } message Token { string secret = 1; } message OpaqueToken { string opaqueId = 1; string userAgent = 2; } message Empty {}