diff --git a/raystack/frontier/v1beta1/admin.proto b/raystack/frontier/v1beta1/admin.proto
index 2f255472..7f34c246 100644
--- a/raystack/frontier/v1beta1/admin.proto
+++ b/raystack/frontier/v1beta1/admin.proto
@@ -355,20 +355,18 @@ message DeleteRoleResponse {}
message PermissionRequestBody {
string name = 1 [
deprecated = true,
- (validate.rules).string = {
- min_len: 3,
- pattern: "^[A-Za-z0-9]+$"
- },
(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "The name of the permission. It should be unique across a Frontier instance and can contain only alphanumeric characters."}
];
// namespace should be in service/resource format
string namespace = 2 [
deprecated = true,
- (validate.rules).string.min_len = 3,
- (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "The namespace of the permission.The namespace should be in service/resource format.
*Example:*`app/guardian`"}
+ (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "The namespace of the permission. The namespace should be in service/resource format.
*Example:*`app/guardian`"}
];
google.protobuf.Struct metadata = 3 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "The metadata object for permissions that can hold key value pairs."}];
string title = 4 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {description: "The title can contain any UTF-8 character, used to provide a human-readable name for the permissions. Can also be left empty."}];
+
+ // key is composed of three parts, 'service.resource.verb'. Where 'service.resource' works as a namespace for the 'verb'.
+ // Use this instead of using name and namespace fields
string key = 5 [(grpc.gateway.protoc_gen_openapiv2.options.openapiv2_field) = {
description: "Permission path key is composed of three parts, 'service.resource.verb'. Where 'service.resource' works as a namespace for the 'verb'.",
example: "\"compute.instance.get\""