diff --git a/cmd/migrate.go b/cmd/migrate.go index b0f95003ff..45dd4dfce6 100644 --- a/cmd/migrate.go +++ b/cmd/migrate.go @@ -31,6 +31,7 @@ var ( fmt.Print("migration down applied successfully") }, } + migrateUpCmd = &cobra.Command{ Use: "up", Short: "Run database migrations up to the latest version", @@ -47,6 +48,25 @@ var ( fmt.Print("migration up applied: ", slog.Any("versions up", count)) }, } + + migrateStatusCmd = &cobra.Command{ + Use: "status", + Short: "Show the status of the database migrations", + Run: func(cmd *cobra.Command, args []string) { + dbClient, err := migrateDbClient() + if err != nil { + panic(fmt.Errorf("could not load config: %w", err)) + } + + status, err := dbClient.MigrationStatus(cmd.Context()) + if err != nil { + panic(fmt.Errorf("migration status failed: %w", err)) + } + for _, s := range status { + slog.Info("migration", slog.String("state", string(s.State)), slog.String("source", s.Source.Path), slog.String("applied_on", s.AppliedAt.String())) + } + }, + } ) func migrateDbClient() (*db.Client, error) { @@ -68,5 +88,6 @@ func migrateDbClient() (*db.Client, error) { func init() { migrateCmd.AddCommand(migrateDownCmd) migrateCmd.AddCommand(migrateUpCmd) + migrateCmd.AddCommand(migrateStatusCmd) rootCmd.AddCommand(migrateCmd) } diff --git a/docs/grpc/index.html b/docs/grpc/index.html index 06bea7f20b..62fc54b61b 100644 --- a/docs/grpc/index.html +++ b/docs/grpc/index.html @@ -270,6 +270,10 @@
optional short description
optional long description
optional short description
optional long description
optional labels
| Name | Number | Description |
| METADATA_UPDATE_ENUM_UNSPECIFIED | +0 | +unspecified update type |
+
| METADATA_UPDATE_ENUM_EXTEND | +1 | +only update the fields that are provided |
+
| METADATA_UPDATE_ENUM_REPLACE | +2 | +replace the entire metadata with the provided metadata |
+
Required
Common metadata
| Field | Type | Label | Description | ||
| metadata | -common.MetadataMutable | -- | Optional metadata for the attribute definition |
- ||
| uri | -string | -- | Address of a KAS instance |
- ||
| public_key | -PublicKey | +common.Metadata | - |
|
+ Common metadata |
id | string | + | Required |
+
+
+
| uri | +string | +
|
|||
| key_access_server | -KeyAccessServerCreateUpdate | +public_key | +PublicKey | ++ |
|
+
| metadata | +common.MetadataMutable | ++ | Common metadata |
+ ||
| metadata_update_behavior | +common.MetadataUpdateEnum |
|
ListKeyAccessServers | ListKeyAccessServersRequest | ListKeyAccessServersResponse | -Request Examples: -{} - -Response Examples: -{ -"key_access_servers": [ -{ -"id": "71eae02f-6837-4980-8a2c-70abf6b68732", -"metadata": { -"labels": [], -"created_at": { -"seconds": "1705971719", -"nanos": 534029000 -}, -"updated_at": { -"seconds": "1705971719", -"nanos": 534029000 -}, -"description": "test kas instance" -}, -"uri": "kas2", -"public_key": { -"remote": "https://platform.virtru.com/kas1" -} -}, -{ -"id": "cad1fc87-1193-456b-a217-d5cdae1fa67a", -"metadata": { -"labels": [], -"created_at": { -"seconds": "1705971990", -"nanos": 303386000 -}, -"updated_at": { -"seconds": "1705971990", -"nanos": 303386000 -}, -"description": "test kas instance" -}, -"uri": "kas3", -"public_key": { -"local": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ6ekNDQVhXZ0F3SUJBZ0lVT1J1VjNhdlU5QUU2enNCNlp4eWxsSHBpNWQ0d0NnWUlLb1pJemowRUF3SXcKUFRFTE1Ba0dBMVVFQmhNQ2RYTXhDekFKQmdOVkJBZ01BbU4wTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NalF3TVRBeU1UWTFOalUyV2hjTk1qVXdNVEF4TVRZMU5qVTJXakE5Ck1Rc3dDUVlEVlFRR0V3SjFjekVMTUFrR0ExVUVDQXdDWTNReElUQWZCZ05WQkFvTUdFbHVkR1Z5Ym1WMElGZHAKWkdkcGRITWdVSFI1SUV4MFpEQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMVjlmQ0pIRC9rYwpyWHJVSFF3QVp4ME1jMGRQdkxqc0ovb2pFdE1NbjBST2RlT3g4eWd4Z2NRVEZGQXh5Q3RCdWFkaEFkbS9pVkh0CjhnMkVNejVkTzNXalV6QlJNQjBHQTFVZERnUVdCQlFZTmt1aytKSXVSV3luK2JFOHNCaFJ3MjdPVlRBZkJnTlYKSFNNRUdEQVdnQlFZTmt1aytKSXVSV3luK2JFOHNCaFJ3MjdPVlRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvRwpDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ0FCMmppWWU4QVk2TUo0QURQU1FHRTQ3K2Eza1dGTGNHc0pob1pieHRnClV3SWdjZklJdVBmaDRmYmN2OGNUaTJCbEkzazdzV1B1QW1JRlZyaUkyZDNVeDVRPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" -} -} -] -} |
+
| GetKeyAccessServer | GetKeyAccessServerRequest | GetKeyAccessServerResponse | -Request Examples: -{ -"id": "71eae02f-6837-4980-8a2c-70abf6b68732" -} - -Response Examples: -{ -"key_access_server": { -"id": "71eae02f-6837-4980-8a2c-70abf6b68732", -"metadata": { -"labels": [], -"created_at": { -"seconds": "1705971719", -"nanos": 534029000 -}, -"updated_at": { -"seconds": "1705971719", -"nanos": 534029000 -}, -"description": "test kas instance" -}, -"uri": "kas2", -"public_key": { -"remote": "https://platform.virtru.com/kas1" -} -} -} |
+ ||
| CreateKeyAccessServer | CreateKeyAccessServerRequest | CreateKeyAccessServerResponse | -Request Examples: -{ -"key_access_server": { -"uri": "kas2", -"public_key": { -"remote": "https://platform.virtru.com/kas1" -} -} -} - -Response Examples: -{ -"key_access_server": { -"id": "71eae02f-6837-4980-8a2c-70abf6b68732", -"metadata": { -"labels": [], -"created_at": { -"seconds": "1705971719", -"nanos": 534029000 -}, -"updated_at": { -"seconds": "1705971719", -"nanos": 534029000 -}, -"description": "test kas instance" -}, -"uri": "kas2", -"public_key": { -"remote": "https://platform.virtru.com/kas1" -} -} -} |
+ ||
| UpdateKeyAccessServer | UpdateKeyAccessServerRequest | UpdateKeyAccessServerResponse | -Request Examples: -{ -"id": "71eae02f-6837-4980-8a2c-70abf6b68732", -"key_access_server": { -"uri": "kas2", -"public_key": { -"remote": "https://platform.virtru.com/kas1" -} -} -} - -Response Examples: -{ -"key_access_server": { -"id": "71eae02f-6837-4980-8a2c-70abf6b68732", -"metadata": { -"labels": [], -"created_at": { -"seconds": "1705971719", -"nanos": 534029000 -}, -"updated_at": { -"seconds": "1705971719", -"nanos": 534029000 -}, -"description": "test kas instance" -}, -"uri": "kas2", -"public_key": { -"remote": "https://platform.virtru.com/kas1" -} -} -} |
+ ||
| DeleteKeyAccessServer | DeleteKeyAccessServerRequest | DeleteKeyAccessServerResponse | -Request Examples: -{ -"id": "71eae02f-6837-4980-8a2c-70abf6b68732" -} - -Response Examples: -{ -"key_access_server": { -"id": "71eae02f-6837-4980-8a2c-70abf6b68732", -"metadata": { -"labels": [], -"created_at": { -"seconds": "1705971719", -"nanos": 534029000 -}, -"updated_at": { -"seconds": "1705971719", -"nanos": 534029000 -}, -"description": "test kas instance" -}, -"uri": "kas2", -"public_key": { -"remote": "https://platform.virtru.com/kas1" -} -} -} |
+ CreateKeyAccessServer | POST | /key-access-servers | -key_access_server | +* | @@ -2486,7 +2326,7 @@UpdateKeyAccessServer | PUT | /key-access-servers/{id} | -key_access_server | +* | @@ -2526,7 +2366,14 @@name | string | - |
|
+ Required |
+
+
+
| metadata | +common.MetadataMutable | ++ | Optional |
active by default until explicitly deactivated |
+ |
| metadata | +common.Metadata | ++ |
|
+
Required
Optional
Request: -grpcurl -plaintext -d '{"id": "namespace-id"}' localhost:9000 policy.namespaces.NamespaceService/GetNamespace -Response: -{ -"namespace": { -"id": "namespace-id", -"name": "namespace-name", -"active": true -} -}
NOTE: ACTIVE state by default, INACTIVE or ANY when specified -Request: -grpcurl -plaintext localhost:9000 policy.namespaces.NamespaceService/ListNamespaces -Response: -{ -"namespaces": [ -{ -"id": "namespace-id", -"name": "namespace-name", -"active": true -} -] -}
Request: -grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 policy.namespaces.NamespaceService/CreateNamespace -Response: -{ "namespace": { "id": "namespace-id", "active": true } }
Optional metadata for the attribute definition
namespace of the attribute
active by default until explicitly deactivated
Common metadata
Optional metadata for the attribute definition
namespace of the attribute
attribute name
attribute rule enum
optional
Required
| Field | Type | Label | Description | ||
| attribute | -AttributeCreateUpdate | +rule | +AttributeRuleTypeEnum |
|
|
| metadata | +common.MetadataMutable | ++ | Optional |
+
Required
Optional
Common metadata
Required
Optional
Optional
Common metadata
active by default until explicitly deactivated
| Field | Type | Label | Description | |||
| metadata | -common.MetadataMutable | -- |
|
- |||
| value | -string | +common.Metadata | - |
|
- ||
| members | -string | -repeated | -list of attribute values that this value is related to (attribute group) |
+ Common metadata |
ListAttributes | ListAttributesRequest | ListAttributesResponse | -NOTE: ACTIVE state by default, INACTIVE or ANY when specified -Request: -grpcurl -plaintext localhost:9000 policy.attributes.AttributesService/ListAttributes -OR (for inactive) -grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 policy.attributes.AttributesService/ListAttributes -Response: -{ -"attributes": [ -{ -"id": "attribute_id", -"metadata": { -"created_at": "2021-01-01T00:00:00Z", -"updated_at": "2021-01-01T00:00:00Z" -}, -"namespace": { -"id": "namespace_id", -"name": "namespace_name" -}, -"name": "attribute_name", -"rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", -"values": [ -{ -"id": "value_id", -"metadata": { -"created_at": "2021-01-01T00:00:00Z", -"updated_at": "2021-01-01T00:00:00Z" -}, -"attribute_id": "attribute_id", -"value": "value", -"members": ["value_id"], -"grants": [ -{ -"id": "key_access_server_id", -"metadata": { -"created_at": "2021-01-01T00:00:00Z", -"updated_at": "2021-01-01T00:00:00Z" -}, -"name": "key_access_server_name", -"description": "key_access_server_description", -} -], -} -], -"grants": [ -{ -"id": "key_access_server_id", -"metadata": { -"created_at": "2021-01-01T00:00:00Z", -"updated_at": "2021-01-01T00:00:00Z" -}, -"name": "key_access_server_name", -"description": "key_access_server_description", -} -], -"active": true -} -] -} |
+ --------------------------------------* +Attribute RPCs +--------------------------------------- |
| ListAttributeValues | ListAttributeValuesRequest | ListAttributeValuesResponse | -List Values - -Request: -NOTE: ACTIVE state by default, INACTIVE or ANY when specified -grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 policy.attributes.AttributesService/ListAttributes -Response: -{ -"attributes": [ -{ -"id": "attribute_id", -"metadata": { -"createdAt": "2024-02-14T20:24:23.057404Z", -"updatedAt": "2024-02-14T20:24:23.057404Z" -}, -"namespace": { -"id": "namespace_id", -"name": "namespace_name" -}, -"name": "attribute_name", -"rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", -"values": [ -{ -... VALUES ... -} -], -"grants": [ -{ -... GRANTS ... -} -], -"active": true -} -] -} |
+ |||
| CreateAttribute | CreateAttributeRequest | CreateAttributeResponse | -Create Attribute -Request: -grpcurl -plaintext -d '{"attribute": {"namespace_id": "namespace_id", "name": "attribute_name", "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"}}' localhost:9000 policy.attributes.AttributesService/CreateAttribute -Response -{ -"attribute": { -"id": "e06f067b-d158-44bc-a814-1aa3f968dcf0", -"metadata": { -"createdAt": "2024-02-14T20:24:23.057404Z", -"updatedAt": "2024-02-14T20:24:23.057404Z" -}, -"namespace": { -"id": "namespace_id" -}, -"name": "attribute_name", -"rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", -"active": true -} -} |
+ |||
| GetAttributeValue | GetAttributeValueRequest | GetAttributeValueResponse | -Attribute Value * |
+ --------------------------------------* +Value RPCs +--------------------------------------- |
||
| CreateAttributeValue | CreateAttributeValueRequest | CreateAttributeValueResponse | -Create Attribute Value -Example: - grpcurl -plaintext -d '{"attribute_id": "attribute_id", "value": {"value": "value"}}' localhost:9000 policy.attributes.AttributesService/CreateAttributeValue |
+ |||
| AssignKeyAccessServerToAttribute | AssignKeyAccessServerToAttributeRequest | AssignKeyAccessServerToAttributeResponse | -Assign Key Access Server to Attribute - -grpcurl -plaintext -d '{"attribute_key_access_server": {"attribute_id": "attribute_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/AssignKeyAccessServerToAttribute - -Example Request: -{ -"attribute_key_access_server": { -"attribute_id": "attribute_id", -"key_access_server_id -} - -Example Response: -{ -"attribute_key_access_server": { -"attribute_id": "attribute_id", -"key_access_server_id: "key_access_server_id" -} |
+ --------------------------------------* +Attribute <> Key Access Server RPCs +--------------------------------------- |
||
| RemoveKeyAccessServerFromAttribute | RemoveKeyAccessServerFromAttributeRequest | RemoveKeyAccessServerFromAttributeResponse | -Remove Key Access Server to Attribute - -grpcurl -plaintext -d '{"attribute_key_access_server": {"attribute_id": "attribute_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/RemeoveKeyAccessServerFromAttribute - -Example Request: -{ -"attribute_key_access_server": { -"attribute_id": "attribute_id", -"key_access_server_id -} - -Example Response: -{ -"attribute_key_access_server": { -"attribute_id": "attribute_id", -"key_access_server_id: "key_access_server_id" -} |
+ |||
| AssignKeyAccessServerToValue | AssignKeyAccessServerToValueRequest | AssignKeyAccessServerToValueResponse | -Assign Key Access Server to Value - -grpcurl -plaintext -d '{"attribute_key_access_server": {"attribute_id": "attribute_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/AssignKeyAccessServerToValue - -Example Request: -{ -"attribute_key_access_server": { -"value_id": "attribute_id", -"key_access_server_id -} - -Example Response: -{ -"attribute_key_access_server": { -"value_id": "attribute_id", -"key_access_server_id: "key_access_server_id" -} |
+ |||
| RemoveKeyAccessServerFromValue | RemoveKeyAccessServerFromValueRequest | RemoveKeyAccessServerFromValueResponse | -Remove Key Access Server to Value -grpcurl -plaintext -d '{"value_key_access_server": {"value_id": "value_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/RemoveKeyAccessServerFromValue - -Example Request: -{ -"value_key_access_server": { -"value_id": "value_id", -"key_access_server_id -} - -Example Response: -{ -"value_key_access_server": { -"value_id": "value_id", -"key_access_server_id |
+ |||
| GetAttributesByValueFqns | GET | -/attributes/_/fqn | +/attributes/*/fqn | CreateAttribute | POST | /attributes | -attribute | +* | @@ -4440,9 +4070,9 @@
| UpdateAttribute | -POST | +PATCH | /attributes/{id} | -attribute | +* | |
| GetAttributeValue | GET | -/attributes/_/values/{id} | +/attributes/*/values/{id} | CreateAttributeValue | POST | /attributes/{attribute_id}/values | -value | +* | @@ -4480,9 +4110,9 @@
| UpdateAttributeValue | -POST | -/attributes/{attribute_id}/values/{id} | -value | +PATCH | +/attributes/*/values/{id} | +* |
| DeactivateAttributeValue | DELETE | -/attributes/_/values/{id} | +/attributes/*/values/{id} | |||
| resource_mapping | -ResourceMappingCreateUpdate | +attribute_value_id | +string | + | Required |
+ |
| terms | +string | +repeated |
|
|||
| metadata | +common.MetadataMutable | ++ | Optional |
+
Required
Optional
| Field | Type | Label | Description | |||
| id | -string | +metadata | +common.MetadataMutable | - |
|
+ Common Metadata |
| resource_mapping | -ResourceMappingCreateUpdate | +metadata_update_behavior | +common.MetadataUpdateEnum |
|
CreateResourceMapping | POST | /resource-mappings | -resource_mapping | +* | @@ -5143,7 +4770,7 @@UpdateResourceMapping | POST | /resource-mappings/{id} | -resource_mapping | +* | diff --git a/docs/openapi/kasregistry/key_access_server_registry.swagger.json b/docs/openapi/kasregistry/key_access_server_registry.swagger.json index 7f22fa785f..b1b18547ba 100644 --- a/docs/openapi/kasregistry/key_access_server_registry.swagger.json +++ b/docs/openapi/kasregistry/key_access_server_registry.swagger.json @@ -18,8 +18,6 @@ "paths": { "/key-access-servers": { "get": { - "summary": "Request Examples:\n{}", - "description": "Response Examples:\n{\n\"key_access_servers\": [\n{\n\"id\": \"71eae02f-6837-4980-8a2c-70abf6b68732\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1705971719\",\n\"nanos\": 534029000\n},\n\"updated_at\": {\n\"seconds\": \"1705971719\",\n\"nanos\": 534029000\n},\n\"description\": \"test kas instance\"\n},\n\"uri\": \"kas2\",\n\"public_key\": {\n\"remote\": \"https://platform.virtru.com/kas1\"\n}\n},\n{\n\"id\": \"cad1fc87-1193-456b-a217-d5cdae1fa67a\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1705971990\",\n\"nanos\": 303386000\n},\n\"updated_at\": {\n\"seconds\": \"1705971990\",\n\"nanos\": 303386000\n},\n\"description\": \"test kas instance\"\n},\n\"uri\": \"kas3\",\n\"public_key\": {\n\"local\": \"LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ6ekNDQVhXZ0F3SUJBZ0lVT1J1VjNhdlU5QUU2enNCNlp4eWxsSHBpNWQ0d0NnWUlLb1pJemowRUF3SXcKUFRFTE1Ba0dBMVVFQmhNQ2RYTXhDekFKQmdOVkJBZ01BbU4wTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NalF3TVRBeU1UWTFOalUyV2hjTk1qVXdNVEF4TVRZMU5qVTJXakE5Ck1Rc3dDUVlEVlFRR0V3SjFjekVMTUFrR0ExVUVDQXdDWTNReElUQWZCZ05WQkFvTUdFbHVkR1Z5Ym1WMElGZHAKWkdkcGRITWdVSFI1SUV4MFpEQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMVjlmQ0pIRC9rYwpyWHJVSFF3QVp4ME1jMGRQdkxqc0ovb2pFdE1NbjBST2RlT3g4eWd4Z2NRVEZGQXh5Q3RCdWFkaEFkbS9pVkh0CjhnMkVNejVkTzNXalV6QlJNQjBHQTFVZERnUVdCQlFZTmt1aytKSXVSV3luK2JFOHNCaFJ3MjdPVlRBZkJnTlYKSFNNRUdEQVdnQlFZTmt1aytKSXVSV3luK2JFOHNCaFJ3MjdPVlRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvRwpDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ0FCMmppWWU4QVk2TUo0QURQU1FHRTQ3K2Eza1dGTGNHc0pob1pieHRnClV3SWdjZklJdVBmaDRmYmN2OGNUaTJCbEkzazdzV1B1QW1JRlZyaUkyZDNVeDVRPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==\"\n}\n}\n]\n}", "operationId": "KeyAccessServerRegistryService_ListKeyAccessServers", "responses": { "200": { @@ -40,8 +38,6 @@ ] }, "post": { - "summary": "Request Examples:\n{\n\"key_access_server\": {\n\"uri\": \"kas2\",\n\"public_key\": {\n\"remote\": \"https://platform.virtru.com/kas1\"\n}\n}\n}", - "description": "Response Examples:\n{\n\"key_access_server\": {\n\"id\": \"71eae02f-6837-4980-8a2c-70abf6b68732\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1705971719\",\n\"nanos\": 534029000\n},\n\"updated_at\": {\n\"seconds\": \"1705971719\",\n\"nanos\": 534029000\n},\n\"description\": \"test kas instance\"\n},\n\"uri\": \"kas2\",\n\"public_key\": {\n\"remote\": \"https://platform.virtru.com/kas1\"\n}\n}\n}", "operationId": "KeyAccessServerRegistryService_CreateKeyAccessServer", "responses": { "200": { @@ -59,11 +55,11 @@ }, "parameters": [ { - "name": "keyAccessServer", + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/kasregistryKeyAccessServerCreateUpdate" + "$ref": "#/definitions/kasregistryCreateKeyAccessServerRequest" } } ], @@ -74,8 +70,6 @@ }, "/key-access-servers/{id}": { "get": { - "summary": "Request Examples:\n{\n\"id\": \"71eae02f-6837-4980-8a2c-70abf6b68732\"\n}", - "description": "Response Examples:\n{\n\"key_access_server\": {\n\"id\": \"71eae02f-6837-4980-8a2c-70abf6b68732\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1705971719\",\n\"nanos\": 534029000\n},\n\"updated_at\": {\n\"seconds\": \"1705971719\",\n\"nanos\": 534029000\n},\n\"description\": \"test kas instance\"\n},\n\"uri\": \"kas2\",\n\"public_key\": {\n\"remote\": \"https://platform.virtru.com/kas1\"\n}\n}\n}", "operationId": "KeyAccessServerRegistryService_GetKeyAccessServer", "responses": { "200": { @@ -104,8 +98,6 @@ ] }, "delete": { - "summary": "Request Examples:\n{\n\"id\": \"71eae02f-6837-4980-8a2c-70abf6b68732\"\n}", - "description": "Response Examples:\n{\n\"key_access_server\": {\n\"id\": \"71eae02f-6837-4980-8a2c-70abf6b68732\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1705971719\",\n\"nanos\": 534029000\n},\n\"updated_at\": {\n\"seconds\": \"1705971719\",\n\"nanos\": 534029000\n},\n\"description\": \"test kas instance\"\n},\n\"uri\": \"kas2\",\n\"public_key\": {\n\"remote\": \"https://platform.virtru.com/kas1\"\n}\n}\n}", "operationId": "KeyAccessServerRegistryService_DeleteKeyAccessServer", "responses": { "200": { @@ -134,8 +126,6 @@ ] }, "put": { - "summary": "Request Examples:\n{\n\"id\": \"71eae02f-6837-4980-8a2c-70abf6b68732\",\n\"key_access_server\": {\n\"uri\": \"kas2\",\n\"public_key\": {\n\"remote\": \"https://platform.virtru.com/kas1\"\n}\n}\n}", - "description": "Response Examples:\n{\n\"key_access_server\": {\n\"id\": \"71eae02f-6837-4980-8a2c-70abf6b68732\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1705971719\",\n\"nanos\": 534029000\n},\n\"updated_at\": {\n\"seconds\": \"1705971719\",\n\"nanos\": 534029000\n},\n\"description\": \"test kas instance\"\n},\n\"uri\": \"kas2\",\n\"public_key\": {\n\"remote\": \"https://platform.virtru.com/kas1\"\n}\n}\n}", "operationId": "KeyAccessServerRegistryService_UpdateKeyAccessServer", "responses": { "200": { @@ -154,16 +144,32 @@ "parameters": [ { "name": "id", + "description": "Required", "in": "path", "required": true, "type": "string" }, { - "name": "keyAccessServer", + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/kasregistryKeyAccessServerCreateUpdate" + "type": "object", + "properties": { + "uri": { + "type": "string" + }, + "publicKey": { + "$ref": "#/definitions/kasregistryPublicKey" + }, + "metadata": { + "$ref": "#/definitions/commonMetadataMutable", + "title": "Common metadata" + }, + "metadataUpdateBehavior": { + "$ref": "#/definitions/commonMetadataUpdateEnum" + } + } } } ], @@ -193,10 +199,6 @@ "type": "string" }, "title": "optional short description" - }, - "description": { - "type": "string", - "title": "optional long description" } }, "title": "Struct to uniquely identify a resource with optional additional metadata" @@ -209,11 +211,33 @@ "additionalProperties": { "type": "string" }, - "title": "optional short description" - }, - "description": { + "title": "optional labels" + } + } + }, + "commonMetadataUpdateEnum": { + "type": "string", + "enum": [ + "METADATA_UPDATE_ENUM_UNSPECIFIED", + "METADATA_UPDATE_ENUM_EXTEND", + "METADATA_UPDATE_ENUM_REPLACE" + ], + "default": "METADATA_UPDATE_ENUM_UNSPECIFIED", + "title": "- METADATA_UPDATE_ENUM_UNSPECIFIED: unspecified update type\n - METADATA_UPDATE_ENUM_EXTEND: only update the fields that are provided\n - METADATA_UPDATE_ENUM_REPLACE: replace the entire metadata with the provided metadata" + }, + "kasregistryCreateKeyAccessServerRequest": { + "type": "object", + "properties": { + "uri": { "type": "string", - "title": "optional long description" + "title": "Required" + }, + "publicKey": { + "$ref": "#/definitions/kasregistryPublicKey" + }, + "metadata": { + "$ref": "#/definitions/commonMetadataMutable", + "title": "Common metadata" } } }, @@ -247,35 +271,20 @@ "id": { "type": "string" }, - "metadata": { - "$ref": "#/definitions/commonMetadata" - }, "uri": { "type": "string", "title": "Address of a KAS instance" }, "publicKey": { "$ref": "#/definitions/kasregistryPublicKey" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Common metadata" } }, "title": "Descriptor for a KAS" }, - "kasregistryKeyAccessServerCreateUpdate": { - "type": "object", - "properties": { - "metadata": { - "$ref": "#/definitions/commonMetadataMutable", - "title": "Optional metadata for the attribute definition" - }, - "uri": { - "type": "string", - "title": "Address of a KAS instance" - }, - "publicKey": { - "$ref": "#/definitions/kasregistryPublicKey" - } - } - }, "kasregistryListKeyAccessServersResponse": { "type": "object", "properties": { diff --git a/docs/openapi/policy/attributes/attributes.swagger.json b/docs/openapi/policy/attributes/attributes.swagger.json index e4706da27f..8b5d369db6 100644 --- a/docs/openapi/policy/attributes/attributes.swagger.json +++ b/docs/openapi/policy/attributes/attributes.swagger.json @@ -18,7 +18,6 @@ "paths": { "/attributes": { "post": { - "summary": "Create Attribute\nRequest:\ngrpcurl -plaintext -d '{\"attribute\": {\"namespace_id\": \"namespace_id\", \"name\": \"attribute_name\", \"rule\": \"ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF\"}}' localhost:9000 policy.attributes.AttributesService/CreateAttribute\nResponse\n{\n\"attribute\": {\n\"id\": \"e06f067b-d158-44bc-a814-1aa3f968dcf0\",\n\"metadata\": {\n\"createdAt\": \"2024-02-14T20:24:23.057404Z\",\n\"updatedAt\": \"2024-02-14T20:24:23.057404Z\"\n},\n\"namespace\": {\n\"id\": \"namespace_id\"\n},\n\"name\": \"attribute_name\",\n\"rule\": \"ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF\",\n\"active\": true\n}\n}", "operationId": "AttributesService_CreateAttribute", "responses": { "200": { @@ -36,11 +35,11 @@ }, "parameters": [ { - "name": "attribute", + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/attributesAttributeCreateUpdate" + "$ref": "#/definitions/attributesCreateAttributeRequest" } } ], @@ -49,7 +48,7 @@ ] } }, - "/attributes/_/fqn": { + "/attributes/*/fqn": { "get": { "operationId": "AttributesService_GetAttributesByValueFqns", "responses": { @@ -83,9 +82,9 @@ ] } }, - "/attributes/_/values/{id}": { + "/attributes/*/values/{id}": { "get": { - "summary": "* Attribute Value *", + "summary": "--------------------------------------*\nValue RPCs\n---------------------------------------", "operationId": "AttributesService_GetAttributeValue", "responses": { "200": { @@ -140,18 +139,14 @@ "tags": [ "AttributesService" ] - } - }, - "/attributes/keyaccessserver/assign": { - "post": { - "summary": "Assign Key Access Server to Attribute", - "description": "grpcurl -plaintext -d '{\"attribute_key_access_server\": {\"attribute_id\": \"attribute_id\", \"key_access_server_id\": \"key_access_server_id\"}}' localhost:9000 policy.attributes.AttributesService/AssignKeyAccessServerToAttribute\n\nExample Request:\n{\n\"attribute_key_access_server\": {\n\"attribute_id\": \"attribute_id\",\n\"key_access_server_id\n}\n\nExample Response:\n{\n\"attribute_key_access_server\": {\n\"attribute_id\": \"attribute_id\",\n\"key_access_server_id: \"key_access_server_id\"\n}", - "operationId": "AttributesService_AssignKeyAccessServerToAttribute", + }, + "patch": { + "operationId": "AttributesService_UpdateAttributeValue", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/attributesAssignKeyAccessServerToAttributeResponse" + "$ref": "#/definitions/attributesUpdateAttributeValueResponse" } }, "default": { @@ -163,11 +158,33 @@ }, "parameters": [ { - "name": "attributeKeyAccessServer", + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/attributesAttributeKeyAccessServer" + "type": "object", + "properties": { + "members": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Optional" + }, + "metadata": { + "$ref": "#/definitions/commonMetadataMutable", + "title": "Common metadata" + }, + "metadataUpdateBehavior": { + "$ref": "#/definitions/commonMetadataUpdateEnum" + } + } } } ], @@ -176,16 +193,15 @@ ] } }, - "/attributes/keyaccessserver/remove": { + "/attributes/keyaccessserver/assign": { "post": { - "summary": "Remove Key Access Server to Attribute", - "description": "grpcurl -plaintext -d '{\"attribute_key_access_server\": {\"attribute_id\": \"attribute_id\", \"key_access_server_id\": \"key_access_server_id\"}}' localhost:9000 policy.attributes.AttributesService/RemeoveKeyAccessServerFromAttribute\n\nExample Request:\n{\n\"attribute_key_access_server\": {\n\"attribute_id\": \"attribute_id\",\n\"key_access_server_id\n}\n\nExample Response:\n{\n\"attribute_key_access_server\": {\n\"attribute_id\": \"attribute_id\",\n\"key_access_server_id: \"key_access_server_id\"\n}", - "operationId": "AttributesService_RemoveKeyAccessServerFromAttribute", + "summary": "--------------------------------------*\nAttribute \u003c\u003e Key Access Server RPCs\n---------------------------------------", + "operationId": "AttributesService_AssignKeyAccessServerToAttribute", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/attributesRemoveKeyAccessServerFromAttributeResponse" + "$ref": "#/definitions/attributesAssignKeyAccessServerToAttributeResponse" } }, "default": { @@ -210,16 +226,14 @@ ] } }, - "/attributes/values/keyaccessserver/assign": { + "/attributes/keyaccessserver/remove": { "post": { - "summary": "Assign Key Access Server to Value", - "description": "grpcurl -plaintext -d '{\"attribute_key_access_server\": {\"attribute_id\": \"attribute_id\", \"key_access_server_id\": \"key_access_server_id\"}}' localhost:9000 policy.attributes.AttributesService/AssignKeyAccessServerToValue\n\nExample Request:\n{\n\"attribute_key_access_server\": {\n\"value_id\": \"attribute_id\",\n\"key_access_server_id\n}\n\nExample Response:\n{\n\"attribute_key_access_server\": {\n\"value_id\": \"attribute_id\",\n\"key_access_server_id: \"key_access_server_id\"\n}", - "operationId": "AttributesService_AssignKeyAccessServerToValue", + "operationId": "AttributesService_RemoveKeyAccessServerFromAttribute", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/attributesAssignKeyAccessServerToValueResponse" + "$ref": "#/definitions/attributesRemoveKeyAccessServerFromAttributeResponse" } }, "default": { @@ -231,11 +245,11 @@ }, "parameters": [ { - "name": "valueKeyAccessServer", + "name": "attributeKeyAccessServer", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/attributesValueKeyAccessServer" + "$ref": "#/definitions/attributesAttributeKeyAccessServer" } } ], @@ -244,16 +258,14 @@ ] } }, - "/attributes/values/keyaccessserver/remove": { + "/attributes/values/keyaccessserver/assign": { "post": { - "summary": "Remove Key Access Server to Value\ngrpcurl -plaintext -d '{\"value_key_access_server\": {\"value_id\": \"value_id\", \"key_access_server_id\": \"key_access_server_id\"}}' localhost:9000 policy.attributes.AttributesService/RemoveKeyAccessServerFromValue", - "description": "Example Request:\n{\n\"value_key_access_server\": {\n\"value_id\": \"value_id\",\n\"key_access_server_id\n}\n\nExample Response:\n{\n\"value_key_access_server\": {\n\"value_id\": \"value_id\",\n\"key_access_server_id", - "operationId": "AttributesService_RemoveKeyAccessServerFromValue", + "operationId": "AttributesService_AssignKeyAccessServerToValue", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/attributesRemoveKeyAccessServerFromValueResponse" + "$ref": "#/definitions/attributesAssignKeyAccessServerToValueResponse" } }, "default": { @@ -278,15 +290,14 @@ ] } }, - "/attributes/{attributeId}/values": { + "/attributes/values/keyaccessserver/remove": { "post": { - "summary": "Create Attribute Value\nExample:\n grpcurl -plaintext -d '{\"attribute_id\": \"attribute_id\", \"value\": {\"value\": \"value\"}}' localhost:9000 policy.attributes.AttributesService/CreateAttributeValue", - "operationId": "AttributesService_CreateAttributeValue", + "operationId": "AttributesService_RemoveKeyAccessServerFromValue", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/attributesCreateAttributeValueResponse" + "$ref": "#/definitions/attributesRemoveKeyAccessServerFromValueResponse" } }, "default": { @@ -298,17 +309,11 @@ }, "parameters": [ { - "name": "attributeId", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "value", + "name": "valueKeyAccessServer", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/attributesValueCreateUpdate" + "$ref": "#/definitions/attributesValueKeyAccessServer" } } ], @@ -317,14 +322,14 @@ ] } }, - "/attributes/{attributeId}/values/{id}": { + "/attributes/{attributeId}/values": { "post": { - "operationId": "AttributesService_UpdateAttributeValue", + "operationId": "AttributesService_CreateAttributeValue", "responses": { "200": { "description": "A successful response.", "schema": { - "$ref": "#/definitions/attributesUpdateAttributeValueResponse" + "$ref": "#/definitions/attributesCreateAttributeValueResponse" } }, "default": { @@ -337,22 +342,33 @@ "parameters": [ { "name": "attributeId", + "description": "Required", "in": "path", "required": true, "type": "string" }, { - "name": "id", - "in": "path", - "required": true, - "type": "string" - }, - { - "name": "value", + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/attributesValueCreateUpdate" + "type": "object", + "properties": { + "value": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "string" + }, + "title": "Optional" + }, + "metadata": { + "$ref": "#/definitions/commonMetadataMutable", + "title": "Common metadata" + } + } } } ], @@ -418,7 +434,7 @@ "AttributesService" ] }, - "post": { + "patch": { "operationId": "AttributesService_UpdateAttribute", "responses": { "200": { @@ -437,16 +453,26 @@ "parameters": [ { "name": "id", + "description": "Required", "in": "path", "required": true, "type": "string" }, { - "name": "attribute", + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/attributesAttributeCreateUpdate" + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/commonMetadataMutable", + "title": "Optional" + }, + "metadataUpdateBehavior": { + "$ref": "#/definitions/commonMetadataUpdateEnum" + } + } } } ], @@ -479,10 +505,6 @@ "id": { "type": "string" }, - "metadata": { - "$ref": "#/definitions/commonMetadata", - "title": "Optional metadata for the attribute definition" - }, "namespace": { "$ref": "#/definitions/namespacesNamespace", "title": "namespace of the attribute" @@ -515,6 +537,10 @@ "active": { "type": "boolean", "title": "active by default until explicitly deactivated" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Common metadata" } } }, @@ -529,35 +555,6 @@ } } }, - "attributesAttributeCreateUpdate": { - "type": "object", - "properties": { - "metadata": { - "$ref": "#/definitions/commonMetadataMutable", - "title": "Optional metadata for the attribute definition" - }, - "namespaceId": { - "type": "string", - "title": "namespace of the attribute" - }, - "name": { - "type": "string", - "title": "attribute name" - }, - "rule": { - "$ref": "#/definitions/attributesAttributeRuleTypeEnum", - "title": "attribute rule enum" - }, - "values": { - "type": "array", - "items": { - "type": "object", - "$ref": "#/definitions/attributesValueCreateUpdate" - }, - "title": "optional" - } - } - }, "attributesAttributeKeyAccessServer": { "type": "object", "properties": { @@ -580,6 +577,25 @@ "default": "ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED", "title": "buflint ENUM_VALUE_PREFIX: to make sure that C++ scoping rules aren't violated when users add new enum values to an enum in a given package" }, + "attributesCreateAttributeRequest": { + "type": "object", + "properties": { + "namespaceId": { + "type": "string", + "title": "Required" + }, + "name": { + "type": "string" + }, + "rule": { + "$ref": "#/definitions/attributesAttributeRuleTypeEnum" + }, + "metadata": { + "$ref": "#/definitions/commonMetadataMutable", + "title": "Optional" + } + } + }, "attributesCreateAttributeResponse": { "type": "object", "properties": { @@ -696,24 +712,6 @@ } } }, - "attributesValueCreateUpdate": { - "type": "object", - "properties": { - "metadata": { - "$ref": "#/definitions/commonMetadataMutable" - }, - "value": { - "type": "string" - }, - "members": { - "type": "array", - "items": { - "type": "string" - }, - "title": "list of attribute values that this value is related to (attribute group)" - } - } - }, "attributesValueKeyAccessServer": { "type": "object", "properties": { @@ -755,10 +753,6 @@ "type": "string" }, "title": "optional short description" - }, - "description": { - "type": "string", - "title": "optional long description" } }, "title": "Struct to uniquely identify a resource with optional additional metadata" @@ -771,29 +765,36 @@ "additionalProperties": { "type": "string" }, - "title": "optional short description" - }, - "description": { - "type": "string", - "title": "optional long description" + "title": "optional labels" } } }, + "commonMetadataUpdateEnum": { + "type": "string", + "enum": [ + "METADATA_UPDATE_ENUM_UNSPECIFIED", + "METADATA_UPDATE_ENUM_EXTEND", + "METADATA_UPDATE_ENUM_REPLACE" + ], + "default": "METADATA_UPDATE_ENUM_UNSPECIFIED", + "title": "- METADATA_UPDATE_ENUM_UNSPECIFIED: unspecified update type\n - METADATA_UPDATE_ENUM_EXTEND: only update the fields that are provided\n - METADATA_UPDATE_ENUM_REPLACE: replace the entire metadata with the provided metadata" + }, "kasregistryKeyAccessServer": { "type": "object", "properties": { "id": { "type": "string" }, - "metadata": { - "$ref": "#/definitions/commonMetadata" - }, "uri": { "type": "string", "title": "Address of a KAS instance" }, "publicKey": { "$ref": "#/definitions/kasregistryPublicKey" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Common metadata" } }, "title": "Descriptor for a KAS" @@ -828,6 +829,9 @@ "active": { "type": "boolean", "title": "active by default until explicitly deactivated" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata" } } }, @@ -838,11 +842,8 @@ "type": "string", "title": "generated uuid in database" }, - "metadata": { - "$ref": "#/definitions/commonMetadata" - }, - "attributeId": { - "type": "string" + "attribute": { + "$ref": "#/definitions/attributesAttribute" }, "value": { "type": "string" @@ -868,6 +869,10 @@ "active": { "type": "boolean", "title": "active by default until explicitly deactivated" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Common metadata" } } }, diff --git a/docs/openapi/policy/namespaces/namespaces.swagger.json b/docs/openapi/policy/namespaces/namespaces.swagger.json index 23a1a73778..ee5487bc1d 100644 --- a/docs/openapi/policy/namespaces/namespaces.swagger.json +++ b/docs/openapi/policy/namespaces/namespaces.swagger.json @@ -18,7 +18,6 @@ "paths": { "/attributes/namespaces": { "get": { - "summary": "NOTE: ACTIVE state by default, INACTIVE or ANY when specified\nRequest: \ngrpcurl -plaintext localhost:9000 policy.namespaces.NamespaceService/ListNamespaces\nResponse:\n{\n\"namespaces\": [\n{\n\"id\": \"namespace-id\",\n\"name\": \"namespace-name\",\n\"active\": true\n}\n]\n}", "operationId": "NamespaceService_ListNamespaces", "responses": { "200": { @@ -55,7 +54,6 @@ ] }, "post": { - "summary": "Request: \ngrpcurl -plaintext -d '{\"name\": \"namespace-name\"}' localhost:9000 policy.namespaces.NamespaceService/CreateNamespace\nResponse:\n{ \"namespace\": { \"id\": \"namespace-id\", \"active\": true } }", "operationId": "NamespaceService_CreateNamespace", "responses": { "200": { @@ -73,10 +71,12 @@ }, "parameters": [ { - "name": "name", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/namespacesCreateNamespaceRequest" + } } ], "tags": [ @@ -86,7 +86,6 @@ }, "/attributes/namespaces/{id}": { "get": { - "summary": "Request: \ngrpcurl -plaintext -d '{\"id\": \"namespace-id\"}' localhost:9000 policy.namespaces.NamespaceService/GetNamespace\nResponse:\n{\n\"namespace\": {\n\"id\": \"namespace-id\",\n\"name\": \"namespace-name\",\n\"active\": true\n}\n}", "operationId": "NamespaceService_GetNamespace", "responses": { "200": { @@ -142,7 +141,7 @@ "NamespaceService" ] }, - "put": { + "patch": { "operationId": "NamespaceService_UpdateNamespace", "responses": { "200": { @@ -161,15 +160,27 @@ "parameters": [ { "name": "id", + "description": "Required", "in": "path", "required": true, "type": "string" }, { - "name": "name", - "in": "query", - "required": false, - "type": "string" + "name": "body", + "in": "body", + "required": true, + "schema": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/commonMetadataMutable", + "title": "Optional" + }, + "metadataUpdateBehavior": { + "$ref": "#/definitions/commonMetadataUpdateEnum" + } + } + } } ], "tags": [ @@ -190,6 +201,64 @@ "default": "ACTIVE_STATE_ENUM_UNSPECIFIED", "title": "buflint ENUM_VALUE_PREFIX: to make sure that C++ scoping rules aren't violated when users add new enum values to an enum in a given package" }, + "commonMetadata": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "title": "created_at set by server (entity who created will recorded in an audit event)" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "title": "updated_at set by server (entity who updated will recorded in an audit event)" + }, + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "optional short description" + } + }, + "title": "Struct to uniquely identify a resource with optional additional metadata" + }, + "commonMetadataMutable": { + "type": "object", + "properties": { + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "optional labels" + } + } + }, + "commonMetadataUpdateEnum": { + "type": "string", + "enum": [ + "METADATA_UPDATE_ENUM_UNSPECIFIED", + "METADATA_UPDATE_ENUM_EXTEND", + "METADATA_UPDATE_ENUM_REPLACE" + ], + "default": "METADATA_UPDATE_ENUM_UNSPECIFIED", + "title": "- METADATA_UPDATE_ENUM_UNSPECIFIED: unspecified update type\n - METADATA_UPDATE_ENUM_EXTEND: only update the fields that are provided\n - METADATA_UPDATE_ENUM_REPLACE: replace the entire metadata with the provided metadata" + }, + "namespacesCreateNamespaceRequest": { + "type": "object", + "properties": { + "name": { + "type": "string", + "title": "Required" + }, + "metadata": { + "$ref": "#/definitions/commonMetadataMutable", + "title": "Optional" + } + } + }, "namespacesCreateNamespaceResponse": { "type": "object", "properties": { @@ -238,6 +307,9 @@ "active": { "type": "boolean", "title": "active by default until explicitly deactivated" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata" } } }, diff --git a/docs/openapi/policy/policy_common.swagger.json b/docs/openapi/policy/policy_common.swagger.json new file mode 100644 index 0000000000..fa969f73c8 --- /dev/null +++ b/docs/openapi/policy/policy_common.swagger.json @@ -0,0 +1,46 @@ +{ + "swagger": "2.0", + "info": { + "title": "policy/policy_common.proto", + "version": "version not set" + }, + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": {}, + "definitions": { + "protobufAny": { + "type": "object", + "properties": { + "@type": { + "type": "string", + "description": "A URL/resource name that uniquely identifies the type of the serialized\nprotocol buffer message. This string must contain at least\none \"/\" character. The last segment of the URL's path must represent\nthe fully qualified name of the type (as in\n`path/google.protobuf.Duration`). The name should be in a canonical form\n(e.g., leading \".\" is not accepted).\n\nIn practice, teams usually precompile into the binary all types that they\nexpect it to use in the context of Any. However, for URLs which use the\nscheme `http`, `https`, or no scheme, one can optionally set up a type\nserver that maps type URLs to message definitions as follows:\n\n* If no scheme is provided, `https` is assumed.\n* An HTTP GET on the URL must yield a [google.protobuf.Type][]\n value in binary format, or produce an error.\n* Applications are allowed to cache lookup results based on the\n URL, or have them precompiled into a binary to avoid any\n lookup. Therefore, binary compatibility needs to be preserved\n on changes to types. (Use versioned type names to manage\n breaking changes.)\n\nNote: this functionality is not currently available in the official\nprotobuf release, and it is not used for type URLs beginning with\ntype.googleapis.com. As of May 2023, there are no widely used type server\nimplementations and no plans to implement one.\n\nSchemes other than `http`, `https` (or the empty scheme) might be\nused with implementation specific semantics." + } + }, + "additionalProperties": {}, + "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" + }, + "rpcStatus": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32" + }, + "message": { + "type": "string" + }, + "details": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/protobufAny" + } + } + } + } + } +} diff --git a/docs/openapi/policy/resourcemapping/resource_mapping.swagger.json b/docs/openapi/policy/resourcemapping/resource_mapping.swagger.json index 39fbe4584f..82787100e5 100644 --- a/docs/openapi/policy/resourcemapping/resource_mapping.swagger.json +++ b/docs/openapi/policy/resourcemapping/resource_mapping.swagger.json @@ -59,11 +59,11 @@ }, "parameters": [ { - "name": "resourceMapping", + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/resourcemappingResourceMappingCreateUpdate" + "$ref": "#/definitions/resourcemappingCreateResourceMappingRequest" } } ], @@ -154,16 +154,36 @@ "parameters": [ { "name": "id", + "description": "Required", "in": "path", "required": true, "type": "string" }, { - "name": "resourceMapping", + "name": "body", "in": "body", "required": true, "schema": { - "$ref": "#/definitions/resourcemappingResourceMappingCreateUpdate" + "type": "object", + "properties": { + "attributeValueId": { + "type": "string", + "title": "Optional" + }, + "terms": { + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "$ref": "#/definitions/commonMetadataMutable", + "title": "Common Metadata" + }, + "metadataUpdateBehavior": { + "$ref": "#/definitions/commonMetadataUpdateEnum" + } + } } } ], @@ -174,6 +194,62 @@ } }, "definitions": { + "attributesAttribute": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "namespace": { + "$ref": "#/definitions/namespacesNamespace", + "title": "namespace of the attribute" + }, + "name": { + "type": "string", + "title": "attribute name" + }, + "rule": { + "$ref": "#/definitions/attributesAttributeRuleTypeEnum", + "title": "attribute rule enum" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/policyattributesValue" + } + }, + "grants": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/kasregistryKeyAccessServer" + } + }, + "fqn": { + "type": "string" + }, + "active": { + "type": "boolean", + "title": "active by default until explicitly deactivated" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Common metadata" + } + } + }, + "attributesAttributeRuleTypeEnum": { + "type": "string", + "enum": [ + "ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED", + "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", + "ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF", + "ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY" + ], + "default": "ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED", + "title": "buflint ENUM_VALUE_PREFIX: to make sure that C++ scoping rules aren't violated when users add new enum values to an enum in a given package" + }, "commonMetadata": { "type": "object", "properties": { @@ -193,10 +269,6 @@ "type": "string" }, "title": "optional short description" - }, - "description": { - "type": "string", - "title": "optional long description" } }, "title": "Struct to uniquely identify a resource with optional additional metadata" @@ -209,29 +281,36 @@ "additionalProperties": { "type": "string" }, - "title": "optional short description" - }, - "description": { - "type": "string", - "title": "optional long description" + "title": "optional labels" } } }, + "commonMetadataUpdateEnum": { + "type": "string", + "enum": [ + "METADATA_UPDATE_ENUM_UNSPECIFIED", + "METADATA_UPDATE_ENUM_EXTEND", + "METADATA_UPDATE_ENUM_REPLACE" + ], + "default": "METADATA_UPDATE_ENUM_UNSPECIFIED", + "title": "- METADATA_UPDATE_ENUM_UNSPECIFIED: unspecified update type\n - METADATA_UPDATE_ENUM_EXTEND: only update the fields that are provided\n - METADATA_UPDATE_ENUM_REPLACE: replace the entire metadata with the provided metadata" + }, "kasregistryKeyAccessServer": { "type": "object", "properties": { "id": { "type": "string" }, - "metadata": { - "$ref": "#/definitions/commonMetadata" - }, "uri": { "type": "string", "title": "Address of a KAS instance" }, "publicKey": { "$ref": "#/definitions/kasregistryPublicKey" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Common metadata" } }, "title": "Descriptor for a KAS" @@ -249,18 +328,38 @@ } } }, - "policyattributesValue": { + "namespacesNamespace": { "type": "object", "properties": { "id": { "type": "string", "title": "generated uuid in database" }, + "name": { + "type": "string", + "title": "used to partition Attribute Definitions, support by namespace AuthN and enable federation" + }, + "fqn": { + "type": "string" + }, + "active": { + "type": "boolean", + "title": "active by default until explicitly deactivated" + }, "metadata": { "$ref": "#/definitions/commonMetadata" + } + } + }, + "policyattributesValue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "generated uuid in database" }, - "attributeId": { - "type": "string" + "attribute": { + "$ref": "#/definitions/attributesAttribute" }, "value": { "type": "string" @@ -286,6 +385,10 @@ "active": { "type": "boolean", "title": "active by default until explicitly deactivated" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Common metadata" } } }, @@ -300,6 +403,25 @@ "additionalProperties": {}, "description": "`Any` contains an arbitrary serialized protocol buffer message along with a\nURL that describes the type of the serialized message.\n\nProtobuf library provides support to pack/unpack Any values in the form\nof utility functions or additional generated methods of the Any type.\n\nExample 1: Pack and unpack a message in C++.\n\n Foo foo = ...;\n Any any;\n any.PackFrom(foo);\n ...\n if (any.UnpackTo(\u0026foo)) {\n ...\n }\n\nExample 2: Pack and unpack a message in Java.\n\n Foo foo = ...;\n Any any = Any.pack(foo);\n ...\n if (any.is(Foo.class)) {\n foo = any.unpack(Foo.class);\n }\n // or ...\n if (any.isSameTypeAs(Foo.getDefaultInstance())) {\n foo = any.unpack(Foo.getDefaultInstance());\n }\n\n Example 3: Pack and unpack a message in Python.\n\n foo = Foo(...)\n any = Any()\n any.Pack(foo)\n ...\n if any.Is(Foo.DESCRIPTOR):\n any.Unpack(foo)\n ...\n\n Example 4: Pack and unpack a message in Go\n\n foo := \u0026pb.Foo{...}\n any, err := anypb.New(foo)\n if err != nil {\n ...\n }\n ...\n foo := \u0026pb.Foo{}\n if err := any.UnmarshalTo(foo); err != nil {\n ...\n }\n\nThe pack methods provided by protobuf library will by default use\n'type.googleapis.com/full.type.name' as the type URL and the unpack\nmethods only use the fully qualified type name after the last '/'\nin the type URL, for example \"foo.bar.com/x/y.z\" will yield type\nname \"y.z\".\n\nJSON\n====\nThe JSON representation of an `Any` value uses the regular\nrepresentation of the deserialized, embedded message, with an\nadditional field `@type` which contains the type URL. Example:\n\n package google.profile;\n message Person {\n string first_name = 1;\n string last_name = 2;\n }\n\n {\n \"@type\": \"type.googleapis.com/google.profile.Person\",\n \"firstName\": \u003cstring\u003e,\n \"lastName\": \u003cstring\u003e\n }\n\nIf the embedded message type is well-known and has a custom JSON\nrepresentation, that representation will be embedded adding a field\n`value` which holds the custom JSON in addition to the `@type`\nfield. Example (for message [google.protobuf.Duration][]):\n\n {\n \"@type\": \"type.googleapis.com/google.protobuf.Duration\",\n \"value\": \"1.212s\"\n }" }, + "resourcemappingCreateResourceMappingRequest": { + "type": "object", + "properties": { + "attributeValueId": { + "type": "string", + "title": "Required" + }, + "terms": { + "type": "array", + "items": { + "type": "string" + } + }, + "metadata": { + "$ref": "#/definitions/commonMetadataMutable", + "title": "Optional" + } + } + }, "resourcemappingCreateResourceMappingResponse": { "type": "object", "properties": { @@ -358,23 +480,6 @@ "description": "## Examples\n\n### Where\n\nattributeId is an id of the following attribute\n\nFQN: http://demo.com/attr/Classification/value/Confidential\nUUID: 12345678-1234-1234-1234-123456789012\n\n### Request\n\ngrpcurl -plaintext -d @ localhost:9000 policy.resourcemapping.ResourceMappingService/CreateResourceMapping \u003c\u003cEOM\n{\n\"mapping\": {\n\"name\": \"Classification\",\n\"attribute_value_id\": \"12345678-1234-1234-1234-123456789012\",\n\"terms\": [\"CONFIDENTIAL\", \"CONTROLLED UNCLASSIFIED\", \"OFFICIAL-SENSITIVE\", \"CUI\", \"C\"]\n}\n}\nEOM\n\n### Response\n\n{\n\"mapping\": {\n\"metadata\": {\n\"id\": \"12345678-1234-1234-1234-123456789012\",\n\"created_at\": \"2020-01-01T00:00:00Z\",\n\"updated_at\": \"2020-01-01T00:00:00Z\"\n},\n\"name\": \"Classification\",\n\"attribute_value_id\": \"12345678-1234-1234-1234-123456789012\",\n\"terms\": [\"CONFIDENTIAL\", \"CONTROLLED UNCLASSIFIED\", \"OFFICIAL-SENSITIVE\", \"CUI\", \"C\"]\n}\n}", "title": "# Resource Mappings (aka Access Control Resource Encodings aka ACRE): Structures supporting Resources and Attributes mappings" }, - "resourcemappingResourceMappingCreateUpdate": { - "type": "object", - "properties": { - "metadata": { - "$ref": "#/definitions/commonMetadataMutable" - }, - "attributeValueId": { - "type": "string" - }, - "terms": { - "type": "array", - "items": { - "type": "string" - } - } - } - }, "resourcemappingUpdateResourceMappingResponse": { "type": "object", "properties": { diff --git a/docs/openapi/policy/subjectmapping/subject_mapping.swagger.json b/docs/openapi/policy/subjectmapping/subject_mapping.swagger.json index c352c21621..bcf398bfa3 100644 --- a/docs/openapi/policy/subjectmapping/subject_mapping.swagger.json +++ b/docs/openapi/policy/subjectmapping/subject_mapping.swagger.json @@ -207,6 +207,62 @@ "default": "STANDARD_ACTION_UNSPECIFIED", "title": "Standard actions supported by the platform" }, + "attributesAttribute": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "namespace": { + "$ref": "#/definitions/namespacesNamespace", + "title": "namespace of the attribute" + }, + "name": { + "type": "string", + "title": "attribute name" + }, + "rule": { + "$ref": "#/definitions/attributesAttributeRuleTypeEnum", + "title": "attribute rule enum" + }, + "values": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/policyattributesValue" + } + }, + "grants": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/kasregistryKeyAccessServer" + } + }, + "fqn": { + "type": "string" + }, + "active": { + "type": "boolean", + "title": "active by default until explicitly deactivated" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Common metadata" + } + } + }, + "attributesAttributeRuleTypeEnum": { + "type": "string", + "enum": [ + "ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED", + "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", + "ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF", + "ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY" + ], + "default": "ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED", + "title": "buflint ENUM_VALUE_PREFIX: to make sure that C++ scoping rules aren't violated when users add new enum values to an enum in a given package" + }, "authorizationAction": { "type": "object", "properties": { @@ -238,10 +294,6 @@ "type": "string" }, "title": "optional short description" - }, - "description": { - "type": "string", - "title": "optional long description" } }, "title": "Struct to uniquely identify a resource with optional additional metadata" @@ -254,11 +306,7 @@ "additionalProperties": { "type": "string" }, - "title": "optional short description" - }, - "description": { - "type": "string", - "title": "optional long description" + "title": "optional labels" } } }, @@ -268,15 +316,16 @@ "id": { "type": "string" }, - "metadata": { - "$ref": "#/definitions/commonMetadata" - }, "uri": { "type": "string", "title": "Address of a KAS instance" }, "publicKey": { "$ref": "#/definitions/kasregistryPublicKey" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Common metadata" } }, "title": "Descriptor for a KAS" @@ -294,18 +343,38 @@ } } }, - "policyattributesValue": { + "namespacesNamespace": { "type": "object", "properties": { "id": { "type": "string", "title": "generated uuid in database" }, + "name": { + "type": "string", + "title": "used to partition Attribute Definitions, support by namespace AuthN and enable federation" + }, + "fqn": { + "type": "string" + }, + "active": { + "type": "boolean", + "title": "active by default until explicitly deactivated" + }, "metadata": { "$ref": "#/definitions/commonMetadata" + } + } + }, + "policyattributesValue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "generated uuid in database" }, - "attributeId": { - "type": "string" + "attribute": { + "$ref": "#/definitions/attributesAttribute" }, "value": { "type": "string" @@ -331,6 +400,10 @@ "active": { "type": "boolean", "title": "active by default until explicitly deactivated" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Common metadata" } } }, diff --git a/examples/cmd/attributes.go b/examples/cmd/attributes.go index 345ffbb84c..81237ce41b 100644 --- a/examples/cmd/attributes.go +++ b/examples/cmd/attributes.go @@ -61,17 +61,15 @@ func attributesExample(examplesConfig *ExampleConfig) error { slog.Info("creating new attribute with hierarchy rule") _, err = s.Attributes.CreateAttribute(context.Background(), &attributes.CreateAttributeRequest{ - Attribute: &attributes.AttributeCreateUpdate{ - Name: "IntellectualProperty", - NamespaceId: exampleNamespace.Id, - Rule: *attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY.Enum(), - Values: []*attributes.ValueCreateUpdate{ - {Value: "TradeSecret"}, - {Value: "Proprietary"}, - {Value: "BusinessSensitive"}, - {Value: "Open"}, - }, - }, + Name: "IntellectualProperty", + NamespaceId: exampleNamespace.Id, + Rule: *attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY.Enum(), + // Values: []*attributes.ValueCreateUpdate{ + // {Value: "TradeSecret"}, + // {Value: "Proprietary"}, + // {Value: "BusinessSensitive"}, + // {Value: "Open"}, + // }, }) if err != nil { if returnStatus, ok := status.FromError(err); ok && returnStatus.Code() == codes.AlreadyExists { diff --git a/integration/attribute_fqns_test.go b/integration/attribute_fqns_test.go index 8ab635abe0..adfb265f59 100644 --- a/integration/attribute_fqns_test.go +++ b/integration/attribute_fqns_test.go @@ -9,6 +9,7 @@ import ( "github.com/opentdf/platform/internal/db" "github.com/opentdf/platform/internal/fixtures" "github.com/opentdf/platform/protocol/go/policy/attributes" + "github.com/opentdf/platform/protocol/go/policy/namespaces" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" @@ -16,10 +17,9 @@ import ( type AttributeFqnSuite struct { suite.Suite - schema string - f fixtures.Fixtures - db fixtures.DBInterface - ctx context.Context + f fixtures.Fixtures + db fixtures.DBInterface + ctx context.Context } func fqnBuilder(n string, a string, v string) string { @@ -45,8 +45,9 @@ func TestAttributeFqnSuite(t *testing.T) { func (s *AttributeFqnSuite) SetupSuite() { slog.Info("setting up db.AttributeFqn test suite") s.ctx = context.Background() - s.schema = "test_opentdf_attribute_fqn" - s.db = fixtures.NewDBInterface(*Config) + c := *Config + c.DB.Schema = "test_opentdf_attribute_fqn" + s.db = fixtures.NewDBInterface(c) s.f = fixtures.NewFixture(s.db) s.f.Provision() } @@ -59,10 +60,12 @@ func (s *AttributeFqnSuite) TearDownSuite() { // Test Create Namespace func (s *AttributeFqnSuite) TestCreateNamespace() { name := "test_namespace" - id, err := s.db.PolicyClient.CreateNamespace(s.ctx, name) + n, err := s.db.PolicyClient.CreateNamespace(s.ctx, &namespaces.CreateNamespaceRequest{ + Name: name, + }) s.NoError(err) // Verify FQN - fqn, err := s.db.PolicyClient.GetNamespace(s.ctx, id) + fqn, err := s.db.PolicyClient.GetNamespace(s.ctx, n.Id) s.NoError(err) s.NotEmpty(fqn.Fqn) s.Equal(fqnBuilder(name, "", ""), fqn.Fqn) @@ -72,7 +75,7 @@ func (s *AttributeFqnSuite) TestCreateNamespace() { func (s *AttributeFqnSuite) TestCreateAttribute() { n := s.f.GetNamespaceKey("example.com") name := "test_namespace" - a, err := s.db.PolicyClient.CreateAttribute(s.ctx, &attributes.AttributeCreateUpdate{ + a, err := s.db.PolicyClient.CreateAttribute(s.ctx, &attributes.CreateAttributeRequest{ NamespaceId: n.Id, Name: name, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF, @@ -90,7 +93,7 @@ func (s *AttributeFqnSuite) TestCreateAttributeValue() { a := s.f.GetAttributeKey("example.com/attr/attr1") n := s.f.GetNamespaceKey("example.com") name := "test_namespace" - v, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, a.Id, &attributes.ValueCreateUpdate{ + v, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, a.Id, &attributes.CreateAttributeValueRequest{ Value: name, }) s.NoError(err) @@ -149,19 +152,21 @@ func (s *AttributeFqnSuite) TestGetAttributesByValueFqns() { fqn2 := fqnBuilder(namespace, attr, value2) // Create namespace - nsId, err := s.db.PolicyClient.CreateNamespace(s.ctx, namespace) + n, err := s.db.PolicyClient.CreateNamespace(s.ctx, &namespaces.CreateNamespaceRequest{ + Name: namespace, + }) assert.NoError(s.T(), err) // Create attribute - a, err := s.db.PolicyClient.CreateAttribute(s.ctx, &attributes.AttributeCreateUpdate{ - NamespaceId: nsId, + a, err := s.db.PolicyClient.CreateAttribute(s.ctx, &attributes.CreateAttributeRequest{ + NamespaceId: n.Id, Name: attr, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF, }) assert.NoError(s.T(), err) // Create attribute value1 - v1, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, a.Id, &attributes.ValueCreateUpdate{ + v1, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, a.Id, &attributes.CreateAttributeValueRequest{ Value: value1, }) assert.NoError(s.T(), err) @@ -184,7 +189,7 @@ func (s *AttributeFqnSuite) TestGetAttributesByValueFqns() { assert.Equal(s.T(), v1.Id, val.Value.Id) // Create attribute value2 - v2, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, a.Id, &attributes.ValueCreateUpdate{ + v2, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, a.Id, &attributes.CreateAttributeValueRequest{ Value: value2, }) assert.NoError(s.T(), err) diff --git a/integration/attribute_values_test.go b/integration/attribute_values_test.go index e3855cf781..53b8ed21b8 100644 --- a/integration/attribute_values_test.go +++ b/integration/attribute_values_test.go @@ -9,6 +9,7 @@ import ( "github.com/opentdf/platform/internal/fixtures" "github.com/opentdf/platform/protocol/go/common" "github.com/opentdf/platform/protocol/go/policy/attributes" + "github.com/opentdf/platform/protocol/go/policy/namespaces" policydb "github.com/opentdf/platform/services/policy/db" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" @@ -20,18 +21,18 @@ var nonExistentAttributeValueUuid = "78909865-8888-9999-9999-000000000000" type AttributeValuesSuite struct { suite.Suite - schema string - f fixtures.Fixtures - db fixtures.DBInterface - ctx context.Context + f fixtures.Fixtures + db fixtures.DBInterface + ctx context.Context } func (s *AttributeValuesSuite) SetupSuite() { slog.Info("setting up db.AttributeValues test suite") s.ctx = context.Background() fixtureKeyAccessServerId = s.f.GetKasRegistryKey("key_access_server_1").Id - s.schema = "test_opentdf_attribute_values" - s.db = fixtures.NewDBInterface(*Config) + c := *Config + c.DB.Schema = "test_opentdf_attribute_values" + s.db = fixtures.NewDBInterface(c) s.f = fixtures.NewFixture(s.db) s.f.Provision() stillActiveNsId, stillActiveAttributeId, deactivatedAttrValueId = setupDeactivateAttributeValue(s) @@ -58,12 +59,12 @@ func (s *AttributeValuesSuite) Test_ListAttributeValues() { assert.Equal(s.T(), f1.Id, item.Id) assert.Equal(s.T(), f1.Value, item.Value) assert.Equal(s.T(), len(f1.Members), len(item.Members)) - assert.Equal(s.T(), f1.AttributeDefinitionId, item.AttributeId) + // assert.Equal(s.T(), f1.AttributeDefinitionId, item.AttributeId) } else if item.Id == f2.Id { assert.Equal(s.T(), f2.Id, item.Id) assert.Equal(s.T(), f2.Value, item.Value) assert.Equal(s.T(), len(f2.Members), len(item.Members)) - assert.Equal(s.T(), f2.AttributeDefinitionId, item.AttributeId) + // assert.Equal(s.T(), f2.AttributeDefinitionId, item.AttributeId) } } } @@ -77,7 +78,7 @@ func (s *AttributeValuesSuite) Test_GetAttributeValue() { assert.Equal(s.T(), f.Id, v.Id) assert.Equal(s.T(), f.Value, v.Value) assert.Equal(s.T(), len(f.Members), len(v.Members)) - assert.Equal(s.T(), f.AttributeDefinitionId, v.AttributeId) + // assert.Equal(s.T(), f.AttributeDefinitionId, v.AttributeId) assert.Equal(s.T(), "https://example.com/attr/attr1/value/value1", v.Fqn) } @@ -91,10 +92,10 @@ func (s *AttributeValuesSuite) Test_GetAttributeValue_NotFound() { func (s *AttributeValuesSuite) Test_CreateAttributeValue_SetsActiveStateTrueByDefault() { attrDef := s.f.GetAttributeKey("example.net/attr/attr1") - value := &attributes.ValueCreateUpdate{ + req := &attributes.CreateAttributeValueRequest{ Value: "testing create gives active true by default", } - createdValue, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, attrDef.Id, value) + createdValue, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, attrDef.Id, req) assert.Nil(s.T(), err) assert.NotNil(s.T(), createdValue) assert.Equal(s.T(), true, createdValue.Active.Value) @@ -118,10 +119,9 @@ func (s *AttributeValuesSuite) Test_CreateAttributeValue_NoMembers_Succeeds() { Labels: map[string]string{ "name": "this is the test name of my attribute value", }, - Description: "test create attribute value description", } - value := &attributes.ValueCreateUpdate{ + value := &attributes.CreateAttributeValueRequest{ Value: "value create with members test value", Metadata: metadata, } @@ -135,7 +135,6 @@ func (s *AttributeValuesSuite) Test_CreateAttributeValue_NoMembers_Succeeds() { assert.Equal(s.T(), createdValue.Id, got.Id) assert.Equal(s.T(), createdValue.Value, got.Value) assert.Equal(s.T(), len(createdValue.Members), len(got.Members)) - assert.Equal(s.T(), createdValue.Metadata.Description, got.Metadata.Description) assert.EqualValues(s.T(), createdValue.Metadata.Labels, got.Metadata.Labels) } @@ -145,10 +144,9 @@ func (s *AttributeValuesSuite) Test_CreateAttributeValue_WithMembers_Succeeds() Labels: map[string]string{ "name": "testing create with members", }, - Description: "testing create with members", } - value := &attributes.ValueCreateUpdate{ + value := &attributes.CreateAttributeValueRequest{ Value: "value3", Members: []string{ s.f.GetAttributeValueKey("example.net/attr/attr1/value/value1").Id, @@ -165,13 +163,12 @@ func (s *AttributeValuesSuite) Test_CreateAttributeValue_WithMembers_Succeeds() assert.NotNil(s.T(), got) assert.Equal(s.T(), createdValue.Id, got.Id) assert.Equal(s.T(), createdValue.Value, got.Value) - assert.Equal(s.T(), createdValue.Metadata.Description, got.Metadata.Description) assert.EqualValues(s.T(), createdValue.Metadata.Labels, got.Metadata.Labels) assert.EqualValues(s.T(), createdValue.Members, got.Members) } func (s *AttributeValuesSuite) Test_CreateAttributeValue_WithInvalidAttributeId_Fails() { - value := &attributes.ValueCreateUpdate{ + value := &attributes.CreateAttributeValueRequest{ Value: "some value", } createdValue, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, nonExistentAttrId, value) @@ -181,53 +178,71 @@ func (s *AttributeValuesSuite) Test_CreateAttributeValue_WithInvalidAttributeId_ } func (s *AttributeValuesSuite) Test_UpdateAttributeValue() { + fixedLabel := "fixed label" + updateLabel := "update label" + updatedLabel := "true" + newLabel := "new label" + + labels := map[string]string{ + "fixed": fixedLabel, + "update": updateLabel, + } + updateLabels := map[string]string{ + "update": updatedLabel, + "new": newLabel, + } + expectedLabels := map[string]string{ + "fixed": fixedLabel, + "update": updatedLabel, + "new": newLabel, + } + // create a value attrDef := s.f.GetAttributeKey("example.net/attr/attr1") - metadata := &common.MetadataMutable{ - Labels: map[string]string{ - "name": "created attribute value", + created, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, attrDef.Id, &attributes.CreateAttributeValueRequest{ + Value: "created value testing update", + Metadata: &common.MetadataMutable{ + Labels: labels, }, - Description: "created attribute value", - } + }) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), created) - value := &attributes.ValueCreateUpdate{ - Value: "created value testing update", - Metadata: metadata, - } - createdValue, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, attrDef.Id, value) + // update with no changes + updatedWithoutChange, err := s.db.PolicyClient.UpdateAttributeValue(s.ctx, created.Id, &attributes.UpdateAttributeValueRequest{}) assert.Nil(s.T(), err) - assert.NotNil(s.T(), createdValue) + assert.NotNil(s.T(), updatedWithoutChange) + assert.Equal(s.T(), created.Id, updatedWithoutChange.Id) - // update the created value - updatedValue := &attributes.ValueCreateUpdate{ - Value: "updated value testing update", + // update with changes + updatedWithChange, err := s.db.PolicyClient.UpdateAttributeValue(s.ctx, created.Id, &attributes.UpdateAttributeValueRequest{ Metadata: &common.MetadataMutable{ - Labels: map[string]string{ - "name": "updated attribute value", - }, - Description: "updated attribute value", + Labels: updateLabels, }, - } - updated, err := s.db.PolicyClient.UpdateAttributeValue(s.ctx, createdValue.Id, updatedValue) + MetadataUpdateBehavior: common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_EXTEND, + }) assert.Nil(s.T(), err) - assert.NotNil(s.T(), updated) + assert.NotNil(s.T(), updatedWithChange) + assert.Equal(s.T(), created.Id, updatedWithChange.Id) - // get it again and compare - got, err := s.db.PolicyClient.GetAttributeValue(s.ctx, createdValue.Id) + // get it again to verify it was updated + got, err := s.db.PolicyClient.GetAttributeValue(s.ctx, created.Id) assert.Nil(s.T(), err) assert.NotNil(s.T(), got) - assert.Equal(s.T(), updated.Id, got.Id) - assert.Equal(s.T(), updatedValue.Value, got.Value) - assert.Equal(s.T(), updatedValue.Metadata.Description, got.Metadata.Description) - assert.EqualValues(s.T(), updatedValue.Metadata.Labels, got.Metadata.Labels) - assert.Equal(s.T(), len(updatedValue.Members), len(got.Members)) + assert.Equal(s.T(), created.Id, got.Id) + assert.EqualValues(s.T(), expectedLabels, got.Metadata.GetLabels()) } func (s *AttributeValuesSuite) Test_UpdateAttributeValue_WithInvalidId_Fails() { - updatedValue := &attributes.ValueCreateUpdate{ - Value: "updated value testing update", - } - updated, err := s.db.PolicyClient.UpdateAttributeValue(s.ctx, nonExistentAttributeValueUuid, updatedValue) + updated, err := s.db.PolicyClient.UpdateAttributeValue(s.ctx, nonExistentAttributeValueUuid, &attributes.UpdateAttributeValueRequest{ + // some data is required to ensure the request reaches the db + Metadata: &common.MetadataMutable{ + Labels: map[string]string{ + "update": "true", + }, + }, + MetadataUpdateBehavior: common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_EXTEND, + }) assert.NotNil(s.T(), err) assert.Nil(s.T(), updated) assert.ErrorIs(s.T(), err, db.ErrNotFound) @@ -235,20 +250,20 @@ func (s *AttributeValuesSuite) Test_UpdateAttributeValue_WithInvalidId_Fails() { func (s *AttributeValuesSuite) Test_DeleteAttribute() { // create a value - value := &attributes.ValueCreateUpdate{ + value := &attributes.CreateAttributeValueRequest{ Value: "created value testing delete", } - createdValue, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, s.f.GetAttributeKey("example.net/attr/attr1").Id, value) + created, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, s.f.GetAttributeKey("example.net/attr/attr1").Id, value) assert.Nil(s.T(), err) - assert.NotNil(s.T(), createdValue) + assert.NotNil(s.T(), created) // delete it - resp, err := s.db.PolicyClient.DeleteAttributeValue(s.ctx, createdValue.Id) + resp, err := s.db.PolicyClient.DeleteAttributeValue(s.ctx, created.Id) assert.Nil(s.T(), err) assert.NotNil(s.T(), resp) // get it again to verify it no longer exists - got, err := s.db.PolicyClient.GetAttributeValue(s.ctx, createdValue.Id) + got, err := s.db.PolicyClient.GetAttributeValue(s.ctx, created.Id) assert.NotNil(s.T(), err) assert.Nil(s.T(), got) } @@ -270,14 +285,16 @@ func (s *AttributeValuesSuite) Test_DeactivateAttributeValue_WithInvalidIdFails( // reusable setup for creating a namespace -> attr -> value and then deactivating the attribute (cascades to value) func setupDeactivateAttributeValue(s *AttributeValuesSuite) (string, string, string) { // create a namespace - nsId, err := s.db.PolicyClient.CreateNamespace(s.ctx, "cascading-deactivate-attribute-value.com") + n, err := s.db.PolicyClient.CreateNamespace(s.ctx, &namespaces.CreateNamespaceRequest{ + Name: "cascading-deactivate-attribute-value.com", + }) assert.Nil(s.T(), err) - assert.NotEqual(s.T(), "", nsId) + assert.NotEqual(s.T(), "", n) // add an attribute under that namespaces - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: "test__cascading-deactivate-attr-value", - NamespaceId: nsId, + NamespaceId: n.Id, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, } createdAttr, err := s.db.PolicyClient.CreateAttribute(s.ctx, attr) @@ -285,7 +302,7 @@ func setupDeactivateAttributeValue(s *AttributeValuesSuite) (string, string, str assert.NotNil(s.T(), createdAttr) // add a value under that attribute - val := &attributes.ValueCreateUpdate{ + val := &attributes.CreateAttributeValueRequest{ Value: "test__cascading-deactivate-attr-value-value", } createdVal, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, createdAttr.Id, val) @@ -297,7 +314,7 @@ func setupDeactivateAttributeValue(s *AttributeValuesSuite) (string, string, str assert.Nil(s.T(), err) assert.NotNil(s.T(), deactivatedAttr) - return nsId, createdAttr.Id, createdVal.Id + return n.Id, createdAttr.Id, createdVal.Id } // Verify behavior that DB does not bubble up deactivation of value to attributes and namespaces @@ -485,7 +502,7 @@ func (s *AttributeValuesSuite) Test_RemoveKeyAccessServerFromValue_Returns_Error func (s *AttributeValuesSuite) Test_RemoveKeyAccessServerFromValue_Returns_Error_When_KeyAccessServer_Not_Found() { v := &attributes.ValueKeyAccessServer{ ValueId: s.f.GetAttributeValueKey("example.net/attr/attr1/value/value1").Id, - KeyAccessServerId: "non-existent-kas-id", + KeyAccessServerId: nonExistentAttrId, } resp, err := s.db.PolicyClient.RemoveKeyAccessServerFromValue(s.ctx, v) diff --git a/integration/attributes_test.go b/integration/attributes_test.go index 235563a235..c94fbc9337 100644 --- a/integration/attributes_test.go +++ b/integration/attributes_test.go @@ -10,6 +10,7 @@ import ( "github.com/opentdf/platform/internal/fixtures" "github.com/opentdf/platform/protocol/go/common" "github.com/opentdf/platform/protocol/go/policy/attributes" + "github.com/opentdf/platform/protocol/go/policy/namespaces" policydb "github.com/opentdf/platform/services/policy/db" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" @@ -17,10 +18,9 @@ import ( type AttributesSuite struct { suite.Suite - schema string - f fixtures.Fixtures - db fixtures.DBInterface - ctx context.Context + f fixtures.Fixtures + db fixtures.DBInterface + ctx context.Context } var ( @@ -34,8 +34,9 @@ func (s *AttributesSuite) SetupSuite() { s.ctx = context.Background() fixtureNamespaceId = s.f.GetNamespaceKey("example.com").Id fixtureKeyAccessServerId = s.f.GetKasRegistryKey("key_access_server_1").Id - s.schema = "test_opentdf_attribute_definitions" - s.db = fixtures.NewDBInterface(*Config) + c := *Config + c.DB.Schema = "test_opentdf_attribute_definitions" + s.db = fixtures.NewDBInterface(c) s.f = fixtures.NewFixture(s.db) s.f.Provision() stillActiveNsId, deactivatedAttrId, deactivatedAttrValueId = setupCascadeDeactivateAttribute(s) @@ -60,7 +61,7 @@ func (s *AttributesSuite) getAttributeFixtures() []fixtures.FixtureDataAttribute } func (s *AttributesSuite) Test_CreateAttribute_NoMetadataSucceeds() { - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: "test__create_attribute_no_metadata", NamespaceId: fixtureNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, @@ -71,7 +72,7 @@ func (s *AttributesSuite) Test_CreateAttribute_NoMetadataSucceeds() { } func (s *AttributesSuite) Test_CreateAttribute_WithMetadataSucceeds() { - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: "test__create_attribute_with_metadata", NamespaceId: fixtureNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF, @@ -79,7 +80,6 @@ func (s *AttributesSuite) Test_CreateAttribute_WithMetadataSucceeds() { Labels: map[string]string{ "origin": "Some info about origin", }, - Description: "Attribute test description", }, } createdAttr, err := s.db.PolicyClient.CreateAttribute(s.ctx, attr) @@ -88,7 +88,7 @@ func (s *AttributesSuite) Test_CreateAttribute_WithMetadataSucceeds() { } func (s *AttributesSuite) Test_CreateAttribute_SetsActiveStateTrueByDefault() { - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: "test__create_attribute_active_state_default", NamespaceId: fixtureNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, @@ -100,7 +100,7 @@ func (s *AttributesSuite) Test_CreateAttribute_SetsActiveStateTrueByDefault() { } func (s *AttributesSuite) Test_CreateAttribute_WithInvalidNamespaceFails() { - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: "test__create_attribute_invalid_namespace", NamespaceId: nonExistentNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, @@ -112,7 +112,7 @@ func (s *AttributesSuite) Test_CreateAttribute_WithInvalidNamespaceFails() { } func (s *AttributesSuite) Test_CreateAttribute_WithNonUniqueNameConflictFails() { - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: s.f.GetAttributeKey("example.com/attr/attr1").Name, NamespaceId: fixtureNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, @@ -125,7 +125,7 @@ func (s *AttributesSuite) Test_CreateAttribute_WithNonUniqueNameConflictFails() func (s *AttributesSuite) Test_CreateAttribute_WithEveryRuleSucceeds() { otherNamespaceId := s.f.GetNamespaceKey("example.net").Id - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: "test__create_attribute_with_any_of_rule_value", NamespaceId: otherNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF, @@ -134,7 +134,7 @@ func (s *AttributesSuite) Test_CreateAttribute_WithEveryRuleSucceeds() { assert.Nil(s.T(), err) assert.NotNil(s.T(), createdAttr) - attr = &attributes.AttributeCreateUpdate{ + attr = &attributes.CreateAttributeRequest{ Name: "test__create_attribute_with_all_of_rule_value", NamespaceId: otherNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, @@ -143,7 +143,7 @@ func (s *AttributesSuite) Test_CreateAttribute_WithEveryRuleSucceeds() { assert.Nil(s.T(), err) assert.NotNil(s.T(), createdAttr) - attr = &attributes.AttributeCreateUpdate{ + attr = &attributes.CreateAttributeRequest{ Name: "test__create_attribute_with_unspecified_rule_value", NamespaceId: otherNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED, @@ -152,7 +152,7 @@ func (s *AttributesSuite) Test_CreateAttribute_WithEveryRuleSucceeds() { assert.Nil(s.T(), err) assert.NotNil(s.T(), createdAttr) - attr = &attributes.AttributeCreateUpdate{ + attr = &attributes.CreateAttributeRequest{ Name: "test__create_attribute_with_hierarchy_rule_value", NamespaceId: otherNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY, @@ -163,7 +163,7 @@ func (s *AttributesSuite) Test_CreateAttribute_WithEveryRuleSucceeds() { } func (s *AttributesSuite) Test_CreateAttribute_WithInvalidRuleFails() { - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: "test__create_attribute_with_invalid_rule", NamespaceId: fixtureNamespaceId, // fake an enum value index far beyond reason @@ -228,36 +228,70 @@ func (s *AttributesSuite) Test_ListAttribute() { } func (s *AttributesSuite) Test_UpdateAttribute() { - attr := &attributes.AttributeCreateUpdate{ + fixedLabel := "fixed label" + updateLabel := "update label" + updatedLabel := "true" + newLabel := "new label" + + labels := map[string]string{ + "fixed": fixedLabel, + "update": updateLabel, + } + updateLabels := map[string]string{ + "update": updatedLabel, + "new": newLabel, + } + expectedLabels := map[string]string{ + "fixed": fixedLabel, + "update": updatedLabel, + "new": newLabel, + } + + attr := &attributes.CreateAttributeRequest{ Name: "test__update_attribute", NamespaceId: fixtureNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED, + Metadata: &common.MetadataMutable{ + Labels: labels, + }, } - createdAttr, err := s.db.PolicyClient.CreateAttribute(s.ctx, attr) + created, err := s.db.PolicyClient.CreateAttribute(s.ctx, attr) assert.Nil(s.T(), err) - assert.NotNil(s.T(), createdAttr) + assert.NotNil(s.T(), created) - // change name and rule - update := &attributes.AttributeCreateUpdate{ - Name: fmt.Sprintf("%s_updated_name", attr.Name), - NamespaceId: fixtureNamespaceId, - Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, - } - resp, err := s.db.PolicyClient.UpdateAttribute(s.ctx, createdAttr.Id, update) + // update with no changes + updatedWithoutChange, err := s.db.PolicyClient.UpdateAttribute(s.ctx, created.Id, &attributes.UpdateAttributeRequest{}) assert.Nil(s.T(), err) - assert.NotNil(s.T(), resp) + assert.NotNil(s.T(), updatedWithoutChange) + assert.Equal(s.T(), created.Id, updatedWithoutChange.Id) - updated, err := s.db.PolicyClient.GetAttribute(s.ctx, createdAttr.Id) + // update with metadata + updatedWithChange, err := s.db.PolicyClient.UpdateAttribute(s.ctx, created.Id, &attributes.UpdateAttributeRequest{ + Metadata: &common.MetadataMutable{ + Labels: updateLabels, + }, + MetadataUpdateBehavior: common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_EXTEND, + }) assert.Nil(s.T(), err) - assert.NotNil(s.T(), updated) - assert.Equal(s.T(), update.Name, update.Name) + assert.NotNil(s.T(), updatedWithChange) + assert.Equal(s.T(), created.Id, updatedWithChange.Id) + + got, err := s.db.PolicyClient.GetAttribute(s.ctx, created.Id) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), got) + assert.Equal(s.T(), created.Id, got.Id) + assert.EqualValues(s.T(), expectedLabels, got.Metadata.GetLabels()) } func (s *AttributesSuite) Test_UpdateAttribute_WithInvalidIdFails() { - update := &attributes.AttributeCreateUpdate{ - Name: "test__update_attribute_invalid_id", - NamespaceId: fixtureNamespaceId, - Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED, + update := &attributes.UpdateAttributeRequest{ + // Metadata is required otherwise there will be no database request + Metadata: &common.MetadataMutable{ + Labels: map[string]string{ + "origin": "Some info about origin", + }, + }, + MetadataUpdateBehavior: common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_REPLACE, } resp, err := s.db.PolicyClient.UpdateAttribute(s.ctx, nonExistentAttrId, update) assert.NotNil(s.T(), err) @@ -266,7 +300,8 @@ func (s *AttributesSuite) Test_UpdateAttribute_WithInvalidIdFails() { } func (s *AttributesSuite) Test_UpdateAttribute_NamespaceIsImmutableOnUpdate() { - original := &attributes.AttributeCreateUpdate{ + s.T().Skip("Defunct test: not possible to test update in this way; check request struct for validation instead.") + original := &attributes.CreateAttributeRequest{ Name: "test__update_attribute_namespace_immutable", NamespaceId: s.f.GetNamespaceKey("example.com").Id, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED, @@ -276,11 +311,7 @@ func (s *AttributesSuite) Test_UpdateAttribute_NamespaceIsImmutableOnUpdate() { assert.NotNil(s.T(), createdAttr) // should error on attempt to change namespace - update := &attributes.AttributeCreateUpdate{ - Name: original.Name, - NamespaceId: s.f.GetNamespaceKey("example.net").Id, - Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED, - } + update := &attributes.UpdateAttributeRequest{} resp, err := s.db.PolicyClient.UpdateAttribute(s.ctx, createdAttr.Id, update) assert.NotNil(s.T(), err) assert.Nil(s.T(), resp) @@ -294,8 +325,9 @@ func (s *AttributesSuite) Test_UpdateAttribute_NamespaceIsImmutableOnUpdate() { } func (s *AttributesSuite) Test_UpdateAttributeWithSameNameAndNamespaceConflictFails() { + s.T().Skip("Defunct test: not possible to test update in this way; check request struct for validation instead.") fixtureData := s.f.GetAttributeKey("example.org/attr/attr3") - original := &attributes.AttributeCreateUpdate{ + original := &attributes.CreateAttributeRequest{ Name: "test__update_attribute_with_same_name_and_namespace", NamespaceId: fixtureData.NamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF, @@ -304,11 +336,7 @@ func (s *AttributesSuite) Test_UpdateAttributeWithSameNameAndNamespaceConflictFa assert.Nil(s.T(), err) assert.NotNil(s.T(), createdAttr) - conflict := &attributes.AttributeCreateUpdate{ - Name: original.Name, - NamespaceId: original.NamespaceId, - Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, - } + conflict := &attributes.UpdateAttributeRequest{} resp, err := s.db.PolicyClient.UpdateAttribute(s.ctx, fixtureData.Id, conflict) assert.NotNil(s.T(), err) assert.Nil(s.T(), resp) @@ -316,7 +344,7 @@ func (s *AttributesSuite) Test_UpdateAttributeWithSameNameAndNamespaceConflictFa } func (s *AttributesSuite) Test_DeleteAttribute() { - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: "test__delete_attribute", NamespaceId: fixtureNamespaceId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED, @@ -352,14 +380,16 @@ func (s *AttributesSuite) Test_DeactivateAttribute_WithInvalidIdFails() { // reusable setup for creating a namespace -> attr -> value and then deactivating the attribute (cascades to value) func setupCascadeDeactivateAttribute(s *AttributesSuite) (string, string, string) { // create a namespace - nsId, err := s.db.PolicyClient.CreateNamespace(s.ctx, "cascading-deactivate-attribute.com") + n, err := s.db.PolicyClient.CreateNamespace(s.ctx, &namespaces.CreateNamespaceRequest{ + Name: "test__cascading-deactivate-ns", + }) assert.Nil(s.T(), err) - assert.NotEqual(s.T(), "", nsId) + assert.NotEqual(s.T(), "", n.Id) // add an attribute under that namespaces - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: "test__cascading-deactivate-attr", - NamespaceId: nsId, + NamespaceId: n.Id, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, } createdAttr, err := s.db.PolicyClient.CreateAttribute(s.ctx, attr) @@ -367,7 +397,7 @@ func setupCascadeDeactivateAttribute(s *AttributesSuite) (string, string, string assert.NotNil(s.T(), createdAttr) // add a value under that attribute - val := &attributes.ValueCreateUpdate{ + val := &attributes.CreateAttributeValueRequest{ Value: "test__cascading-deactivate-attr-value", } createdVal, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, createdAttr.Id, val) @@ -379,7 +409,7 @@ func setupCascadeDeactivateAttribute(s *AttributesSuite) (string, string, string assert.Nil(s.T(), err) assert.NotNil(s.T(), deactivatedAttr) - return nsId, createdAttr.Id, createdVal.Id + return n.Id, createdAttr.Id, createdVal.Id } func (s *AttributesSuite) Test_DeactivateAttribute_Cascades_List() { diff --git a/integration/kas_registry_test.go b/integration/kas_registry_test.go index 9ef065fc00..79359976a4 100644 --- a/integration/kas_registry_test.go +++ b/integration/kas_registry_test.go @@ -18,17 +18,17 @@ var nonExistentKasRegistryId = "78909865-8888-9999-9999-000000654321" type KasRegistrySuite struct { suite.Suite - schema string - f fixtures.Fixtures - db fixtures.DBInterface - ctx context.Context + f fixtures.Fixtures + db fixtures.DBInterface + ctx context.Context } func (s *KasRegistrySuite) SetupSuite() { slog.Info("setting up db.KasRegistry test suite") s.ctx = context.Background() - s.schema = "test_opentdf_kas_registry" - s.db = fixtures.NewDBInterface(*Config) + c := *Config + c.DB.Schema = "test_opentdf_kas_registry" + s.db = fixtures.NewDBInterface(c) s.f = fixtures.NewFixture(s.db) s.f.Provision() } @@ -96,7 +96,6 @@ func (s *KasRegistrySuite) Test_CreateKeyAccessServer_Remote() { Labels: map[string]string{ "name": "this is the test name of my key access server", }, - Description: "test create key access server description", } pubKey := &kasr.PublicKey{ @@ -105,20 +104,15 @@ func (s *KasRegistrySuite) Test_CreateKeyAccessServer_Remote() { }, } - kasRegistry := &kasr.KeyAccessServerCreateUpdate{ + kasRegistry := &kasr.CreateKeyAccessServerRequest{ Uri: "kas.uri", PublicKey: pubKey, Metadata: metadata, } - createdKasRegistry, err := s.db.KASRClient.CreateKeyAccessServer(s.ctx, kasRegistry) + r, err := s.db.KASRClient.CreateKeyAccessServer(s.ctx, kasRegistry) assert.Nil(s.T(), err) - assert.NotNil(s.T(), createdKasRegistry) - assert.Equal(s.T(), kasRegistry.Uri, createdKasRegistry.Uri) - assert.Equal(s.T(), kasRegistry.PublicKey.GetRemote(), createdKasRegistry.PublicKey.GetRemote()) - assert.Equal(s.T(), createdKasRegistry.PublicKey.GetLocal(), "") - assert.Equal(s.T(), kasRegistry.Metadata.Description, createdKasRegistry.Metadata.Description) - assert.EqualValues(s.T(), kasRegistry.Metadata.Labels, createdKasRegistry.Metadata.Labels) - assert.NotEqual(s.T(), "", createdKasRegistry.Id) + assert.NotNil(s.T(), r) + assert.NotEqual(s.T(), "", r.Id) } func (s *KasRegistrySuite) Test_CreateKeyAccessServer_Local() { @@ -126,7 +120,6 @@ func (s *KasRegistrySuite) Test_CreateKeyAccessServer_Local() { Labels: map[string]string{ "name": "local KAS", }, - Description: "this KAS has a locally provided key", } pubKey := &kasr.PublicKey{ @@ -135,62 +128,75 @@ func (s *KasRegistrySuite) Test_CreateKeyAccessServer_Local() { }, } - kasRegistry := &kasr.KeyAccessServerCreateUpdate{ + kasRegistry := &kasr.CreateKeyAccessServerRequest{ Uri: "testingCreation.uri.com", PublicKey: pubKey, Metadata: metadata, } - createdKasRegistry, err := s.db.KASRClient.CreateKeyAccessServer(s.ctx, kasRegistry) + r, err := s.db.KASRClient.CreateKeyAccessServer(s.ctx, kasRegistry) assert.Nil(s.T(), err) - assert.NotNil(s.T(), createdKasRegistry) - assert.Equal(s.T(), kasRegistry.Uri, createdKasRegistry.Uri) - assert.Equal(s.T(), kasRegistry.PublicKey.GetLocal(), createdKasRegistry.PublicKey.GetLocal()) - assert.Equal(s.T(), createdKasRegistry.PublicKey.GetRemote(), "") - assert.Equal(s.T(), kasRegistry.Metadata.Description, createdKasRegistry.Metadata.Description) - assert.EqualValues(s.T(), kasRegistry.Metadata.Labels, createdKasRegistry.Metadata.Labels) - assert.NotEqual(s.T(), "", createdKasRegistry.Id) + assert.NotNil(s.T(), r) + assert.NotEqual(s.T(), "", r.Id) } func (s *KasRegistrySuite) Test_UpdateKeyAccessServer() { + fixedLabel := "fixed label" + updateLabel := "update label" + updatedLabel := "true" + newLabel := "new label" + + uri := "testingUpdateWithRemoteKey.com" + pubKeyRemote := "https://remote.com/key" + updatedUri := "updatedUri.com" + updatedPubKeyRemote := "https://remote2.com/key" + // create a test KAS - pubKey := &kasr.PublicKey{ - PublicKey: &kasr.PublicKey_Remote{ - Remote: "https://remote.com/key", + created, err := s.db.KASRClient.CreateKeyAccessServer(s.ctx, &kasr.CreateKeyAccessServerRequest{ + Uri: uri, + PublicKey: &kasr.PublicKey{ + PublicKey: &kasr.PublicKey_Remote{ + Remote: pubKeyRemote, + }, }, - } - testKas := &kasr.KeyAccessServerCreateUpdate{ - Uri: "testingUpdateWithRemoteKey.com", - PublicKey: pubKey, - } - createdKas, err := s.db.KASRClient.CreateKeyAccessServer(s.ctx, testKas) + Metadata: &common.MetadataMutable{ + Labels: map[string]string{ + "fixed": fixedLabel, + "update": updateLabel, + }, + }, + }) assert.Nil(s.T(), err) - assert.NotNil(s.T(), createdKas) + assert.NotNil(s.T(), created) // update it with new values and metadata - updatedMetadata := &common.MetadataMutable{ - Labels: map[string]string{ - "name": "updated name", + updated, err := s.db.KASRClient.UpdateKeyAccessServer(s.ctx, created.Id, &kasr.UpdateKeyAccessServerRequest{ + Uri: updatedUri, + PublicKey: &kasr.PublicKey{ + PublicKey: &kasr.PublicKey_Remote{ + Remote: updatedPubKeyRemote, + }, }, - Description: "updated description", - } - updatedKas := &kasr.KeyAccessServerCreateUpdate{ - Uri: "updatedUri.com", - PublicKey: pubKey, - Metadata: updatedMetadata, - } - updated, err := s.db.KASRClient.UpdateKeyAccessServer(s.ctx, createdKas.Id, updatedKas) + Metadata: &common.MetadataMutable{ + Labels: map[string]string{ + "update": updatedLabel, + "new": newLabel, + }, + }, + MetadataUpdateBehavior: common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_EXTEND, + }) assert.Nil(s.T(), err) assert.NotNil(s.T(), updated) // get after update to validate changes were successful - got, err := s.db.KASRClient.GetKeyAccessServer(s.ctx, createdKas.Id) + got, err := s.db.KASRClient.GetKeyAccessServer(s.ctx, created.Id) assert.Nil(s.T(), err) assert.NotNil(s.T(), got) - assert.Equal(s.T(), createdKas.Id, got.Id) - assert.Equal(s.T(), updatedKas.Uri, got.Uri) - assert.Equal(s.T(), updatedKas.PublicKey.GetRemote(), got.PublicKey.GetRemote()) - assert.Equal(s.T(), updatedMetadata.Description, got.Metadata.Description) - assert.EqualValues(s.T(), updatedMetadata.Labels, got.Metadata.Labels) + assert.Equal(s.T(), created.Id, got.Id) + assert.Equal(s.T(), updatedUri, got.Uri) + assert.Equal(s.T(), updatedPubKeyRemote, got.PublicKey.GetRemote()) + assert.Equal(s.T(), fixedLabel, got.Metadata.Labels["fixed"]) + assert.Equal(s.T(), updatedLabel, got.Metadata.Labels["update"]) + assert.Equal(s.T(), newLabel, got.Metadata.Labels["new"]) } func (s *KasRegistrySuite) Test_UpdateKeyAccessServerWithNonExistentIdFails() { @@ -199,7 +205,7 @@ func (s *KasRegistrySuite) Test_UpdateKeyAccessServerWithNonExistentIdFails() { Local: "this_is_a_local_key", }, } - updatedKas := &kasr.KeyAccessServerCreateUpdate{ + updatedKas := &kasr.UpdateKeyAccessServerRequest{ Uri: "someKasUri.com", PublicKey: pubKey, } @@ -216,7 +222,7 @@ func (s *KasRegistrySuite) Test_DeleteKeyAccessServer() { Remote: "https://remote.com/key", }, } - testKas := &kasr.KeyAccessServerCreateUpdate{ + testKas := &kasr.CreateKeyAccessServerRequest{ Uri: "deleting.net", PublicKey: pubKey, } diff --git a/integration/namespaces_test.go b/integration/namespaces_test.go index 2034a44b1d..784c544f0e 100644 --- a/integration/namespaces_test.go +++ b/integration/namespaces_test.go @@ -9,7 +9,9 @@ import ( "github.com/opentdf/platform/internal/db" "github.com/opentdf/platform/internal/fixtures" + "github.com/opentdf/platform/protocol/go/common" "github.com/opentdf/platform/protocol/go/policy/attributes" + "github.com/opentdf/platform/protocol/go/policy/namespaces" policydb "github.com/opentdf/platform/services/policy/db" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" @@ -17,10 +19,9 @@ import ( type NamespacesSuite struct { suite.Suite - schema string - f fixtures.Fixtures - db fixtures.DBInterface - ctx context.Context + f fixtures.Fixtures + db fixtures.DBInterface + ctx context.Context } const nonExistentNamespaceId = "88888888-2222-3333-4444-999999999999" @@ -36,8 +37,9 @@ var ( func (s *NamespacesSuite) SetupSuite() { slog.Info("setting up db.Namespaces test suite") s.ctx = context.Background() - s.schema = "test_opentdf_namespaces" - s.db = fixtures.NewDBInterface(*Config) + c := *Config + c.DB.Schema = "test_opentdf_namespaces" + s.db = fixtures.NewDBInterface(c) s.f = fixtures.NewFixture(s.db) s.f.Provision() deactivatedNsId, deactivatedAttrId, deactivatedAttrValueId = setupCascadeDeactivateNamespace(s) @@ -61,14 +63,14 @@ func (s *NamespacesSuite) Test_CreateNamespace() { for _, ns := range testData { ns.Name = strings.Replace(ns.Name, "example", "test", 1) - createdNamespace, err := s.db.PolicyClient.CreateNamespace(s.ctx, ns.Name) + createdNamespace, err := s.db.PolicyClient.CreateNamespace(s.ctx, &namespaces.CreateNamespaceRequest{Name: ns.Name}) assert.Nil(s.T(), err) assert.NotNil(s.T(), createdNamespace) } // Creating a namespace with a name conflict should fail for _, ns := range testData { - _, err := s.db.PolicyClient.CreateNamespace(s.ctx, ns.Name) + _, err := s.db.PolicyClient.CreateNamespace(s.ctx, &namespaces.CreateNamespaceRequest{Name: ns.Name}) assert.NotNil(s.T(), err) assert.ErrorIs(s.T(), err, db.ErrUniqueConstraintViolation) } @@ -119,31 +121,63 @@ func (s *NamespacesSuite) Test_ListNamespaces() { } func (s *NamespacesSuite) Test_UpdateNamespace() { - testData := s.getActiveNamespaceFixtures() - - for i, ns := range testData { - updatedName := fmt.Sprintf("%s-updated", ns.Name) - testData[i].Name = updatedName - updatedNamespace, err := s.db.PolicyClient.UpdateNamespace(s.ctx, ns.Id, updatedName) - assert.Nil(s.T(), err) - assert.NotNil(s.T(), updatedNamespace) - assert.Equal(s.T(), updatedName, updatedNamespace.Name) + fixedLabel := "fixed label" + updateLabel := "update label" + updatedLabel := "true" + newLabel := "new label" + + labels := map[string]string{ + "fixed": fixedLabel, + "update": updateLabel, + } + updateLabels := map[string]string{ + "update": updatedLabel, + "new": newLabel, + } + expectedLabels := map[string]string{ + "fixed": fixedLabel, + "update": updatedLabel, + "new": newLabel, } - // Update when the namespace does not exist should fail - _, err := s.db.PolicyClient.UpdateNamespace(s.ctx, nonExistentNamespaceId, "new-namespace.com") - assert.NotNil(s.T(), err) - assert.ErrorIs(s.T(), err, db.ErrNotFound) + created, err := s.db.PolicyClient.CreateNamespace(s.ctx, &namespaces.CreateNamespaceRequest{ + Name: "updating-namespace.com", + Metadata: &common.MetadataMutable{ + Labels: labels, + }, + }) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), created) - // Update to a conflict should fail - gotNamespace, e := s.db.PolicyClient.UpdateNamespace(s.ctx, testData[0].Id, testData[1].Name) - assert.Nil(s.T(), gotNamespace) - assert.NotNil(s.T(), e) - assert.ErrorIs(s.T(), e, db.ErrUniqueConstraintViolation) + updatedWithoutChange, err := s.db.PolicyClient.UpdateNamespace(s.ctx, created.Id, &namespaces.UpdateNamespaceRequest{}) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), updatedWithoutChange) + assert.Equal(s.T(), created.Id, updatedWithoutChange.Id) + + updatedWithChange, err := s.db.PolicyClient.UpdateNamespace(s.ctx, created.Id, &namespaces.UpdateNamespaceRequest{ + Metadata: &common.MetadataMutable{ + Labels: updateLabels, + }, + MetadataUpdateBehavior: common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_EXTEND, + }) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), updatedWithChange) + assert.Equal(s.T(), created.Id, updatedWithChange.Id) + + got, err := s.db.PolicyClient.GetNamespace(s.ctx, created.Id) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), got) + assert.Equal(s.T(), created.Id, got.Id) + assert.EqualValues(s.T(), expectedLabels, got.Metadata.GetLabels()) } func (s *NamespacesSuite) Test_UpdateNamespace_DoesNotExist_ShouldFail() { - ns, err := s.db.PolicyClient.UpdateNamespace(s.ctx, nonExistentNamespaceId, "new-namespace.com") + ns, err := s.db.PolicyClient.UpdateNamespace(s.ctx, nonExistentNamespaceId, &namespaces.UpdateNamespaceRequest{ + Metadata: &common.MetadataMutable{ + Labels: map[string]string{"updated": "true"}, + }, + MetadataUpdateBehavior: common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_EXTEND, + }) assert.NotNil(s.T(), err) assert.ErrorIs(s.T(), err, db.ErrNotFound) assert.Nil(s.T(), ns) @@ -161,11 +195,11 @@ func (s *NamespacesSuite) Test_DeleteNamespace() { } // Deletion should succeed when NOT referenced as FK in attribute(s) - newNamespaceId, err := s.db.PolicyClient.CreateNamespace(s.ctx, "new-namespace.com") + n, err := s.db.PolicyClient.CreateNamespace(s.ctx, &namespaces.CreateNamespaceRequest{Name: "deleting-namespace.com"}) assert.Nil(s.T(), err) - assert.NotEqual(s.T(), "", newNamespaceId) + assert.NotEqual(s.T(), "", n) - deleted, err := s.db.PolicyClient.DeleteNamespace(s.ctx, newNamespaceId) + deleted, err := s.db.PolicyClient.DeleteNamespace(s.ctx, n.Id) assert.Nil(s.T(), err) assert.NotNil(s.T(), deleted) @@ -174,21 +208,21 @@ func (s *NamespacesSuite) Test_DeleteNamespace() { assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespaces) for _, ns := range gotNamespaces { - assert.NotEqual(s.T(), newNamespaceId, ns.Id) + assert.NotEqual(s.T(), n.Id, ns.Id) } // Deleted namespace should not be found on Get - _, err = s.db.PolicyClient.GetNamespace(s.ctx, newNamespaceId) + _, err = s.db.PolicyClient.GetNamespace(s.ctx, n.Id) fmt.Println(err) assert.NotNil(s.T(), err) } func (s *NamespacesSuite) Test_DeactivateNamespace() { - id, err := s.db.PolicyClient.CreateNamespace(s.ctx, "testing-sdeactivate-namespace.com") + n, err := s.db.PolicyClient.CreateNamespace(s.ctx, &namespaces.CreateNamespaceRequest{Name: "deactivating-namespace.com"}) assert.Nil(s.T(), err) - assert.NotEqual(s.T(), "", id) + assert.NotEqual(s.T(), "", n) - inactive, err := s.db.PolicyClient.DeactivateNamespace(s.ctx, id) + inactive, err := s.db.PolicyClient.DeactivateNamespace(s.ctx, n.Id) assert.Nil(s.T(), err) assert.NotNil(s.T(), inactive) @@ -197,28 +231,28 @@ func (s *NamespacesSuite) Test_DeactivateNamespace() { assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespaces) for _, ns := range gotNamespaces { - assert.NotEqual(s.T(), id, ns.Id) + assert.NotEqual(s.T(), n.Id, ns.Id) } // inactive namespace should still be found on Get - gotNamespace, err := s.db.PolicyClient.GetNamespace(s.ctx, id) + gotNamespace, err := s.db.PolicyClient.GetNamespace(s.ctx, n.Id) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespace) - assert.Equal(s.T(), id, gotNamespace.Id) + assert.Equal(s.T(), n.Id, gotNamespace.Id) assert.Equal(s.T(), false, gotNamespace.Active.Value) } // reusable setup for creating a namespace -> attr -> value and then deactivating the namespace (cascades down) func setupCascadeDeactivateNamespace(s *NamespacesSuite) (string, string, string) { // create a namespace - nsId, err := s.db.PolicyClient.CreateNamespace(s.ctx, "cascading-deactivate-namespace.com") + n, err := s.db.PolicyClient.CreateNamespace(s.ctx, &namespaces.CreateNamespaceRequest{Name: "cascading-deactivate-namespace"}) assert.Nil(s.T(), err) - assert.NotEqual(s.T(), "", nsId) + assert.NotEqual(s.T(), "", n) // add an attribute under that namespaces - attr := &attributes.AttributeCreateUpdate{ + attr := &attributes.CreateAttributeRequest{ Name: "test__cascading-deactivate-attribute", - NamespaceId: nsId, + NamespaceId: n.Id, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, } createdAttr, err := s.db.PolicyClient.CreateAttribute(s.ctx, attr) @@ -226,7 +260,7 @@ func setupCascadeDeactivateNamespace(s *NamespacesSuite) (string, string, string assert.NotNil(s.T(), createdAttr) // add a value under that attribute - val := &attributes.ValueCreateUpdate{ + val := &attributes.CreateAttributeValueRequest{ Value: "test__cascading-deactivate-value", } createdVal, err := s.db.PolicyClient.CreateAttributeValue(s.ctx, createdAttr.Id, val) @@ -234,11 +268,11 @@ func setupCascadeDeactivateNamespace(s *NamespacesSuite) (string, string, string assert.NotNil(s.T(), createdVal) // deactivate the namespace - deletedNs, err := s.db.PolicyClient.DeactivateNamespace(s.ctx, nsId) + deletedNs, err := s.db.PolicyClient.DeactivateNamespace(s.ctx, n.Id) assert.Nil(s.T(), err) assert.NotNil(s.T(), deletedNs) - return nsId, createdAttr.Id, createdVal.Id + return n.Id, createdAttr.Id, createdVal.Id } func (s *NamespacesSuite) Test_DeactivateNamespace_Cascades_List() { diff --git a/integration/resource_mappings_test.go b/integration/resource_mappings_test.go index ab5705391f..bf7eb11507 100644 --- a/integration/resource_mappings_test.go +++ b/integration/resource_mappings_test.go @@ -9,7 +9,7 @@ import ( "github.com/opentdf/platform/internal/db" "github.com/opentdf/platform/internal/fixtures" "github.com/opentdf/platform/protocol/go/common" - resourcemapping "github.com/opentdf/platform/protocol/go/policy/resourcemapping" + "github.com/opentdf/platform/protocol/go/policy/resourcemapping" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" ) @@ -18,17 +18,17 @@ var nonExistentResourceMappingUUID = "45674556-8888-9999-9999-000001230000" type ResourceMappingsSuite struct { suite.Suite - schema string - f fixtures.Fixtures - db fixtures.DBInterface - ctx context.Context + f fixtures.Fixtures + db fixtures.DBInterface + ctx context.Context } func (s *ResourceMappingsSuite) SetupSuite() { slog.Info("setting up db.ResourceMappings test suite") s.ctx = context.Background() - s.schema = "test_opentdf_resource_mappings" - s.db = fixtures.NewDBInterface(*Config) + c := *Config + c.DB.Schema = "test_opentdf_resource_mappings" + s.db = fixtures.NewDBInterface(c) s.f = fixtures.NewFixture(s.db) s.f.Provision() } @@ -51,11 +51,10 @@ func (s *ResourceMappingsSuite) Test_CreateResourceMapping() { Labels: map[string]string{ "name": "this is the test name of my resource mapping", }, - Description: "test create resource mapping description", } attrValue := s.f.GetAttributeValueKey("example.com/attr/attr1/value/value1") - mapping := &resourcemapping.ResourceMappingCreateUpdate{ + mapping := &resourcemapping.CreateResourceMappingRequest{ AttributeValueId: attrValue.Id, Metadata: metadata, Terms: []string{"term1", "term2"}, @@ -68,7 +67,7 @@ func (s *ResourceMappingsSuite) Test_CreateResourceMapping() { func (s *ResourceMappingsSuite) Test_CreateResourceMappingWithUnknownAttributeValueFails() { metadata := &common.MetadataMutable{} - mapping := &resourcemapping.ResourceMappingCreateUpdate{ + mapping := &resourcemapping.CreateResourceMappingRequest{ AttributeValueId: nonExistentAttributeValueUuid, Metadata: metadata, Terms: []string{"term1", "term2"}, @@ -83,7 +82,7 @@ func (s *ResourceMappingsSuite) Test_CreateResourceMappingWithEmptyTermsSucceeds metadata := &common.MetadataMutable{} attrValue := s.f.GetAttributeValueKey("example.com/attr/attr2/value/value2") - mapping := &resourcemapping.ResourceMappingCreateUpdate{ + mapping := &resourcemapping.CreateResourceMappingRequest{ AttributeValueId: attrValue.Id, Metadata: metadata, Terms: []string{}, @@ -137,7 +136,7 @@ func (s *ResourceMappingsSuite) Test_GetResourceMappingOfCreatedSucceeds() { metadata := &common.MetadataMutable{} attrValue := s.f.GetAttributeValueKey("example.com/attr/attr1/value/value2") - mapping := &resourcemapping.ResourceMappingCreateUpdate{ + mapping := &resourcemapping.CreateResourceMappingRequest{ AttributeValueId: attrValue.Id, Metadata: metadata, Terms: []string{"term1", "term2"}, @@ -155,39 +154,65 @@ func (s *ResourceMappingsSuite) Test_GetResourceMappingOfCreatedSucceeds() { } func (s *ResourceMappingsSuite) Test_UpdateResourceMapping() { - metadata := &common.MetadataMutable{ - Labels: map[string]string{ - "name": "some test resource mapping name", - }, - Description: "some description", + fixedLabel := "fixed label" + updateLabel := "update label" + updatedLabel := "true" + newLabel := "new label" + + labels := map[string]string{ + "fixed": fixedLabel, + "update": updateLabel, + } + updateLabels := map[string]string{ + "update": updatedLabel, + "new": newLabel, + } + expectedLabels := map[string]string{ + "fixed": fixedLabel, + "update": updatedLabel, + "new": newLabel, } + terms := []string{"some term", "other term"} + updateTerms := []string{"updated term1", "updated term 2"} + attrValue := s.f.GetAttributeValueKey("example.com/attr/attr2/value/value2") - mapping := &resourcemapping.ResourceMappingCreateUpdate{ + createdMapping, err := s.db.PolicyClient.CreateResourceMapping(s.ctx, &resourcemapping.CreateResourceMappingRequest{ AttributeValueId: attrValue.Id, - Metadata: metadata, - Terms: []string{"some term", "other term"}, - } - createdMapping, err := s.db.PolicyClient.CreateResourceMapping(s.ctx, mapping) + Metadata: &common.MetadataMutable{ + Labels: labels, + }, + Terms: terms, + }) assert.Nil(s.T(), err) assert.NotNil(s.T(), createdMapping) - updatedMetadata := &common.MetadataMutable{ - Labels: map[string]string{ - "name": "new name", - }, - Description: "new description", + if v, err := s.db.PolicyClient.GetResourceMapping(s.ctx, createdMapping.Id); err != nil { + assert.Nil(s.T(), err) + } else { + assert.NotNil(s.T(), v) + assert.Equal(s.T(), createdMapping.Id, v.Id) + assert.Equal(s.T(), createdMapping.AttributeValue.Id, v.AttributeValue.Id) + assert.Equal(s.T(), createdMapping.Terms, v.Terms) } + updateWithoutChange, err := s.db.PolicyClient.UpdateResourceMapping(s.ctx, createdMapping.Id, &resourcemapping.UpdateResourceMappingRequest{}) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), updateWithoutChange) + assert.Equal(s.T(), createdMapping.Id, updateWithoutChange.Id) + // update the created with new metadata and terms - updatedMapping := &resourcemapping.ResourceMappingCreateUpdate{ + updateWithChange, err := s.db.PolicyClient.UpdateResourceMapping(s.ctx, createdMapping.Id, &resourcemapping.UpdateResourceMappingRequest{ AttributeValueId: createdMapping.AttributeValue.Id, - Metadata: updatedMetadata, - Terms: []string{"updated term1", "updated term 2"}, - } - updated, err := s.db.PolicyClient.UpdateResourceMapping(s.ctx, createdMapping.Id, updatedMapping) + Terms: updateTerms, + Metadata: &common.MetadataMutable{ + Labels: updateLabels, + }, + MetadataUpdateBehavior: common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_EXTEND, + }) assert.Nil(s.T(), err) - assert.NotNil(s.T(), updated) + assert.NotNil(s.T(), updateWithChange) + assert.Equal(s.T(), createdMapping.Id, updateWithChange.Id) // get after update to verify db reflects changes made got, err := s.db.PolicyClient.GetResourceMapping(s.ctx, createdMapping.Id) @@ -195,14 +220,13 @@ func (s *ResourceMappingsSuite) Test_UpdateResourceMapping() { assert.NotNil(s.T(), got) assert.Equal(s.T(), createdMapping.Id, got.Id) assert.Equal(s.T(), createdMapping.AttributeValue.Id, got.AttributeValue.Id) - assert.Equal(s.T(), updatedMapping.Terms, got.Terms) - assert.Equal(s.T(), updatedMetadata.Description, got.Metadata.Description) - assert.EqualValues(s.T(), updatedMetadata.Labels, got.Metadata.Labels) + assert.Equal(s.T(), updateTerms, got.Terms) + assert.EqualValues(s.T(), expectedLabels, got.Metadata.GetLabels()) } func (s *ResourceMappingsSuite) Test_UpdateResourceMappingWithUnknownIdFails() { attrValue := s.f.GetAttributeValueKey("example.com/attr/attr2/value/value2") - mapping := &resourcemapping.ResourceMappingCreateUpdate{ + mapping := &resourcemapping.CreateResourceMappingRequest{ AttributeValueId: attrValue.Id, Terms: []string{"asdf qwerty"}, } @@ -211,7 +235,7 @@ func (s *ResourceMappingsSuite) Test_UpdateResourceMappingWithUnknownIdFails() { assert.NotNil(s.T(), createdMapping) // update the created with new metadata and terms - updatedMapping := &resourcemapping.ResourceMappingCreateUpdate{ + updatedMapping := &resourcemapping.UpdateResourceMappingRequest{ AttributeValueId: createdMapping.AttributeValue.Id, Terms: []string{"asdf updated term1"}, } @@ -223,7 +247,7 @@ func (s *ResourceMappingsSuite) Test_UpdateResourceMappingWithUnknownIdFails() { func (s *ResourceMappingsSuite) Test_UpdateResourceMappingWithUnknownAttributeValueIdFails() { attrValue := s.f.GetAttributeValueKey("example.com/attr/attr2/value/value2") - mapping := &resourcemapping.ResourceMappingCreateUpdate{ + mapping := &resourcemapping.CreateResourceMappingRequest{ AttributeValueId: attrValue.Id, Terms: []string{"testing"}, } @@ -231,8 +255,13 @@ func (s *ResourceMappingsSuite) Test_UpdateResourceMappingWithUnknownAttributeVa assert.Nil(s.T(), err) assert.NotNil(s.T(), createdMapping) + m, err := s.db.PolicyClient.GetResourceMapping(s.ctx, createdMapping.Id) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), m) + assert.Equal(s.T(), createdMapping.Id, m.Id) + // update the created with new metadata and terms - updatedMapping := &resourcemapping.ResourceMappingCreateUpdate{ + updatedMapping := &resourcemapping.UpdateResourceMappingRequest{ AttributeValueId: nonExistentAttributeValueUuid, Terms: []string{"testing-2"}, } @@ -244,7 +273,7 @@ func (s *ResourceMappingsSuite) Test_UpdateResourceMappingWithUnknownAttributeVa func (s *ResourceMappingsSuite) Test_DeleteResourceMapping() { attrValue := s.f.GetAttributeValueKey("example.net/attr/attr1/value/value1") - mapping := &resourcemapping.ResourceMappingCreateUpdate{ + mapping := &resourcemapping.CreateResourceMappingRequest{ AttributeValueId: attrValue.Id, Terms: []string{"term1", "term2"}, } diff --git a/integration/subject_mappings_test.go b/integration/subject_mappings_test.go index ebd497004f..05bbac060a 100644 --- a/integration/subject_mappings_test.go +++ b/integration/subject_mappings_test.go @@ -16,17 +16,17 @@ import ( type SubjectMappingsSuite struct { suite.Suite - schema string - f fixtures.Fixtures - db fixtures.DBInterface - ctx context.Context + f fixtures.Fixtures + db fixtures.DBInterface + ctx context.Context } func (s *SubjectMappingsSuite) SetupSuite() { slog.Info("setting up db.SubjectMappings test suite") s.ctx = context.Background() - s.schema = "test_opentdf_subject_mappings" - s.db = fixtures.NewDBInterface(*Config) + c := *Config + c.DB.Schema = "test_opentdf_subject_mappings" + s.db = fixtures.NewDBInterface(c) s.f = fixtures.NewFixture(s.db) s.f.Provision() } diff --git a/internal/db/db.go b/internal/db/db.go index b971d35137..c330555ffd 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -7,6 +7,7 @@ import ( "net" sq "github.com/Masterminds/squirrel" + "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgconn" "github.com/jackc/pgx/v5/pgxpool" @@ -155,35 +156,19 @@ func (c Client) Query(ctx context.Context, sql string, args []interface{}, err e return r, WrapIfKnownInvalidQueryErr(e) } -func (c Client) QueryCount(ctx context.Context, sql string, args []interface{}) (int, error) { - rows, err := c.Query(ctx, sql, args, nil) - if err != nil { - return 0, err - } - defer rows.Close() - - count := 0 - for rows.Next() { - if _, err := rows.Values(); err != nil { - return 0, err - } - count++ - } - if count == 0 { - return 0, pgx.ErrNoRows - } - - return count, nil -} - // Common function for all exec calls -func (c Client) Exec(ctx context.Context, sql string, args []interface{}, err error) error { +func (c Client) Exec(ctx context.Context, sql string, args []interface{}) error { slog.Debug("sql", slog.String("sql", sql), slog.Any("args", args)) + tag, err := c.Pgx.Exec(ctx, sql, args...) if err != nil { - return err + return WrapIfKnownInvalidQueryErr(err) } - _, err = c.Pgx.Exec(ctx, sql, args...) - return WrapIfKnownInvalidQueryErr(err) + + if tag.RowsAffected() == 0 { + return WrapIfKnownInvalidQueryErr(pgx.ErrNoRows) + } + + return nil } // diff --git a/internal/db/db_migration.go b/internal/db/db_migration.go index d05cf13c5c..57ed0996cf 100644 --- a/internal/db/db_migration.go +++ b/internal/db/db_migration.go @@ -13,6 +13,32 @@ import ( "github.com/pressly/goose/v3" ) +func migrationInit(c *Client, ctx context.Context) (*goose.Provider, func(), error) { + if !c.config.RunMigrations { + return nil, nil, fmt.Errorf("migrations are disabled") + } + + c.Pgx.Exec(ctx, fmt.Sprintf("SET search_path TO %s", c.config.Schema)) + + pool, ok := c.Pgx.(*pgxpool.Pool) + if !ok || pool == nil { + return nil, nil, fmt.Errorf("failed to cast pgxpool.Pool") + } + + conn := stdlib.OpenDBFromPool(pool) + + provider, err := goose.NewProvider(goose.DialectPostgres, conn, migrations.MigrationsFS) + if err != nil { + return nil, nil, fmt.Errorf("failed to create goose provider: %w", err) + } + return provider, func() { + if err := conn.Close(); err != nil { + slog.Error("failed to close connection", "err", err) + } + + }, nil +} + func (c *Client) RunMigrations(ctx context.Context) (int, error) { var ( applied int @@ -73,6 +99,17 @@ func (c *Client) RunMigrations(ctx context.Context) (int, error) { return applied, nil } +func (c *Client) MigrationStatus(ctx context.Context) ([]*goose.MigrationStatus, error) { + provider, close, err := migrationInit(c, ctx) + if err != nil { + slog.Error("failed to create goose provider", "err", err) + return nil, err + } + defer close() + + return provider.Status(context.Background()) +} + func (c *Client) MigrationDown(ctx context.Context) error { if !c.config.RunMigrations { slog.Info("skipping migrations", diff --git a/internal/db/errors.go b/internal/db/errors.go index 67bd421b6c..7320c79e5f 100644 --- a/internal/db/errors.go +++ b/internal/db/errors.go @@ -26,6 +26,7 @@ const ( ErrEnumValueInvalid DbError = "ErrEnumValueInvalid: not a valid enum value" ErrUuidInvalid DbError = "ErrUuidInvalid: value not a valid UUID" ErrFqnMissingValue DbError = "ErrFqnMissingValue: FQN must include a value" + ErrMissingValue DbError = "ErrMissingValue: value must be included" ) // Get helpful error message for PostgreSQL violation @@ -49,6 +50,7 @@ func WrapIfKnownInvalidQueryErr(err error) error { } return errors.Join(ErrEnumValueInvalid, e) default: + fmt.Println("Unknown error code", e.Code) return e } } @@ -75,6 +77,10 @@ func isPgError(err error) *pgconn.PgError { return nil } +func IsQueryBuilderSetClauseError(err error) bool { + return err != nil && strings.Contains(err.Error(), "at least one Set clause") +} + func NewUniqueAlreadyExistsError(value string) error { return errors.Join(fmt.Errorf("value [%s] already exists and must be unique", value), ErrUniqueConstraintViolation) } diff --git a/internal/db/marshalHelpers.go b/internal/db/marshalHelpers.go index 6920cef4eb..f4a365f19b 100644 --- a/internal/db/marshalHelpers.go +++ b/internal/db/marshalHelpers.go @@ -2,42 +2,65 @@ package db import ( "encoding/json" + "fmt" "github.com/opentdf/platform/protocol/go/common" kasr "github.com/opentdf/platform/protocol/go/kasregistry" "google.golang.org/protobuf/encoding/protojson" - "google.golang.org/protobuf/types/known/timestamppb" ) // Marshal policy metadata is used by the MarshalCreateMetadata and MarshalUpdateMetadata functions to enable // the creation and update of policy metadata without exposing it to developers. Take note of the immutableMetadata and // mutableMetadata parameters. The mutableMetadata is the metadata that is passed in by the developer. The immutableMetadata // is created by the service. -func marshalMetadata(mutableMetadata *common.MetadataMutable, immutableMetadata *common.Metadata) ([]byte, *common.Metadata, error) { +func marshalMetadata(mutableMetadata *common.MetadataMutable) ([]byte, *common.Metadata, error) { m := &common.Metadata{ - CreatedAt: immutableMetadata.GetCreatedAt(), - UpdatedAt: immutableMetadata.GetUpdatedAt(), - Labels: mutableMetadata.GetLabels(), - Description: mutableMetadata.GetDescription(), + Labels: mutableMetadata.GetLabels(), } mJson, err := protojson.Marshal(m) return mJson, m, err } func MarshalCreateMetadata(metadata *common.MetadataMutable) ([]byte, *common.Metadata, error) { - m := &common.Metadata{ - CreatedAt: timestamppb.Now(), - UpdatedAt: timestamppb.Now(), - } - return marshalMetadata(metadata, m) + return marshalMetadata(metadata) } -func MarshalUpdateMetadata(existingMetadata *common.Metadata, metadata *common.MetadataMutable) ([]byte, *common.Metadata, error) { - m := &common.Metadata{ - CreatedAt: existingMetadata.GetCreatedAt(), - UpdatedAt: timestamppb.Now(), +func MarshalUpdateMetadata(m *common.MetadataMutable, b common.MetadataUpdateEnum, getExtendableMetadata func() (*common.Metadata, error)) ([]byte, *common.Metadata, error) { + // No metadata update + if m == nil { + return nil, nil, nil + } + + if b == *common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_REPLACE.Enum() { + return marshalMetadata(m) } - return marshalMetadata(metadata, m) + + if b == *common.MetadataUpdateEnum_METADATA_UPDATE_ENUM_EXTEND.Enum() { + if getExtendableMetadata == nil { + return nil, nil, fmt.Errorf("getExtendableMetadata is required for extend metadata update") + } + + existing, err := getExtendableMetadata() + if err != nil { + return nil, nil, err + } + if existing == nil { + return marshalMetadata(m) + } + + // merge labels + next := &common.MetadataMutable{ + Labels: existing.Labels, + } + for k := range m.GetLabels() { + if v, ok := m.Labels[k]; ok { + next.Labels[k] = v + } + } + return marshalMetadata(next) + } + + return nil, nil, fmt.Errorf("unknown metadata update type: %s", b.String()) } func KeyAccessServerProtoJSON(keyAccessServerJSON []byte) ([]*kasr.KeyAccessServer, error) { diff --git a/migrations/20240304000000_add_namespace_metadata_field.sql b/migrations/20240304000000_add_namespace_metadata_field.sql new file mode 100644 index 0000000000..d00a8c5042 --- /dev/null +++ b/migrations/20240304000000_add_namespace_metadata_field.sql @@ -0,0 +1,13 @@ +-- +goose Up +-- +goose StatementBegin + +ALTER TABLE attribute_namespaces ADD COLUMN metadata JSONB; + +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin + +ALTER TABLE attribute_namespaces DROP COLUMN metadata; + +-- +goose StatementEnd diff --git a/migrations/20240304000010_add_created_updated_fields.sql b/migrations/20240304000010_add_created_updated_fields.sql new file mode 100644 index 0000000000..0b6526d7cc --- /dev/null +++ b/migrations/20240304000010_add_created_updated_fields.sql @@ -0,0 +1,106 @@ +-- +goose Up +-- +goose StatementBegin + +-- NOTE: pre-1.0 not crucial to migrate existing timestamps stored in the metadata JSONB column into the new columns. + +-- Create update function +CREATE OR REPLACE FUNCTION update_updated_at() RETURNS TRIGGER +LANGUAGE plpgsql +AS +$$ +BEGIN + NEW.updated_at = CURRENT_TIMESTAMP; + RETURN NEW; +END; +$$; + +-- Add new columns for created and updated fields for tables: +-- 1. attribute_namespaces +-- 2. attribute_definitions +-- 3. attribute_values +-- 4. key_access_servers +-- 5. resource_mappings +-- 6. subject_mappings + +ALTER TABLE attribute_namespaces ADD COLUMN created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; +ALTER TABLE attribute_namespaces ADD COLUMN updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; + +ALTER TABLE attribute_definitions ADD COLUMN created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; +ALTER TABLE attribute_definitions ADD COLUMN updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; + +ALTER TABLE attribute_values ADD COLUMN created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; +ALTER TABLE attribute_values ADD COLUMN updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; + +ALTER TABLE key_access_servers ADD COLUMN created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; +ALTER TABLE key_access_servers ADD COLUMN updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; + +ALTER TABLE resource_mappings ADD COLUMN created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; +ALTER TABLE resource_mappings ADD COLUMN updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; + +ALTER TABLE subject_mappings ADD COLUMN created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; +ALTER TABLE subject_mappings ADD COLUMN updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP; + +-- create triggers to update updated_at when the row is updated +CREATE TRIGGER attribute_namespaces_updated_at + BEFORE UPDATE ON attribute_namespaces + FOR EACH ROW + EXECUTE FUNCTION update_updated_at(); + +CREATE TRIGGER attribute_definitions_updated_at + BEFORE UPDATE ON attribute_definitions + FOR EACH ROW + EXECUTE FUNCTION update_updated_at(); + +CREATE TRIGGER attribute_values_updated_at + BEFORE UPDATE ON attribute_values + FOR EACH ROW + EXECUTE FUNCTION update_updated_at(); + +CREATE TRIGGER key_access_servers_updated_at + BEFORE UPDATE ON key_access_servers + FOR EACH ROW + EXECUTE FUNCTION update_updated_at(); + +CREATE TRIGGER resource_mappings_updated_at + BEFORE UPDATE ON resource_mappings + FOR EACH ROW + EXECUTE FUNCTION update_updated_at(); + +CREATE TRIGGER subject_mappings_updated_at + BEFORE UPDATE ON subject_mappings + FOR EACH ROW + EXECUTE FUNCTION update_updated_at(); + +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin + +ALTER TABLE attribute_namespaces DROP COLUMN created_at; +ALTER TABLE attribute_namespaces DROP COLUMN updated_at; + +ALTER TABLE attribute_definitions DROP COLUMN created_at; +ALTER TABLE attribute_definitions DROP COLUMN updated_at; + +ALTER TABLE attribute_values DROP COLUMN created_at; +ALTER TABLE attribute_values DROP COLUMN updated_at; + +ALTER TABLE key_access_servers DROP COLUMN created_at; +ALTER TABLE key_access_servers DROP COLUMN updated_at; + +ALTER TABLE resource_mappings DROP COLUMN created_at; +ALTER TABLE resource_mappings DROP COLUMN updated_at; + +ALTER TABLE subject_mappings DROP COLUMN created_at; +ALTER TABLE subject_mappings DROP COLUMN updated_at; + +DROP TRIGGER attribute_namespaces_updated_at ON attribute_namespaces; +DROP TRIGGER attribute_definitions_updated_at ON attribute_definitions; +DROP TRIGGER attribute_values_updated_at ON attribute_values; +DROP TRIGGER key_access_servers_updated_at ON key_access_servers; +DROP TRIGGER resource_mappings_updated_at ON resource_mappings; +DROP TRIGGER subject_mappings_updated_at ON subject_mappings; + +DROP FUNCTION update_updated_at(); + +-- +goose StatementEnd diff --git a/protocol/go/common/common.pb.go b/protocol/go/common/common.pb.go index d0d74b1edd..b875a01c99 100644 --- a/protocol/go/common/common.pb.go +++ b/protocol/go/common/common.pb.go @@ -21,6 +21,58 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type MetadataUpdateEnum int32 + +const ( + // unspecified update type + MetadataUpdateEnum_METADATA_UPDATE_ENUM_UNSPECIFIED MetadataUpdateEnum = 0 + // only update the fields that are provided + MetadataUpdateEnum_METADATA_UPDATE_ENUM_EXTEND MetadataUpdateEnum = 1 + // replace the entire metadata with the provided metadata + MetadataUpdateEnum_METADATA_UPDATE_ENUM_REPLACE MetadataUpdateEnum = 2 +) + +// Enum value maps for MetadataUpdateEnum. +var ( + MetadataUpdateEnum_name = map[int32]string{ + 0: "METADATA_UPDATE_ENUM_UNSPECIFIED", + 1: "METADATA_UPDATE_ENUM_EXTEND", + 2: "METADATA_UPDATE_ENUM_REPLACE", + } + MetadataUpdateEnum_value = map[string]int32{ + "METADATA_UPDATE_ENUM_UNSPECIFIED": 0, + "METADATA_UPDATE_ENUM_EXTEND": 1, + "METADATA_UPDATE_ENUM_REPLACE": 2, + } +) + +func (x MetadataUpdateEnum) Enum() *MetadataUpdateEnum { + p := new(MetadataUpdateEnum) + *p = x + return p +} + +func (x MetadataUpdateEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (MetadataUpdateEnum) Descriptor() protoreflect.EnumDescriptor { + return file_common_common_proto_enumTypes[0].Descriptor() +} + +func (MetadataUpdateEnum) Type() protoreflect.EnumType { + return &file_common_common_proto_enumTypes[0] +} + +func (x MetadataUpdateEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use MetadataUpdateEnum.Descriptor instead. +func (MetadataUpdateEnum) EnumDescriptor() ([]byte, []int) { + return file_common_common_proto_rawDescGZIP(), []int{0} +} + // buflint ENUM_VALUE_PREFIX: to make sure that C++ scoping rules aren't violated when users add new enum values to an enum in a given package type ActiveStateEnum int32 @@ -58,11 +110,11 @@ func (x ActiveStateEnum) String() string { } func (ActiveStateEnum) Descriptor() protoreflect.EnumDescriptor { - return file_common_common_proto_enumTypes[0].Descriptor() + return file_common_common_proto_enumTypes[1].Descriptor() } func (ActiveStateEnum) Type() protoreflect.EnumType { - return &file_common_common_proto_enumTypes[0] + return &file_common_common_proto_enumTypes[1] } func (x ActiveStateEnum) Number() protoreflect.EnumNumber { @@ -71,7 +123,7 @@ func (x ActiveStateEnum) Number() protoreflect.EnumNumber { // Deprecated: Use ActiveStateEnum.Descriptor instead. func (ActiveStateEnum) EnumDescriptor() ([]byte, []int) { - return file_common_common_proto_rawDescGZIP(), []int{0} + return file_common_common_proto_rawDescGZIP(), []int{1} } // Struct to uniquely identify a resource with optional additional metadata @@ -86,8 +138,6 @@ type Metadata struct { UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,2,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` // optional short description Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // optional long description - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` } func (x *Metadata) Reset() { @@ -143,22 +193,13 @@ func (x *Metadata) GetLabels() map[string]string { return nil } -func (x *Metadata) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - type MetadataMutable struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - // optional short description + // optional labels Labels map[string]string `protobuf:"bytes,3,rep,name=labels,proto3" json:"labels,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // optional long description - Description string `protobuf:"bytes,4,opt,name=description,proto3" json:"description,omitempty"` } func (x *MetadataMutable) Reset() { @@ -200,21 +241,14 @@ func (x *MetadataMutable) GetLabels() map[string]string { return nil } -func (x *MetadataMutable) GetDescription() string { - if x != nil { - return x.Description - } - return "" -} - var File_common_common_proto protoreflect.FileDescriptor var file_common_common_proto_rawDesc = []byte{ 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x06, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x93, - 0x02, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x63, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xf1, + 0x01, 0x0a, 0x08, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, @@ -225,42 +259,46 @@ var file_common_common_proto_rawDesc = []byte{ 0x74, 0x12, 0x34, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, - 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, - 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x3a, 0x02, 0x38, 0x01, 0x22, 0xab, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x2e, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, + 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x2a, 0x8d, 0x01, 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, - 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x54, - 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, - 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x54, 0x49, 0x56, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x41, - 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x54, 0x49, 0x56, - 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, - 0x10, 0x03, 0x42, 0x91, 0x01, 0x0a, 0x1a, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, - 0x66, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, - 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, - 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0xa2, 0x02, 0x03, 0x43, 0x58, 0x58, 0xaa, 0x02, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xca, - 0x02, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xe2, 0x02, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, - 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x38, 0x01, 0x22, 0x89, 0x01, 0x0a, 0x0f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, + 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x12, 0x3b, 0x0a, 0x06, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, + 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x6c, 0x61, 0x62, + 0x65, 0x6c, 0x73, 0x1a, 0x39, 0x0a, 0x0b, 0x4c, 0x61, 0x62, 0x65, 0x6c, 0x73, 0x45, 0x6e, 0x74, + 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0x7d, + 0x0a, 0x12, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x24, 0x0a, 0x20, 0x4d, 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, + 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x4d, 0x45, + 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, + 0x55, 0x4d, 0x5f, 0x45, 0x58, 0x54, 0x45, 0x4e, 0x44, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x4d, + 0x45, 0x54, 0x41, 0x44, 0x41, 0x54, 0x41, 0x5f, 0x55, 0x50, 0x44, 0x41, 0x54, 0x45, 0x5f, 0x45, + 0x4e, 0x55, 0x4d, 0x5f, 0x52, 0x45, 0x50, 0x4c, 0x41, 0x43, 0x45, 0x10, 0x02, 0x2a, 0x8d, 0x01, + 0x0a, 0x0f, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, + 0x6d, 0x12, 0x21, 0x0a, 0x1d, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, + 0x10, 0x01, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, + 0x10, 0x02, 0x12, 0x19, 0x0a, 0x15, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x03, 0x42, 0x91, 0x01, + 0x0a, 0x1a, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x61, + 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x42, 0x0b, 0x43, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, + 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xa2, 0x02, 0x03, 0x43, 0x58, + 0x58, 0xaa, 0x02, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0xca, 0x02, 0x06, 0x43, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0xe2, 0x02, 0x12, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x06, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -275,21 +313,22 @@ func file_common_common_proto_rawDescGZIP() []byte { return file_common_common_proto_rawDescData } -var file_common_common_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_common_common_proto_enumTypes = make([]protoimpl.EnumInfo, 2) var file_common_common_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_common_common_proto_goTypes = []interface{}{ - (ActiveStateEnum)(0), // 0: common.ActiveStateEnum - (*Metadata)(nil), // 1: common.Metadata - (*MetadataMutable)(nil), // 2: common.MetadataMutable - nil, // 3: common.Metadata.LabelsEntry - nil, // 4: common.MetadataMutable.LabelsEntry - (*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp + (MetadataUpdateEnum)(0), // 0: common.MetadataUpdateEnum + (ActiveStateEnum)(0), // 1: common.ActiveStateEnum + (*Metadata)(nil), // 2: common.Metadata + (*MetadataMutable)(nil), // 3: common.MetadataMutable + nil, // 4: common.Metadata.LabelsEntry + nil, // 5: common.MetadataMutable.LabelsEntry + (*timestamppb.Timestamp)(nil), // 6: google.protobuf.Timestamp } var file_common_common_proto_depIdxs = []int32{ - 5, // 0: common.Metadata.created_at:type_name -> google.protobuf.Timestamp - 5, // 1: common.Metadata.updated_at:type_name -> google.protobuf.Timestamp - 3, // 2: common.Metadata.labels:type_name -> common.Metadata.LabelsEntry - 4, // 3: common.MetadataMutable.labels:type_name -> common.MetadataMutable.LabelsEntry + 6, // 0: common.Metadata.created_at:type_name -> google.protobuf.Timestamp + 6, // 1: common.Metadata.updated_at:type_name -> google.protobuf.Timestamp + 4, // 2: common.Metadata.labels:type_name -> common.Metadata.LabelsEntry + 5, // 3: common.MetadataMutable.labels:type_name -> common.MetadataMutable.LabelsEntry 4, // [4:4] is the sub-list for method output_type 4, // [4:4] is the sub-list for method input_type 4, // [4:4] is the sub-list for extension type_name @@ -333,7 +372,7 @@ func file_common_common_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_common_proto_rawDesc, - NumEnums: 1, + NumEnums: 2, NumMessages: 4, NumExtensions: 0, NumServices: 0, diff --git a/protocol/go/kasregistry/key_access_server_registry.pb.go b/protocol/go/kasregistry/key_access_server_registry.pb.go index 53b6f72f84..83512af75d 100644 --- a/protocol/go/kasregistry/key_access_server_registry.pb.go +++ b/protocol/go/kasregistry/key_access_server_registry.pb.go @@ -29,11 +29,12 @@ type KeyAccessServer struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Metadata *common.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // Address of a KAS instance - Uri string `protobuf:"bytes,3,opt,name=uri,proto3" json:"uri,omitempty"` - PublicKey *PublicKey `protobuf:"bytes,4,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` + PublicKey *PublicKey `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + // Common metadata + Metadata *common.Metadata `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *KeyAccessServer) Reset() { @@ -75,13 +76,6 @@ func (x *KeyAccessServer) GetId() string { return "" } -func (x *KeyAccessServer) GetMetadata() *common.Metadata { - if x != nil { - return x.Metadata - } - return nil -} - func (x *KeyAccessServer) GetUri() string { if x != nil { return x.Uri @@ -96,71 +90,13 @@ func (x *KeyAccessServer) GetPublicKey() *PublicKey { return nil } -type KeyAccessServerCreateUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Optional metadata for the attribute definition - Metadata *common.MetadataMutable `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - // Address of a KAS instance - Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` - PublicKey *PublicKey `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` -} - -func (x *KeyAccessServerCreateUpdate) Reset() { - *x = KeyAccessServerCreateUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *KeyAccessServerCreateUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*KeyAccessServerCreateUpdate) ProtoMessage() {} - -func (x *KeyAccessServerCreateUpdate) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use KeyAccessServerCreateUpdate.ProtoReflect.Descriptor instead. -func (*KeyAccessServerCreateUpdate) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{1} -} - -func (x *KeyAccessServerCreateUpdate) GetMetadata() *common.MetadataMutable { +func (x *KeyAccessServer) GetMetadata() *common.Metadata { if x != nil { return x.Metadata } return nil } -func (x *KeyAccessServerCreateUpdate) GetUri() string { - if x != nil { - return x.Uri - } - return "" -} - -func (x *KeyAccessServerCreateUpdate) GetPublicKey() *PublicKey { - if x != nil { - return x.PublicKey - } - return nil -} - type PublicKey struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -176,7 +112,7 @@ type PublicKey struct { func (x *PublicKey) Reset() { *x = PublicKey{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[2] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -189,7 +125,7 @@ func (x *PublicKey) String() string { func (*PublicKey) ProtoMessage() {} func (x *PublicKey) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[2] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -202,7 +138,7 @@ func (x *PublicKey) ProtoReflect() protoreflect.Message { // Deprecated: Use PublicKey.ProtoReflect.Descriptor instead. func (*PublicKey) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{2} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{1} } func (m *PublicKey) GetPublicKey() isPublicKey_PublicKey { @@ -255,7 +191,7 @@ type GetKeyAccessServerRequest struct { func (x *GetKeyAccessServerRequest) Reset() { *x = GetKeyAccessServerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[3] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -268,7 +204,7 @@ func (x *GetKeyAccessServerRequest) String() string { func (*GetKeyAccessServerRequest) ProtoMessage() {} func (x *GetKeyAccessServerRequest) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[3] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -281,7 +217,7 @@ func (x *GetKeyAccessServerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetKeyAccessServerRequest.ProtoReflect.Descriptor instead. func (*GetKeyAccessServerRequest) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{3} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{2} } func (x *GetKeyAccessServerRequest) GetId() string { @@ -302,7 +238,7 @@ type GetKeyAccessServerResponse struct { func (x *GetKeyAccessServerResponse) Reset() { *x = GetKeyAccessServerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[4] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -315,7 +251,7 @@ func (x *GetKeyAccessServerResponse) String() string { func (*GetKeyAccessServerResponse) ProtoMessage() {} func (x *GetKeyAccessServerResponse) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[4] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -328,7 +264,7 @@ func (x *GetKeyAccessServerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetKeyAccessServerResponse.ProtoReflect.Descriptor instead. func (*GetKeyAccessServerResponse) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{4} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{3} } func (x *GetKeyAccessServerResponse) GetKeyAccessServer() *KeyAccessServer { @@ -347,7 +283,7 @@ type ListKeyAccessServersRequest struct { func (x *ListKeyAccessServersRequest) Reset() { *x = ListKeyAccessServersRequest{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[5] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -360,7 +296,7 @@ func (x *ListKeyAccessServersRequest) String() string { func (*ListKeyAccessServersRequest) ProtoMessage() {} func (x *ListKeyAccessServersRequest) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[5] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -373,7 +309,7 @@ func (x *ListKeyAccessServersRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListKeyAccessServersRequest.ProtoReflect.Descriptor instead. func (*ListKeyAccessServersRequest) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{5} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{4} } type ListKeyAccessServersResponse struct { @@ -387,7 +323,7 @@ type ListKeyAccessServersResponse struct { func (x *ListKeyAccessServersResponse) Reset() { *x = ListKeyAccessServersResponse{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[6] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -400,7 +336,7 @@ func (x *ListKeyAccessServersResponse) String() string { func (*ListKeyAccessServersResponse) ProtoMessage() {} func (x *ListKeyAccessServersResponse) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[6] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -413,7 +349,7 @@ func (x *ListKeyAccessServersResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListKeyAccessServersResponse.ProtoReflect.Descriptor instead. func (*ListKeyAccessServersResponse) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{6} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{5} } func (x *ListKeyAccessServersResponse) GetKeyAccessServers() []*KeyAccessServer { @@ -428,13 +364,17 @@ type CreateKeyAccessServerRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - KeyAccessServer *KeyAccessServerCreateUpdate `protobuf:"bytes,1,opt,name=key_access_server,json=keyAccessServer,proto3" json:"key_access_server,omitempty"` + // Required + Uri string `protobuf:"bytes,1,opt,name=uri,proto3" json:"uri,omitempty"` + PublicKey *PublicKey `protobuf:"bytes,2,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + // Common metadata + Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *CreateKeyAccessServerRequest) Reset() { *x = CreateKeyAccessServerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[7] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -447,7 +387,7 @@ func (x *CreateKeyAccessServerRequest) String() string { func (*CreateKeyAccessServerRequest) ProtoMessage() {} func (x *CreateKeyAccessServerRequest) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[7] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -460,12 +400,26 @@ func (x *CreateKeyAccessServerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateKeyAccessServerRequest.ProtoReflect.Descriptor instead. func (*CreateKeyAccessServerRequest) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{7} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{6} } -func (x *CreateKeyAccessServerRequest) GetKeyAccessServer() *KeyAccessServerCreateUpdate { +func (x *CreateKeyAccessServerRequest) GetUri() string { if x != nil { - return x.KeyAccessServer + return x.Uri + } + return "" +} + +func (x *CreateKeyAccessServerRequest) GetPublicKey() *PublicKey { + if x != nil { + return x.PublicKey + } + return nil +} + +func (x *CreateKeyAccessServerRequest) GetMetadata() *common.MetadataMutable { + if x != nil { + return x.Metadata } return nil } @@ -481,7 +435,7 @@ type CreateKeyAccessServerResponse struct { func (x *CreateKeyAccessServerResponse) Reset() { *x = CreateKeyAccessServerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[8] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -494,7 +448,7 @@ func (x *CreateKeyAccessServerResponse) String() string { func (*CreateKeyAccessServerResponse) ProtoMessage() {} func (x *CreateKeyAccessServerResponse) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[8] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -507,7 +461,7 @@ func (x *CreateKeyAccessServerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateKeyAccessServerResponse.ProtoReflect.Descriptor instead. func (*CreateKeyAccessServerResponse) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{8} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{7} } func (x *CreateKeyAccessServerResponse) GetKeyAccessServer() *KeyAccessServer { @@ -522,14 +476,19 @@ type UpdateKeyAccessServerRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - KeyAccessServer *KeyAccessServerCreateUpdate `protobuf:"bytes,2,opt,name=key_access_server,json=keyAccessServer,proto3" json:"key_access_server,omitempty"` + // Required + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Uri string `protobuf:"bytes,2,opt,name=uri,proto3" json:"uri,omitempty"` + PublicKey *PublicKey `protobuf:"bytes,3,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` + // Common metadata + Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` + MetadataUpdateBehavior common.MetadataUpdateEnum `protobuf:"varint,101,opt,name=metadata_update_behavior,json=metadataUpdateBehavior,proto3,enum=common.MetadataUpdateEnum" json:"metadata_update_behavior,omitempty"` } func (x *UpdateKeyAccessServerRequest) Reset() { *x = UpdateKeyAccessServerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[9] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -542,7 +501,7 @@ func (x *UpdateKeyAccessServerRequest) String() string { func (*UpdateKeyAccessServerRequest) ProtoMessage() {} func (x *UpdateKeyAccessServerRequest) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[9] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -555,7 +514,7 @@ func (x *UpdateKeyAccessServerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateKeyAccessServerRequest.ProtoReflect.Descriptor instead. func (*UpdateKeyAccessServerRequest) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{9} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{8} } func (x *UpdateKeyAccessServerRequest) GetId() string { @@ -565,13 +524,34 @@ func (x *UpdateKeyAccessServerRequest) GetId() string { return "" } -func (x *UpdateKeyAccessServerRequest) GetKeyAccessServer() *KeyAccessServerCreateUpdate { +func (x *UpdateKeyAccessServerRequest) GetUri() string { if x != nil { - return x.KeyAccessServer + return x.Uri + } + return "" +} + +func (x *UpdateKeyAccessServerRequest) GetPublicKey() *PublicKey { + if x != nil { + return x.PublicKey + } + return nil +} + +func (x *UpdateKeyAccessServerRequest) GetMetadata() *common.MetadataMutable { + if x != nil { + return x.Metadata } return nil } +func (x *UpdateKeyAccessServerRequest) GetMetadataUpdateBehavior() common.MetadataUpdateEnum { + if x != nil { + return x.MetadataUpdateBehavior + } + return common.MetadataUpdateEnum(0) +} + type UpdateKeyAccessServerResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -583,7 +563,7 @@ type UpdateKeyAccessServerResponse struct { func (x *UpdateKeyAccessServerResponse) Reset() { *x = UpdateKeyAccessServerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[10] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -596,7 +576,7 @@ func (x *UpdateKeyAccessServerResponse) String() string { func (*UpdateKeyAccessServerResponse) ProtoMessage() {} func (x *UpdateKeyAccessServerResponse) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[10] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -609,7 +589,7 @@ func (x *UpdateKeyAccessServerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateKeyAccessServerResponse.ProtoReflect.Descriptor instead. func (*UpdateKeyAccessServerResponse) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{10} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{9} } func (x *UpdateKeyAccessServerResponse) GetKeyAccessServer() *KeyAccessServer { @@ -630,7 +610,7 @@ type DeleteKeyAccessServerRequest struct { func (x *DeleteKeyAccessServerRequest) Reset() { *x = DeleteKeyAccessServerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[11] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -643,7 +623,7 @@ func (x *DeleteKeyAccessServerRequest) String() string { func (*DeleteKeyAccessServerRequest) ProtoMessage() {} func (x *DeleteKeyAccessServerRequest) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[11] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -656,7 +636,7 @@ func (x *DeleteKeyAccessServerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteKeyAccessServerRequest.ProtoReflect.Descriptor instead. func (*DeleteKeyAccessServerRequest) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{11} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{10} } func (x *DeleteKeyAccessServerRequest) GetId() string { @@ -677,7 +657,7 @@ type DeleteKeyAccessServerResponse struct { func (x *DeleteKeyAccessServerResponse) Reset() { *x = DeleteKeyAccessServerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[12] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -690,7 +670,7 @@ func (x *DeleteKeyAccessServerResponse) String() string { func (*DeleteKeyAccessServerResponse) ProtoMessage() {} func (x *DeleteKeyAccessServerResponse) ProtoReflect() protoreflect.Message { - mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[12] + mi := &file_kasregistry_key_access_server_registry_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -703,7 +683,7 @@ func (x *DeleteKeyAccessServerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteKeyAccessServerResponse.ProtoReflect.Descriptor instead. func (*DeleteKeyAccessServerResponse) Descriptor() ([]byte, []int) { - return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{12} + return file_kasregistry_key_access_server_registry_proto_rawDescGZIP(), []int{11} } func (x *DeleteKeyAccessServerResponse) GetKeyAccessServer() *KeyAccessServer { @@ -727,174 +707,173 @@ var file_kasregistry_key_access_server_registry_proto_rawDesc = []byte{ 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x98, 0x01, 0x0a, 0x0f, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, - 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x69, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, - 0x35, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, - 0x79, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x22, 0xab, 0x01, 0x0a, 0x1b, 0x4b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, - 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x18, 0x0a, 0x03, 0x75, - 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, - 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6b, 0x61, 0x73, 0x72, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, - 0x79, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x22, 0xc0, 0x03, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x12, 0x8c, 0x03, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0xf1, 0x02, 0xba, 0x48, 0xed, 0x02, 0xba, 0x01, 0xe9, 0x02, 0x0a, 0x0a, - 0x66, 0x71, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xd7, 0x01, 0x46, 0x51, 0x4e, - 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x77, 0x69, 0x74, 0x68, - 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x28, 0x65, 0x2e, - 0x67, 0x2e, 0x2c, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, 0x65, 0x6d, - 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x27, 0x29, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x65, - 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, 0x6c, 0x20, - 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x73, - 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, - 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x63, - 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x63, 0x61, 0x6e, 0x20, 0x63, 0x6f, - 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x2c, 0x20, 0x61, - 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, - 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x6c, 0x61, 0x73, - 0x68, 0x65, 0x73, 0x2e, 0x1a, 0x80, 0x01, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, - 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x5b, 0x61, - 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, - 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d, 0x5b, 0x61, - 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x28, 0x5c, 0x5c, 0x2e, 0x5b, - 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x41, - 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d, 0x5b, - 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x29, 0x2a, 0x28, 0x2f, - 0x2e, 0x2a, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x12, 0x16, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x48, 0x00, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x33, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4b, 0x65, - 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x66, 0x0a, 0x1a, - 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x6b, 0x65, - 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x52, 0x0f, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x22, 0x1d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x22, 0x6a, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x12, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x65, - 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x10, 0x6b, - 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x22, - 0x7c, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x5c, 0x0a, 0x11, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, 0x61, 0x73, - 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0f, 0x6b, 0x65, - 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x69, 0x0a, - 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, - 0x0a, 0x11, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x0f, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x94, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x5c, 0x0a, 0x11, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x6b, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x69, 0x12, 0x35, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x72, 0x79, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x52, 0x09, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc0, 0x03, 0x0a, 0x09, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x63, 0x4b, 0x65, 0x79, 0x12, 0x8c, 0x03, 0x0a, 0x06, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xf1, 0x02, 0xba, 0x48, 0xed, 0x02, 0xba, 0x01, 0xe9, 0x02, + 0x0a, 0x0a, 0x66, 0x71, 0x6e, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xd7, 0x01, 0x46, + 0x51, 0x4e, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x20, 0x77, 0x69, + 0x74, 0x68, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x28, + 0x65, 0x2e, 0x67, 0x2e, 0x2c, 0x20, 0x27, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x64, + 0x65, 0x6d, 0x6f, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x27, 0x29, 0x20, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, + 0x77, 0x65, 0x64, 0x20, 0x62, 0x79, 0x20, 0x61, 0x64, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x61, + 0x6c, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, + 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x73, 0x74, + 0x61, 0x72, 0x74, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64, 0x20, 0x77, 0x69, 0x74, 0x68, + 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, + 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2c, 0x20, 0x63, 0x61, 0x6e, 0x20, + 0x63, 0x6f, 0x6e, 0x74, 0x61, 0x69, 0x6e, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x2c, + 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x63, 0x68, + 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x2c, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x73, 0x6c, + 0x61, 0x73, 0x68, 0x65, 0x73, 0x2e, 0x1a, 0x80, 0x01, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, + 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, + 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a, + 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d, + 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x28, 0x5c, 0x5c, + 0x2e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d, + 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31, + 0x7d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x29, 0x2a, + 0x28, 0x2f, 0x2e, 0x2a, 0x29, 0x3f, 0x24, 0x27, 0x29, 0x48, 0x00, 0x52, 0x06, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x12, 0x16, 0x0a, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x48, 0x00, 0x52, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x42, 0x0c, 0x0a, 0x0a, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x22, 0x33, 0x0a, 0x19, 0x47, 0x65, 0x74, + 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x66, + 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, + 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x0f, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x1d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, + 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6a, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4a, 0x0a, 0x12, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, + 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, + 0x10, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x73, 0x22, 0xac, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x18, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3d, 0x0a, 0x0a, + 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x16, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x33, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, + 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x22, 0x69, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x48, 0x0a, 0x11, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0f, - 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, - 0x69, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, + 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x0f, 0x6b, 0x65, 0x79, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x9a, 0x02, 0x0a, 0x1c, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x18, 0x0a, 0x03, 0x75, 0x72, 0x69, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x3d, + 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, + 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, + 0x01, 0x01, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x33, 0x0a, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x12, 0x54, 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x65, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, + 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x69, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x6b, 0x65, 0x79, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x52, 0x0f, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x22, 0x36, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x69, 0x0a, 0x1d, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, + 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x0f, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x32, 0xef, 0x05, 0x0a, 0x1e, 0x4b, 0x65, 0x79, 0x41, 0x63, + 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x88, 0x01, 0x0a, 0x14, 0x4c, 0x69, + 0x73, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x73, 0x12, 0x28, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6b, + 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, + 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, + 0x13, 0x2f, 0x6b, 0x65, 0x79, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x6b, 0x61, + 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x6b, 0x65, 0x79, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8e, + 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x29, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, + 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, + 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x3a, 0x01, 0x2a, 0x22, 0x13, 0x2f, 0x6b, 0x65, 0x79, + 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, + 0x93, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x29, 0x2e, 0x6b, 0x61, 0x73, 0x72, + 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, + 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x48, 0x0a, 0x11, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, - 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x0f, 0x6b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x36, 0x0a, 0x1c, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x69, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x48, 0x0a, 0x11, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x0f, 0x6b, 0x65, - 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x32, 0x8f, 0x06, - 0x0a, 0x1e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x88, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x28, 0x2e, 0x6b, 0x61, 0x73, 0x72, - 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, - 0x79, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x12, 0x13, 0x2f, 0x6b, 0x65, 0x79, 0x2d, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x87, 0x01, 0x0a, 0x12, - 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x12, 0x26, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, - 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x6b, 0x61, 0x73, - 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x47, 0x65, 0x74, 0x4b, 0x65, 0x79, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x12, 0x18, 0x2f, 0x6b, 0x65, + 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x01, 0x2a, 0x1a, 0x18, 0x2f, 0x6b, 0x65, 0x79, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, - 0x29, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, + 0x29, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6b, 0x61, 0x73, - 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4b, + 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x3a, 0x11, - 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x22, 0x13, 0x2f, 0x6b, 0x65, 0x79, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0xa3, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x12, 0x29, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x6b, 0x61, - 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x33, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2d, 0x3a, - 0x11, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x1a, 0x18, 0x2f, 0x6b, 0x65, 0x79, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x90, 0x01, 0x0a, - 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x29, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, - 0x73, 0x74, 0x72, 0x79, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2a, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, 0x2f, 0x6b, 0x65, 0x79, 0x2d, 0x61, 0x63, 0x63, 0x65, - 0x73, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, - 0xc0, 0x01, 0x0a, 0x1f, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2e, 0x70, - 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, - 0x74, 0x72, 0x79, 0x42, 0x1c, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x6b, 0x61, 0x73, - 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0xa2, 0x02, 0x03, 0x4b, 0x58, 0x58, 0xaa, 0x02, - 0x0b, 0x4b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0xca, 0x02, 0x0b, 0x4b, - 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0xe2, 0x02, 0x17, 0x4b, 0x61, 0x73, - 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, 0x4b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, - 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x20, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x2a, 0x18, + 0x2f, 0x6b, 0x65, 0x79, 0x2d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x2d, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0xc0, 0x01, 0x0a, 0x1f, 0x69, 0x6f, 0x2e, + 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, + 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x42, 0x1c, 0x4b, 0x65, + 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x33, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, + 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x79, 0xa2, 0x02, 0x03, 0x4b, 0x58, 0x58, 0xaa, 0x02, 0x0b, 0x4b, 0x61, 0x73, 0x72, 0x65, 0x67, + 0x69, 0x73, 0x74, 0x72, 0x79, 0xca, 0x02, 0x0b, 0x4b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, + 0x74, 0x72, 0x79, 0xe2, 0x02, 0x17, 0x4b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, + 0x79, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0b, + 0x4b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, } var ( @@ -909,51 +888,52 @@ func file_kasregistry_key_access_server_registry_proto_rawDescGZIP() []byte { return file_kasregistry_key_access_server_registry_proto_rawDescData } -var file_kasregistry_key_access_server_registry_proto_msgTypes = make([]protoimpl.MessageInfo, 13) +var file_kasregistry_key_access_server_registry_proto_msgTypes = make([]protoimpl.MessageInfo, 12) var file_kasregistry_key_access_server_registry_proto_goTypes = []interface{}{ (*KeyAccessServer)(nil), // 0: kasregistry.KeyAccessServer - (*KeyAccessServerCreateUpdate)(nil), // 1: kasregistry.KeyAccessServerCreateUpdate - (*PublicKey)(nil), // 2: kasregistry.PublicKey - (*GetKeyAccessServerRequest)(nil), // 3: kasregistry.GetKeyAccessServerRequest - (*GetKeyAccessServerResponse)(nil), // 4: kasregistry.GetKeyAccessServerResponse - (*ListKeyAccessServersRequest)(nil), // 5: kasregistry.ListKeyAccessServersRequest - (*ListKeyAccessServersResponse)(nil), // 6: kasregistry.ListKeyAccessServersResponse - (*CreateKeyAccessServerRequest)(nil), // 7: kasregistry.CreateKeyAccessServerRequest - (*CreateKeyAccessServerResponse)(nil), // 8: kasregistry.CreateKeyAccessServerResponse - (*UpdateKeyAccessServerRequest)(nil), // 9: kasregistry.UpdateKeyAccessServerRequest - (*UpdateKeyAccessServerResponse)(nil), // 10: kasregistry.UpdateKeyAccessServerResponse - (*DeleteKeyAccessServerRequest)(nil), // 11: kasregistry.DeleteKeyAccessServerRequest - (*DeleteKeyAccessServerResponse)(nil), // 12: kasregistry.DeleteKeyAccessServerResponse - (*common.Metadata)(nil), // 13: common.Metadata - (*common.MetadataMutable)(nil), // 14: common.MetadataMutable + (*PublicKey)(nil), // 1: kasregistry.PublicKey + (*GetKeyAccessServerRequest)(nil), // 2: kasregistry.GetKeyAccessServerRequest + (*GetKeyAccessServerResponse)(nil), // 3: kasregistry.GetKeyAccessServerResponse + (*ListKeyAccessServersRequest)(nil), // 4: kasregistry.ListKeyAccessServersRequest + (*ListKeyAccessServersResponse)(nil), // 5: kasregistry.ListKeyAccessServersResponse + (*CreateKeyAccessServerRequest)(nil), // 6: kasregistry.CreateKeyAccessServerRequest + (*CreateKeyAccessServerResponse)(nil), // 7: kasregistry.CreateKeyAccessServerResponse + (*UpdateKeyAccessServerRequest)(nil), // 8: kasregistry.UpdateKeyAccessServerRequest + (*UpdateKeyAccessServerResponse)(nil), // 9: kasregistry.UpdateKeyAccessServerResponse + (*DeleteKeyAccessServerRequest)(nil), // 10: kasregistry.DeleteKeyAccessServerRequest + (*DeleteKeyAccessServerResponse)(nil), // 11: kasregistry.DeleteKeyAccessServerResponse + (*common.Metadata)(nil), // 12: common.Metadata + (*common.MetadataMutable)(nil), // 13: common.MetadataMutable + (common.MetadataUpdateEnum)(0), // 14: common.MetadataUpdateEnum } var file_kasregistry_key_access_server_registry_proto_depIdxs = []int32{ - 13, // 0: kasregistry.KeyAccessServer.metadata:type_name -> common.Metadata - 2, // 1: kasregistry.KeyAccessServer.public_key:type_name -> kasregistry.PublicKey - 14, // 2: kasregistry.KeyAccessServerCreateUpdate.metadata:type_name -> common.MetadataMutable - 2, // 3: kasregistry.KeyAccessServerCreateUpdate.public_key:type_name -> kasregistry.PublicKey - 0, // 4: kasregistry.GetKeyAccessServerResponse.key_access_server:type_name -> kasregistry.KeyAccessServer - 0, // 5: kasregistry.ListKeyAccessServersResponse.key_access_servers:type_name -> kasregistry.KeyAccessServer - 1, // 6: kasregistry.CreateKeyAccessServerRequest.key_access_server:type_name -> kasregistry.KeyAccessServerCreateUpdate - 0, // 7: kasregistry.CreateKeyAccessServerResponse.key_access_server:type_name -> kasregistry.KeyAccessServer - 1, // 8: kasregistry.UpdateKeyAccessServerRequest.key_access_server:type_name -> kasregistry.KeyAccessServerCreateUpdate - 0, // 9: kasregistry.UpdateKeyAccessServerResponse.key_access_server:type_name -> kasregistry.KeyAccessServer - 0, // 10: kasregistry.DeleteKeyAccessServerResponse.key_access_server:type_name -> kasregistry.KeyAccessServer - 5, // 11: kasregistry.KeyAccessServerRegistryService.ListKeyAccessServers:input_type -> kasregistry.ListKeyAccessServersRequest - 3, // 12: kasregistry.KeyAccessServerRegistryService.GetKeyAccessServer:input_type -> kasregistry.GetKeyAccessServerRequest - 7, // 13: kasregistry.KeyAccessServerRegistryService.CreateKeyAccessServer:input_type -> kasregistry.CreateKeyAccessServerRequest - 9, // 14: kasregistry.KeyAccessServerRegistryService.UpdateKeyAccessServer:input_type -> kasregistry.UpdateKeyAccessServerRequest - 11, // 15: kasregistry.KeyAccessServerRegistryService.DeleteKeyAccessServer:input_type -> kasregistry.DeleteKeyAccessServerRequest - 6, // 16: kasregistry.KeyAccessServerRegistryService.ListKeyAccessServers:output_type -> kasregistry.ListKeyAccessServersResponse - 4, // 17: kasregistry.KeyAccessServerRegistryService.GetKeyAccessServer:output_type -> kasregistry.GetKeyAccessServerResponse - 8, // 18: kasregistry.KeyAccessServerRegistryService.CreateKeyAccessServer:output_type -> kasregistry.CreateKeyAccessServerResponse - 10, // 19: kasregistry.KeyAccessServerRegistryService.UpdateKeyAccessServer:output_type -> kasregistry.UpdateKeyAccessServerResponse - 12, // 20: kasregistry.KeyAccessServerRegistryService.DeleteKeyAccessServer:output_type -> kasregistry.DeleteKeyAccessServerResponse - 16, // [16:21] is the sub-list for method output_type - 11, // [11:16] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name + 1, // 0: kasregistry.KeyAccessServer.public_key:type_name -> kasregistry.PublicKey + 12, // 1: kasregistry.KeyAccessServer.metadata:type_name -> common.Metadata + 0, // 2: kasregistry.GetKeyAccessServerResponse.key_access_server:type_name -> kasregistry.KeyAccessServer + 0, // 3: kasregistry.ListKeyAccessServersResponse.key_access_servers:type_name -> kasregistry.KeyAccessServer + 1, // 4: kasregistry.CreateKeyAccessServerRequest.public_key:type_name -> kasregistry.PublicKey + 13, // 5: kasregistry.CreateKeyAccessServerRequest.metadata:type_name -> common.MetadataMutable + 0, // 6: kasregistry.CreateKeyAccessServerResponse.key_access_server:type_name -> kasregistry.KeyAccessServer + 1, // 7: kasregistry.UpdateKeyAccessServerRequest.public_key:type_name -> kasregistry.PublicKey + 13, // 8: kasregistry.UpdateKeyAccessServerRequest.metadata:type_name -> common.MetadataMutable + 14, // 9: kasregistry.UpdateKeyAccessServerRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum + 0, // 10: kasregistry.UpdateKeyAccessServerResponse.key_access_server:type_name -> kasregistry.KeyAccessServer + 0, // 11: kasregistry.DeleteKeyAccessServerResponse.key_access_server:type_name -> kasregistry.KeyAccessServer + 4, // 12: kasregistry.KeyAccessServerRegistryService.ListKeyAccessServers:input_type -> kasregistry.ListKeyAccessServersRequest + 2, // 13: kasregistry.KeyAccessServerRegistryService.GetKeyAccessServer:input_type -> kasregistry.GetKeyAccessServerRequest + 6, // 14: kasregistry.KeyAccessServerRegistryService.CreateKeyAccessServer:input_type -> kasregistry.CreateKeyAccessServerRequest + 8, // 15: kasregistry.KeyAccessServerRegistryService.UpdateKeyAccessServer:input_type -> kasregistry.UpdateKeyAccessServerRequest + 10, // 16: kasregistry.KeyAccessServerRegistryService.DeleteKeyAccessServer:input_type -> kasregistry.DeleteKeyAccessServerRequest + 5, // 17: kasregistry.KeyAccessServerRegistryService.ListKeyAccessServers:output_type -> kasregistry.ListKeyAccessServersResponse + 3, // 18: kasregistry.KeyAccessServerRegistryService.GetKeyAccessServer:output_type -> kasregistry.GetKeyAccessServerResponse + 7, // 19: kasregistry.KeyAccessServerRegistryService.CreateKeyAccessServer:output_type -> kasregistry.CreateKeyAccessServerResponse + 9, // 20: kasregistry.KeyAccessServerRegistryService.UpdateKeyAccessServer:output_type -> kasregistry.UpdateKeyAccessServerResponse + 11, // 21: kasregistry.KeyAccessServerRegistryService.DeleteKeyAccessServer:output_type -> kasregistry.DeleteKeyAccessServerResponse + 17, // [17:22] is the sub-list for method output_type + 12, // [12:17] is the sub-list for method input_type + 12, // [12:12] is the sub-list for extension type_name + 12, // [12:12] is the sub-list for extension extendee + 0, // [0:12] is the sub-list for field type_name } func init() { file_kasregistry_key_access_server_registry_proto_init() } @@ -975,18 +955,6 @@ func file_kasregistry_key_access_server_registry_proto_init() { } } file_kasregistry_key_access_server_registry_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*KeyAccessServerCreateUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_kasregistry_key_access_server_registry_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*PublicKey); i { case 0: return &v.state @@ -998,7 +966,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { return nil } } - file_kasregistry_key_access_server_registry_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_kasregistry_key_access_server_registry_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetKeyAccessServerRequest); i { case 0: return &v.state @@ -1010,7 +978,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { return nil } } - file_kasregistry_key_access_server_registry_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_kasregistry_key_access_server_registry_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetKeyAccessServerResponse); i { case 0: return &v.state @@ -1022,7 +990,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { return nil } } - file_kasregistry_key_access_server_registry_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_kasregistry_key_access_server_registry_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListKeyAccessServersRequest); i { case 0: return &v.state @@ -1034,7 +1002,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { return nil } } - file_kasregistry_key_access_server_registry_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_kasregistry_key_access_server_registry_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListKeyAccessServersResponse); i { case 0: return &v.state @@ -1046,7 +1014,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { return nil } } - file_kasregistry_key_access_server_registry_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_kasregistry_key_access_server_registry_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateKeyAccessServerRequest); i { case 0: return &v.state @@ -1058,7 +1026,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { return nil } } - file_kasregistry_key_access_server_registry_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_kasregistry_key_access_server_registry_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateKeyAccessServerResponse); i { case 0: return &v.state @@ -1070,7 +1038,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { return nil } } - file_kasregistry_key_access_server_registry_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_kasregistry_key_access_server_registry_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateKeyAccessServerRequest); i { case 0: return &v.state @@ -1082,7 +1050,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { return nil } } - file_kasregistry_key_access_server_registry_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_kasregistry_key_access_server_registry_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateKeyAccessServerResponse); i { case 0: return &v.state @@ -1094,7 +1062,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { return nil } } - file_kasregistry_key_access_server_registry_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_kasregistry_key_access_server_registry_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteKeyAccessServerRequest); i { case 0: return &v.state @@ -1106,7 +1074,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { return nil } } - file_kasregistry_key_access_server_registry_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_kasregistry_key_access_server_registry_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteKeyAccessServerResponse); i { case 0: return &v.state @@ -1119,7 +1087,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { } } } - file_kasregistry_key_access_server_registry_proto_msgTypes[2].OneofWrappers = []interface{}{ + file_kasregistry_key_access_server_registry_proto_msgTypes[1].OneofWrappers = []interface{}{ (*PublicKey_Remote)(nil), (*PublicKey_Local)(nil), } @@ -1129,7 +1097,7 @@ func file_kasregistry_key_access_server_registry_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_kasregistry_key_access_server_registry_proto_rawDesc, NumEnums: 0, - NumMessages: 13, + NumMessages: 12, NumExtensions: 0, NumServices: 1, }, diff --git a/protocol/go/kasregistry/key_access_server_registry.pb.gw.go b/protocol/go/kasregistry/key_access_server_registry.pb.gw.go index b28138646b..cb7d85565a 100644 --- a/protocol/go/kasregistry/key_access_server_registry.pb.gw.go +++ b/protocol/go/kasregistry/key_access_server_registry.pb.gw.go @@ -109,7 +109,7 @@ func request_KeyAccessServerRegistryService_CreateKeyAccessServer_0(ctx context. if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.KeyAccessServer); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -126,7 +126,7 @@ func local_request_KeyAccessServerRegistryService_CreateKeyAccessServer_0(ctx co if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.KeyAccessServer); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -143,7 +143,7 @@ func request_KeyAccessServerRegistryService_UpdateKeyAccessServer_0(ctx context. if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.KeyAccessServer); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -177,7 +177,7 @@ func local_request_KeyAccessServerRegistryService_UpdateKeyAccessServer_0(ctx co if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.KeyAccessServer); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/protocol/go/kasregistry/key_access_server_registry_grpc.pb.go b/protocol/go/kasregistry/key_access_server_registry_grpc.pb.go index db2e6ab814..f111f95e33 100644 --- a/protocol/go/kasregistry/key_access_server_registry_grpc.pb.go +++ b/protocol/go/kasregistry/key_access_server_registry_grpc.pb.go @@ -30,175 +30,10 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type KeyAccessServerRegistryServiceClient interface { - // Request Examples: - // {} - // - // Response Examples: - // { - // "key_access_servers": [ - // { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "updated_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // }, - // { - // "id": "cad1fc87-1193-456b-a217-d5cdae1fa67a", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971990", - // "nanos": 303386000 - // }, - // "updated_at": { - // "seconds": "1705971990", - // "nanos": 303386000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas3", - // "public_key": { - // "local": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ6ekNDQVhXZ0F3SUJBZ0lVT1J1VjNhdlU5QUU2enNCNlp4eWxsSHBpNWQ0d0NnWUlLb1pJemowRUF3SXcKUFRFTE1Ba0dBMVVFQmhNQ2RYTXhDekFKQmdOVkJBZ01BbU4wTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NalF3TVRBeU1UWTFOalUyV2hjTk1qVXdNVEF4TVRZMU5qVTJXakE5Ck1Rc3dDUVlEVlFRR0V3SjFjekVMTUFrR0ExVUVDQXdDWTNReElUQWZCZ05WQkFvTUdFbHVkR1Z5Ym1WMElGZHAKWkdkcGRITWdVSFI1SUV4MFpEQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMVjlmQ0pIRC9rYwpyWHJVSFF3QVp4ME1jMGRQdkxqc0ovb2pFdE1NbjBST2RlT3g4eWd4Z2NRVEZGQXh5Q3RCdWFkaEFkbS9pVkh0CjhnMkVNejVkTzNXalV6QlJNQjBHQTFVZERnUVdCQlFZTmt1aytKSXVSV3luK2JFOHNCaFJ3MjdPVlRBZkJnTlYKSFNNRUdEQVdnQlFZTmt1aytKSXVSV3luK2JFOHNCaFJ3MjdPVlRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvRwpDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ0FCMmppWWU4QVk2TUo0QURQU1FHRTQ3K2Eza1dGTGNHc0pob1pieHRnClV3SWdjZklJdVBmaDRmYmN2OGNUaTJCbEkzazdzV1B1QW1JRlZyaUkyZDNVeDVRPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" - // } - // } - // ] - // } ListKeyAccessServers(ctx context.Context, in *ListKeyAccessServersRequest, opts ...grpc.CallOption) (*ListKeyAccessServersResponse, error) - // Request Examples: - // { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732" - // } - // - // Response Examples: - // { - // "key_access_server": { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "updated_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } GetKeyAccessServer(ctx context.Context, in *GetKeyAccessServerRequest, opts ...grpc.CallOption) (*GetKeyAccessServerResponse, error) - // Request Examples: - // { - // "key_access_server": { - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } - // - // Response Examples: - // { - // "key_access_server": { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "updated_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } CreateKeyAccessServer(ctx context.Context, in *CreateKeyAccessServerRequest, opts ...grpc.CallOption) (*CreateKeyAccessServerResponse, error) - // Request Examples: - // { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "key_access_server": { - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } - // - // Response Examples: - // { - // "key_access_server": { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "updated_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } UpdateKeyAccessServer(ctx context.Context, in *UpdateKeyAccessServerRequest, opts ...grpc.CallOption) (*UpdateKeyAccessServerResponse, error) - // Request Examples: - // { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732" - // } - // - // Response Examples: - // { - // "key_access_server": { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "updated_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } DeleteKeyAccessServer(ctx context.Context, in *DeleteKeyAccessServerRequest, opts ...grpc.CallOption) (*DeleteKeyAccessServerResponse, error) } @@ -259,175 +94,10 @@ func (c *keyAccessServerRegistryServiceClient) DeleteKeyAccessServer(ctx context // All implementations must embed UnimplementedKeyAccessServerRegistryServiceServer // for forward compatibility type KeyAccessServerRegistryServiceServer interface { - // Request Examples: - // {} - // - // Response Examples: - // { - // "key_access_servers": [ - // { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "updated_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // }, - // { - // "id": "cad1fc87-1193-456b-a217-d5cdae1fa67a", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971990", - // "nanos": 303386000 - // }, - // "updated_at": { - // "seconds": "1705971990", - // "nanos": 303386000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas3", - // "public_key": { - // "local": "LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ6ekNDQVhXZ0F3SUJBZ0lVT1J1VjNhdlU5QUU2enNCNlp4eWxsSHBpNWQ0d0NnWUlLb1pJemowRUF3SXcKUFRFTE1Ba0dBMVVFQmhNQ2RYTXhDekFKQmdOVkJBZ01BbU4wTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NalF3TVRBeU1UWTFOalUyV2hjTk1qVXdNVEF4TVRZMU5qVTJXakE5Ck1Rc3dDUVlEVlFRR0V3SjFjekVMTUFrR0ExVUVDQXdDWTNReElUQWZCZ05WQkFvTUdFbHVkR1Z5Ym1WMElGZHAKWkdkcGRITWdVSFI1SUV4MFpEQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMVjlmQ0pIRC9rYwpyWHJVSFF3QVp4ME1jMGRQdkxqc0ovb2pFdE1NbjBST2RlT3g4eWd4Z2NRVEZGQXh5Q3RCdWFkaEFkbS9pVkh0CjhnMkVNejVkTzNXalV6QlJNQjBHQTFVZERnUVdCQlFZTmt1aytKSXVSV3luK2JFOHNCaFJ3MjdPVlRBZkJnTlYKSFNNRUdEQVdnQlFZTmt1aytKSXVSV3luK2JFOHNCaFJ3MjdPVlRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvRwpDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ0FCMmppWWU4QVk2TUo0QURQU1FHRTQ3K2Eza1dGTGNHc0pob1pieHRnClV3SWdjZklJdVBmaDRmYmN2OGNUaTJCbEkzazdzV1B1QW1JRlZyaUkyZDNVeDVRPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==" - // } - // } - // ] - // } ListKeyAccessServers(context.Context, *ListKeyAccessServersRequest) (*ListKeyAccessServersResponse, error) - // Request Examples: - // { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732" - // } - // - // Response Examples: - // { - // "key_access_server": { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "updated_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } GetKeyAccessServer(context.Context, *GetKeyAccessServerRequest) (*GetKeyAccessServerResponse, error) - // Request Examples: - // { - // "key_access_server": { - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } - // - // Response Examples: - // { - // "key_access_server": { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "updated_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } CreateKeyAccessServer(context.Context, *CreateKeyAccessServerRequest) (*CreateKeyAccessServerResponse, error) - // Request Examples: - // { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "key_access_server": { - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } - // - // Response Examples: - // { - // "key_access_server": { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "updated_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } UpdateKeyAccessServer(context.Context, *UpdateKeyAccessServerRequest) (*UpdateKeyAccessServerResponse, error) - // Request Examples: - // { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732" - // } - // - // Response Examples: - // { - // "key_access_server": { - // "id": "71eae02f-6837-4980-8a2c-70abf6b68732", - // "metadata": { - // "labels": [], - // "created_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "updated_at": { - // "seconds": "1705971719", - // "nanos": 534029000 - // }, - // "description": "test kas instance" - // }, - // "uri": "kas2", - // "public_key": { - // "remote": "https://platform.virtru.com/kas1" - // } - // } - // } DeleteKeyAccessServer(context.Context, *DeleteKeyAccessServerRequest) (*DeleteKeyAccessServerResponse, error) mustEmbedUnimplementedKeyAccessServerRegistryServiceServer() } diff --git a/protocol/go/policy/attributes/attributes.pb.go b/protocol/go/policy/attributes/attributes.pb.go index 8f12dc6e04..2f9b11d86d 100644 --- a/protocol/go/policy/attributes/attributes.pb.go +++ b/protocol/go/policy/attributes/attributes.pb.go @@ -85,19 +85,19 @@ type Attribute struct { unknownFields protoimpl.UnknownFields Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Optional metadata for the attribute definition - Metadata *common.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` // namespace of the attribute - Namespace *namespaces.Namespace `protobuf:"bytes,3,opt,name=namespace,proto3" json:"namespace,omitempty"` + Namespace *namespaces.Namespace `protobuf:"bytes,2,opt,name=namespace,proto3" json:"namespace,omitempty"` // attribute name - Name string `protobuf:"bytes,4,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` // attribute rule enum - Rule AttributeRuleTypeEnum `protobuf:"varint,5,opt,name=rule,proto3,enum=policy.attributes.AttributeRuleTypeEnum" json:"rule,omitempty"` - Values []*Value `protobuf:"bytes,7,rep,name=values,proto3" json:"values,omitempty"` - Grants []*kasregistry.KeyAccessServer `protobuf:"bytes,8,rep,name=grants,proto3" json:"grants,omitempty"` - Fqn string `protobuf:"bytes,9,opt,name=fqn,proto3" json:"fqn,omitempty"` + Rule AttributeRuleTypeEnum `protobuf:"varint,4,opt,name=rule,proto3,enum=policy.attributes.AttributeRuleTypeEnum" json:"rule,omitempty"` + Values []*Value `protobuf:"bytes,5,rep,name=values,proto3" json:"values,omitempty"` + Grants []*kasregistry.KeyAccessServer `protobuf:"bytes,6,rep,name=grants,proto3" json:"grants,omitempty"` + Fqn string `protobuf:"bytes,7,opt,name=fqn,proto3" json:"fqn,omitempty"` // active by default until explicitly deactivated - Active *wrapperspb.BoolValue `protobuf:"bytes,10,opt,name=active,proto3" json:"active,omitempty"` + Active *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=active,proto3" json:"active,omitempty"` + // Common metadata + Metadata *common.Metadata `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *Attribute) Reset() { @@ -139,13 +139,6 @@ func (x *Attribute) GetId() string { return "" } -func (x *Attribute) GetMetadata() *common.Metadata { - if x != nil { - return x.Metadata - } - return nil -} - func (x *Attribute) GetNamespace() *namespaces.Namespace { if x != nil { return x.Namespace @@ -195,113 +188,37 @@ func (x *Attribute) GetActive() *wrapperspb.BoolValue { return nil } -type AttributeCreateUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Optional metadata for the attribute definition - Metadata *common.MetadataMutable `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - // namespace of the attribute - NamespaceId string `protobuf:"bytes,2,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` - // attribute name - Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` - // attribute rule enum - Rule AttributeRuleTypeEnum `protobuf:"varint,4,opt,name=rule,proto3,enum=policy.attributes.AttributeRuleTypeEnum" json:"rule,omitempty"` - // optional - Values []*ValueCreateUpdate `protobuf:"bytes,5,rep,name=values,proto3" json:"values,omitempty"` -} - -func (x *AttributeCreateUpdate) Reset() { - *x = AttributeCreateUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AttributeCreateUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AttributeCreateUpdate) ProtoMessage() {} - -func (x *AttributeCreateUpdate) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AttributeCreateUpdate.ProtoReflect.Descriptor instead. -func (*AttributeCreateUpdate) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{1} -} - -func (x *AttributeCreateUpdate) GetMetadata() *common.MetadataMutable { +func (x *Attribute) GetMetadata() *common.Metadata { if x != nil { return x.Metadata } return nil } -func (x *AttributeCreateUpdate) GetNamespaceId() string { - if x != nil { - return x.NamespaceId - } - return "" -} - -func (x *AttributeCreateUpdate) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *AttributeCreateUpdate) GetRule() AttributeRuleTypeEnum { - if x != nil { - return x.Rule - } - return AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED -} - -func (x *AttributeCreateUpdate) GetValues() []*ValueCreateUpdate { - if x != nil { - return x.Values - } - return nil -} - type Value struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields // generated uuid in database - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Metadata *common.Metadata `protobuf:"bytes,2,opt,name=metadata,proto3" json:"metadata,omitempty"` - AttributeId string `protobuf:"bytes,3,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"` - Value string `protobuf:"bytes,4,opt,name=value,proto3" json:"value,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Attribute *Attribute `protobuf:"bytes,2,opt,name=attribute,proto3" json:"attribute,omitempty"` + Value string `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` // list of attribute values that this value is related to (attribute group) - Members []string `protobuf:"bytes,5,rep,name=members,proto3" json:"members,omitempty"` + Members []string `protobuf:"bytes,4,rep,name=members,proto3" json:"members,omitempty"` // list of key access servers - Grants []*kasregistry.KeyAccessServer `protobuf:"bytes,6,rep,name=grants,proto3" json:"grants,omitempty"` - Fqn string `protobuf:"bytes,7,opt,name=fqn,proto3" json:"fqn,omitempty"` + Grants []*kasregistry.KeyAccessServer `protobuf:"bytes,5,rep,name=grants,proto3" json:"grants,omitempty"` + Fqn string `protobuf:"bytes,6,opt,name=fqn,proto3" json:"fqn,omitempty"` // active by default until explicitly deactivated - Active *wrapperspb.BoolValue `protobuf:"bytes,8,opt,name=active,proto3" json:"active,omitempty"` + Active *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=active,proto3" json:"active,omitempty"` + // Common metadata + Metadata *common.Metadata `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *Value) Reset() { *x = Value{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[2] + mi := &file_policy_attributes_attributes_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -314,7 +231,7 @@ func (x *Value) String() string { func (*Value) ProtoMessage() {} func (x *Value) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[2] + mi := &file_policy_attributes_attributes_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -327,7 +244,7 @@ func (x *Value) ProtoReflect() protoreflect.Message { // Deprecated: Use Value.ProtoReflect.Descriptor instead. func (*Value) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{2} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{1} } func (x *Value) GetId() string { @@ -337,20 +254,13 @@ func (x *Value) GetId() string { return "" } -func (x *Value) GetMetadata() *common.Metadata { +func (x *Value) GetAttribute() *Attribute { if x != nil { - return x.Metadata + return x.Attribute } return nil } -func (x *Value) GetAttributeId() string { - if x != nil { - return x.AttributeId - } - return "" -} - func (x *Value) GetValue() string { if x != nil { return x.Value @@ -386,70 +296,13 @@ func (x *Value) GetActive() *wrapperspb.BoolValue { return nil } -type ValueCreateUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *common.MetadataMutable `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - // list of attribute values that this value is related to (attribute group) - Members []string `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` -} - -func (x *ValueCreateUpdate) Reset() { - *x = ValueCreateUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ValueCreateUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ValueCreateUpdate) ProtoMessage() {} - -func (x *ValueCreateUpdate) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[3] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ValueCreateUpdate.ProtoReflect.Descriptor instead. -func (*ValueCreateUpdate) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{3} -} - -func (x *ValueCreateUpdate) GetMetadata() *common.MetadataMutable { +func (x *Value) GetMetadata() *common.Metadata { if x != nil { return x.Metadata } return nil } -func (x *ValueCreateUpdate) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -func (x *ValueCreateUpdate) GetMembers() []string { - if x != nil { - return x.Members - } - return nil -} - type AttributeAndValue struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -462,7 +315,7 @@ type AttributeAndValue struct { func (x *AttributeAndValue) Reset() { *x = AttributeAndValue{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[4] + mi := &file_policy_attributes_attributes_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -475,7 +328,7 @@ func (x *AttributeAndValue) String() string { func (*AttributeAndValue) ProtoMessage() {} func (x *AttributeAndValue) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[4] + mi := &file_policy_attributes_attributes_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -488,7 +341,7 @@ func (x *AttributeAndValue) ProtoReflect() protoreflect.Message { // Deprecated: Use AttributeAndValue.ProtoReflect.Descriptor instead. func (*AttributeAndValue) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{4} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{2} } func (x *AttributeAndValue) GetAttribute() *Attribute { @@ -517,7 +370,7 @@ type AttributeKeyAccessServer struct { func (x *AttributeKeyAccessServer) Reset() { *x = AttributeKeyAccessServer{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[5] + mi := &file_policy_attributes_attributes_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -530,7 +383,7 @@ func (x *AttributeKeyAccessServer) String() string { func (*AttributeKeyAccessServer) ProtoMessage() {} func (x *AttributeKeyAccessServer) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[5] + mi := &file_policy_attributes_attributes_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -543,7 +396,7 @@ func (x *AttributeKeyAccessServer) ProtoReflect() protoreflect.Message { // Deprecated: Use AttributeKeyAccessServer.ProtoReflect.Descriptor instead. func (*AttributeKeyAccessServer) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{5} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{3} } func (x *AttributeKeyAccessServer) GetAttributeId() string { @@ -572,7 +425,7 @@ type ValueKeyAccessServer struct { func (x *ValueKeyAccessServer) Reset() { *x = ValueKeyAccessServer{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[6] + mi := &file_policy_attributes_attributes_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -585,7 +438,7 @@ func (x *ValueKeyAccessServer) String() string { func (*ValueKeyAccessServer) ProtoMessage() {} func (x *ValueKeyAccessServer) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[6] + mi := &file_policy_attributes_attributes_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -598,7 +451,7 @@ func (x *ValueKeyAccessServer) ProtoReflect() protoreflect.Message { // Deprecated: Use ValueKeyAccessServer.ProtoReflect.Descriptor instead. func (*ValueKeyAccessServer) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{6} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{4} } func (x *ValueKeyAccessServer) GetValueId() string { @@ -627,7 +480,7 @@ type ListAttributesRequest struct { func (x *ListAttributesRequest) Reset() { *x = ListAttributesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[7] + mi := &file_policy_attributes_attributes_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -640,7 +493,7 @@ func (x *ListAttributesRequest) String() string { func (*ListAttributesRequest) ProtoMessage() {} func (x *ListAttributesRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[7] + mi := &file_policy_attributes_attributes_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -653,7 +506,7 @@ func (x *ListAttributesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAttributesRequest.ProtoReflect.Descriptor instead. func (*ListAttributesRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{7} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{5} } func (x *ListAttributesRequest) GetState() common.ActiveStateEnum { @@ -674,7 +527,7 @@ type ListAttributesResponse struct { func (x *ListAttributesResponse) Reset() { *x = ListAttributesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[8] + mi := &file_policy_attributes_attributes_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -687,7 +540,7 @@ func (x *ListAttributesResponse) String() string { func (*ListAttributesResponse) ProtoMessage() {} func (x *ListAttributesResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[8] + mi := &file_policy_attributes_attributes_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -700,7 +553,7 @@ func (x *ListAttributesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAttributesResponse.ProtoReflect.Descriptor instead. func (*ListAttributesResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{8} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{6} } func (x *ListAttributesResponse) GetAttributes() []*Attribute { @@ -721,7 +574,7 @@ type GetAttributeRequest struct { func (x *GetAttributeRequest) Reset() { *x = GetAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[9] + mi := &file_policy_attributes_attributes_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -734,7 +587,7 @@ func (x *GetAttributeRequest) String() string { func (*GetAttributeRequest) ProtoMessage() {} func (x *GetAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[9] + mi := &file_policy_attributes_attributes_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -747,7 +600,7 @@ func (x *GetAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAttributeRequest.ProtoReflect.Descriptor instead. func (*GetAttributeRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{9} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{7} } func (x *GetAttributeRequest) GetId() string { @@ -768,7 +621,7 @@ type GetAttributeResponse struct { func (x *GetAttributeResponse) Reset() { *x = GetAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[10] + mi := &file_policy_attributes_attributes_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -781,7 +634,7 @@ func (x *GetAttributeResponse) String() string { func (*GetAttributeResponse) ProtoMessage() {} func (x *GetAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[10] + mi := &file_policy_attributes_attributes_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -794,7 +647,7 @@ func (x *GetAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAttributeResponse.ProtoReflect.Descriptor instead. func (*GetAttributeResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{10} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{8} } func (x *GetAttributeResponse) GetAttribute() *Attribute { @@ -815,7 +668,7 @@ type GetAttributesByValueFqnsRequest struct { func (x *GetAttributesByValueFqnsRequest) Reset() { *x = GetAttributesByValueFqnsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[11] + mi := &file_policy_attributes_attributes_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -828,7 +681,7 @@ func (x *GetAttributesByValueFqnsRequest) String() string { func (*GetAttributesByValueFqnsRequest) ProtoMessage() {} func (x *GetAttributesByValueFqnsRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[11] + mi := &file_policy_attributes_attributes_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -841,7 +694,7 @@ func (x *GetAttributesByValueFqnsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAttributesByValueFqnsRequest.ProtoReflect.Descriptor instead. func (*GetAttributesByValueFqnsRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{11} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{9} } func (x *GetAttributesByValueFqnsRequest) GetFqns() []string { @@ -863,7 +716,7 @@ type GetAttributesByValueFqnsResponse struct { func (x *GetAttributesByValueFqnsResponse) Reset() { *x = GetAttributesByValueFqnsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[12] + mi := &file_policy_attributes_attributes_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -876,7 +729,7 @@ func (x *GetAttributesByValueFqnsResponse) String() string { func (*GetAttributesByValueFqnsResponse) ProtoMessage() {} func (x *GetAttributesByValueFqnsResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[12] + mi := &file_policy_attributes_attributes_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -889,7 +742,7 @@ func (x *GetAttributesByValueFqnsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAttributesByValueFqnsResponse.ProtoReflect.Descriptor instead. func (*GetAttributesByValueFqnsResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{12} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{10} } func (x *GetAttributesByValueFqnsResponse) GetFqnAttributeValues() map[string]*AttributeAndValue { @@ -904,13 +757,18 @@ type CreateAttributeRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Attribute *AttributeCreateUpdate `protobuf:"bytes,1,opt,name=attribute,proto3" json:"attribute,omitempty"` + // Required + NamespaceId string `protobuf:"bytes,1,opt,name=namespace_id,json=namespaceId,proto3" json:"namespace_id,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Rule AttributeRuleTypeEnum `protobuf:"varint,3,opt,name=rule,proto3,enum=policy.attributes.AttributeRuleTypeEnum" json:"rule,omitempty"` + // Optional + Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *CreateAttributeRequest) Reset() { *x = CreateAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[13] + mi := &file_policy_attributes_attributes_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -923,7 +781,7 @@ func (x *CreateAttributeRequest) String() string { func (*CreateAttributeRequest) ProtoMessage() {} func (x *CreateAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[13] + mi := &file_policy_attributes_attributes_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -936,12 +794,33 @@ func (x *CreateAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAttributeRequest.ProtoReflect.Descriptor instead. func (*CreateAttributeRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{13} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{11} } -func (x *CreateAttributeRequest) GetAttribute() *AttributeCreateUpdate { +func (x *CreateAttributeRequest) GetNamespaceId() string { if x != nil { - return x.Attribute + return x.NamespaceId + } + return "" +} + +func (x *CreateAttributeRequest) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *CreateAttributeRequest) GetRule() AttributeRuleTypeEnum { + if x != nil { + return x.Rule + } + return AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED +} + +func (x *CreateAttributeRequest) GetMetadata() *common.MetadataMutable { + if x != nil { + return x.Metadata } return nil } @@ -957,7 +836,7 @@ type CreateAttributeResponse struct { func (x *CreateAttributeResponse) Reset() { *x = CreateAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[14] + mi := &file_policy_attributes_attributes_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -970,7 +849,7 @@ func (x *CreateAttributeResponse) String() string { func (*CreateAttributeResponse) ProtoMessage() {} func (x *CreateAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[14] + mi := &file_policy_attributes_attributes_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -983,7 +862,7 @@ func (x *CreateAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAttributeResponse.ProtoReflect.Descriptor instead. func (*CreateAttributeResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{14} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{12} } func (x *CreateAttributeResponse) GetAttribute() *Attribute { @@ -998,14 +877,17 @@ type UpdateAttributeRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Attribute *AttributeCreateUpdate `protobuf:"bytes,2,opt,name=attribute,proto3" json:"attribute,omitempty"` + // Required + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Optional + Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` + MetadataUpdateBehavior common.MetadataUpdateEnum `protobuf:"varint,101,opt,name=metadata_update_behavior,json=metadataUpdateBehavior,proto3,enum=common.MetadataUpdateEnum" json:"metadata_update_behavior,omitempty"` } func (x *UpdateAttributeRequest) Reset() { *x = UpdateAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[15] + mi := &file_policy_attributes_attributes_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1018,7 +900,7 @@ func (x *UpdateAttributeRequest) String() string { func (*UpdateAttributeRequest) ProtoMessage() {} func (x *UpdateAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[15] + mi := &file_policy_attributes_attributes_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1031,7 +913,7 @@ func (x *UpdateAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAttributeRequest.ProtoReflect.Descriptor instead. func (*UpdateAttributeRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{15} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{13} } func (x *UpdateAttributeRequest) GetId() string { @@ -1041,13 +923,20 @@ func (x *UpdateAttributeRequest) GetId() string { return "" } -func (x *UpdateAttributeRequest) GetAttribute() *AttributeCreateUpdate { +func (x *UpdateAttributeRequest) GetMetadata() *common.MetadataMutable { if x != nil { - return x.Attribute + return x.Metadata } return nil } +func (x *UpdateAttributeRequest) GetMetadataUpdateBehavior() common.MetadataUpdateEnum { + if x != nil { + return x.MetadataUpdateBehavior + } + return common.MetadataUpdateEnum(0) +} + type UpdateAttributeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1059,7 +948,7 @@ type UpdateAttributeResponse struct { func (x *UpdateAttributeResponse) Reset() { *x = UpdateAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[16] + mi := &file_policy_attributes_attributes_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1072,7 +961,7 @@ func (x *UpdateAttributeResponse) String() string { func (*UpdateAttributeResponse) ProtoMessage() {} func (x *UpdateAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[16] + mi := &file_policy_attributes_attributes_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1085,7 +974,7 @@ func (x *UpdateAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAttributeResponse.ProtoReflect.Descriptor instead. func (*UpdateAttributeResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{16} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{14} } func (x *UpdateAttributeResponse) GetAttribute() *Attribute { @@ -1106,7 +995,7 @@ type DeactivateAttributeRequest struct { func (x *DeactivateAttributeRequest) Reset() { *x = DeactivateAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[17] + mi := &file_policy_attributes_attributes_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1119,7 +1008,7 @@ func (x *DeactivateAttributeRequest) String() string { func (*DeactivateAttributeRequest) ProtoMessage() {} func (x *DeactivateAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[17] + mi := &file_policy_attributes_attributes_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1132,7 +1021,7 @@ func (x *DeactivateAttributeRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeactivateAttributeRequest.ProtoReflect.Descriptor instead. func (*DeactivateAttributeRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{17} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{15} } func (x *DeactivateAttributeRequest) GetId() string { @@ -1153,7 +1042,7 @@ type DeactivateAttributeResponse struct { func (x *DeactivateAttributeResponse) Reset() { *x = DeactivateAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[18] + mi := &file_policy_attributes_attributes_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1166,7 +1055,7 @@ func (x *DeactivateAttributeResponse) String() string { func (*DeactivateAttributeResponse) ProtoMessage() {} func (x *DeactivateAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[18] + mi := &file_policy_attributes_attributes_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1179,7 +1068,7 @@ func (x *DeactivateAttributeResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeactivateAttributeResponse.ProtoReflect.Descriptor instead. func (*DeactivateAttributeResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{18} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{16} } func (x *DeactivateAttributeResponse) GetAttribute() *Attribute { @@ -1203,7 +1092,7 @@ type GetAttributeValueRequest struct { func (x *GetAttributeValueRequest) Reset() { *x = GetAttributeValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[19] + mi := &file_policy_attributes_attributes_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1216,7 +1105,7 @@ func (x *GetAttributeValueRequest) String() string { func (*GetAttributeValueRequest) ProtoMessage() {} func (x *GetAttributeValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[19] + mi := &file_policy_attributes_attributes_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1229,7 +1118,7 @@ func (x *GetAttributeValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAttributeValueRequest.ProtoReflect.Descriptor instead. func (*GetAttributeValueRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{19} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{17} } func (x *GetAttributeValueRequest) GetId() string { @@ -1250,7 +1139,7 @@ type GetAttributeValueResponse struct { func (x *GetAttributeValueResponse) Reset() { *x = GetAttributeValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[20] + mi := &file_policy_attributes_attributes_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1263,7 +1152,7 @@ func (x *GetAttributeValueResponse) String() string { func (*GetAttributeValueResponse) ProtoMessage() {} func (x *GetAttributeValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[20] + mi := &file_policy_attributes_attributes_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1276,7 +1165,7 @@ func (x *GetAttributeValueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetAttributeValueResponse.ProtoReflect.Descriptor instead. func (*GetAttributeValueResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{20} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{18} } func (x *GetAttributeValueResponse) GetValue() *Value { @@ -1299,7 +1188,7 @@ type ListAttributeValuesRequest struct { func (x *ListAttributeValuesRequest) Reset() { *x = ListAttributeValuesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[21] + mi := &file_policy_attributes_attributes_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1312,7 +1201,7 @@ func (x *ListAttributeValuesRequest) String() string { func (*ListAttributeValuesRequest) ProtoMessage() {} func (x *ListAttributeValuesRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[21] + mi := &file_policy_attributes_attributes_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1325,7 +1214,7 @@ func (x *ListAttributeValuesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAttributeValuesRequest.ProtoReflect.Descriptor instead. func (*ListAttributeValuesRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{21} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{19} } func (x *ListAttributeValuesRequest) GetAttributeId() string { @@ -1353,7 +1242,7 @@ type ListAttributeValuesResponse struct { func (x *ListAttributeValuesResponse) Reset() { *x = ListAttributeValuesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[22] + mi := &file_policy_attributes_attributes_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1366,7 +1255,7 @@ func (x *ListAttributeValuesResponse) String() string { func (*ListAttributeValuesResponse) ProtoMessage() {} func (x *ListAttributeValuesResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[22] + mi := &file_policy_attributes_attributes_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1379,7 +1268,7 @@ func (x *ListAttributeValuesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListAttributeValuesResponse.ProtoReflect.Descriptor instead. func (*ListAttributeValuesResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{22} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{20} } func (x *ListAttributeValuesResponse) GetValues() []*Value { @@ -1394,14 +1283,19 @@ type CreateAttributeValueRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"` - Value *ValueCreateUpdate `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + // Required + AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"` + Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` + // Optional + Members []string `protobuf:"bytes,3,rep,name=members,proto3" json:"members,omitempty"` + // Common metadata + Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *CreateAttributeValueRequest) Reset() { *x = CreateAttributeValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[23] + mi := &file_policy_attributes_attributes_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1414,7 +1308,7 @@ func (x *CreateAttributeValueRequest) String() string { func (*CreateAttributeValueRequest) ProtoMessage() {} func (x *CreateAttributeValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[23] + mi := &file_policy_attributes_attributes_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1427,7 +1321,7 @@ func (x *CreateAttributeValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAttributeValueRequest.ProtoReflect.Descriptor instead. func (*CreateAttributeValueRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{23} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{21} } func (x *CreateAttributeValueRequest) GetAttributeId() string { @@ -1437,10 +1331,24 @@ func (x *CreateAttributeValueRequest) GetAttributeId() string { return "" } -func (x *CreateAttributeValueRequest) GetValue() *ValueCreateUpdate { +func (x *CreateAttributeValueRequest) GetValue() string { if x != nil { return x.Value } + return "" +} + +func (x *CreateAttributeValueRequest) GetMembers() []string { + if x != nil { + return x.Members + } + return nil +} + +func (x *CreateAttributeValueRequest) GetMetadata() *common.MetadataMutable { + if x != nil { + return x.Metadata + } return nil } @@ -1455,7 +1363,7 @@ type CreateAttributeValueResponse struct { func (x *CreateAttributeValueResponse) Reset() { *x = CreateAttributeValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[24] + mi := &file_policy_attributes_attributes_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1468,7 +1376,7 @@ func (x *CreateAttributeValueResponse) String() string { func (*CreateAttributeValueResponse) ProtoMessage() {} func (x *CreateAttributeValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[24] + mi := &file_policy_attributes_attributes_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1481,7 +1389,7 @@ func (x *CreateAttributeValueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateAttributeValueResponse.ProtoReflect.Descriptor instead. func (*CreateAttributeValueResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{24} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{22} } func (x *CreateAttributeValueResponse) GetValue() *Value { @@ -1496,15 +1404,18 @@ type UpdateAttributeValueRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"` - Id string `protobuf:"bytes,2,opt,name=id,proto3" json:"id,omitempty"` - Value *ValueCreateUpdate `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"` + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Optional + Members []string `protobuf:"bytes,4,rep,name=members,proto3" json:"members,omitempty"` + // Common metadata + Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` + MetadataUpdateBehavior common.MetadataUpdateEnum `protobuf:"varint,101,opt,name=metadata_update_behavior,json=metadataUpdateBehavior,proto3,enum=common.MetadataUpdateEnum" json:"metadata_update_behavior,omitempty"` } func (x *UpdateAttributeValueRequest) Reset() { *x = UpdateAttributeValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[25] + mi := &file_policy_attributes_attributes_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1517,7 +1428,7 @@ func (x *UpdateAttributeValueRequest) String() string { func (*UpdateAttributeValueRequest) ProtoMessage() {} func (x *UpdateAttributeValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[25] + mi := &file_policy_attributes_attributes_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1530,30 +1441,37 @@ func (x *UpdateAttributeValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAttributeValueRequest.ProtoReflect.Descriptor instead. func (*UpdateAttributeValueRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{25} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{23} } -func (x *UpdateAttributeValueRequest) GetAttributeId() string { +func (x *UpdateAttributeValueRequest) GetId() string { if x != nil { - return x.AttributeId + return x.Id } return "" } -func (x *UpdateAttributeValueRequest) GetId() string { +func (x *UpdateAttributeValueRequest) GetMembers() []string { if x != nil { - return x.Id + return x.Members } - return "" + return nil } -func (x *UpdateAttributeValueRequest) GetValue() *ValueCreateUpdate { +func (x *UpdateAttributeValueRequest) GetMetadata() *common.MetadataMutable { if x != nil { - return x.Value + return x.Metadata } return nil } +func (x *UpdateAttributeValueRequest) GetMetadataUpdateBehavior() common.MetadataUpdateEnum { + if x != nil { + return x.MetadataUpdateBehavior + } + return common.MetadataUpdateEnum(0) +} + type UpdateAttributeValueResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1565,7 +1483,7 @@ type UpdateAttributeValueResponse struct { func (x *UpdateAttributeValueResponse) Reset() { *x = UpdateAttributeValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[26] + mi := &file_policy_attributes_attributes_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1578,7 +1496,7 @@ func (x *UpdateAttributeValueResponse) String() string { func (*UpdateAttributeValueResponse) ProtoMessage() {} func (x *UpdateAttributeValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[26] + mi := &file_policy_attributes_attributes_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1591,7 +1509,7 @@ func (x *UpdateAttributeValueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateAttributeValueResponse.ProtoReflect.Descriptor instead. func (*UpdateAttributeValueResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{26} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{24} } func (x *UpdateAttributeValueResponse) GetValue() *Value { @@ -1612,7 +1530,7 @@ type DeactivateAttributeValueRequest struct { func (x *DeactivateAttributeValueRequest) Reset() { *x = DeactivateAttributeValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[27] + mi := &file_policy_attributes_attributes_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1625,7 +1543,7 @@ func (x *DeactivateAttributeValueRequest) String() string { func (*DeactivateAttributeValueRequest) ProtoMessage() {} func (x *DeactivateAttributeValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[27] + mi := &file_policy_attributes_attributes_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1638,7 +1556,7 @@ func (x *DeactivateAttributeValueRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeactivateAttributeValueRequest.ProtoReflect.Descriptor instead. func (*DeactivateAttributeValueRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{27} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{25} } func (x *DeactivateAttributeValueRequest) GetId() string { @@ -1659,7 +1577,7 @@ type DeactivateAttributeValueResponse struct { func (x *DeactivateAttributeValueResponse) Reset() { *x = DeactivateAttributeValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[28] + mi := &file_policy_attributes_attributes_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1672,7 +1590,7 @@ func (x *DeactivateAttributeValueResponse) String() string { func (*DeactivateAttributeValueResponse) ProtoMessage() {} func (x *DeactivateAttributeValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[28] + mi := &file_policy_attributes_attributes_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1685,7 +1603,7 @@ func (x *DeactivateAttributeValueResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeactivateAttributeValueResponse.ProtoReflect.Descriptor instead. func (*DeactivateAttributeValueResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{28} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{26} } func (x *DeactivateAttributeValueResponse) GetValue() *Value { @@ -1706,7 +1624,7 @@ type AssignKeyAccessServerToAttributeRequest struct { func (x *AssignKeyAccessServerToAttributeRequest) Reset() { *x = AssignKeyAccessServerToAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[29] + mi := &file_policy_attributes_attributes_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1719,7 +1637,7 @@ func (x *AssignKeyAccessServerToAttributeRequest) String() string { func (*AssignKeyAccessServerToAttributeRequest) ProtoMessage() {} func (x *AssignKeyAccessServerToAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[29] + mi := &file_policy_attributes_attributes_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1732,7 +1650,7 @@ func (x *AssignKeyAccessServerToAttributeRequest) ProtoReflect() protoreflect.Me // Deprecated: Use AssignKeyAccessServerToAttributeRequest.ProtoReflect.Descriptor instead. func (*AssignKeyAccessServerToAttributeRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{29} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{27} } func (x *AssignKeyAccessServerToAttributeRequest) GetAttributeKeyAccessServer() *AttributeKeyAccessServer { @@ -1753,7 +1671,7 @@ type AssignKeyAccessServerToAttributeResponse struct { func (x *AssignKeyAccessServerToAttributeResponse) Reset() { *x = AssignKeyAccessServerToAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[30] + mi := &file_policy_attributes_attributes_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1766,7 +1684,7 @@ func (x *AssignKeyAccessServerToAttributeResponse) String() string { func (*AssignKeyAccessServerToAttributeResponse) ProtoMessage() {} func (x *AssignKeyAccessServerToAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[30] + mi := &file_policy_attributes_attributes_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1779,7 +1697,7 @@ func (x *AssignKeyAccessServerToAttributeResponse) ProtoReflect() protoreflect.M // Deprecated: Use AssignKeyAccessServerToAttributeResponse.ProtoReflect.Descriptor instead. func (*AssignKeyAccessServerToAttributeResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{30} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{28} } func (x *AssignKeyAccessServerToAttributeResponse) GetAttributeKeyAccessServer() *AttributeKeyAccessServer { @@ -1800,7 +1718,7 @@ type RemoveKeyAccessServerFromAttributeRequest struct { func (x *RemoveKeyAccessServerFromAttributeRequest) Reset() { *x = RemoveKeyAccessServerFromAttributeRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[31] + mi := &file_policy_attributes_attributes_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1813,7 +1731,7 @@ func (x *RemoveKeyAccessServerFromAttributeRequest) String() string { func (*RemoveKeyAccessServerFromAttributeRequest) ProtoMessage() {} func (x *RemoveKeyAccessServerFromAttributeRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[31] + mi := &file_policy_attributes_attributes_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1826,7 +1744,7 @@ func (x *RemoveKeyAccessServerFromAttributeRequest) ProtoReflect() protoreflect. // Deprecated: Use RemoveKeyAccessServerFromAttributeRequest.ProtoReflect.Descriptor instead. func (*RemoveKeyAccessServerFromAttributeRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{31} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{29} } func (x *RemoveKeyAccessServerFromAttributeRequest) GetAttributeKeyAccessServer() *AttributeKeyAccessServer { @@ -1847,7 +1765,7 @@ type RemoveKeyAccessServerFromAttributeResponse struct { func (x *RemoveKeyAccessServerFromAttributeResponse) Reset() { *x = RemoveKeyAccessServerFromAttributeResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[32] + mi := &file_policy_attributes_attributes_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1860,7 +1778,7 @@ func (x *RemoveKeyAccessServerFromAttributeResponse) String() string { func (*RemoveKeyAccessServerFromAttributeResponse) ProtoMessage() {} func (x *RemoveKeyAccessServerFromAttributeResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[32] + mi := &file_policy_attributes_attributes_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1873,7 +1791,7 @@ func (x *RemoveKeyAccessServerFromAttributeResponse) ProtoReflect() protoreflect // Deprecated: Use RemoveKeyAccessServerFromAttributeResponse.ProtoReflect.Descriptor instead. func (*RemoveKeyAccessServerFromAttributeResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{32} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{30} } func (x *RemoveKeyAccessServerFromAttributeResponse) GetAttributeKeyAccessServer() *AttributeKeyAccessServer { @@ -1894,7 +1812,7 @@ type AssignKeyAccessServerToValueRequest struct { func (x *AssignKeyAccessServerToValueRequest) Reset() { *x = AssignKeyAccessServerToValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[33] + mi := &file_policy_attributes_attributes_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1907,7 +1825,7 @@ func (x *AssignKeyAccessServerToValueRequest) String() string { func (*AssignKeyAccessServerToValueRequest) ProtoMessage() {} func (x *AssignKeyAccessServerToValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[33] + mi := &file_policy_attributes_attributes_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1920,7 +1838,7 @@ func (x *AssignKeyAccessServerToValueRequest) ProtoReflect() protoreflect.Messag // Deprecated: Use AssignKeyAccessServerToValueRequest.ProtoReflect.Descriptor instead. func (*AssignKeyAccessServerToValueRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{33} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{31} } func (x *AssignKeyAccessServerToValueRequest) GetValueKeyAccessServer() *ValueKeyAccessServer { @@ -1941,7 +1859,7 @@ type AssignKeyAccessServerToValueResponse struct { func (x *AssignKeyAccessServerToValueResponse) Reset() { *x = AssignKeyAccessServerToValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[34] + mi := &file_policy_attributes_attributes_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1954,7 +1872,7 @@ func (x *AssignKeyAccessServerToValueResponse) String() string { func (*AssignKeyAccessServerToValueResponse) ProtoMessage() {} func (x *AssignKeyAccessServerToValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[34] + mi := &file_policy_attributes_attributes_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1967,7 +1885,7 @@ func (x *AssignKeyAccessServerToValueResponse) ProtoReflect() protoreflect.Messa // Deprecated: Use AssignKeyAccessServerToValueResponse.ProtoReflect.Descriptor instead. func (*AssignKeyAccessServerToValueResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{34} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{32} } func (x *AssignKeyAccessServerToValueResponse) GetValueKeyAccessServer() *ValueKeyAccessServer { @@ -1988,7 +1906,7 @@ type RemoveKeyAccessServerFromValueRequest struct { func (x *RemoveKeyAccessServerFromValueRequest) Reset() { *x = RemoveKeyAccessServerFromValueRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[35] + mi := &file_policy_attributes_attributes_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2001,7 +1919,7 @@ func (x *RemoveKeyAccessServerFromValueRequest) String() string { func (*RemoveKeyAccessServerFromValueRequest) ProtoMessage() {} func (x *RemoveKeyAccessServerFromValueRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[35] + mi := &file_policy_attributes_attributes_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2014,7 +1932,7 @@ func (x *RemoveKeyAccessServerFromValueRequest) ProtoReflect() protoreflect.Mess // Deprecated: Use RemoveKeyAccessServerFromValueRequest.ProtoReflect.Descriptor instead. func (*RemoveKeyAccessServerFromValueRequest) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{35} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{33} } func (x *RemoveKeyAccessServerFromValueRequest) GetValueKeyAccessServer() *ValueKeyAccessServer { @@ -2035,7 +1953,7 @@ type RemoveKeyAccessServerFromValueResponse struct { func (x *RemoveKeyAccessServerFromValueResponse) Reset() { *x = RemoveKeyAccessServerFromValueResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_attributes_attributes_proto_msgTypes[36] + mi := &file_policy_attributes_attributes_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2048,7 +1966,7 @@ func (x *RemoveKeyAccessServerFromValueResponse) String() string { func (*RemoveKeyAccessServerFromValueResponse) ProtoMessage() {} func (x *RemoveKeyAccessServerFromValueResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_attributes_attributes_proto_msgTypes[36] + mi := &file_policy_attributes_attributes_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2061,7 +1979,7 @@ func (x *RemoveKeyAccessServerFromValueResponse) ProtoReflect() protoreflect.Mes // Deprecated: Use RemoveKeyAccessServerFromValueResponse.ProtoReflect.Descriptor instead. func (*RemoveKeyAccessServerFromValueResponse) Descriptor() ([]byte, []int) { - return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{36} + return file_policy_attributes_attributes_proto_rawDescGZIP(), []int{34} } func (x *RemoveKeyAccessServerFromValueResponse) GetValueKeyAccessServer() *ValueKeyAccessServer { @@ -2091,485 +2009,476 @@ var file_policy_attributes_attributes_proto_rawDesc = []byte{ 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x03, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x3a, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x0b, 0xba, - 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, - 0x12, 0x30, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x08, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, - 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x63, - 0x74, 0x69, 0x76, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, - 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, - 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x9c, - 0x02, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, - 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, - 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, - 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, 0x0b, 0xba, 0x48, - 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, - 0x3c, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, 0x9c, 0x02, - 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, - 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, - 0x12, 0x34, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x4b, - 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, - 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x78, 0x0a, 0x11, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, - 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, - 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x22, 0x7f, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x6e, 0x0a, 0x18, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x14, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0x62, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, - 0x19, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x14, 0x6b, 0x65, - 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x15, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x22, 0x56, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x13, 0x47, - 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, - 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x52, 0x0a, 0x14, 0x47, 0x65, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x3d, - 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, - 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x1a, 0x0a, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x66, 0x71, 0x6e, 0x73, 0x22, 0x8e, 0x02, - 0x0a, 0x20, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, - 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x14, 0x66, 0x71, 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x4b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x42, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x71, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x66, - 0x71, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x1a, 0x6b, 0x0a, 0x17, 0x46, 0x71, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x68, - 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4e, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x6f, + 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x42, + 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, 0x75, + 0x6c, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, + 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x32, 0x0a, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0xad, + 0x02, 0x0a, 0x05, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x3a, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x55, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, + 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, + 0x62, 0x65, 0x72, 0x73, 0x12, 0x34, 0x0a, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x05, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, + 0x72, 0x79, 0x2e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, + 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x32, 0x0a, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, + 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, + 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x7f, + 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0x6e, 0x0a, 0x18, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x2f, + 0x0a, 0x14, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x11, 0x6b, 0x65, + 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x49, 0x64, 0x22, + 0x62, 0x0a, 0x14, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x19, 0x0a, 0x08, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x14, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x11, 0x6b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x49, 0x64, 0x22, 0x46, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x56, 0x0a, 0x16, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x22, 0x2d, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x52, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x3d, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x71, + 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x04, 0x66, 0x71, 0x6e, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, + 0x04, 0x66, 0x71, 0x6e, 0x73, 0x22, 0x8e, 0x02, 0x0a, 0x20, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x71, + 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x7d, 0x0a, 0x14, 0x66, 0x71, + 0x6e, 0x5f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x4b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x71, + 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x12, 0x66, 0x71, 0x6e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x1a, 0x6b, 0x0a, 0x17, 0x46, 0x71, 0x6e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x45, + 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x3a, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x41, 0x6e, 0x64, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xdf, 0x01, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, + 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1a, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, + 0x01, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x49, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, + 0x42, 0x0b, 0xba, 0x48, 0x08, 0xc8, 0x01, 0x01, 0x82, 0x01, 0x02, 0x10, 0x01, 0x52, 0x04, 0x72, + 0x75, 0x6c, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, + 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, + 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, - 0x80, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0xbb, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, - 0x69, 0x64, 0x12, 0x4e, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x22, 0x55, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, - 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x34, 0x0a, 0x1a, 0x44, 0x65, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x59, 0x0a, 0x1b, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x32, 0x0a, 0x18, 0x47, 0x65, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4b, - 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x76, 0x0a, 0x1a, 0x4c, - 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x49, 0x64, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, - 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x22, 0x4f, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x22, 0x8c, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, + 0x69, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, + 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, + 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, 0x55, 0x0a, + 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x22, 0x34, 0x0a, 0x1a, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, + 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x59, 0x0a, 0x1b, 0x44, 0x65, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x32, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, + 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4b, 0x0a, 0x19, 0x47, 0x65, 0x74, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x76, 0x0a, 0x1a, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, - 0x42, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x4e, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, + 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, + 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x4f, + 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, + 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x22, + 0xb5, 0x01, 0x0a, 0x1b, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x29, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0b, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, + 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, + 0x72, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x4e, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xda, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, + 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, + 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, + 0x0a, 0x18, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x5f, 0x62, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x1a, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61, + 0x76, 0x69, 0x6f, 0x72, 0x22, 0x4e, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x22, 0x39, 0x0a, 0x1f, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, + 0x52, 0x0a, 0x20, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0xa4, 0x01, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0c, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, - 0x01, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x49, 0x64, 0x12, 0x16, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, - 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x42, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, - 0xc8, 0x01, 0x01, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x4e, 0x0a, 0x1c, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x39, 0x0a, 0x1f, 0x44, 0x65, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, - 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, - 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x52, 0x0a, 0x20, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x27, 0x41, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6a, 0x0a, 0x1b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x18, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x6c, 0x75, 0x65, 0x22, 0x95, 0x01, 0x0a, 0x27, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, + 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x6a, 0x0a, 0x1b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, + 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x22, 0x96, 0x01, 0x0a, 0x28, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, - 0x0a, 0x1b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, - 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x52, 0x18, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x97, 0x01, 0x0a, 0x29, 0x52, - 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x6a, 0x0a, 0x1b, 0x61, 0x74, 0x74, 0x72, + 0x72, 0x52, 0x18, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x96, 0x01, 0x0a, 0x28, + 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x1b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x18, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x22, 0x98, 0x01, 0x0a, 0x2a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, + 0x72, 0x76, 0x65, 0x72, 0x22, 0x97, 0x01, 0x0a, 0x29, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, - 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, 0x1b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x18, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, - 0x85, 0x01, 0x0a, 0x23, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, + 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x6a, 0x0a, 0x1b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, + 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x52, 0x18, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, + 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x98, + 0x01, 0x0a, 0x2a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x6a, 0x0a, + 0x1b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, + 0x18, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x85, 0x01, 0x0a, 0x23, 0x41, 0x73, + 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, + 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x5e, 0x0a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x52, 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, - 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x86, 0x01, 0x0a, 0x24, 0x41, 0x73, 0x73, 0x69, - 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x5e, 0x0a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x14, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x22, 0x87, 0x01, 0x0a, 0x25, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x17, 0x76, 0x61, + 0x72, 0x22, 0x86, 0x01, 0x0a, 0x24, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x26, 0x52, + 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x87, 0x01, 0x0a, 0x25, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6b, - 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, - 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x2a, 0xb3, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, - 0x28, 0x0a, 0x24, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, - 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, + 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6b, 0x65, + 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4b, + 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x14, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x22, 0x88, 0x01, 0x0a, 0x26, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, + 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, + 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5e, 0x0a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x14, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2a, + 0xb3, 0x01, 0x0a, 0x15, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x75, 0x6c, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x28, 0x0a, 0x24, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4c, 0x4c, 0x5f, 0x4f, 0x46, 0x10, 0x01, 0x12, 0x23, - 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, 0x5f, 0x4f, - 0x46, 0x10, 0x02, 0x12, 0x26, 0x0a, 0x22, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, + 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, - 0x48, 0x49, 0x45, 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x10, 0x03, 0x32, 0xec, 0x13, 0x0a, 0x11, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x67, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, + 0x41, 0x4c, 0x4c, 0x5f, 0x4f, 0x46, 0x10, 0x01, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x54, 0x54, 0x52, + 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, 0x5f, 0x4f, 0x46, 0x10, 0x02, 0x12, 0x26, 0x0a, + 0x22, 0x41, 0x54, 0x54, 0x52, 0x49, 0x42, 0x55, 0x54, 0x45, 0x5f, 0x52, 0x55, 0x4c, 0x45, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x48, 0x49, 0x45, 0x52, 0x41, 0x52, + 0x43, 0x48, 0x59, 0x10, 0x03, 0x32, 0xc7, 0x13, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x67, 0x0a, 0x0e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x2d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x79, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x26, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9e, 0x01, - 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, - 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x71, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x79, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x12, 0x10, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x9e, 0x01, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x46, 0x71, 0x6e, 0x73, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x71, 0x6e, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x66, 0x71, 0x6e, 0x12, 0x80, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x16, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x10, 0x3a, 0x01, 0x2a, 0x22, 0x0b, + 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x85, 0x01, 0x0a, 0x0f, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, + 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x15, 0x3a, 0x01, + 0x2a, 0x32, 0x10, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, + 0x69, 0x64, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, + 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x2d, 0x2e, 0x70, 0x6f, + 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, + 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, + 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x12, 0x2a, 0x10, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, + 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x91, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, - 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x42, 0x79, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x46, 0x71, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x19, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x13, 0x12, 0x11, 0x2f, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x5f, 0x2f, 0x66, 0x71, 0x6e, 0x12, 0x88, - 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x18, 0x3a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x0b, 0x2f, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x8d, 0x01, 0x0a, 0x0f, 0x55, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x29, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x3a, 0x09, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x22, 0x10, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8e, 0x01, 0x0a, 0x13, 0x44, 0x65, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x12, 0x2d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x18, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x12, 0x2a, 0x10, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x91, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x2b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x12, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x01, 0x2a, 0x22, 0x21, 0x2f, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, + 0x12, 0x9d, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x24, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1e, 0x3a, 0x01, 0x2a, 0x32, 0x19, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x12, 0xa6, 0x01, 0x0a, 0x18, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, - 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x2f, 0x5f, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa9, - 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x30, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2a, - 0x3a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x21, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0xae, 0x01, 0x0a, 0x14, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x2f, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x35, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x3a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x26, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x2f, 0x7b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa6, 0x01, 0x0a, 0x18, - 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x33, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, 0x2f, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x5f, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2f, - 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xe4, 0x01, 0x0a, 0x20, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, - 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, + 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x33, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x2a, 0x19, + 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x2a, 0x2f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xe4, 0x01, 0x0a, 0x20, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, - 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, - 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x1b, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, - 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x22, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x2f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x12, 0xea, 0x01, 0x0a, 0x22, - 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, - 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x3d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, + 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3a, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3b, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, + 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, + 0x1b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, + 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x22, 0x2f, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x63, 0x63, + 0x65, 0x73, 0x73, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, + 0x12, 0xea, 0x01, 0x0a, 0x22, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x1b, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x22, 0x22, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0xdb, 0x01, 0x0a, 0x1c, 0x41, 0x73, 0x73, - 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, - 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x37, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x44, 0x3a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x29, 0x2f, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2f, - 0x6b, 0x65, 0x79, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, - 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x12, 0xe1, 0x01, 0x0a, 0x1e, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, - 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, - 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, - 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6b, 0x65, - 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, - 0x29, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, 0xd8, 0x01, 0x0a, 0x25, 0x69, - 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x42, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x6f, - 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x41, 0x58, 0xaa, 0x02, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xca, 0x02, 0x11, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0xe2, 0x02, 0x1d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x3a, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x3c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, + 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, + 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, + 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x41, 0x3a, 0x1b, 0x61, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x22, 0x2f, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x12, 0xdb, 0x01, + 0x0a, 0x1c, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, + 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x36, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, + 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x17, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x6b, + 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, + 0x22, 0x29, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x2f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x12, 0xe1, 0x01, 0x0a, 0x1e, + 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x38, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x39, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x44, 0x3a, 0x17, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, + 0x72, 0x76, 0x65, 0x72, 0x22, 0x29, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x2f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x2f, 0x6b, 0x65, 0x79, 0x61, 0x63, 0x63, 0x65, + 0x73, 0x73, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x42, + 0xd8, 0x01, 0x0a, 0x25, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2e, 0x70, + 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x42, 0x0f, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, + 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, + 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x41, 0x58, 0xaa, 0x02, 0x11, + 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0xca, 0x02, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0xe2, 0x02, 0x1d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x3a, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -2585,126 +2494,125 @@ func file_policy_attributes_attributes_proto_rawDescGZIP() []byte { } var file_policy_attributes_attributes_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_policy_attributes_attributes_proto_msgTypes = make([]protoimpl.MessageInfo, 38) +var file_policy_attributes_attributes_proto_msgTypes = make([]protoimpl.MessageInfo, 36) var file_policy_attributes_attributes_proto_goTypes = []interface{}{ (AttributeRuleTypeEnum)(0), // 0: policy.attributes.AttributeRuleTypeEnum (*Attribute)(nil), // 1: policy.attributes.Attribute - (*AttributeCreateUpdate)(nil), // 2: policy.attributes.AttributeCreateUpdate - (*Value)(nil), // 3: policy.attributes.Value - (*ValueCreateUpdate)(nil), // 4: policy.attributes.ValueCreateUpdate - (*AttributeAndValue)(nil), // 5: policy.attributes.AttributeAndValue - (*AttributeKeyAccessServer)(nil), // 6: policy.attributes.AttributeKeyAccessServer - (*ValueKeyAccessServer)(nil), // 7: policy.attributes.ValueKeyAccessServer - (*ListAttributesRequest)(nil), // 8: policy.attributes.ListAttributesRequest - (*ListAttributesResponse)(nil), // 9: policy.attributes.ListAttributesResponse - (*GetAttributeRequest)(nil), // 10: policy.attributes.GetAttributeRequest - (*GetAttributeResponse)(nil), // 11: policy.attributes.GetAttributeResponse - (*GetAttributesByValueFqnsRequest)(nil), // 12: policy.attributes.GetAttributesByValueFqnsRequest - (*GetAttributesByValueFqnsResponse)(nil), // 13: policy.attributes.GetAttributesByValueFqnsResponse - (*CreateAttributeRequest)(nil), // 14: policy.attributes.CreateAttributeRequest - (*CreateAttributeResponse)(nil), // 15: policy.attributes.CreateAttributeResponse - (*UpdateAttributeRequest)(nil), // 16: policy.attributes.UpdateAttributeRequest - (*UpdateAttributeResponse)(nil), // 17: policy.attributes.UpdateAttributeResponse - (*DeactivateAttributeRequest)(nil), // 18: policy.attributes.DeactivateAttributeRequest - (*DeactivateAttributeResponse)(nil), // 19: policy.attributes.DeactivateAttributeResponse - (*GetAttributeValueRequest)(nil), // 20: policy.attributes.GetAttributeValueRequest - (*GetAttributeValueResponse)(nil), // 21: policy.attributes.GetAttributeValueResponse - (*ListAttributeValuesRequest)(nil), // 22: policy.attributes.ListAttributeValuesRequest - (*ListAttributeValuesResponse)(nil), // 23: policy.attributes.ListAttributeValuesResponse - (*CreateAttributeValueRequest)(nil), // 24: policy.attributes.CreateAttributeValueRequest - (*CreateAttributeValueResponse)(nil), // 25: policy.attributes.CreateAttributeValueResponse - (*UpdateAttributeValueRequest)(nil), // 26: policy.attributes.UpdateAttributeValueRequest - (*UpdateAttributeValueResponse)(nil), // 27: policy.attributes.UpdateAttributeValueResponse - (*DeactivateAttributeValueRequest)(nil), // 28: policy.attributes.DeactivateAttributeValueRequest - (*DeactivateAttributeValueResponse)(nil), // 29: policy.attributes.DeactivateAttributeValueResponse - (*AssignKeyAccessServerToAttributeRequest)(nil), // 30: policy.attributes.AssignKeyAccessServerToAttributeRequest - (*AssignKeyAccessServerToAttributeResponse)(nil), // 31: policy.attributes.AssignKeyAccessServerToAttributeResponse - (*RemoveKeyAccessServerFromAttributeRequest)(nil), // 32: policy.attributes.RemoveKeyAccessServerFromAttributeRequest - (*RemoveKeyAccessServerFromAttributeResponse)(nil), // 33: policy.attributes.RemoveKeyAccessServerFromAttributeResponse - (*AssignKeyAccessServerToValueRequest)(nil), // 34: policy.attributes.AssignKeyAccessServerToValueRequest - (*AssignKeyAccessServerToValueResponse)(nil), // 35: policy.attributes.AssignKeyAccessServerToValueResponse - (*RemoveKeyAccessServerFromValueRequest)(nil), // 36: policy.attributes.RemoveKeyAccessServerFromValueRequest - (*RemoveKeyAccessServerFromValueResponse)(nil), // 37: policy.attributes.RemoveKeyAccessServerFromValueResponse - nil, // 38: policy.attributes.GetAttributesByValueFqnsResponse.FqnAttributeValuesEntry - (*common.Metadata)(nil), // 39: common.Metadata - (*namespaces.Namespace)(nil), // 40: policy.namespaces.Namespace - (*kasregistry.KeyAccessServer)(nil), // 41: kasregistry.KeyAccessServer - (*wrapperspb.BoolValue)(nil), // 42: google.protobuf.BoolValue - (*common.MetadataMutable)(nil), // 43: common.MetadataMutable - (common.ActiveStateEnum)(0), // 44: common.ActiveStateEnum + (*Value)(nil), // 2: policy.attributes.Value + (*AttributeAndValue)(nil), // 3: policy.attributes.AttributeAndValue + (*AttributeKeyAccessServer)(nil), // 4: policy.attributes.AttributeKeyAccessServer + (*ValueKeyAccessServer)(nil), // 5: policy.attributes.ValueKeyAccessServer + (*ListAttributesRequest)(nil), // 6: policy.attributes.ListAttributesRequest + (*ListAttributesResponse)(nil), // 7: policy.attributes.ListAttributesResponse + (*GetAttributeRequest)(nil), // 8: policy.attributes.GetAttributeRequest + (*GetAttributeResponse)(nil), // 9: policy.attributes.GetAttributeResponse + (*GetAttributesByValueFqnsRequest)(nil), // 10: policy.attributes.GetAttributesByValueFqnsRequest + (*GetAttributesByValueFqnsResponse)(nil), // 11: policy.attributes.GetAttributesByValueFqnsResponse + (*CreateAttributeRequest)(nil), // 12: policy.attributes.CreateAttributeRequest + (*CreateAttributeResponse)(nil), // 13: policy.attributes.CreateAttributeResponse + (*UpdateAttributeRequest)(nil), // 14: policy.attributes.UpdateAttributeRequest + (*UpdateAttributeResponse)(nil), // 15: policy.attributes.UpdateAttributeResponse + (*DeactivateAttributeRequest)(nil), // 16: policy.attributes.DeactivateAttributeRequest + (*DeactivateAttributeResponse)(nil), // 17: policy.attributes.DeactivateAttributeResponse + (*GetAttributeValueRequest)(nil), // 18: policy.attributes.GetAttributeValueRequest + (*GetAttributeValueResponse)(nil), // 19: policy.attributes.GetAttributeValueResponse + (*ListAttributeValuesRequest)(nil), // 20: policy.attributes.ListAttributeValuesRequest + (*ListAttributeValuesResponse)(nil), // 21: policy.attributes.ListAttributeValuesResponse + (*CreateAttributeValueRequest)(nil), // 22: policy.attributes.CreateAttributeValueRequest + (*CreateAttributeValueResponse)(nil), // 23: policy.attributes.CreateAttributeValueResponse + (*UpdateAttributeValueRequest)(nil), // 24: policy.attributes.UpdateAttributeValueRequest + (*UpdateAttributeValueResponse)(nil), // 25: policy.attributes.UpdateAttributeValueResponse + (*DeactivateAttributeValueRequest)(nil), // 26: policy.attributes.DeactivateAttributeValueRequest + (*DeactivateAttributeValueResponse)(nil), // 27: policy.attributes.DeactivateAttributeValueResponse + (*AssignKeyAccessServerToAttributeRequest)(nil), // 28: policy.attributes.AssignKeyAccessServerToAttributeRequest + (*AssignKeyAccessServerToAttributeResponse)(nil), // 29: policy.attributes.AssignKeyAccessServerToAttributeResponse + (*RemoveKeyAccessServerFromAttributeRequest)(nil), // 30: policy.attributes.RemoveKeyAccessServerFromAttributeRequest + (*RemoveKeyAccessServerFromAttributeResponse)(nil), // 31: policy.attributes.RemoveKeyAccessServerFromAttributeResponse + (*AssignKeyAccessServerToValueRequest)(nil), // 32: policy.attributes.AssignKeyAccessServerToValueRequest + (*AssignKeyAccessServerToValueResponse)(nil), // 33: policy.attributes.AssignKeyAccessServerToValueResponse + (*RemoveKeyAccessServerFromValueRequest)(nil), // 34: policy.attributes.RemoveKeyAccessServerFromValueRequest + (*RemoveKeyAccessServerFromValueResponse)(nil), // 35: policy.attributes.RemoveKeyAccessServerFromValueResponse + nil, // 36: policy.attributes.GetAttributesByValueFqnsResponse.FqnAttributeValuesEntry + (*namespaces.Namespace)(nil), // 37: policy.namespaces.Namespace + (*kasregistry.KeyAccessServer)(nil), // 38: kasregistry.KeyAccessServer + (*wrapperspb.BoolValue)(nil), // 39: google.protobuf.BoolValue + (*common.Metadata)(nil), // 40: common.Metadata + (common.ActiveStateEnum)(0), // 41: common.ActiveStateEnum + (*common.MetadataMutable)(nil), // 42: common.MetadataMutable + (common.MetadataUpdateEnum)(0), // 43: common.MetadataUpdateEnum } var file_policy_attributes_attributes_proto_depIdxs = []int32{ - 39, // 0: policy.attributes.Attribute.metadata:type_name -> common.Metadata - 40, // 1: policy.attributes.Attribute.namespace:type_name -> policy.namespaces.Namespace - 0, // 2: policy.attributes.Attribute.rule:type_name -> policy.attributes.AttributeRuleTypeEnum - 3, // 3: policy.attributes.Attribute.values:type_name -> policy.attributes.Value - 41, // 4: policy.attributes.Attribute.grants:type_name -> kasregistry.KeyAccessServer - 42, // 5: policy.attributes.Attribute.active:type_name -> google.protobuf.BoolValue - 43, // 6: policy.attributes.AttributeCreateUpdate.metadata:type_name -> common.MetadataMutable - 0, // 7: policy.attributes.AttributeCreateUpdate.rule:type_name -> policy.attributes.AttributeRuleTypeEnum - 4, // 8: policy.attributes.AttributeCreateUpdate.values:type_name -> policy.attributes.ValueCreateUpdate - 39, // 9: policy.attributes.Value.metadata:type_name -> common.Metadata - 41, // 10: policy.attributes.Value.grants:type_name -> kasregistry.KeyAccessServer - 42, // 11: policy.attributes.Value.active:type_name -> google.protobuf.BoolValue - 43, // 12: policy.attributes.ValueCreateUpdate.metadata:type_name -> common.MetadataMutable - 1, // 13: policy.attributes.AttributeAndValue.attribute:type_name -> policy.attributes.Attribute - 3, // 14: policy.attributes.AttributeAndValue.value:type_name -> policy.attributes.Value - 44, // 15: policy.attributes.ListAttributesRequest.state:type_name -> common.ActiveStateEnum - 1, // 16: policy.attributes.ListAttributesResponse.attributes:type_name -> policy.attributes.Attribute - 1, // 17: policy.attributes.GetAttributeResponse.attribute:type_name -> policy.attributes.Attribute - 38, // 18: policy.attributes.GetAttributesByValueFqnsResponse.fqn_attribute_values:type_name -> policy.attributes.GetAttributesByValueFqnsResponse.FqnAttributeValuesEntry - 2, // 19: policy.attributes.CreateAttributeRequest.attribute:type_name -> policy.attributes.AttributeCreateUpdate - 1, // 20: policy.attributes.CreateAttributeResponse.attribute:type_name -> policy.attributes.Attribute - 2, // 21: policy.attributes.UpdateAttributeRequest.attribute:type_name -> policy.attributes.AttributeCreateUpdate - 1, // 22: policy.attributes.UpdateAttributeResponse.attribute:type_name -> policy.attributes.Attribute - 1, // 23: policy.attributes.DeactivateAttributeResponse.attribute:type_name -> policy.attributes.Attribute - 3, // 24: policy.attributes.GetAttributeValueResponse.value:type_name -> policy.attributes.Value - 44, // 25: policy.attributes.ListAttributeValuesRequest.state:type_name -> common.ActiveStateEnum - 3, // 26: policy.attributes.ListAttributeValuesResponse.values:type_name -> policy.attributes.Value - 4, // 27: policy.attributes.CreateAttributeValueRequest.value:type_name -> policy.attributes.ValueCreateUpdate - 3, // 28: policy.attributes.CreateAttributeValueResponse.value:type_name -> policy.attributes.Value - 4, // 29: policy.attributes.UpdateAttributeValueRequest.value:type_name -> policy.attributes.ValueCreateUpdate - 3, // 30: policy.attributes.UpdateAttributeValueResponse.value:type_name -> policy.attributes.Value - 3, // 31: policy.attributes.DeactivateAttributeValueResponse.value:type_name -> policy.attributes.Value - 6, // 32: policy.attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer - 6, // 33: policy.attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer - 6, // 34: policy.attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer - 6, // 35: policy.attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer - 7, // 36: policy.attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer - 7, // 37: policy.attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer - 7, // 38: policy.attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer - 7, // 39: policy.attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer - 5, // 40: policy.attributes.GetAttributesByValueFqnsResponse.FqnAttributeValuesEntry.value:type_name -> policy.attributes.AttributeAndValue - 8, // 41: policy.attributes.AttributesService.ListAttributes:input_type -> policy.attributes.ListAttributesRequest - 22, // 42: policy.attributes.AttributesService.ListAttributeValues:input_type -> policy.attributes.ListAttributeValuesRequest - 10, // 43: policy.attributes.AttributesService.GetAttribute:input_type -> policy.attributes.GetAttributeRequest - 12, // 44: policy.attributes.AttributesService.GetAttributesByValueFqns:input_type -> policy.attributes.GetAttributesByValueFqnsRequest - 14, // 45: policy.attributes.AttributesService.CreateAttribute:input_type -> policy.attributes.CreateAttributeRequest - 16, // 46: policy.attributes.AttributesService.UpdateAttribute:input_type -> policy.attributes.UpdateAttributeRequest - 18, // 47: policy.attributes.AttributesService.DeactivateAttribute:input_type -> policy.attributes.DeactivateAttributeRequest - 20, // 48: policy.attributes.AttributesService.GetAttributeValue:input_type -> policy.attributes.GetAttributeValueRequest - 24, // 49: policy.attributes.AttributesService.CreateAttributeValue:input_type -> policy.attributes.CreateAttributeValueRequest - 26, // 50: policy.attributes.AttributesService.UpdateAttributeValue:input_type -> policy.attributes.UpdateAttributeValueRequest - 28, // 51: policy.attributes.AttributesService.DeactivateAttributeValue:input_type -> policy.attributes.DeactivateAttributeValueRequest - 30, // 52: policy.attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> policy.attributes.AssignKeyAccessServerToAttributeRequest - 32, // 53: policy.attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> policy.attributes.RemoveKeyAccessServerFromAttributeRequest - 34, // 54: policy.attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> policy.attributes.AssignKeyAccessServerToValueRequest - 36, // 55: policy.attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> policy.attributes.RemoveKeyAccessServerFromValueRequest - 9, // 56: policy.attributes.AttributesService.ListAttributes:output_type -> policy.attributes.ListAttributesResponse - 23, // 57: policy.attributes.AttributesService.ListAttributeValues:output_type -> policy.attributes.ListAttributeValuesResponse - 11, // 58: policy.attributes.AttributesService.GetAttribute:output_type -> policy.attributes.GetAttributeResponse - 13, // 59: policy.attributes.AttributesService.GetAttributesByValueFqns:output_type -> policy.attributes.GetAttributesByValueFqnsResponse - 15, // 60: policy.attributes.AttributesService.CreateAttribute:output_type -> policy.attributes.CreateAttributeResponse - 17, // 61: policy.attributes.AttributesService.UpdateAttribute:output_type -> policy.attributes.UpdateAttributeResponse - 19, // 62: policy.attributes.AttributesService.DeactivateAttribute:output_type -> policy.attributes.DeactivateAttributeResponse - 21, // 63: policy.attributes.AttributesService.GetAttributeValue:output_type -> policy.attributes.GetAttributeValueResponse - 25, // 64: policy.attributes.AttributesService.CreateAttributeValue:output_type -> policy.attributes.CreateAttributeValueResponse - 27, // 65: policy.attributes.AttributesService.UpdateAttributeValue:output_type -> policy.attributes.UpdateAttributeValueResponse - 29, // 66: policy.attributes.AttributesService.DeactivateAttributeValue:output_type -> policy.attributes.DeactivateAttributeValueResponse - 31, // 67: policy.attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> policy.attributes.AssignKeyAccessServerToAttributeResponse - 33, // 68: policy.attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> policy.attributes.RemoveKeyAccessServerFromAttributeResponse - 35, // 69: policy.attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> policy.attributes.AssignKeyAccessServerToValueResponse - 37, // 70: policy.attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> policy.attributes.RemoveKeyAccessServerFromValueResponse + 37, // 0: policy.attributes.Attribute.namespace:type_name -> policy.namespaces.Namespace + 0, // 1: policy.attributes.Attribute.rule:type_name -> policy.attributes.AttributeRuleTypeEnum + 2, // 2: policy.attributes.Attribute.values:type_name -> policy.attributes.Value + 38, // 3: policy.attributes.Attribute.grants:type_name -> kasregistry.KeyAccessServer + 39, // 4: policy.attributes.Attribute.active:type_name -> google.protobuf.BoolValue + 40, // 5: policy.attributes.Attribute.metadata:type_name -> common.Metadata + 1, // 6: policy.attributes.Value.attribute:type_name -> policy.attributes.Attribute + 38, // 7: policy.attributes.Value.grants:type_name -> kasregistry.KeyAccessServer + 39, // 8: policy.attributes.Value.active:type_name -> google.protobuf.BoolValue + 40, // 9: policy.attributes.Value.metadata:type_name -> common.Metadata + 1, // 10: policy.attributes.AttributeAndValue.attribute:type_name -> policy.attributes.Attribute + 2, // 11: policy.attributes.AttributeAndValue.value:type_name -> policy.attributes.Value + 41, // 12: policy.attributes.ListAttributesRequest.state:type_name -> common.ActiveStateEnum + 1, // 13: policy.attributes.ListAttributesResponse.attributes:type_name -> policy.attributes.Attribute + 1, // 14: policy.attributes.GetAttributeResponse.attribute:type_name -> policy.attributes.Attribute + 36, // 15: policy.attributes.GetAttributesByValueFqnsResponse.fqn_attribute_values:type_name -> policy.attributes.GetAttributesByValueFqnsResponse.FqnAttributeValuesEntry + 0, // 16: policy.attributes.CreateAttributeRequest.rule:type_name -> policy.attributes.AttributeRuleTypeEnum + 42, // 17: policy.attributes.CreateAttributeRequest.metadata:type_name -> common.MetadataMutable + 1, // 18: policy.attributes.CreateAttributeResponse.attribute:type_name -> policy.attributes.Attribute + 42, // 19: policy.attributes.UpdateAttributeRequest.metadata:type_name -> common.MetadataMutable + 43, // 20: policy.attributes.UpdateAttributeRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum + 1, // 21: policy.attributes.UpdateAttributeResponse.attribute:type_name -> policy.attributes.Attribute + 1, // 22: policy.attributes.DeactivateAttributeResponse.attribute:type_name -> policy.attributes.Attribute + 2, // 23: policy.attributes.GetAttributeValueResponse.value:type_name -> policy.attributes.Value + 41, // 24: policy.attributes.ListAttributeValuesRequest.state:type_name -> common.ActiveStateEnum + 2, // 25: policy.attributes.ListAttributeValuesResponse.values:type_name -> policy.attributes.Value + 42, // 26: policy.attributes.CreateAttributeValueRequest.metadata:type_name -> common.MetadataMutable + 2, // 27: policy.attributes.CreateAttributeValueResponse.value:type_name -> policy.attributes.Value + 42, // 28: policy.attributes.UpdateAttributeValueRequest.metadata:type_name -> common.MetadataMutable + 43, // 29: policy.attributes.UpdateAttributeValueRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum + 2, // 30: policy.attributes.UpdateAttributeValueResponse.value:type_name -> policy.attributes.Value + 2, // 31: policy.attributes.DeactivateAttributeValueResponse.value:type_name -> policy.attributes.Value + 4, // 32: policy.attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer + 4, // 33: policy.attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer + 4, // 34: policy.attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer + 4, // 35: policy.attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> policy.attributes.AttributeKeyAccessServer + 5, // 36: policy.attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer + 5, // 37: policy.attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer + 5, // 38: policy.attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer + 5, // 39: policy.attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> policy.attributes.ValueKeyAccessServer + 3, // 40: policy.attributes.GetAttributesByValueFqnsResponse.FqnAttributeValuesEntry.value:type_name -> policy.attributes.AttributeAndValue + 6, // 41: policy.attributes.AttributesService.ListAttributes:input_type -> policy.attributes.ListAttributesRequest + 20, // 42: policy.attributes.AttributesService.ListAttributeValues:input_type -> policy.attributes.ListAttributeValuesRequest + 8, // 43: policy.attributes.AttributesService.GetAttribute:input_type -> policy.attributes.GetAttributeRequest + 10, // 44: policy.attributes.AttributesService.GetAttributesByValueFqns:input_type -> policy.attributes.GetAttributesByValueFqnsRequest + 12, // 45: policy.attributes.AttributesService.CreateAttribute:input_type -> policy.attributes.CreateAttributeRequest + 14, // 46: policy.attributes.AttributesService.UpdateAttribute:input_type -> policy.attributes.UpdateAttributeRequest + 16, // 47: policy.attributes.AttributesService.DeactivateAttribute:input_type -> policy.attributes.DeactivateAttributeRequest + 18, // 48: policy.attributes.AttributesService.GetAttributeValue:input_type -> policy.attributes.GetAttributeValueRequest + 22, // 49: policy.attributes.AttributesService.CreateAttributeValue:input_type -> policy.attributes.CreateAttributeValueRequest + 24, // 50: policy.attributes.AttributesService.UpdateAttributeValue:input_type -> policy.attributes.UpdateAttributeValueRequest + 26, // 51: policy.attributes.AttributesService.DeactivateAttributeValue:input_type -> policy.attributes.DeactivateAttributeValueRequest + 28, // 52: policy.attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> policy.attributes.AssignKeyAccessServerToAttributeRequest + 30, // 53: policy.attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> policy.attributes.RemoveKeyAccessServerFromAttributeRequest + 32, // 54: policy.attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> policy.attributes.AssignKeyAccessServerToValueRequest + 34, // 55: policy.attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> policy.attributes.RemoveKeyAccessServerFromValueRequest + 7, // 56: policy.attributes.AttributesService.ListAttributes:output_type -> policy.attributes.ListAttributesResponse + 21, // 57: policy.attributes.AttributesService.ListAttributeValues:output_type -> policy.attributes.ListAttributeValuesResponse + 9, // 58: policy.attributes.AttributesService.GetAttribute:output_type -> policy.attributes.GetAttributeResponse + 11, // 59: policy.attributes.AttributesService.GetAttributesByValueFqns:output_type -> policy.attributes.GetAttributesByValueFqnsResponse + 13, // 60: policy.attributes.AttributesService.CreateAttribute:output_type -> policy.attributes.CreateAttributeResponse + 15, // 61: policy.attributes.AttributesService.UpdateAttribute:output_type -> policy.attributes.UpdateAttributeResponse + 17, // 62: policy.attributes.AttributesService.DeactivateAttribute:output_type -> policy.attributes.DeactivateAttributeResponse + 19, // 63: policy.attributes.AttributesService.GetAttributeValue:output_type -> policy.attributes.GetAttributeValueResponse + 23, // 64: policy.attributes.AttributesService.CreateAttributeValue:output_type -> policy.attributes.CreateAttributeValueResponse + 25, // 65: policy.attributes.AttributesService.UpdateAttributeValue:output_type -> policy.attributes.UpdateAttributeValueResponse + 27, // 66: policy.attributes.AttributesService.DeactivateAttributeValue:output_type -> policy.attributes.DeactivateAttributeValueResponse + 29, // 67: policy.attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> policy.attributes.AssignKeyAccessServerToAttributeResponse + 31, // 68: policy.attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> policy.attributes.RemoveKeyAccessServerFromAttributeResponse + 33, // 69: policy.attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> policy.attributes.AssignKeyAccessServerToValueResponse + 35, // 70: policy.attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> policy.attributes.RemoveKeyAccessServerFromValueResponse 56, // [56:71] is the sub-list for method output_type 41, // [41:56] is the sub-list for method input_type 41, // [41:41] is the sub-list for extension type_name @@ -2731,18 +2639,6 @@ func file_policy_attributes_attributes_proto_init() { } } file_policy_attributes_attributes_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AttributeCreateUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_policy_attributes_attributes_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*Value); i { case 0: return &v.state @@ -2754,19 +2650,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ValueCreateUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_policy_attributes_attributes_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AttributeAndValue); i { case 0: return &v.state @@ -2778,7 +2662,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AttributeKeyAccessServer); i { case 0: return &v.state @@ -2790,7 +2674,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ValueKeyAccessServer); i { case 0: return &v.state @@ -2802,7 +2686,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAttributesRequest); i { case 0: return &v.state @@ -2814,7 +2698,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAttributesResponse); i { case 0: return &v.state @@ -2826,7 +2710,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributeRequest); i { case 0: return &v.state @@ -2838,7 +2722,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributeResponse); i { case 0: return &v.state @@ -2850,7 +2734,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributesByValueFqnsRequest); i { case 0: return &v.state @@ -2862,7 +2746,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributesByValueFqnsResponse); i { case 0: return &v.state @@ -2874,7 +2758,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAttributeRequest); i { case 0: return &v.state @@ -2886,7 +2770,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAttributeResponse); i { case 0: return &v.state @@ -2898,7 +2782,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAttributeRequest); i { case 0: return &v.state @@ -2910,7 +2794,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAttributeResponse); i { case 0: return &v.state @@ -2922,7 +2806,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeactivateAttributeRequest); i { case 0: return &v.state @@ -2934,7 +2818,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeactivateAttributeResponse); i { case 0: return &v.state @@ -2946,7 +2830,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributeValueRequest); i { case 0: return &v.state @@ -2958,7 +2842,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetAttributeValueResponse); i { case 0: return &v.state @@ -2970,7 +2854,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAttributeValuesRequest); i { case 0: return &v.state @@ -2982,7 +2866,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListAttributeValuesResponse); i { case 0: return &v.state @@ -2994,7 +2878,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAttributeValueRequest); i { case 0: return &v.state @@ -3006,7 +2890,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateAttributeValueResponse); i { case 0: return &v.state @@ -3018,7 +2902,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAttributeValueRequest); i { case 0: return &v.state @@ -3030,7 +2914,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateAttributeValueResponse); i { case 0: return &v.state @@ -3042,7 +2926,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeactivateAttributeValueRequest); i { case 0: return &v.state @@ -3054,7 +2938,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeactivateAttributeValueResponse); i { case 0: return &v.state @@ -3066,7 +2950,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AssignKeyAccessServerToAttributeRequest); i { case 0: return &v.state @@ -3078,7 +2962,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AssignKeyAccessServerToAttributeResponse); i { case 0: return &v.state @@ -3090,7 +2974,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveKeyAccessServerFromAttributeRequest); i { case 0: return &v.state @@ -3102,7 +2986,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveKeyAccessServerFromAttributeResponse); i { case 0: return &v.state @@ -3114,7 +2998,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AssignKeyAccessServerToValueRequest); i { case 0: return &v.state @@ -3126,7 +3010,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*AssignKeyAccessServerToValueResponse); i { case 0: return &v.state @@ -3138,7 +3022,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveKeyAccessServerFromValueRequest); i { case 0: return &v.state @@ -3150,7 +3034,7 @@ func file_policy_attributes_attributes_proto_init() { return nil } } - file_policy_attributes_attributes_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { + file_policy_attributes_attributes_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*RemoveKeyAccessServerFromValueResponse); i { case 0: return &v.state @@ -3169,7 +3053,7 @@ func file_policy_attributes_attributes_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_policy_attributes_attributes_proto_rawDesc, NumEnums: 1, - NumMessages: 38, + NumMessages: 36, NumExtensions: 0, NumServices: 1, }, diff --git a/protocol/go/policy/attributes/attributes.pb.gw.go b/protocol/go/policy/attributes/attributes.pb.gw.go index ba7b58cd3e..86765c55c3 100644 --- a/protocol/go/policy/attributes/attributes.pb.gw.go +++ b/protocol/go/policy/attributes/attributes.pb.gw.go @@ -127,7 +127,7 @@ func request_AttributesService_CreateAttribute_0(ctx context.Context, marshaler if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Attribute); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -144,7 +144,7 @@ func local_request_AttributesService_CreateAttribute_0(ctx context.Context, mars if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Attribute); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -161,7 +161,7 @@ func request_AttributesService_UpdateAttribute_0(ctx context.Context, marshaler if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Attribute); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -195,7 +195,7 @@ func local_request_AttributesService_UpdateAttribute_0(ctx context.Context, mars if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Attribute); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -333,7 +333,7 @@ func request_AttributesService_CreateAttributeValue_0(ctx context.Context, marsh if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Value); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -367,7 +367,7 @@ func local_request_AttributesService_CreateAttributeValue_0(ctx context.Context, if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Value); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -401,7 +401,7 @@ func request_AttributesService_UpdateAttributeValue_0(ctx context.Context, marsh if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Value); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -412,16 +412,6 @@ func request_AttributesService_UpdateAttributeValue_0(ctx context.Context, marsh _ = err ) - val, ok = pathParams["attribute_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attribute_id") - } - - protoReq.AttributeId, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attribute_id", err) - } - val, ok = pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -445,7 +435,7 @@ func local_request_AttributesService_UpdateAttributeValue_0(ctx context.Context, if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.Value); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -456,16 +446,6 @@ func local_request_AttributesService_UpdateAttributeValue_0(ctx context.Context, _ = err ) - val, ok = pathParams["attribute_id"] - if !ok { - return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "attribute_id") - } - - protoReq.AttributeId, err = runtime.String(val) - if err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "attribute_id", err) - } - val, ok = pathParams["id"] if !ok { return nil, metadata, status.Errorf(codes.InvalidArgument, "missing parameter %s", "id") @@ -708,7 +688,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/policy.attributes.AttributesService/GetAttributesByValueFqns", runtime.WithHTTPPathPattern("/attributes/_/fqn")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/policy.attributes.AttributesService/GetAttributesByValueFqns", runtime.WithHTTPPathPattern("/attributes/*/fqn")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -750,7 +730,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se }) - mux.Handle("POST", pattern_AttributesService_UpdateAttribute_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PATCH", pattern_AttributesService_UpdateAttribute_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -808,7 +788,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/policy.attributes.AttributesService/GetAttributeValue", runtime.WithHTTPPathPattern("/attributes/_/values/{id}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/policy.attributes.AttributesService/GetAttributeValue", runtime.WithHTTPPathPattern("/attributes/*/values/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -850,7 +830,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se }) - mux.Handle("POST", pattern_AttributesService_UpdateAttributeValue_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PATCH", pattern_AttributesService_UpdateAttributeValue_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -858,7 +838,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/policy.attributes.AttributesService/UpdateAttributeValue", runtime.WithHTTPPathPattern("/attributes/{attribute_id}/values/{id}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/policy.attributes.AttributesService/UpdateAttributeValue", runtime.WithHTTPPathPattern("/attributes/*/values/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -883,7 +863,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/policy.attributes.AttributesService/DeactivateAttributeValue", runtime.WithHTTPPathPattern("/attributes/_/values/{id}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/policy.attributes.AttributesService/DeactivateAttributeValue", runtime.WithHTTPPathPattern("/attributes/*/values/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -1069,7 +1049,7 @@ func RegisterAttributesServiceHandlerClient(ctx context.Context, mux *runtime.Se inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/policy.attributes.AttributesService/GetAttributesByValueFqns", runtime.WithHTTPPathPattern("/attributes/_/fqn")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/policy.attributes.AttributesService/GetAttributesByValueFqns", runtime.WithHTTPPathPattern("/attributes/*/fqn")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -1107,7 +1087,7 @@ func RegisterAttributesServiceHandlerClient(ctx context.Context, mux *runtime.Se }) - mux.Handle("POST", pattern_AttributesService_UpdateAttribute_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PATCH", pattern_AttributesService_UpdateAttribute_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) @@ -1157,7 +1137,7 @@ func RegisterAttributesServiceHandlerClient(ctx context.Context, mux *runtime.Se inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/policy.attributes.AttributesService/GetAttributeValue", runtime.WithHTTPPathPattern("/attributes/_/values/{id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/policy.attributes.AttributesService/GetAttributeValue", runtime.WithHTTPPathPattern("/attributes/*/values/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -1195,13 +1175,13 @@ func RegisterAttributesServiceHandlerClient(ctx context.Context, mux *runtime.Se }) - mux.Handle("POST", pattern_AttributesService_UpdateAttributeValue_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PATCH", pattern_AttributesService_UpdateAttributeValue_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/policy.attributes.AttributesService/UpdateAttributeValue", runtime.WithHTTPPathPattern("/attributes/{attribute_id}/values/{id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/policy.attributes.AttributesService/UpdateAttributeValue", runtime.WithHTTPPathPattern("/attributes/*/values/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -1223,7 +1203,7 @@ func RegisterAttributesServiceHandlerClient(ctx context.Context, mux *runtime.Se inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/policy.attributes.AttributesService/DeactivateAttributeValue", runtime.WithHTTPPathPattern("/attributes/_/values/{id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/policy.attributes.AttributesService/DeactivateAttributeValue", runtime.WithHTTPPathPattern("/attributes/*/values/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return @@ -1333,7 +1313,7 @@ func RegisterAttributesServiceHandlerClient(ctx context.Context, mux *runtime.Se var ( pattern_AttributesService_GetAttribute_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"attributes", "id"}, "")) - pattern_AttributesService_GetAttributesByValueFqns_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"attributes", "_", "fqn"}, "")) + pattern_AttributesService_GetAttributesByValueFqns_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 2, 1}, []string{"attributes", "fqn"}, "")) pattern_AttributesService_CreateAttribute_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0}, []string{"attributes"}, "")) @@ -1341,13 +1321,13 @@ var ( pattern_AttributesService_DeactivateAttribute_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"attributes", "id"}, "")) - pattern_AttributesService_GetAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"attributes", "_", "values", "id"}, "")) + pattern_AttributesService_GetAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"attributes", "values", "id"}, "")) pattern_AttributesService_CreateAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2}, []string{"attributes", "attribute_id", "values"}, "")) - pattern_AttributesService_UpdateAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"attributes", "attribute_id", "values", "id"}, "")) + pattern_AttributesService_UpdateAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"attributes", "values", "id"}, "")) - pattern_AttributesService_DeactivateAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"attributes", "_", "values", "id"}, "")) + pattern_AttributesService_DeactivateAttributeValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"attributes", "values", "id"}, "")) pattern_AttributesService_AssignKeyAccessServerToAttribute_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"attributes", "keyaccessserver", "assign"}, "")) diff --git a/protocol/go/policy/attributes/attributes_grpc.pb.go b/protocol/go/policy/attributes/attributes_grpc.pb.go index 24ded9785e..3092488c43 100644 --- a/protocol/go/policy/attributes/attributes_grpc.pb.go +++ b/protocol/go/policy/attributes/attributes_grpc.pb.go @@ -40,202 +40,29 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type AttributesServiceClient interface { - // NOTE: ACTIVE state by default, INACTIVE or ANY when specified - // Request: - // grpcurl -plaintext localhost:9000 policy.attributes.AttributesService/ListAttributes - // OR (for inactive) - // grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 policy.attributes.AttributesService/ListAttributes - // Response: - // { - // "attributes": [ - // { - // "id": "attribute_id", - // "metadata": { - // "created_at": "2021-01-01T00:00:00Z", - // "updated_at": "2021-01-01T00:00:00Z" - // }, - // "namespace": { - // "id": "namespace_id", - // "name": "namespace_name" - // }, - // "name": "attribute_name", - // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", - // "values": [ - // { - // "id": "value_id", - // "metadata": { - // "created_at": "2021-01-01T00:00:00Z", - // "updated_at": "2021-01-01T00:00:00Z" - // }, - // "attribute_id": "attribute_id", - // "value": "value", - // "members": ["value_id"], - // "grants": [ - // { - // "id": "key_access_server_id", - // "metadata": { - // "created_at": "2021-01-01T00:00:00Z", - // "updated_at": "2021-01-01T00:00:00Z" - // }, - // "name": "key_access_server_name", - // "description": "key_access_server_description", - // } - // ], - // } - // ], - // "grants": [ - // { - // "id": "key_access_server_id", - // "metadata": { - // "created_at": "2021-01-01T00:00:00Z", - // "updated_at": "2021-01-01T00:00:00Z" - // }, - // "name": "key_access_server_name", - // "description": "key_access_server_description", - // } - // ], - // "active": true - // } - // ] - // } + // --------------------------------------* + // Attribute RPCs + // --------------------------------------- ListAttributes(ctx context.Context, in *ListAttributesRequest, opts ...grpc.CallOption) (*ListAttributesResponse, error) - // List Values - // - // Request: - // NOTE: ACTIVE state by default, INACTIVE or ANY when specified - // grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 policy.attributes.AttributesService/ListAttributes - // Response: - // { - // "attributes": [ - // { - // "id": "attribute_id", - // "metadata": { - // "createdAt": "2024-02-14T20:24:23.057404Z", - // "updatedAt": "2024-02-14T20:24:23.057404Z" - // }, - // "namespace": { - // "id": "namespace_id", - // "name": "namespace_name" - // }, - // "name": "attribute_name", - // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", - // "values": [ - // { - // ... VALUES ... - // } - // ], - // "grants": [ - // { - // ... GRANTS ... - // } - // ], - // "active": true - // } - // ] - // } ListAttributeValues(ctx context.Context, in *ListAttributeValuesRequest, opts ...grpc.CallOption) (*ListAttributeValuesResponse, error) GetAttribute(ctx context.Context, in *GetAttributeRequest, opts ...grpc.CallOption) (*GetAttributeResponse, error) GetAttributesByValueFqns(ctx context.Context, in *GetAttributesByValueFqnsRequest, opts ...grpc.CallOption) (*GetAttributesByValueFqnsResponse, error) - // Create Attribute - // Request: - // grpcurl -plaintext -d '{"attribute": {"namespace_id": "namespace_id", "name": "attribute_name", "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"}}' localhost:9000 policy.attributes.AttributesService/CreateAttribute - // Response - // { - // "attribute": { - // "id": "e06f067b-d158-44bc-a814-1aa3f968dcf0", - // "metadata": { - // "createdAt": "2024-02-14T20:24:23.057404Z", - // "updatedAt": "2024-02-14T20:24:23.057404Z" - // }, - // "namespace": { - // "id": "namespace_id" - // }, - // "name": "attribute_name", - // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", - // "active": true - // } - // } CreateAttribute(ctx context.Context, in *CreateAttributeRequest, opts ...grpc.CallOption) (*CreateAttributeResponse, error) UpdateAttribute(ctx context.Context, in *UpdateAttributeRequest, opts ...grpc.CallOption) (*UpdateAttributeResponse, error) DeactivateAttribute(ctx context.Context, in *DeactivateAttributeRequest, opts ...grpc.CallOption) (*DeactivateAttributeResponse, error) - // * Attribute Value * + // --------------------------------------* + // Value RPCs + // --------------------------------------- GetAttributeValue(ctx context.Context, in *GetAttributeValueRequest, opts ...grpc.CallOption) (*GetAttributeValueResponse, error) - // Create Attribute Value - // Example: - // - // grpcurl -plaintext -d '{"attribute_id": "attribute_id", "value": {"value": "value"}}' localhost:9000 policy.attributes.AttributesService/CreateAttributeValue CreateAttributeValue(ctx context.Context, in *CreateAttributeValueRequest, opts ...grpc.CallOption) (*CreateAttributeValueResponse, error) UpdateAttributeValue(ctx context.Context, in *UpdateAttributeValueRequest, opts ...grpc.CallOption) (*UpdateAttributeValueResponse, error) DeactivateAttributeValue(ctx context.Context, in *DeactivateAttributeValueRequest, opts ...grpc.CallOption) (*DeactivateAttributeValueResponse, error) - // Assign Key Access Server to Attribute - // - // grpcurl -plaintext -d '{"attribute_key_access_server": {"attribute_id": "attribute_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/AssignKeyAccessServerToAttribute - // - // Example Request: - // { - // "attribute_key_access_server": { - // "attribute_id": "attribute_id", - // "key_access_server_id - // } - // - // Example Response: - // { - // "attribute_key_access_server": { - // "attribute_id": "attribute_id", - // "key_access_server_id: "key_access_server_id" - // } + // --------------------------------------* + // Attribute <> Key Access Server RPCs + // --------------------------------------- AssignKeyAccessServerToAttribute(ctx context.Context, in *AssignKeyAccessServerToAttributeRequest, opts ...grpc.CallOption) (*AssignKeyAccessServerToAttributeResponse, error) - // Remove Key Access Server to Attribute - // - // grpcurl -plaintext -d '{"attribute_key_access_server": {"attribute_id": "attribute_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/RemeoveKeyAccessServerFromAttribute - // - // Example Request: - // { - // "attribute_key_access_server": { - // "attribute_id": "attribute_id", - // "key_access_server_id - // } - // - // Example Response: - // { - // "attribute_key_access_server": { - // "attribute_id": "attribute_id", - // "key_access_server_id: "key_access_server_id" - // } RemoveKeyAccessServerFromAttribute(ctx context.Context, in *RemoveKeyAccessServerFromAttributeRequest, opts ...grpc.CallOption) (*RemoveKeyAccessServerFromAttributeResponse, error) - // Assign Key Access Server to Value - // - // grpcurl -plaintext -d '{"attribute_key_access_server": {"attribute_id": "attribute_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/AssignKeyAccessServerToValue - // - // Example Request: - // { - // "attribute_key_access_server": { - // "value_id": "attribute_id", - // "key_access_server_id - // } - // - // Example Response: - // { - // "attribute_key_access_server": { - // "value_id": "attribute_id", - // "key_access_server_id: "key_access_server_id" - // } AssignKeyAccessServerToValue(ctx context.Context, in *AssignKeyAccessServerToValueRequest, opts ...grpc.CallOption) (*AssignKeyAccessServerToValueResponse, error) - // Remove Key Access Server to Value - // grpcurl -plaintext -d '{"value_key_access_server": {"value_id": "value_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/RemoveKeyAccessServerFromValue - // - // Example Request: - // { - // "value_key_access_server": { - // "value_id": "value_id", - // "key_access_server_id - // } - // - // Example Response: - // { - // "value_key_access_server": { - // "value_id": "value_id", - // "key_access_server_id RemoveKeyAccessServerFromValue(ctx context.Context, in *RemoveKeyAccessServerFromValueRequest, opts ...grpc.CallOption) (*RemoveKeyAccessServerFromValueResponse, error) } @@ -386,202 +213,29 @@ func (c *attributesServiceClient) RemoveKeyAccessServerFromValue(ctx context.Con // All implementations must embed UnimplementedAttributesServiceServer // for forward compatibility type AttributesServiceServer interface { - // NOTE: ACTIVE state by default, INACTIVE or ANY when specified - // Request: - // grpcurl -plaintext localhost:9000 policy.attributes.AttributesService/ListAttributes - // OR (for inactive) - // grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 policy.attributes.AttributesService/ListAttributes - // Response: - // { - // "attributes": [ - // { - // "id": "attribute_id", - // "metadata": { - // "created_at": "2021-01-01T00:00:00Z", - // "updated_at": "2021-01-01T00:00:00Z" - // }, - // "namespace": { - // "id": "namespace_id", - // "name": "namespace_name" - // }, - // "name": "attribute_name", - // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", - // "values": [ - // { - // "id": "value_id", - // "metadata": { - // "created_at": "2021-01-01T00:00:00Z", - // "updated_at": "2021-01-01T00:00:00Z" - // }, - // "attribute_id": "attribute_id", - // "value": "value", - // "members": ["value_id"], - // "grants": [ - // { - // "id": "key_access_server_id", - // "metadata": { - // "created_at": "2021-01-01T00:00:00Z", - // "updated_at": "2021-01-01T00:00:00Z" - // }, - // "name": "key_access_server_name", - // "description": "key_access_server_description", - // } - // ], - // } - // ], - // "grants": [ - // { - // "id": "key_access_server_id", - // "metadata": { - // "created_at": "2021-01-01T00:00:00Z", - // "updated_at": "2021-01-01T00:00:00Z" - // }, - // "name": "key_access_server_name", - // "description": "key_access_server_description", - // } - // ], - // "active": true - // } - // ] - // } + // --------------------------------------* + // Attribute RPCs + // --------------------------------------- ListAttributes(context.Context, *ListAttributesRequest) (*ListAttributesResponse, error) - // List Values - // - // Request: - // NOTE: ACTIVE state by default, INACTIVE or ANY when specified - // grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 policy.attributes.AttributesService/ListAttributes - // Response: - // { - // "attributes": [ - // { - // "id": "attribute_id", - // "metadata": { - // "createdAt": "2024-02-14T20:24:23.057404Z", - // "updatedAt": "2024-02-14T20:24:23.057404Z" - // }, - // "namespace": { - // "id": "namespace_id", - // "name": "namespace_name" - // }, - // "name": "attribute_name", - // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", - // "values": [ - // { - // ... VALUES ... - // } - // ], - // "grants": [ - // { - // ... GRANTS ... - // } - // ], - // "active": true - // } - // ] - // } ListAttributeValues(context.Context, *ListAttributeValuesRequest) (*ListAttributeValuesResponse, error) GetAttribute(context.Context, *GetAttributeRequest) (*GetAttributeResponse, error) GetAttributesByValueFqns(context.Context, *GetAttributesByValueFqnsRequest) (*GetAttributesByValueFqnsResponse, error) - // Create Attribute - // Request: - // grpcurl -plaintext -d '{"attribute": {"namespace_id": "namespace_id", "name": "attribute_name", "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"}}' localhost:9000 policy.attributes.AttributesService/CreateAttribute - // Response - // { - // "attribute": { - // "id": "e06f067b-d158-44bc-a814-1aa3f968dcf0", - // "metadata": { - // "createdAt": "2024-02-14T20:24:23.057404Z", - // "updatedAt": "2024-02-14T20:24:23.057404Z" - // }, - // "namespace": { - // "id": "namespace_id" - // }, - // "name": "attribute_name", - // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", - // "active": true - // } - // } CreateAttribute(context.Context, *CreateAttributeRequest) (*CreateAttributeResponse, error) UpdateAttribute(context.Context, *UpdateAttributeRequest) (*UpdateAttributeResponse, error) DeactivateAttribute(context.Context, *DeactivateAttributeRequest) (*DeactivateAttributeResponse, error) - // * Attribute Value * + // --------------------------------------* + // Value RPCs + // --------------------------------------- GetAttributeValue(context.Context, *GetAttributeValueRequest) (*GetAttributeValueResponse, error) - // Create Attribute Value - // Example: - // - // grpcurl -plaintext -d '{"attribute_id": "attribute_id", "value": {"value": "value"}}' localhost:9000 policy.attributes.AttributesService/CreateAttributeValue CreateAttributeValue(context.Context, *CreateAttributeValueRequest) (*CreateAttributeValueResponse, error) UpdateAttributeValue(context.Context, *UpdateAttributeValueRequest) (*UpdateAttributeValueResponse, error) DeactivateAttributeValue(context.Context, *DeactivateAttributeValueRequest) (*DeactivateAttributeValueResponse, error) - // Assign Key Access Server to Attribute - // - // grpcurl -plaintext -d '{"attribute_key_access_server": {"attribute_id": "attribute_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/AssignKeyAccessServerToAttribute - // - // Example Request: - // { - // "attribute_key_access_server": { - // "attribute_id": "attribute_id", - // "key_access_server_id - // } - // - // Example Response: - // { - // "attribute_key_access_server": { - // "attribute_id": "attribute_id", - // "key_access_server_id: "key_access_server_id" - // } + // --------------------------------------* + // Attribute <> Key Access Server RPCs + // --------------------------------------- AssignKeyAccessServerToAttribute(context.Context, *AssignKeyAccessServerToAttributeRequest) (*AssignKeyAccessServerToAttributeResponse, error) - // Remove Key Access Server to Attribute - // - // grpcurl -plaintext -d '{"attribute_key_access_server": {"attribute_id": "attribute_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/RemeoveKeyAccessServerFromAttribute - // - // Example Request: - // { - // "attribute_key_access_server": { - // "attribute_id": "attribute_id", - // "key_access_server_id - // } - // - // Example Response: - // { - // "attribute_key_access_server": { - // "attribute_id": "attribute_id", - // "key_access_server_id: "key_access_server_id" - // } RemoveKeyAccessServerFromAttribute(context.Context, *RemoveKeyAccessServerFromAttributeRequest) (*RemoveKeyAccessServerFromAttributeResponse, error) - // Assign Key Access Server to Value - // - // grpcurl -plaintext -d '{"attribute_key_access_server": {"attribute_id": "attribute_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/AssignKeyAccessServerToValue - // - // Example Request: - // { - // "attribute_key_access_server": { - // "value_id": "attribute_id", - // "key_access_server_id - // } - // - // Example Response: - // { - // "attribute_key_access_server": { - // "value_id": "attribute_id", - // "key_access_server_id: "key_access_server_id" - // } AssignKeyAccessServerToValue(context.Context, *AssignKeyAccessServerToValueRequest) (*AssignKeyAccessServerToValueResponse, error) - // Remove Key Access Server to Value - // grpcurl -plaintext -d '{"value_key_access_server": {"value_id": "value_id", "key_access_server_id": "key_access_server_id"}}' localhost:9000 policy.attributes.AttributesService/RemoveKeyAccessServerFromValue - // - // Example Request: - // { - // "value_key_access_server": { - // "value_id": "value_id", - // "key_access_server_id - // } - // - // Example Response: - // { - // "value_key_access_server": { - // "value_id": "value_id", - // "key_access_server_id RemoveKeyAccessServerFromValue(context.Context, *RemoveKeyAccessServerFromValueRequest) (*RemoveKeyAccessServerFromValueResponse, error) mustEmbedUnimplementedAttributesServiceServer() } diff --git a/protocol/go/policy/namespaces/namespaces.pb.go b/protocol/go/policy/namespaces/namespaces.pb.go index fbbeb89c33..cf1a2b7d06 100644 --- a/protocol/go/policy/namespaces/namespaces.pb.go +++ b/protocol/go/policy/namespaces/namespaces.pb.go @@ -35,7 +35,8 @@ type Namespace struct { Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` Fqn string `protobuf:"bytes,3,opt,name=fqn,proto3" json:"fqn,omitempty"` // active by default until explicitly deactivated - Active *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=active,proto3" json:"active,omitempty"` + Active *wrapperspb.BoolValue `protobuf:"bytes,4,opt,name=active,proto3" json:"active,omitempty"` + Metadata *common.Metadata `protobuf:"bytes,5,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *Namespace) Reset() { @@ -98,6 +99,13 @@ func (x *Namespace) GetActive() *wrapperspb.BoolValue { return nil } +func (x *Namespace) GetMetadata() *common.Metadata { + if x != nil { + return x.Metadata + } + return nil +} + type GetNamespaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -292,7 +300,10 @@ type CreateNamespaceRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + // Required Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + // Optional + Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *CreateNamespaceRequest) Reset() { @@ -334,6 +345,13 @@ func (x *CreateNamespaceRequest) GetName() string { return "" } +func (x *CreateNamespaceRequest) GetMetadata() *common.MetadataMutable { + if x != nil { + return x.Metadata + } + return nil +} + type CreateNamespaceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -386,8 +404,11 @@ type UpdateNamespaceRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // Required + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Optional + Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` + MetadataUpdateBehavior common.MetadataUpdateEnum `protobuf:"varint,101,opt,name=metadata_update_behavior,json=metadataUpdateBehavior,proto3,enum=common.MetadataUpdateEnum" json:"metadata_update_behavior,omitempty"` } func (x *UpdateNamespaceRequest) Reset() { @@ -429,11 +450,18 @@ func (x *UpdateNamespaceRequest) GetId() string { return "" } -func (x *UpdateNamespaceRequest) GetName() string { +func (x *UpdateNamespaceRequest) GetMetadata() *common.MetadataMutable { if x != nil { - return x.Name + return x.Metadata } - return "" + return nil +} + +func (x *UpdateNamespaceRequest) GetMetadataUpdateBehavior() common.MetadataUpdateEnum { + if x != nil { + return x.MetadataUpdateBehavior + } + return common.MetadataUpdateEnum(0) } type UpdateNamespaceResponse struct { @@ -576,152 +604,165 @@ var file_policy_namespaces_namespaces_proto_rawDesc = []byte{ 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, - 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xdb, 0x04, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa3, 0x01, 0x0a, 0x09, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0xf7, 0x03, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0xe2, 0x03, 0xba, 0x48, 0xde, 0x03, 0xba, 0x01, 0xd2, 0x03, 0x0a, - 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, - 0x74, 0x12, 0xea, 0x02, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x20, 0x6d, 0x75, - 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x68, 0x6f, - 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x20, 0x49, 0x74, 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, - 0x64, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, 0x61, 0x74, 0x20, 0x6c, 0x65, 0x61, - 0x73, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x74, 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, - 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x28, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x29, 0x20, 0x73, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, - 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, - 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x69, 0x63, 0x20, 0x63, - 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x6c, - 0x61, 0x62, 0x65, 0x6c, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x31, 0x20, 0x74, - 0x6f, 0x20, 0x36, 0x33, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, - 0x6c, 0x6f, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, - 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x20, 0x62, 0x75, 0x74, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, - 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, - 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, - 0x68, 0x65, 0x20, 0x74, 0x6f, 0x70, 0x2d, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x20, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x73, 0x65, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x66, 0x74, 0x65, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, - 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x64, 0x6f, 0x74, 0x29, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, - 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, 0x20, 0x61, 0x74, 0x20, 0x6c, 0x65, - 0x61, 0x73, 0x74, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, - 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x73, 0x2e, 0x1a, 0x51, - 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x28, - 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a, - 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d, 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d, - 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5d, 0x29, 0x3f, 0x5c, 0x5c, 0x2e, - 0x29, 0x2b, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x5d, 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x27, - 0x29, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0xfd, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x66, 0x71, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, - 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x2d, 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x71, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x66, 0x71, 0x6e, 0x12, 0x32, 0x0a, 0x06, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, + 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, + 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x10, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x2d, 0x0a, + 0x13, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x52, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x22, 0x46, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, + 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x56, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x22, 0xc7, 0x04, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0xf7, 0x03, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0xe2, 0x03, 0xba, 0x48, 0xde, + 0x03, 0xba, 0x01, 0xd2, 0x03, 0x0a, 0x10, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x5f, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x74, 0x12, 0xea, 0x02, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, + 0x6c, 0x69, 0x64, 0x20, 0x68, 0x6f, 0x73, 0x74, 0x6e, 0x61, 0x6d, 0x65, 0x2e, 0x20, 0x49, 0x74, + 0x20, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x20, 0x69, 0x6e, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x20, + 0x61, 0x74, 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x6f, 0x6e, 0x65, 0x20, 0x64, 0x6f, 0x74, + 0x2c, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x65, 0x61, 0x63, 0x68, 0x20, 0x73, 0x65, 0x67, 0x6d, + 0x65, 0x6e, 0x74, 0x20, 0x28, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x29, 0x20, 0x73, 0x74, 0x61, 0x72, + 0x74, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x64, 0x20, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x20, + 0x77, 0x69, 0x74, 0x68, 0x20, 0x61, 0x6e, 0x20, 0x61, 0x6c, 0x70, 0x68, 0x61, 0x6e, 0x75, 0x6d, + 0x65, 0x72, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65, 0x72, 0x2e, 0x20, + 0x45, 0x61, 0x63, 0x68, 0x20, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, + 0x62, 0x65, 0x20, 0x31, 0x20, 0x74, 0x6f, 0x20, 0x36, 0x33, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, + 0x63, 0x74, 0x65, 0x72, 0x73, 0x20, 0x6c, 0x6f, 0x6e, 0x67, 0x2c, 0x20, 0x61, 0x6c, 0x6c, 0x6f, + 0x77, 0x69, 0x6e, 0x67, 0x20, 0x68, 0x79, 0x70, 0x68, 0x65, 0x6e, 0x73, 0x20, 0x62, 0x75, 0x74, + 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x61, 0x73, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x72, 0x73, + 0x74, 0x20, 0x6f, 0x72, 0x20, 0x6c, 0x61, 0x73, 0x74, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, + 0x74, 0x65, 0x72, 0x2e, 0x20, 0x54, 0x68, 0x65, 0x20, 0x74, 0x6f, 0x70, 0x2d, 0x6c, 0x65, 0x76, + 0x65, 0x6c, 0x20, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x20, 0x28, 0x74, 0x68, 0x65, 0x20, 0x6c, + 0x61, 0x73, 0x74, 0x20, 0x73, 0x65, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x20, 0x61, 0x66, 0x74, 0x65, + 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x66, 0x69, 0x6e, 0x61, 0x6c, 0x20, 0x64, 0x6f, 0x74, 0x29, + 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x63, 0x6f, 0x6e, 0x73, 0x69, 0x73, 0x74, 0x20, 0x6f, 0x66, + 0x20, 0x61, 0x74, 0x20, 0x6c, 0x65, 0x61, 0x73, 0x74, 0x20, 0x74, 0x77, 0x6f, 0x20, 0x61, 0x6c, + 0x70, 0x68, 0x61, 0x62, 0x65, 0x74, 0x69, 0x63, 0x20, 0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, + 0x65, 0x72, 0x73, 0x2e, 0x1a, 0x51, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x73, 0x28, 0x27, 0x5e, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x28, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x5c, 0x5c, 0x2d, 0x5d, + 0x7b, 0x30, 0x2c, 0x36, 0x31, 0x7d, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, + 0x5d, 0x29, 0x3f, 0x5c, 0x5c, 0x2e, 0x29, 0x2b, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x5d, + 0x7b, 0x32, 0x2c, 0x7d, 0x24, 0x27, 0x29, 0xc8, 0x01, 0x01, 0x72, 0x03, 0x18, 0xfd, 0x01, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, + 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x22, 0x55, 0x0a, 0x17, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x22, 0xbb, 0x01, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, - 0x52, 0x02, 0x69, 0x64, 0x22, 0x52, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x46, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x22, 0x56, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, 0x0a, 0x0a, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x0a, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x22, 0x34, 0x0a, 0x16, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x55, - 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x4c, 0x0a, 0x16, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, - 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x1a, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x22, 0x55, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, - 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x34, 0x0a, 0x1a, 0x44, 0x65, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, - 0x22, 0x1d, 0x0a, 0x1b, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, - 0xd8, 0x05, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x84, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, + 0x52, 0x02, 0x69, 0x64, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, + 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, 0x0a, 0x18, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x65, 0x68, + 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x63, 0x6f, + 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x22, + 0x55, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3a, 0x0a, 0x09, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, - 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x0e, - 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x28, + 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x22, 0x34, 0x0a, 0x1a, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, + 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x1d, 0x0a, 0x1b, + 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, 0xde, 0x05, 0x0a, 0x10, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0x84, 0x01, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x26, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, + 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x47, 0x65, + 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x85, 0x01, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x28, 0x2e, 0x70, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, + 0x8b, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, - 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x12, 0x16, 0x2f, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0x12, 0x88, 0x01, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1e, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x18, 0x22, 0x16, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x8d, - 0x01, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x1d, 0x1a, 0x1b, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x99, - 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, - 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, - 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x2a, 0x1b, 0x2f, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0xd8, 0x01, 0x0a, 0x25, 0x69, - 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, - 0x72, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x42, 0x0f, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x70, 0x6c, 0x61, 0x74, - 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x6f, - 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x4e, 0x58, 0xaa, 0x02, 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xca, 0x02, 0x11, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0xe2, 0x02, 0x1d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x3a, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x21, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1b, 0x3a, 0x01, 0x2a, 0x22, 0x16, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x90, 0x01, + 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x12, 0x29, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x26, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x20, + 0x3a, 0x01, 0x2a, 0x32, 0x1b, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, + 0x12, 0x99, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x2d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, + 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, + 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x23, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x2a, + 0x1b, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0xd8, 0x01, 0x0a, + 0x25, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x61, 0x74, + 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x6e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x42, 0x0f, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, + 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x70, 0x6c, + 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, + 0x67, 0x6f, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x50, 0x4e, 0x58, 0xaa, 0x02, 0x11, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xca, 0x02, + 0x11, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0xe2, 0x02, 0x1d, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x12, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x3a, 0x3a, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -750,30 +791,37 @@ var file_policy_namespaces_namespaces_proto_goTypes = []interface{}{ (*DeactivateNamespaceRequest)(nil), // 9: policy.namespaces.DeactivateNamespaceRequest (*DeactivateNamespaceResponse)(nil), // 10: policy.namespaces.DeactivateNamespaceResponse (*wrapperspb.BoolValue)(nil), // 11: google.protobuf.BoolValue - (common.ActiveStateEnum)(0), // 12: common.ActiveStateEnum + (*common.Metadata)(nil), // 12: common.Metadata + (common.ActiveStateEnum)(0), // 13: common.ActiveStateEnum + (*common.MetadataMutable)(nil), // 14: common.MetadataMutable + (common.MetadataUpdateEnum)(0), // 15: common.MetadataUpdateEnum } var file_policy_namespaces_namespaces_proto_depIdxs = []int32{ 11, // 0: policy.namespaces.Namespace.active:type_name -> google.protobuf.BoolValue - 0, // 1: policy.namespaces.GetNamespaceResponse.namespace:type_name -> policy.namespaces.Namespace - 12, // 2: policy.namespaces.ListNamespacesRequest.state:type_name -> common.ActiveStateEnum - 0, // 3: policy.namespaces.ListNamespacesResponse.namespaces:type_name -> policy.namespaces.Namespace - 0, // 4: policy.namespaces.CreateNamespaceResponse.namespace:type_name -> policy.namespaces.Namespace - 0, // 5: policy.namespaces.UpdateNamespaceResponse.namespace:type_name -> policy.namespaces.Namespace - 1, // 6: policy.namespaces.NamespaceService.GetNamespace:input_type -> policy.namespaces.GetNamespaceRequest - 3, // 7: policy.namespaces.NamespaceService.ListNamespaces:input_type -> policy.namespaces.ListNamespacesRequest - 5, // 8: policy.namespaces.NamespaceService.CreateNamespace:input_type -> policy.namespaces.CreateNamespaceRequest - 7, // 9: policy.namespaces.NamespaceService.UpdateNamespace:input_type -> policy.namespaces.UpdateNamespaceRequest - 9, // 10: policy.namespaces.NamespaceService.DeactivateNamespace:input_type -> policy.namespaces.DeactivateNamespaceRequest - 2, // 11: policy.namespaces.NamespaceService.GetNamespace:output_type -> policy.namespaces.GetNamespaceResponse - 4, // 12: policy.namespaces.NamespaceService.ListNamespaces:output_type -> policy.namespaces.ListNamespacesResponse - 6, // 13: policy.namespaces.NamespaceService.CreateNamespace:output_type -> policy.namespaces.CreateNamespaceResponse - 8, // 14: policy.namespaces.NamespaceService.UpdateNamespace:output_type -> policy.namespaces.UpdateNamespaceResponse - 10, // 15: policy.namespaces.NamespaceService.DeactivateNamespace:output_type -> policy.namespaces.DeactivateNamespaceResponse - 11, // [11:16] is the sub-list for method output_type - 6, // [6:11] is the sub-list for method input_type - 6, // [6:6] is the sub-list for extension type_name - 6, // [6:6] is the sub-list for extension extendee - 0, // [0:6] is the sub-list for field type_name + 12, // 1: policy.namespaces.Namespace.metadata:type_name -> common.Metadata + 0, // 2: policy.namespaces.GetNamespaceResponse.namespace:type_name -> policy.namespaces.Namespace + 13, // 3: policy.namespaces.ListNamespacesRequest.state:type_name -> common.ActiveStateEnum + 0, // 4: policy.namespaces.ListNamespacesResponse.namespaces:type_name -> policy.namespaces.Namespace + 14, // 5: policy.namespaces.CreateNamespaceRequest.metadata:type_name -> common.MetadataMutable + 0, // 6: policy.namespaces.CreateNamespaceResponse.namespace:type_name -> policy.namespaces.Namespace + 14, // 7: policy.namespaces.UpdateNamespaceRequest.metadata:type_name -> common.MetadataMutable + 15, // 8: policy.namespaces.UpdateNamespaceRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum + 0, // 9: policy.namespaces.UpdateNamespaceResponse.namespace:type_name -> policy.namespaces.Namespace + 1, // 10: policy.namespaces.NamespaceService.GetNamespace:input_type -> policy.namespaces.GetNamespaceRequest + 3, // 11: policy.namespaces.NamespaceService.ListNamespaces:input_type -> policy.namespaces.ListNamespacesRequest + 5, // 12: policy.namespaces.NamespaceService.CreateNamespace:input_type -> policy.namespaces.CreateNamespaceRequest + 7, // 13: policy.namespaces.NamespaceService.UpdateNamespace:input_type -> policy.namespaces.UpdateNamespaceRequest + 9, // 14: policy.namespaces.NamespaceService.DeactivateNamespace:input_type -> policy.namespaces.DeactivateNamespaceRequest + 2, // 15: policy.namespaces.NamespaceService.GetNamespace:output_type -> policy.namespaces.GetNamespaceResponse + 4, // 16: policy.namespaces.NamespaceService.ListNamespaces:output_type -> policy.namespaces.ListNamespacesResponse + 6, // 17: policy.namespaces.NamespaceService.CreateNamespace:output_type -> policy.namespaces.CreateNamespaceResponse + 8, // 18: policy.namespaces.NamespaceService.UpdateNamespace:output_type -> policy.namespaces.UpdateNamespaceResponse + 10, // 19: policy.namespaces.NamespaceService.DeactivateNamespace:output_type -> policy.namespaces.DeactivateNamespaceResponse + 15, // [15:20] is the sub-list for method output_type + 10, // [10:15] is the sub-list for method input_type + 10, // [10:10] is the sub-list for extension type_name + 10, // [10:10] is the sub-list for extension extendee + 0, // [0:10] is the sub-list for field type_name } func init() { file_policy_namespaces_namespaces_proto_init() } diff --git a/protocol/go/policy/namespaces/namespaces.pb.gw.go b/protocol/go/policy/namespaces/namespaces.pb.gw.go index 06de71506d..2008c11580 100644 --- a/protocol/go/policy/namespaces/namespaces.pb.gw.go +++ b/protocol/go/policy/namespaces/namespaces.pb.gw.go @@ -119,18 +119,15 @@ func local_request_NamespaceService_ListNamespaces_0(ctx context.Context, marsha } -var ( - filter_NamespaceService_CreateNamespace_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} -) - func request_NamespaceService_CreateNamespace_0(ctx context.Context, marshaler runtime.Marshaler, client NamespaceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq CreateNamespaceRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NamespaceService_CreateNamespace_0); err != nil { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -143,10 +140,11 @@ func local_request_NamespaceService_CreateNamespace_0(ctx context.Context, marsh var protoReq CreateNamespaceRequest var metadata runtime.ServerMetadata - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NamespaceService_CreateNamespace_0); err != nil { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -155,14 +153,18 @@ func local_request_NamespaceService_CreateNamespace_0(ctx context.Context, marsh } -var ( - filter_NamespaceService_UpdateNamespace_0 = &utilities.DoubleArray{Encoding: map[string]int{"id": 0}, Base: []int{1, 2, 0, 0}, Check: []int{0, 1, 2, 2}} -) - func request_NamespaceService_UpdateNamespace_0(ctx context.Context, marshaler runtime.Marshaler, client NamespaceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq UpdateNamespaceRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -180,13 +182,6 @@ func request_NamespaceService_UpdateNamespace_0(ctx context.Context, marshaler r return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NamespaceService_UpdateNamespace_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := client.UpdateNamespace(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err @@ -196,6 +191,14 @@ func local_request_NamespaceService_UpdateNamespace_0(ctx context.Context, marsh var protoReq UpdateNamespaceRequest var metadata runtime.ServerMetadata + newReader, berr := utilities.IOReaderFactory(req.Body) + if berr != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) + } + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + var ( val string ok bool @@ -213,13 +216,6 @@ func local_request_NamespaceService_UpdateNamespace_0(ctx context.Context, marsh return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - if err := req.ParseForm(); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NamespaceService_UpdateNamespace_0); err != nil { - return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) - } - msg, err := server.UpdateNamespace(ctx, &protoReq) return msg, metadata, err @@ -358,7 +354,7 @@ func RegisterNamespaceServiceHandlerServer(ctx context.Context, mux *runtime.Ser }) - mux.Handle("PUT", pattern_NamespaceService_UpdateNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PATCH", pattern_NamespaceService_UpdateNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -515,7 +511,7 @@ func RegisterNamespaceServiceHandlerClient(ctx context.Context, mux *runtime.Ser }) - mux.Handle("PUT", pattern_NamespaceService_UpdateNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("PATCH", pattern_NamespaceService_UpdateNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) diff --git a/protocol/go/policy/namespaces/namespaces_grpc.pb.go b/protocol/go/policy/namespaces/namespaces_grpc.pb.go index 466b9001ba..e0e8d58623 100644 --- a/protocol/go/policy/namespaces/namespaces_grpc.pb.go +++ b/protocol/go/policy/namespaces/namespaces_grpc.pb.go @@ -30,35 +30,8 @@ const ( // // For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. type NamespaceServiceClient interface { - // Request: - // grpcurl -plaintext -d '{"id": "namespace-id"}' localhost:9000 policy.namespaces.NamespaceService/GetNamespace - // Response: - // { - // "namespace": { - // "id": "namespace-id", - // "name": "namespace-name", - // "active": true - // } - // } GetNamespace(ctx context.Context, in *GetNamespaceRequest, opts ...grpc.CallOption) (*GetNamespaceResponse, error) - // NOTE: ACTIVE state by default, INACTIVE or ANY when specified - // Request: - // grpcurl -plaintext localhost:9000 policy.namespaces.NamespaceService/ListNamespaces - // Response: - // { - // "namespaces": [ - // { - // "id": "namespace-id", - // "name": "namespace-name", - // "active": true - // } - // ] - // } ListNamespaces(ctx context.Context, in *ListNamespacesRequest, opts ...grpc.CallOption) (*ListNamespacesResponse, error) - // Request: - // grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 policy.namespaces.NamespaceService/CreateNamespace - // Response: - // { "namespace": { "id": "namespace-id", "active": true } } CreateNamespace(ctx context.Context, in *CreateNamespaceRequest, opts ...grpc.CallOption) (*CreateNamespaceResponse, error) UpdateNamespace(ctx context.Context, in *UpdateNamespaceRequest, opts ...grpc.CallOption) (*UpdateNamespaceResponse, error) DeactivateNamespace(ctx context.Context, in *DeactivateNamespaceRequest, opts ...grpc.CallOption) (*DeactivateNamespaceResponse, error) @@ -121,35 +94,8 @@ func (c *namespaceServiceClient) DeactivateNamespace(ctx context.Context, in *De // All implementations must embed UnimplementedNamespaceServiceServer // for forward compatibility type NamespaceServiceServer interface { - // Request: - // grpcurl -plaintext -d '{"id": "namespace-id"}' localhost:9000 policy.namespaces.NamespaceService/GetNamespace - // Response: - // { - // "namespace": { - // "id": "namespace-id", - // "name": "namespace-name", - // "active": true - // } - // } GetNamespace(context.Context, *GetNamespaceRequest) (*GetNamespaceResponse, error) - // NOTE: ACTIVE state by default, INACTIVE or ANY when specified - // Request: - // grpcurl -plaintext localhost:9000 policy.namespaces.NamespaceService/ListNamespaces - // Response: - // { - // "namespaces": [ - // { - // "id": "namespace-id", - // "name": "namespace-name", - // "active": true - // } - // ] - // } ListNamespaces(context.Context, *ListNamespacesRequest) (*ListNamespacesResponse, error) - // Request: - // grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 policy.namespaces.NamespaceService/CreateNamespace - // Response: - // { "namespace": { "id": "namespace-id", "active": true } } CreateNamespace(context.Context, *CreateNamespaceRequest) (*CreateNamespaceResponse, error) UpdateNamespace(context.Context, *UpdateNamespaceRequest) (*UpdateNamespaceResponse, error) DeactivateNamespace(context.Context, *DeactivateNamespaceRequest) (*DeactivateNamespaceResponse, error) diff --git a/protocol/go/policy/resourcemapping/resource_mapping.pb.go b/protocol/go/policy/resourcemapping/resource_mapping.pb.go index 2dcafe2d4f..1639f0f138 100644 --- a/protocol/go/policy/resourcemapping/resource_mapping.pb.go +++ b/protocol/go/policy/resourcemapping/resource_mapping.pb.go @@ -132,69 +132,6 @@ func (x *ResourceMapping) GetTerms() []string { return nil } -type ResourceMappingCreateUpdate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Metadata *common.MetadataMutable `protobuf:"bytes,1,opt,name=metadata,proto3" json:"metadata,omitempty"` - AttributeValueId string `protobuf:"bytes,2,opt,name=attribute_value_id,json=attributeValueId,proto3" json:"attribute_value_id,omitempty"` - Terms []string `protobuf:"bytes,3,rep,name=terms,proto3" json:"terms,omitempty"` -} - -func (x *ResourceMappingCreateUpdate) Reset() { - *x = ResourceMappingCreateUpdate{} - if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ResourceMappingCreateUpdate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResourceMappingCreateUpdate) ProtoMessage() {} - -func (x *ResourceMappingCreateUpdate) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[1] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use ResourceMappingCreateUpdate.ProtoReflect.Descriptor instead. -func (*ResourceMappingCreateUpdate) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{1} -} - -func (x *ResourceMappingCreateUpdate) GetMetadata() *common.MetadataMutable { - if x != nil { - return x.Metadata - } - return nil -} - -func (x *ResourceMappingCreateUpdate) GetAttributeValueId() string { - if x != nil { - return x.AttributeValueId - } - return "" -} - -func (x *ResourceMappingCreateUpdate) GetTerms() []string { - if x != nil { - return x.Terms - } - return nil -} - type ListResourceMappingsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -204,7 +141,7 @@ type ListResourceMappingsRequest struct { func (x *ListResourceMappingsRequest) Reset() { *x = ListResourceMappingsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[2] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[1] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -217,7 +154,7 @@ func (x *ListResourceMappingsRequest) String() string { func (*ListResourceMappingsRequest) ProtoMessage() {} func (x *ListResourceMappingsRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[2] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[1] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -230,7 +167,7 @@ func (x *ListResourceMappingsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListResourceMappingsRequest.ProtoReflect.Descriptor instead. func (*ListResourceMappingsRequest) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{2} + return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{1} } type ListResourceMappingsResponse struct { @@ -244,7 +181,7 @@ type ListResourceMappingsResponse struct { func (x *ListResourceMappingsResponse) Reset() { *x = ListResourceMappingsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[3] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -257,7 +194,7 @@ func (x *ListResourceMappingsResponse) String() string { func (*ListResourceMappingsResponse) ProtoMessage() {} func (x *ListResourceMappingsResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[3] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -270,7 +207,7 @@ func (x *ListResourceMappingsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListResourceMappingsResponse.ProtoReflect.Descriptor instead. func (*ListResourceMappingsResponse) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{3} + return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{2} } func (x *ListResourceMappingsResponse) GetResourceMappings() []*ResourceMapping { @@ -291,7 +228,7 @@ type GetResourceMappingRequest struct { func (x *GetResourceMappingRequest) Reset() { *x = GetResourceMappingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[4] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -304,7 +241,7 @@ func (x *GetResourceMappingRequest) String() string { func (*GetResourceMappingRequest) ProtoMessage() {} func (x *GetResourceMappingRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[4] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -317,7 +254,7 @@ func (x *GetResourceMappingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetResourceMappingRequest.ProtoReflect.Descriptor instead. func (*GetResourceMappingRequest) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{4} + return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{3} } func (x *GetResourceMappingRequest) GetId() string { @@ -338,7 +275,7 @@ type GetResourceMappingResponse struct { func (x *GetResourceMappingResponse) Reset() { *x = GetResourceMappingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[5] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -351,7 +288,7 @@ func (x *GetResourceMappingResponse) String() string { func (*GetResourceMappingResponse) ProtoMessage() {} func (x *GetResourceMappingResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[5] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -364,7 +301,7 @@ func (x *GetResourceMappingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetResourceMappingResponse.ProtoReflect.Descriptor instead. func (*GetResourceMappingResponse) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{5} + return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{4} } func (x *GetResourceMappingResponse) GetResourceMapping() *ResourceMapping { @@ -379,13 +316,17 @@ type CreateResourceMappingRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - ResourceMapping *ResourceMappingCreateUpdate `protobuf:"bytes,1,opt,name=resource_mapping,json=resourceMapping,proto3" json:"resource_mapping,omitempty"` + // Required + AttributeValueId string `protobuf:"bytes,1,opt,name=attribute_value_id,json=attributeValueId,proto3" json:"attribute_value_id,omitempty"` + Terms []string `protobuf:"bytes,2,rep,name=terms,proto3" json:"terms,omitempty"` + // Optional + Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` } func (x *CreateResourceMappingRequest) Reset() { *x = CreateResourceMappingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[6] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -398,7 +339,7 @@ func (x *CreateResourceMappingRequest) String() string { func (*CreateResourceMappingRequest) ProtoMessage() {} func (x *CreateResourceMappingRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[6] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -411,12 +352,26 @@ func (x *CreateResourceMappingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateResourceMappingRequest.ProtoReflect.Descriptor instead. func (*CreateResourceMappingRequest) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{6} + return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{5} } -func (x *CreateResourceMappingRequest) GetResourceMapping() *ResourceMappingCreateUpdate { +func (x *CreateResourceMappingRequest) GetAttributeValueId() string { if x != nil { - return x.ResourceMapping + return x.AttributeValueId + } + return "" +} + +func (x *CreateResourceMappingRequest) GetTerms() []string { + if x != nil { + return x.Terms + } + return nil +} + +func (x *CreateResourceMappingRequest) GetMetadata() *common.MetadataMutable { + if x != nil { + return x.Metadata } return nil } @@ -432,7 +387,7 @@ type CreateResourceMappingResponse struct { func (x *CreateResourceMappingResponse) Reset() { *x = CreateResourceMappingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[7] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -445,7 +400,7 @@ func (x *CreateResourceMappingResponse) String() string { func (*CreateResourceMappingResponse) ProtoMessage() {} func (x *CreateResourceMappingResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[7] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -458,7 +413,7 @@ func (x *CreateResourceMappingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateResourceMappingResponse.ProtoReflect.Descriptor instead. func (*CreateResourceMappingResponse) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{7} + return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{6} } func (x *CreateResourceMappingResponse) GetResourceMapping() *ResourceMapping { @@ -473,14 +428,20 @@ type UpdateResourceMappingRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - ResourceMapping *ResourceMappingCreateUpdate `protobuf:"bytes,2,opt,name=resource_mapping,json=resourceMapping,proto3" json:"resource_mapping,omitempty"` + // Required + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + // Optional + AttributeValueId string `protobuf:"bytes,4,opt,name=attribute_value_id,json=attributeValueId,proto3" json:"attribute_value_id,omitempty"` + Terms []string `protobuf:"bytes,5,rep,name=terms,proto3" json:"terms,omitempty"` + // Common Metadata + Metadata *common.MetadataMutable `protobuf:"bytes,100,opt,name=metadata,proto3" json:"metadata,omitempty"` + MetadataUpdateBehavior common.MetadataUpdateEnum `protobuf:"varint,101,opt,name=metadata_update_behavior,json=metadataUpdateBehavior,proto3,enum=common.MetadataUpdateEnum" json:"metadata_update_behavior,omitempty"` } func (x *UpdateResourceMappingRequest) Reset() { *x = UpdateResourceMappingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[8] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -493,7 +454,7 @@ func (x *UpdateResourceMappingRequest) String() string { func (*UpdateResourceMappingRequest) ProtoMessage() {} func (x *UpdateResourceMappingRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[8] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -506,7 +467,7 @@ func (x *UpdateResourceMappingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateResourceMappingRequest.ProtoReflect.Descriptor instead. func (*UpdateResourceMappingRequest) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{8} + return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{7} } func (x *UpdateResourceMappingRequest) GetId() string { @@ -516,13 +477,34 @@ func (x *UpdateResourceMappingRequest) GetId() string { return "" } -func (x *UpdateResourceMappingRequest) GetResourceMapping() *ResourceMappingCreateUpdate { +func (x *UpdateResourceMappingRequest) GetAttributeValueId() string { if x != nil { - return x.ResourceMapping + return x.AttributeValueId + } + return "" +} + +func (x *UpdateResourceMappingRequest) GetTerms() []string { + if x != nil { + return x.Terms + } + return nil +} + +func (x *UpdateResourceMappingRequest) GetMetadata() *common.MetadataMutable { + if x != nil { + return x.Metadata } return nil } +func (x *UpdateResourceMappingRequest) GetMetadataUpdateBehavior() common.MetadataUpdateEnum { + if x != nil { + return x.MetadataUpdateBehavior + } + return common.MetadataUpdateEnum(0) +} + type UpdateResourceMappingResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -534,7 +516,7 @@ type UpdateResourceMappingResponse struct { func (x *UpdateResourceMappingResponse) Reset() { *x = UpdateResourceMappingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[9] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -547,7 +529,7 @@ func (x *UpdateResourceMappingResponse) String() string { func (*UpdateResourceMappingResponse) ProtoMessage() {} func (x *UpdateResourceMappingResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[9] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -560,7 +542,7 @@ func (x *UpdateResourceMappingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateResourceMappingResponse.ProtoReflect.Descriptor instead. func (*UpdateResourceMappingResponse) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{9} + return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{8} } func (x *UpdateResourceMappingResponse) GetResourceMapping() *ResourceMapping { @@ -581,7 +563,7 @@ type DeleteResourceMappingRequest struct { func (x *DeleteResourceMappingRequest) Reset() { *x = DeleteResourceMappingRequest{} if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[10] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -594,7 +576,7 @@ func (x *DeleteResourceMappingRequest) String() string { func (*DeleteResourceMappingRequest) ProtoMessage() {} func (x *DeleteResourceMappingRequest) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[10] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -607,7 +589,7 @@ func (x *DeleteResourceMappingRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteResourceMappingRequest.ProtoReflect.Descriptor instead. func (*DeleteResourceMappingRequest) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{10} + return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{9} } func (x *DeleteResourceMappingRequest) GetId() string { @@ -628,7 +610,7 @@ type DeleteResourceMappingResponse struct { func (x *DeleteResourceMappingResponse) Reset() { *x = DeleteResourceMappingResponse{} if protoimpl.UnsafeEnabled { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[11] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -641,7 +623,7 @@ func (x *DeleteResourceMappingResponse) String() string { func (*DeleteResourceMappingResponse) ProtoMessage() {} func (x *DeleteResourceMappingResponse) ProtoReflect() protoreflect.Message { - mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[11] + mi := &file_policy_resourcemapping_resource_mapping_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -654,7 +636,7 @@ func (x *DeleteResourceMappingResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteResourceMappingResponse.ProtoReflect.Descriptor instead. func (*DeleteResourceMappingResponse) Descriptor() ([]byte, []int) { - return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{11} + return file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP(), []int{10} } func (x *DeleteResourceMappingResponse) GetResourceMapping() *ResourceMapping { @@ -671,14 +653,14 @@ var file_policy_resourcemapping_resource_mapping_proto_rawDesc = []byte{ 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x1a, 0x22, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, + 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x22, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x62, 0x75, 0x66, - 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, - 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb0, 0x01, 0x0a, 0x0f, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb0, 0x01, 0x0a, 0x0f, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, @@ -689,114 +671,112 @@ var file_policy_resourcemapping_resource_mapping_proto_rawDesc = []byte{ 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d, - 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x22, 0x96, - 0x01, 0x0a, 0x1b, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x33, - 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x22, 0x1d, + 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x74, 0x0a, + 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, + 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, + 0x6e, 0x67, 0x73, 0x22, 0x33, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, + 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x70, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x22, 0xa7, 0x01, 0x0a, 0x1c, 0x43, + 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x12, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x10, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x49, - 0x64, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x22, 0x1d, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x52, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x74, 0x0a, 0x1c, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x54, 0x0a, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x10, 0x72, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x33, 0x0a, 0x19, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, - 0x64, 0x22, 0x70, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x64, 0x12, 0x1c, 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x12, + 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x73, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x22, 0x85, 0x02, 0x0a, 0x1c, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, + 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x12, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x5f, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x10, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x49, 0x64, + 0x12, 0x14, 0x0a, 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x05, 0x74, 0x65, 0x72, 0x6d, 0x73, 0x12, 0x33, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4d, 0x75, 0x74, 0x61, 0x62, 0x6c, + 0x65, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x54, 0x0a, 0x18, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x62, + 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, 0x72, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x16, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x65, 0x68, 0x61, 0x76, 0x69, 0x6f, + 0x72, 0x22, 0x73, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x52, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, + 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x73, + 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x22, 0x86, 0x01, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x66, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x0f, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x22, 0x73, 0x0a, 0x1d, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, - 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x69, 0x6e, 0x67, 0x32, 0xd0, 0x06, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x9d, + 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x33, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x22, 0x9e, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x06, - 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x66, 0x0a, 0x10, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, - 0x01, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x22, 0x73, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x52, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, - 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x22, 0x36, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, - 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, - 0x73, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x52, 0x0a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x6f, 0x6c, - 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x2e, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x52, 0x0f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x32, 0xee, 0x06, 0x0a, 0x16, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x9d, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x33, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, + 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x9c, + 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x47, + 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, + 0x67, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, + 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa3, 0x01, + 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, + 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x12, 0x12, 0x2f, 0x72, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x9c, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x31, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, - 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x32, 0x2e, 0x70, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, - 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x12, 0x17, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x2d, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xb2, - 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2c, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x26, 0x3a, 0x10, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x22, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1d, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x17, 0x3a, 0x01, 0x2a, 0x22, 0x12, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x6d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x73, 0x12, 0xb7, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x6e, 0x67, 0x73, 0x12, 0xa8, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, @@ -804,37 +784,36 @@ var file_policy_resourcemapping_resource_mapping_proto_rawDesc = []byte{ 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, - 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x31, 0x82, 0xd3, 0xe4, 0x93, - 0x02, 0x2b, 0x3a, 0x10, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x22, 0x17, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, - 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa5, 0x01, - 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, - 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, - 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, - 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x2a, 0x17, 0x2f, 0x72, - 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, - 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0xfb, 0x01, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x6f, 0x70, 0x65, - 0x6e, 0x74, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0x42, 0x14, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, - 0x70, 0x70, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, - 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x72, 0x65, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0xa2, 0x02, 0x03, 0x50, - 0x52, 0x58, 0xaa, 0x02, 0x16, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x73, 0x6f, - 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0xca, 0x02, 0x16, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, - 0x70, 0x69, 0x6e, 0x67, 0xe2, 0x02, 0x22, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x52, 0x65, - 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x17, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x3a, 0x3a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, - 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x67, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x22, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x1c, 0x3a, 0x01, 0x2a, 0x22, 0x17, 0x2f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x2d, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xa5, + 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x12, 0x34, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, + 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, + 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, + 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x2a, 0x17, 0x2f, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x2d, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, + 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x42, 0xfb, 0x01, 0x0a, 0x2a, 0x69, 0x6f, 0x2e, 0x6f, 0x70, + 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2e, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2e, 0x70, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0x42, 0x14, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4d, + 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x3e, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, + 0x66, 0x2f, 0x70, 0x6c, 0x61, 0x74, 0x66, 0x6f, 0x72, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2f, 0x67, 0x6f, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x72, 0x65, + 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0xa2, 0x02, 0x03, + 0x50, 0x52, 0x58, 0xaa, 0x02, 0x16, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x52, 0x65, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0xca, 0x02, 0x16, 0x50, + 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, + 0x70, 0x70, 0x69, 0x6e, 0x67, 0xe2, 0x02, 0x22, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x5c, 0x52, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x17, 0x50, 0x6f, 0x6c, + 0x69, 0x63, 0x79, 0x3a, 0x3a, 0x52, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x6d, 0x61, 0x70, + 0x70, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -849,45 +828,45 @@ func file_policy_resourcemapping_resource_mapping_proto_rawDescGZIP() []byte { return file_policy_resourcemapping_resource_mapping_proto_rawDescData } -var file_policy_resourcemapping_resource_mapping_proto_msgTypes = make([]protoimpl.MessageInfo, 12) +var file_policy_resourcemapping_resource_mapping_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_policy_resourcemapping_resource_mapping_proto_goTypes = []interface{}{ (*ResourceMapping)(nil), // 0: policy.resourcemapping.ResourceMapping - (*ResourceMappingCreateUpdate)(nil), // 1: policy.resourcemapping.ResourceMappingCreateUpdate - (*ListResourceMappingsRequest)(nil), // 2: policy.resourcemapping.ListResourceMappingsRequest - (*ListResourceMappingsResponse)(nil), // 3: policy.resourcemapping.ListResourceMappingsResponse - (*GetResourceMappingRequest)(nil), // 4: policy.resourcemapping.GetResourceMappingRequest - (*GetResourceMappingResponse)(nil), // 5: policy.resourcemapping.GetResourceMappingResponse - (*CreateResourceMappingRequest)(nil), // 6: policy.resourcemapping.CreateResourceMappingRequest - (*CreateResourceMappingResponse)(nil), // 7: policy.resourcemapping.CreateResourceMappingResponse - (*UpdateResourceMappingRequest)(nil), // 8: policy.resourcemapping.UpdateResourceMappingRequest - (*UpdateResourceMappingResponse)(nil), // 9: policy.resourcemapping.UpdateResourceMappingResponse - (*DeleteResourceMappingRequest)(nil), // 10: policy.resourcemapping.DeleteResourceMappingRequest - (*DeleteResourceMappingResponse)(nil), // 11: policy.resourcemapping.DeleteResourceMappingResponse - (*common.Metadata)(nil), // 12: common.Metadata - (*attributes.Value)(nil), // 13: policy.attributes.Value - (*common.MetadataMutable)(nil), // 14: common.MetadataMutable + (*ListResourceMappingsRequest)(nil), // 1: policy.resourcemapping.ListResourceMappingsRequest + (*ListResourceMappingsResponse)(nil), // 2: policy.resourcemapping.ListResourceMappingsResponse + (*GetResourceMappingRequest)(nil), // 3: policy.resourcemapping.GetResourceMappingRequest + (*GetResourceMappingResponse)(nil), // 4: policy.resourcemapping.GetResourceMappingResponse + (*CreateResourceMappingRequest)(nil), // 5: policy.resourcemapping.CreateResourceMappingRequest + (*CreateResourceMappingResponse)(nil), // 6: policy.resourcemapping.CreateResourceMappingResponse + (*UpdateResourceMappingRequest)(nil), // 7: policy.resourcemapping.UpdateResourceMappingRequest + (*UpdateResourceMappingResponse)(nil), // 8: policy.resourcemapping.UpdateResourceMappingResponse + (*DeleteResourceMappingRequest)(nil), // 9: policy.resourcemapping.DeleteResourceMappingRequest + (*DeleteResourceMappingResponse)(nil), // 10: policy.resourcemapping.DeleteResourceMappingResponse + (*common.Metadata)(nil), // 11: common.Metadata + (*attributes.Value)(nil), // 12: policy.attributes.Value + (*common.MetadataMutable)(nil), // 13: common.MetadataMutable + (common.MetadataUpdateEnum)(0), // 14: common.MetadataUpdateEnum } var file_policy_resourcemapping_resource_mapping_proto_depIdxs = []int32{ - 12, // 0: policy.resourcemapping.ResourceMapping.metadata:type_name -> common.Metadata - 13, // 1: policy.resourcemapping.ResourceMapping.attribute_value:type_name -> policy.attributes.Value - 14, // 2: policy.resourcemapping.ResourceMappingCreateUpdate.metadata:type_name -> common.MetadataMutable - 0, // 3: policy.resourcemapping.ListResourceMappingsResponse.resource_mappings:type_name -> policy.resourcemapping.ResourceMapping - 0, // 4: policy.resourcemapping.GetResourceMappingResponse.resource_mapping:type_name -> policy.resourcemapping.ResourceMapping - 1, // 5: policy.resourcemapping.CreateResourceMappingRequest.resource_mapping:type_name -> policy.resourcemapping.ResourceMappingCreateUpdate - 0, // 6: policy.resourcemapping.CreateResourceMappingResponse.resource_mapping:type_name -> policy.resourcemapping.ResourceMapping - 1, // 7: policy.resourcemapping.UpdateResourceMappingRequest.resource_mapping:type_name -> policy.resourcemapping.ResourceMappingCreateUpdate + 11, // 0: policy.resourcemapping.ResourceMapping.metadata:type_name -> common.Metadata + 12, // 1: policy.resourcemapping.ResourceMapping.attribute_value:type_name -> policy.attributes.Value + 0, // 2: policy.resourcemapping.ListResourceMappingsResponse.resource_mappings:type_name -> policy.resourcemapping.ResourceMapping + 0, // 3: policy.resourcemapping.GetResourceMappingResponse.resource_mapping:type_name -> policy.resourcemapping.ResourceMapping + 13, // 4: policy.resourcemapping.CreateResourceMappingRequest.metadata:type_name -> common.MetadataMutable + 0, // 5: policy.resourcemapping.CreateResourceMappingResponse.resource_mapping:type_name -> policy.resourcemapping.ResourceMapping + 13, // 6: policy.resourcemapping.UpdateResourceMappingRequest.metadata:type_name -> common.MetadataMutable + 14, // 7: policy.resourcemapping.UpdateResourceMappingRequest.metadata_update_behavior:type_name -> common.MetadataUpdateEnum 0, // 8: policy.resourcemapping.UpdateResourceMappingResponse.resource_mapping:type_name -> policy.resourcemapping.ResourceMapping 0, // 9: policy.resourcemapping.DeleteResourceMappingResponse.resource_mapping:type_name -> policy.resourcemapping.ResourceMapping - 2, // 10: policy.resourcemapping.ResourceMappingService.ListResourceMappings:input_type -> policy.resourcemapping.ListResourceMappingsRequest - 4, // 11: policy.resourcemapping.ResourceMappingService.GetResourceMapping:input_type -> policy.resourcemapping.GetResourceMappingRequest - 6, // 12: policy.resourcemapping.ResourceMappingService.CreateResourceMapping:input_type -> policy.resourcemapping.CreateResourceMappingRequest - 8, // 13: policy.resourcemapping.ResourceMappingService.UpdateResourceMapping:input_type -> policy.resourcemapping.UpdateResourceMappingRequest - 10, // 14: policy.resourcemapping.ResourceMappingService.DeleteResourceMapping:input_type -> policy.resourcemapping.DeleteResourceMappingRequest - 3, // 15: policy.resourcemapping.ResourceMappingService.ListResourceMappings:output_type -> policy.resourcemapping.ListResourceMappingsResponse - 5, // 16: policy.resourcemapping.ResourceMappingService.GetResourceMapping:output_type -> policy.resourcemapping.GetResourceMappingResponse - 7, // 17: policy.resourcemapping.ResourceMappingService.CreateResourceMapping:output_type -> policy.resourcemapping.CreateResourceMappingResponse - 9, // 18: policy.resourcemapping.ResourceMappingService.UpdateResourceMapping:output_type -> policy.resourcemapping.UpdateResourceMappingResponse - 11, // 19: policy.resourcemapping.ResourceMappingService.DeleteResourceMapping:output_type -> policy.resourcemapping.DeleteResourceMappingResponse + 1, // 10: policy.resourcemapping.ResourceMappingService.ListResourceMappings:input_type -> policy.resourcemapping.ListResourceMappingsRequest + 3, // 11: policy.resourcemapping.ResourceMappingService.GetResourceMapping:input_type -> policy.resourcemapping.GetResourceMappingRequest + 5, // 12: policy.resourcemapping.ResourceMappingService.CreateResourceMapping:input_type -> policy.resourcemapping.CreateResourceMappingRequest + 7, // 13: policy.resourcemapping.ResourceMappingService.UpdateResourceMapping:input_type -> policy.resourcemapping.UpdateResourceMappingRequest + 9, // 14: policy.resourcemapping.ResourceMappingService.DeleteResourceMapping:input_type -> policy.resourcemapping.DeleteResourceMappingRequest + 2, // 15: policy.resourcemapping.ResourceMappingService.ListResourceMappings:output_type -> policy.resourcemapping.ListResourceMappingsResponse + 4, // 16: policy.resourcemapping.ResourceMappingService.GetResourceMapping:output_type -> policy.resourcemapping.GetResourceMappingResponse + 6, // 17: policy.resourcemapping.ResourceMappingService.CreateResourceMapping:output_type -> policy.resourcemapping.CreateResourceMappingResponse + 8, // 18: policy.resourcemapping.ResourceMappingService.UpdateResourceMapping:output_type -> policy.resourcemapping.UpdateResourceMappingResponse + 10, // 19: policy.resourcemapping.ResourceMappingService.DeleteResourceMapping:output_type -> policy.resourcemapping.DeleteResourceMappingResponse 15, // [15:20] is the sub-list for method output_type 10, // [10:15] is the sub-list for method input_type 10, // [10:10] is the sub-list for extension type_name @@ -914,18 +893,6 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { } } file_policy_resourcemapping_resource_mapping_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResourceMappingCreateUpdate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_policy_resourcemapping_resource_mapping_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListResourceMappingsRequest); i { case 0: return &v.state @@ -937,7 +904,7 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { return nil } } - file_policy_resourcemapping_resource_mapping_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + file_policy_resourcemapping_resource_mapping_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*ListResourceMappingsResponse); i { case 0: return &v.state @@ -949,7 +916,7 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { return nil } } - file_policy_resourcemapping_resource_mapping_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + file_policy_resourcemapping_resource_mapping_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetResourceMappingRequest); i { case 0: return &v.state @@ -961,7 +928,7 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { return nil } } - file_policy_resourcemapping_resource_mapping_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + file_policy_resourcemapping_resource_mapping_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*GetResourceMappingResponse); i { case 0: return &v.state @@ -973,7 +940,7 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { return nil } } - file_policy_resourcemapping_resource_mapping_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + file_policy_resourcemapping_resource_mapping_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateResourceMappingRequest); i { case 0: return &v.state @@ -985,7 +952,7 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { return nil } } - file_policy_resourcemapping_resource_mapping_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + file_policy_resourcemapping_resource_mapping_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CreateResourceMappingResponse); i { case 0: return &v.state @@ -997,7 +964,7 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { return nil } } - file_policy_resourcemapping_resource_mapping_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + file_policy_resourcemapping_resource_mapping_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateResourceMappingRequest); i { case 0: return &v.state @@ -1009,7 +976,7 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { return nil } } - file_policy_resourcemapping_resource_mapping_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + file_policy_resourcemapping_resource_mapping_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*UpdateResourceMappingResponse); i { case 0: return &v.state @@ -1021,7 +988,7 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { return nil } } - file_policy_resourcemapping_resource_mapping_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + file_policy_resourcemapping_resource_mapping_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteResourceMappingRequest); i { case 0: return &v.state @@ -1033,7 +1000,7 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { return nil } } - file_policy_resourcemapping_resource_mapping_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + file_policy_resourcemapping_resource_mapping_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*DeleteResourceMappingResponse); i { case 0: return &v.state @@ -1052,7 +1019,7 @@ func file_policy_resourcemapping_resource_mapping_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_policy_resourcemapping_resource_mapping_proto_rawDesc, NumEnums: 0, - NumMessages: 12, + NumMessages: 11, NumExtensions: 0, NumServices: 1, }, diff --git a/protocol/go/policy/resourcemapping/resource_mapping.pb.gw.go b/protocol/go/policy/resourcemapping/resource_mapping.pb.gw.go index 91c3b663f5..4c5a870c4e 100644 --- a/protocol/go/policy/resourcemapping/resource_mapping.pb.gw.go +++ b/protocol/go/policy/resourcemapping/resource_mapping.pb.gw.go @@ -109,7 +109,7 @@ func request_ResourceMappingService_CreateResourceMapping_0(ctx context.Context, if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.ResourceMapping); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -126,7 +126,7 @@ func local_request_ResourceMappingService_CreateResourceMapping_0(ctx context.Co if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.ResourceMapping); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -143,7 +143,7 @@ func request_ResourceMappingService_UpdateResourceMapping_0(ctx context.Context, if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.ResourceMapping); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } @@ -177,7 +177,7 @@ func local_request_ResourceMappingService_UpdateResourceMapping_0(ctx context.Co if berr != nil { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", berr) } - if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.ResourceMapping); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } diff --git a/sdkjava/src/main/java/io/opentdf/platform/common/ActiveStateEnum.java b/sdkjava/src/main/java/io/opentdf/platform/common/ActiveStateEnum.java index daf00aea1a..db9c131d36 100644 --- a/sdkjava/src/main/java/io/opentdf/platform/common/ActiveStateEnum.java +++ b/sdkjava/src/main/java/io/opentdf/platform/common/ActiveStateEnum.java @@ -108,7 +108,7 @@ public ActiveStateEnum findValueByNumber(int number) { } public static final com.google.protobuf.Descriptors.EnumDescriptor getDescriptor() { - return io.opentdf.platform.common.CommonProto.getDescriptor().getEnumTypes().get(0); + return io.opentdf.platform.common.CommonProto.getDescriptor().getEnumTypes().get(1); } private static final ActiveStateEnum[] VALUES = values(); diff --git a/sdkjava/src/main/java/io/opentdf/platform/common/CommonProto.java b/sdkjava/src/main/java/io/opentdf/platform/common/CommonProto.java index c363cc72d9..78ca372da7 100644 --- a/sdkjava/src/main/java/io/opentdf/platform/common/CommonProto.java +++ b/sdkjava/src/main/java/io/opentdf/platform/common/CommonProto.java @@ -45,26 +45,27 @@ public static void registerAllExtensions( static { java.lang.String[] descriptorData = { "\n\023common/common.proto\022\006common\032\037google/pr" + - "otobuf/timestamp.proto\"\223\002\n\010Metadata\0229\n\nc" + + "otobuf/timestamp.proto\"\361\001\n\010Metadata\0229\n\nc" + "reated_at\030\001 \001(\0132\032.google.protobuf.Timest" + "ampR\tcreatedAt\0229\n\nupdated_at\030\002 \001(\0132\032.goo" + "gle.protobuf.TimestampR\tupdatedAt\0224\n\006lab" + "els\030\003 \003(\0132\034.common.Metadata.LabelsEntryR" + - "\006labels\022 \n\013description\030\004 \001(\tR\013descriptio" + - "n\0329\n\013LabelsEntry\022\020\n\003key\030\001 \001(\tR\003key\022\024\n\005va" + - "lue\030\002 \001(\tR\005value:\0028\001\"\253\001\n\017MetadataMutable" + - "\022;\n\006labels\030\003 \003(\0132#.common.MetadataMutabl" + - "e.LabelsEntryR\006labels\022 \n\013description\030\004 \001" + - "(\tR\013description\0329\n\013LabelsEntry\022\020\n\003key\030\001 " + - "\001(\tR\003key\022\024\n\005value\030\002 \001(\tR\005value:\0028\001*\215\001\n\017A" + - "ctiveStateEnum\022!\n\035ACTIVE_STATE_ENUM_UNSP" + - "ECIFIED\020\000\022\034\n\030ACTIVE_STATE_ENUM_ACTIVE\020\001\022" + - "\036\n\032ACTIVE_STATE_ENUM_INACTIVE\020\002\022\031\n\025ACTIV" + - "E_STATE_ENUM_ANY\020\003B\221\001\n\032io.opentdf.platfo" + - "rm.commonB\013CommonProtoP\001Z.github.com/ope" + - "ntdf/platform/protocol/go/common\242\002\003CXX\252\002" + - "\006Common\312\002\006Common\342\002\022Common\\GPBMetadata\352\002\006" + - "Commonb\006proto3" + "\006labels\0329\n\013LabelsEntry\022\020\n\003key\030\001 \001(\tR\003key" + + "\022\024\n\005value\030\002 \001(\tR\005value:\0028\001\"\211\001\n\017MetadataM" + + "utable\022;\n\006labels\030\003 \003(\0132#.common.Metadata" + + "Mutable.LabelsEntryR\006labels\0329\n\013LabelsEnt" + + "ry\022\020\n\003key\030\001 \001(\tR\003key\022\024\n\005value\030\002 \001(\tR\005val" + + "ue:\0028\001*}\n\022MetadataUpdateEnum\022$\n METADATA" + + "_UPDATE_ENUM_UNSPECIFIED\020\000\022\037\n\033METADATA_U" + + "PDATE_ENUM_EXTEND\020\001\022 \n\034METADATA_UPDATE_E" + + "NUM_REPLACE\020\002*\215\001\n\017ActiveStateEnum\022!\n\035ACT" + + "IVE_STATE_ENUM_UNSPECIFIED\020\000\022\034\n\030ACTIVE_S" + + "TATE_ENUM_ACTIVE\020\001\022\036\n\032ACTIVE_STATE_ENUM_" + + "INACTIVE\020\002\022\031\n\025ACTIVE_STATE_ENUM_ANY\020\003B\221\001" + + "\n\032io.opentdf.platform.commonB\013CommonProt" + + "oP\001Z.github.com/opentdf/platform/protoco" + + "l/go/common\242\002\003CXX\252\002\006Common\312\002\006Common\342\002\022Co" + + "mmon\\GPBMetadata\352\002\006Commonb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -76,7 +77,7 @@ public static void registerAllExtensions( internal_static_common_Metadata_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_common_Metadata_descriptor, - new java.lang.String[] { "CreatedAt", "UpdatedAt", "Labels", "Description", }); + new java.lang.String[] { "CreatedAt", "UpdatedAt", "Labels", }); internal_static_common_Metadata_LabelsEntry_descriptor = internal_static_common_Metadata_descriptor.getNestedTypes().get(0); internal_static_common_Metadata_LabelsEntry_fieldAccessorTable = new @@ -88,7 +89,7 @@ public static void registerAllExtensions( internal_static_common_MetadataMutable_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_common_MetadataMutable_descriptor, - new java.lang.String[] { "Labels", "Description", }); + new java.lang.String[] { "Labels", }); internal_static_common_MetadataMutable_LabelsEntry_descriptor = internal_static_common_MetadataMutable_descriptor.getNestedTypes().get(0); internal_static_common_MetadataMutable_LabelsEntry_fieldAccessorTable = new diff --git a/sdkjava/src/main/java/io/opentdf/platform/common/Metadata.java b/sdkjava/src/main/java/io/opentdf/platform/common/Metadata.java index 6553a3b3f2..72e2d1a28d 100644 --- a/sdkjava/src/main/java/io/opentdf/platform/common/Metadata.java +++ b/sdkjava/src/main/java/io/opentdf/platform/common/Metadata.java @@ -21,7 +21,6 @@ private Metadata(com.google.protobuf.GeneratedMessageV3.Builder> builder) { super(builder); } private Metadata() { - description_ = ""; } @java.lang.Override @@ -228,53 +227,6 @@ public java.lang.String getLabelsOrThrow( return map.get(key); } - public static final int DESCRIPTION_FIELD_NUMBER = 4; - @SuppressWarnings("serial") - private volatile java.lang.Object description_ = ""; - /** - *