syntax = "proto3";

package otp;

option go_package = "./proto;otp";

service Otp {
	rpc Generate(GenerateRequest) returns (GenerateResponse) {}
	rpc Validate(ValidateRequest) returns (ValidateResponse) {}
}

// Generate an OTP (one time pass) code
message GenerateRequest {
	// unique id, email or user to generate an OTP for
	string id = 1;
	// number of characters (default: 6)
	int64 size = 2;
	// expiration in seconds (default: 60)
	int64 expiry = 3;
}

message GenerateResponse {
	// one time pass code
	string code = 1;
}

// Validate the OTP code
message ValidateRequest {
	// unique id, email or user for which the code was generated
	string id = 1;
	// one time pass code to validate
	string code = 2;
}

message ValidateResponse {
	// returns true if the code is valid for the ID
	bool success = 1;
}
