syntax = "proto3"; option java_multiple_files = true; option java_package = "com.fortify.grpc.token"; option java_outer_classname = "TokenServiceProto"; package token; service TokenService { rpc GenerateToken (TokenGenerationRequest) returns (TokenGenerationResponse) {} rpc ValidateToken (TokenValidationRequest) returns (TokenValidationResponse) {} rpc RevokeToken (RevokeTokenRequest) returns (RevokeTokenResponse) {} rpc ListTokens (ListTokensRequest) returns (ListTokensResponse) {} rpc ListTokensByDeveloper (ListTokensByDeveloperRequest) returns (ListTokensResponse) {} rpc DeleteToken (DeleteTokenRequest) returns (DeleteTokenResponse) {} rpc ValidateUserToken (ValidateUserTokenRequest) returns (TokenValidationResponse) {} } // Token generation - email is now developer's email message TokenGenerationRequest { string email = 1; // CHANGED: Now developer's email (who will use the token) string custom_token_name = 2; string request_signature = 3; string message = 4; // format: "developerEmail;tokenName;startDate;endDate;timestamp" string tenant_name = 5; string end_date = 6; // Optional } message TokenGenerationResponse { string token = 1; string token_name = 2; string start_date = 3; string end_date = 4; int64 expiry_date = 5; bool success = 6; string error_message = 7; string developer_email = 8; // NEW: Include developer email in response } // Token validation - no email needed, customer admin identified via signature message TokenValidationRequest { string token = 1; string tenant_name = 2; string request_signature = 3; string message = 4; // format: "token;tenantName;timestamp" } message ValidateUserTokenRequest { string token = 1; string tenant_name = 2; } message TokenValidationResponse { bool valid = 1; string error_message = 2; } // Token revocation - no email needed, customer admin identified via signature message RevokeTokenRequest { string token = 1; string email = 2; string tenant_name = 3; string request_signature = 4; string message = 5; // format: "token;email;tenantName;timestamp" } message RevokeTokenResponse { bool success = 1; string error_message = 2; } // List all tokens for tenant - customer admin identified via signature message ListTokensRequest { string email = 1; string tenant_name = 2; string request_signature = 3; string message = 4; // format: "email;tenantName;timestamp" int32 page_size = 5; string page_token = 6; bool ignorePagination = 7; } message ListTokensByDeveloperRequest { string tenant_name = 1; string developer_email = 2; string request_signature = 3; string message = 4; // format: "tenantName;developerEmail;timestamp" int32 page_size = 5; string page_token = 6; bool ignorePagination = 7; } message TokenInfo { string token_name = 1; string start_date = 2; string end_date = 3; int64 expiry_date = 4; bool revoked = 5; string developer_email = 6; // NEW: Include developer email } message ListTokensResponse { repeated TokenInfo tokens = 1; string next_page_token = 2; bool success = 3; string error_message = 4; } // Delete token - no email needed, customer admin identified via signature message DeleteTokenRequest { string token = 1; string email = 2; string tenant_name = 3; string request_signature = 4; string message = 5; // format: "token;email;tenantName;timestamp" } message DeleteTokenResponse { bool success = 1; string error_message = 2; }