From e8405090534dc26eee0d0e6714b57f15cabe3ead Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Mon, 12 Feb 2024 13:54:15 -0500 Subject: [PATCH 01/28] add state to ERD and add new migration --- .../20240212000000_add_active_state_enums.sql | 31 +++++++++++++++++++ ...0_diagram.md => 20240212000000_diagram.md} | 7 +++-- 2 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 migrations/20240212000000_add_active_state_enums.sql rename migrations/{20240131000000_diagram.md => 20240212000000_diagram.md} (95%) diff --git a/migrations/20240212000000_add_active_state_enums.sql b/migrations/20240212000000_add_active_state_enums.sql new file mode 100644 index 0000000000..b484b11373 --- /dev/null +++ b/migrations/20240212000000_add_active_state_enums.sql @@ -0,0 +1,31 @@ +-- +goose Up +-- +goose StatementBegin + +CREATE TYPE active_state AS ENUM ('ACTIVE', 'INACTIVE', 'UNSPECIFIED'); + +ALTER TABLE attribute_namespaces ADD COLUMN state active_state NOT NULL DEFAULT 'ACTIVE'; +ALTER TABLE attribute_definitions ADD COLUMN state active_state NOT NULL DEFAULT 'ACTIVE'; +ALTER TABLE attribute_values ADD COLUMN state active_state NOT NULL DEFAULT 'ACTIVE'; + +-- +goose StatementEnd + +-- +goose Down +-- +goose StatementBegin + +-- If rolling back, all soft deletes should become hard deletes. +DELETE FROM attribute_namespaces WHERE state = 'INACTIVE'; +DELETE FROM attribute_definitions WHERE state = 'INACTIVE'; +DELETE FROM attribute_values WHERE state = 'INACTIVE'; + +-- There should be no UNSPECIFIED states, but only preserve active rows just in case. +DELETE FROM attribute_namespaces WHERE state = 'UNSPECIFIED'; +DELETE FROM attribute_definitions WHERE state = 'UNSPECIFIED'; +DELETE FROM attribute_values WHERE state = 'UNSPECIFIED'; + +ALTER TABLE attribute_namespaces DROP COLUMN state; +ALTER TABLE attribute_definitions DROP COLUMN state; +ALTER TABLE attribute_values DROP COLUMN state; + +DROP TYPE active_state; + +-- +goose StatementEnd \ No newline at end of file diff --git a/migrations/20240131000000_diagram.md b/migrations/20240212000000_diagram.md similarity index 95% rename from migrations/20240131000000_diagram.md rename to migrations/20240212000000_diagram.md index 4d8737f75d..b91e6af3b5 100644 --- a/migrations/20240131000000_diagram.md +++ b/migrations/20240212000000_diagram.md @@ -2,7 +2,7 @@ ```mermaid --- -title: Database Schema Mermaid Diagram +title: Database Schema Mermaid Diagram nodes: | Metadata is a jsonb type which will hold a common structure @@ -33,6 +33,7 @@ erDiagram Namespace { uuid id PK varchar name UK + enum state } AttributeDefinition { @@ -42,6 +43,7 @@ erDiagram enum rule jsonb metadata compIdx comp_key UK "ns_id + name" + enum state } AttributeDefinitionKeyAccessGrant { @@ -57,6 +59,7 @@ erDiagram uuid[] members FK "Optional grouping of values" jsonb metadata compIdx comp_key UK "ns_id + ad_id + value" + enum state } AttributeValueKeyAccessGrant { @@ -86,4 +89,4 @@ erDiagram jsonb public_key jsonb metadata } -``` \ No newline at end of file +``` From 0f3689944dad44dc8d378d0e0066d6c150e2ee77 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Mon, 12 Feb 2024 13:54:34 -0500 Subject: [PATCH 02/28] add real uuids to fixtures for readability --- integration/fixtures.yaml | 106 +++++++++++++++++++------------------- 1 file changed, 53 insertions(+), 53 deletions(-) diff --git a/integration/fixtures.yaml b/integration/fixtures.yaml index 7039f4bfaf..bfba526ab9 100644 --- a/integration/fixtures.yaml +++ b/integration/fixtures.yaml @@ -9,13 +9,13 @@ attribute_namespaces: - name data: example.com: - id: 00000000-0000-0000-0000-000000000000 + id: 8f1d8839-2851-4bf4-8bf4-5243dbfe517d name: example.com example.net: - id: 00000000-0000-0000-0000-000000000001 + id: d69cf14d-744b-48cf-aab4-43756e97a8e5 name: example.net example.org: - id: 00000000-0000-0000-0000-000000000002 + id: 0d94e00a-7bd3-4482-afe3-f1e4b03c1353 name: example.org ## @@ -33,53 +33,53 @@ attributes: - rule data: example.com/attr/attr1: - id: 00000000-0000-0000-0000-000000000000 - namespace_id: 00000000-0000-0000-0000-000000000000 + id: 6a261d68-0899-4e17-bb2f-124abba7c09c + namespace_id: 8f1d8839-2851-4bf4-8bf4-5243dbfe517d name: attr1 rule: ANY_OF example.com/attr/attr2: - id: 00000000-0000-0000-0000-000000000001 - namespace_id: 00000000-0000-0000-0000-000000000000 + id: e1536f25-d287-43ed-9ad9-2cf4a7698e5f + namespace_id: 8f1d8839-2851-4bf4-8bf4-5243dbfe517d name: attr2 rule: ALL_OF example.net/attr/attr1: - id: 00000000-0000-0000-0000-000000000002 - namespace_id: 00000000-0000-0000-0000-000000000001 + id: d2396dd6-0e4e-4b6d-9ab1-74b69c4b9b99 + namespace_id: d69cf14d-744b-48cf-aab4-43756e97a8e5 name: attr1 rule: ANY_OF example.net/attr/attr2: - id: 00000000-0000-0000-0000-000000000003 - namespace_id: 00000000-0000-0000-0000-000000000001 + id: 8e778b7f-3a0e-4ed7-b007-5e4d8dfc03df + namespace_id: d69cf14d-744b-48cf-aab4-43756e97a8e5 name: attr2 rule: ALL_OF example.net/attr/attr3: - id: 00000000-0000-0000-0000-000000000004 - namespace_id: 00000000-0000-0000-0000-000000000001 + id: 438a0dfb-cd1a-4f73-af73-2325a6e9db1b + namespace_id: d69cf14d-744b-48cf-aab4-43756e97a8e5 name: attr3 rule: HIERARCHY example.org/attr/attr1: - id: 00000000-0000-0000-0000-000000000005 - namespace_id: 00000000-0000-0000-0000-000000000002 + id: 07d04942-c5b4-42d1-964e-f5b2d6365d80 + namespace_id: 0d94e00a-7bd3-4482-afe3-f1e4b03c1353 name: attr1 rule: ANY_OF example.org/attr/attr2: - id: 00000000-0000-0000-0000-000000000006 - namespace_id: 00000000-0000-0000-0000-000000000002 + id: 65a0e745-7a22-4e16-8004-09ebc932f621 + namespace_id: 0d94e00a-7bd3-4482-afe3-f1e4b03c1353 name: attr2 rule: ALL_OF example.org/attr/attr3: - id: 00000000-0000-0000-0000-000000000007 - namespace_id: 00000000-0000-0000-0000-000000000002 + id: 6dc88b9e-319b-4c6e-85c7-6f7e43a5d8d4 + namespace_id: 0d94e00a-7bd3-4482-afe3-f1e4b03c1353 name: attr3 rule: HIERARCHY attribute_key_access_servers: - - attribute_id: 00000000-0000-0000-0000-000000000000 - key_access_server_id: 00000000-0000-0000-0000-000000000000 - - attribute_id: 00000000-0000-0000-0000-000000000000 - key_access_server_id: 00000000-0000-0000-0000-000000000001 + - attribute_id: 6a261d68-0899-4e17-bb2f-124abba7c09c + key_access_server_id: 34f2acdc-3d9c-4e92-80b6-90fe4dc9afcb + - attribute_id: 6a261d68-0899-4e17-bb2f-124abba7c09c + key_access_server_id: e36640a6-61c5-4d4c-a45b-0e0a26d1c45f ## # Attribute Values @@ -94,42 +94,42 @@ attribute_values: - members data: example.com/attr/attr1/value/value1: - id: 00000000-0000-0000-0000-000000000000 - attribute_definition_id: 00000000-0000-0000-0000-000000000000 + id: 74babca6-016f-4f3e-a99b-4e46ea8d0fd8 + attribute_definition_id: 6a261d68-0899-4e17-bb2f-124abba7c09c value: value1 example.com/attr/attr1/value/value2: - id: 00000000-0000-0000-0000-000000000001 - attribute_definition_id: 00000000-0000-0000-0000-000000000000 + id: 2fe8dea1-3555-498c-afe9-99724f35f3d3 + attribute_definition_id: 6a261d68-0899-4e17-bb2f-124abba7c09c value: value2 members: # example.com/attr/attr2/value/value1 - - 00000000-0000-0000-0000-000000000002 + - 0fd363db-27b1-4210-b77b-8c82fe044d41 # example.net/attr/attr1/value/value1 - - 00000000-0000-0000-0000-000000000004 + - 532e5957-28f7-466d-91e2-493e9431cd83 example.com/attr/attr2/value/value1: - id: 00000000-0000-0000-0000-000000000002 - attribute_definition_id: 00000000-0000-0000-0000-000000000001 + id: 0fd363db-27b1-4210-b77b-8c82fe044d41 + attribute_definition_id: e1536f25-d287-43ed-9ad9-2cf4a7698e5f value: value1 example.com/attr/attr2/value/value2: - id: 00000000-0000-0000-0000-000000000003 - attribute_definition_id: 00000000-0000-0000-0000-000000000001 + id: 81f643f8-e050-4b97-a005-b61294d4c8bb + attribute_definition_id: e1536f25-d287-43ed-9ad9-2cf4a7698e5f value: value2 example.net/attr/attr1/value/value1: - id: 00000000-0000-0000-0000-000000000004 - attribute_definition_id: 00000000-0000-0000-0000-000000000002 + id: 532e5957-28f7-466d-91e2-493e9431cd83 + attribute_definition_id: d2396dd6-0e4e-4b6d-9ab1-74b69c4b9b99 value: value1 example.net/attr/attr1/value/value2: - id: 00000000-0000-0000-0000-000000000005 - attribute_definition_id: 00000000-0000-0000-0000-000000000002 + id: 04bd2657-de10-46bc-a88f-5d687de4816b + attribute_definition_id: d2396dd6-0e4e-4b6d-9ab1-74b69c4b9b99 value: value2 attribute_value_key_access_servers: - - value_id: 00000000-0000-0000-0000-000000000000 - key_access_server_id: 00000000-0000-0000-0000-000000000000 - - value_id: 00000000-0000-0000-0000-000000000000 - key_access_server_id: 00000000-0000-0000-0000-000000000001 + - value_id: 74babca6-016f-4f3e-a99b-4e46ea8d0fd8 + key_access_server_id: 34f2acdc-3d9c-4e92-80b6-90fe4dc9afcb + - value_id: 74babca6-016f-4f3e-a99b-4e46ea8d0fd8 + key_access_server_id: e36640a6-61c5-4d4c-a45b-0e0a26d1c45f ## # Subject Mappings @@ -147,8 +147,8 @@ subject_mappings: - subject_attribute_values data: subject_mapping_subject_attribute1: - id: 00000000-0000-0000-0000-000000000000 - attribute_value_id: 00000000-0000-0000-0000-000000000000 + id: 812fab35-9aa4-4e73-bf22-c96638d58ea4 + attribute_value_id: 74babca6-016f-4f3e-a99b-4e46ea8d0fd8 operator: IN subject_attribute: subject_attribute1 subject_attribute_values: @@ -156,8 +156,8 @@ subject_mappings: - value2 subject_mapping_subject_attribute2: - id: 00000000-0000-0000-0000-000000000001 - attribute_value_id: 00000000-0000-0000-0000-000000000001 + id: e6a3f940-e24f-4383-8763-718a1a304948 + attribute_value_id: 2fe8dea1-3555-498c-afe9-99724f35f3d3 operator: NOT_IN subject_attribute: subject_attribute2 subject_attribute_values: @@ -178,19 +178,19 @@ resource_mappings: - terms data: resource_mapping_to_attribute_value1: - id: 00000000-0000-0000-0000-000000000000 - attribute_value_id: 00000000-0000-0000-0000-000000000000 + id: 02092d67-fffa-4030-9775-b5cd5d581e1f + attribute_value_id: 74babca6-016f-4f3e-a99b-4e46ea8d0fd8 terms: - TS - TOPSECRET resource_mapping_to_attribute_value2: - id: 00000000-0000-0000-0000-000000000001 - attribute_value_id: 00000000-0000-0000-0000-000000000001 + id: b05d8d25-42ad-445d-b973-12b7561a7738 + attribute_value_id: 2fe8dea1-3555-498c-afe9-99724f35f3d3 terms: - test0 resource_mapping_to_attribute_value3: - id: 00000000-0000-0000-0000-000000000002 - attribute_value_id: 00000000-0000-0000-0000-000000000005 + id: f4d76bfb-e1a1-4f7a-83f2-8e8433cf229f + attribute_value_id: 04bd2657-de10-46bc-a88f-5d687de4816b terms: - helloworld @@ -207,12 +207,12 @@ kas_registry: - public_key data: key_access_server_1: - id: 00000000-0000-0000-0000-000000000000 + id: 34f2acdc-3d9c-4e92-80b6-90fe4dc9afcb uri: kas.example.com public_key: remote: https://kas.example.com/public_key key_access_server_2: - id: 00000000-0000-0000-0000-000000000001 + id: e36640a6-61c5-4d4c-a45b-0e0a26d1c45f uri: https://local.kas.com:3000 public_key: local: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJ6ekNDQVhXZ0F3SUJBZ0lVT1J1VjNhdlU5QUU2enNCNlp4eWxsSHBpNWQ0d0NnWUlLb1pJemowRUF3SXcKUFRFTE1Ba0dBMVVFQmhNQ2RYTXhDekFKQmdOVkJBZ01BbU4wTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWAphV1JuYVhSeklGQjBlU0JNZEdRd0hoY05NalF3TVRBeU1UWTFOalUyV2hjTk1qVXdNVEF4TVRZMU5qVTJXakE5Ck1Rc3dDUVlEVlFRR0V3SjFjekVMTUFrR0ExVUVDQXdDWTNReElUQWZCZ05WQkFvTUdFbHVkR1Z5Ym1WMElGZHAKWkdkcGRITWdVSFI1SUV4MFpEQlpNQk1HQnlxR1NNNDlBZ0VHQ0NxR1NNNDlBd0VIQTBJQUJMVjlmQ0pIRC9rYwpyWHJVSFF3QVp4ME1jMGRQdkxqc0ovb2pFdE1NbjBST2RlT3g4eWd4Z2NRVEZGQXh5Q3RCdWFkaEFkbS9pVkh0CjhnMkVNejVkTzNXalV6QlJNQjBHQTFVZERnUVdCQlFZTmt1aytKSXVSV3luK2JFOHNCaFJ3MjdPVlRBZkJnTlYKSFNNRUdEQVdnQlFZTmt1aytKSXVSV3luK2JFOHNCaFJ3MjdPVlRBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvRwpDQ3FHU000OUJBTUNBMGdBTUVVQ0lRQ0FCMmppWWU4QVk2TUo0QURQU1FHRTQ3K2Eza1dGTGNHc0pob1pieHRnClV3SWdjZklJdVBmaDRmYmN2OGNUaTJCbEkzazdzV1B1QW1JRlZyaUkyZDNVeDVRPQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg== From 971d063b2851bc71d4ad8754add2b79b83bda3d1 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Mon, 12 Feb 2024 13:54:57 -0500 Subject: [PATCH 03/28] fix namespaces GET and LIST queries to only return id and name but not new state column value --- internal/db/namespaces.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go index 336afbaa09..c72ad9ceb8 100644 --- a/internal/db/namespaces.go +++ b/internal/db/namespaces.go @@ -10,7 +10,7 @@ import ( func getNamespaceSql(id string) (string, []interface{}, error) { t := Tables.Namespaces return newStatementBuilder(). - Select("*"). + Select(t.Field("id"), t.Field("name")). From(t.Name()). Where(sq.Eq{t.Field("id"): id}). ToSql() @@ -38,7 +38,7 @@ func (c Client) GetNamespace(ctx context.Context, id string) (*namespaces.Namesp func listNamespacesSql() (string, []interface{}, error) { t := Tables.Namespaces return newStatementBuilder(). - Select("*"). + Select(t.Field("id"), t.Field("name")). From(t.Name()). ToSql() } @@ -129,7 +129,7 @@ func (c Client) DeleteNamespace(ctx context.Context, id string) (*namespaces.Nam if e := c.exec(ctx, sql, args, err); e != nil { return nil, WrapIfKnownInvalidQueryErr(e) } - + // return the namespace before it was deleted return ns, nil } From 9b4f9732cff83ebd3e2a1ba6e728e706a5eb3b0e Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Mon, 12 Feb 2024 14:29:07 -0500 Subject: [PATCH 04/28] add indexes on state column --- .../20240212000000_add_active_state_enums.sql | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/migrations/20240212000000_add_active_state_enums.sql b/migrations/20240212000000_add_active_state_enums.sql index b484b11373..547d98bf13 100644 --- a/migrations/20240212000000_add_active_state_enums.sql +++ b/migrations/20240212000000_add_active_state_enums.sql @@ -3,9 +3,13 @@ CREATE TYPE active_state AS ENUM ('ACTIVE', 'INACTIVE', 'UNSPECIFIED'); -ALTER TABLE attribute_namespaces ADD COLUMN state active_state NOT NULL DEFAULT 'ACTIVE'; -ALTER TABLE attribute_definitions ADD COLUMN state active_state NOT NULL DEFAULT 'ACTIVE'; -ALTER TABLE attribute_values ADD COLUMN state active_state NOT NULL DEFAULT 'ACTIVE'; +ALTER TABLE attribute_namespaces ADD COLUMN IF NOT EXISTS state active_state NOT NULL DEFAULT 'ACTIVE'; +ALTER TABLE attribute_definitions ADD COLUMN IF NOT EXISTS state active_state NOT NULL DEFAULT 'ACTIVE'; +ALTER TABLE attribute_values ADD COLUMN IF NOT EXISTS state active_state NOT NULL DEFAULT 'ACTIVE'; + +CREATE INDEX IF NOT EXISTS idx_attribute_namespaces_state ON attribute_namespaces(state); +CREATE INDEX IF NOT EXISTS idx_attribute_definitions_state ON attribute_definitions(state); +CREATE INDEX IF NOT EXISTS idx_attribute_values_state ON attribute_values(state); -- +goose StatementEnd @@ -22,6 +26,10 @@ DELETE FROM attribute_namespaces WHERE state = 'UNSPECIFIED'; DELETE FROM attribute_definitions WHERE state = 'UNSPECIFIED'; DELETE FROM attribute_values WHERE state = 'UNSPECIFIED'; +DROP INDEX IF EXISTS idx_attribute_namespaces_state; +DROP INDEX IF EXISTS idx_attribute_definitions_state; +DROP INDEX IF EXISTS idx_attribute_values_state; + ALTER TABLE attribute_namespaces DROP COLUMN state; ALTER TABLE attribute_definitions DROP COLUMN state; ALTER TABLE attribute_values DROP COLUMN state; From 6b2e38ca1cfaeb3e56f2cdc534a4031c448ff0ef Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Mon, 12 Feb 2024 18:11:46 -0500 Subject: [PATCH 05/28] add state to namespaces fixtures --- integration/fixtures.yaml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/integration/fixtures.yaml b/integration/fixtures.yaml index bfba526ab9..e473877825 100644 --- a/integration/fixtures.yaml +++ b/integration/fixtures.yaml @@ -7,16 +7,28 @@ attribute_namespaces: columns: - id - name + - state data: example.com: id: 8f1d8839-2851-4bf4-8bf4-5243dbfe517d name: example.com + state: ACTIVE example.net: id: d69cf14d-744b-48cf-aab4-43756e97a8e5 name: example.net + state: ACTIVE example.org: id: 0d94e00a-7bd3-4482-afe3-f1e4b03c1353 name: example.org + state: ACTIVE + unspecified_state: + id: 3b509401-4f4f-4d3a-a907-55bed403b04b + name: error.gov + state: UNSPECIFIED + inactive_state: + id: 40790395-88b1-4adc-8bf5-1900491a79ba + name: mistake.io + state: INACTIVE ## # Attributes From 60ef44a53e0bbe2b73c34819ee87022e34abb1e9 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Mon, 12 Feb 2024 18:12:02 -0500 Subject: [PATCH 06/28] add function and trigger definitions to new migration sql --- .../20240212000000_add_active_state_enums.sql | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/migrations/20240212000000_add_active_state_enums.sql b/migrations/20240212000000_add_active_state_enums.sql index 547d98bf13..4109817f71 100644 --- a/migrations/20240212000000_add_active_state_enums.sql +++ b/migrations/20240212000000_add_active_state_enums.sql @@ -11,6 +11,32 @@ CREATE INDEX IF NOT EXISTS idx_attribute_namespaces_state ON attribute_namespace CREATE INDEX IF NOT EXISTS idx_attribute_definitions_state ON attribute_definitions(state); CREATE INDEX IF NOT EXISTS idx_attribute_values_state ON attribute_values(state); +--- Triggers soft-delete cascade namespaces -> attr definitions -> attr values +--- Expected trigger args cannot be explicitly defined, but are: [tableName text, foreignKeyColumnName text] +CREATE FUNCTION cascade_inactive_state() +RETURNS TRIGGER AS $$ +BEGIN + IF (TG_OP = 'UPDATE' AND NEW.state = 'INACTIVE') THEN + EXECUTE format('UPDATE %I.%I SET state = $1 WHERE %s = $2', TG_TABLE_SCHEMA, TG_ARGV[0], TG_ARGV[1]) USING NEW.state, OLD.id; + END IF; + RETURN NULL; +END +$$ language 'plpgsql'; + +CREATE TRIGGER namespaces_state_updated + AFTER + UPDATE OF state + ON attribute_namespaces + FOR EACH ROW + EXECUTE PROCEDURE cascade_inactive_state('attribute_definitions', 'namespace_id'); + +CREATE TRIGGER attribute_definitions_state_updated + AFTER + UPDATE OF state + ON attribute_definitions + FOR EACH ROW + EXECUTE PROCEDURE cascade_inactive_state('attribute_values', 'attribute_definition_id'); + -- +goose StatementEnd -- +goose Down @@ -26,6 +52,10 @@ DELETE FROM attribute_namespaces WHERE state = 'UNSPECIFIED'; DELETE FROM attribute_definitions WHERE state = 'UNSPECIFIED'; DELETE FROM attribute_values WHERE state = 'UNSPECIFIED'; +DROP TRIGGER IF EXISTS namespaces_state_updated ON attribute_namespaces; +DROP TRIGGER IF EXISTS attribute_definitions_state_updated ON attribute_definitions; +DROP FUNCTION cascade_inactive_state; + DROP INDEX IF EXISTS idx_attribute_namespaces_state; DROP INDEX IF EXISTS idx_attribute_definitions_state; DROP INDEX IF EXISTS idx_attribute_values_state; From a866acc7229569f8a5fadff774d44655ae01ce13 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Mon, 12 Feb 2024 18:13:35 -0500 Subject: [PATCH 07/28] add soft-delete to namespaces, then support list filtering based on state in sql queries --- integration/fixtures.go | 2 ++ internal/db/attribute_values.go | 8 ++++---- internal/db/attributes.go | 7 ++++--- internal/db/db.go | 6 ++++++ internal/db/namespaces.go | 25 +++++++++++++++++++------ 5 files changed, 35 insertions(+), 13 deletions(-) diff --git a/integration/fixtures.go b/integration/fixtures.go index 4797237988..3d10f06314 100644 --- a/integration/fixtures.go +++ b/integration/fixtures.go @@ -23,6 +23,7 @@ type FixtureMetadata struct { type FixtureDataNamespace struct { Id string `yaml:"id"` Name string `yaml:"name"` + State string `yaml:"state"` } type FixtureDataAttribute struct { @@ -224,6 +225,7 @@ func (f *Fixtures) provisionNamespace() int64 { []string{ f.db.StringWrap(d.Id), f.db.StringWrap(d.Name), + f.db.StringWrap(d.State), }, ) } diff --git a/internal/db/attribute_values.go b/internal/db/attribute_values.go index eb9199213c..6a99b6ec22 100644 --- a/internal/db/attribute_values.go +++ b/internal/db/attribute_values.go @@ -128,7 +128,7 @@ func (c Client) GetAttributeValue(ctx context.Context, id string) (*attributes.V return v, nil } -func listAttributeValuesSql(attribute_id string) (string, []interface{}, error) { +func listAttributeValuesSql(attribute_id string, state string) (string, []interface{}, error) { return newStatementBuilder(). Select( tableField(AttributeValueTable, "id"), @@ -138,11 +138,11 @@ func listAttributeValuesSql(attribute_id string) (string, []interface{}, error) tableField(AttributeValueTable, "attribute_definition_id"), ). From(AttributeValueTable). - Where(sq.Eq{tableField(AttributeValueTable, "attribute_definition_id"): attribute_id}). + Where(sq.Eq{tableField(AttributeValueTable, "attribute_definition_id"): attribute_id, tableField(AttributeValueTable, "state"): state}). ToSql() } -func (c Client) ListAttributeValues(ctx context.Context, attribute_id string) ([]*attributes.Value, error) { - sql, args, err := listAttributeValuesSql(attribute_id) +func (c Client) ListAttributeValues(ctx context.Context, attribute_id string, state string) ([]*attributes.Value, error) { + sql, args, err := listAttributeValuesSql(attribute_id, state) rows, err := c.query(ctx, sql, args, err) if err != nil { return nil, err diff --git a/internal/db/attributes.go b/internal/db/attributes.go index 385bfb7207..733b0f57c8 100644 --- a/internal/db/attributes.go +++ b/internal/db/attributes.go @@ -204,14 +204,15 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) { // CRUD operations /// -func listAllAttributesSql() (string, []interface{}, error) { +func listAllAttributesSql(state string) (string, []interface{}, error) { return attributesSelect(). + Where(sq.Eq{tableField(AttributeTable, "state"): state}). From(AttributeTable). ToSql() } -func (c Client) ListAllAttributes(ctx context.Context) ([]*attributes.Attribute, error) { - sql, args, err := listAllAttributesSql() +func (c Client) ListAllAttributes(ctx context.Context, state string) ([]*attributes.Attribute, error) { + sql, args, err := listAllAttributesSql(state) rows, err := c.query(ctx, sql, args, err) if err != nil { return nil, err diff --git a/internal/db/db.go b/internal/db/db.go index c09667c27b..1c2ed9bada 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -65,6 +65,12 @@ func (t Table) Field(field string) string { return t.Name() + "." + field } +var ( + StateInactive = "INACTIVE" + StateActive = "ACTIVE" + StateUnspecified = "UNSPECIFIED" +) + // We can rename this but wanted to get mocks working. type PgxIface interface { Acquire(ctx context.Context) (*pgxpool.Conn, error) diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go index c72ad9ceb8..e0cd140c92 100644 --- a/internal/db/namespaces.go +++ b/internal/db/namespaces.go @@ -35,18 +35,19 @@ func (c Client) GetNamespace(ctx context.Context, id string) (*namespaces.Namesp return namespace, nil } -func listNamespacesSql() (string, []interface{}, error) { +func listNamespacesSql(state string) (string, []interface{}, error) { t := Tables.Namespaces return newStatementBuilder(). Select(t.Field("id"), t.Field("name")). From(t.Name()). + Where(sq.Eq{t.Field("state"): state}). ToSql() } func (c Client) ListNamespaces(ctx context.Context) ([]*namespaces.Namespace, error) { namespacesList := []*namespaces.Namespace{} - sql, args, err := listNamespacesSql() + sql, args, err := listNamespacesSql(StateActive) if err != nil { return nil, err } @@ -108,23 +109,35 @@ func (c Client) UpdateNamespace(ctx context.Context, id string, name string) (*n return c.GetNamespace(ctx, id) } -func deleteNamespaceSql(id string) (string, []interface{}, error) { +func deleteNamespaceSql(id string, isSoftDelete bool) (string, []interface{}, error) { t := Tables.Namespaces + sb := newStatementBuilder() + + // TODO: soft-delete should cascade down + if isSoftDelete { + return sb. + Update(t.Name()). + Set("state", StateInactive). + Where(sq.Eq{t.Field("id"): id}). + Suffix("RETURNING \"id\""). + ToSql() + } + // TODO: handle delete cascade, dangerous deletion via special rpc, or "soft-delete" status change - return newStatementBuilder(). + return sb. Delete(t.Name()). Where(sq.Eq{t.Field("id"): id}). Suffix("RETURNING \"id\""). ToSql() } -func (c Client) DeleteNamespace(ctx context.Context, id string) (*namespaces.Namespace, error) { +func (c Client) DeleteNamespace(ctx context.Context, id string, isSoftDelete bool) (*namespaces.Namespace, error) { // get a namespace before deleting ns, err := c.GetNamespace(ctx, id) if err != nil { return nil, err } - sql, args, err := deleteNamespaceSql(id) + sql, args, err := deleteNamespaceSql(id, isSoftDelete) if e := c.exec(ctx, sql, args, err); e != nil { return nil, WrapIfKnownInvalidQueryErr(e) From b6e71ef4fe6c6dcee85189e933555e3a070ccd3e Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Mon, 12 Feb 2024 18:16:15 -0500 Subject: [PATCH 08/28] prove out triggers working as expected in update cascade from namespaces --- integration/attribute_values_test.go | 2 +- integration/attributes_test.go | 2 +- integration/namespaces_test.go | 133 +++++++++++++++++++++++++-- services/namespaces/namespaces.go | 7 +- 4 files changed, 129 insertions(+), 15 deletions(-) diff --git a/integration/attribute_values_test.go b/integration/attribute_values_test.go index c09464ae2a..7e606d5c39 100644 --- a/integration/attribute_values_test.go +++ b/integration/attribute_values_test.go @@ -43,7 +43,7 @@ func (s *AttributeValuesSuite) TearDownSuite() { func (s *AttributeValuesSuite) Test_ListAttributeValues() { attrId := fixtures.GetAttributeValueKey("example.com/attr/attr1/value/value1").AttributeDefinitionId - list, err := s.db.Client.ListAttributeValues(s.ctx, attrId) + list, err := s.db.Client.ListAttributeValues(s.ctx, attrId, db.StateActive) assert.Nil(s.T(), err) assert.NotNil(s.T(), list) diff --git a/integration/attributes_test.go b/integration/attributes_test.go index 102aad7bf6..51db9b717d 100644 --- a/integration/attributes_test.go +++ b/integration/attributes_test.go @@ -185,7 +185,7 @@ func (s *AttributesSuite) Test_GetAttribute_WithInvalidIdFails() { func (s *AttributesSuite) Test_ListAttribute() { fixtures := getAttributeFixtures() - list, err := s.db.Client.ListAllAttributes(s.ctx) + list, err := s.db.Client.ListAllAttributes(s.ctx, db.StateActive) assert.Nil(s.T(), err) assert.NotNil(s.T(), list) diff --git a/integration/namespaces_test.go b/integration/namespaces_test.go index 8071b6dae2..4fc11f5e01 100644 --- a/integration/namespaces_test.go +++ b/integration/namespaces_test.go @@ -8,6 +8,7 @@ import ( "testing" "github.com/opentdf/opentdf-v2-poc/internal/db" + "github.com/opentdf/opentdf-v2-poc/sdk/attributes" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" ) @@ -36,7 +37,7 @@ func (s *NamespacesSuite) TearDownSuite() { s.f.TearDown() } -func getNamespaceFixtures() []FixtureDataNamespace { +func getActiveNamespaceFixtures() []FixtureDataNamespace { return []FixtureDataNamespace{ fixtures.GetNamespaceKey("example.com"), fixtures.GetNamespaceKey("example.net"), @@ -45,7 +46,7 @@ func getNamespaceFixtures() []FixtureDataNamespace { } func (s *NamespacesSuite) Test_CreateNamespace() { - testData := getNamespaceFixtures() + testData := getActiveNamespaceFixtures() for _, ns := range testData { ns.Name = strings.Replace(ns.Name, "example", "test", 1) @@ -63,7 +64,7 @@ func (s *NamespacesSuite) Test_CreateNamespace() { } func (s *NamespacesSuite) Test_GetNamespace() { - testData := getNamespaceFixtures() + testData := getActiveNamespaceFixtures() for _, test := range testData { gotNamespace, err := s.db.Client.GetNamespace(s.ctx, test.Id) @@ -79,6 +80,28 @@ func (s *NamespacesSuite) Test_GetNamespace() { assert.ErrorIs(s.T(), err, db.ErrNotFound) } +func (s *NamespacesSuite) Test_GetNamespace_UnspecifiedState_Succeeds() { + unspecified := fixtures.GetNamespaceKey("unspecified_state") + // Ensure our fixtures matches expected string enum + assert.Equal(s.T(), unspecified.State, db.StateUnspecified) + + got, err := s.db.Client.GetNamespace(s.ctx, unspecified.Id) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), got) + assert.Equal(s.T(), unspecified.Name, got.Name) +} + +func (s *NamespacesSuite) Test_GetNamespace_InactiveState_Succeeds() { + inactive := fixtures.GetNamespaceKey("inactive_state") + // Ensure our fixtures matches expected string enum + assert.Equal(s.T(), inactive.State, db.StateInactive) + + got, err := s.db.Client.GetNamespace(s.ctx, inactive.Id) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), got) + assert.Equal(s.T(), inactive.Name, got.Name) +} + func (s *NamespacesSuite) Test_GetNamespace_DoesNotExist_ShouldFail() { ns, err := s.db.Client.GetNamespace(s.ctx, nonExistentNamespaceId) assert.NotNil(s.T(), err) @@ -87,7 +110,7 @@ func (s *NamespacesSuite) Test_GetNamespace_DoesNotExist_ShouldFail() { } func (s *NamespacesSuite) Test_ListNamespaces() { - testData := getNamespaceFixtures() + testData := getActiveNamespaceFixtures() gotNamespaces, err := s.db.Client.ListNamespaces(s.ctx) assert.Nil(s.T(), err) @@ -96,7 +119,7 @@ func (s *NamespacesSuite) Test_ListNamespaces() { } func (s *NamespacesSuite) Test_UpdateNamespace() { - testData := getNamespaceFixtures() + testData := getActiveNamespaceFixtures() for i, ns := range testData { updatedName := fmt.Sprintf("%s-updated", ns.Name) @@ -126,12 +149,13 @@ func (s *NamespacesSuite) Test_UpdateNamespace_DoesNotExist_ShouldFail() { assert.Nil(s.T(), ns) } -func (s *NamespacesSuite) Test_DeleteNamespace() { - testData := getNamespaceFixtures() +func (s *NamespacesSuite) Test_DeleteNamespace_HardDelete() { + testData := getActiveNamespaceFixtures() + isSoftDelete := false // Deletion should fail when the namespace is referenced as FK in attribute(s) for _, ns := range testData { - deleted, err := s.db.Client.DeleteNamespace(s.ctx, ns.Id) + deleted, err := s.db.Client.DeleteNamespace(s.ctx, ns.Id, isSoftDelete) assert.NotNil(s.T(), err) assert.ErrorIs(s.T(), err, db.ErrForeignKeyViolation) assert.Nil(s.T(), deleted) @@ -142,7 +166,7 @@ func (s *NamespacesSuite) Test_DeleteNamespace() { assert.Nil(s.T(), err) assert.NotEqual(s.T(), "", newNamespaceId) - deleted, err := s.db.Client.DeleteNamespace(s.ctx, newNamespaceId) + deleted, err := s.db.Client.DeleteNamespace(s.ctx, newNamespaceId, isSoftDelete) assert.Nil(s.T(), err) assert.NotNil(s.T(), deleted) @@ -156,11 +180,100 @@ func (s *NamespacesSuite) Test_DeleteNamespace() { // Deleted namespace should not be found on Get _, err = s.db.Client.GetNamespace(s.ctx, newNamespaceId) + fmt.Println(err) assert.NotNil(s.T(), err) } +func (s *NamespacesSuite) Test_DeleteNamespace_SoftDelete() { + isSoftDelete := true + + id, err := s.db.Client.CreateNamespace(s.ctx, "testing-soft-delete-namespace.com") + assert.Nil(s.T(), err) + assert.NotEqual(s.T(), "", id) + + deleted, err := s.db.Client.DeleteNamespace(s.ctx, id, isSoftDelete) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), deleted) + + // Deleted namespace should not be found on List + gotNamespaces, err := s.db.Client.ListNamespaces(s.ctx) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotNamespaces) + for _, ns := range gotNamespaces { + assert.NotEqual(s.T(), id, ns.Id) + } + + // Deleted namespace should still be found on Get + gotNamespace, err := s.db.Client.GetNamespace(s.ctx, id) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotNamespace) + assert.Equal(s.T(), id, gotNamespace.Id) +} + +// TODO: update these tests to use GETs (not LISTs) and assert on the state once provided in protos/struct types +func (s *NamespacesSuite) Test_SoftDeleteNamespace_Cascades_ToAttributesAndValues() { + // create a namespace + nsId, err := s.db.Client.CreateNamespace(s.ctx, "cascading-soft-delete-namespace.com") + assert.Nil(s.T(), err) + assert.NotEqual(s.T(), "", nsId) + + // add an attribute under that namespaces + attr := &attributes.AttributeCreateUpdate{ + Name: "test__cascading-soft-delete-attribute", + NamespaceId: nsId, + Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, + } + createdAttr, err := s.db.Client.CreateAttribute(s.ctx, attr) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), createdAttr) + + // add a value under that attribute + val := &attributes.ValueCreateUpdate{ + Value: "test__cascading-soft-delete-value", + } + createdVal, err := s.db.Client.CreateAttributeValue(s.ctx, createdAttr.Id, val) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), createdVal) + + // soft delete the namespace + deletedNs, err := s.db.Client.DeleteNamespace(s.ctx, nsId, true) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), deletedNs) + + // ensure the namespace is not found in LIST + listedNamespaces, err := s.db.Client.ListNamespaces(s.ctx) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedNamespaces) + for _, ns := range listedNamespaces { + assert.NotEqual(s.T(), nsId, ns.Id) + } + + // ensure the attribute is not found in LIST + listedAttrs, err := s.db.Client.ListAllAttributes(s.ctx, db.StateActive) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedAttrs) + for _, a := range listedAttrs { + assert.NotEqual(s.T(), createdAttr.Id, a.Id) + assert.NotEqual(s.T(), nsId, a.Namespace.Id) + } + + // ensure the value is not found in LIST + listedVals, err := s.db.Client.ListAttributeValues(s.ctx, createdAttr.Id, db.StateActive) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedVals) + fmt.Println("listedVals:", listedVals) + + // TODO: figure out why this isn't working + assert.Equal(s.T(), 0, len(listedVals)) +} + func (s *NamespacesSuite) Test_DeleteNamespace_DoesNotExist_ShouldFail() { - ns, err := s.db.Client.DeleteNamespace(s.ctx, nonExistentNamespaceId) + ns, err := s.db.Client.DeleteNamespace(s.ctx, nonExistentNamespaceId, true) + assert.NotNil(s.T(), err) + assert.ErrorIs(s.T(), err, db.ErrNotFound) + assert.Nil(s.T(), ns) + + ns, err = s.db.Client.DeleteNamespace(s.ctx, nonExistentNamespaceId, false) assert.NotNil(s.T(), err) assert.ErrorIs(s.T(), err, db.ErrNotFound) assert.Nil(s.T(), ns) diff --git a/services/namespaces/namespaces.go b/services/namespaces/namespaces.go index 2c79a42015..7d423fbd2d 100644 --- a/services/namespaces/namespaces.go +++ b/services/namespaces/namespaces.go @@ -95,13 +95,14 @@ func (ns NamespacesService) UpdateNamespace(ctx context.Context, req *namespaces } func (ns NamespacesService) DeleteNamespace(ctx context.Context, req *namespaces.DeleteNamespaceRequest) (*namespaces.DeleteNamespaceResponse, error) { - slog.Debug("deleting namespace", slog.String("id", req.Id)) + slog.Debug("soft-deleting namespace", slog.String("id", req.Id)) rsp := &namespaces.DeleteNamespaceResponse{} + isSoftDelete := true - if _, err := ns.dbClient.DeleteNamespace(ctx, req.Id); err != nil { + if _, err := ns.dbClient.DeleteNamespace(ctx, req.Id, isSoftDelete); err != nil { return nil, services.HandleError(err, services.ErrDeletionFailed, slog.String("id", req.Id)) } - slog.Debug("deleted namespace", slog.String("id", req.Id)) + slog.Debug("soft-deleted namespace", slog.String("id", req.Id)) return rsp, nil } From 312cd405b868e9510b578c1e86973956fe6533f3 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Mon, 12 Feb 2024 18:17:35 -0500 Subject: [PATCH 09/28] demonstrate it can still be found when inactive --- integration/namespaces_test.go | 24 +++++++++++++++++------- internal/db/namespaces.go | 4 ++-- 2 files changed, 19 insertions(+), 9 deletions(-) diff --git a/integration/namespaces_test.go b/integration/namespaces_test.go index 4fc11f5e01..68d58f0d9d 100644 --- a/integration/namespaces_test.go +++ b/integration/namespaces_test.go @@ -112,7 +112,7 @@ func (s *NamespacesSuite) Test_GetNamespace_DoesNotExist_ShouldFail() { func (s *NamespacesSuite) Test_ListNamespaces() { testData := getActiveNamespaceFixtures() - gotNamespaces, err := s.db.Client.ListNamespaces(s.ctx) + gotNamespaces, err := s.db.Client.ListNamespaces(s.ctx, db.StateActive) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespaces) assert.GreaterOrEqual(s.T(), len(gotNamespaces), len(testData)) @@ -171,7 +171,7 @@ func (s *NamespacesSuite) Test_DeleteNamespace_HardDelete() { assert.NotNil(s.T(), deleted) // Deleted namespace should not be found on List - gotNamespaces, err := s.db.Client.ListNamespaces(s.ctx) + gotNamespaces, err := s.db.Client.ListNamespaces(s.ctx, db.StateActive) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespaces) for _, ns := range gotNamespaces { @@ -196,7 +196,7 @@ func (s *NamespacesSuite) Test_DeleteNamespace_SoftDelete() { assert.NotNil(s.T(), deleted) // Deleted namespace should not be found on List - gotNamespaces, err := s.db.Client.ListNamespaces(s.ctx) + gotNamespaces, err := s.db.Client.ListNamespaces(s.ctx, db.StateActive) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespaces) for _, ns := range gotNamespaces { @@ -241,7 +241,7 @@ func (s *NamespacesSuite) Test_SoftDeleteNamespace_Cascades_ToAttributesAndValue assert.NotNil(s.T(), deletedNs) // ensure the namespace is not found in LIST - listedNamespaces, err := s.db.Client.ListNamespaces(s.ctx) + listedNamespaces, err := s.db.Client.ListNamespaces(s.ctx, db.StateActive) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedNamespaces) for _, ns := range listedNamespaces { @@ -261,10 +261,20 @@ func (s *NamespacesSuite) Test_SoftDeleteNamespace_Cascades_ToAttributesAndValue listedVals, err := s.db.Client.ListAttributeValues(s.ctx, createdAttr.Id, db.StateActive) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedVals) - fmt.Println("listedVals:", listedVals) - - // TODO: figure out why this isn't working assert.Equal(s.T(), 0, len(listedVals)) + + // ensure the namespaces is still found when filtering for inactive state + listedNamespaces, err = s.db.Client.ListNamespaces(s.ctx, db.StateInactive) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedNamespaces) + found := false + for _, ns := range listedNamespaces { + if nsId == ns.Id { + found = true + break + } + } + assert.True(s.T(), found) } func (s *NamespacesSuite) Test_DeleteNamespace_DoesNotExist_ShouldFail() { diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go index e0cd140c92..fe8d9fb1ea 100644 --- a/internal/db/namespaces.go +++ b/internal/db/namespaces.go @@ -44,10 +44,10 @@ func listNamespacesSql(state string) (string, []interface{}, error) { ToSql() } -func (c Client) ListNamespaces(ctx context.Context) ([]*namespaces.Namespace, error) { +func (c Client) ListNamespaces(ctx context.Context, state string) ([]*namespaces.Namespace, error) { namespacesList := []*namespaces.Namespace{} - sql, args, err := listNamespacesSql(StateActive) + sql, args, err := listNamespacesSql(state) if err != nil { return nil, err } From 091bd29bf654b73fe4ccb2d97333288d1dd1e144 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Wed, 14 Feb 2024 15:33:37 -0500 Subject: [PATCH 10/28] add state enum to namespaces, attributes, attribute values protos and rename delete to deactivate which is its current purpose --- docs/grpc/index.html | 3626 ++++++++++------- .../attributes/attributes.swagger.json | 839 ++++ .../authorization/authorization.swagger.json | 312 ++ docs/openapi/common/common.swagger.json | 46 + .../key_access_server_registry.swagger.json | 343 ++ .../namespaces/namespaces.swagger.json | 280 ++ .../resource_mapping.swagger.json | 414 ++ .../subject_mapping.swagger.json | 435 ++ proto/attributes/attributes.proto | 205 +- proto/common/common.proto | 12 + proto/namespaces/namespaces.proto | 120 +- sdkjava/com/attributes/Attribute.java | 122 + .../com/attributes/AttributeOrBuilder.java | 19 + sdkjava/com/attributes/AttributesProto.java | 359 +- .../DeactivateAttributeRequest.java | 542 +++ .../DeactivateAttributeRequestOrBuilder.java | 22 + .../DeactivateAttributeResponse.java | 599 +++ .../DeactivateAttributeResponseOrBuilder.java | 25 + .../DeactivateAttributeValueRequest.java | 542 +++ ...ctivateAttributeValueRequestOrBuilder.java | 22 + .../DeactivateAttributeValueResponse.java | 599 +++ ...tivateAttributeValueResponseOrBuilder.java | 25 + .../ListAttributeValuesRequest.java | 122 + .../ListAttributeValuesRequestOrBuilder.java | 19 + .../com/attributes/ListAttributesRequest.java | 129 + .../ListAttributesRequestOrBuilder.java | 19 + sdkjava/com/attributes/Value.java | 122 + sdkjava/com/attributes/ValueOrBuilder.java | 19 + sdkjava/com/common/CommonProto.java | 13 +- sdkjava/com/common/StateTypeEnum.java | 136 + .../DeactivateNamespaceRequest.java | 542 +++ .../DeactivateNamespaceRequestOrBuilder.java | 22 + .../DeactivateNamespaceResponse.java | 399 ++ .../DeactivateNamespaceResponseOrBuilder.java | 10 + .../com/namespaces/ListNamespacesRequest.java | 129 + .../ListNamespacesRequestOrBuilder.java | 19 + sdkjava/com/namespaces/Namespace.java | 146 +- .../com/namespaces/NamespaceOrBuilder.java | 23 +- sdkjava/com/namespaces/NamespacesProto.java | 129 +- 39 files changed, 9625 insertions(+), 1881 deletions(-) create mode 100644 docs/openapi/attributes/attributes.swagger.json create mode 100644 docs/openapi/authorization/authorization.swagger.json create mode 100644 docs/openapi/common/common.swagger.json create mode 100644 docs/openapi/kasregistry/key_access_server_registry.swagger.json create mode 100644 docs/openapi/namespaces/namespaces.swagger.json create mode 100644 docs/openapi/resourcemapping/resource_mapping.swagger.json create mode 100644 docs/openapi/subjectmapping/subject_mapping.swagger.json create mode 100644 sdkjava/com/attributes/DeactivateAttributeRequest.java create mode 100644 sdkjava/com/attributes/DeactivateAttributeRequestOrBuilder.java create mode 100644 sdkjava/com/attributes/DeactivateAttributeResponse.java create mode 100644 sdkjava/com/attributes/DeactivateAttributeResponseOrBuilder.java create mode 100644 sdkjava/com/attributes/DeactivateAttributeValueRequest.java create mode 100644 sdkjava/com/attributes/DeactivateAttributeValueRequestOrBuilder.java create mode 100644 sdkjava/com/attributes/DeactivateAttributeValueResponse.java create mode 100644 sdkjava/com/attributes/DeactivateAttributeValueResponseOrBuilder.java create mode 100644 sdkjava/com/common/StateTypeEnum.java create mode 100644 sdkjava/com/namespaces/DeactivateNamespaceRequest.java create mode 100644 sdkjava/com/namespaces/DeactivateNamespaceRequestOrBuilder.java create mode 100644 sdkjava/com/namespaces/DeactivateNamespaceResponse.java create mode 100644 sdkjava/com/namespaces/DeactivateNamespaceResponseOrBuilder.java diff --git a/docs/grpc/index.html b/docs/grpc/index.html index 08e2211d92..83d84e8872 100644 --- a/docs/grpc/index.html +++ b/docs/grpc/index.html @@ -179,32 +179,24 @@

Table of Contents

  • - MResourceDependency + MMetadata
  • - MResourceDescriptor + MMetadata.LabelsEntry
  • - MResourceDescriptor.LabelsEntry + MMetadataMutable
  • - MResourceSelector -
  • - -
  • - MResourceSelector.LabelSelector -
  • - -
  • - MResourceSelector.LabelSelector.LabelsEntry + MMetadataMutable.LabelsEntry
  • - EPolicyResourceType + EStateTypeEnum
  • @@ -214,122 +206,125 @@

    Table of Contents

  • - attributes/attributes.proto + kasregistry/key_access_server_registry.proto +
  • + + +
  • + namespaces/namespaces.proto + @@ -337,158 +332,154 @@

    Table of Contents

  • - acre/acre.proto + attributes/attributes.proto @@ -496,62 +487,70 @@

    Table of Contents

  • - acse/acse.proto + authorization/authorization.proto @@ -559,70 +558,62 @@

    Table of Contents

  • - authorization/authorization.proto + resourcemapping/resource_mapping.proto @@ -630,70 +621,66 @@

    Table of Contents

  • - keyaccessgrants/key_access_grants.proto + subjectmapping/subject_mapping.proto @@ -711,45 +698,7 @@

    common/common.proto

    Top

    -

    ResourceDependency

    -

    Define a resource dependency

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    namespacestring

    namespace of referenced resource

    versionstring

    version of reference resource

    typePolicyResourceType

    type of dependency

    - - - - - -

    ResourceDescriptor

    +

    Metadata

    Struct to uniquely identify a resource with optional additional metadata

    @@ -760,55 +709,24 @@

    ResourceDescriptor

    - type - PolicyResourceType - -

    - - - - id - int32 - -

    unique resource identifier

    - - - - version - int32 - -

    resource version

    - - - - name - string - -

    resource name

    - - - - namespace - string + created_at + google.protobuf.Timestamp -

    resource namespace; used to partition resources, support by namespace AuthN and enable federation

    +

    created_at set by server (entity who created will recorded in an audit event)

    - fqn - string + updated_at + google.protobuf.Timestamp -

    optional fully qualified name of the resource. FQN is used to support direct references and to eliminate the need -for clients to compose an FQN at run time. - -the fqn may be specific to the resource type.

    +

    updated_at set by server (entity who updated will recorded in an audit event)

    labels - ResourceDescriptor.LabelsEntry + Metadata.LabelsEntry repeated -

    optional short description / label

    +

    optional short description

    @@ -818,13 +736,6 @@

    ResourceDescriptor

    optional long description

    - - dependencies - ResourceDependency - repeated -

    optional list of resource dependencies

    - - @@ -832,7 +743,7 @@

    ResourceDescriptor

    -

    ResourceDescriptor.LabelsEntry

    +

    Metadata.LabelsEntry

    @@ -863,8 +774,8 @@

    ResourceDescriptor.LabelsEntryResourceSelector

    -

    Define a resource selector

    +

    MetadataMutable

    +

    @@ -874,55 +785,17 @@

    ResourceSelector

    - - - - - - - - - - - + + + + - + - - - - - - - - - - - -
    namespacestring

    namespace of referenced resource

    versionint32

    version of reference resource

    labelsMetadataMutable.LabelsEntryrepeated

    optional short description

    namedescription string

    name of referenced resource

    label_selectorResourceSelector.LabelSelector

    labels to match a against a resource

    - - - - - -

    ResourceSelector.LabelSelector

    -

    Define a label selector

    - - - - - - - - - - - - - + @@ -932,7 +805,7 @@

    ResourceSelector.LabelSelectorResourceSelector.LabelSelector.LabelsEntry

    +

    MetadataMutable.LabelsEntry

    @@ -965,8 +838,8 @@

    ResourceSelector.Labe -

    PolicyResourceType

    -

    +

    StateTypeEnum

    +

    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

    FieldTypeLabelDescription
    labelsResourceSelector.LabelSelector.LabelsEntryrepeated

    labels to match a against a resource

    optional long description

    @@ -974,65 +847,29 @@

    PolicyResourceType

    - + - + - + - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    POLICY_RESOURCE_TYPE_UNSPECIFIEDSTATE_TYPE_ENUM_UNSPECIFIED 0

    POLICY_RESOURCE_TYPE_RESOURCE_ENCODINGSTATE_TYPE_ENUM_ACTIVE 1

    POLICY_RESOURCE_TYPE_RESOURCE_ENCODING_SYNONYMSTATE_TYPE_ENUM_INACTIVE 2

    POLICY_RESOURCE_TYPE_RESOURCE_ENCODING_MAPPINGSTATE_TYPE_ENUM_ANY 3

    POLICY_RESOURCE_TYPE_RESOURCE_ENCODING_GROUP4

    POLICY_RESOURCE_TYPE_SUBJECT_ENCODING_MAPPING5

    POLICY_RESOURCE_TYPE_KEY_ACCESS6

    POLICY_RESOURCE_TYPE_ATTRIBUTE_DEFINITION7

    POLICY_RESOURCE_TYPE_ATTRIBUTE_GROUP8

    POLICY_RESOURCE_TYPE_KEY_ACCESS_GRANTS9

    @@ -1043,13 +880,13 @@

    PolicyResourceType

    -

    attributes/attributes.proto

    Top +

    kasregistry/key_access_server_registry.proto

    Top

    -

    AttributeDefinition

    -

    Attribute Definition

    +

    CreateKeyAccessServerRequest

    +

    @@ -1059,40 +896,12 @@

    AttributeDefinition

    - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    descriptorcommon.ResourceDescriptorkey_access_serverKeyAccessServerCreateUpdate

    namestring

    attribute name

    ruleAttributeDefinition.AttributeRuleType

    attribute rule enum

    valuesAttributeDefinitionValuerepeated

    possible values

    group_byAttributeDefinitionValuerepeated

    optional attribute group by filtering rules

    @@ -1100,8 +909,8 @@

    AttributeDefinition

    -

    AttributeDefinitionReference

    -

    Reference to an attribute value, one of descriptor or embedded value

    +

    CreateKeyAccessServerResponse

    +

    @@ -1111,15 +920,8 @@

    AttributeDefinitionReference

    - - - - - - - - - + + @@ -1131,8 +933,8 @@

    AttributeDefinitionReferenceAttributeDefinitionValue

    -

    Definition of a single attribute value

    +

    DeleteKeyAccessServerRequest

    +

    descriptorcommon.ResourceDescriptor

    definitionAttributeDefinitionkey_access_serverKeyAccessServer

    @@ -1142,26 +944,12 @@

    AttributeDefinitionValue

    - - - - - - - - + - - - - - - -
    descriptorcommon.ResourceDescriptor

    valueid string

    attribute_public_keystring

    TODO - optional lock down pub key format if needed. Per ATTR KEY?

    @@ -1169,8 +957,8 @@

    AttributeDefinitionValue

    -

    AttributeGroup

    -

    represent an attribute value as a group with other attribute values as members

    Example for Org1 FVEY:

    id: 1

    version: 1.0

    namespace: demo.com

    groupValue: http://demo.com/attr/relTo/FVEY

    members: [http://demo.com/attr/relTo/USA,http://demo.com/attr/relTo/GBR,...]

    +

    DeleteKeyAccessServerResponse

    +

    @@ -1180,23 +968,33 @@

    AttributeGroup

    - - + + - - - - - - + +
    descriptorcommon.ResourceDescriptorkey_access_serverKeyAccessServer

    group_valueAttributeValueReference

    + + + + + +

    GetKeyAccessServerRequest

    +

    + + + + + + + - - - + + + @@ -1207,8 +1005,8 @@

    AttributeGroup

    -

    AttributeSet

    -

    Just a set of attributes

    +

    GetKeyAccessServerResponse

    +

    FieldTypeLabelDescription
    member_valuesAttributeValueReferencerepeatedidstring

    @@ -1218,19 +1016,12 @@

    AttributeSet

    - - + + - - - - - - -
    descriptorcommon.ResourceDescriptorkey_access_serverKeyAccessServer

    definitionsAttributeDefinitionrepeated

    @@ -1238,8 +1029,8 @@

    AttributeSet

    -

    AttributeValueReference

    -

    Reference to an attribute value, one of descriptor or embedded value

    +

    KeyAccessServer

    +

    Descriptor for a KAS

    @@ -1249,15 +1040,29 @@

    AttributeValueReference

    - - + + - - + + + + + + + + + + + + + + + + @@ -1269,7 +1074,7 @@

    AttributeValueReference

    -

    CreateAttributeGroupRequest

    +

    KeyAccessServerCreateUpdate

    @@ -1280,8 +1085,22 @@

    CreateAttributeGroupRequest

    - - + + + + + + + + + + + + + + + + @@ -1293,14 +1112,14 @@

    CreateAttributeGroupRequest

    -

    CreateAttributeGroupResponse

    +

    ListKeyAccessServersRequest

    -

    CreateAttributeRequest

    +

    ListKeyAccessServersResponse

    @@ -1311,9 +1130,9 @@

    CreateAttributeRequest

    - - - + + + @@ -1324,14 +1143,38 @@

    CreateAttributeRequest

    -

    CreateAttributeResponse

    +

    PublicKey

    +
    descriptorcommon.ResourceDescriptoridstring

    attribute_valueAttributeDefinitionValuemetadatacommon.Metadata

    uristring

    Address of a KAS instance

    public_keyPublicKey

    groupAttributeGroupmetadatacommon.MetadataMutable

    Optional metadata for the attribute definition

    uristring

    Address of a KAS instance

    public_keyPublicKey

    definitionAttributeDefinitionkey_access_serversKeyAccessServerrepeated

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    remotestring

    kas public key url - optional since can also be retrieved via public key

    localstring

    public key - optional since can also be retrieved via url

    + + -

    DeleteAttributeGroupRequest

    +

    UpdateKeyAccessServerRequest

    @@ -1343,7 +1186,14 @@

    DeleteAttributeGroupRequest

    id - int32 + string + +

    + + + + key_access_server + KeyAccessServerCreateUpdate

    @@ -1355,14 +1205,7 @@

    DeleteAttributeGroupRequest

    -

    DeleteAttributeGroupResponse

    -

    - - - - - -

    DeleteAttributeRequest

    +

    UpdateKeyAccessServerResponse

    @@ -1373,8 +1216,8 @@

    DeleteAttributeRequest

    - id - int32 + key_access_server + KeyAccessServer

    @@ -1386,14 +1229,296 @@

    DeleteAttributeRequest

    -

    DeleteAttributeResponse

    + + + + + + +

    KeyAccessServerRegistryService

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Method NameRequest TypeResponse TypeDescription
    ListKeyAccessServersListKeyAccessServersRequestListKeyAccessServersResponse

    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==" +} +} +] +}

    GetKeyAccessServerGetKeyAccessServerRequestGetKeyAccessServerResponse

    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" +} +} +}

    CreateKeyAccessServerCreateKeyAccessServerRequestCreateKeyAccessServerResponse

    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" +} +} +}

    UpdateKeyAccessServerUpdateKeyAccessServerRequestUpdateKeyAccessServerResponse

    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" +} +} +}

    DeleteKeyAccessServerDeleteKeyAccessServerRequestDeleteKeyAccessServerResponse

    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" +} +} +}

    - + + +

    Methods with HTTP bindings

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Method NameMethodPatternBody
    ListKeyAccessServersGET/key-access-servers
    GetKeyAccessServerGET/key-access-servers/{id}
    CreateKeyAccessServerPOST/key-access-serverskey_access_server
    UpdateKeyAccessServerPUT/key-access-servers/{id}key_access_server
    DeleteKeyAccessServerDELETE/key-access-servers/{id}
    + + + +
    +

    namespaces/namespaces.proto

    Top +
    +

    + -

    GetAttributeGroupRequest

    +

    CreateNamespaceRequest

    @@ -1404,8 +1529,8 @@

    GetAttributeGroupRequest

    - id - int32 + name + string

    @@ -1417,7 +1542,7 @@

    GetAttributeGroupRequest

    -

    GetAttributeGroupResponse

    +

    CreateNamespaceResponse

    @@ -1428,8 +1553,8 @@

    GetAttributeGroupResponse

    - group - AttributeGroup + namespace + Namespace

    @@ -1441,7 +1566,7 @@

    GetAttributeGroupResponse

    -

    GetAttributeRequest

    +

    DeactivateNamespaceRequest

    @@ -1453,7 +1578,7 @@

    GetAttributeRequest

    id - int32 + string

    @@ -1465,7 +1590,14 @@

    GetAttributeRequest

    -

    GetAttributeResponse

    +

    DeactivateNamespaceResponse

    +

    + + + + + +

    GetNamespaceRequest

    @@ -1476,8 +1608,8 @@

    GetAttributeResponse

    - definition - AttributeDefinition + id + string

    @@ -1489,7 +1621,7 @@

    GetAttributeResponse

    -

    ListAttributeGroupsRequest

    +

    GetNamespaceResponse

    @@ -1500,8 +1632,8 @@

    ListAttributeGroupsRequest

    - selector - common.ResourceSelector + namespace + Namespace

    @@ -1513,7 +1645,7 @@

    ListAttributeGroupsRequest

    -

    ListAttributeGroupsResponse

    +

    ListNamespacesRequest

    @@ -1524,10 +1656,10 @@

    ListAttributeGroupsResponse

    - groups - AttributeGroup - repeated -

    + state + common.StateTypeEnum + +

    ACTIVE by default when not specified

    @@ -1537,7 +1669,7 @@

    ListAttributeGroupsResponse

    -

    ListAttributesRequest

    +

    ListNamespacesResponse

    @@ -1548,9 +1680,9 @@

    ListAttributesRequest

    - selector - common.ResourceSelector - + namespaces + Namespace + repeated

    @@ -1561,7 +1693,7 @@

    ListAttributesRequest

    -

    ListAttributesResponse

    +

    Namespace

    @@ -1572,10 +1704,24 @@

    ListAttributesResponse

    - definitions - AttributeDefinition - repeated -

    + id + string + +

    generated uuid in database

    + + + + name + string + +

    used to partition Attribute Definitions, support by namespace AuthN and enable federation

    + + + + state + common.StateTypeEnum + +

    active by default until explicitly deactivated

    @@ -1585,7 +1731,7 @@

    ListAttributesResponse

    -

    UpdateAttributeGroupRequest

    +

    UpdateNamespaceRequest

    @@ -1597,14 +1743,14 @@

    UpdateAttributeGroupRequest

    id - int32 + string

    - group - AttributeGroup + name + string

    @@ -1616,14 +1762,7 @@

    UpdateAttributeGroupRequest

    -

    UpdateAttributeGroupResponse

    -

    - - - - - -

    UpdateAttributeRequest

    +

    UpdateNamespaceResponse

    @@ -1634,15 +1773,8 @@

    UpdateAttributeRequest

    - id - int32 - -

    - - - - definition - AttributeDefinition + namespace + Namespace

    @@ -1654,129 +1786,76 @@

    UpdateAttributeRequest

    -

    UpdateAttributeResponse

    -

    - + - -

    AttributeDefinition.AttributeRuleType

    +

    NamespaceService

    - + - - - + + + + - - - + + + + - - + + + + + + + + + + - - - - - - -
    NameNumberDescription
    Method NameRequest TypeResponse TypeDescription
    ATTRIBUTE_RULE_TYPE_UNSPECIFIED0

    GetNamespaceGetNamespaceRequestGetNamespaceResponse

    Request: +grpcurl -plaintext -d '{"id": "namespace-id"}' localhost:9000 namespaces.NamespaceService/GetNamespace +Response: +{ +"namespace": { +"id": "namespace-id", +"name": "namespace-name", +"state": "STATE_TYPE_ENUM_ACTIVE" +} +}

    ATTRIBUTE_RULE_TYPE_ALL_OF1

    ListNamespacesListNamespacesRequestListNamespacesResponse

    NOTE: ACTIVE state by default, INACTIVE or ANY when specified +Request: +grpcurl -plaintext localhost:9000 namespaces.NamespaceService/ListNamespaces +Response: +{ +"namespaces": [ +{ +"id": "namespace-id", +"name": "namespace-name", +"state": "STATE_TYPE_ENUM_ACTIVE" +} +] +}

    ATTRIBUTE_RULE_TYPE_ANY_OF2CreateNamespaceCreateNamespaceRequestCreateNamespaceResponse

    Request: +grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace +Response: +{ "namespace": { "id": "namespace-id" } }

    UpdateNamespaceUpdateNamespaceRequestUpdateNamespaceResponse

    ATTRIBUTE_RULE_TYPE_HIERARCHICAL3

    - - - - - -

    AttributesService

    -

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + @@ -1801,29 +1880,9 @@

    Methods with HTTP bindings

    - - - - - - - - - - - - - - - - - - - - - + - + @@ -1831,9 +1890,9 @@

    Methods with HTTP bindings

    - + - + @@ -1841,49 +1900,19 @@

    Methods with HTTP bindings

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - - + + - - - + + + @@ -1891,9 +1920,9 @@

    Methods with HTTP bindings

    - + - + @@ -1905,12 +1934,12 @@

    Methods with HTTP bindings

    -

    acre/acre.proto

    Top +

    attributes/attributes.proto

    Top

    -

    CreateResourceGroupRequest

    +

    AssignKeyAccessServerToAttributeRequest

    @@ -1921,8 +1950,8 @@

    CreateResourceGroupRequest

    - - + + @@ -1934,14 +1963,7 @@

    CreateResourceGroupRequest

    -

    CreateResourceGroupResponse

    -

    - - - - - -

    CreateResourceMappingRequest

    +

    AssignKeyAccessServerToAttributeResponse

    @@ -1952,8 +1974,8 @@

    CreateResourceMappingRequest

    - - + + @@ -1965,14 +1987,7 @@

    CreateResourceMappingRequest

    -

    CreateResourceMappingResponse

    -

    - - - - - -

    CreateResourceSynonymRequest

    +

    AssignKeyAccessServerToValueRequest

    @@ -1983,8 +1998,8 @@

    CreateResourceSynonymRequest

    - - + + @@ -1996,14 +2011,7 @@

    CreateResourceSynonymRequest

    -

    CreateResourceSynonymResponse

    -

    - - - - - -

    DeleteResourceGroupRequest

    +

    AssignKeyAccessServerToValueResponse

    @@ -2014,8 +2022,8 @@

    DeleteResourceGroupRequest

    - - + + @@ -2027,14 +2035,7 @@

    DeleteResourceGroupRequest

    -

    DeleteResourceGroupResponse

    -

    - - - - - -

    DeleteResourceMappingRequest

    +

    Attribute

    @@ -2046,11 +2047,60 @@

    DeleteResourceMappingRequest

    - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Method NameRequest TypeResponse TypeDescription
    GetAttributeGetAttributeRequestGetAttributeResponse

    GetAttributeGroupGetAttributeGroupRequestGetAttributeGroupResponse

    ListAttributesListAttributesRequestListAttributesResponse

    ListAttributeGroupsListAttributeGroupsRequestListAttributeGroupsResponse

    CreateAttributeCreateAttributeRequestCreateAttributeResponse

    CreateAttributeGroupCreateAttributeGroupRequestCreateAttributeGroupResponse

    UpdateAttributeUpdateAttributeRequestUpdateAttributeResponse

    UpdateAttributeGroupUpdateAttributeGroupRequestUpdateAttributeGroupResponse

    DeleteAttributeDeleteAttributeRequestDeleteAttributeResponse

    DeleteAttributeGroupDeleteAttributeGroupRequestDeleteAttributeGroupResponseDeactivateNamespaceDeactivateNamespaceRequestDeactivateNamespaceResponse

    GetAttributeGET/v1/attribute/definitions/{id}
    GetAttributeGroupGET/v1/attribute/groups/{id}
    ListAttributesGetNamespace GET/v1/attribute/definitions/attributes/namespaces/{id}
    ListAttributeGroupsListNamespaces GET/v1/attribute/groups/attributes/namespaces
    CreateAttributePOST/v1/attributes/definitionsdefinition
    CreateAttributeGroupPOST/v1/attributes/groupsgroup
    UpdateAttributePOST/v1/attribute/definitions/{id}definition
    UpdateAttributeGroupCreateNamespace POST/v1/attribute/groups/{id}group/attributes/namespaces
    DeleteAttributeDELETE/v1/attribute/definitions/{id}UpdateNamespacePUT/attributes/namespaces/{id}
    DeleteAttributeGroupDeactivateNamespace DELETE/v1/attribute/groups/{id}/attributes/namespaces/{id}
    groupResourceGroupattribute_key_access_serverAttributeKeyAccessServer

    mappingResourceMappingattribute_key_access_serverAttributeKeyAccessServer

    synonymSynonymsvalue_key_access_serverValueKeyAccessServer

    idint32value_key_access_serverValueKeyAccessServer

    idint32string

    metadatacommon.Metadata

    Optional metadata for the attribute definition

    namespacenamespaces.Namespace

    namespace of the attribute

    namestring

    attribute name

    ruleAttributeRuleTypeEnum

    attribute rule enum

    valuesValuerepeated

    grantskasregistry.KeyAccessServerrepeated

    statecommon.StateTypeEnum

    active by default until explicitly deactivated

    @@ -2058,14 +2108,7 @@

    DeleteResourceMappingRequest

    -

    DeleteResourceMappingResponse

    -

    - - - - - -

    DeleteResourceSynonymRequest

    +

    AttributeCreateUpdate

    @@ -2076,10 +2119,38 @@

    DeleteResourceSynonymRequest

    - id - int32 + metadata + common.MetadataMutable -

    +

    Optional metadata for the attribute definition

    + + + + namespace_id + string + +

    namespace of the attribute

    + + + + name + string + +

    attribute name

    + + + + rule + AttributeRuleTypeEnum + +

    attribute rule enum

    + + + + values + ValueCreateUpdate + repeated +

    optional

    @@ -2089,14 +2160,7 @@

    DeleteResourceSynonymRequest

    -

    DeleteResourceSynonymResponse

    -

    - - - - - -

    GetResourceGroupRequest

    +

    AttributeKeyAccessServer

    @@ -2107,8 +2171,15 @@

    GetResourceGroupRequest

    - id - int32 + attribute_id + string + +

    + + + + key_access_server_id + string

    @@ -2120,7 +2191,7 @@

    GetResourceGroupRequest

    -

    GetResourceGroupResponse

    +

    CreateAttributeRequest

    @@ -2131,8 +2202,8 @@

    GetResourceGroupResponse

    - group - ResourceGroup + attribute + AttributeCreateUpdate

    @@ -2144,7 +2215,7 @@

    GetResourceGroupResponse

    -

    GetResourceMappingRequest

    +

    CreateAttributeResponse

    @@ -2155,8 +2226,8 @@

    GetResourceMappingRequest

    - id - int32 + attribute + Attribute

    @@ -2168,7 +2239,7 @@

    GetResourceMappingRequest

    -

    GetResourceMappingResponse

    +

    CreateAttributeValueRequest

    @@ -2179,8 +2250,15 @@

    GetResourceMappingResponse

    - mapping - ResourceMapping + attribute_id + string + +

    + + + + value + ValueCreateUpdate

    @@ -2192,7 +2270,7 @@

    GetResourceMappingResponse

    -

    GetResourceSynonymRequest

    +

    CreateAttributeValueResponse

    @@ -2203,8 +2281,8 @@

    GetResourceSynonymRequest

    - id - int32 + value + Value

    @@ -2216,7 +2294,7 @@

    GetResourceSynonymRequest

    -

    GetResourceSynonymResponse

    +

    DeactivateAttributeRequest

    @@ -2227,8 +2305,8 @@

    GetResourceSynonymResponse

    - synonym - Synonyms + id + string

    @@ -2240,8 +2318,8 @@

    GetResourceSynonymResponse

    -

    ListResourceGroupsRequest

    -

    Resource Groups

    +

    DeactivateAttributeResponse

    +

    @@ -2251,8 +2329,8 @@

    ListResourceGroupsRequest

    - - + + @@ -2264,7 +2342,7 @@

    ListResourceGroupsRequest

    -

    ListResourceGroupsResponse

    +

    DeactivateAttributeValueRequest

    @@ -2275,9 +2353,9 @@

    ListResourceGroupsResponse

    - - - + + + @@ -2288,7 +2366,7 @@

    ListResourceGroupsResponse

    -

    ListResourceMappingsRequest

    +

    DeactivateAttributeValueResponse

    @@ -2299,8 +2377,8 @@

    ListResourceMappingsRequest

    - - + + @@ -2312,7 +2390,7 @@

    ListResourceMappingsRequest

    -

    ListResourceMappingsResponse

    +

    GetAttributeRequest

    @@ -2323,9 +2401,9 @@

    ListResourceMappingsResponse

    - - - + + + @@ -2336,7 +2414,7 @@

    ListResourceMappingsResponse

    -

    ListResourceSynonymsRequest

    +

    GetAttributeResponse

    @@ -2347,8 +2425,8 @@

    ListResourceSynonymsRequest

    - - + + @@ -2360,8 +2438,8 @@

    ListResourceSynonymsRequest

    -

    ListResourceSynonymsResponse

    -

    +

    GetAttributeValueRequest

    +

    Value RPC messages

    /

    selectorcommon.ResourceSelectorattributeAttribute

    groupsResourceGrouprepeatedidstring

    selectorcommon.ResourceSelectorvalueValue

    mappingsResourceMappingrepeatedidstring

    selectorcommon.ResourceSelectorattributeAttribute

    @@ -2371,9 +2449,9 @@

    ListResourceSynonymsResponse

    - - - + + + @@ -2384,7 +2462,7 @@

    ListResourceSynonymsResponse

    -

    ResourceEncodingRequestOptions

    +

    GetAttributeValueResponse

    @@ -2395,8 +2473,8 @@

    ResourceEncodingRequestOptions

    - - + + @@ -2408,8 +2486,8 @@

    ResourceEncodingRequestOptions

    -

    ResourceGroup

    -

    represents modeling an resource code/tag as a group . Use if not in the bounds of an attribute

    definition. Otherwise use attributes.AttributeGroup

    Example:

    value: NATO

    members: [USA, GBR, etc.]

    +

    ListAttributeValuesRequest

    +

    synonymsSynonymsrepeatedidstring

    descriptorcommon.ResourceDescriptorvalueValue

    @@ -2419,24 +2497,17 @@

    ResourceGroup

    - - + + - - + + - - - - - - - - + @@ -2446,8 +2517,8 @@

    ResourceGroup

    -

    ResourceMapping

    -

    Map one or more domain specific terms (synonyms) to an attribute value by reference.

    Example:

    attributeValueRef: ref http://demo.com/attr/Classification/value/Confidential

    synonymRef:

    terms: ["CONFIDENTIAL", "CONTROLLED UNCLASSIFIED", "OFFICIAL-SENSITIVE", "CUI", "C"]

    Example 2:

    attributeValueRef: ref to http://demo.com/attr/Classification/Confidential

    synonymRef:

    terms: ["OFFICIAL-SENSITIVE"]

    +

    ListAttributeValuesResponse

    +

    descriptorcommon.ResourceDescriptorattribute_idstring

    valuestringstatecommon.StateTypeEnum

    group value

    membersstringrepeated

    List of member values

    ACTIVE by default when not specified

    @@ -2457,24 +2528,34 @@

    ResourceMapping

    - - - + + + - - - - - - + +
    descriptorcommon.ResourceDescriptorvaluesValuerepeated

    attribute_value_refattributes.AttributeValueReference

    + + + + + +

    ListAttributesRequest

    +

    + + + + + + + - - + + - + @@ -2484,8 +2565,8 @@

    ResourceMapping

    -

    ResourceMappingRef

    -

    Reference to a ResourceMapping, one of descriptor or embedded value

    +

    ListAttributesResponse

    +

    FieldTypeLabelDescription
    synonym_refSynonymRefstatecommon.StateTypeEnum

    ACTIVE by default when not specified

    @@ -2495,15 +2576,32 @@

    ResourceMappingRef

    - - - + + + + +
    descriptorcommon.ResourceDescriptorattributesAttributerepeated

    + + + + + +

    RemoveKeyAccessServerFromAttributeRequest

    +

    + + + + + + + + - - + + @@ -2515,8 +2613,8 @@

    ResourceMappingRef

    -

    SynonymRef

    -

    Reference to a Synonyms, one of descriptor or embedded value

    +

    RemoveKeyAccessServerFromAttributeResponse

    +

    FieldTypeLabelDescription
    resource_mappingResourceMappingattribute_key_access_serverAttributeKeyAccessServer

    @@ -2526,15 +2624,32 @@

    SynonymRef

    - - + + + +
    descriptorcommon.ResourceDescriptorattribute_key_access_serverAttributeKeyAccessServer

    + + + + + +

    RemoveKeyAccessServerFromValueRequest

    +

    + + + + + + + + - - + + @@ -2546,8 +2661,8 @@

    SynonymRef

    -

    Synonyms

    -

    A modular set of terms that are the "same". Could be used across resource mappings

    +

    RemoveKeyAccessServerFromValueResponse

    +

    FieldTypeLabelDescription
    synonymsSynonymsvalue_key_access_serverValueKeyAccessServer

    @@ -2557,19 +2672,12 @@

    Synonyms

    - - + + - - - - - - -
    descriptorcommon.ResourceDescriptorvalue_key_access_serverValueKeyAccessServer

    termsstringrepeated

    @@ -2577,7 +2685,7 @@

    Synonyms

    -

    UpdateResourceGroupRequest

    +

    UpdateAttributeRequest

    @@ -2589,14 +2697,14 @@

    UpdateResourceGroupRequest

    id - int32 + string

    - group - ResourceGroup + attribute + AttributeCreateUpdate

    @@ -2608,14 +2716,31 @@

    UpdateResourceGroupRequest

    -

    UpdateResourceGroupResponse

    +

    UpdateAttributeResponse

    + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    attributeAttribute

    + + -

    UpdateResourceMappingRequest

    +

    UpdateAttributeValueRequest

    @@ -2625,16 +2750,23 @@

    UpdateResourceMappingRequest

    + + attribute_id + string + +

    + + id - int32 + string

    - mapping - ResourceMapping + value + ValueCreateUpdate

    @@ -2646,14 +2778,31 @@

    UpdateResourceMappingRequest

    -

    UpdateResourceMappingResponse

    +

    UpdateAttributeValueResponse

    + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    valueValue

    + + -

    UpdateResourceSynonymRequest

    +

    Value

    @@ -2665,18 +2814,53 @@

    UpdateResourceSynonymRequest

    id - int32 + string + +

    generated uuid in database

    + + + + metadata + common.Metadata + +

    + + + + attribute_id + string

    - synonym - Synonyms + value + string

    + + members + string + repeated +

    list of attribute values that this value is related to (attribute group)

    + + + + grants + kasregistry.KeyAccessServer + repeated +

    list of key access servers

    + + + + state + common.StateTypeEnum + +

    active by default until explicitly deactivated

    + + @@ -2684,130 +2868,394 @@

    UpdateResourceSynonymRequest

    -

    UpdateResourceSynonymResponse

    +

    ValueCreateUpdate

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    metadatacommon.MetadataMutable

    valuestring

    membersstringrepeated

    list of attribute values that this value is related to (attribute group)

    + + +

    ValueKeyAccessServer

    +

    - + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    value_idstring

    key_access_server_idstring

    + + + -

    ResourceEncodingService

    -

    +

    AttributeRuleTypeEnum

    +

    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

    - + - - - - + + + - - - + + - - - + + - - - + + + +
    Method NameRequest TypeResponse TypeDescription
    NameNumberDescription
    ListResourceMappingsListResourceMappingsRequestListResourceMappingsResponse

    Resource Mappings

    ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIFIED0

    GetResourceMappingGetResourceMappingRequestGetResourceMappingResponseATTRIBUTE_RULE_TYPE_ENUM_ALL_OF1

    CreateResourceMappingCreateResourceMappingRequestCreateResourceMappingResponseATTRIBUTE_RULE_TYPE_ENUM_ANY_OF2

    UpdateResourceMappingUpdateResourceMappingRequestUpdateResourceMappingResponseATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY3

    + + + + + +

    AttributesService

    +

    Attribute Service

    /

    + + + + + + - - - - + + + + - - - - + + + + - - - + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + - - - - + + + + - - - + + + - - - + + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2831,9 +3279,9 @@

    Methods with HTTP bindings

    - + - + @@ -2841,49 +3289,29 @@

    Methods with HTTP bindings

    - - - - - - - - - - - + - - + + - + - - + + - + - - - - - - - - - - - + @@ -2891,9 +3319,9 @@

    Methods with HTTP bindings

    - + - + @@ -2901,39 +3329,29 @@

    Methods with HTTP bindings

    - + - - + + - + - - + + - + - - - - - - - - - - - + @@ -2941,40 +3359,40 @@

    Methods with HTTP bindings

    - - - - + + + + - + - - + + - + - - + + - - - - + + + + @@ -2985,13 +3403,13 @@

    Methods with HTTP bindings

    -

    acse/acse.proto

    Top +

    authorization/authorization.proto

    Top

    -

    CreateSubjectMappingRequest

    -

    +

    Action

    +

    An action an entity can take

    Method NameRequest TypeResponse TypeDescription
    DeleteResourceMappingDeleteResourceMappingRequestDeleteResourceMappingResponse

    ListAttributesListAttributesRequestListAttributesResponse

    NOTE: ACTIVE state by default, INACTIVE or ANY when specified +Request: +grpcurl -plaintext localhost:9000 attributes.AttributesService/ListAttributes +OR (for inactive) +grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 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", +"state": "STATE_TYPE_ENUM_ACTIVE" +} +], +"state": "STATE_TYPE_ENUM_ACTIVE" +} +], +"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", +"state": "STATE_TYPE_ENUM_ACTIVE" +} +], +"state": "STATE_TYPE_ENUM_ACTIVE" +} +] +}

    ListResourceSynonymsListResourceSynonymsRequestListResourceSynonymsResponse

    Synonyms

    ListAttributeValuesListAttributeValuesRequestListAttributeValuesResponse

    List Values + +Request: +NOTE: ACTIVE state by default, INACTIVE or ANY when specified +grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 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 ... +} +], +"state": "STATE_TYPE_ENUM_INACTIVE" +} +] +}

    GetResourceSynonymGetResourceSynonymRequestGetResourceSynonymResponseGetAttributeGetAttributeRequestGetAttributeResponse

    CreateResourceSynonymCreateResourceSynonymRequestCreateResourceSynonymResponse

    CreateAttributeCreateAttributeRequestCreateAttributeResponse

    Create Attribute +Request: +grpcurl -plaintext -d '{"attribute": {"namespace_id": "namespace_id", "name": "attribute_name", "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"}}' localhost:9000 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" +} +}

    UpdateResourceSynonymUpdateResourceSynonymRequestUpdateResourceSynonymResponseUpdateAttributeUpdateAttributeRequestUpdateAttributeResponse

    DeleteResourceSynonymDeleteResourceSynonymRequestDeleteResourceSynonymResponseDeactivateAttributeDeactivateAttributeRequestDeactivateAttributeResponse

    ListResourceGroupsListResourceGroupsRequestListResourceGroupsResponse

    Resource Groups

    GetAttributeValueGetAttributeValueRequestGetAttributeValueResponse

    Attribute Value *

    GetResourceGroupGetResourceGroupRequestGetResourceGroupResponse

    CreateAttributeValueCreateAttributeValueRequestCreateAttributeValueResponse

    Create Attribute Value +Example: + grpcurl -plaintext -d '{"attribute_id": "attribute_id", "value": {"value": "value"}}' localhost:8080 attributes.AttributesService/CreateAttributeValue

    CreateResourceGroupCreateResourceGroupRequestCreateResourceGroupResponseUpdateAttributeValueUpdateAttributeValueRequestUpdateAttributeValueResponse

    UpdateResourceGroupUpdateResourceGroupRequestUpdateResourceGroupResponseDeactivateAttributeValueDeactivateAttributeValueRequestDeactivateAttributeValueResponse

    DeleteResourceGroupDeleteResourceGroupRequestDeleteResourceGroupResponse

    AssignKeyAccessServerToAttributeAssignKeyAccessServerToAttributeRequestAssignKeyAccessServerToAttributeResponse

    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 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" +}

    RemoveKeyAccessServerFromAttributeRemoveKeyAccessServerFromAttributeRequestRemoveKeyAccessServerFromAttributeResponse

    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 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" +}

    AssignKeyAccessServerToValueAssignKeyAccessServerToValueRequestAssignKeyAccessServerToValueResponse

    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 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" +}

    RemoveKeyAccessServerFromValueRemoveKeyAccessServerFromValueRequestRemoveKeyAccessServerFromValueResponse

    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 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

    ListResourceMappingsGetAttribute GET/v1/encoding/resource/mappings/attributes/{id}
    GetResourceMappingGET/v1/encoding/resource/mappings/{id}
    CreateResourceMappingCreateAttribute POST/v1/encoding/resource/mappingsmapping/attributesattribute
    UpdateResourceMappingUpdateAttribute POST/v1/encoding/resource/mappings/{id}mapping/attributes/{id}attribute
    DeleteResourceMappingDeactivateAttribute DELETE/v1/encoding/resource/mappings/{id}
    ListResourceSynonymsGET/v1/encoding/resource/synonyms/attributes/{id}
    GetResourceSynonymGetAttributeValue GET/v1/encoding/resource/synonyms/{id}/attributes/_/values/{id}
    CreateResourceSynonymCreateAttributeValue POST/v1/encoding/resource/synonymssynonym/attributes/{attribute_id}/valuesvalue
    UpdateResourceSynonymUpdateAttributeValue POST/v1/encoding/resource/synonyms/{id}synonym/attributes/{attribute_id}/values/{id}value
    DeleteResourceSynonymDeactivateAttributeValue DELETE/v1/encoding/resource/synonyms/{id}
    ListResourceGroupsGET/v1/encoding/resource/groups/attributes/_/values/{id}
    GetResourceGroupGET/v1/encoding/resource/groups/{id}AssignKeyAccessServerToAttributePOST/attributes/keyaccessserver/assignattribute_key_access_server
    CreateResourceGroupRemoveKeyAccessServerFromAttribute POST/v1/encoding/resource/groupsgroup/attributes/keyaccessserver/removeattribute_key_access_server
    UpdateResourceGroupAssignKeyAccessServerToValue POST/v1/encoding/resource/groups/{id}group/attributes/values/keyaccessserver/assignvalue_key_access_server
    DeleteResourceGroupDELETE/v1/encoding/resource/groups/{id}RemoveKeyAccessServerFromValuePOST/attributes/values/keyaccessserver/removevalue_key_access_server
    @@ -3001,8 +3419,15 @@

    CreateSubjectMappingRequest

    - - + + + + + + + + + @@ -3014,15 +3439,8 @@

    CreateSubjectMappingRequest

    -

    CreateSubjectMappingResponse

    -

    - - - - - -

    DeleteSubjectMappingRequest

    -

    +

    DecisionRequest

    +

    Example Request Get Decisions to answer the question - Do Bob (represented by entity chain ec1)

    and Alice (represented by entity chain ec2) have TRANSMIT authorization for

    2 resources; resource1 (attr-set-1) defined by attributes foo:bar resource2 (attr-set-2) defined by attribute foo:bar, color:red ?

    {

    "actions": [

    {

    "standard": "STANDARD_ACTION_TRANSMIT"

    }

    ],

    "entityChains": [

    {

    "id": "ec1",

    "entities": [

    {

    "emailAddress": "bob@example.org"

    }

    ]

    },

    {

    "id": "ec2",

    "entities": [

    {

    "userName": "alice@example.org"

    }

    ]

    }

    ],

    "resourceAttributes": [

    {

    "id": "attr-set-1",

    "attributeValueReferences": [

    {

    "attributeFqn": "http://www.example.org/attr/foo/value/bar"

    }

    ]

    },

    {

    "id": "request-set-2",

    "attributeValueReferences": [

    {

    "attributeFqn": "http://www.example.org/attr/foo/value/bar"

    },

    {

    "attributeFqn": "http://www.example.org/attr/color/value/red"

    }

    ]

    }

    ]

    }

    subject_mappingSubjectMappingstandardAction.StandardAction

    customstring

    @@ -3032,9 +3450,23 @@

    DeleteSubjectMappingRequest

    - - - + + + + + + + + + + + + + + + + + @@ -3045,15 +3477,8 @@

    DeleteSubjectMappingRequest

    -

    DeleteSubjectMappingResponse

    -

    - - - - - -

    GetSubjectMappingRequest

    -

    +

    DecisionResponse

    +

    Example response for a Decision Request - Do Bob (represented by entity chain ec1)

    and Alice (represented by entity chain ec2) have TRANSMIT authorization for

    2 resources; resource1 (attr-set-1) defined by attributes foo:bar resource2 (attr-set-2) defined by attribute foo:bar, color:red ?

    Results:

    - bob has permitted authorization to transmit for a resource defined by attr-set-1 attributes and has a watermark obligation

    - bob has denied authorization to transmit a for a resource defined by attr-set-2 attributes

    - alice has permitted authorization to transmit for a resource defined by attr-set-1 attributes

    - alice has denied authorization to transmit a for a resource defined by attr-set-2 attributes

    {

    "entityChainId": "ec1",

    "resourceAttributesId": "attr-set-1",

    "decision": "DECISION_PERMIT",

    "obligations": [

    "http://www.example.org/obligation/watermark"

    ]

    },

    {

    "entityChainId": "ec1",

    "resourceAttributesId": "attr-set-2",

    "decision": "DECISION_PERMIT"

    },

    {

    "entityChainId": "ec2",

    "resourceAttributesId": "attr-set-1",

    "decision": "DECISION_PERMIT"

    },

    {

    "entityChainId": "ec2",

    "resourceAttributesId": "attr-set-2",

    "decision": "DECISION_DENY"

    }

    idint32actionsActionrepeated

    entity_chainsEntityChainrepeated

    resource_attributesResourceAttributesrepeated

    @@ -3063,10 +3488,38 @@

    GetSubjectMappingRequest

    - - + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3076,8 +3529,8 @@

    GetSubjectMappingRequest

    -

    GetSubjectMappingResponse

    -

    +

    Entity

    +

    PE (Person Entity) or NPE (Non-Person Entity)

    idint32entity_chain_idstring

    ephemeral entity chain id from the request

    resource_attributes_idstring

    ephemeral resource attributes id from the request

    actionAction

    Action of the decision response

    decisionDecisionResponse.Decision

    The decision response

    obligationsstringrepeated

    optional list of obligations represented in URI format

    @@ -3087,8 +3540,50 @@

    GetSubjectMappingResponse

    - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -3100,8 +3595,8 @@

    GetSubjectMappingResponse

    -

    ListSubjectMappingsRequest

    -

    +

    EntityChain

    +

    A set of related PE and NPE

    subject_mappingSubjectMappingidstring

    ephemeral id for tracking between request and response

    email_addressstring

    user_namestring

    remote_claims_urlstring

    jwtstring

    claimsgoogle.protobuf.Any

    customEntityCustom

    @@ -3111,9 +3606,16 @@

    ListSubjectMappingsRequest

    - - + + + + + + + + + @@ -3124,8 +3626,8 @@

    ListSubjectMappingsRequest

    -

    ListSubjectMappingsResponse

    -

    +

    EntityCustom

    +

    Entity type for custom entities beyond the standard types

    selectorcommon.ResourceSelectoridstring

    ephemeral id for tracking between request and response

    entitiesEntityrepeated

    @@ -3135,9 +3637,9 @@

    ListSubjectMappingsResponse

    - - - + + + @@ -3148,8 +3650,8 @@

    ListSubjectMappingsResponse

    -

    SubjectMapping

    -

    Define a mapping of an subject attribute to subject using a rule:

    [subjectValue]

    Example subject mapping of a subject with nationality = CZE entitled to attribute relto:ZCE

    From Existing Policy: "http://demo.com/attr/relto/value/CZE": {"nationality": ["CZE"]}

    To Subject Mapping Policy:

    {

    attributeValueFQN: "http://demo.com/attr/relto/value/CZE"

    subjectAttribute: "nationality"

    subjectValues: ["CZE"]

    operator: "IN"

    }

    +

    EntityEntitlements

    +

    subject_mappingsSubjectMappingrepeatedextensiongoogle.protobuf.Any

    @@ -3159,42 +3661,17 @@

    SubjectMapping

    - - - - - - - - - - - - - - - + - + - + - - - - - - - - + @@ -3204,7 +3681,7 @@

    SubjectMapping

    -

    UpdateSubjectMappingRequest

    +

    GetDecisionsRequest

    @@ -3215,16 +3692,9 @@

    UpdateSubjectMappingRequest

    - - - - - - - - - - + + + @@ -3235,37 +3705,140 @@

    UpdateSubjectMappingRequest

    -

    UpdateSubjectMappingResponse

    +

    GetDecisionsResponse

    +
    descriptorcommon.ResourceDescriptor

    attribute_value_refattributes.AttributeValueReference

    TODO should this be a list of values? -Attribute Value to be mapped to

    subject_attributeentity_id string

    Resource Attribute Key; NOT Attribute Definition Attribute name

    subject_valuesattribute_id string repeated

    The list of comparison values for a resource's <attribute> value

    operatorSubjectMapping.Operator

    the operator - -TODO future - add features or idea of pattern/regex like ACSE? like username regex to pull domain from subject attribute -or treat the subject values as regex patterns applied to subject attribute

    idint32

    subject_mappingSubjectMappingdecision_requestsDecisionRequestrepeated

    + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    decision_responsesDecisionResponserepeated

    + + +

    GetEntitlementsRequest

    +

    Request to get entitlements for one or more entities for an optional attribute scope

    Example: Get entitlements for bob and alice (both represented using an email address

    {

    "entities": [

    {

    "id": "e1",

    "emailAddress": "bob@example.org"

    },

    {

    "id": "e2",

    "emailAddress": "alice@example.org"

    }

    ]

    }

    - -

    SubjectMapping.Operator

    -

    - - - - - - - - - - + +
    NameNumberDescription
    OPERATOR_UNSPECIFIED0

    + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    entitiesEntityrepeated

    list of requested entities

    scopeResourceAttributesoptional

    optional attribute fqn as a scope

    + + + + + +

    GetEntitlementsResponse

    +

    Example Response for a request of : Get entitlements for bob and alice (both represented using an email address

    {

    "entitlements": [

    {

    "entityId": "e1",

    "attributeValueReferences": [

    {

    "attributeFqn": "http://www.example.org/attr/foo/value/bar"

    }

    ]

    },

    {

    "entityId": "e2",

    "attributeValueReferences": [

    {

    "attributeFqn": "http://www.example.org/attr/color/value/red"

    }

    ]

    }

    ]

    }

    + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    entitlementsEntityEntitlementsrepeated

    + + + + + +

    ResourceAttributes

    +

    A logical bucket of attributes belonging to a "Resource"

    + + + + + + + + + + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    idstring

    attribute_idstringrepeated

    + + + + + + + +

    Action.StandardAction

    +

    Standard actions supported by the platform

    + + + + + + + + + + - + - + @@ -3273,50 +3846,58 @@

    SubjectMapping.Operator

    NameNumberDescription
    STANDARD_ACTION_UNSPECIFIED0

    OPERATOR_INSTANDARD_ACTION_DECRYPT 1

    OPERATOR_NOT_INSTANDARD_ACTION_TRANSMIT 2

    - - - - -

    SubjectEncodingService

    +

    DecisionResponse.Decision

    - + - - - + + - - - + + - - - + + + +
    Method NameRequest TypeResponse TypeDescription
    NameNumberDescription
    ListSubjectMappingsListSubjectMappingsRequestListSubjectMappingsResponseDECISION_UNSPECIFIED0

    GetSubjectMappingGetSubjectMappingRequestGetSubjectMappingResponseDECISION_DENY1

    CreateSubjectMappingCreateSubjectMappingRequestCreateSubjectMappingResponseDECISION_PERMIT2

    + + + + + +

    AuthorizationService

    +

    + + + + + + - - - + + + - - - + + + @@ -3341,49 +3922,19 @@

    Methods with HTTP bindings

    - - - - - - - - - - - - - - - - - - - - - + - - + + - + - - - - - - - - - - - + @@ -3395,13 +3946,13 @@

    Methods with HTTP bindings

    -

    authorization/authorization.proto

    Top +

    resourcemapping/resource_mapping.proto

    Top

    -

    Action

    -

    An action an entity can take

    +

    CreateResourceMappingRequest

    +

    Method NameRequest TypeResponse TypeDescription
    UpdateSubjectMappingUpdateSubjectMappingRequestUpdateSubjectMappingResponseGetDecisionsGetDecisionsRequestGetDecisionsResponse

    DeleteSubjectMappingDeleteSubjectMappingRequestDeleteSubjectMappingResponseGetEntitlementsGetEntitlementsRequestGetEntitlementsResponse

    ListSubjectMappingsGET/v1/encoding/subject/mappings
    GetSubjectMappingGET/v1/encoding/subject/mappings/{id}
    CreateSubjectMappingGetDecisions POST/v1/encoding/subject/mappingssubject_mapping/v1/authorization
    UpdateSubjectMappingGetEntitlements POST/v1/encoding/subject/mappings/{id}subject_mapping
    DeleteSubjectMappingDELETE/v1/encoding/subjects/mappings/{id}/v1/entitlements
    @@ -3411,15 +3962,8 @@

    Action

    - - - - - - - - - + + @@ -3431,8 +3975,8 @@

    Action

    -

    DecisionRequest

    -

    Example Request Get Decisions to answer the question - Do Bob (represented by entity chain ec1)

    and Alice (represented by entity chain ec2) have TRANSMIT authorization for

    2 resources; resource1 (attr-set-1) defined by attributes foo:bar resource2 (attr-set-2) defined by attribute foo:bar, color:red ?

    {

    "actions": [

    {

    "standard": "STANDARD_ACTION_TRANSMIT"

    }

    ],

    "entityChains": [

    {

    "id": "ec1",

    "entities": [

    {

    "emailAddress": "bob@example.org"

    }

    ]

    },

    {

    "id": "ec2",

    "entities": [

    {

    "userName": "alice@example.org"

    }

    ]

    }

    ],

    "resourceAttributes": [

    {

    "id": "attr-set-1",

    "attributeValueReferences": [

    {

    "attributeFqn": "http://www.example.org/attr/foo/value/bar"

    }

    ]

    },

    {

    "id": "request-set-2",

    "attributeValueReferences": [

    {

    "attributeFqn": "http://www.example.org/attr/foo/value/bar"

    },

    {

    "attributeFqn": "http://www.example.org/attr/color/value/red"

    }

    ]

    }

    ]

    }

    +

    CreateResourceMappingResponse

    +

    standardAction.StandardAction

    customstringresource_mappingResourceMappingCreateUpdate

    @@ -3442,23 +3986,9 @@

    DecisionRequest

    - - - - - - - - - - - - - - - - - + + + @@ -3469,8 +3999,8 @@

    DecisionRequest

    -

    DecisionResponse

    -

    Example response for a Decision Request - Do Bob (represented by entity chain ec1)

    and Alice (represented by entity chain ec2) have TRANSMIT authorization for

    2 resources; resource1 (attr-set-1) defined by attributes foo:bar resource2 (attr-set-2) defined by attribute foo:bar, color:red ?

    Results:

    - bob has permitted authorization to transmit for a resource defined by attr-set-1 attributes and has a watermark obligation

    - bob has denied authorization to transmit a for a resource defined by attr-set-2 attributes

    - alice has permitted authorization to transmit for a resource defined by attr-set-1 attributes

    - alice has denied authorization to transmit a for a resource defined by attr-set-2 attributes

    {

    "entityChainId": "ec1",

    "resourceAttributesId": "attr-set-1",

    "decision": "DECISION_PERMIT",

    "obligations": [

    "http://www.example.org/obligation/watermark"

    ]

    },

    {

    "entityChainId": "ec1",

    "resourceAttributesId": "attr-set-2",

    "decision": "DECISION_PERMIT"

    },

    {

    "entityChainId": "ec2",

    "resourceAttributesId": "attr-set-1",

    "decision": "DECISION_PERMIT"

    },

    {

    "entityChainId": "ec2",

    "resourceAttributesId": "attr-set-2",

    "decision": "DECISION_DENY"

    }

    +

    DeleteResourceMappingRequest

    +

    actionsActionrepeated

    entity_chainsEntityChainrepeated

    resource_attributesResourceAttributesrepeatedresource_mappingResourceMapping

    @@ -3480,38 +4010,10 @@

    DecisionResponse

    - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - + @@ -3521,8 +4023,8 @@

    DecisionResponse

    -

    Entity

    -

    PE (Person Entity) or NPE (Non-Person Entity)

    +

    DeleteResourceMappingResponse

    +

    entity_chain_idstring

    ephemeral entity chain id from the request

    resource_attributes_idid string

    ephemeral resource attributes id from the request

    actionAction

    Action of the decision response

    decisionDecisionResponse.Decision

    The decision response

    obligationsstringrepeated

    optional list of obligations represented in URI format

    @@ -3532,50 +4034,8 @@

    Entity

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -3587,8 +4047,8 @@

    Entity

    -

    EntityChain

    -

    A set of related PE and NPE

    +

    GetResourceMappingRequest

    +

    idstring

    ephemeral id for tracking between request and response

    email_addressstring

    user_namestring

    remote_claims_urlstring

    jwtstring

    claimsgoogle.protobuf.Any

    customEntityCustomresource_mappingResourceMapping

    @@ -3601,13 +4061,6 @@

    EntityChain

    - - - - - - - @@ -3618,8 +4071,8 @@

    EntityChain

    -

    EntityCustom

    -

    Entity type for custom entities beyond the standard types

    +

    GetResourceMappingResponse

    +

    id string

    ephemeral id for tracking between request and response

    entitiesEntityrepeated

    @@ -3629,8 +4082,8 @@

    EntityCustom

    - - + + @@ -3642,38 +4095,14 @@

    EntityCustom

    -

    EntityEntitlements

    +

    ListResourceMappingsRequest

    -
    extensiongoogle.protobuf.Anyresource_mappingResourceMapping

    - - - - - - - - - - - - - - - - - - - - -
    FieldTypeLabelDescription
    entity_idstring

    attribute_value_referencesattributes.AttributeValueReferencerepeated

    - - -

    GetDecisionsRequest

    +

    ListResourceMappingsResponse

    @@ -3684,8 +4113,8 @@

    GetDecisionsRequest

    - decision_requests - DecisionRequest + resource_mappings + ResourceMapping repeated

    @@ -3697,8 +4126,8 @@

    GetDecisionsRequest

    -

    GetDecisionsResponse

    -

    +

    ResourceMapping

    +

    # Resource Mappings (aka Access Control Resource Encodings aka ACRE): Structures supporting Resources and Attributes mappings

    ## Examples

    ### Where

    attributeId is an id of the following attribute

    FQN: http://demo.com/attr/Classification/value/Confidential

    UUID: 12345678-1234-1234-1234-123456789012

    ### Request

    grpcurl -plaintext -d @ localhost:9000 resourcemapping.ResourceMappingService/CreateResourceMapping <

    {

    "mapping": {

    "name": "Classification",

    "attribute_value_id": "12345678-1234-1234-1234-123456789012",

    "terms": ["CONFIDENTIAL", "CONTROLLED UNCLASSIFIED", "OFFICIAL-SENSITIVE", "CUI", "C"]

    }

    }

    EOM

    ### Response

    {

    "mapping": {

    "metadata": {

    "id": "12345678-1234-1234-1234-123456789012",

    "created_at": "2020-01-01T00:00:00Z",

    "updated_at": "2020-01-01T00:00:00Z"

    },

    "name": "Classification",

    "attribute_value_id": "12345678-1234-1234-1234-123456789012",

    "terms": ["CONFIDENTIAL", "CONTROLLED UNCLASSIFIED", "OFFICIAL-SENSITIVE", "CUI", "C"]

    }

    }

    @@ -3708,8 +4137,29 @@

    GetDecisionsResponse

    - - + + + + + + + + + + + + + + + + + + + + + + + @@ -3721,8 +4171,8 @@

    GetDecisionsResponse

    -

    GetEntitlementsRequest

    -

    Request to get entitlements for one or more entities for an optional attribute scope

    Example: Get entitlements for bob and alice (both represented using an email address

    {

    "entities": [

    {

    "id": "e1",

    "emailAddress": "bob@example.org"

    },

    {

    "id": "e2",

    "emailAddress": "alice@example.org"

    }

    ]

    }

    +

    ResourceMappingCreateUpdate

    +

    decision_responsesDecisionResponseidstring

    metadatacommon.Metadata

    attribute_valueattributes.Value

    termsstring repeated

    @@ -3732,17 +4182,24 @@

    GetEntitlementsRequest

    - - - - + + + + - - - - + + + + + + + + + + + @@ -3752,8 +4209,8 @@

    GetEntitlementsRequest

    -

    GetEntitlementsResponse

    -

    Example Response for a request of : Get entitlements for bob and alice (both represented using an email address

    {

    "entitlements": [

    {

    "entityId": "e1",

    "attributeValueReferences": [

    {

    "attributeFqn": "http://www.example.org/attr/foo/value/bar"

    }

    ]

    },

    {

    "entityId": "e2",

    "attributeValueReferences": [

    {

    "attributeFqn": "http://www.example.org/attr/color/value/red"

    }

    ]

    }

    ]

    }

    +

    UpdateResourceMappingRequest

    +

    entitiesEntityrepeated

    list of requested entities

    metadatacommon.MetadataMutable

    scopeResourceAttributesoptional

    optional attribute fqn as a scope

    attribute_value_idstring

    termsstringrepeated

    @@ -3763,9 +4220,16 @@

    GetEntitlementsResponse

    - - - + + + + + + + + + + @@ -3776,8 +4240,8 @@

    GetEntitlementsResponse

    -

    ResourceAttributes

    -

    A logical bucket of attributes belonging to a "Resource"

    +

    UpdateResourceMappingResponse

    +

    entitlementsEntityEntitlementsrepeatedidstring

    resource_mappingResourceMappingCreateUpdate

    @@ -3787,110 +4251,245 @@

    ResourceAttributes

    - - + + - - - - - - -
    idstringresource_mappingResourceMapping

    attribute_value_referencesattributes.AttributeValueReferencerepeated

    - - - - - - -

    Action.StandardAction

    -

    Standard actions supported by the platform

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameNumberDescription
    STANDARD_ACTION_UNSPECIFIED0

    STANDARD_ACTION_DECRYPT1

    STANDARD_ACTION_TRANSMIT2

    + + + -

    DecisionResponse.Decision

    -

    + + + + + + +

    ResourceMappingService

    +

    Resource Mappings

    - + - - - + + + + - - - + + + + - - - + + + + - -
    NameNumberDescription
    Method NameRequest TypeResponse TypeDescription
    DECISION_UNSPECIFIED0

    ListResourceMappingsListResourceMappingsRequestListResourceMappingsResponse

    Request Example: +- empty body + +Response Example: +{ +"resource_mappings": [ +{ +"terms": [ +"TOPSECRET", +"TS", +], +"id": "3c649464-95b4-4fe0-a09c-ca4b1fecbb0e", +"metadata": { +"labels": [], +"created_at": { +"seconds": "1706103276", +"nanos": 510718000 +}, +"updated_at": { +"seconds": "1706107873", +"nanos": 399786000 +}, +"description": "" +}, +"attribute_value": { +"members": [], +"id": "f0d1d4f6-bff9-45fd-8170-607b6b559349", +"metadata": null, +"attribute_id": "", +"value": "value1" +} +} +] +}

    DECISION_DENY1

    GetResourceMappingGetResourceMappingRequestGetResourceMappingResponse

    Request Example: +{ +"id": "3c649464-95b4-4fe0-a09c-ca4b1fecbb0e" +} + +Response Example: +{ +"resource_mapping": { +"terms": [ +"TOPSECRET", +"TS", +], +"id": "3c649464-95b4-4fe0-a09c-ca4b1fecbb0e", +"metadata": { +"labels": [], +"created_at": { +"seconds": "1706103276", +"nanos": 510718000 +}, +"updated_at": { +"seconds": "1706107873", +"nanos": 399786000 +}, +"description": "" +}, +"attribute_value": { +"members": [], +"id": "f0d1d4f6-bff9-45fd-8170-607b6b559349", +"metadata": null, +"attribute_id": "", +"value": "value1" +} +} +}

    DECISION_PERMIT2

    CreateResourceMappingCreateResourceMappingRequestCreateResourceMappingResponse

    Request Example: +{ +"resource_mapping": { +"attribute_value_id": "f0d1d4f6-bff9-45fd-8170-607b6b559349", +"terms": [ +"TOPSECRET", +"TS", +] +} +} + +Response Example: +{ +"resource_mapping": { +"terms": [ +"TOPSECRET", +"TS", +], +"id": "3c649464-95b4-4fe0-a09c-ca4b1fecbb0e", +"metadata": { +"labels": [], +"created_at": { +"seconds": "1706103276", +"nanos": 510718000 +}, +"updated_at": { +"seconds": "1706107873", +"nanos": 399786000 +}, +"description": "" +}, +"attribute_value": { +"members": [], +"id": "f0d1d4f6-bff9-45fd-8170-607b6b559349", +"metadata": null, +"attribute_id": "", +"value": "value1" +} +} +}

    - - - - - -

    AuthorizationService

    -

    - - - - - - - - - - + + + + - - - - + + + + @@ -3914,9 +4513,9 @@

    Methods with HTTP bindings

    - - - + + + @@ -3924,9 +4523,39 @@

    Methods with HTTP bindings

    - + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + @@ -3938,12 +4567,12 @@

    Methods with HTTP bindings

    -

    keyaccessgrants/key_access_grants.proto

    Top +

    subjectmapping/subject_mapping.proto

    Top

    -

    CreateKeyAccessGrantsRequest

    +

    CreateSubjectMappingRequest

    @@ -3954,8 +4583,8 @@

    CreateKeyAccessGrantsReque

    - - + + @@ -3967,14 +4596,7 @@

    CreateKeyAccessGrantsReque -

    CreateKeyAccessGrantsResponse

    -

    - - - - - -

    DeleteKeyAccessGrantsRequest

    +

    CreateSubjectMappingResponse

    @@ -3985,8 +4607,8 @@

    DeleteKeyAccessGrantsReque

    - - + + @@ -3998,14 +4620,7 @@

    DeleteKeyAccessGrantsReque -

    DeleteKeyAccessGrantsResponse

    -

    - - - - - -

    GetKeyAccessGrantRequest

    +

    DeleteSubjectMappingRequest

    @@ -4017,7 +4632,7 @@

    GetKeyAccessGrantRequest

    - + @@ -4029,7 +4644,7 @@

    GetKeyAccessGrantRequest

    -

    GetKeyAccessGrantResponse

    +

    DeleteSubjectMappingResponse

    @@ -4040,8 +4655,8 @@

    GetKeyAccessGrantResponse

    - - + + @@ -4053,8 +4668,8 @@

    GetKeyAccessGrantResponse

    KeyAccessGrant -

    Defines encryption settings for an attribute and it's values

    Example: All attribute values for attribute "Classification":

    attributeDefinition:

    descriptor:

    fqn: http://demo.com/attr/Classification

    type: ALL_OF

    attributeValueGrants:

    - kasIds: [KAS-USA-1, KAS-GBR-1]

    Example: Per attribute values for attribute "Classification":

    attributeDefinition:

    descriptor:

    fqn: http://demo.com/attr/Classification

    type: ALL_OF

    attributeValueGrants:

    - kasIds: [KAS-USA-1, KAS-GBR-1]

    value:

    descriptor:

    value: TopSecret

    - kasIds: [KAS-USA-3, KAS-GBR-2]

    value:

    descriptor:

    value: Secret

    +

    GetSubjectMappingRequest

    +

    Method NameRequest TypeResponse TypeDescription
    GetDecisionsGetDecisionsRequestGetDecisionsResponse

    UpdateResourceMappingUpdateResourceMappingRequestUpdateResourceMappingResponse

    Request Example: +{ +"id": "3c649464-95b4-4fe0-a09c-ca4b1fecbb0e", +"resource_mapping": { +"attribute_value_id": "f0d1d4f6-bff9-45fd-8170-607b6b559349", +"terms": [ +"TOPSECRET", +"TS", +"NEWTERM" +] +} +} + +Response Example: +{ +"resource_mapping": { +"terms": [ +"TOPSECRET", +"TS", +], +"id": "3c649464-95b4-4fe0-a09c-ca4b1fecbb0e", +"metadata": { +"labels": [], +"created_at": { +"seconds": "1706103276", +"nanos": 510718000 +}, +"updated_at": { +"seconds": "1706107873", +"nanos": 399786000 +}, +"description": "" +}, +"attribute_value": { +"members": [], +"id": "f0d1d4f6-bff9-45fd-8170-607b6b559349", +"metadata": null, +"attribute_id": "", +"value": "value1" +} +} +}

    GetEntitlementsGetEntitlementsRequestGetEntitlementsResponse

    DeleteResourceMappingDeleteResourceMappingRequestDeleteResourceMappingResponse

    Request Example: +{ +"id": "3c649464-95b4-4fe0-a09c-ca4b1fecbb0e" +} + +Response Example: +{ +"resource_mapping": { +"terms": [ +"TOPSECRET", +"TS", +], +"id": "3c649464-95b4-4fe0-a09c-ca4b1fecbb0e", +"metadata": { +"labels": [], +"created_at": { +"seconds": "1706103276", +"nanos": 510718000 +}, +"updated_at": { +"seconds": "1706107873", +"nanos": 399786000 +}, +"description": "" +}, +"attribute_value": { +"members": [], +"id": "f0d1d4f6-bff9-45fd-8170-607b6b559349", +"metadata": null, +"attribute_id": "", +"value": "value1" +} +} +}

    GetDecisionsPOST/v1/authorizationListResourceMappingsGET/resource-mappings
    GetEntitlementsGetResourceMappingGET/resource-mappings/{id}
    CreateResourceMapping POST/v1/entitlements/resource-mappingsresource_mapping
    UpdateResourceMappingPOST/resource-mappings/{id}resource_mapping
    DeleteResourceMappingDELETE/resource-mappings/{id}
    grantsKeyAccessGrantssubject_mappingSubjectMappingCreateUpdate

    idint32subject_mappingSubjectMapping

    idint32string

    grantsKeyAccessGrantssubject_mappingSubjectMapping

    @@ -4064,17 +4679,10 @@

    KeyAccessGrant

    - - + + - - - - - - - - + @@ -4084,8 +4692,8 @@

    KeyAccessGrant

    -

    KeyAccessGrantAttributeValue

    -

    Define the attribute value -> prioritized key access servers

    Example: Apply to all attribute value for enclosed attribute definition:

    kasIds: [KAS-USA-1, KAS-GBR-1]

    Example: Applies to only single attribute value

    kasIds: [KAS-USA-1, KAS-GBR-1]

    value:

    descriptor:

    value: FVEY

    +

    GetSubjectMappingResponse

    +

    attribute_definitionattributes.AttributeDefinitionidstring

    the attribute associated with this

    attribute_value_grantsKeyAccessGrantAttributeValuerepeated

    attribute value settings; if empty then applies to all values

    @@ -4095,17 +4703,10 @@

    KeyAccessGrantAttributeVal

    - - + + - - - - - - - - + @@ -4115,8 +4716,15 @@

    KeyAccessGrantAttributeVal -

    KeyAccessGrants

    -

    Shareable set of key access grants to help with encryption workflows

    +

    ListSubjectMappingsRequest

    +

    + + + + + +

    ListSubjectMappingsResponse

    +

    valueattributes.AttributeValueReferencesubject_mappingSubjectMapping

    optional - if this is empty - then applies to all attribute values of the enclosed attribute definition

    kas_idsstringrepeated

    list of key access server ordered by priority.

    @@ -4126,29 +4734,10 @@

    KeyAccessGrants

    - - - - - - - - - - - - - - - - + + - + @@ -4158,8 +4747,8 @@

    KeyAccessGrants

    -

    KeyAccessServer

    -

    Descriptor for a KAS

    +

    SubjectMapping

    +

    descriptorcommon.ResourceDescriptor

    key_access_serversKeyAccessServerrepeated

    List of available key access servers -Example: -- id: KAS-USA-1 -url: http://.... -pubKey=xxx -- ....

    key_access_grantsKeyAccessGrantsubject_mappingsSubjectMapping repeated

    list of key access grants

    @@ -4169,24 +4758,48 @@

    KeyAccessServer

    - - + + - + + + + + + + + + + + + + + + - + - + + + + + + + + - + @@ -4196,7 +4809,7 @@

    KeyAccessServer

    -

    ListKeyAccessGrantsRequest

    +

    SubjectMappingCreateUpdate

    @@ -4207,12 +4820,43 @@

    ListKeyAccessGrantsRequest

    - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    descriptorcommon.ResourceDescriptoridstring

    urlmetadatacommon.Metadata

    TODO should this be a list of values?

    attribute_valueattributes.Value

    Attribute Value to be mapped to

    subject_attribute string

    Kas Url

    Resource Attribute Key; NOT Attribute Definition Attribute name

    public_keysubject_values stringrepeated

    The list of comparison values for a resource's <attribute> value

    operatorSubjectMappingOperatorEnum

    public key - optional since can also be retrieved via url

    the operator + +TODO future - add features or idea of pattern/regex like ACSE? like username regex to pull domain from subject attribute +or treat the subject values as regex patterns applied to subject attribute

    selectorcommon.ResourceSelectormetadatacommon.MetadataMutable

    attribute_value_idstring

    Attribute Value to be mapped to

    subject_attributestring

    Resource Attribute Key; NOT Attribute Definition Attribute name

    subject_valuesstringrepeated

    The list of comparison values for a resource's <attribute> value

    operatorSubjectMappingOperatorEnum

    the operator + +TODO future - add features or idea of pattern/regex like ACSE? like username regex to pull domain from subject attribute +or treat the subject values as regex patterns applied to subject attribute

    @@ -4220,7 +4864,7 @@

    ListKeyAccessGrantsRequestListKeyAccessGrantsResponse

    +

    UpdateSubjectMappingRequest

    @@ -4231,9 +4875,16 @@

    ListKeyAccessGrantsResponse - grants - KeyAccessGrants - repeated + id + string + +

    + + + + subject_mapping + SubjectMappingCreateUpdate +

    @@ -4244,7 +4895,7 @@

    ListKeyAccessGrantsResponse -

    UpdateKeyAccessGrantsRequest

    +

    UpdateSubjectMappingResponse

    @@ -4255,15 +4906,8 @@

    UpdateKeyAccessGrantsReque - id - int32 - -

    - - - - grants - KeyAccessGrants + subject_mapping + SubjectMapping

    @@ -4275,20 +4919,42 @@

    UpdateKeyAccessGrantsReque -

    UpdateKeyAccessGrantsResponse

    -

    - - - - +

    SubjectMappingOperatorEnum

    +

    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

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    SUBJECT_MAPPING_OPERATOR_ENUM_UNSPECIFIED0

    SUBJECT_MAPPING_OPERATOR_ENUM_IN1

    SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN2

    -

    KeyAccessGrantsService

    +

    SubjectMappingService

    @@ -4297,37 +4963,37 @@

    KeyAccessGrantsService

    - - - + + + - - - + + + - - - + + + - - - + + + - - - + + + @@ -4352,9 +5018,9 @@

    Methods with HTTP bindings

    - + - + @@ -4362,9 +5028,9 @@

    Methods with HTTP bindings

    - + - + @@ -4372,29 +5038,29 @@

    Methods with HTTP bindings

    - + - - + + - - - - + + + + - + - + diff --git a/docs/openapi/attributes/attributes.swagger.json b/docs/openapi/attributes/attributes.swagger.json new file mode 100644 index 0000000000..b8e9b31196 --- /dev/null +++ b/docs/openapi/attributes/attributes.swagger.json @@ -0,0 +1,839 @@ +{ + "swagger": "2.0", + "info": { + "title": "attributes/attributes.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "AttributesService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "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 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}\n}", + "operationId": "AttributesService_CreateAttribute", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesCreateAttributeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "attribute", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/attributesAttributeCreateUpdate" + } + } + ], + "tags": [ + "AttributesService" + ] + } + }, + "/attributes/_/values/{id}": { + "get": { + "summary": "* Attribute Value *", + "operationId": "AttributesService_GetAttributeValue", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesGetAttributeValueResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AttributesService" + ] + }, + "delete": { + "operationId": "AttributesService_DeactivateAttributeValue", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesDeactivateAttributeValueResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "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 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", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesAssignKeyAccessServerToAttributeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "attributeKeyAccessServer", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/attributesAttributeKeyAccessServer" + } + } + ], + "tags": [ + "AttributesService" + ] + } + }, + "/attributes/keyaccessserver/remove": { + "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 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", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesRemoveKeyAccessServerFromAttributeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "attributeKeyAccessServer", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/attributesAttributeKeyAccessServer" + } + } + ], + "tags": [ + "AttributesService" + ] + } + }, + "/attributes/values/keyaccessserver/assign": { + "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 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", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesAssignKeyAccessServerToValueResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "valueKeyAccessServer", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/attributesValueKeyAccessServer" + } + } + ], + "tags": [ + "AttributesService" + ] + } + }, + "/attributes/values/keyaccessserver/remove": { + "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 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", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesRemoveKeyAccessServerFromValueResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "valueKeyAccessServer", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/attributesValueKeyAccessServer" + } + } + ], + "tags": [ + "AttributesService" + ] + } + }, + "/attributes/{attributeId}/values": { + "post": { + "summary": "Create Attribute Value\nExample:\n grpcurl -plaintext -d '{\"attribute_id\": \"attribute_id\", \"value\": {\"value\": \"value\"}}' localhost:8080 attributes.AttributesService/CreateAttributeValue", + "operationId": "AttributesService_CreateAttributeValue", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesCreateAttributeValueResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "attributeId", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "value", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/attributesValueCreateUpdate" + } + } + ], + "tags": [ + "AttributesService" + ] + } + }, + "/attributes/{attributeId}/values/{id}": { + "post": { + "operationId": "AttributesService_UpdateAttributeValue", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesUpdateAttributeValueResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "attributeId", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "value", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/attributesValueCreateUpdate" + } + } + ], + "tags": [ + "AttributesService" + ] + } + }, + "/attributes/{id}": { + "get": { + "operationId": "AttributesService_GetAttribute", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesGetAttributeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AttributesService" + ] + }, + "delete": { + "operationId": "AttributesService_DeactivateAttribute", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesDeactivateAttributeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "AttributesService" + ] + }, + "post": { + "operationId": "AttributesService_UpdateAttribute", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/attributesUpdateAttributeResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "attribute", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/attributesAttributeCreateUpdate" + } + } + ], + "tags": [ + "AttributesService" + ] + } + } + }, + "definitions": { + "attributesAssignKeyAccessServerToAttributeResponse": { + "type": "object", + "properties": { + "attributeKeyAccessServer": { + "$ref": "#/definitions/attributesAttributeKeyAccessServer" + } + } + }, + "attributesAssignKeyAccessServerToValueResponse": { + "type": "object", + "properties": { + "valueKeyAccessServer": { + "$ref": "#/definitions/attributesValueKeyAccessServer" + } + } + }, + "attributesAttribute": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "Optional metadata for the attribute definition" + }, + "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/attributesValue" + } + }, + "grants": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/kasregistryKeyAccessServer" + } + }, + "state": { + "$ref": "#/definitions/commonStateTypeEnum", + "title": "active by default until explicitly deactivated" + } + } + }, + "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": { + "attributeId": { + "type": "string" + }, + "keyAccessServerId": { + "type": "string" + } + } + }, + "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" + }, + "attributesCreateAttributeResponse": { + "type": "object", + "properties": { + "attribute": { + "$ref": "#/definitions/attributesAttribute" + } + } + }, + "attributesCreateAttributeValueResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/attributesValue" + } + } + }, + "attributesDeactivateAttributeResponse": { + "type": "object", + "properties": { + "attribute": { + "$ref": "#/definitions/attributesAttribute" + } + } + }, + "attributesDeactivateAttributeValueResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/attributesValue" + } + } + }, + "attributesGetAttributeResponse": { + "type": "object", + "properties": { + "attribute": { + "$ref": "#/definitions/attributesAttribute" + } + } + }, + "attributesGetAttributeValueResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/attributesValue" + } + } + }, + "attributesListAttributeValuesResponse": { + "type": "object", + "properties": { + "values": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/attributesValue" + } + } + } + }, + "attributesListAttributesResponse": { + "type": "object", + "properties": { + "attributes": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/attributesAttribute" + } + } + } + }, + "attributesRemoveKeyAccessServerFromAttributeResponse": { + "type": "object", + "properties": { + "attributeKeyAccessServer": { + "$ref": "#/definitions/attributesAttributeKeyAccessServer" + } + } + }, + "attributesRemoveKeyAccessServerFromValueResponse": { + "type": "object", + "properties": { + "valueKeyAccessServer": { + "$ref": "#/definitions/attributesValueKeyAccessServer" + } + } + }, + "attributesUpdateAttributeResponse": { + "type": "object", + "properties": { + "attribute": { + "$ref": "#/definitions/attributesAttribute" + } + } + }, + "attributesUpdateAttributeValueResponse": { + "type": "object", + "properties": { + "value": { + "$ref": "#/definitions/attributesValue" + } + } + }, + "attributesValue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "generated uuid in database" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata" + }, + "attributeId": { + "type": "string" + }, + "value": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "string" + }, + "title": "list of attribute values that this value is related to (attribute group)" + }, + "grants": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/kasregistryKeyAccessServer" + }, + "title": "list of key access servers" + }, + "state": { + "$ref": "#/definitions/commonStateTypeEnum", + "title": "active by default until explicitly deactivated" + } + } + }, + "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": { + "valueId": { + "type": "string" + }, + "keyAccessServerId": { + "type": "string" + } + } + }, + "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" + }, + "description": { + "type": "string", + "title": "optional long description" + } + }, + "title": "Struct to uniquely identify a resource with optional additional metadata" + }, + "commonMetadataMutable": { + "type": "object", + "properties": { + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "optional short description" + }, + "description": { + "type": "string", + "title": "optional long description" + } + } + }, + "commonStateTypeEnum": { + "type": "string", + "enum": [ + "STATE_TYPE_ENUM_UNSPECIFIED", + "STATE_TYPE_ENUM_ACTIVE", + "STATE_TYPE_ENUM_INACTIVE", + "STATE_TYPE_ENUM_ANY" + ], + "default": "STATE_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" + }, + "kasregistryKeyAccessServer": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata" + }, + "uri": { + "type": "string", + "title": "Address of a KAS instance" + }, + "publicKey": { + "$ref": "#/definitions/kasregistryPublicKey" + } + }, + "title": "Descriptor for a KAS" + }, + "kasregistryPublicKey": { + "type": "object", + "properties": { + "remote": { + "type": "string", + "title": "kas public key url - optional since can also be retrieved via public key" + }, + "local": { + "type": "string", + "title": "public key - optional since can also be retrieved via url" + } + } + }, + "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" + }, + "state": { + "$ref": "#/definitions/commonStateTypeEnum", + "title": "active by default until explicitly deactivated" + } + } + }, + "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/authorization/authorization.swagger.json b/docs/openapi/authorization/authorization.swagger.json new file mode 100644 index 0000000000..42f3e2ec98 --- /dev/null +++ b/docs/openapi/authorization/authorization.swagger.json @@ -0,0 +1,312 @@ +{ + "swagger": "2.0", + "info": { + "title": "authorization/authorization.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "AuthorizationService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/v1/authorization": { + "post": { + "operationId": "AuthorizationService_GetDecisions", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/authorizationGetDecisionsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "AuthorizationService" + ] + } + }, + "/v1/entitlements": { + "post": { + "operationId": "AuthorizationService_GetEntitlements", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/authorizationGetEntitlementsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "scope.id", + "in": "query", + "required": false, + "type": "string" + }, + { + "name": "scope.attributeId", + "in": "query", + "required": false, + "type": "array", + "items": { + "type": "string" + }, + "collectionFormat": "multi" + } + ], + "tags": [ + "AuthorizationService" + ] + } + } + }, + "definitions": { + "ActionStandardAction": { + "type": "string", + "enum": [ + "STANDARD_ACTION_UNSPECIFIED", + "STANDARD_ACTION_DECRYPT", + "STANDARD_ACTION_TRANSMIT" + ], + "default": "STANDARD_ACTION_UNSPECIFIED", + "title": "Standard actions supported by the platform" + }, + "DecisionResponseDecision": { + "type": "string", + "enum": [ + "DECISION_UNSPECIFIED", + "DECISION_DENY", + "DECISION_PERMIT" + ], + "default": "DECISION_UNSPECIFIED" + }, + "authorizationAction": { + "type": "object", + "properties": { + "standard": { + "$ref": "#/definitions/ActionStandardAction" + }, + "custom": { + "type": "string" + } + }, + "title": "An action an entity can take" + }, + "authorizationDecisionRequest": { + "type": "object", + "properties": { + "actions": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/authorizationAction" + } + }, + "entityChains": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/authorizationEntityChain" + } + }, + "resourceAttributes": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/authorizationResourceAttributes" + } + } + }, + "description": "{\n\"actions\": [\n{\n\"standard\": \"STANDARD_ACTION_TRANSMIT\"\n}\n],\n\"entityChains\": [\n{\n\"id\": \"ec1\",\n\"entities\": [\n{\n\"emailAddress\": \"bob@example.org\"\n}\n]\n},\n{\n\"id\": \"ec2\",\n\"entities\": [\n{\n\"userName\": \"alice@example.org\"\n}\n]\n}\n],\n\"resourceAttributes\": [\n{\n\"id\": \"attr-set-1\",\n\"attributeValueReferences\": [\n{\n\"attributeFqn\": \"http://www.example.org/attr/foo/value/bar\"\n}\n]\n},\n{\n\"id\": \"request-set-2\",\n\"attributeValueReferences\": [\n{\n\"attributeFqn\": \"http://www.example.org/attr/foo/value/bar\"\n},\n{\n\"attributeFqn\": \"http://www.example.org/attr/color/value/red\"\n}\n]\n}\n]\n}", + "title": "Example Request Get Decisions to answer the question - Do Bob (represented by entity chain ec1)\nand Alice (represented by entity chain ec2) have TRANSMIT authorization for\n2 resources; resource1 (attr-set-1) defined by attributes foo:bar resource2 (attr-set-2) defined by attribute foo:bar, color:red ?" + }, + "authorizationDecisionResponse": { + "type": "object", + "properties": { + "entityChainId": { + "type": "string", + "title": "ephemeral entity chain id from the request" + }, + "resourceAttributesId": { + "type": "string", + "title": "ephemeral resource attributes id from the request" + }, + "action": { + "$ref": "#/definitions/authorizationAction", + "title": "Action of the decision response" + }, + "decision": { + "$ref": "#/definitions/DecisionResponseDecision", + "title": "The decision response" + }, + "obligations": { + "type": "array", + "items": { + "type": "string" + }, + "title": "optional list of obligations represented in URI format" + } + }, + "description": "Results:\n- bob has permitted authorization to transmit for a resource defined by attr-set-1 attributes and has a watermark obligation\n- bob has denied authorization to transmit a for a resource defined by attr-set-2 attributes\n- alice has permitted authorization to transmit for a resource defined by attr-set-1 attributes\n- alice has denied authorization to transmit a for a resource defined by attr-set-2 attributes\n\n{\n\"entityChainId\": \"ec1\",\n\"resourceAttributesId\": \"attr-set-1\",\n\"decision\": \"DECISION_PERMIT\",\n\"obligations\": [\n\"http://www.example.org/obligation/watermark\"\n]\n},\n{\n\"entityChainId\": \"ec1\",\n\"resourceAttributesId\": \"attr-set-2\",\n\"decision\": \"DECISION_PERMIT\"\n},\n{\n\"entityChainId\": \"ec2\",\n\"resourceAttributesId\": \"attr-set-1\",\n\"decision\": \"DECISION_PERMIT\"\n},\n{\n\"entityChainId\": \"ec2\",\n\"resourceAttributesId\": \"attr-set-2\",\n\"decision\": \"DECISION_DENY\"\n}", + "title": "Example response for a Decision Request - Do Bob (represented by entity chain ec1)\nand Alice (represented by entity chain ec2) have TRANSMIT authorization for\n2 resources; resource1 (attr-set-1) defined by attributes foo:bar resource2 (attr-set-2) defined by attribute foo:bar, color:red ?" + }, + "authorizationEntity": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "ephemeral id for tracking between request and response" + }, + "emailAddress": { + "type": "string" + }, + "userName": { + "type": "string" + }, + "remoteClaimsUrl": { + "type": "string" + }, + "jwt": { + "type": "string" + }, + "claims": { + "$ref": "#/definitions/protobufAny" + }, + "custom": { + "$ref": "#/definitions/authorizationEntityCustom" + } + }, + "title": "PE (Person Entity) or NPE (Non-Person Entity)" + }, + "authorizationEntityChain": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "ephemeral id for tracking between request and response" + }, + "entities": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/authorizationEntity" + } + } + }, + "title": "A set of related PE and NPE" + }, + "authorizationEntityCustom": { + "type": "object", + "properties": { + "extension": { + "$ref": "#/definitions/protobufAny" + } + }, + "title": "Entity type for custom entities beyond the standard types" + }, + "authorizationEntityEntitlements": { + "type": "object", + "properties": { + "entityId": { + "type": "string" + }, + "attributeId": { + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "authorizationGetDecisionsResponse": { + "type": "object", + "properties": { + "decisionResponses": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/authorizationDecisionResponse" + } + } + } + }, + "authorizationGetEntitlementsResponse": { + "type": "object", + "properties": { + "entitlements": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/authorizationEntityEntitlements" + } + } + }, + "description": "{\n\"entitlements\": [\n{\n\"entityId\": \"e1\",\n\"attributeValueReferences\": [\n{\n\"attributeFqn\": \"http://www.example.org/attr/foo/value/bar\"\n}\n]\n},\n{\n\"entityId\": \"e2\",\n\"attributeValueReferences\": [\n{\n\"attributeFqn\": \"http://www.example.org/attr/color/value/red\"\n}\n]\n}\n]\n}", + "title": "Example Response for a request of : Get entitlements for bob and alice (both represented using an email address" + }, + "authorizationResourceAttributes": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "attributeId": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "title": "A logical bucket of attributes belonging to a \"Resource\"" + }, + "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/common/common.swagger.json b/docs/openapi/common/common.swagger.json new file mode 100644 index 0000000000..a771c2cac8 --- /dev/null +++ b/docs/openapi/common/common.swagger.json @@ -0,0 +1,46 @@ +{ + "swagger": "2.0", + "info": { + "title": "common/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/kasregistry/key_access_server_registry.swagger.json b/docs/openapi/kasregistry/key_access_server_registry.swagger.json new file mode 100644 index 0000000000..7f22fa785f --- /dev/null +++ b/docs/openapi/kasregistry/key_access_server_registry.swagger.json @@ -0,0 +1,343 @@ +{ + "swagger": "2.0", + "info": { + "title": "kasregistry/key_access_server_registry.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "KeyAccessServerRegistryService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "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": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/kasregistryListKeyAccessServersResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "KeyAccessServerRegistryService" + ] + }, + "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": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/kasregistryCreateKeyAccessServerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "keyAccessServer", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/kasregistryKeyAccessServerCreateUpdate" + } + } + ], + "tags": [ + "KeyAccessServerRegistryService" + ] + } + }, + "/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": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/kasregistryGetKeyAccessServerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "KeyAccessServerRegistryService" + ] + }, + "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": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/kasregistryDeleteKeyAccessServerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "KeyAccessServerRegistryService" + ] + }, + "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": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/kasregistryUpdateKeyAccessServerResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "keyAccessServer", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/kasregistryKeyAccessServerCreateUpdate" + } + } + ], + "tags": [ + "KeyAccessServerRegistryService" + ] + } + } + }, + "definitions": { + "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" + }, + "description": { + "type": "string", + "title": "optional long description" + } + }, + "title": "Struct to uniquely identify a resource with optional additional metadata" + }, + "commonMetadataMutable": { + "type": "object", + "properties": { + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "optional short description" + }, + "description": { + "type": "string", + "title": "optional long description" + } + } + }, + "kasregistryCreateKeyAccessServerResponse": { + "type": "object", + "properties": { + "keyAccessServer": { + "$ref": "#/definitions/kasregistryKeyAccessServer" + } + } + }, + "kasregistryDeleteKeyAccessServerResponse": { + "type": "object", + "properties": { + "keyAccessServer": { + "$ref": "#/definitions/kasregistryKeyAccessServer" + } + } + }, + "kasregistryGetKeyAccessServerResponse": { + "type": "object", + "properties": { + "keyAccessServer": { + "$ref": "#/definitions/kasregistryKeyAccessServer" + } + } + }, + "kasregistryKeyAccessServer": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata" + }, + "uri": { + "type": "string", + "title": "Address of a KAS instance" + }, + "publicKey": { + "$ref": "#/definitions/kasregistryPublicKey" + } + }, + "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": { + "keyAccessServers": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/kasregistryKeyAccessServer" + } + } + } + }, + "kasregistryPublicKey": { + "type": "object", + "properties": { + "remote": { + "type": "string", + "title": "kas public key url - optional since can also be retrieved via public key" + }, + "local": { + "type": "string", + "title": "public key - optional since can also be retrieved via url" + } + } + }, + "kasregistryUpdateKeyAccessServerResponse": { + "type": "object", + "properties": { + "keyAccessServer": { + "$ref": "#/definitions/kasregistryKeyAccessServer" + } + } + }, + "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/namespaces/namespaces.swagger.json b/docs/openapi/namespaces/namespaces.swagger.json new file mode 100644 index 0000000000..2a025ad5c4 --- /dev/null +++ b/docs/openapi/namespaces/namespaces.swagger.json @@ -0,0 +1,280 @@ +{ + "swagger": "2.0", + "info": { + "title": "namespaces/namespaces.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "NamespaceService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/attributes/namespaces": { + "get": { + "summary": "NOTE: ACTIVE state by default, INACTIVE or ANY when specified\nRequest: \ngrpcurl -plaintext localhost:9000 namespaces.NamespaceService/ListNamespaces\nResponse:\n{\n\"namespaces\": [\n{\n\"id\": \"namespace-id\",\n\"name\": \"namespace-name\",\n\"state\": \"STATE_TYPE_ENUM_ACTIVE\"\n}\n]\n}", + "operationId": "NamespaceService_ListNamespaces", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/namespacesListNamespacesResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "state", + "description": "ACTIVE by default when not specified", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "STATE_TYPE_ENUM_UNSPECIFIED", + "STATE_TYPE_ENUM_ACTIVE", + "STATE_TYPE_ENUM_INACTIVE", + "STATE_TYPE_ENUM_ANY" + ], + "default": "STATE_TYPE_ENUM_UNSPECIFIED" + } + ], + "tags": [ + "NamespaceService" + ] + }, + "post": { + "summary": "Request: \ngrpcurl -plaintext -d '{\"name\": \"namespace-name\"}' localhost:9000 namespaces.NamespaceService/CreateNamespace\nResponse:\n{ \"namespace\": { \"id\": \"namespace-id\" } }", + "operationId": "NamespaceService_CreateNamespace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/namespacesCreateNamespaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "name", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "NamespaceService" + ] + } + }, + "/attributes/namespaces/{id}": { + "get": { + "summary": "Request: \ngrpcurl -plaintext -d '{\"id\": \"namespace-id\"}' localhost:9000 namespaces.NamespaceService/GetNamespace\nResponse:\n{\n\"namespace\": {\n\"id\": \"namespace-id\",\n\"name\": \"namespace-name\",\n\"state\": \"STATE_TYPE_ENUM_ACTIVE\"\n}\n}", + "operationId": "NamespaceService_GetNamespace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/namespacesGetNamespaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "NamespaceService" + ] + }, + "delete": { + "operationId": "NamespaceService_DeactivateNamespace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/namespacesDeactivateNamespaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "NamespaceService" + ] + }, + "put": { + "operationId": "NamespaceService_UpdateNamespace", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/namespacesUpdateNamespaceResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "name", + "in": "query", + "required": false, + "type": "string" + } + ], + "tags": [ + "NamespaceService" + ] + } + } + }, + "definitions": { + "commonStateTypeEnum": { + "type": "string", + "enum": [ + "STATE_TYPE_ENUM_UNSPECIFIED", + "STATE_TYPE_ENUM_ACTIVE", + "STATE_TYPE_ENUM_INACTIVE", + "STATE_TYPE_ENUM_ANY" + ], + "default": "STATE_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" + }, + "namespacesCreateNamespaceResponse": { + "type": "object", + "properties": { + "namespace": { + "$ref": "#/definitions/namespacesNamespace" + } + } + }, + "namespacesDeactivateNamespaceResponse": { + "type": "object" + }, + "namespacesGetNamespaceResponse": { + "type": "object", + "properties": { + "namespace": { + "$ref": "#/definitions/namespacesNamespace" + } + } + }, + "namespacesListNamespacesResponse": { + "type": "object", + "properties": { + "namespaces": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/namespacesNamespace" + } + } + } + }, + "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" + }, + "state": { + "$ref": "#/definitions/commonStateTypeEnum", + "title": "active by default until explicitly deactivated" + } + } + }, + "namespacesUpdateNamespaceResponse": { + "type": "object", + "properties": { + "namespace": { + "$ref": "#/definitions/namespacesNamespace" + } + } + }, + "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/resourcemapping/resource_mapping.swagger.json b/docs/openapi/resourcemapping/resource_mapping.swagger.json new file mode 100644 index 0000000000..b9d6709716 --- /dev/null +++ b/docs/openapi/resourcemapping/resource_mapping.swagger.json @@ -0,0 +1,414 @@ +{ + "swagger": "2.0", + "info": { + "title": "resourcemapping/resource_mapping.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "ResourceMappingService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/resource-mappings": { + "get": { + "summary": "Request Example:\n- empty body", + "description": "Response Example:\n{\n\"resource_mappings\": [\n{\n\"terms\": [\n\"TOPSECRET\",\n\"TS\",\n],\n\"id\": \"3c649464-95b4-4fe0-a09c-ca4b1fecbb0e\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1706103276\",\n\"nanos\": 510718000\n},\n\"updated_at\": {\n\"seconds\": \"1706107873\",\n\"nanos\": 399786000\n},\n\"description\": \"\"\n},\n\"attribute_value\": {\n\"members\": [],\n\"id\": \"f0d1d4f6-bff9-45fd-8170-607b6b559349\",\n\"metadata\": null,\n\"attribute_id\": \"\",\n\"value\": \"value1\"\n}\n}\n]\n}", + "operationId": "ResourceMappingService_ListResourceMappings", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/resourcemappingListResourceMappingsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "ResourceMappingService" + ] + }, + "post": { + "summary": "Request Example:\n{\n\"resource_mapping\": {\n\"attribute_value_id\": \"f0d1d4f6-bff9-45fd-8170-607b6b559349\",\n\"terms\": [\n\"TOPSECRET\",\n\"TS\",\n]\n}\n}", + "description": "Response Example:\n{\n\"resource_mapping\": {\n\"terms\": [\n\"TOPSECRET\",\n\"TS\",\n],\n\"id\": \"3c649464-95b4-4fe0-a09c-ca4b1fecbb0e\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1706103276\",\n\"nanos\": 510718000\n},\n\"updated_at\": {\n\"seconds\": \"1706107873\",\n\"nanos\": 399786000\n},\n\"description\": \"\"\n},\n\"attribute_value\": {\n\"members\": [],\n\"id\": \"f0d1d4f6-bff9-45fd-8170-607b6b559349\",\n\"metadata\": null,\n\"attribute_id\": \"\",\n\"value\": \"value1\"\n}\n}\n}", + "operationId": "ResourceMappingService_CreateResourceMapping", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/resourcemappingCreateResourceMappingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "resourceMapping", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/resourcemappingResourceMappingCreateUpdate" + } + } + ], + "tags": [ + "ResourceMappingService" + ] + } + }, + "/resource-mappings/{id}": { + "get": { + "summary": "Request Example:\n{\n\"id\": \"3c649464-95b4-4fe0-a09c-ca4b1fecbb0e\"\n}", + "description": "Response Example:\n{\n\"resource_mapping\": {\n\"terms\": [\n\"TOPSECRET\",\n\"TS\",\n],\n\"id\": \"3c649464-95b4-4fe0-a09c-ca4b1fecbb0e\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1706103276\",\n\"nanos\": 510718000\n},\n\"updated_at\": {\n\"seconds\": \"1706107873\",\n\"nanos\": 399786000\n},\n\"description\": \"\"\n},\n\"attribute_value\": {\n\"members\": [],\n\"id\": \"f0d1d4f6-bff9-45fd-8170-607b6b559349\",\n\"metadata\": null,\n\"attribute_id\": \"\",\n\"value\": \"value1\"\n}\n}\n}", + "operationId": "ResourceMappingService_GetResourceMapping", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/resourcemappingGetResourceMappingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "ResourceMappingService" + ] + }, + "delete": { + "summary": "Request Example:\n{\n\"id\": \"3c649464-95b4-4fe0-a09c-ca4b1fecbb0e\"\n}", + "description": "Response Example:\n{\n\"resource_mapping\": {\n\"terms\": [\n\"TOPSECRET\",\n\"TS\",\n],\n\"id\": \"3c649464-95b4-4fe0-a09c-ca4b1fecbb0e\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1706103276\",\n\"nanos\": 510718000\n},\n\"updated_at\": {\n\"seconds\": \"1706107873\",\n\"nanos\": 399786000\n},\n\"description\": \"\"\n},\n\"attribute_value\": {\n\"members\": [],\n\"id\": \"f0d1d4f6-bff9-45fd-8170-607b6b559349\",\n\"metadata\": null,\n\"attribute_id\": \"\",\n\"value\": \"value1\"\n}\n}\n}", + "operationId": "ResourceMappingService_DeleteResourceMapping", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/resourcemappingDeleteResourceMappingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "ResourceMappingService" + ] + }, + "post": { + "summary": "Request Example:\n{\n\"id\": \"3c649464-95b4-4fe0-a09c-ca4b1fecbb0e\",\n\"resource_mapping\": {\n\"attribute_value_id\": \"f0d1d4f6-bff9-45fd-8170-607b6b559349\",\n\"terms\": [\n\"TOPSECRET\",\n\"TS\",\n\"NEWTERM\"\n]\n}\n}", + "description": "Response Example:\n{\n\"resource_mapping\": {\n\"terms\": [\n\"TOPSECRET\",\n\"TS\",\n],\n\"id\": \"3c649464-95b4-4fe0-a09c-ca4b1fecbb0e\",\n\"metadata\": {\n\"labels\": [],\n\"created_at\": {\n\"seconds\": \"1706103276\",\n\"nanos\": 510718000\n},\n\"updated_at\": {\n\"seconds\": \"1706107873\",\n\"nanos\": 399786000\n},\n\"description\": \"\"\n},\n\"attribute_value\": {\n\"members\": [],\n\"id\": \"f0d1d4f6-bff9-45fd-8170-607b6b559349\",\n\"metadata\": null,\n\"attribute_id\": \"\",\n\"value\": \"value1\"\n}\n}\n}", + "operationId": "ResourceMappingService_UpdateResourceMapping", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/resourcemappingUpdateResourceMappingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "resourceMapping", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/resourcemappingResourceMappingCreateUpdate" + } + } + ], + "tags": [ + "ResourceMappingService" + ] + } + } + }, + "definitions": { + "attributesValue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "generated uuid in database" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata" + }, + "attributeId": { + "type": "string" + }, + "value": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "string" + }, + "title": "list of attribute values that this value is related to (attribute group)" + }, + "grants": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/kasregistryKeyAccessServer" + }, + "title": "list of key access servers" + }, + "state": { + "$ref": "#/definitions/commonStateTypeEnum", + "title": "active by default until explicitly deactivated" + } + } + }, + "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" + }, + "description": { + "type": "string", + "title": "optional long description" + } + }, + "title": "Struct to uniquely identify a resource with optional additional metadata" + }, + "commonMetadataMutable": { + "type": "object", + "properties": { + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "optional short description" + }, + "description": { + "type": "string", + "title": "optional long description" + } + } + }, + "commonStateTypeEnum": { + "type": "string", + "enum": [ + "STATE_TYPE_ENUM_UNSPECIFIED", + "STATE_TYPE_ENUM_ACTIVE", + "STATE_TYPE_ENUM_INACTIVE", + "STATE_TYPE_ENUM_ANY" + ], + "default": "STATE_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" + }, + "kasregistryKeyAccessServer": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata" + }, + "uri": { + "type": "string", + "title": "Address of a KAS instance" + }, + "publicKey": { + "$ref": "#/definitions/kasregistryPublicKey" + } + }, + "title": "Descriptor for a KAS" + }, + "kasregistryPublicKey": { + "type": "object", + "properties": { + "remote": { + "type": "string", + "title": "kas public key url - optional since can also be retrieved via public key" + }, + "local": { + "type": "string", + "title": "public key - optional since can also be retrieved via url" + } + } + }, + "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 }" + }, + "resourcemappingCreateResourceMappingResponse": { + "type": "object", + "properties": { + "resourceMapping": { + "$ref": "#/definitions/resourcemappingResourceMapping" + } + } + }, + "resourcemappingDeleteResourceMappingResponse": { + "type": "object", + "properties": { + "resourceMapping": { + "$ref": "#/definitions/resourcemappingResourceMapping" + } + } + }, + "resourcemappingGetResourceMappingResponse": { + "type": "object", + "properties": { + "resourceMapping": { + "$ref": "#/definitions/resourcemappingResourceMapping" + } + } + }, + "resourcemappingListResourceMappingsResponse": { + "type": "object", + "properties": { + "resourceMappings": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/resourcemappingResourceMapping" + } + } + } + }, + "resourcemappingResourceMapping": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata" + }, + "attributeValue": { + "$ref": "#/definitions/attributesValue" + }, + "terms": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "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 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": { + "resourceMapping": { + "$ref": "#/definitions/resourcemappingResourceMapping" + } + } + }, + "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/subjectmapping/subject_mapping.swagger.json b/docs/openapi/subjectmapping/subject_mapping.swagger.json new file mode 100644 index 0000000000..2b787e9867 --- /dev/null +++ b/docs/openapi/subjectmapping/subject_mapping.swagger.json @@ -0,0 +1,435 @@ +{ + "swagger": "2.0", + "info": { + "title": "subjectmapping/subject_mapping.proto", + "version": "version not set" + }, + "tags": [ + { + "name": "SubjectMappingService" + } + ], + "consumes": [ + "application/json" + ], + "produces": [ + "application/json" + ], + "paths": { + "/subject-mappings": { + "get": { + "operationId": "SubjectMappingService_ListSubjectMappings", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/subjectmappingListSubjectMappingsResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "tags": [ + "SubjectMappingService" + ] + }, + "post": { + "operationId": "SubjectMappingService_CreateSubjectMapping", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/subjectmappingCreateSubjectMappingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "subjectMapping", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/subjectmappingSubjectMappingCreateUpdate" + } + } + ], + "tags": [ + "SubjectMappingService" + ] + } + }, + "/subject-mappings/{id}": { + "get": { + "operationId": "SubjectMappingService_GetSubjectMapping", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/subjectmappingGetSubjectMappingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "SubjectMappingService" + ] + }, + "delete": { + "operationId": "SubjectMappingService_DeleteSubjectMapping", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/subjectmappingDeleteSubjectMappingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + } + ], + "tags": [ + "SubjectMappingService" + ] + }, + "post": { + "operationId": "SubjectMappingService_UpdateSubjectMapping", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/subjectmappingUpdateSubjectMappingResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/rpcStatus" + } + } + }, + "parameters": [ + { + "name": "id", + "in": "path", + "required": true, + "type": "string" + }, + { + "name": "subjectMapping", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/subjectmappingSubjectMappingCreateUpdate" + } + } + ], + "tags": [ + "SubjectMappingService" + ] + } + } + }, + "definitions": { + "attributesValue": { + "type": "object", + "properties": { + "id": { + "type": "string", + "title": "generated uuid in database" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata" + }, + "attributeId": { + "type": "string" + }, + "value": { + "type": "string" + }, + "members": { + "type": "array", + "items": { + "type": "string" + }, + "title": "list of attribute values that this value is related to (attribute group)" + }, + "grants": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/kasregistryKeyAccessServer" + }, + "title": "list of key access servers" + }, + "state": { + "$ref": "#/definitions/commonStateTypeEnum", + "title": "active by default until explicitly deactivated" + } + } + }, + "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" + }, + "description": { + "type": "string", + "title": "optional long description" + } + }, + "title": "Struct to uniquely identify a resource with optional additional metadata" + }, + "commonMetadataMutable": { + "type": "object", + "properties": { + "labels": { + "type": "object", + "additionalProperties": { + "type": "string" + }, + "title": "optional short description" + }, + "description": { + "type": "string", + "title": "optional long description" + } + } + }, + "commonStateTypeEnum": { + "type": "string", + "enum": [ + "STATE_TYPE_ENUM_UNSPECIFIED", + "STATE_TYPE_ENUM_ACTIVE", + "STATE_TYPE_ENUM_INACTIVE", + "STATE_TYPE_ENUM_ANY" + ], + "default": "STATE_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" + }, + "kasregistryKeyAccessServer": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata" + }, + "uri": { + "type": "string", + "title": "Address of a KAS instance" + }, + "publicKey": { + "$ref": "#/definitions/kasregistryPublicKey" + } + }, + "title": "Descriptor for a KAS" + }, + "kasregistryPublicKey": { + "type": "object", + "properties": { + "remote": { + "type": "string", + "title": "kas public key url - optional since can also be retrieved via public key" + }, + "local": { + "type": "string", + "title": "public key - optional since can also be retrieved via url" + } + } + }, + "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" + } + } + } + }, + "subjectmappingCreateSubjectMappingResponse": { + "type": "object", + "properties": { + "subjectMapping": { + "$ref": "#/definitions/subjectmappingSubjectMapping" + } + } + }, + "subjectmappingDeleteSubjectMappingResponse": { + "type": "object", + "properties": { + "subjectMapping": { + "$ref": "#/definitions/subjectmappingSubjectMapping" + } + } + }, + "subjectmappingGetSubjectMappingResponse": { + "type": "object", + "properties": { + "subjectMapping": { + "$ref": "#/definitions/subjectmappingSubjectMapping" + } + } + }, + "subjectmappingListSubjectMappingsResponse": { + "type": "object", + "properties": { + "subjectMappings": { + "type": "array", + "items": { + "type": "object", + "$ref": "#/definitions/subjectmappingSubjectMapping" + } + } + } + }, + "subjectmappingSubjectMapping": { + "type": "object", + "properties": { + "id": { + "type": "string" + }, + "metadata": { + "$ref": "#/definitions/commonMetadata", + "title": "TODO should this be a list of values?" + }, + "attributeValue": { + "$ref": "#/definitions/attributesValue", + "title": "Attribute Value to be mapped to" + }, + "subjectAttribute": { + "type": "string", + "title": "Resource Attribute Key; NOT Attribute Definition Attribute name" + }, + "subjectValues": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The list of comparison values for a resource's \u003cattribute\u003e value" + }, + "operator": { + "$ref": "#/definitions/subjectmappingSubjectMappingOperatorEnum", + "description": "TODO future - add features or idea of pattern/regex like ACSE? like username regex to pull domain from subject attribute\n or treat the subject values as regex patterns applied to subject attribute", + "title": "the operator" + } + } + }, + "subjectmappingSubjectMappingCreateUpdate": { + "type": "object", + "properties": { + "metadata": { + "$ref": "#/definitions/commonMetadataMutable" + }, + "attributeValueId": { + "type": "string", + "title": "Attribute Value to be mapped to" + }, + "subjectAttribute": { + "type": "string", + "title": "Resource Attribute Key; NOT Attribute Definition Attribute name" + }, + "subjectValues": { + "type": "array", + "items": { + "type": "string" + }, + "title": "The list of comparison values for a resource's \u003cattribute\u003e value" + }, + "operator": { + "$ref": "#/definitions/subjectmappingSubjectMappingOperatorEnum", + "description": "TODO future - add features or idea of pattern/regex like ACSE? like username regex to pull domain from subject attribute\n or treat the subject values as regex patterns applied to subject attribute", + "title": "the operator" + } + } + }, + "subjectmappingSubjectMappingOperatorEnum": { + "type": "string", + "enum": [ + "SUBJECT_MAPPING_OPERATOR_ENUM_UNSPECIFIED", + "SUBJECT_MAPPING_OPERATOR_ENUM_IN", + "SUBJECT_MAPPING_OPERATOR_ENUM_NOT_IN" + ], + "default": "SUBJECT_MAPPING_OPERATOR_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" + }, + "subjectmappingUpdateSubjectMappingResponse": { + "type": "object", + "properties": { + "subjectMapping": { + "$ref": "#/definitions/subjectmappingSubjectMapping" + } + } + } + } +} diff --git a/proto/attributes/attributes.proto b/proto/attributes/attributes.proto index 2b3c242d9c..a763ef6532 100644 --- a/proto/attributes/attributes.proto +++ b/proto/attributes/attributes.proto @@ -37,6 +37,9 @@ message Attribute { repeated Value values = 7; repeated kasregistry.KeyAccessServer grants = 8; + + // active by default until explicitly deactivated + common.StateTypeEnum state = 9; } message AttributeCreateUpdate { @@ -74,6 +77,9 @@ message Value { // list of key access servers repeated kasregistry.KeyAccessServer grants = 6; + + // active by default until explicitly deactivated + common.StateTypeEnum state = 7; } message ValueCreateUpdate { @@ -103,7 +109,10 @@ message ValueKeyAccessServer { Attribute Service Definitions */ -message ListAttributesRequest {} +message ListAttributesRequest { + // ACTIVE by default when not specified + common.StateTypeEnum state = 1; +} message ListAttributesResponse { repeated Attribute attributes = 1; } @@ -130,10 +139,10 @@ message UpdateAttributeResponse { Attribute attribute = 1; } -message DeleteAttributeRequest { +message DeactivateAttributeRequest { string id = 1 [(buf.validate.field).required = true]; } -message DeleteAttributeResponse { +message DeactivateAttributeResponse { Attribute attribute = 1; } @@ -149,6 +158,8 @@ message GetAttributeValueResponse { message ListAttributeValuesRequest { string attribute_id = 1 [(buf.validate.field).required = true]; + // ACTIVE by default when not specified + common.StateTypeEnum state = 2; } message ListAttributeValuesResponse { repeated Value values = 1; @@ -171,10 +182,10 @@ message UpdateAttributeValueResponse { Value value = 1; } -message DeleteAttributeValueRequest { +message DeactivateAttributeValueRequest { string id = 1 [(buf.validate.field).required = true]; } -message DeleteAttributeValueResponse { +message DeactivateAttributeValueResponse { Value value = 1; } @@ -219,72 +230,106 @@ message RemoveKeyAccessServerFromValueResponse { /// service AttributesService { /* - List Attributes - Example: - grpcurl -plaintext localhost:9000 attributes.AttributesService/ListAttributes - - Response: - { - "attributes": [ - { - "values": [ - { - "members": [], - "grants": [ - { - "id": "bb50eaac-0d95-4f28-9a36-9bbf412a7b95", - "metadata": null, - "uri": "kas10", - "public_key": { - "remote": "https://example.com/kas" - } - } - ], - "id": "e2140c39-f478-43cf-9559-0067d596654f", - "metadata": null, - "attribute_id": "", - "value": "value1" - } - ], - "grants": [ - { - "id": "bb50eaac-0d95-4f28-9a36-9bbf412a7b95", - "metadata": null, - "uri": "kas10", - "public_key": { - "remote": "https://example.com/kas" - } - } - ], - "id": "2dc75d97-f6a4-4036-9a6a-acc99171fff1", - "metadata": { - "labels": [], - "created_at": { - "seconds": "1706878441", - "nanos": 147178000 - }, - "updated_at": { - "seconds": "1706878441", - "nanos": 147178000 - }, - "description": "" - }, - "namespace": { - "id": "c85d126a-c2f2-4bb6-bc6d-a513015363cb", - "name": "demo.com" - }, - "name": "test", - "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF" - } - ] - } + NOTE: ACTIVE state by default, INACTIVE or ANY when specified + Request: + grpcurl -plaintext localhost:9000 attributes.AttributesService/ListAttributes + OR (for inactive) + grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 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", + "state": "STATE_TYPE_ENUM_ACTIVE" + } + ], + "state": "STATE_TYPE_ENUM_ACTIVE" + } + ], + "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", + "state": "STATE_TYPE_ENUM_ACTIVE" + } + ], + "state": "STATE_TYPE_ENUM_ACTIVE" + } + ] + } */ rpc ListAttributes(ListAttributesRequest) returns (ListAttributesResponse) {} /* List Values - Example: - grpcurl -plaintext -d '{"attribute_id": "attribute_id"}' localhost:8080 attributes.AttributesService/ListValues + + Request: + NOTE: ACTIVE state by default, INACTIVE or ANY when specified + grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 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 ... + } + ], + "state": "STATE_TYPE_ENUM_INACTIVE" + } + ] + } + */ rpc ListAttributeValues(ListAttributeValuesRequest) returns (ListAttributeValuesResponse) {} @@ -292,9 +337,25 @@ service AttributesService { option (google.api.http) = {get: "/attributes/{id}"}; } - // Create Attribute - // Example: - // grpcurl -plaintext -d '{"attribute": {"namespace_id": "namespace_id", "name": "attribute_name", "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"}}' localhost:8080 attributes.AttributesService/CreateAttribute + /* Create Attribute + Request: + grpcurl -plaintext -d '{"attribute": {"namespace_id": "namespace_id", "name": "attribute_name", "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"}}' localhost:9000 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" + } + } + */ rpc CreateAttribute(CreateAttributeRequest) returns (CreateAttributeResponse) { option (google.api.http) = { post: "/attributes" @@ -309,7 +370,7 @@ service AttributesService { }; } - rpc DeleteAttribute(DeleteAttributeRequest) returns (DeleteAttributeResponse) { + rpc DeactivateAttribute(DeactivateAttributeRequest) returns (DeactivateAttributeResponse) { option (google.api.http) = {delete: "/attributes/{id}"}; } @@ -320,7 +381,7 @@ service AttributesService { // Create Attribute Value // Example: - // grpcurl -plaintext -d '{"attribute_id": "attribute_id", "value": {"value": "value"}}' localhost:8080 attributes.AttributesService/CreateValue + // grpcurl -plaintext -d '{"attribute_id": "attribute_id", "value": {"value": "value"}}' localhost:8080 attributes.AttributesService/CreateAttributeValue rpc CreateAttributeValue(CreateAttributeValueRequest) returns (CreateAttributeValueResponse) { option (google.api.http) = { post: "/attributes/{attribute_id}/values" @@ -335,7 +396,7 @@ service AttributesService { }; } - rpc DeleteAttributeValue(DeleteAttributeValueRequest) returns (DeleteAttributeValueResponse) { + rpc DeactivateAttributeValue(DeactivateAttributeValueRequest) returns (DeactivateAttributeValueResponse) { option (google.api.http) = {delete: "/attributes/_/values/{id}"}; } diff --git a/proto/common/common.proto b/proto/common/common.proto index b74a3e3970..7422e6642d 100644 --- a/proto/common/common.proto +++ b/proto/common/common.proto @@ -22,3 +22,15 @@ message MetadataMutable { // optional long description string description = 4; } + +// 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 +enum StateTypeEnum { + STATE_TYPE_ENUM_UNSPECIFIED = 0; + STATE_TYPE_ENUM_ACTIVE = 1; + STATE_TYPE_ENUM_INACTIVE = 2; + STATE_TYPE_ENUM_ANY = 3; +} + +// message ListOptions { + // TODO: limit/offset [https://github.com/opentdf/opentdf-v2-poc/issues/55] +// } \ No newline at end of file diff --git a/proto/namespaces/namespaces.proto b/proto/namespaces/namespaces.proto index 79e6844d23..82873f98ed 100644 --- a/proto/namespaces/namespaces.proto +++ b/proto/namespaces/namespaces.proto @@ -4,12 +4,13 @@ package namespaces; import "buf/validate/validate.proto"; import "google/api/annotations.proto"; +import "common/common.proto"; message Namespace { // generated uuid in database string id = 1; // used to partition Attribute Definitions, support by namespace AuthN and enable federation - string name = 5 [ + string name = 2 [ (buf.validate.field).required = true, (buf.validate.field).string.max_len = 253, (buf.validate.field).cel = { @@ -18,6 +19,9 @@ message Namespace { expression: "this.matches('^([a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?\\\\.)+[a-zA-Z]{2,}$')" } ]; + + // active by default until explicitly deactivated + common.StateTypeEnum state = 3; } /* @@ -33,7 +37,10 @@ message GetNamespaceResponse { Namespace namespace = 1; } -message ListNamespacesRequest {} +message ListNamespacesRequest { + // ACTIVE by default when not specified + common.StateTypeEnum state = 1; +} message ListNamespacesResponse { repeated Namespace namespaces = 1; } @@ -53,22 +60,58 @@ message UpdateNamespaceResponse { Namespace namespace = 1; } -message DeleteNamespaceRequest { +message DeactivateNamespaceRequest { string id = 1 [(buf.validate.field).required = true]; } -message DeleteNamespaceResponse {} +message DeactivateNamespaceResponse {} service NamespaceService { + + /* + Request: + grpcurl -plaintext -d '{"id": "namespace-id"}' localhost:9000 namespaces.NamespaceService/GetNamespace + Response: + { + "namespace": { + "id": "namespace-id", + "name": "namespace-name", + "state": "STATE_TYPE_ENUM_ACTIVE" + } + } + */ rpc GetNamespace(GetNamespaceRequest) returns (GetNamespaceResponse) { option (google.api.http) = { get: "/attributes/namespaces/{id}" }; } + + /* + NOTE: ACTIVE state by default, INACTIVE or ANY when specified + Request: + grpcurl -plaintext localhost:9000 namespaces.NamespaceService/ListNamespaces + Response: + { + "namespaces": [ + { + "id": "namespace-id", + "name": "namespace-name", + "state": "STATE_TYPE_ENUM_ACTIVE" + } + ] + } + */ rpc ListNamespaces(ListNamespacesRequest) returns (ListNamespacesResponse) { option (google.api.http) = { get: "/attributes/namespaces" }; } + + /* + Request: + grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace + Response: + { "namespace": { "id": "namespace-id" } } + */ rpc CreateNamespace(CreateNamespaceRequest) returns (CreateNamespaceResponse) { option (google.api.http) = { post: "/attributes/namespaces" @@ -79,74 +122,9 @@ service NamespaceService { put: "/attributes/namespaces/{id}" }; } - rpc DeleteNamespace(DeleteNamespaceRequest) returns (DeleteNamespaceResponse) { + rpc DeactivateNamespace(DeactivateNamespaceRequest) returns (DeactivateNamespaceResponse) { option (google.api.http) = { delete: "/attributes/namespaces/{id}" }; } -} - -/* - - Namespace Service Examples - - Create a Namespace: - Request: - grpcurl -d '{"name":"example.com"}' -plaintext localhost:9000 namespaces.NamespaceService/CreateNamespace - Response: - { - "namespace": { - "id": "b3d9e3e0-0b0a-4e1a-8b0a-0b0a0b0a0b0a", - "name": "example.com" - } - } - - List Namespaces (assuming 3 have been created) - Request: - grpcurl -plaintext -d '{}' localhost:9000 namespaces.NamespaceService/ListNamespaces - Response: - { - "namespaces": [ - { - "id": "b3d9e3e0-0b0a-4e1a-8b0a-0b0a0b0a0b0a", - "name": "example.com" - }, - { - "id": "b3d9e3e0-0b0a-4e1a-8b0a-0b0a0b0a0b0b", - "name": "loremipsum.com" - }, - { - "id": "b3d9e3e0-0b0a-4e1a-8b0a-0b0a0b0a0b0c", - "name": "helloworld.com" - } - ] - } - - Get a Namespace: - Request: - grpcurl -plaintext -d '{"id":"453b4bb8-1098-480f-ad13-38b5ef903896"}' localhost:9000 namespaces.NamespaceService/GetNamespace - Response: - { - "namespace": { - "id": "b3d9e3e0-0b0a-4e1a-8b0a-0b0a0b0a0b0a", - "name": "example.com" - } - } - - Update a Namespace: - Request: - grpcurl -plaintext -d '{"id":"453b4bb8-1098-480f-ad13-38b5ef903896","name":"example-test.com"}' localhost:9000 namespaces.NamespaceService/UpdateNamespace - Response: - { - "namespace": { - "id": "b3d9e3e0-0b0a-4e1a-8b0a-0b0a0b0a0b0a", - "name": "example.com" - } - } - - Delete a Namespace: - Request: - grpcurl -plaintext -d '{"id":"453b4bb8-1098-480f-ad13-38b5ef903896"}' localhost:9000 namespaces.NamespaceService/DeleteNamespace - Response: - {} -*/ \ No newline at end of file +} \ No newline at end of file diff --git a/sdkjava/com/attributes/Attribute.java b/sdkjava/com/attributes/Attribute.java index bd6c5791ff..a2dca50c3c 100644 --- a/sdkjava/com/attributes/Attribute.java +++ b/sdkjava/com/attributes/Attribute.java @@ -22,6 +22,7 @@ private Attribute() { rule_ = 0; values_ = java.util.Collections.emptyList(); grants_ = java.util.Collections.emptyList(); + state_ = 0; } @java.lang.Override @@ -315,6 +316,32 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( return grants_.get(index); } + public static final int STATE_FIELD_NUMBER = 9; + private int state_ = 0; + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 9 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 9 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -350,6 +377,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) for (int i = 0; i < grants_.size(); i++) { output.writeMessage(8, grants_.get(i)); } + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + output.writeEnum(9, state_); + } getUnknownFields().writeTo(output); } @@ -385,6 +415,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(8, grants_.get(i)); } + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(9, state_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -419,6 +453,7 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getValuesList())) return false; if (!getGrantsList() .equals(other.getGrantsList())) return false; + if (state_ != other.state_) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -452,6 +487,8 @@ public int hashCode() { hash = (37 * hash) + GRANTS_FIELD_NUMBER; hash = (53 * hash) + getGrantsList().hashCode(); } + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + state_; hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -619,6 +656,7 @@ public Builder clear() { grantsBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000040); + state_ = 0; return this; } @@ -696,6 +734,9 @@ private void buildPartial0(com.attributes.Attribute result) { if (((from_bitField0_ & 0x00000010) != 0)) { result.rule_ = rule_; } + if (((from_bitField0_ & 0x00000080) != 0)) { + result.state_ = state_; + } result.bitField0_ |= to_bitField0_; } @@ -814,6 +855,9 @@ public Builder mergeFrom(com.attributes.Attribute other) { } } } + if (other.state_ != 0) { + setStateValue(other.getStateValue()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -895,6 +939,11 @@ public Builder mergeFrom( } break; } // case 66 + case 72: { + state_ = input.readEnum(); + bitField0_ |= 0x00000080; + break; + } // case 72 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -1942,6 +1991,79 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder( } return grantsBuilder_; } + + private int state_ = 0; + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 9 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 9 [json_name = "state"]; + * @param value The enum numeric value on the wire for state to set. + * @return This builder for chaining. + */ + public Builder setStateValue(int value) { + state_ = value; + bitField0_ |= 0x00000080; + onChanged(); + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 9 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override + public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 9 [json_name = "state"]; + * @param value The state to set. + * @return This builder for chaining. + */ + public Builder setState(com.common.StateTypeEnum value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000080; + state_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 9 [json_name = "state"]; + * @return This builder for chaining. + */ + public Builder clearState() { + bitField0_ = (bitField0_ & ~0x00000080); + state_ = 0; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdkjava/com/attributes/AttributeOrBuilder.java b/sdkjava/com/attributes/AttributeOrBuilder.java index 0f40c8c387..26b0d55796 100644 --- a/sdkjava/com/attributes/AttributeOrBuilder.java +++ b/sdkjava/com/attributes/AttributeOrBuilder.java @@ -160,4 +160,23 @@ com.attributes.ValueOrBuilder getValuesOrBuilder( */ com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( int index); + + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 9 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + int getStateValue(); + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 9 [json_name = "state"]; + * @return The state. + */ + com.common.StateTypeEnum getState(); } diff --git a/sdkjava/com/attributes/AttributesProto.java b/sdkjava/com/attributes/AttributesProto.java index 57a70b5322..dd2f77e5f9 100644 --- a/sdkjava/com/attributes/AttributesProto.java +++ b/sdkjava/com/attributes/AttributesProto.java @@ -86,15 +86,15 @@ public static void registerAllExtensions( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_attributes_UpdateAttributeResponse_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor - internal_static_attributes_DeleteAttributeRequest_descriptor; + internal_static_attributes_DeactivateAttributeRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_attributes_DeleteAttributeRequest_fieldAccessorTable; + internal_static_attributes_DeactivateAttributeRequest_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor - internal_static_attributes_DeleteAttributeResponse_descriptor; + internal_static_attributes_DeactivateAttributeResponse_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_attributes_DeleteAttributeResponse_fieldAccessorTable; + internal_static_attributes_DeactivateAttributeResponse_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_attributes_GetAttributeValueRequest_descriptor; static final @@ -136,15 +136,15 @@ public static void registerAllExtensions( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_attributes_UpdateAttributeValueResponse_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor - internal_static_attributes_DeleteAttributeValueRequest_descriptor; + internal_static_attributes_DeactivateAttributeValueRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_attributes_DeleteAttributeValueRequest_fieldAccessorTable; + internal_static_attributes_DeactivateAttributeValueRequest_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor - internal_static_attributes_DeleteAttributeValueResponse_descriptor; + internal_static_attributes_DeactivateAttributeValueResponse_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_attributes_DeleteAttributeValueResponse_fieldAccessorTable; + internal_static_attributes_DeactivateAttributeValueResponse_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor internal_static_attributes_AssignKeyAccessServerToAttributeRequest_descriptor; static final @@ -198,7 +198,7 @@ public static void registerAllExtensions( "s\032\033buf/validate/validate.proto\032\023common/c" + "ommon.proto\032\034google/api/annotations.prot" + "o\032,kasregistry/key_access_server_registr" + - "y.proto\032\033namespaces/namespaces.proto\"\267\002\n" + + "y.proto\032\033namespaces/namespaces.proto\"\344\002\n" + "\tAttribute\022\016\n\002id\030\001 \001(\tR\002id\022,\n\010metadata\030\002" + " \001(\0132\020.common.MetadataR\010metadata\0223\n\tname" + "space\030\003 \001(\0132\025.namespaces.NamespaceR\tname" + @@ -206,158 +206,163 @@ public static void registerAllExtensions( "!.attributes.AttributeRuleTypeEnumB\013\272H\010\202" + "\001\002\020\001\310\001\001R\004rule\022)\n\006values\030\007 \003(\0132\021.attribut" + "es.ValueR\006values\0224\n\006grants\030\010 \003(\0132\034.kasre" + - "gistry.KeyAccessServerR\006grants\"\216\002\n\025Attri" + - "buteCreateUpdate\0223\n\010metadata\030\001 \001(\0132\027.com" + - "mon.MetadataMutableR\010metadata\022)\n\014namespa" + - "ce_id\030\002 \001(\tB\006\272H\003\310\001\001R\013namespaceId\022\032\n\004name" + - "\030\003 \001(\tB\006\272H\003\310\001\001R\004name\022B\n\004rule\030\004 \001(\0162!.att" + - "ributes.AttributeRuleTypeEnumB\013\272H\010\202\001\002\020\001\310" + - "\001\001R\004rule\0225\n\006values\030\005 \003(\0132\035.attributes.Va" + - "lueCreateUpdateR\006values\"\326\001\n\005Value\022\016\n\002id\030" + - "\001 \001(\tR\002id\022,\n\010metadata\030\002 \001(\0132\020.common.Met" + - "adataR\010metadata\022)\n\014attribute_id\030\003 \001(\tB\006\272" + - "H\003\310\001\001R\013attributeId\022\024\n\005value\030\004 \001(\tR\005value" + - "\022\030\n\007members\030\005 \003(\tR\007members\0224\n\006grants\030\006 \003" + - "(\0132\034.kasregistry.KeyAccessServerR\006grants" + - "\"x\n\021ValueCreateUpdate\0223\n\010metadata\030\001 \001(\0132" + - "\027.common.MetadataMutableR\010metadata\022\024\n\005va" + - "lue\030\002 \001(\tR\005value\022\030\n\007members\030\003 \003(\tR\007membe" + - "rs\"n\n\030AttributeKeyAccessServer\022!\n\014attrib" + - "ute_id\030\001 \001(\tR\013attributeId\022/\n\024key_access_" + - "server_id\030\002 \001(\tR\021keyAccessServerId\"b\n\024Va" + - "lueKeyAccessServer\022\031\n\010value_id\030\001 \001(\tR\007va" + - "lueId\022/\n\024key_access_server_id\030\002 \001(\tR\021key" + - "AccessServerId\"\027\n\025ListAttributesRequest\"" + - "O\n\026ListAttributesResponse\0225\n\nattributes\030" + - "\001 \003(\0132\025.attributes.AttributeR\nattributes" + - "\"-\n\023GetAttributeRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003" + - "\310\001\001R\002id\"K\n\024GetAttributeResponse\0223\n\tattri" + - "bute\030\001 \001(\0132\025.attributes.AttributeR\tattri" + - "bute\"a\n\026CreateAttributeRequest\022G\n\tattrib" + - "ute\030\001 \001(\0132!.attributes.AttributeCreateUp" + - "dateB\006\272H\003\310\001\001R\tattribute\"N\n\027CreateAttribu" + - "teResponse\0223\n\tattribute\030\001 \001(\0132\025.attribut" + - "es.AttributeR\tattribute\"y\n\026UpdateAttribu" + - "teRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\022G\n\tatt" + - "ribute\030\002 \001(\0132!.attributes.AttributeCreat" + - "eUpdateB\006\272H\003\310\001\001R\tattribute\"N\n\027UpdateAttr" + - "ibuteResponse\0223\n\tattribute\030\001 \001(\0132\025.attri" + - "butes.AttributeR\tattribute\"0\n\026DeleteAttr" + - "ibuteRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"N\n\027" + - "DeleteAttributeResponse\0223\n\tattribute\030\001 \001" + - "(\0132\025.attributes.AttributeR\tattribute\"2\n\030" + - "GetAttributeValueRequest\022\026\n\002id\030\001 \001(\tB\006\272H" + - "\003\310\001\001R\002id\"D\n\031GetAttributeValueResponse\022\'\n" + - "\005value\030\001 \001(\0132\021.attributes.ValueR\005value\"G" + - "\n\032ListAttributeValuesRequest\022)\n\014attribut" + - "e_id\030\001 \001(\tB\006\272H\003\310\001\001R\013attributeId\"H\n\033ListA" + - "ttributeValuesResponse\022)\n\006values\030\001 \003(\0132\021" + - ".attributes.ValueR\006values\"\205\001\n\033CreateAttr" + - "ibuteValueRequest\022)\n\014attribute_id\030\001 \001(\tB" + - "\006\272H\003\310\001\001R\013attributeId\022;\n\005value\030\002 \001(\0132\035.at" + - "tributes.ValueCreateUpdateB\006\272H\003\310\001\001R\005valu" + - "e\"G\n\034CreateAttributeValueResponse\022\'\n\005val" + - "ue\030\001 \001(\0132\021.attributes.ValueR\005value\"\235\001\n\033U" + - "pdateAttributeValueRequest\022)\n\014attribute_" + - "id\030\001 \001(\tB\006\272H\003\310\001\001R\013attributeId\022\026\n\002id\030\002 \001(" + - "\tB\006\272H\003\310\001\001R\002id\022;\n\005value\030\003 \001(\0132\035.attribute" + - "s.ValueCreateUpdateB\006\272H\003\310\001\001R\005value\"G\n\034Up" + - "dateAttributeValueResponse\022\'\n\005value\030\001 \001(" + - "\0132\021.attributes.ValueR\005value\"5\n\033DeleteAtt" + - "ributeValueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002" + - "id\"G\n\034DeleteAttributeValueResponse\022\'\n\005va" + - "lue\030\001 \001(\0132\021.attributes.ValueR\005value\"\216\001\n\'" + - "AssignKeyAccessServerToAttributeRequest\022" + - "c\n\033attribute_key_access_server\030\001 \001(\0132$.a" + - "ttributes.AttributeKeyAccessServerR\030attr" + - "ibuteKeyAccessServer\"\217\001\n(AssignKeyAccess" + - "ServerToAttributeResponse\022c\n\033attribute_k" + - "ey_access_server\030\001 \001(\0132$.attributes.Attr" + - "ibuteKeyAccessServerR\030attributeKeyAccess" + - "Server\"\220\001\n)RemoveKeyAccessServerFromAttr" + - "ibuteRequest\022c\n\033attribute_key_access_ser" + - "ver\030\001 \001(\0132$.attributes.AttributeKeyAcces" + - "sServerR\030attributeKeyAccessServer\"\221\001\n*Re" + - "moveKeyAccessServerFromAttributeResponse" + - "\022c\n\033attribute_key_access_server\030\001 \001(\0132$." + - "attributes.AttributeKeyAccessServerR\030att" + - "ributeKeyAccessServer\"~\n#AssignKeyAccess" + - "ServerToValueRequest\022W\n\027value_key_access" + - "_server\030\001 \001(\0132 .attributes.ValueKeyAcces" + - "sServerR\024valueKeyAccessServer\"\177\n$AssignK" + - "eyAccessServerToValueResponse\022W\n\027value_k" + - "ey_access_server\030\001 \001(\0132 .attributes.Valu" + - "eKeyAccessServerR\024valueKeyAccessServer\"\200" + - "\001\n%RemoveKeyAccessServerFromValueRequest" + - "\022W\n\027value_key_access_server\030\001 \001(\0132 .attr" + - "ibutes.ValueKeyAccessServerR\024valueKeyAcc" + - "essServer\"\201\001\n&RemoveKeyAccessServerFromV" + - "alueResponse\022W\n\027value_key_access_server\030" + - "\001 \001(\0132 .attributes.ValueKeyAccessServerR" + - "\024valueKeyAccessServer*\263\001\n\025AttributeRuleT" + - "ypeEnum\022(\n$ATTRIBUTE_RULE_TYPE_ENUM_UNSP" + - "ECIFIED\020\000\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_AL" + - "L_OF\020\001\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_ANY_O" + - "F\020\002\022&\n\"ATTRIBUTE_RULE_TYPE_ENUM_HIERARCH" + - "Y\020\0032\354\020\n\021AttributesService\022Y\n\016ListAttribu" + - "tes\022!.attributes.ListAttributesRequest\032\"" + - ".attributes.ListAttributesResponse\"\000\022h\n\023" + - "ListAttributeValues\022&.attributes.ListAtt" + - "ributeValuesRequest\032\'.attributes.ListAtt" + - "ributeValuesResponse\"\000\022k\n\014GetAttribute\022\037" + - ".attributes.GetAttributeRequest\032 .attrib" + - "utes.GetAttributeResponse\"\030\202\323\344\223\002\022\022\020/attr" + - "ibutes/{id}\022z\n\017CreateAttribute\022\".attribu" + - "tes.CreateAttributeRequest\032#.attributes." + - "CreateAttributeResponse\"\036\202\323\344\223\002\030\"\013/attrib" + - "utes:\tattribute\022\177\n\017UpdateAttribute\022\".att" + - "ributes.UpdateAttributeRequest\032#.attribu" + - "tes.UpdateAttributeResponse\"#\202\323\344\223\002\035\"\020/at" + - "tributes/{id}:\tattribute\022t\n\017DeleteAttrib" + - "ute\022\".attributes.DeleteAttributeRequest\032" + - "#.attributes.DeleteAttributeResponse\"\030\202\323" + - "\344\223\002\022*\020/attributes/{id}\022\203\001\n\021GetAttributeV" + - "alue\022$.attributes.GetAttributeValueReque" + - "st\032%.attributes.GetAttributeValueRespons" + - "e\"!\202\323\344\223\002\033\022\031/attributes/_/values/{id}\022\233\001\n" + - "\024CreateAttributeValue\022\'.attributes.Creat" + - "eAttributeValueRequest\032(.attributes.Crea" + - "teAttributeValueResponse\"0\202\323\344\223\002*\"!/attri" + - "butes/{attribute_id}/values:\005value\022\240\001\n\024U" + - "pdateAttributeValue\022\'.attributes.UpdateA" + - "ttributeValueRequest\032(.attributes.Update" + - "AttributeValueResponse\"5\202\323\344\223\002/\"&/attribu" + - "tes/{attribute_id}/values/{id}:\005value\022\214\001" + - "\n\024DeleteAttributeValue\022\'.attributes.Dele" + - "teAttributeValueRequest\032(.attributes.Del" + - "eteAttributeValueResponse\"!\202\323\344\223\002\033*\031/attr" + - "ibutes/_/values/{id}\022\326\001\n AssignKeyAccess" + - "ServerToAttribute\0223.attributes.AssignKey" + - "AccessServerToAttributeRequest\0324.attribu" + - "tes.AssignKeyAccessServerToAttributeResp" + - "onse\"G\202\323\344\223\002A\"\"/attributes/keyaccessserve" + - "r/assign:\033attribute_key_access_server\022\334\001" + - "\n\"RemoveKeyAccessServerFromAttribute\0225.a" + - "ttributes.RemoveKeyAccessServerFromAttri" + - "buteRequest\0326.attributes.RemoveKeyAccess" + - "ServerFromAttributeResponse\"G\202\323\344\223\002A\"\"/at" + - "tributes/keyaccessserver/remove:\033attribu" + - "te_key_access_server\022\315\001\n\034AssignKeyAccess" + - "ServerToValue\022/.attributes.AssignKeyAcce" + - "ssServerToValueRequest\0320.attributes.Assi" + - "gnKeyAccessServerToValueResponse\"J\202\323\344\223\002D" + - "\")/attributes/values/keyaccessserver/ass" + - "ign:\027value_key_access_server\022\323\001\n\036RemoveK" + - "eyAccessServerFromValue\0221.attributes.Rem" + - "oveKeyAccessServerFromValueRequest\0322.att" + - "ributes.RemoveKeyAccessServerFromValueRe" + - "sponse\"J\202\323\344\223\002D\")/attributes/values/keyac" + - "cessserver/remove:\027value_key_access_serv" + - "erB\233\001\n\016com.attributesB\017AttributesProtoP\001" + - "Z0github.com/opentdf/opentdf-v2-poc/sdk/" + - "attributes\242\002\003AXX\252\002\nAttributes\312\002\nAttribut" + - "es\342\002\026Attributes\\GPBMetadata\352\002\nAttributes" + - "b\006proto3" + "gistry.KeyAccessServerR\006grants\022+\n\005state\030" + + "\t \001(\0162\025.common.StateTypeEnumR\005state\"\216\002\n\025" + + "AttributeCreateUpdate\0223\n\010metadata\030\001 \001(\0132" + + "\027.common.MetadataMutableR\010metadata\022)\n\014na" + + "mespace_id\030\002 \001(\tB\006\272H\003\310\001\001R\013namespaceId\022\032\n" + + "\004name\030\003 \001(\tB\006\272H\003\310\001\001R\004name\022B\n\004rule\030\004 \001(\0162" + + "!.attributes.AttributeRuleTypeEnumB\013\272H\010\202" + + "\001\002\020\001\310\001\001R\004rule\0225\n\006values\030\005 \003(\0132\035.attribut" + + "es.ValueCreateUpdateR\006values\"\203\002\n\005Value\022\016" + + "\n\002id\030\001 \001(\tR\002id\022,\n\010metadata\030\002 \001(\0132\020.commo" + + "n.MetadataR\010metadata\022)\n\014attribute_id\030\003 \001" + + "(\tB\006\272H\003\310\001\001R\013attributeId\022\024\n\005value\030\004 \001(\tR\005" + + "value\022\030\n\007members\030\005 \003(\tR\007members\0224\n\006grant" + + "s\030\006 \003(\0132\034.kasregistry.KeyAccessServerR\006g" + + "rants\022+\n\005state\030\007 \001(\0162\025.common.StateTypeE" + + "numR\005state\"x\n\021ValueCreateUpdate\0223\n\010metad" + + "ata\030\001 \001(\0132\027.common.MetadataMutableR\010meta" + + "data\022\024\n\005value\030\002 \001(\tR\005value\022\030\n\007members\030\003 " + + "\003(\tR\007members\"n\n\030AttributeKeyAccessServer" + + "\022!\n\014attribute_id\030\001 \001(\tR\013attributeId\022/\n\024k" + + "ey_access_server_id\030\002 \001(\tR\021keyAccessServ" + + "erId\"b\n\024ValueKeyAccessServer\022\031\n\010value_id" + + "\030\001 \001(\tR\007valueId\022/\n\024key_access_server_id\030" + + "\002 \001(\tR\021keyAccessServerId\"D\n\025ListAttribut" + + "esRequest\022+\n\005state\030\001 \001(\0162\025.common.StateT" + + "ypeEnumR\005state\"O\n\026ListAttributesResponse" + + "\0225\n\nattributes\030\001 \003(\0132\025.attributes.Attrib" + + "uteR\nattributes\"-\n\023GetAttributeRequest\022\026" + + "\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetAttributeRe" + + "sponse\0223\n\tattribute\030\001 \001(\0132\025.attributes.A" + + "ttributeR\tattribute\"a\n\026CreateAttributeRe" + + "quest\022G\n\tattribute\030\001 \001(\0132!.attributes.At" + + "tributeCreateUpdateB\006\272H\003\310\001\001R\tattribute\"N" + + "\n\027CreateAttributeResponse\0223\n\tattribute\030\001" + + " \001(\0132\025.attributes.AttributeR\tattribute\"y" + + "\n\026UpdateAttributeRequest\022\026\n\002id\030\001 \001(\tB\006\272H" + + "\003\310\001\001R\002id\022G\n\tattribute\030\002 \001(\0132!.attributes" + + ".AttributeCreateUpdateB\006\272H\003\310\001\001R\tattribut" + + "e\"N\n\027UpdateAttributeResponse\0223\n\tattribut" + + "e\030\001 \001(\0132\025.attributes.AttributeR\tattribut" + + "e\"4\n\032DeactivateAttributeRequest\022\026\n\002id\030\001 " + + "\001(\tB\006\272H\003\310\001\001R\002id\"R\n\033DeactivateAttributeRe" + + "sponse\0223\n\tattribute\030\001 \001(\0132\025.attributes.A" + + "ttributeR\tattribute\"2\n\030GetAttributeValue" + + "Request\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"D\n\031GetAt" + + "tributeValueResponse\022\'\n\005value\030\001 \001(\0132\021.at" + + "tributes.ValueR\005value\"t\n\032ListAttributeVa" + + "luesRequest\022)\n\014attribute_id\030\001 \001(\tB\006\272H\003\310\001" + + "\001R\013attributeId\022+\n\005state\030\002 \001(\0162\025.common.S" + + "tateTypeEnumR\005state\"H\n\033ListAttributeValu" + + "esResponse\022)\n\006values\030\001 \003(\0132\021.attributes." + + "ValueR\006values\"\205\001\n\033CreateAttributeValueRe" + + "quest\022)\n\014attribute_id\030\001 \001(\tB\006\272H\003\310\001\001R\013att" + + "ributeId\022;\n\005value\030\002 \001(\0132\035.attributes.Val" + + "ueCreateUpdateB\006\272H\003\310\001\001R\005value\"G\n\034CreateA" + + "ttributeValueResponse\022\'\n\005value\030\001 \001(\0132\021.a" + + "ttributes.ValueR\005value\"\235\001\n\033UpdateAttribu" + + "teValueRequest\022)\n\014attribute_id\030\001 \001(\tB\006\272H" + + "\003\310\001\001R\013attributeId\022\026\n\002id\030\002 \001(\tB\006\272H\003\310\001\001R\002i" + + "d\022;\n\005value\030\003 \001(\0132\035.attributes.ValueCreat" + + "eUpdateB\006\272H\003\310\001\001R\005value\"G\n\034UpdateAttribut" + + "eValueResponse\022\'\n\005value\030\001 \001(\0132\021.attribut" + + "es.ValueR\005value\"9\n\037DeactivateAttributeVa" + + "lueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n De" + + "activateAttributeValueResponse\022\'\n\005value\030" + + "\001 \001(\0132\021.attributes.ValueR\005value\"\216\001\n\'Assi" + + "gnKeyAccessServerToAttributeRequest\022c\n\033a" + + "ttribute_key_access_server\030\001 \001(\0132$.attri" + + "butes.AttributeKeyAccessServerR\030attribut" + + "eKeyAccessServer\"\217\001\n(AssignKeyAccessServ" + + "erToAttributeResponse\022c\n\033attribute_key_a" + + "ccess_server\030\001 \001(\0132$.attributes.Attribut" + + "eKeyAccessServerR\030attributeKeyAccessServ" + + "er\"\220\001\n)RemoveKeyAccessServerFromAttribut" + + "eRequest\022c\n\033attribute_key_access_server\030" + + "\001 \001(\0132$.attributes.AttributeKeyAccessSer" + + "verR\030attributeKeyAccessServer\"\221\001\n*Remove" + + "KeyAccessServerFromAttributeResponse\022c\n\033" + + "attribute_key_access_server\030\001 \001(\0132$.attr" + + "ibutes.AttributeKeyAccessServerR\030attribu" + + "teKeyAccessServer\"~\n#AssignKeyAccessServ" + + "erToValueRequest\022W\n\027value_key_access_ser" + + "ver\030\001 \001(\0132 .attributes.ValueKeyAccessSer" + + "verR\024valueKeyAccessServer\"\177\n$AssignKeyAc" + + "cessServerToValueResponse\022W\n\027value_key_a" + + "ccess_server\030\001 \001(\0132 .attributes.ValueKey" + + "AccessServerR\024valueKeyAccessServer\"\200\001\n%R" + + "emoveKeyAccessServerFromValueRequest\022W\n\027" + + "value_key_access_server\030\001 \001(\0132 .attribut" + + "es.ValueKeyAccessServerR\024valueKeyAccessS" + + "erver\"\201\001\n&RemoveKeyAccessServerFromValue" + + "Response\022W\n\027value_key_access_server\030\001 \001(" + + "\0132 .attributes.ValueKeyAccessServerR\024val" + + "ueKeyAccessServer*\263\001\n\025AttributeRuleTypeE" + + "num\022(\n$ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIF" + + "IED\020\000\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF" + + "\020\001\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF\020\002\022" + + "&\n\"ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY\020\0032" + + "\205\021\n\021AttributesService\022Y\n\016ListAttributes\022" + + "!.attributes.ListAttributesRequest\032\".att" + + "ributes.ListAttributesResponse\"\000\022h\n\023List" + + "AttributeValues\022&.attributes.ListAttribu" + + "teValuesRequest\032\'.attributes.ListAttribu" + + "teValuesResponse\"\000\022k\n\014GetAttribute\022\037.att" + + "ributes.GetAttributeRequest\032 .attributes" + + ".GetAttributeResponse\"\030\202\323\344\223\002\022\022\020/attribut" + + "es/{id}\022z\n\017CreateAttribute\022\".attributes." + + "CreateAttributeRequest\032#.attributes.Crea" + + "teAttributeResponse\"\036\202\323\344\223\002\030\"\013/attributes" + + ":\tattribute\022\177\n\017UpdateAttribute\022\".attribu" + + "tes.UpdateAttributeRequest\032#.attributes." + + "UpdateAttributeResponse\"#\202\323\344\223\002\035\"\020/attrib" + + "utes/{id}:\tattribute\022\200\001\n\023DeactivateAttri" + + "bute\022&.attributes.DeactivateAttributeReq" + + "uest\032\'.attributes.DeactivateAttributeRes" + + "ponse\"\030\202\323\344\223\002\022*\020/attributes/{id}\022\203\001\n\021GetA" + + "ttributeValue\022$.attributes.GetAttributeV" + + "alueRequest\032%.attributes.GetAttributeVal" + + "ueResponse\"!\202\323\344\223\002\033\022\031/attributes/_/values" + + "/{id}\022\233\001\n\024CreateAttributeValue\022\'.attribu" + + "tes.CreateAttributeValueRequest\032(.attrib" + + "utes.CreateAttributeValueResponse\"0\202\323\344\223\002" + + "*\"!/attributes/{attribute_id}/values:\005va" + + "lue\022\240\001\n\024UpdateAttributeValue\022\'.attribute" + + "s.UpdateAttributeValueRequest\032(.attribut" + + "es.UpdateAttributeValueResponse\"5\202\323\344\223\002/\"" + + "&/attributes/{attribute_id}/values/{id}:" + + "\005value\022\230\001\n\030DeactivateAttributeValue\022+.at" + + "tributes.DeactivateAttributeValueRequest" + + "\032,.attributes.DeactivateAttributeValueRe" + + "sponse\"!\202\323\344\223\002\033*\031/attributes/_/values/{id" + + "}\022\326\001\n AssignKeyAccessServerToAttribute\0223" + + ".attributes.AssignKeyAccessServerToAttri" + + "buteRequest\0324.attributes.AssignKeyAccess" + + "ServerToAttributeResponse\"G\202\323\344\223\002A\"\"/attr" + + "ibutes/keyaccessserver/assign:\033attribute" + + "_key_access_server\022\334\001\n\"RemoveKeyAccessSe" + + "rverFromAttribute\0225.attributes.RemoveKey" + + "AccessServerFromAttributeRequest\0326.attri" + + "butes.RemoveKeyAccessServerFromAttribute" + + "Response\"G\202\323\344\223\002A\"\"/attributes/keyaccesss" + + "erver/remove:\033attribute_key_access_serve" + + "r\022\315\001\n\034AssignKeyAccessServerToValue\022/.att" + + "ributes.AssignKeyAccessServerToValueRequ" + + "est\0320.attributes.AssignKeyAccessServerTo" + + "ValueResponse\"J\202\323\344\223\002D\")/attributes/value" + + "s/keyaccessserver/assign:\027value_key_acce" + + "ss_server\022\323\001\n\036RemoveKeyAccessServerFromV" + + "alue\0221.attributes.RemoveKeyAccessServerF" + + "romValueRequest\0322.attributes.RemoveKeyAc" + + "cessServerFromValueResponse\"J\202\323\344\223\002D\")/at" + + "tributes/values/keyaccessserver/remove:\027" + + "value_key_access_serverB\233\001\n\016com.attribut" + + "esB\017AttributesProtoP\001Z0github.com/opentd" + + "f/opentdf-v2-poc/sdk/attributes\242\002\003AXX\252\002\n" + + "Attributes\312\002\nAttributes\342\002\026Attributes\\GPB" + + "Metadata\352\002\nAttributesb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -373,7 +378,7 @@ public static void registerAllExtensions( internal_static_attributes_Attribute_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_attributes_Attribute_descriptor, - new java.lang.String[] { "Id", "Metadata", "Namespace", "Name", "Rule", "Values", "Grants", }); + new java.lang.String[] { "Id", "Metadata", "Namespace", "Name", "Rule", "Values", "Grants", "State", }); internal_static_attributes_AttributeCreateUpdate_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_attributes_AttributeCreateUpdate_fieldAccessorTable = new @@ -385,7 +390,7 @@ public static void registerAllExtensions( internal_static_attributes_Value_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_attributes_Value_descriptor, - new java.lang.String[] { "Id", "Metadata", "AttributeId", "Value", "Members", "Grants", }); + new java.lang.String[] { "Id", "Metadata", "AttributeId", "Value", "Members", "Grants", "State", }); internal_static_attributes_ValueCreateUpdate_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_attributes_ValueCreateUpdate_fieldAccessorTable = new @@ -409,7 +414,7 @@ public static void registerAllExtensions( internal_static_attributes_ListAttributesRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_attributes_ListAttributesRequest_descriptor, - new java.lang.String[] { }); + new java.lang.String[] { "State", }); internal_static_attributes_ListAttributesResponse_descriptor = getDescriptor().getMessageTypes().get(7); internal_static_attributes_ListAttributesResponse_fieldAccessorTable = new @@ -452,17 +457,17 @@ public static void registerAllExtensions( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_attributes_UpdateAttributeResponse_descriptor, new java.lang.String[] { "Attribute", }); - internal_static_attributes_DeleteAttributeRequest_descriptor = + internal_static_attributes_DeactivateAttributeRequest_descriptor = getDescriptor().getMessageTypes().get(14); - internal_static_attributes_DeleteAttributeRequest_fieldAccessorTable = new + internal_static_attributes_DeactivateAttributeRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_attributes_DeleteAttributeRequest_descriptor, + internal_static_attributes_DeactivateAttributeRequest_descriptor, new java.lang.String[] { "Id", }); - internal_static_attributes_DeleteAttributeResponse_descriptor = + internal_static_attributes_DeactivateAttributeResponse_descriptor = getDescriptor().getMessageTypes().get(15); - internal_static_attributes_DeleteAttributeResponse_fieldAccessorTable = new + internal_static_attributes_DeactivateAttributeResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_attributes_DeleteAttributeResponse_descriptor, + internal_static_attributes_DeactivateAttributeResponse_descriptor, new java.lang.String[] { "Attribute", }); internal_static_attributes_GetAttributeValueRequest_descriptor = getDescriptor().getMessageTypes().get(16); @@ -481,7 +486,7 @@ public static void registerAllExtensions( internal_static_attributes_ListAttributeValuesRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_attributes_ListAttributeValuesRequest_descriptor, - new java.lang.String[] { "AttributeId", }); + new java.lang.String[] { "AttributeId", "State", }); internal_static_attributes_ListAttributeValuesResponse_descriptor = getDescriptor().getMessageTypes().get(19); internal_static_attributes_ListAttributeValuesResponse_fieldAccessorTable = new @@ -512,17 +517,17 @@ public static void registerAllExtensions( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_attributes_UpdateAttributeValueResponse_descriptor, new java.lang.String[] { "Value", }); - internal_static_attributes_DeleteAttributeValueRequest_descriptor = + internal_static_attributes_DeactivateAttributeValueRequest_descriptor = getDescriptor().getMessageTypes().get(24); - internal_static_attributes_DeleteAttributeValueRequest_fieldAccessorTable = new + internal_static_attributes_DeactivateAttributeValueRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_attributes_DeleteAttributeValueRequest_descriptor, + internal_static_attributes_DeactivateAttributeValueRequest_descriptor, new java.lang.String[] { "Id", }); - internal_static_attributes_DeleteAttributeValueResponse_descriptor = + internal_static_attributes_DeactivateAttributeValueResponse_descriptor = getDescriptor().getMessageTypes().get(25); - internal_static_attributes_DeleteAttributeValueResponse_fieldAccessorTable = new + internal_static_attributes_DeactivateAttributeValueResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_attributes_DeleteAttributeValueResponse_descriptor, + internal_static_attributes_DeactivateAttributeValueResponse_descriptor, new java.lang.String[] { "Value", }); internal_static_attributes_AssignKeyAccessServerToAttributeRequest_descriptor = getDescriptor().getMessageTypes().get(26); diff --git a/sdkjava/com/attributes/DeactivateAttributeRequest.java b/sdkjava/com/attributes/DeactivateAttributeRequest.java new file mode 100644 index 0000000000..ef020de109 --- /dev/null +++ b/sdkjava/com/attributes/DeactivateAttributeRequest.java @@ -0,0 +1,542 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: attributes/attributes.proto + +// Protobuf Java Version: 3.25.2 +package com.attributes; + +/** + * Protobuf type {@code attributes.DeactivateAttributeRequest} + */ +public final class DeactivateAttributeRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:attributes.DeactivateAttributeRequest) + DeactivateAttributeRequestOrBuilder { +private static final long serialVersionUID = 0L; + // Use DeactivateAttributeRequest.newBuilder() to construct. + private DeactivateAttributeRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DeactivateAttributeRequest() { + id_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DeactivateAttributeRequest(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.attributes.DeactivateAttributeRequest.class, com.attributes.DeactivateAttributeRequest.Builder.class); + } + + public static final int ID_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object id_ = ""; + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The id. + */ + @java.lang.Override + public java.lang.String getId() { + java.lang.Object ref = id_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + id_ = s; + return s; + } + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The bytes for id. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getIdBytes() { + java.lang.Object ref = id_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + id_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.attributes.DeactivateAttributeRequest)) { + return super.equals(obj); + } + com.attributes.DeactivateAttributeRequest other = (com.attributes.DeactivateAttributeRequest) obj; + + if (!getId() + .equals(other.getId())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ID_FIELD_NUMBER; + hash = (53 * hash) + getId().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.attributes.DeactivateAttributeRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.attributes.DeactivateAttributeRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.attributes.DeactivateAttributeRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.attributes.DeactivateAttributeRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.attributes.DeactivateAttributeRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.attributes.DeactivateAttributeRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.attributes.DeactivateAttributeRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code attributes.DeactivateAttributeRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:attributes.DeactivateAttributeRequest) + com.attributes.DeactivateAttributeRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.attributes.DeactivateAttributeRequest.class, com.attributes.DeactivateAttributeRequest.Builder.class); + } + + // Construct using com.attributes.DeactivateAttributeRequest.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + id_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeRequest_descriptor; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeRequest getDefaultInstanceForType() { + return com.attributes.DeactivateAttributeRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.attributes.DeactivateAttributeRequest build() { + com.attributes.DeactivateAttributeRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeRequest buildPartial() { + com.attributes.DeactivateAttributeRequest result = new com.attributes.DeactivateAttributeRequest(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(com.attributes.DeactivateAttributeRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.id_ = id_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.attributes.DeactivateAttributeRequest) { + return mergeFrom((com.attributes.DeactivateAttributeRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.attributes.DeactivateAttributeRequest other) { + if (other == com.attributes.DeactivateAttributeRequest.getDefaultInstance()) return this; + if (!other.getId().isEmpty()) { + id_ = other.id_; + bitField0_ |= 0x00000001; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + id_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object id_ = ""; + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The id. + */ + public java.lang.String getId() { + java.lang.Object ref = id_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + id_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The bytes for id. + */ + public com.google.protobuf.ByteString + getIdBytes() { + java.lang.Object ref = id_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + id_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @param value The id to set. + * @return This builder for chaining. + */ + public Builder setId( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + id_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return This builder for chaining. + */ + public Builder clearId() { + id_ = getDefaultInstance().getId(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @param value The bytes for id to set. + * @return This builder for chaining. + */ + public Builder setIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + id_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:attributes.DeactivateAttributeRequest) + } + + // @@protoc_insertion_point(class_scope:attributes.DeactivateAttributeRequest) + private static final com.attributes.DeactivateAttributeRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.attributes.DeactivateAttributeRequest(); + } + + public static com.attributes.DeactivateAttributeRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DeactivateAttributeRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdkjava/com/attributes/DeactivateAttributeRequestOrBuilder.java b/sdkjava/com/attributes/DeactivateAttributeRequestOrBuilder.java new file mode 100644 index 0000000000..d99e461f27 --- /dev/null +++ b/sdkjava/com/attributes/DeactivateAttributeRequestOrBuilder.java @@ -0,0 +1,22 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: attributes/attributes.proto + +// Protobuf Java Version: 3.25.2 +package com.attributes; + +public interface DeactivateAttributeRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:attributes.DeactivateAttributeRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The id. + */ + java.lang.String getId(); + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The bytes for id. + */ + com.google.protobuf.ByteString + getIdBytes(); +} diff --git a/sdkjava/com/attributes/DeactivateAttributeResponse.java b/sdkjava/com/attributes/DeactivateAttributeResponse.java new file mode 100644 index 0000000000..400c50f98e --- /dev/null +++ b/sdkjava/com/attributes/DeactivateAttributeResponse.java @@ -0,0 +1,599 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: attributes/attributes.proto + +// Protobuf Java Version: 3.25.2 +package com.attributes; + +/** + * Protobuf type {@code attributes.DeactivateAttributeResponse} + */ +public final class DeactivateAttributeResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:attributes.DeactivateAttributeResponse) + DeactivateAttributeResponseOrBuilder { +private static final long serialVersionUID = 0L; + // Use DeactivateAttributeResponse.newBuilder() to construct. + private DeactivateAttributeResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DeactivateAttributeResponse() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DeactivateAttributeResponse(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.attributes.DeactivateAttributeResponse.class, com.attributes.DeactivateAttributeResponse.Builder.class); + } + + private int bitField0_; + public static final int ATTRIBUTE_FIELD_NUMBER = 1; + private com.attributes.Attribute attribute_; + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + * @return Whether the attribute field is set. + */ + @java.lang.Override + public boolean hasAttribute() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + * @return The attribute. + */ + @java.lang.Override + public com.attributes.Attribute getAttribute() { + return attribute_ == null ? com.attributes.Attribute.getDefaultInstance() : attribute_; + } + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + */ + @java.lang.Override + public com.attributes.AttributeOrBuilder getAttributeOrBuilder() { + return attribute_ == null ? com.attributes.Attribute.getDefaultInstance() : attribute_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getAttribute()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getAttribute()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.attributes.DeactivateAttributeResponse)) { + return super.equals(obj); + } + com.attributes.DeactivateAttributeResponse other = (com.attributes.DeactivateAttributeResponse) obj; + + if (hasAttribute() != other.hasAttribute()) return false; + if (hasAttribute()) { + if (!getAttribute() + .equals(other.getAttribute())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasAttribute()) { + hash = (37 * hash) + ATTRIBUTE_FIELD_NUMBER; + hash = (53 * hash) + getAttribute().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.attributes.DeactivateAttributeResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.attributes.DeactivateAttributeResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.attributes.DeactivateAttributeResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.attributes.DeactivateAttributeResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.attributes.DeactivateAttributeResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.attributes.DeactivateAttributeResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.attributes.DeactivateAttributeResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code attributes.DeactivateAttributeResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:attributes.DeactivateAttributeResponse) + com.attributes.DeactivateAttributeResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.attributes.DeactivateAttributeResponse.class, com.attributes.DeactivateAttributeResponse.Builder.class); + } + + // Construct using com.attributes.DeactivateAttributeResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getAttributeFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + attribute_ = null; + if (attributeBuilder_ != null) { + attributeBuilder_.dispose(); + attributeBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeResponse_descriptor; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeResponse getDefaultInstanceForType() { + return com.attributes.DeactivateAttributeResponse.getDefaultInstance(); + } + + @java.lang.Override + public com.attributes.DeactivateAttributeResponse build() { + com.attributes.DeactivateAttributeResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeResponse buildPartial() { + com.attributes.DeactivateAttributeResponse result = new com.attributes.DeactivateAttributeResponse(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(com.attributes.DeactivateAttributeResponse result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.attribute_ = attributeBuilder_ == null + ? attribute_ + : attributeBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.attributes.DeactivateAttributeResponse) { + return mergeFrom((com.attributes.DeactivateAttributeResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.attributes.DeactivateAttributeResponse other) { + if (other == com.attributes.DeactivateAttributeResponse.getDefaultInstance()) return this; + if (other.hasAttribute()) { + mergeAttribute(other.getAttribute()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getAttributeFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private com.attributes.Attribute attribute_; + private com.google.protobuf.SingleFieldBuilderV3< + com.attributes.Attribute, com.attributes.Attribute.Builder, com.attributes.AttributeOrBuilder> attributeBuilder_; + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + * @return Whether the attribute field is set. + */ + public boolean hasAttribute() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + * @return The attribute. + */ + public com.attributes.Attribute getAttribute() { + if (attributeBuilder_ == null) { + return attribute_ == null ? com.attributes.Attribute.getDefaultInstance() : attribute_; + } else { + return attributeBuilder_.getMessage(); + } + } + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + */ + public Builder setAttribute(com.attributes.Attribute value) { + if (attributeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + attribute_ = value; + } else { + attributeBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + */ + public Builder setAttribute( + com.attributes.Attribute.Builder builderForValue) { + if (attributeBuilder_ == null) { + attribute_ = builderForValue.build(); + } else { + attributeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + */ + public Builder mergeAttribute(com.attributes.Attribute value) { + if (attributeBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && + attribute_ != null && + attribute_ != com.attributes.Attribute.getDefaultInstance()) { + getAttributeBuilder().mergeFrom(value); + } else { + attribute_ = value; + } + } else { + attributeBuilder_.mergeFrom(value); + } + if (attribute_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + */ + public Builder clearAttribute() { + bitField0_ = (bitField0_ & ~0x00000001); + attribute_ = null; + if (attributeBuilder_ != null) { + attributeBuilder_.dispose(); + attributeBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + */ + public com.attributes.Attribute.Builder getAttributeBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getAttributeFieldBuilder().getBuilder(); + } + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + */ + public com.attributes.AttributeOrBuilder getAttributeOrBuilder() { + if (attributeBuilder_ != null) { + return attributeBuilder_.getMessageOrBuilder(); + } else { + return attribute_ == null ? + com.attributes.Attribute.getDefaultInstance() : attribute_; + } + } + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.attributes.Attribute, com.attributes.Attribute.Builder, com.attributes.AttributeOrBuilder> + getAttributeFieldBuilder() { + if (attributeBuilder_ == null) { + attributeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.attributes.Attribute, com.attributes.Attribute.Builder, com.attributes.AttributeOrBuilder>( + getAttribute(), + getParentForChildren(), + isClean()); + attribute_ = null; + } + return attributeBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:attributes.DeactivateAttributeResponse) + } + + // @@protoc_insertion_point(class_scope:attributes.DeactivateAttributeResponse) + private static final com.attributes.DeactivateAttributeResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.attributes.DeactivateAttributeResponse(); + } + + public static com.attributes.DeactivateAttributeResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DeactivateAttributeResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdkjava/com/attributes/DeactivateAttributeResponseOrBuilder.java b/sdkjava/com/attributes/DeactivateAttributeResponseOrBuilder.java new file mode 100644 index 0000000000..bd8688c35b --- /dev/null +++ b/sdkjava/com/attributes/DeactivateAttributeResponseOrBuilder.java @@ -0,0 +1,25 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: attributes/attributes.proto + +// Protobuf Java Version: 3.25.2 +package com.attributes; + +public interface DeactivateAttributeResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:attributes.DeactivateAttributeResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + * @return Whether the attribute field is set. + */ + boolean hasAttribute(); + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + * @return The attribute. + */ + com.attributes.Attribute getAttribute(); + /** + * .attributes.Attribute attribute = 1 [json_name = "attribute"]; + */ + com.attributes.AttributeOrBuilder getAttributeOrBuilder(); +} diff --git a/sdkjava/com/attributes/DeactivateAttributeValueRequest.java b/sdkjava/com/attributes/DeactivateAttributeValueRequest.java new file mode 100644 index 0000000000..1e1773cacc --- /dev/null +++ b/sdkjava/com/attributes/DeactivateAttributeValueRequest.java @@ -0,0 +1,542 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: attributes/attributes.proto + +// Protobuf Java Version: 3.25.2 +package com.attributes; + +/** + * Protobuf type {@code attributes.DeactivateAttributeValueRequest} + */ +public final class DeactivateAttributeValueRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:attributes.DeactivateAttributeValueRequest) + DeactivateAttributeValueRequestOrBuilder { +private static final long serialVersionUID = 0L; + // Use DeactivateAttributeValueRequest.newBuilder() to construct. + private DeactivateAttributeValueRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DeactivateAttributeValueRequest() { + id_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DeactivateAttributeValueRequest(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeValueRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeValueRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.attributes.DeactivateAttributeValueRequest.class, com.attributes.DeactivateAttributeValueRequest.Builder.class); + } + + public static final int ID_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object id_ = ""; + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The id. + */ + @java.lang.Override + public java.lang.String getId() { + java.lang.Object ref = id_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + id_ = s; + return s; + } + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The bytes for id. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getIdBytes() { + java.lang.Object ref = id_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + id_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.attributes.DeactivateAttributeValueRequest)) { + return super.equals(obj); + } + com.attributes.DeactivateAttributeValueRequest other = (com.attributes.DeactivateAttributeValueRequest) obj; + + if (!getId() + .equals(other.getId())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ID_FIELD_NUMBER; + hash = (53 * hash) + getId().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.attributes.DeactivateAttributeValueRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeValueRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeValueRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeValueRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeValueRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeValueRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeValueRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.attributes.DeactivateAttributeValueRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.attributes.DeactivateAttributeValueRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.attributes.DeactivateAttributeValueRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.attributes.DeactivateAttributeValueRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.attributes.DeactivateAttributeValueRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.attributes.DeactivateAttributeValueRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code attributes.DeactivateAttributeValueRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:attributes.DeactivateAttributeValueRequest) + com.attributes.DeactivateAttributeValueRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeValueRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeValueRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.attributes.DeactivateAttributeValueRequest.class, com.attributes.DeactivateAttributeValueRequest.Builder.class); + } + + // Construct using com.attributes.DeactivateAttributeValueRequest.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + id_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeValueRequest_descriptor; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeValueRequest getDefaultInstanceForType() { + return com.attributes.DeactivateAttributeValueRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.attributes.DeactivateAttributeValueRequest build() { + com.attributes.DeactivateAttributeValueRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeValueRequest buildPartial() { + com.attributes.DeactivateAttributeValueRequest result = new com.attributes.DeactivateAttributeValueRequest(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(com.attributes.DeactivateAttributeValueRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.id_ = id_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.attributes.DeactivateAttributeValueRequest) { + return mergeFrom((com.attributes.DeactivateAttributeValueRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.attributes.DeactivateAttributeValueRequest other) { + if (other == com.attributes.DeactivateAttributeValueRequest.getDefaultInstance()) return this; + if (!other.getId().isEmpty()) { + id_ = other.id_; + bitField0_ |= 0x00000001; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + id_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object id_ = ""; + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The id. + */ + public java.lang.String getId() { + java.lang.Object ref = id_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + id_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The bytes for id. + */ + public com.google.protobuf.ByteString + getIdBytes() { + java.lang.Object ref = id_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + id_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @param value The id to set. + * @return This builder for chaining. + */ + public Builder setId( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + id_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return This builder for chaining. + */ + public Builder clearId() { + id_ = getDefaultInstance().getId(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @param value The bytes for id to set. + * @return This builder for chaining. + */ + public Builder setIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + id_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:attributes.DeactivateAttributeValueRequest) + } + + // @@protoc_insertion_point(class_scope:attributes.DeactivateAttributeValueRequest) + private static final com.attributes.DeactivateAttributeValueRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.attributes.DeactivateAttributeValueRequest(); + } + + public static com.attributes.DeactivateAttributeValueRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DeactivateAttributeValueRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeValueRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdkjava/com/attributes/DeactivateAttributeValueRequestOrBuilder.java b/sdkjava/com/attributes/DeactivateAttributeValueRequestOrBuilder.java new file mode 100644 index 0000000000..7c6341a11c --- /dev/null +++ b/sdkjava/com/attributes/DeactivateAttributeValueRequestOrBuilder.java @@ -0,0 +1,22 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: attributes/attributes.proto + +// Protobuf Java Version: 3.25.2 +package com.attributes; + +public interface DeactivateAttributeValueRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:attributes.DeactivateAttributeValueRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The id. + */ + java.lang.String getId(); + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The bytes for id. + */ + com.google.protobuf.ByteString + getIdBytes(); +} diff --git a/sdkjava/com/attributes/DeactivateAttributeValueResponse.java b/sdkjava/com/attributes/DeactivateAttributeValueResponse.java new file mode 100644 index 0000000000..d2cd5d6378 --- /dev/null +++ b/sdkjava/com/attributes/DeactivateAttributeValueResponse.java @@ -0,0 +1,599 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: attributes/attributes.proto + +// Protobuf Java Version: 3.25.2 +package com.attributes; + +/** + * Protobuf type {@code attributes.DeactivateAttributeValueResponse} + */ +public final class DeactivateAttributeValueResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:attributes.DeactivateAttributeValueResponse) + DeactivateAttributeValueResponseOrBuilder { +private static final long serialVersionUID = 0L; + // Use DeactivateAttributeValueResponse.newBuilder() to construct. + private DeactivateAttributeValueResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DeactivateAttributeValueResponse() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DeactivateAttributeValueResponse(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeValueResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeValueResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.attributes.DeactivateAttributeValueResponse.class, com.attributes.DeactivateAttributeValueResponse.Builder.class); + } + + private int bitField0_; + public static final int VALUE_FIELD_NUMBER = 1; + private com.attributes.Value value_; + /** + * .attributes.Value value = 1 [json_name = "value"]; + * @return Whether the value field is set. + */ + @java.lang.Override + public boolean hasValue() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .attributes.Value value = 1 [json_name = "value"]; + * @return The value. + */ + @java.lang.Override + public com.attributes.Value getValue() { + return value_ == null ? com.attributes.Value.getDefaultInstance() : value_; + } + /** + * .attributes.Value value = 1 [json_name = "value"]; + */ + @java.lang.Override + public com.attributes.ValueOrBuilder getValueOrBuilder() { + return value_ == null ? com.attributes.Value.getDefaultInstance() : value_; + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(1, getValue()); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (((bitField0_ & 0x00000001) != 0)) { + size += com.google.protobuf.CodedOutputStream + .computeMessageSize(1, getValue()); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.attributes.DeactivateAttributeValueResponse)) { + return super.equals(obj); + } + com.attributes.DeactivateAttributeValueResponse other = (com.attributes.DeactivateAttributeValueResponse) obj; + + if (hasValue() != other.hasValue()) return false; + if (hasValue()) { + if (!getValue() + .equals(other.getValue())) return false; + } + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + if (hasValue()) { + hash = (37 * hash) + VALUE_FIELD_NUMBER; + hash = (53 * hash) + getValue().hashCode(); + } + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.attributes.DeactivateAttributeValueResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeValueResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeValueResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeValueResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeValueResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.attributes.DeactivateAttributeValueResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.attributes.DeactivateAttributeValueResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.attributes.DeactivateAttributeValueResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.attributes.DeactivateAttributeValueResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.attributes.DeactivateAttributeValueResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.attributes.DeactivateAttributeValueResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.attributes.DeactivateAttributeValueResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.attributes.DeactivateAttributeValueResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code attributes.DeactivateAttributeValueResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:attributes.DeactivateAttributeValueResponse) + com.attributes.DeactivateAttributeValueResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeValueResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeValueResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.attributes.DeactivateAttributeValueResponse.class, com.attributes.DeactivateAttributeValueResponse.Builder.class); + } + + // Construct using com.attributes.DeactivateAttributeValueResponse.newBuilder() + private Builder() { + maybeForceBuilderInitialization(); + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getValueFieldBuilder(); + } + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.attributes.AttributesProto.internal_static_attributes_DeactivateAttributeValueResponse_descriptor; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeValueResponse getDefaultInstanceForType() { + return com.attributes.DeactivateAttributeValueResponse.getDefaultInstance(); + } + + @java.lang.Override + public com.attributes.DeactivateAttributeValueResponse build() { + com.attributes.DeactivateAttributeValueResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeValueResponse buildPartial() { + com.attributes.DeactivateAttributeValueResponse result = new com.attributes.DeactivateAttributeValueResponse(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(com.attributes.DeactivateAttributeValueResponse result) { + int from_bitField0_ = bitField0_; + int to_bitField0_ = 0; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.value_ = valueBuilder_ == null + ? value_ + : valueBuilder_.build(); + to_bitField0_ |= 0x00000001; + } + result.bitField0_ |= to_bitField0_; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.attributes.DeactivateAttributeValueResponse) { + return mergeFrom((com.attributes.DeactivateAttributeValueResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.attributes.DeactivateAttributeValueResponse other) { + if (other == com.attributes.DeactivateAttributeValueResponse.getDefaultInstance()) return this; + if (other.hasValue()) { + mergeValue(other.getValue()); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + input.readMessage( + getValueFieldBuilder().getBuilder(), + extensionRegistry); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private com.attributes.Value value_; + private com.google.protobuf.SingleFieldBuilderV3< + com.attributes.Value, com.attributes.Value.Builder, com.attributes.ValueOrBuilder> valueBuilder_; + /** + * .attributes.Value value = 1 [json_name = "value"]; + * @return Whether the value field is set. + */ + public boolean hasValue() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .attributes.Value value = 1 [json_name = "value"]; + * @return The value. + */ + public com.attributes.Value getValue() { + if (valueBuilder_ == null) { + return value_ == null ? com.attributes.Value.getDefaultInstance() : value_; + } else { + return valueBuilder_.getMessage(); + } + } + /** + * .attributes.Value value = 1 [json_name = "value"]; + */ + public Builder setValue(com.attributes.Value value) { + if (valueBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + value_ = value; + } else { + valueBuilder_.setMessage(value); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * .attributes.Value value = 1 [json_name = "value"]; + */ + public Builder setValue( + com.attributes.Value.Builder builderForValue) { + if (valueBuilder_ == null) { + value_ = builderForValue.build(); + } else { + valueBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * .attributes.Value value = 1 [json_name = "value"]; + */ + public Builder mergeValue(com.attributes.Value value) { + if (valueBuilder_ == null) { + if (((bitField0_ & 0x00000001) != 0) && + value_ != null && + value_ != com.attributes.Value.getDefaultInstance()) { + getValueBuilder().mergeFrom(value); + } else { + value_ = value; + } + } else { + valueBuilder_.mergeFrom(value); + } + if (value_ != null) { + bitField0_ |= 0x00000001; + onChanged(); + } + return this; + } + /** + * .attributes.Value value = 1 [json_name = "value"]; + */ + public Builder clearValue() { + bitField0_ = (bitField0_ & ~0x00000001); + value_ = null; + if (valueBuilder_ != null) { + valueBuilder_.dispose(); + valueBuilder_ = null; + } + onChanged(); + return this; + } + /** + * .attributes.Value value = 1 [json_name = "value"]; + */ + public com.attributes.Value.Builder getValueBuilder() { + bitField0_ |= 0x00000001; + onChanged(); + return getValueFieldBuilder().getBuilder(); + } + /** + * .attributes.Value value = 1 [json_name = "value"]; + */ + public com.attributes.ValueOrBuilder getValueOrBuilder() { + if (valueBuilder_ != null) { + return valueBuilder_.getMessageOrBuilder(); + } else { + return value_ == null ? + com.attributes.Value.getDefaultInstance() : value_; + } + } + /** + * .attributes.Value value = 1 [json_name = "value"]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.attributes.Value, com.attributes.Value.Builder, com.attributes.ValueOrBuilder> + getValueFieldBuilder() { + if (valueBuilder_ == null) { + valueBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.attributes.Value, com.attributes.Value.Builder, com.attributes.ValueOrBuilder>( + getValue(), + getParentForChildren(), + isClean()); + value_ = null; + } + return valueBuilder_; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:attributes.DeactivateAttributeValueResponse) + } + + // @@protoc_insertion_point(class_scope:attributes.DeactivateAttributeValueResponse) + private static final com.attributes.DeactivateAttributeValueResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.attributes.DeactivateAttributeValueResponse(); + } + + public static com.attributes.DeactivateAttributeValueResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DeactivateAttributeValueResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.attributes.DeactivateAttributeValueResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdkjava/com/attributes/DeactivateAttributeValueResponseOrBuilder.java b/sdkjava/com/attributes/DeactivateAttributeValueResponseOrBuilder.java new file mode 100644 index 0000000000..4f9d76f0a9 --- /dev/null +++ b/sdkjava/com/attributes/DeactivateAttributeValueResponseOrBuilder.java @@ -0,0 +1,25 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: attributes/attributes.proto + +// Protobuf Java Version: 3.25.2 +package com.attributes; + +public interface DeactivateAttributeValueResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:attributes.DeactivateAttributeValueResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * .attributes.Value value = 1 [json_name = "value"]; + * @return Whether the value field is set. + */ + boolean hasValue(); + /** + * .attributes.Value value = 1 [json_name = "value"]; + * @return The value. + */ + com.attributes.Value getValue(); + /** + * .attributes.Value value = 1 [json_name = "value"]; + */ + com.attributes.ValueOrBuilder getValueOrBuilder(); +} diff --git a/sdkjava/com/attributes/ListAttributeValuesRequest.java b/sdkjava/com/attributes/ListAttributeValuesRequest.java index d47c659247..5ecc2e2741 100644 --- a/sdkjava/com/attributes/ListAttributeValuesRequest.java +++ b/sdkjava/com/attributes/ListAttributeValuesRequest.java @@ -18,6 +18,7 @@ private ListAttributeValuesRequest(com.google.protobuf.GeneratedMessageV3.Builde } private ListAttributeValuesRequest() { attributeId_ = ""; + state_ = 0; } @java.lang.Override @@ -79,6 +80,32 @@ public java.lang.String getAttributeId() { } } + public static final int STATE_FIELD_NUMBER = 2; + private int state_ = 0; + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 2 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 2 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -96,6 +123,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attributeId_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, attributeId_); } + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + output.writeEnum(2, state_); + } getUnknownFields().writeTo(output); } @@ -108,6 +138,10 @@ public int getSerializedSize() { if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attributeId_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, attributeId_); } + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(2, state_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -125,6 +159,7 @@ public boolean equals(final java.lang.Object obj) { if (!getAttributeId() .equals(other.getAttributeId())) return false; + if (state_ != other.state_) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -138,6 +173,8 @@ public int hashCode() { hash = (19 * hash) + getDescriptor().hashCode(); hash = (37 * hash) + ATTRIBUTE_ID_FIELD_NUMBER; hash = (53 * hash) + getAttributeId().hashCode(); + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + state_; hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -270,6 +307,7 @@ public Builder clear() { super.clear(); bitField0_ = 0; attributeId_ = ""; + state_ = 0; return this; } @@ -306,6 +344,9 @@ private void buildPartial0(com.attributes.ListAttributeValuesRequest result) { if (((from_bitField0_ & 0x00000001) != 0)) { result.attributeId_ = attributeId_; } + if (((from_bitField0_ & 0x00000002) != 0)) { + result.state_ = state_; + } } @java.lang.Override @@ -357,6 +398,9 @@ public Builder mergeFrom(com.attributes.ListAttributeValuesRequest other) { bitField0_ |= 0x00000001; onChanged(); } + if (other.state_ != 0) { + setStateValue(other.getStateValue()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -388,6 +432,11 @@ public Builder mergeFrom( bitField0_ |= 0x00000001; break; } // case 10 + case 16: { + state_ = input.readEnum(); + bitField0_ |= 0x00000002; + break; + } // case 16 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -476,6 +525,79 @@ public Builder setAttributeIdBytes( onChanged(); return this; } + + private int state_ = 0; + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 2 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 2 [json_name = "state"]; + * @param value The enum numeric value on the wire for state to set. + * @return This builder for chaining. + */ + public Builder setStateValue(int value) { + state_ = value; + bitField0_ |= 0x00000002; + onChanged(); + return this; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 2 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override + public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 2 [json_name = "state"]; + * @param value The state to set. + * @return This builder for chaining. + */ + public Builder setState(com.common.StateTypeEnum value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000002; + state_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 2 [json_name = "state"]; + * @return This builder for chaining. + */ + public Builder clearState() { + bitField0_ = (bitField0_ & ~0x00000002); + state_ = 0; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java b/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java index 652c99ca2b..bc15e31e8d 100644 --- a/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java +++ b/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java @@ -19,4 +19,23 @@ public interface ListAttributeValuesRequestOrBuilder extends */ com.google.protobuf.ByteString getAttributeIdBytes(); + + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 2 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + int getStateValue(); + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 2 [json_name = "state"]; + * @return The state. + */ + com.common.StateTypeEnum getState(); } diff --git a/sdkjava/com/attributes/ListAttributesRequest.java b/sdkjava/com/attributes/ListAttributesRequest.java index 618a3d977a..89b10b4502 100644 --- a/sdkjava/com/attributes/ListAttributesRequest.java +++ b/sdkjava/com/attributes/ListAttributesRequest.java @@ -17,6 +17,7 @@ private ListAttributesRequest(com.google.protobuf.GeneratedMessageV3.Builder super(builder); } private ListAttributesRequest() { + state_ = 0; } @java.lang.Override @@ -39,6 +40,32 @@ protected java.lang.Object newInstance( com.attributes.ListAttributesRequest.class, com.attributes.ListAttributesRequest.Builder.class); } + public static final int STATE_FIELD_NUMBER = 1; + private int state_ = 0; + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -53,6 +80,9 @@ public final boolean isInitialized() { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + output.writeEnum(1, state_); + } getUnknownFields().writeTo(output); } @@ -62,6 +92,10 @@ public int getSerializedSize() { if (size != -1) return size; size = 0; + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, state_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -77,6 +111,7 @@ public boolean equals(final java.lang.Object obj) { } com.attributes.ListAttributesRequest other = (com.attributes.ListAttributesRequest) obj; + if (state_ != other.state_) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -88,6 +123,8 @@ public int hashCode() { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + state_; hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -218,6 +255,8 @@ private Builder( @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; + state_ = 0; return this; } @@ -244,10 +283,18 @@ public com.attributes.ListAttributesRequest build() { @java.lang.Override public com.attributes.ListAttributesRequest buildPartial() { com.attributes.ListAttributesRequest result = new com.attributes.ListAttributesRequest(this); + if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } + private void buildPartial0(com.attributes.ListAttributesRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.state_ = state_; + } + } + @java.lang.Override public Builder clone() { return super.clone(); @@ -292,6 +339,9 @@ public Builder mergeFrom(com.google.protobuf.Message other) { public Builder mergeFrom(com.attributes.ListAttributesRequest other) { if (other == com.attributes.ListAttributesRequest.getDefaultInstance()) return this; + if (other.state_ != 0) { + setStateValue(other.getStateValue()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -318,6 +368,11 @@ public Builder mergeFrom( case 0: done = true; break; + case 8: { + state_ = input.readEnum(); + bitField0_ |= 0x00000001; + break; + } // case 8 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -333,6 +388,80 @@ public Builder mergeFrom( } // finally return this; } + private int bitField0_; + + private int state_ = 0; + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @param value The enum numeric value on the wire for state to set. + * @return This builder for chaining. + */ + public Builder setStateValue(int value) { + state_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override + public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @param value The state to set. + * @return This builder for chaining. + */ + public Builder setState(com.common.StateTypeEnum value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + state_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return This builder for chaining. + */ + public Builder clearState() { + bitField0_ = (bitField0_ & ~0x00000001); + state_ = 0; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java b/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java index c6e67c19f5..4c3ea33b91 100644 --- a/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java +++ b/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java @@ -7,4 +7,23 @@ public interface ListAttributesRequestOrBuilder extends // @@protoc_insertion_point(interface_extends:attributes.ListAttributesRequest) com.google.protobuf.MessageOrBuilder { + + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + int getStateValue(); + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The state. + */ + com.common.StateTypeEnum getState(); } diff --git a/sdkjava/com/attributes/Value.java b/sdkjava/com/attributes/Value.java index 86b195d28f..49ad04f672 100644 --- a/sdkjava/com/attributes/Value.java +++ b/sdkjava/com/attributes/Value.java @@ -23,6 +23,7 @@ private Value() { members_ = com.google.protobuf.LazyStringArrayList.emptyList(); grants_ = java.util.Collections.emptyList(); + state_ = 0; } @java.lang.Override @@ -311,6 +312,32 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( return grants_.get(index); } + public static final int STATE_FIELD_NUMBER = 7; + private int state_ = 0; + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 7 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 7 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -343,6 +370,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) for (int i = 0; i < grants_.size(); i++) { output.writeMessage(6, grants_.get(i)); } + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + output.writeEnum(7, state_); + } getUnknownFields().writeTo(output); } @@ -377,6 +407,10 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(6, grants_.get(i)); } + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(7, state_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -407,6 +441,7 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getMembersList())) return false; if (!getGrantsList() .equals(other.getGrantsList())) return false; + if (state_ != other.state_) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -436,6 +471,8 @@ public int hashCode() { hash = (37 * hash) + GRANTS_FIELD_NUMBER; hash = (53 * hash) + getGrantsList().hashCode(); } + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + state_; hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -591,6 +628,7 @@ public Builder clear() { grantsBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000020); + state_ = 0; return this; } @@ -657,6 +695,9 @@ private void buildPartial0(com.attributes.Value result) { members_.makeImmutable(); result.members_ = members_; } + if (((from_bitField0_ & 0x00000040) != 0)) { + result.state_ = state_; + } result.bitField0_ |= to_bitField0_; } @@ -758,6 +799,9 @@ public Builder mergeFrom(com.attributes.Value other) { } } } + if (other.state_ != 0) { + setStateValue(other.getStateValue()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -825,6 +869,11 @@ public Builder mergeFrom( } break; } // case 50 + case 56: { + state_ = input.readEnum(); + bitField0_ |= 0x00000040; + break; + } // case 56 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -1657,6 +1706,79 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder( } return grantsBuilder_; } + + private int state_ = 0; + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 7 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 7 [json_name = "state"]; + * @param value The enum numeric value on the wire for state to set. + * @return This builder for chaining. + */ + public Builder setStateValue(int value) { + state_ = value; + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 7 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override + public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 7 [json_name = "state"]; + * @param value The state to set. + * @return This builder for chaining. + */ + public Builder setState(com.common.StateTypeEnum value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000040; + state_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 7 [json_name = "state"]; + * @return This builder for chaining. + */ + public Builder clearState() { + bitField0_ = (bitField0_ & ~0x00000040); + state_ = 0; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdkjava/com/attributes/ValueOrBuilder.java b/sdkjava/com/attributes/ValueOrBuilder.java index 90e0de59c6..1856626903 100644 --- a/sdkjava/com/attributes/ValueOrBuilder.java +++ b/sdkjava/com/attributes/ValueOrBuilder.java @@ -151,4 +151,23 @@ public interface ValueOrBuilder extends */ com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( int index); + + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 7 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + int getStateValue(); + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 7 [json_name = "state"]; + * @return The state. + */ + com.common.StateTypeEnum getState(); } diff --git a/sdkjava/com/common/CommonProto.java b/sdkjava/com/common/CommonProto.java index 7c4dbea710..2153047a70 100644 --- a/sdkjava/com/common/CommonProto.java +++ b/sdkjava/com/common/CommonProto.java @@ -56,11 +56,14 @@ public static void registerAllExtensions( "\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\001B\177\n\nco" + - "m.commonB\013CommonProtoP\001Z,github.com/open" + - "tdf/opentdf-v2-poc/sdk/common\242\002\003CXX\252\002\006Co" + - "mmon\312\002\006Common\342\002\022Common\\GPBMetadata\352\002\006Com" + - "monb\006proto3" + "\001(\tR\003key\022\024\n\005value\030\002 \001(\tR\005value:\0028\001*\203\001\n\rS" + + "tateTypeEnum\022\037\n\033STATE_TYPE_ENUM_UNSPECIF" + + "IED\020\000\022\032\n\026STATE_TYPE_ENUM_ACTIVE\020\001\022\034\n\030STA" + + "TE_TYPE_ENUM_INACTIVE\020\002\022\027\n\023STATE_TYPE_EN" + + "UM_ANY\020\003B\177\n\ncom.commonB\013CommonProtoP\001Z,g" + + "ithub.com/opentdf/opentdf-v2-poc/sdk/com" + + "mon\242\002\003CXX\252\002\006Common\312\002\006Common\342\002\022Common\\GPB" + + "Metadata\352\002\006Commonb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, diff --git a/sdkjava/com/common/StateTypeEnum.java b/sdkjava/com/common/StateTypeEnum.java new file mode 100644 index 0000000000..ad6399380c --- /dev/null +++ b/sdkjava/com/common/StateTypeEnum.java @@ -0,0 +1,136 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: common/common.proto + +// Protobuf Java Version: 3.25.2 +package com.common; + +/** + *
    + * 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
    + * 
    + * + * Protobuf enum {@code common.StateTypeEnum} + */ +public enum StateTypeEnum + implements com.google.protobuf.ProtocolMessageEnum { + /** + * STATE_TYPE_ENUM_UNSPECIFIED = 0; + */ + STATE_TYPE_ENUM_UNSPECIFIED(0), + /** + * STATE_TYPE_ENUM_ACTIVE = 1; + */ + STATE_TYPE_ENUM_ACTIVE(1), + /** + * STATE_TYPE_ENUM_INACTIVE = 2; + */ + STATE_TYPE_ENUM_INACTIVE(2), + /** + * STATE_TYPE_ENUM_ANY = 3; + */ + STATE_TYPE_ENUM_ANY(3), + UNRECOGNIZED(-1), + ; + + /** + * STATE_TYPE_ENUM_UNSPECIFIED = 0; + */ + public static final int STATE_TYPE_ENUM_UNSPECIFIED_VALUE = 0; + /** + * STATE_TYPE_ENUM_ACTIVE = 1; + */ + public static final int STATE_TYPE_ENUM_ACTIVE_VALUE = 1; + /** + * STATE_TYPE_ENUM_INACTIVE = 2; + */ + public static final int STATE_TYPE_ENUM_INACTIVE_VALUE = 2; + /** + * STATE_TYPE_ENUM_ANY = 3; + */ + public static final int STATE_TYPE_ENUM_ANY_VALUE = 3; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static StateTypeEnum valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static StateTypeEnum forNumber(int value) { + switch (value) { + case 0: return STATE_TYPE_ENUM_UNSPECIFIED; + case 1: return STATE_TYPE_ENUM_ACTIVE; + case 2: return STATE_TYPE_ENUM_INACTIVE; + case 3: return STATE_TYPE_ENUM_ANY; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + StateTypeEnum> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public StateTypeEnum findValueByNumber(int number) { + return StateTypeEnum.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return com.common.CommonProto.getDescriptor().getEnumTypes().get(0); + } + + private static final StateTypeEnum[] VALUES = values(); + + public static StateTypeEnum valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private StateTypeEnum(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:common.StateTypeEnum) +} + diff --git a/sdkjava/com/namespaces/DeactivateNamespaceRequest.java b/sdkjava/com/namespaces/DeactivateNamespaceRequest.java new file mode 100644 index 0000000000..142a1ef20b --- /dev/null +++ b/sdkjava/com/namespaces/DeactivateNamespaceRequest.java @@ -0,0 +1,542 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: namespaces/namespaces.proto + +// Protobuf Java Version: 3.25.2 +package com.namespaces; + +/** + * Protobuf type {@code namespaces.DeactivateNamespaceRequest} + */ +public final class DeactivateNamespaceRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:namespaces.DeactivateNamespaceRequest) + DeactivateNamespaceRequestOrBuilder { +private static final long serialVersionUID = 0L; + // Use DeactivateNamespaceRequest.newBuilder() to construct. + private DeactivateNamespaceRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DeactivateNamespaceRequest() { + id_ = ""; + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DeactivateNamespaceRequest(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.namespaces.NamespacesProto.internal_static_namespaces_DeactivateNamespaceRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.namespaces.NamespacesProto.internal_static_namespaces_DeactivateNamespaceRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.namespaces.DeactivateNamespaceRequest.class, com.namespaces.DeactivateNamespaceRequest.Builder.class); + } + + public static final int ID_FIELD_NUMBER = 1; + @SuppressWarnings("serial") + private volatile java.lang.Object id_ = ""; + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The id. + */ + @java.lang.Override + public java.lang.String getId() { + java.lang.Object ref = id_; + if (ref instanceof java.lang.String) { + return (java.lang.String) ref; + } else { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + id_ = s; + return s; + } + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The bytes for id. + */ + @java.lang.Override + public com.google.protobuf.ByteString + getIdBytes() { + java.lang.Object ref = id_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + id_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_); + } + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_); + } + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.namespaces.DeactivateNamespaceRequest)) { + return super.equals(obj); + } + com.namespaces.DeactivateNamespaceRequest other = (com.namespaces.DeactivateNamespaceRequest) obj; + + if (!getId() + .equals(other.getId())) return false; + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + ID_FIELD_NUMBER; + hash = (53 * hash) + getId().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.namespaces.DeactivateNamespaceRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.namespaces.DeactivateNamespaceRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.namespaces.DeactivateNamespaceRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.namespaces.DeactivateNamespaceRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.namespaces.DeactivateNamespaceRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.namespaces.DeactivateNamespaceRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.namespaces.DeactivateNamespaceRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.namespaces.DeactivateNamespaceRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.namespaces.DeactivateNamespaceRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.namespaces.DeactivateNamespaceRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.namespaces.DeactivateNamespaceRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.namespaces.DeactivateNamespaceRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.namespaces.DeactivateNamespaceRequest prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code namespaces.DeactivateNamespaceRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:namespaces.DeactivateNamespaceRequest) + com.namespaces.DeactivateNamespaceRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.namespaces.NamespacesProto.internal_static_namespaces_DeactivateNamespaceRequest_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.namespaces.NamespacesProto.internal_static_namespaces_DeactivateNamespaceRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.namespaces.DeactivateNamespaceRequest.class, com.namespaces.DeactivateNamespaceRequest.Builder.class); + } + + // Construct using com.namespaces.DeactivateNamespaceRequest.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + bitField0_ = 0; + id_ = ""; + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.namespaces.NamespacesProto.internal_static_namespaces_DeactivateNamespaceRequest_descriptor; + } + + @java.lang.Override + public com.namespaces.DeactivateNamespaceRequest getDefaultInstanceForType() { + return com.namespaces.DeactivateNamespaceRequest.getDefaultInstance(); + } + + @java.lang.Override + public com.namespaces.DeactivateNamespaceRequest build() { + com.namespaces.DeactivateNamespaceRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.namespaces.DeactivateNamespaceRequest buildPartial() { + com.namespaces.DeactivateNamespaceRequest result = new com.namespaces.DeactivateNamespaceRequest(this); + if (bitField0_ != 0) { buildPartial0(result); } + onBuilt(); + return result; + } + + private void buildPartial0(com.namespaces.DeactivateNamespaceRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.id_ = id_; + } + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.namespaces.DeactivateNamespaceRequest) { + return mergeFrom((com.namespaces.DeactivateNamespaceRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.namespaces.DeactivateNamespaceRequest other) { + if (other == com.namespaces.DeactivateNamespaceRequest.getDefaultInstance()) return this; + if (!other.getId().isEmpty()) { + id_ = other.id_; + bitField0_ |= 0x00000001; + onChanged(); + } + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + case 10: { + id_ = input.readStringRequireUtf8(); + bitField0_ |= 0x00000001; + break; + } // case 10 + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + private int bitField0_; + + private java.lang.Object id_ = ""; + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The id. + */ + public java.lang.String getId() { + java.lang.Object ref = id_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + id_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The bytes for id. + */ + public com.google.protobuf.ByteString + getIdBytes() { + java.lang.Object ref = id_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + id_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @param value The id to set. + * @return This builder for chaining. + */ + public Builder setId( + java.lang.String value) { + if (value == null) { throw new NullPointerException(); } + id_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return This builder for chaining. + */ + public Builder clearId() { + id_ = getDefaultInstance().getId(); + bitField0_ = (bitField0_ & ~0x00000001); + onChanged(); + return this; + } + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @param value The bytes for id to set. + * @return This builder for chaining. + */ + public Builder setIdBytes( + com.google.protobuf.ByteString value) { + if (value == null) { throw new NullPointerException(); } + checkByteStringIsUtf8(value); + id_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:namespaces.DeactivateNamespaceRequest) + } + + // @@protoc_insertion_point(class_scope:namespaces.DeactivateNamespaceRequest) + private static final com.namespaces.DeactivateNamespaceRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.namespaces.DeactivateNamespaceRequest(); + } + + public static com.namespaces.DeactivateNamespaceRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DeactivateNamespaceRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.namespaces.DeactivateNamespaceRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdkjava/com/namespaces/DeactivateNamespaceRequestOrBuilder.java b/sdkjava/com/namespaces/DeactivateNamespaceRequestOrBuilder.java new file mode 100644 index 0000000000..32c824cf8e --- /dev/null +++ b/sdkjava/com/namespaces/DeactivateNamespaceRequestOrBuilder.java @@ -0,0 +1,22 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: namespaces/namespaces.proto + +// Protobuf Java Version: 3.25.2 +package com.namespaces; + +public interface DeactivateNamespaceRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:namespaces.DeactivateNamespaceRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The id. + */ + java.lang.String getId(); + /** + * string id = 1 [json_name = "id", (.buf.validate.field) = { ... } + * @return The bytes for id. + */ + com.google.protobuf.ByteString + getIdBytes(); +} diff --git a/sdkjava/com/namespaces/DeactivateNamespaceResponse.java b/sdkjava/com/namespaces/DeactivateNamespaceResponse.java new file mode 100644 index 0000000000..0bde753995 --- /dev/null +++ b/sdkjava/com/namespaces/DeactivateNamespaceResponse.java @@ -0,0 +1,399 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: namespaces/namespaces.proto + +// Protobuf Java Version: 3.25.2 +package com.namespaces; + +/** + * Protobuf type {@code namespaces.DeactivateNamespaceResponse} + */ +public final class DeactivateNamespaceResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:namespaces.DeactivateNamespaceResponse) + DeactivateNamespaceResponseOrBuilder { +private static final long serialVersionUID = 0L; + // Use DeactivateNamespaceResponse.newBuilder() to construct. + private DeactivateNamespaceResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private DeactivateNamespaceResponse() { + } + + @java.lang.Override + @SuppressWarnings({"unused"}) + protected java.lang.Object newInstance( + UnusedPrivateParameter unused) { + return new DeactivateNamespaceResponse(); + } + + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.namespaces.NamespacesProto.internal_static_namespaces_DeactivateNamespaceResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.namespaces.NamespacesProto.internal_static_namespaces_DeactivateNamespaceResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.namespaces.DeactivateNamespaceResponse.class, com.namespaces.DeactivateNamespaceResponse.Builder.class); + } + + private byte memoizedIsInitialized = -1; + @java.lang.Override + public final boolean isInitialized() { + byte isInitialized = memoizedIsInitialized; + if (isInitialized == 1) return true; + if (isInitialized == 0) return false; + + memoizedIsInitialized = 1; + return true; + } + + @java.lang.Override + public void writeTo(com.google.protobuf.CodedOutputStream output) + throws java.io.IOException { + getUnknownFields().writeTo(output); + } + + @java.lang.Override + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + size += getUnknownFields().getSerializedSize(); + memoizedSize = size; + return size; + } + + @java.lang.Override + public boolean equals(final java.lang.Object obj) { + if (obj == this) { + return true; + } + if (!(obj instanceof com.namespaces.DeactivateNamespaceResponse)) { + return super.equals(obj); + } + com.namespaces.DeactivateNamespaceResponse other = (com.namespaces.DeactivateNamespaceResponse) obj; + + if (!getUnknownFields().equals(other.getUnknownFields())) return false; + return true; + } + + @java.lang.Override + public int hashCode() { + if (memoizedHashCode != 0) { + return memoizedHashCode; + } + int hash = 41; + hash = (19 * hash) + getDescriptor().hashCode(); + hash = (29 * hash) + getUnknownFields().hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.namespaces.DeactivateNamespaceResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.namespaces.DeactivateNamespaceResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.namespaces.DeactivateNamespaceResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.namespaces.DeactivateNamespaceResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.namespaces.DeactivateNamespaceResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.namespaces.DeactivateNamespaceResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.namespaces.DeactivateNamespaceResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.namespaces.DeactivateNamespaceResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + public static com.namespaces.DeactivateNamespaceResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + + public static com.namespaces.DeactivateNamespaceResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input, extensionRegistry); + } + public static com.namespaces.DeactivateNamespaceResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.namespaces.DeactivateNamespaceResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input, extensionRegistry); + } + + @java.lang.Override + public Builder newBuilderForType() { return newBuilder(); } + public static Builder newBuilder() { + return DEFAULT_INSTANCE.toBuilder(); + } + public static Builder newBuilder(com.namespaces.DeactivateNamespaceResponse prototype) { + return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype); + } + @java.lang.Override + public Builder toBuilder() { + return this == DEFAULT_INSTANCE + ? new Builder() : new Builder().mergeFrom(this); + } + + @java.lang.Override + protected Builder newBuilderForType( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + Builder builder = new Builder(parent); + return builder; + } + /** + * Protobuf type {@code namespaces.DeactivateNamespaceResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:namespaces.DeactivateNamespaceResponse) + com.namespaces.DeactivateNamespaceResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.namespaces.NamespacesProto.internal_static_namespaces_DeactivateNamespaceResponse_descriptor; + } + + @java.lang.Override + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.namespaces.NamespacesProto.internal_static_namespaces_DeactivateNamespaceResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.namespaces.DeactivateNamespaceResponse.class, com.namespaces.DeactivateNamespaceResponse.Builder.class); + } + + // Construct using com.namespaces.DeactivateNamespaceResponse.newBuilder() + private Builder() { + + } + + private Builder( + com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { + super(parent); + + } + @java.lang.Override + public Builder clear() { + super.clear(); + return this; + } + + @java.lang.Override + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.namespaces.NamespacesProto.internal_static_namespaces_DeactivateNamespaceResponse_descriptor; + } + + @java.lang.Override + public com.namespaces.DeactivateNamespaceResponse getDefaultInstanceForType() { + return com.namespaces.DeactivateNamespaceResponse.getDefaultInstance(); + } + + @java.lang.Override + public com.namespaces.DeactivateNamespaceResponse build() { + com.namespaces.DeactivateNamespaceResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + @java.lang.Override + public com.namespaces.DeactivateNamespaceResponse buildPartial() { + com.namespaces.DeactivateNamespaceResponse result = new com.namespaces.DeactivateNamespaceResponse(this); + onBuilt(); + return result; + } + + @java.lang.Override + public Builder clone() { + return super.clone(); + } + @java.lang.Override + public Builder setField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.setField(field, value); + } + @java.lang.Override + public Builder clearField( + com.google.protobuf.Descriptors.FieldDescriptor field) { + return super.clearField(field); + } + @java.lang.Override + public Builder clearOneof( + com.google.protobuf.Descriptors.OneofDescriptor oneof) { + return super.clearOneof(oneof); + } + @java.lang.Override + public Builder setRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + int index, java.lang.Object value) { + return super.setRepeatedField(field, index, value); + } + @java.lang.Override + public Builder addRepeatedField( + com.google.protobuf.Descriptors.FieldDescriptor field, + java.lang.Object value) { + return super.addRepeatedField(field, value); + } + @java.lang.Override + public Builder mergeFrom(com.google.protobuf.Message other) { + if (other instanceof com.namespaces.DeactivateNamespaceResponse) { + return mergeFrom((com.namespaces.DeactivateNamespaceResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.namespaces.DeactivateNamespaceResponse other) { + if (other == com.namespaces.DeactivateNamespaceResponse.getDefaultInstance()) return this; + this.mergeUnknownFields(other.getUnknownFields()); + onChanged(); + return this; + } + + @java.lang.Override + public final boolean isInitialized() { + return true; + } + + @java.lang.Override + public Builder mergeFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + if (extensionRegistry == null) { + throw new java.lang.NullPointerException(); + } + try { + boolean done = false; + while (!done) { + int tag = input.readTag(); + switch (tag) { + case 0: + done = true; + break; + default: { + if (!super.parseUnknownField(input, extensionRegistry, tag)) { + done = true; // was an endgroup tag + } + break; + } // default: + } // switch (tag) + } // while (!done) + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.unwrapIOException(); + } finally { + onChanged(); + } // finally + return this; + } + @java.lang.Override + public final Builder setUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.setUnknownFields(unknownFields); + } + + @java.lang.Override + public final Builder mergeUnknownFields( + final com.google.protobuf.UnknownFieldSet unknownFields) { + return super.mergeUnknownFields(unknownFields); + } + + + // @@protoc_insertion_point(builder_scope:namespaces.DeactivateNamespaceResponse) + } + + // @@protoc_insertion_point(class_scope:namespaces.DeactivateNamespaceResponse) + private static final com.namespaces.DeactivateNamespaceResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.namespaces.DeactivateNamespaceResponse(); + } + + public static com.namespaces.DeactivateNamespaceResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + @java.lang.Override + public DeactivateNamespaceResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + Builder builder = newBuilder(); + try { + builder.mergeFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + throw e.setUnfinishedMessage(builder.buildPartial()); + } catch (com.google.protobuf.UninitializedMessageException e) { + throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial()); + } catch (java.io.IOException e) { + throw new com.google.protobuf.InvalidProtocolBufferException(e) + .setUnfinishedMessage(builder.buildPartial()); + } + return builder.buildPartial(); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + @java.lang.Override + public com.namespaces.DeactivateNamespaceResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + +} + diff --git a/sdkjava/com/namespaces/DeactivateNamespaceResponseOrBuilder.java b/sdkjava/com/namespaces/DeactivateNamespaceResponseOrBuilder.java new file mode 100644 index 0000000000..f3f424e5a8 --- /dev/null +++ b/sdkjava/com/namespaces/DeactivateNamespaceResponseOrBuilder.java @@ -0,0 +1,10 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: namespaces/namespaces.proto + +// Protobuf Java Version: 3.25.2 +package com.namespaces; + +public interface DeactivateNamespaceResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:namespaces.DeactivateNamespaceResponse) + com.google.protobuf.MessageOrBuilder { +} diff --git a/sdkjava/com/namespaces/ListNamespacesRequest.java b/sdkjava/com/namespaces/ListNamespacesRequest.java index f7abd6d437..70207d193d 100644 --- a/sdkjava/com/namespaces/ListNamespacesRequest.java +++ b/sdkjava/com/namespaces/ListNamespacesRequest.java @@ -17,6 +17,7 @@ private ListNamespacesRequest(com.google.protobuf.GeneratedMessageV3.Builder super(builder); } private ListNamespacesRequest() { + state_ = 0; } @java.lang.Override @@ -39,6 +40,32 @@ protected java.lang.Object newInstance( com.namespaces.ListNamespacesRequest.class, com.namespaces.ListNamespacesRequest.Builder.class); } + public static final int STATE_FIELD_NUMBER = 1; + private int state_ = 0; + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -53,6 +80,9 @@ public final boolean isInitialized() { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + output.writeEnum(1, state_); + } getUnknownFields().writeTo(output); } @@ -62,6 +92,10 @@ public int getSerializedSize() { if (size != -1) return size; size = 0; + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, state_); + } size += getUnknownFields().getSerializedSize(); memoizedSize = size; return size; @@ -77,6 +111,7 @@ public boolean equals(final java.lang.Object obj) { } com.namespaces.ListNamespacesRequest other = (com.namespaces.ListNamespacesRequest) obj; + if (state_ != other.state_) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -88,6 +123,8 @@ public int hashCode() { } int hash = 41; hash = (19 * hash) + getDescriptor().hashCode(); + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + state_; hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -218,6 +255,8 @@ private Builder( @java.lang.Override public Builder clear() { super.clear(); + bitField0_ = 0; + state_ = 0; return this; } @@ -244,10 +283,18 @@ public com.namespaces.ListNamespacesRequest build() { @java.lang.Override public com.namespaces.ListNamespacesRequest buildPartial() { com.namespaces.ListNamespacesRequest result = new com.namespaces.ListNamespacesRequest(this); + if (bitField0_ != 0) { buildPartial0(result); } onBuilt(); return result; } + private void buildPartial0(com.namespaces.ListNamespacesRequest result) { + int from_bitField0_ = bitField0_; + if (((from_bitField0_ & 0x00000001) != 0)) { + result.state_ = state_; + } + } + @java.lang.Override public Builder clone() { return super.clone(); @@ -292,6 +339,9 @@ public Builder mergeFrom(com.google.protobuf.Message other) { public Builder mergeFrom(com.namespaces.ListNamespacesRequest other) { if (other == com.namespaces.ListNamespacesRequest.getDefaultInstance()) return this; + if (other.state_ != 0) { + setStateValue(other.getStateValue()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -318,6 +368,11 @@ public Builder mergeFrom( case 0: done = true; break; + case 8: { + state_ = input.readEnum(); + bitField0_ |= 0x00000001; + break; + } // case 8 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -333,6 +388,80 @@ public Builder mergeFrom( } // finally return this; } + private int bitField0_; + + private int state_ = 0; + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @param value The enum numeric value on the wire for state to set. + * @return This builder for chaining. + */ + public Builder setStateValue(int value) { + state_ = value; + bitField0_ |= 0x00000001; + onChanged(); + return this; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override + public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @param value The state to set. + * @return This builder for chaining. + */ + public Builder setState(com.common.StateTypeEnum value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000001; + state_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
    +     * ACTIVE by default when not specified
    +     * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return This builder for chaining. + */ + public Builder clearState() { + bitField0_ = (bitField0_ & ~0x00000001); + state_ = 0; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java b/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java index f289012b0d..6c956593f0 100644 --- a/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java +++ b/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java @@ -7,4 +7,23 @@ public interface ListNamespacesRequestOrBuilder extends // @@protoc_insertion_point(interface_extends:namespaces.ListNamespacesRequest) com.google.protobuf.MessageOrBuilder { + + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + int getStateValue(); + /** + *
    +   * ACTIVE by default when not specified
    +   * 
    + * + * .common.StateTypeEnum state = 1 [json_name = "state"]; + * @return The state. + */ + com.common.StateTypeEnum getState(); } diff --git a/sdkjava/com/namespaces/Namespace.java b/sdkjava/com/namespaces/Namespace.java index e726b3d97e..c19d315836 100644 --- a/sdkjava/com/namespaces/Namespace.java +++ b/sdkjava/com/namespaces/Namespace.java @@ -19,6 +19,7 @@ private Namespace(com.google.protobuf.GeneratedMessageV3.Builder builder) { private Namespace() { id_ = ""; name_ = ""; + state_ = 0; } @java.lang.Override @@ -88,7 +89,7 @@ public java.lang.String getId() { } } - public static final int NAME_FIELD_NUMBER = 5; + public static final int NAME_FIELD_NUMBER = 2; @SuppressWarnings("serial") private volatile java.lang.Object name_ = ""; /** @@ -96,7 +97,7 @@ public java.lang.String getId() { * used to partition Attribute Definitions, support by namespace AuthN and enable federation * * - * string name = 5 [json_name = "name", (.buf.validate.field) = { ... } + * string name = 2 [json_name = "name", (.buf.validate.field) = { ... } * @return The name. */ @java.lang.Override @@ -117,7 +118,7 @@ public java.lang.String getName() { * used to partition Attribute Definitions, support by namespace AuthN and enable federation * * - * string name = 5 [json_name = "name", (.buf.validate.field) = { ... } + * string name = 2 [json_name = "name", (.buf.validate.field) = { ... } * @return The bytes for name. */ @java.lang.Override @@ -135,6 +136,32 @@ public java.lang.String getName() { } } + public static final int STATE_FIELD_NUMBER = 3; + private int state_ = 0; + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 3 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 3 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + private byte memoizedIsInitialized = -1; @java.lang.Override public final boolean isInitialized() { @@ -153,7 +180,10 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { - com.google.protobuf.GeneratedMessageV3.writeString(output, 5, name_); + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); + } + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + output.writeEnum(3, state_); } getUnknownFields().writeTo(output); } @@ -168,7 +198,11 @@ public int getSerializedSize() { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_); } if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { - size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, name_); + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); + } + if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(3, state_); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -189,6 +223,7 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getId())) return false; if (!getName() .equals(other.getName())) return false; + if (state_ != other.state_) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -204,6 +239,8 @@ public int hashCode() { hash = (53 * hash) + getId().hashCode(); hash = (37 * hash) + NAME_FIELD_NUMBER; hash = (53 * hash) + getName().hashCode(); + hash = (37 * hash) + STATE_FIELD_NUMBER; + hash = (53 * hash) + state_; hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -337,6 +374,7 @@ public Builder clear() { bitField0_ = 0; id_ = ""; name_ = ""; + state_ = 0; return this; } @@ -376,6 +414,9 @@ private void buildPartial0(com.namespaces.Namespace result) { if (((from_bitField0_ & 0x00000002) != 0)) { result.name_ = name_; } + if (((from_bitField0_ & 0x00000004) != 0)) { + result.state_ = state_; + } } @java.lang.Override @@ -432,6 +473,9 @@ public Builder mergeFrom(com.namespaces.Namespace other) { bitField0_ |= 0x00000002; onChanged(); } + if (other.state_ != 0) { + setStateValue(other.getStateValue()); + } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); return this; @@ -463,11 +507,16 @@ public Builder mergeFrom( bitField0_ |= 0x00000001; break; } // case 10 - case 42: { + case 18: { name_ = input.readStringRequireUtf8(); bitField0_ |= 0x00000002; break; - } // case 42 + } // case 18 + case 24: { + state_ = input.readEnum(); + bitField0_ |= 0x00000004; + break; + } // case 24 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -583,7 +632,7 @@ public Builder setIdBytes( * used to partition Attribute Definitions, support by namespace AuthN and enable federation * * - * string name = 5 [json_name = "name", (.buf.validate.field) = { ... } + * string name = 2 [json_name = "name", (.buf.validate.field) = { ... } * @return The name. */ public java.lang.String getName() { @@ -603,7 +652,7 @@ public java.lang.String getName() { * used to partition Attribute Definitions, support by namespace AuthN and enable federation * * - * string name = 5 [json_name = "name", (.buf.validate.field) = { ... } + * string name = 2 [json_name = "name", (.buf.validate.field) = { ... } * @return The bytes for name. */ public com.google.protobuf.ByteString @@ -624,7 +673,7 @@ public java.lang.String getName() { * used to partition Attribute Definitions, support by namespace AuthN and enable federation * * - * string name = 5 [json_name = "name", (.buf.validate.field) = { ... } + * string name = 2 [json_name = "name", (.buf.validate.field) = { ... } * @param value The name to set. * @return This builder for chaining. */ @@ -641,7 +690,7 @@ public Builder setName( * used to partition Attribute Definitions, support by namespace AuthN and enable federation * * - * string name = 5 [json_name = "name", (.buf.validate.field) = { ... } + * string name = 2 [json_name = "name", (.buf.validate.field) = { ... } * @return This builder for chaining. */ public Builder clearName() { @@ -655,7 +704,7 @@ public Builder clearName() { * used to partition Attribute Definitions, support by namespace AuthN and enable federation * * - * string name = 5 [json_name = "name", (.buf.validate.field) = { ... } + * string name = 2 [json_name = "name", (.buf.validate.field) = { ... } * @param value The bytes for name to set. * @return This builder for chaining. */ @@ -668,6 +717,79 @@ public Builder setNameBytes( onChanged(); return this; } + + private int state_ = 0; + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 3 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + @java.lang.Override public int getStateValue() { + return state_; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 3 [json_name = "state"]; + * @param value The enum numeric value on the wire for state to set. + * @return This builder for chaining. + */ + public Builder setStateValue(int value) { + state_ = value; + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 3 [json_name = "state"]; + * @return The state. + */ + @java.lang.Override + public com.common.StateTypeEnum getState() { + com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); + return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 3 [json_name = "state"]; + * @param value The state to set. + * @return This builder for chaining. + */ + public Builder setState(com.common.StateTypeEnum value) { + if (value == null) { + throw new NullPointerException(); + } + bitField0_ |= 0x00000004; + state_ = value.getNumber(); + onChanged(); + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .common.StateTypeEnum state = 3 [json_name = "state"]; + * @return This builder for chaining. + */ + public Builder clearState() { + bitField0_ = (bitField0_ & ~0x00000004); + state_ = 0; + onChanged(); + return this; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdkjava/com/namespaces/NamespaceOrBuilder.java b/sdkjava/com/namespaces/NamespaceOrBuilder.java index 5ed043bf10..4f55b7e9ef 100644 --- a/sdkjava/com/namespaces/NamespaceOrBuilder.java +++ b/sdkjava/com/namespaces/NamespaceOrBuilder.java @@ -33,7 +33,7 @@ public interface NamespaceOrBuilder extends * used to partition Attribute Definitions, support by namespace AuthN and enable federation * * - * string name = 5 [json_name = "name", (.buf.validate.field) = { ... } + * string name = 2 [json_name = "name", (.buf.validate.field) = { ... } * @return The name. */ java.lang.String getName(); @@ -42,9 +42,28 @@ public interface NamespaceOrBuilder extends * used to partition Attribute Definitions, support by namespace AuthN and enable federation * * - * string name = 5 [json_name = "name", (.buf.validate.field) = { ... } + * string name = 2 [json_name = "name", (.buf.validate.field) = { ... } * @return The bytes for name. */ com.google.protobuf.ByteString getNameBytes(); + + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 3 [json_name = "state"]; + * @return The enum numeric value on the wire for state. + */ + int getStateValue(); + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .common.StateTypeEnum state = 3 [json_name = "state"]; + * @return The state. + */ + com.common.StateTypeEnum getState(); } diff --git a/sdkjava/com/namespaces/NamespacesProto.java b/sdkjava/com/namespaces/NamespacesProto.java index ff57670131..c7cc750158 100644 --- a/sdkjava/com/namespaces/NamespacesProto.java +++ b/sdkjava/com/namespaces/NamespacesProto.java @@ -61,15 +61,15 @@ public static void registerAllExtensions( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable internal_static_namespaces_UpdateNamespaceResponse_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor - internal_static_namespaces_DeleteNamespaceRequest_descriptor; + internal_static_namespaces_DeactivateNamespaceRequest_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_namespaces_DeleteNamespaceRequest_fieldAccessorTable; + internal_static_namespaces_DeactivateNamespaceRequest_fieldAccessorTable; static final com.google.protobuf.Descriptors.Descriptor - internal_static_namespaces_DeleteNamespaceResponse_descriptor; + internal_static_namespaces_DeactivateNamespaceResponse_descriptor; static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable - internal_static_namespaces_DeleteNamespaceResponse_fieldAccessorTable; + internal_static_namespaces_DeactivateNamespaceResponse_fieldAccessorTable; public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { @@ -81,69 +81,73 @@ public static void registerAllExtensions( java.lang.String[] descriptorData = { "\n\033namespaces/namespaces.proto\022\nnamespace" + "s\032\033buf/validate/validate.proto\032\034google/a" + - "pi/annotations.proto\"\225\004\n\tNamespace\022\016\n\002id" + - "\030\001 \001(\tR\002id\022\367\003\n\004name\030\005 \001(\tB\342\003\272H\336\003r\003\030\375\001\272\001\322" + - "\003\n\020namespace_format\022\352\002Namespace must be " + - "a valid hostname. It should include at l" + - "east one dot, with each segment (label) " + - "starting and ending with an alphanumeric" + - " character. Each label must be 1 to 63 c" + - "haracters long, allowing hyphens but not" + - " as the first or last character. The top" + - "-level domain (the last segment after th" + - "e final dot) must consist of at least tw" + - "o alphabetic characters.\032Qthis.matches(\'" + - "^([a-zA-Z0-9]([a-zA-Z0-9\\\\-]{0,61}[a-zA-" + - "Z0-9])?\\\\.)+[a-zA-Z]{2,}$\')\310\001\001R\004name\"-\n\023" + - "GetNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R" + - "\002id\"K\n\024GetNamespaceResponse\0223\n\tnamespace" + - "\030\001 \001(\0132\025.namespaces.NamespaceR\tnamespace" + - "\"\027\n\025ListNamespacesRequest\"O\n\026ListNamespa" + - "cesResponse\0225\n\nnamespaces\030\001 \003(\0132\025.namesp" + - "aces.NamespaceR\nnamespaces\"4\n\026CreateName" + - "spaceRequest\022\032\n\004name\030\001 \001(\tB\006\272H\003\310\001\001R\004name" + - "\"N\n\027CreateNamespaceResponse\0223\n\tnamespace" + - "\030\001 \001(\0132\025.namespaces.NamespaceR\tnamespace" + - "\"L\n\026UpdateNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006" + - "\272H\003\310\001\001R\002id\022\032\n\004name\030\002 \001(\tB\006\272H\003\310\001\001R\004name\"N" + - "\n\027UpdateNamespaceResponse\0223\n\tnamespace\030\001" + - " \001(\0132\025.namespaces.NamespaceR\tnamespace\"0" + - "\n\026DeleteNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H" + - "\003\310\001\001R\002id\"\031\n\027DeleteNamespaceResponse2\201\005\n\020" + - "NamespaceService\022v\n\014GetNamespace\022\037.names" + - "paces.GetNamespaceRequest\032 .namespaces.G" + - "etNamespaceResponse\"#\202\323\344\223\002\035\022\033/attributes" + - "/namespaces/{id}\022w\n\016ListNamespaces\022!.nam" + - "espaces.ListNamespacesRequest\032\".namespac" + - "es.ListNamespacesResponse\"\036\202\323\344\223\002\030\022\026/attr" + - "ibutes/namespaces\022z\n\017CreateNamespace\022\".n" + - "amespaces.CreateNamespaceRequest\032#.names" + - "paces.CreateNamespaceResponse\"\036\202\323\344\223\002\030\"\026/" + - "attributes/namespaces\022\177\n\017UpdateNamespace" + - "\022\".namespaces.UpdateNamespaceRequest\032#.n" + - "amespaces.UpdateNamespaceResponse\"#\202\323\344\223\002" + - "\035\032\033/attributes/namespaces/{id}\022\177\n\017Delete" + - "Namespace\022\".namespaces.DeleteNamespaceRe" + - "quest\032#.namespaces.DeleteNamespaceRespon" + - "se\"#\202\323\344\223\002\035*\033/attributes/namespaces/{id}B" + - "\233\001\n\016com.namespacesB\017NamespacesProtoP\001Z0g" + - "ithub.com/opentdf/opentdf-v2-poc/sdk/nam" + - "espaces\242\002\003NXX\252\002\nNamespaces\312\002\nNamespaces\342" + - "\002\026Namespaces\\GPBMetadata\352\002\nNamespacesb\006p" + - "roto3" + "pi/annotations.proto\032\023common/common.prot" + + "o\"\302\004\n\tNamespace\022\016\n\002id\030\001 \001(\tR\002id\022\367\003\n\004name" + + "\030\002 \001(\tB\342\003\272H\336\003r\003\030\375\001\272\001\322\003\n\020namespace_format" + + "\022\352\002Namespace must be a valid hostname. I" + + "t should include at least one dot, with " + + "each segment (label) starting and ending" + + " with an alphanumeric character. Each la" + + "bel must be 1 to 63 characters long, all" + + "owing hyphens but not as the first or la" + + "st character. The top-level domain (the " + + "last segment after the final dot) must c" + + "onsist of at least two alphabetic charac" + + "ters.\032Qthis.matches(\'^([a-zA-Z0-9]([a-zA" + + "-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?\\\\.)+[a-zA-Z" + + "]{2,}$\')\310\001\001R\004name\022+\n\005state\030\003 \001(\0162\025.commo" + + "n.StateTypeEnumR\005state\"-\n\023GetNamespaceRe" + + "quest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetName" + + "spaceResponse\0223\n\tnamespace\030\001 \001(\0132\025.names" + + "paces.NamespaceR\tnamespace\"D\n\025ListNamesp" + + "acesRequest\022+\n\005state\030\001 \001(\0162\025.common.Stat" + + "eTypeEnumR\005state\"O\n\026ListNamespacesRespon" + + "se\0225\n\nnamespaces\030\001 \003(\0132\025.namespaces.Name" + + "spaceR\nnamespaces\"4\n\026CreateNamespaceRequ" + + "est\022\032\n\004name\030\001 \001(\tB\006\272H\003\310\001\001R\004name\"N\n\027Creat" + + "eNamespaceResponse\0223\n\tnamespace\030\001 \001(\0132\025." + + "namespaces.NamespaceR\tnamespace\"L\n\026Updat" + + "eNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002i" + + "d\022\032\n\004name\030\002 \001(\tB\006\272H\003\310\001\001R\004name\"N\n\027UpdateN" + + "amespaceResponse\0223\n\tnamespace\030\001 \001(\0132\025.na" + + "mespaces.NamespaceR\tnamespace\"4\n\032Deactiv" + + "ateNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R" + + "\002id\"\035\n\033DeactivateNamespaceResponse2\216\005\n\020N" + + "amespaceService\022v\n\014GetNamespace\022\037.namesp" + + "aces.GetNamespaceRequest\032 .namespaces.Ge" + + "tNamespaceResponse\"#\202\323\344\223\002\035\022\033/attributes/" + + "namespaces/{id}\022w\n\016ListNamespaces\022!.name" + + "spaces.ListNamespacesRequest\032\".namespace" + + "s.ListNamespacesResponse\"\036\202\323\344\223\002\030\022\026/attri" + + "butes/namespaces\022z\n\017CreateNamespace\022\".na" + + "mespaces.CreateNamespaceRequest\032#.namesp" + + "aces.CreateNamespaceResponse\"\036\202\323\344\223\002\030\"\026/a" + + "ttributes/namespaces\022\177\n\017UpdateNamespace\022" + + "\".namespaces.UpdateNamespaceRequest\032#.na" + + "mespaces.UpdateNamespaceResponse\"#\202\323\344\223\002\035" + + "\032\033/attributes/namespaces/{id}\022\213\001\n\023Deacti" + + "vateNamespace\022&.namespaces.DeactivateNam" + + "espaceRequest\032\'.namespaces.DeactivateNam" + + "espaceResponse\"#\202\323\344\223\002\035*\033/attributes/name" + + "spaces/{id}B\233\001\n\016com.namespacesB\017Namespac" + + "esProtoP\001Z0github.com/opentdf/opentdf-v2" + + "-poc/sdk/namespaces\242\002\003NXX\252\002\nNamespaces\312\002" + + "\nNamespaces\342\002\026Namespaces\\GPBMetadata\352\002\nN" + + "amespacesb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { com.buf.validate.ValidateProto.getDescriptor(), com.google.api.AnnotationsProto.getDescriptor(), + com.common.CommonProto.getDescriptor(), }); internal_static_namespaces_Namespace_descriptor = getDescriptor().getMessageTypes().get(0); internal_static_namespaces_Namespace_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_namespaces_Namespace_descriptor, - new java.lang.String[] { "Id", "Name", }); + new java.lang.String[] { "Id", "Name", "State", }); internal_static_namespaces_GetNamespaceRequest_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_namespaces_GetNamespaceRequest_fieldAccessorTable = new @@ -161,7 +165,7 @@ public static void registerAllExtensions( internal_static_namespaces_ListNamespacesRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_namespaces_ListNamespacesRequest_descriptor, - new java.lang.String[] { }); + new java.lang.String[] { "State", }); internal_static_namespaces_ListNamespacesResponse_descriptor = getDescriptor().getMessageTypes().get(4); internal_static_namespaces_ListNamespacesResponse_fieldAccessorTable = new @@ -192,17 +196,17 @@ public static void registerAllExtensions( com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_namespaces_UpdateNamespaceResponse_descriptor, new java.lang.String[] { "Namespace", }); - internal_static_namespaces_DeleteNamespaceRequest_descriptor = + internal_static_namespaces_DeactivateNamespaceRequest_descriptor = getDescriptor().getMessageTypes().get(9); - internal_static_namespaces_DeleteNamespaceRequest_fieldAccessorTable = new + internal_static_namespaces_DeactivateNamespaceRequest_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_namespaces_DeleteNamespaceRequest_descriptor, + internal_static_namespaces_DeactivateNamespaceRequest_descriptor, new java.lang.String[] { "Id", }); - internal_static_namespaces_DeleteNamespaceResponse_descriptor = + internal_static_namespaces_DeactivateNamespaceResponse_descriptor = getDescriptor().getMessageTypes().get(10); - internal_static_namespaces_DeleteNamespaceResponse_fieldAccessorTable = new + internal_static_namespaces_DeactivateNamespaceResponse_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( - internal_static_namespaces_DeleteNamespaceResponse_descriptor, + internal_static_namespaces_DeactivateNamespaceResponse_descriptor, new java.lang.String[] { }); com.google.protobuf.ExtensionRegistry registry = com.google.protobuf.ExtensionRegistry.newInstance(); @@ -212,6 +216,7 @@ public static void registerAllExtensions( .internalUpdateFileDescriptor(descriptor, registry); com.buf.validate.ValidateProto.getDescriptor(); com.google.api.AnnotationsProto.getDescriptor(); + com.common.CommonProto.getDescriptor(); } // @@protoc_insertion_point(outer_class_scope) From b762b6e99a6e4eabcd5d85ae6cacf6320f5cffbb Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Wed, 14 Feb 2024 15:33:59 -0500 Subject: [PATCH 11/28] generated sdk code from protos --- sdk/attributes/attributes.pb.go | 958 ++++++++++++++------------- sdk/attributes/attributes.pb.gw.go | 136 ++-- sdk/attributes/attributes_grpc.pb.go | 482 ++++++++++++-- sdk/common/common.pb.go | 103 ++- sdk/namespaces/namespaces.pb.go | 370 ++++++----- sdk/namespaces/namespaces.pb.gw.go | 50 +- sdk/namespaces/namespaces_grpc.pb.go | 92 ++- 7 files changed, 1377 insertions(+), 814 deletions(-) diff --git a/sdk/attributes/attributes.pb.go b/sdk/attributes/attributes.pb.go index 261545a616..7df4500c75 100644 --- a/sdk/attributes/attributes.pb.go +++ b/sdk/attributes/attributes.pb.go @@ -94,6 +94,8 @@ type Attribute struct { Rule AttributeRuleTypeEnum `protobuf:"varint,5,opt,name=rule,proto3,enum=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"` + // active by default until explicitly deactivated + State common.StateTypeEnum `protobuf:"varint,9,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` } func (x *Attribute) Reset() { @@ -177,6 +179,13 @@ func (x *Attribute) GetGrants() []*kasregistry.KeyAccessServer { return nil } +func (x *Attribute) GetState() common.StateTypeEnum { + if x != nil { + return x.State + } + return common.StateTypeEnum(0) +} + type AttributeCreateUpdate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -275,6 +284,8 @@ type Value struct { Members []string `protobuf:"bytes,5,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"` + // active by default until explicitly deactivated + State common.StateTypeEnum `protobuf:"varint,7,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` } func (x *Value) Reset() { @@ -351,6 +362,13 @@ func (x *Value) GetGrants() []*kasregistry.KeyAccessServer { return nil } +func (x *Value) GetState() common.StateTypeEnum { + if x != nil { + return x.State + } + return common.StateTypeEnum(0) +} + type ValueCreateUpdate struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -529,6 +547,9 @@ type ListAttributesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // ACTIVE by default when not specified + State common.StateTypeEnum `protobuf:"varint,1,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` } func (x *ListAttributesRequest) Reset() { @@ -563,6 +584,13 @@ func (*ListAttributesRequest) Descriptor() ([]byte, []int) { return file_attributes_attributes_proto_rawDescGZIP(), []int{6} } +func (x *ListAttributesRequest) GetState() common.StateTypeEnum { + if x != nil { + return x.State + } + return common.StateTypeEnum(0) +} + type ListAttributesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -900,7 +928,7 @@ func (x *UpdateAttributeResponse) GetAttribute() *Attribute { return nil } -type DeleteAttributeRequest struct { +type DeactivateAttributeRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -908,8 +936,8 @@ type DeleteAttributeRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *DeleteAttributeRequest) Reset() { - *x = DeleteAttributeRequest{} +func (x *DeactivateAttributeRequest) Reset() { + *x = DeactivateAttributeRequest{} if protoimpl.UnsafeEnabled { mi := &file_attributes_attributes_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -917,13 +945,13 @@ func (x *DeleteAttributeRequest) Reset() { } } -func (x *DeleteAttributeRequest) String() string { +func (x *DeactivateAttributeRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAttributeRequest) ProtoMessage() {} +func (*DeactivateAttributeRequest) ProtoMessage() {} -func (x *DeleteAttributeRequest) ProtoReflect() protoreflect.Message { +func (x *DeactivateAttributeRequest) ProtoReflect() protoreflect.Message { mi := &file_attributes_attributes_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -935,19 +963,19 @@ func (x *DeleteAttributeRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAttributeRequest.ProtoReflect.Descriptor instead. -func (*DeleteAttributeRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeactivateAttributeRequest.ProtoReflect.Descriptor instead. +func (*DeactivateAttributeRequest) Descriptor() ([]byte, []int) { return file_attributes_attributes_proto_rawDescGZIP(), []int{14} } -func (x *DeleteAttributeRequest) GetId() string { +func (x *DeactivateAttributeRequest) GetId() string { if x != nil { return x.Id } return "" } -type DeleteAttributeResponse struct { +type DeactivateAttributeResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -955,8 +983,8 @@ type DeleteAttributeResponse struct { Attribute *Attribute `protobuf:"bytes,1,opt,name=attribute,proto3" json:"attribute,omitempty"` } -func (x *DeleteAttributeResponse) Reset() { - *x = DeleteAttributeResponse{} +func (x *DeactivateAttributeResponse) Reset() { + *x = DeactivateAttributeResponse{} if protoimpl.UnsafeEnabled { mi := &file_attributes_attributes_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -964,13 +992,13 @@ func (x *DeleteAttributeResponse) Reset() { } } -func (x *DeleteAttributeResponse) String() string { +func (x *DeactivateAttributeResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAttributeResponse) ProtoMessage() {} +func (*DeactivateAttributeResponse) ProtoMessage() {} -func (x *DeleteAttributeResponse) ProtoReflect() protoreflect.Message { +func (x *DeactivateAttributeResponse) ProtoReflect() protoreflect.Message { mi := &file_attributes_attributes_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -982,12 +1010,12 @@ func (x *DeleteAttributeResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAttributeResponse.ProtoReflect.Descriptor instead. -func (*DeleteAttributeResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeactivateAttributeResponse.ProtoReflect.Descriptor instead. +func (*DeactivateAttributeResponse) Descriptor() ([]byte, []int) { return file_attributes_attributes_proto_rawDescGZIP(), []int{15} } -func (x *DeleteAttributeResponse) GetAttribute() *Attribute { +func (x *DeactivateAttributeResponse) GetAttribute() *Attribute { if x != nil { return x.Attribute } @@ -1097,6 +1125,8 @@ type ListAttributeValuesRequest struct { unknownFields protoimpl.UnknownFields AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"` + // ACTIVE by default when not specified + State common.StateTypeEnum `protobuf:"varint,2,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` } func (x *ListAttributeValuesRequest) Reset() { @@ -1138,6 +1168,13 @@ func (x *ListAttributeValuesRequest) GetAttributeId() string { return "" } +func (x *ListAttributeValuesRequest) GetState() common.StateTypeEnum { + if x != nil { + return x.State + } + return common.StateTypeEnum(0) +} + type ListAttributeValuesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1397,7 +1434,7 @@ func (x *UpdateAttributeValueResponse) GetValue() *Value { return nil } -type DeleteAttributeValueRequest struct { +type DeactivateAttributeValueRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1405,8 +1442,8 @@ type DeleteAttributeValueRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *DeleteAttributeValueRequest) Reset() { - *x = DeleteAttributeValueRequest{} +func (x *DeactivateAttributeValueRequest) Reset() { + *x = DeactivateAttributeValueRequest{} if protoimpl.UnsafeEnabled { mi := &file_attributes_attributes_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1414,13 +1451,13 @@ func (x *DeleteAttributeValueRequest) Reset() { } } -func (x *DeleteAttributeValueRequest) String() string { +func (x *DeactivateAttributeValueRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAttributeValueRequest) ProtoMessage() {} +func (*DeactivateAttributeValueRequest) ProtoMessage() {} -func (x *DeleteAttributeValueRequest) ProtoReflect() protoreflect.Message { +func (x *DeactivateAttributeValueRequest) ProtoReflect() protoreflect.Message { mi := &file_attributes_attributes_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1432,19 +1469,19 @@ func (x *DeleteAttributeValueRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAttributeValueRequest.ProtoReflect.Descriptor instead. -func (*DeleteAttributeValueRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeactivateAttributeValueRequest.ProtoReflect.Descriptor instead. +func (*DeactivateAttributeValueRequest) Descriptor() ([]byte, []int) { return file_attributes_attributes_proto_rawDescGZIP(), []int{24} } -func (x *DeleteAttributeValueRequest) GetId() string { +func (x *DeactivateAttributeValueRequest) GetId() string { if x != nil { return x.Id } return "" } -type DeleteAttributeValueResponse struct { +type DeactivateAttributeValueResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -1452,8 +1489,8 @@ type DeleteAttributeValueResponse struct { Value *Value `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` } -func (x *DeleteAttributeValueResponse) Reset() { - *x = DeleteAttributeValueResponse{} +func (x *DeactivateAttributeValueResponse) Reset() { + *x = DeactivateAttributeValueResponse{} if protoimpl.UnsafeEnabled { mi := &file_attributes_attributes_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1461,13 +1498,13 @@ func (x *DeleteAttributeValueResponse) Reset() { } } -func (x *DeleteAttributeValueResponse) String() string { +func (x *DeactivateAttributeValueResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteAttributeValueResponse) ProtoMessage() {} +func (*DeactivateAttributeValueResponse) ProtoMessage() {} -func (x *DeleteAttributeValueResponse) ProtoReflect() protoreflect.Message { +func (x *DeactivateAttributeValueResponse) ProtoReflect() protoreflect.Message { mi := &file_attributes_attributes_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -1479,12 +1516,12 @@ func (x *DeleteAttributeValueResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteAttributeValueResponse.ProtoReflect.Descriptor instead. -func (*DeleteAttributeValueResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeactivateAttributeValueResponse.ProtoReflect.Descriptor instead. +func (*DeactivateAttributeValueResponse) Descriptor() ([]byte, []int) { return file_attributes_attributes_proto_rawDescGZIP(), []int{25} } -func (x *DeleteAttributeValueResponse) GetValue() *Value { +func (x *DeactivateAttributeValueResponse) GetValue() *Value { if x != nil { return x.Value } @@ -1882,7 +1919,7 @@ var file_attributes_attributes_proto_rawDesc = []byte{ 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x6e, 0x61, 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, 0xb7, 0x02, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe4, 0x02, 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, @@ -1901,383 +1938,397 @@ var file_attributes_attributes_proto_rawDesc = []byte{ 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, 0x22, 0x8e, - 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, 0x42, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x21, 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, 0x35, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 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, - 0xd6, 0x01, 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, 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, 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, 0x17, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, - 0x4f, 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, 0x35, 0x0a, 0x0a, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 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, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x2b, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x8e, 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, 0x42, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x21, 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, 0x35, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, + 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 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, 0x83, 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, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 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, 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, 0x44, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 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, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, + 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 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, 0x61, 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, 0x47, 0x0a, + 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x79, 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 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, 0x52, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x14, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x61, 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 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, - 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, - 0x79, 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x30, 0x0a, 0x16, 0x44, 0x65, - 0x6c, 0x65, 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, 0x4e, 0x0a, 0x17, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x44, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x44, 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, 0x27, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x74, 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, 0x2b, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x48, 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, 0x29, 0x0a, 0x06, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 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, 0x85, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x47, 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, 0x22, - 0x48, 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, 0x29, - 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, - 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, 0x85, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x11, 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, 0x9d, 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, 0x3b, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x35, 0x0a, 0x1b, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x9d, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x47, 0x0a, 0x1c, 0x44, 0x65, - 0x6c, 0x65, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x8e, 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, - 0x63, 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, 0x24, 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, 0x8f, 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, 0x63, 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, 0x24, 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, 0x90, 0x01, 0x0a, 0x29, 0x52, 0x65, 0x6d, 0x6f, 0x76, + 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x4b, 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, 0x27, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x8e, 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, 0x63, 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, 0x24, 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, 0x8f, 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, 0x63, 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, 0x24, 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, - 0x46, 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x63, 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, 0x24, 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, 0x91, 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, 0x63, 0x0a, 0x1b, 0x61, 0x74, 0x74, 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, 0x90, 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, 0x63, 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, 0x24, 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, 0x7e, 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, 0x57, 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, 0x20, 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, 0x7f, 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, 0x57, 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, 0x20, 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, 0x80, - 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, + 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x91, 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, 0x63, 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, 0x24, 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, 0x7e, 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, 0x57, 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, 0x20, 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, 0x81, 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, 0x57, 0x0a, 0x17, + 0x72, 0x22, 0x7f, 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, 0x57, 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, 0x20, 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, 0x80, 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, 0x57, 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, 0x20, 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, - 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, + 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x81, 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, 0x57, 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, 0x20, 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, - 0x48, 0x49, 0x45, 0x52, 0x41, 0x52, 0x43, 0x48, 0x59, 0x10, 0x03, 0x32, 0xec, 0x10, 0x0a, 0x11, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, 0x68, 0x0a, 0x13, - 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x73, 0x12, 0x26, 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, 0x27, 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, 0x6b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, + 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, 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, + 0x85, 0x11, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, 0x68, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 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, + 0x27, 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, 0x6b, 0x0a, 0x0c, 0x47, 0x65, + 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 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, 0x23, + 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, 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 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, 0x23, 0x2e, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 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, - 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, - 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x74, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x12, 0x22, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, - 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 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, 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 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, 0x25, 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, 0x9b, 0x01, 0x0a, - 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 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, 0x28, - 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, 0xa0, 0x01, 0x0a, 0x14, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, - 0x6c, 0x75, 0x65, 0x12, 0x27, 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, 0x28, 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, 0x8c, 0x01, - 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 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, 0x80, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 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, 0x27, 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, 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 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, 0x25, 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, 0x9b, 0x01, + 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 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, - 0x28, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 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, 0xd6, 0x01, 0x0a, - 0x20, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, + 0x28, 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, 0xa0, 0x01, 0x0a, 0x14, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 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, 0x28, 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, 0x98, + 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, 0x2b, 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, 0x2c, 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, 0xd6, 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, 0x33, + 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, 0x34, 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, 0x12, 0x33, 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, 0x34, 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, 0xcd, 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, 0x2f, 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, 0x30, 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, 0xdc, 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, 0x35, 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, 0x36, 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, 0xd3, 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, 0x31, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 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, 0xdc, 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, 0x35, 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, 0x36, 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, 0xcd, 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, 0x2f, 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, 0x30, 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, 0xd3, 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, 0x31, 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, 0x32, 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, 0x32, 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, 0x9b, 0x01, 0x0a, 0x0e, 0x63, - 0x6f, 0x6d, 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, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, - 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, - 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0xe2, 0x02, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5c, - 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 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, 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, + 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, + 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xa2, + 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x73, 0xca, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xe2, + 0x02, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2310,8 +2361,8 @@ var file_attributes_attributes_proto_goTypes = []interface{}{ (*CreateAttributeResponse)(nil), // 12: attributes.CreateAttributeResponse (*UpdateAttributeRequest)(nil), // 13: attributes.UpdateAttributeRequest (*UpdateAttributeResponse)(nil), // 14: attributes.UpdateAttributeResponse - (*DeleteAttributeRequest)(nil), // 15: attributes.DeleteAttributeRequest - (*DeleteAttributeResponse)(nil), // 16: attributes.DeleteAttributeResponse + (*DeactivateAttributeRequest)(nil), // 15: attributes.DeactivateAttributeRequest + (*DeactivateAttributeResponse)(nil), // 16: attributes.DeactivateAttributeResponse (*GetAttributeValueRequest)(nil), // 17: attributes.GetAttributeValueRequest (*GetAttributeValueResponse)(nil), // 18: attributes.GetAttributeValueResponse (*ListAttributeValuesRequest)(nil), // 19: attributes.ListAttributeValuesRequest @@ -2320,8 +2371,8 @@ var file_attributes_attributes_proto_goTypes = []interface{}{ (*CreateAttributeValueResponse)(nil), // 22: attributes.CreateAttributeValueResponse (*UpdateAttributeValueRequest)(nil), // 23: attributes.UpdateAttributeValueRequest (*UpdateAttributeValueResponse)(nil), // 24: attributes.UpdateAttributeValueResponse - (*DeleteAttributeValueRequest)(nil), // 25: attributes.DeleteAttributeValueRequest - (*DeleteAttributeValueResponse)(nil), // 26: attributes.DeleteAttributeValueResponse + (*DeactivateAttributeValueRequest)(nil), // 25: attributes.DeactivateAttributeValueRequest + (*DeactivateAttributeValueResponse)(nil), // 26: attributes.DeactivateAttributeValueResponse (*AssignKeyAccessServerToAttributeRequest)(nil), // 27: attributes.AssignKeyAccessServerToAttributeRequest (*AssignKeyAccessServerToAttributeResponse)(nil), // 28: attributes.AssignKeyAccessServerToAttributeResponse (*RemoveKeyAccessServerFromAttributeRequest)(nil), // 29: attributes.RemoveKeyAccessServerFromAttributeRequest @@ -2333,7 +2384,8 @@ var file_attributes_attributes_proto_goTypes = []interface{}{ (*common.Metadata)(nil), // 35: common.Metadata (*namespaces.Namespace)(nil), // 36: namespaces.Namespace (*kasregistry.KeyAccessServer)(nil), // 37: kasregistry.KeyAccessServer - (*common.MetadataMutable)(nil), // 38: common.MetadataMutable + (common.StateTypeEnum)(0), // 38: common.StateTypeEnum + (*common.MetadataMutable)(nil), // 39: common.MetadataMutable } var file_attributes_attributes_proto_depIdxs = []int32{ 35, // 0: attributes.Attribute.metadata:type_name -> common.Metadata @@ -2341,67 +2393,71 @@ var file_attributes_attributes_proto_depIdxs = []int32{ 0, // 2: attributes.Attribute.rule:type_name -> attributes.AttributeRuleTypeEnum 3, // 3: attributes.Attribute.values:type_name -> attributes.Value 37, // 4: attributes.Attribute.grants:type_name -> kasregistry.KeyAccessServer - 38, // 5: attributes.AttributeCreateUpdate.metadata:type_name -> common.MetadataMutable - 0, // 6: attributes.AttributeCreateUpdate.rule:type_name -> attributes.AttributeRuleTypeEnum - 4, // 7: attributes.AttributeCreateUpdate.values:type_name -> attributes.ValueCreateUpdate - 35, // 8: attributes.Value.metadata:type_name -> common.Metadata - 37, // 9: attributes.Value.grants:type_name -> kasregistry.KeyAccessServer - 38, // 10: attributes.ValueCreateUpdate.metadata:type_name -> common.MetadataMutable - 1, // 11: attributes.ListAttributesResponse.attributes:type_name -> attributes.Attribute - 1, // 12: attributes.GetAttributeResponse.attribute:type_name -> attributes.Attribute - 2, // 13: attributes.CreateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate - 1, // 14: attributes.CreateAttributeResponse.attribute:type_name -> attributes.Attribute - 2, // 15: attributes.UpdateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate - 1, // 16: attributes.UpdateAttributeResponse.attribute:type_name -> attributes.Attribute - 1, // 17: attributes.DeleteAttributeResponse.attribute:type_name -> attributes.Attribute - 3, // 18: attributes.GetAttributeValueResponse.value:type_name -> attributes.Value - 3, // 19: attributes.ListAttributeValuesResponse.values:type_name -> attributes.Value - 4, // 20: attributes.CreateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate - 3, // 21: attributes.CreateAttributeValueResponse.value:type_name -> attributes.Value - 4, // 22: attributes.UpdateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate - 3, // 23: attributes.UpdateAttributeValueResponse.value:type_name -> attributes.Value - 3, // 24: attributes.DeleteAttributeValueResponse.value:type_name -> attributes.Value - 5, // 25: attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 5, // 26: attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 5, // 27: attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 5, // 28: attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 6, // 29: attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 6, // 30: attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 6, // 31: attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 6, // 32: attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 7, // 33: attributes.AttributesService.ListAttributes:input_type -> attributes.ListAttributesRequest - 19, // 34: attributes.AttributesService.ListAttributeValues:input_type -> attributes.ListAttributeValuesRequest - 9, // 35: attributes.AttributesService.GetAttribute:input_type -> attributes.GetAttributeRequest - 11, // 36: attributes.AttributesService.CreateAttribute:input_type -> attributes.CreateAttributeRequest - 13, // 37: attributes.AttributesService.UpdateAttribute:input_type -> attributes.UpdateAttributeRequest - 15, // 38: attributes.AttributesService.DeleteAttribute:input_type -> attributes.DeleteAttributeRequest - 17, // 39: attributes.AttributesService.GetAttributeValue:input_type -> attributes.GetAttributeValueRequest - 21, // 40: attributes.AttributesService.CreateAttributeValue:input_type -> attributes.CreateAttributeValueRequest - 23, // 41: attributes.AttributesService.UpdateAttributeValue:input_type -> attributes.UpdateAttributeValueRequest - 25, // 42: attributes.AttributesService.DeleteAttributeValue:input_type -> attributes.DeleteAttributeValueRequest - 27, // 43: attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> attributes.AssignKeyAccessServerToAttributeRequest - 31, // 44: attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> attributes.AssignKeyAccessServerToValueRequest - 29, // 45: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> attributes.RemoveKeyAccessServerFromAttributeRequest - 33, // 46: attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> attributes.RemoveKeyAccessServerFromValueRequest - 8, // 47: attributes.AttributesService.ListAttributes:output_type -> attributes.ListAttributesResponse - 20, // 48: attributes.AttributesService.ListAttributeValues:output_type -> attributes.ListAttributeValuesResponse - 10, // 49: attributes.AttributesService.GetAttribute:output_type -> attributes.GetAttributeResponse - 12, // 50: attributes.AttributesService.CreateAttribute:output_type -> attributes.CreateAttributeResponse - 14, // 51: attributes.AttributesService.UpdateAttribute:output_type -> attributes.UpdateAttributeResponse - 16, // 52: attributes.AttributesService.DeleteAttribute:output_type -> attributes.DeleteAttributeResponse - 18, // 53: attributes.AttributesService.GetAttributeValue:output_type -> attributes.GetAttributeValueResponse - 22, // 54: attributes.AttributesService.CreateAttributeValue:output_type -> attributes.CreateAttributeValueResponse - 24, // 55: attributes.AttributesService.UpdateAttributeValue:output_type -> attributes.UpdateAttributeValueResponse - 26, // 56: attributes.AttributesService.DeleteAttributeValue:output_type -> attributes.DeleteAttributeValueResponse - 28, // 57: attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> attributes.AssignKeyAccessServerToAttributeResponse - 32, // 58: attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> attributes.AssignKeyAccessServerToValueResponse - 30, // 59: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> attributes.RemoveKeyAccessServerFromAttributeResponse - 34, // 60: attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> attributes.RemoveKeyAccessServerFromValueResponse - 47, // [47:61] is the sub-list for method output_type - 33, // [33:47] is the sub-list for method input_type - 33, // [33:33] is the sub-list for extension type_name - 33, // [33:33] is the sub-list for extension extendee - 0, // [0:33] is the sub-list for field type_name + 38, // 5: attributes.Attribute.state:type_name -> common.StateTypeEnum + 39, // 6: attributes.AttributeCreateUpdate.metadata:type_name -> common.MetadataMutable + 0, // 7: attributes.AttributeCreateUpdate.rule:type_name -> attributes.AttributeRuleTypeEnum + 4, // 8: attributes.AttributeCreateUpdate.values:type_name -> attributes.ValueCreateUpdate + 35, // 9: attributes.Value.metadata:type_name -> common.Metadata + 37, // 10: attributes.Value.grants:type_name -> kasregistry.KeyAccessServer + 38, // 11: attributes.Value.state:type_name -> common.StateTypeEnum + 39, // 12: attributes.ValueCreateUpdate.metadata:type_name -> common.MetadataMutable + 38, // 13: attributes.ListAttributesRequest.state:type_name -> common.StateTypeEnum + 1, // 14: attributes.ListAttributesResponse.attributes:type_name -> attributes.Attribute + 1, // 15: attributes.GetAttributeResponse.attribute:type_name -> attributes.Attribute + 2, // 16: attributes.CreateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate + 1, // 17: attributes.CreateAttributeResponse.attribute:type_name -> attributes.Attribute + 2, // 18: attributes.UpdateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate + 1, // 19: attributes.UpdateAttributeResponse.attribute:type_name -> attributes.Attribute + 1, // 20: attributes.DeactivateAttributeResponse.attribute:type_name -> attributes.Attribute + 3, // 21: attributes.GetAttributeValueResponse.value:type_name -> attributes.Value + 38, // 22: attributes.ListAttributeValuesRequest.state:type_name -> common.StateTypeEnum + 3, // 23: attributes.ListAttributeValuesResponse.values:type_name -> attributes.Value + 4, // 24: attributes.CreateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate + 3, // 25: attributes.CreateAttributeValueResponse.value:type_name -> attributes.Value + 4, // 26: attributes.UpdateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate + 3, // 27: attributes.UpdateAttributeValueResponse.value:type_name -> attributes.Value + 3, // 28: attributes.DeactivateAttributeValueResponse.value:type_name -> attributes.Value + 5, // 29: attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 5, // 30: attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 5, // 31: attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 5, // 32: attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 6, // 33: attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 6, // 34: attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 6, // 35: attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 6, // 36: attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 7, // 37: attributes.AttributesService.ListAttributes:input_type -> attributes.ListAttributesRequest + 19, // 38: attributes.AttributesService.ListAttributeValues:input_type -> attributes.ListAttributeValuesRequest + 9, // 39: attributes.AttributesService.GetAttribute:input_type -> attributes.GetAttributeRequest + 11, // 40: attributes.AttributesService.CreateAttribute:input_type -> attributes.CreateAttributeRequest + 13, // 41: attributes.AttributesService.UpdateAttribute:input_type -> attributes.UpdateAttributeRequest + 15, // 42: attributes.AttributesService.DeactivateAttribute:input_type -> attributes.DeactivateAttributeRequest + 17, // 43: attributes.AttributesService.GetAttributeValue:input_type -> attributes.GetAttributeValueRequest + 21, // 44: attributes.AttributesService.CreateAttributeValue:input_type -> attributes.CreateAttributeValueRequest + 23, // 45: attributes.AttributesService.UpdateAttributeValue:input_type -> attributes.UpdateAttributeValueRequest + 25, // 46: attributes.AttributesService.DeactivateAttributeValue:input_type -> attributes.DeactivateAttributeValueRequest + 27, // 47: attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> attributes.AssignKeyAccessServerToAttributeRequest + 29, // 48: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> attributes.RemoveKeyAccessServerFromAttributeRequest + 31, // 49: attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> attributes.AssignKeyAccessServerToValueRequest + 33, // 50: attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> attributes.RemoveKeyAccessServerFromValueRequest + 8, // 51: attributes.AttributesService.ListAttributes:output_type -> attributes.ListAttributesResponse + 20, // 52: attributes.AttributesService.ListAttributeValues:output_type -> attributes.ListAttributeValuesResponse + 10, // 53: attributes.AttributesService.GetAttribute:output_type -> attributes.GetAttributeResponse + 12, // 54: attributes.AttributesService.CreateAttribute:output_type -> attributes.CreateAttributeResponse + 14, // 55: attributes.AttributesService.UpdateAttribute:output_type -> attributes.UpdateAttributeResponse + 16, // 56: attributes.AttributesService.DeactivateAttribute:output_type -> attributes.DeactivateAttributeResponse + 18, // 57: attributes.AttributesService.GetAttributeValue:output_type -> attributes.GetAttributeValueResponse + 22, // 58: attributes.AttributesService.CreateAttributeValue:output_type -> attributes.CreateAttributeValueResponse + 24, // 59: attributes.AttributesService.UpdateAttributeValue:output_type -> attributes.UpdateAttributeValueResponse + 26, // 60: attributes.AttributesService.DeactivateAttributeValue:output_type -> attributes.DeactivateAttributeValueResponse + 28, // 61: attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> attributes.AssignKeyAccessServerToAttributeResponse + 30, // 62: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> attributes.RemoveKeyAccessServerFromAttributeResponse + 32, // 63: attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> attributes.AssignKeyAccessServerToValueResponse + 34, // 64: attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> attributes.RemoveKeyAccessServerFromValueResponse + 51, // [51:65] is the sub-list for method output_type + 37, // [37:51] is the sub-list for method input_type + 37, // [37:37] is the sub-list for extension type_name + 37, // [37:37] is the sub-list for extension extendee + 0, // [0:37] is the sub-list for field type_name } func init() { file_attributes_attributes_proto_init() } @@ -2579,7 +2635,7 @@ func file_attributes_attributes_proto_init() { } } file_attributes_attributes_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAttributeRequest); i { + switch v := v.(*DeactivateAttributeRequest); i { case 0: return &v.state case 1: @@ -2591,7 +2647,7 @@ func file_attributes_attributes_proto_init() { } } file_attributes_attributes_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAttributeResponse); i { + switch v := v.(*DeactivateAttributeResponse); i { case 0: return &v.state case 1: @@ -2699,7 +2755,7 @@ func file_attributes_attributes_proto_init() { } } file_attributes_attributes_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAttributeValueRequest); i { + switch v := v.(*DeactivateAttributeValueRequest); i { case 0: return &v.state case 1: @@ -2711,7 +2767,7 @@ func file_attributes_attributes_proto_init() { } } file_attributes_attributes_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteAttributeValueResponse); i { + switch v := v.(*DeactivateAttributeValueResponse); i { case 0: return &v.state case 1: diff --git a/sdk/attributes/attributes.pb.gw.go b/sdk/attributes/attributes.pb.gw.go index 5aaf992139..9db3d218be 100644 --- a/sdk/attributes/attributes.pb.gw.go +++ b/sdk/attributes/attributes.pb.gw.go @@ -185,8 +185,8 @@ func local_request_AttributesService_UpdateAttribute_0(ctx context.Context, mars } -func request_AttributesService_DeleteAttribute_0(ctx context.Context, marshaler runtime.Marshaler, client AttributesServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteAttributeRequest +func request_AttributesService_DeactivateAttribute_0(ctx context.Context, marshaler runtime.Marshaler, client AttributesServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeactivateAttributeRequest var metadata runtime.ServerMetadata var ( @@ -206,13 +206,13 @@ func request_AttributesService_DeleteAttribute_0(ctx context.Context, marshaler return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := client.DeleteAttribute(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.DeactivateAttribute(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AttributesService_DeleteAttribute_0(ctx context.Context, marshaler runtime.Marshaler, server AttributesServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteAttributeRequest +func local_request_AttributesService_DeactivateAttribute_0(ctx context.Context, marshaler runtime.Marshaler, server AttributesServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeactivateAttributeRequest var metadata runtime.ServerMetadata var ( @@ -232,7 +232,7 @@ func local_request_AttributesService_DeleteAttribute_0(ctx context.Context, mars return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := server.DeleteAttribute(ctx, &protoReq) + msg, err := server.DeactivateAttribute(ctx, &protoReq) return msg, metadata, err } @@ -445,8 +445,8 @@ func local_request_AttributesService_UpdateAttributeValue_0(ctx context.Context, } -func request_AttributesService_DeleteAttributeValue_0(ctx context.Context, marshaler runtime.Marshaler, client AttributesServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteAttributeValueRequest +func request_AttributesService_DeactivateAttributeValue_0(ctx context.Context, marshaler runtime.Marshaler, client AttributesServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeactivateAttributeValueRequest var metadata runtime.ServerMetadata var ( @@ -466,13 +466,13 @@ func request_AttributesService_DeleteAttributeValue_0(ctx context.Context, marsh return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := client.DeleteAttributeValue(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.DeactivateAttributeValue(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AttributesService_DeleteAttributeValue_0(ctx context.Context, marshaler runtime.Marshaler, server AttributesServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteAttributeValueRequest +func local_request_AttributesService_DeactivateAttributeValue_0(ctx context.Context, marshaler runtime.Marshaler, server AttributesServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeactivateAttributeValueRequest var metadata runtime.ServerMetadata var ( @@ -492,7 +492,7 @@ func local_request_AttributesService_DeleteAttributeValue_0(ctx context.Context, return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := server.DeleteAttributeValue(ctx, &protoReq) + msg, err := server.DeactivateAttributeValue(ctx, &protoReq) return msg, metadata, err } @@ -531,70 +531,70 @@ func local_request_AttributesService_AssignKeyAccessServerToAttribute_0(ctx cont } -func request_AttributesService_AssignKeyAccessServerToValue_0(ctx context.Context, marshaler runtime.Marshaler, client AttributesServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq AssignKeyAccessServerToValueRequest +func request_AttributesService_RemoveKeyAccessServerFromAttribute_0(ctx context.Context, marshaler runtime.Marshaler, client AttributesServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RemoveKeyAccessServerFromAttributeRequest 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.ValueKeyAccessServer); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.AttributeKeyAccessServer); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.AssignKeyAccessServerToValue(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.RemoveKeyAccessServerFromAttribute(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AttributesService_AssignKeyAccessServerToValue_0(ctx context.Context, marshaler runtime.Marshaler, server AttributesServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq AssignKeyAccessServerToValueRequest +func local_request_AttributesService_RemoveKeyAccessServerFromAttribute_0(ctx context.Context, marshaler runtime.Marshaler, server AttributesServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq RemoveKeyAccessServerFromAttributeRequest 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.ValueKeyAccessServer); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.AttributeKeyAccessServer); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.AssignKeyAccessServerToValue(ctx, &protoReq) + msg, err := server.RemoveKeyAccessServerFromAttribute(ctx, &protoReq) return msg, metadata, err } -func request_AttributesService_RemoveKeyAccessServerFromAttribute_0(ctx context.Context, marshaler runtime.Marshaler, client AttributesServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq RemoveKeyAccessServerFromAttributeRequest +func request_AttributesService_AssignKeyAccessServerToValue_0(ctx context.Context, marshaler runtime.Marshaler, client AttributesServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AssignKeyAccessServerToValueRequest 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.AttributeKeyAccessServer); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.ValueKeyAccessServer); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := client.RemoveKeyAccessServerFromAttribute(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.AssignKeyAccessServerToValue(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_AttributesService_RemoveKeyAccessServerFromAttribute_0(ctx context.Context, marshaler runtime.Marshaler, server AttributesServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq RemoveKeyAccessServerFromAttributeRequest +func local_request_AttributesService_AssignKeyAccessServerToValue_0(ctx context.Context, marshaler runtime.Marshaler, server AttributesServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq AssignKeyAccessServerToValueRequest 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.AttributeKeyAccessServer); err != nil && err != io.EOF { + if err := marshaler.NewDecoder(newReader()).Decode(&protoReq.ValueKeyAccessServer); err != nil && err != io.EOF { return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) } - msg, err := server.RemoveKeyAccessServerFromAttribute(ctx, &protoReq) + msg, err := server.AssignKeyAccessServerToValue(ctx, &protoReq) return msg, metadata, err } @@ -714,7 +714,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se }) - mux.Handle("DELETE", pattern_AttributesService_DeleteAttribute_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AttributesService_DeactivateAttribute_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -722,12 +722,12 @@ 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, "/attributes.AttributesService/DeleteAttribute", runtime.WithHTTPPathPattern("/attributes/{id}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/attributes.AttributesService/DeactivateAttribute", runtime.WithHTTPPathPattern("/attributes/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AttributesService_DeleteAttribute_0(annotatedContext, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AttributesService_DeactivateAttribute_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { @@ -735,7 +735,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se return } - forward_AttributesService_DeleteAttribute_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AttributesService_DeactivateAttribute_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -814,7 +814,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se }) - mux.Handle("DELETE", pattern_AttributesService_DeleteAttributeValue_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AttributesService_DeactivateAttributeValue_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -822,12 +822,12 @@ 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, "/attributes.AttributesService/DeleteAttributeValue", runtime.WithHTTPPathPattern("/attributes/_/values/{id}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/attributes.AttributesService/DeactivateAttributeValue", runtime.WithHTTPPathPattern("/attributes/_/values/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AttributesService_DeleteAttributeValue_0(annotatedContext, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AttributesService_DeactivateAttributeValue_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { @@ -835,7 +835,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se return } - forward_AttributesService_DeleteAttributeValue_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AttributesService_DeactivateAttributeValue_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -864,7 +864,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se }) - mux.Handle("POST", pattern_AttributesService_AssignKeyAccessServerToValue_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AttributesService_RemoveKeyAccessServerFromAttribute_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -872,12 +872,12 @@ 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, "/attributes.AttributesService/AssignKeyAccessServerToValue", runtime.WithHTTPPathPattern("/attributes/values/keyaccessserver/assign")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/attributes.AttributesService/RemoveKeyAccessServerFromAttribute", runtime.WithHTTPPathPattern("/attributes/keyaccessserver/remove")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AttributesService_AssignKeyAccessServerToValue_0(annotatedContext, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AttributesService_RemoveKeyAccessServerFromAttribute_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { @@ -885,11 +885,11 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se return } - forward_AttributesService_AssignKeyAccessServerToValue_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AttributesService_RemoveKeyAccessServerFromAttribute_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AttributesService_RemoveKeyAccessServerFromAttribute_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AttributesService_AssignKeyAccessServerToValue_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -897,12 +897,12 @@ 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, "/attributes.AttributesService/RemoveKeyAccessServerFromAttribute", runtime.WithHTTPPathPattern("/attributes/keyaccessserver/remove")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/attributes.AttributesService/AssignKeyAccessServerToValue", runtime.WithHTTPPathPattern("/attributes/values/keyaccessserver/assign")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_AttributesService_RemoveKeyAccessServerFromAttribute_0(annotatedContext, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_AttributesService_AssignKeyAccessServerToValue_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { @@ -910,7 +910,7 @@ func RegisterAttributesServiceHandlerServer(ctx context.Context, mux *runtime.Se return } - forward_AttributesService_RemoveKeyAccessServerFromAttribute_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AttributesService_AssignKeyAccessServerToValue_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1046,25 +1046,25 @@ func RegisterAttributesServiceHandlerClient(ctx context.Context, mux *runtime.Se }) - mux.Handle("DELETE", pattern_AttributesService_DeleteAttribute_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AttributesService_DeactivateAttribute_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, "/attributes.AttributesService/DeleteAttribute", runtime.WithHTTPPathPattern("/attributes/{id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/attributes.AttributesService/DeactivateAttribute", runtime.WithHTTPPathPattern("/attributes/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AttributesService_DeleteAttribute_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AttributesService_DeactivateAttribute_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AttributesService_DeleteAttribute_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AttributesService_DeactivateAttribute_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1134,25 +1134,25 @@ func RegisterAttributesServiceHandlerClient(ctx context.Context, mux *runtime.Se }) - mux.Handle("DELETE", pattern_AttributesService_DeleteAttributeValue_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_AttributesService_DeactivateAttributeValue_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, "/attributes.AttributesService/DeleteAttributeValue", runtime.WithHTTPPathPattern("/attributes/_/values/{id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/attributes.AttributesService/DeactivateAttributeValue", runtime.WithHTTPPathPattern("/attributes/_/values/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AttributesService_DeleteAttributeValue_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AttributesService_DeactivateAttributeValue_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AttributesService_DeleteAttributeValue_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AttributesService_DeactivateAttributeValue_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1178,47 +1178,47 @@ func RegisterAttributesServiceHandlerClient(ctx context.Context, mux *runtime.Se }) - mux.Handle("POST", pattern_AttributesService_AssignKeyAccessServerToValue_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AttributesService_RemoveKeyAccessServerFromAttribute_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, "/attributes.AttributesService/AssignKeyAccessServerToValue", runtime.WithHTTPPathPattern("/attributes/values/keyaccessserver/assign")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/attributes.AttributesService/RemoveKeyAccessServerFromAttribute", runtime.WithHTTPPathPattern("/attributes/keyaccessserver/remove")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AttributesService_AssignKeyAccessServerToValue_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AttributesService_RemoveKeyAccessServerFromAttribute_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AttributesService_AssignKeyAccessServerToValue_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AttributesService_RemoveKeyAccessServerFromAttribute_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) - mux.Handle("POST", pattern_AttributesService_RemoveKeyAccessServerFromAttribute_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("POST", pattern_AttributesService_AssignKeyAccessServerToValue_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, "/attributes.AttributesService/RemoveKeyAccessServerFromAttribute", runtime.WithHTTPPathPattern("/attributes/keyaccessserver/remove")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/attributes.AttributesService/AssignKeyAccessServerToValue", runtime.WithHTTPPathPattern("/attributes/values/keyaccessserver/assign")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_AttributesService_RemoveKeyAccessServerFromAttribute_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_AttributesService_AssignKeyAccessServerToValue_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_AttributesService_RemoveKeyAccessServerFromAttribute_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_AttributesService_AssignKeyAccessServerToValue_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -1254,7 +1254,7 @@ var ( pattern_AttributesService_UpdateAttribute_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"attributes", "id"}, "")) - pattern_AttributesService_DeleteAttribute_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 1, 0, 4, 1, 5, 1}, []string{"attributes", "id"}, "")) + 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"}, "")) @@ -1262,14 +1262,14 @@ var ( 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_DeleteAttributeValue_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, 2, 1, 2, 2, 1, 0, 4, 1, 5, 3}, []string{"attributes", "_", "values", "id"}, "")) pattern_AttributesService_AssignKeyAccessServerToAttribute_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"attributes", "keyaccessserver", "assign"}, "")) - pattern_AttributesService_AssignKeyAccessServerToValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"attributes", "values", "keyaccessserver", "assign"}, "")) - pattern_AttributesService_RemoveKeyAccessServerFromAttribute_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"attributes", "keyaccessserver", "remove"}, "")) + pattern_AttributesService_AssignKeyAccessServerToValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"attributes", "values", "keyaccessserver", "assign"}, "")) + pattern_AttributesService_RemoveKeyAccessServerFromValue_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2, 2, 3}, []string{"attributes", "values", "keyaccessserver", "remove"}, "")) ) @@ -1280,7 +1280,7 @@ var ( forward_AttributesService_UpdateAttribute_0 = runtime.ForwardResponseMessage - forward_AttributesService_DeleteAttribute_0 = runtime.ForwardResponseMessage + forward_AttributesService_DeactivateAttribute_0 = runtime.ForwardResponseMessage forward_AttributesService_GetAttributeValue_0 = runtime.ForwardResponseMessage @@ -1288,13 +1288,13 @@ var ( forward_AttributesService_UpdateAttributeValue_0 = runtime.ForwardResponseMessage - forward_AttributesService_DeleteAttributeValue_0 = runtime.ForwardResponseMessage + forward_AttributesService_DeactivateAttributeValue_0 = runtime.ForwardResponseMessage forward_AttributesService_AssignKeyAccessServerToAttribute_0 = runtime.ForwardResponseMessage - forward_AttributesService_AssignKeyAccessServerToValue_0 = runtime.ForwardResponseMessage - forward_AttributesService_RemoveKeyAccessServerFromAttribute_0 = runtime.ForwardResponseMessage + forward_AttributesService_AssignKeyAccessServerToValue_0 = runtime.ForwardResponseMessage + forward_AttributesService_RemoveKeyAccessServerFromValue_0 = runtime.ForwardResponseMessage ) diff --git a/sdk/attributes/attributes_grpc.pb.go b/sdk/attributes/attributes_grpc.pb.go index 726eee562b..57e23523b8 100644 --- a/sdk/attributes/attributes_grpc.pb.go +++ b/sdk/attributes/attributes_grpc.pb.go @@ -24,14 +24,14 @@ const ( AttributesService_GetAttribute_FullMethodName = "/attributes.AttributesService/GetAttribute" AttributesService_CreateAttribute_FullMethodName = "/attributes.AttributesService/CreateAttribute" AttributesService_UpdateAttribute_FullMethodName = "/attributes.AttributesService/UpdateAttribute" - AttributesService_DeleteAttribute_FullMethodName = "/attributes.AttributesService/DeleteAttribute" + AttributesService_DeactivateAttribute_FullMethodName = "/attributes.AttributesService/DeactivateAttribute" AttributesService_GetAttributeValue_FullMethodName = "/attributes.AttributesService/GetAttributeValue" AttributesService_CreateAttributeValue_FullMethodName = "/attributes.AttributesService/CreateAttributeValue" AttributesService_UpdateAttributeValue_FullMethodName = "/attributes.AttributesService/UpdateAttributeValue" - AttributesService_DeleteAttributeValue_FullMethodName = "/attributes.AttributesService/DeleteAttributeValue" + AttributesService_DeactivateAttributeValue_FullMethodName = "/attributes.AttributesService/DeactivateAttributeValue" AttributesService_AssignKeyAccessServerToAttribute_FullMethodName = "/attributes.AttributesService/AssignKeyAccessServerToAttribute" - AttributesService_AssignKeyAccessServerToValue_FullMethodName = "/attributes.AttributesService/AssignKeyAccessServerToValue" AttributesService_RemoveKeyAccessServerFromAttribute_FullMethodName = "/attributes.AttributesService/RemoveKeyAccessServerFromAttribute" + AttributesService_AssignKeyAccessServerToValue_FullMethodName = "/attributes.AttributesService/AssignKeyAccessServerToValue" AttributesService_RemoveKeyAccessServerFromValue_FullMethodName = "/attributes.AttributesService/RemoveKeyAccessServerFromValue" ) @@ -39,34 +39,203 @@ 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 { - // List Attributes - // Example: + // NOTE: ACTIVE state by default, INACTIVE or ANY when specified + // Request: // grpcurl -plaintext localhost:9000 attributes.AttributesService/ListAttributes + // OR (for inactive) + // grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 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", + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // ], + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // ], + // "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", + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // ], + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // ] + // } ListAttributes(ctx context.Context, in *ListAttributesRequest, opts ...grpc.CallOption) (*ListAttributesResponse, error) // List Values - // Example: - // grpcurl -plaintext -d '{"attribute_id": "attribute_id"}' localhost:8080 attributes.AttributesService/ListValues + // + // Request: + // NOTE: ACTIVE state by default, INACTIVE or ANY when specified + // grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 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 ... + // } + // ], + // "state": "STATE_TYPE_ENUM_INACTIVE" + // } + // ] + // } ListAttributeValues(ctx context.Context, in *ListAttributeValuesRequest, opts ...grpc.CallOption) (*ListAttributeValuesResponse, error) GetAttribute(ctx context.Context, in *GetAttributeRequest, opts ...grpc.CallOption) (*GetAttributeResponse, error) // Create Attribute - // Example: - // - // grpcurl -plaintext -d '{"attribute": {"namespace_id": "namespace_id", "name": "attribute_name", "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"}}' localhost:8080 attributes.AttributesService/CreateAttribute + // Request: + // grpcurl -plaintext -d '{"attribute": {"namespace_id": "namespace_id", "name": "attribute_name", "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"}}' localhost:9000 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" + // } + // } CreateAttribute(ctx context.Context, in *CreateAttributeRequest, opts ...grpc.CallOption) (*CreateAttributeResponse, error) UpdateAttribute(ctx context.Context, in *UpdateAttributeRequest, opts ...grpc.CallOption) (*UpdateAttributeResponse, error) - DeleteAttribute(ctx context.Context, in *DeleteAttributeRequest, opts ...grpc.CallOption) (*DeleteAttributeResponse, error) + DeactivateAttribute(ctx context.Context, in *DeactivateAttributeRequest, opts ...grpc.CallOption) (*DeactivateAttributeResponse, error) // * Attribute Value * 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:8080 attributes.AttributesService/CreateValue + // grpcurl -plaintext -d '{"attribute_id": "attribute_id", "value": {"value": "value"}}' localhost:8080 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) - DeleteAttributeValue(ctx context.Context, in *DeleteAttributeValueRequest, opts ...grpc.CallOption) (*DeleteAttributeValueResponse, 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 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" + // } AssignKeyAccessServerToAttribute(ctx context.Context, in *AssignKeyAccessServerToAttributeRequest, opts ...grpc.CallOption) (*AssignKeyAccessServerToAttributeResponse, error) - AssignKeyAccessServerToValue(ctx context.Context, in *AssignKeyAccessServerToValueRequest, opts ...grpc.CallOption) (*AssignKeyAccessServerToValueResponse, 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 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 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 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) } @@ -123,9 +292,9 @@ func (c *attributesServiceClient) UpdateAttribute(ctx context.Context, in *Updat return out, nil } -func (c *attributesServiceClient) DeleteAttribute(ctx context.Context, in *DeleteAttributeRequest, opts ...grpc.CallOption) (*DeleteAttributeResponse, error) { - out := new(DeleteAttributeResponse) - err := c.cc.Invoke(ctx, AttributesService_DeleteAttribute_FullMethodName, in, out, opts...) +func (c *attributesServiceClient) DeactivateAttribute(ctx context.Context, in *DeactivateAttributeRequest, opts ...grpc.CallOption) (*DeactivateAttributeResponse, error) { + out := new(DeactivateAttributeResponse) + err := c.cc.Invoke(ctx, AttributesService_DeactivateAttribute_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -159,9 +328,9 @@ func (c *attributesServiceClient) UpdateAttributeValue(ctx context.Context, in * return out, nil } -func (c *attributesServiceClient) DeleteAttributeValue(ctx context.Context, in *DeleteAttributeValueRequest, opts ...grpc.CallOption) (*DeleteAttributeValueResponse, error) { - out := new(DeleteAttributeValueResponse) - err := c.cc.Invoke(ctx, AttributesService_DeleteAttributeValue_FullMethodName, in, out, opts...) +func (c *attributesServiceClient) DeactivateAttributeValue(ctx context.Context, in *DeactivateAttributeValueRequest, opts ...grpc.CallOption) (*DeactivateAttributeValueResponse, error) { + out := new(DeactivateAttributeValueResponse) + err := c.cc.Invoke(ctx, AttributesService_DeactivateAttributeValue_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -177,18 +346,18 @@ func (c *attributesServiceClient) AssignKeyAccessServerToAttribute(ctx context.C return out, nil } -func (c *attributesServiceClient) AssignKeyAccessServerToValue(ctx context.Context, in *AssignKeyAccessServerToValueRequest, opts ...grpc.CallOption) (*AssignKeyAccessServerToValueResponse, error) { - out := new(AssignKeyAccessServerToValueResponse) - err := c.cc.Invoke(ctx, AttributesService_AssignKeyAccessServerToValue_FullMethodName, in, out, opts...) +func (c *attributesServiceClient) RemoveKeyAccessServerFromAttribute(ctx context.Context, in *RemoveKeyAccessServerFromAttributeRequest, opts ...grpc.CallOption) (*RemoveKeyAccessServerFromAttributeResponse, error) { + out := new(RemoveKeyAccessServerFromAttributeResponse) + err := c.cc.Invoke(ctx, AttributesService_RemoveKeyAccessServerFromAttribute_FullMethodName, in, out, opts...) if err != nil { return nil, err } return out, nil } -func (c *attributesServiceClient) RemoveKeyAccessServerFromAttribute(ctx context.Context, in *RemoveKeyAccessServerFromAttributeRequest, opts ...grpc.CallOption) (*RemoveKeyAccessServerFromAttributeResponse, error) { - out := new(RemoveKeyAccessServerFromAttributeResponse) - err := c.cc.Invoke(ctx, AttributesService_RemoveKeyAccessServerFromAttribute_FullMethodName, in, out, opts...) +func (c *attributesServiceClient) AssignKeyAccessServerToValue(ctx context.Context, in *AssignKeyAccessServerToValueRequest, opts ...grpc.CallOption) (*AssignKeyAccessServerToValueResponse, error) { + out := new(AssignKeyAccessServerToValueResponse) + err := c.cc.Invoke(ctx, AttributesService_AssignKeyAccessServerToValue_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -208,34 +377,203 @@ func (c *attributesServiceClient) RemoveKeyAccessServerFromValue(ctx context.Con // All implementations must embed UnimplementedAttributesServiceServer // for forward compatibility type AttributesServiceServer interface { - // List Attributes - // Example: + // NOTE: ACTIVE state by default, INACTIVE or ANY when specified + // Request: // grpcurl -plaintext localhost:9000 attributes.AttributesService/ListAttributes + // OR (for inactive) + // grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 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", + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // ], + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // ], + // "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", + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // ], + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // ] + // } ListAttributes(context.Context, *ListAttributesRequest) (*ListAttributesResponse, error) // List Values - // Example: - // grpcurl -plaintext -d '{"attribute_id": "attribute_id"}' localhost:8080 attributes.AttributesService/ListValues + // + // Request: + // NOTE: ACTIVE state by default, INACTIVE or ANY when specified + // grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 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 ... + // } + // ], + // "state": "STATE_TYPE_ENUM_INACTIVE" + // } + // ] + // } ListAttributeValues(context.Context, *ListAttributeValuesRequest) (*ListAttributeValuesResponse, error) GetAttribute(context.Context, *GetAttributeRequest) (*GetAttributeResponse, error) // Create Attribute - // Example: - // - // grpcurl -plaintext -d '{"attribute": {"namespace_id": "namespace_id", "name": "attribute_name", "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"}}' localhost:8080 attributes.AttributesService/CreateAttribute + // Request: + // grpcurl -plaintext -d '{"attribute": {"namespace_id": "namespace_id", "name": "attribute_name", "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"}}' localhost:9000 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" + // } + // } CreateAttribute(context.Context, *CreateAttributeRequest) (*CreateAttributeResponse, error) UpdateAttribute(context.Context, *UpdateAttributeRequest) (*UpdateAttributeResponse, error) - DeleteAttribute(context.Context, *DeleteAttributeRequest) (*DeleteAttributeResponse, error) + DeactivateAttribute(context.Context, *DeactivateAttributeRequest) (*DeactivateAttributeResponse, error) // * Attribute Value * GetAttributeValue(context.Context, *GetAttributeValueRequest) (*GetAttributeValueResponse, error) // Create Attribute Value // Example: // - // grpcurl -plaintext -d '{"attribute_id": "attribute_id", "value": {"value": "value"}}' localhost:8080 attributes.AttributesService/CreateValue + // grpcurl -plaintext -d '{"attribute_id": "attribute_id", "value": {"value": "value"}}' localhost:8080 attributes.AttributesService/CreateAttributeValue CreateAttributeValue(context.Context, *CreateAttributeValueRequest) (*CreateAttributeValueResponse, error) UpdateAttributeValue(context.Context, *UpdateAttributeValueRequest) (*UpdateAttributeValueResponse, error) - DeleteAttributeValue(context.Context, *DeleteAttributeValueRequest) (*DeleteAttributeValueResponse, 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 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" + // } AssignKeyAccessServerToAttribute(context.Context, *AssignKeyAccessServerToAttributeRequest) (*AssignKeyAccessServerToAttributeResponse, error) - AssignKeyAccessServerToValue(context.Context, *AssignKeyAccessServerToValueRequest) (*AssignKeyAccessServerToValueResponse, 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 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 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 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() } @@ -259,8 +597,8 @@ func (UnimplementedAttributesServiceServer) CreateAttribute(context.Context, *Cr func (UnimplementedAttributesServiceServer) UpdateAttribute(context.Context, *UpdateAttributeRequest) (*UpdateAttributeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateAttribute not implemented") } -func (UnimplementedAttributesServiceServer) DeleteAttribute(context.Context, *DeleteAttributeRequest) (*DeleteAttributeResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteAttribute not implemented") +func (UnimplementedAttributesServiceServer) DeactivateAttribute(context.Context, *DeactivateAttributeRequest) (*DeactivateAttributeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeactivateAttribute not implemented") } func (UnimplementedAttributesServiceServer) GetAttributeValue(context.Context, *GetAttributeValueRequest) (*GetAttributeValueResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetAttributeValue not implemented") @@ -271,18 +609,18 @@ func (UnimplementedAttributesServiceServer) CreateAttributeValue(context.Context func (UnimplementedAttributesServiceServer) UpdateAttributeValue(context.Context, *UpdateAttributeValueRequest) (*UpdateAttributeValueResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateAttributeValue not implemented") } -func (UnimplementedAttributesServiceServer) DeleteAttributeValue(context.Context, *DeleteAttributeValueRequest) (*DeleteAttributeValueResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteAttributeValue not implemented") +func (UnimplementedAttributesServiceServer) DeactivateAttributeValue(context.Context, *DeactivateAttributeValueRequest) (*DeactivateAttributeValueResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeactivateAttributeValue not implemented") } func (UnimplementedAttributesServiceServer) AssignKeyAccessServerToAttribute(context.Context, *AssignKeyAccessServerToAttributeRequest) (*AssignKeyAccessServerToAttributeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method AssignKeyAccessServerToAttribute not implemented") } -func (UnimplementedAttributesServiceServer) AssignKeyAccessServerToValue(context.Context, *AssignKeyAccessServerToValueRequest) (*AssignKeyAccessServerToValueResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AssignKeyAccessServerToValue not implemented") -} func (UnimplementedAttributesServiceServer) RemoveKeyAccessServerFromAttribute(context.Context, *RemoveKeyAccessServerFromAttributeRequest) (*RemoveKeyAccessServerFromAttributeResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveKeyAccessServerFromAttribute not implemented") } +func (UnimplementedAttributesServiceServer) AssignKeyAccessServerToValue(context.Context, *AssignKeyAccessServerToValueRequest) (*AssignKeyAccessServerToValueResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method AssignKeyAccessServerToValue not implemented") +} func (UnimplementedAttributesServiceServer) RemoveKeyAccessServerFromValue(context.Context, *RemoveKeyAccessServerFromValueRequest) (*RemoveKeyAccessServerFromValueResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveKeyAccessServerFromValue not implemented") } @@ -389,20 +727,20 @@ func _AttributesService_UpdateAttribute_Handler(srv interface{}, ctx context.Con return interceptor(ctx, in, info, handler) } -func _AttributesService_DeleteAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteAttributeRequest) +func _AttributesService_DeactivateAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeactivateAttributeRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(AttributesServiceServer).DeleteAttribute(ctx, in) + return srv.(AttributesServiceServer).DeactivateAttribute(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: AttributesService_DeleteAttribute_FullMethodName, + FullMethod: AttributesService_DeactivateAttribute_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AttributesServiceServer).DeleteAttribute(ctx, req.(*DeleteAttributeRequest)) + return srv.(AttributesServiceServer).DeactivateAttribute(ctx, req.(*DeactivateAttributeRequest)) } return interceptor(ctx, in, info, handler) } @@ -461,20 +799,20 @@ func _AttributesService_UpdateAttributeValue_Handler(srv interface{}, ctx contex return interceptor(ctx, in, info, handler) } -func _AttributesService_DeleteAttributeValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteAttributeValueRequest) +func _AttributesService_DeactivateAttributeValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeactivateAttributeValueRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(AttributesServiceServer).DeleteAttributeValue(ctx, in) + return srv.(AttributesServiceServer).DeactivateAttributeValue(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: AttributesService_DeleteAttributeValue_FullMethodName, + FullMethod: AttributesService_DeactivateAttributeValue_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AttributesServiceServer).DeleteAttributeValue(ctx, req.(*DeleteAttributeValueRequest)) + return srv.(AttributesServiceServer).DeactivateAttributeValue(ctx, req.(*DeactivateAttributeValueRequest)) } return interceptor(ctx, in, info, handler) } @@ -497,38 +835,38 @@ func _AttributesService_AssignKeyAccessServerToAttribute_Handler(srv interface{} return interceptor(ctx, in, info, handler) } -func _AttributesService_AssignKeyAccessServerToValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AssignKeyAccessServerToValueRequest) +func _AttributesService_RemoveKeyAccessServerFromAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RemoveKeyAccessServerFromAttributeRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(AttributesServiceServer).AssignKeyAccessServerToValue(ctx, in) + return srv.(AttributesServiceServer).RemoveKeyAccessServerFromAttribute(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: AttributesService_AssignKeyAccessServerToValue_FullMethodName, + FullMethod: AttributesService_RemoveKeyAccessServerFromAttribute_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AttributesServiceServer).AssignKeyAccessServerToValue(ctx, req.(*AssignKeyAccessServerToValueRequest)) + return srv.(AttributesServiceServer).RemoveKeyAccessServerFromAttribute(ctx, req.(*RemoveKeyAccessServerFromAttributeRequest)) } return interceptor(ctx, in, info, handler) } -func _AttributesService_RemoveKeyAccessServerFromAttribute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RemoveKeyAccessServerFromAttributeRequest) +func _AttributesService_AssignKeyAccessServerToValue_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(AssignKeyAccessServerToValueRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(AttributesServiceServer).RemoveKeyAccessServerFromAttribute(ctx, in) + return srv.(AttributesServiceServer).AssignKeyAccessServerToValue(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: AttributesService_RemoveKeyAccessServerFromAttribute_FullMethodName, + FullMethod: AttributesService_AssignKeyAccessServerToValue_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(AttributesServiceServer).RemoveKeyAccessServerFromAttribute(ctx, req.(*RemoveKeyAccessServerFromAttributeRequest)) + return srv.(AttributesServiceServer).AssignKeyAccessServerToValue(ctx, req.(*AssignKeyAccessServerToValueRequest)) } return interceptor(ctx, in, info, handler) } @@ -579,8 +917,8 @@ var AttributesService_ServiceDesc = grpc.ServiceDesc{ Handler: _AttributesService_UpdateAttribute_Handler, }, { - MethodName: "DeleteAttribute", - Handler: _AttributesService_DeleteAttribute_Handler, + MethodName: "DeactivateAttribute", + Handler: _AttributesService_DeactivateAttribute_Handler, }, { MethodName: "GetAttributeValue", @@ -595,21 +933,21 @@ var AttributesService_ServiceDesc = grpc.ServiceDesc{ Handler: _AttributesService_UpdateAttributeValue_Handler, }, { - MethodName: "DeleteAttributeValue", - Handler: _AttributesService_DeleteAttributeValue_Handler, + MethodName: "DeactivateAttributeValue", + Handler: _AttributesService_DeactivateAttributeValue_Handler, }, { MethodName: "AssignKeyAccessServerToAttribute", Handler: _AttributesService_AssignKeyAccessServerToAttribute_Handler, }, - { - MethodName: "AssignKeyAccessServerToValue", - Handler: _AttributesService_AssignKeyAccessServerToValue_Handler, - }, { MethodName: "RemoveKeyAccessServerFromAttribute", Handler: _AttributesService_RemoveKeyAccessServerFromAttribute_Handler, }, + { + MethodName: "AssignKeyAccessServerToValue", + Handler: _AttributesService_AssignKeyAccessServerToValue_Handler, + }, { MethodName: "RemoveKeyAccessServerFromValue", Handler: _AttributesService_RemoveKeyAccessServerFromValue_Handler, diff --git a/sdk/common/common.pb.go b/sdk/common/common.pb.go index 2702e9aee7..5a5bddc47e 100644 --- a/sdk/common/common.pb.go +++ b/sdk/common/common.pb.go @@ -21,6 +21,59 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +// 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 StateTypeEnum int32 + +const ( + StateTypeEnum_STATE_TYPE_ENUM_UNSPECIFIED StateTypeEnum = 0 + StateTypeEnum_STATE_TYPE_ENUM_ACTIVE StateTypeEnum = 1 + StateTypeEnum_STATE_TYPE_ENUM_INACTIVE StateTypeEnum = 2 + StateTypeEnum_STATE_TYPE_ENUM_ANY StateTypeEnum = 3 +) + +// Enum value maps for StateTypeEnum. +var ( + StateTypeEnum_name = map[int32]string{ + 0: "STATE_TYPE_ENUM_UNSPECIFIED", + 1: "STATE_TYPE_ENUM_ACTIVE", + 2: "STATE_TYPE_ENUM_INACTIVE", + 3: "STATE_TYPE_ENUM_ANY", + } + StateTypeEnum_value = map[string]int32{ + "STATE_TYPE_ENUM_UNSPECIFIED": 0, + "STATE_TYPE_ENUM_ACTIVE": 1, + "STATE_TYPE_ENUM_INACTIVE": 2, + "STATE_TYPE_ENUM_ANY": 3, + } +) + +func (x StateTypeEnum) Enum() *StateTypeEnum { + p := new(StateTypeEnum) + *p = x + return p +} + +func (x StateTypeEnum) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (StateTypeEnum) Descriptor() protoreflect.EnumDescriptor { + return file_common_common_proto_enumTypes[0].Descriptor() +} + +func (StateTypeEnum) Type() protoreflect.EnumType { + return &file_common_common_proto_enumTypes[0] +} + +func (x StateTypeEnum) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use StateTypeEnum.Descriptor instead. +func (StateTypeEnum) EnumDescriptor() ([]byte, []int) { + return file_common_common_proto_rawDescGZIP(), []int{0} +} + // Struct to uniquely identify a resource with optional additional metadata type Metadata struct { state protoimpl.MessageState @@ -189,15 +242,24 @@ var file_common_common_proto_rawDesc = []byte{ 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, 0x42, 0x7f, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, - 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, - 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, - 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 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, 0x2a, 0x83, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, + 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x54, 0x41, 0x54, 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, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, + 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, + 0x17, 0x0a, 0x13, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, + 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x03, 0x42, 0x7f, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, + 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 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 ( @@ -212,19 +274,21 @@ 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_msgTypes = make([]protoimpl.MessageInfo, 4) var file_common_common_proto_goTypes = []interface{}{ - (*Metadata)(nil), // 0: common.Metadata - (*MetadataMutable)(nil), // 1: common.MetadataMutable - nil, // 2: common.Metadata.LabelsEntry - nil, // 3: common.MetadataMutable.LabelsEntry - (*timestamppb.Timestamp)(nil), // 4: google.protobuf.Timestamp + (StateTypeEnum)(0), // 0: common.StateTypeEnum + (*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 } var file_common_common_proto_depIdxs = []int32{ - 4, // 0: common.Metadata.created_at:type_name -> google.protobuf.Timestamp - 4, // 1: common.Metadata.updated_at:type_name -> google.protobuf.Timestamp - 2, // 2: common.Metadata.labels:type_name -> common.Metadata.LabelsEntry - 3, // 3: common.MetadataMutable.labels:type_name -> common.MetadataMutable.LabelsEntry + 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 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 @@ -268,13 +332,14 @@ func file_common_common_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_common_proto_rawDesc, - NumEnums: 0, + NumEnums: 1, NumMessages: 4, NumExtensions: 0, NumServices: 0, }, GoTypes: file_common_common_proto_goTypes, DependencyIndexes: file_common_common_proto_depIdxs, + EnumInfos: file_common_common_proto_enumTypes, MessageInfos: file_common_common_proto_msgTypes, }.Build() File_common_common_proto = out.File diff --git a/sdk/namespaces/namespaces.pb.go b/sdk/namespaces/namespaces.pb.go index 4bcd00e590..e17e70afbd 100644 --- a/sdk/namespaces/namespaces.pb.go +++ b/sdk/namespaces/namespaces.pb.go @@ -8,6 +8,7 @@ package namespaces import ( _ "buf.build/gen/go/bufbuild/protovalidate/protocolbuffers/go/buf/validate" + common "github.com/opentdf/opentdf-v2-poc/sdk/common" _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" @@ -30,7 +31,9 @@ type Namespace struct { // generated uuid in database Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` // used to partition Attribute Definitions, support by namespace AuthN and enable federation - Name string `protobuf:"bytes,5,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + // active by default until explicitly deactivated + State common.StateTypeEnum `protobuf:"varint,3,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` } func (x *Namespace) Reset() { @@ -79,6 +82,13 @@ func (x *Namespace) GetName() string { return "" } +func (x *Namespace) GetState() common.StateTypeEnum { + if x != nil { + return x.State + } + return common.StateTypeEnum(0) +} + type GetNamespaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -177,6 +187,9 @@ type ListNamespacesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields + + // ACTIVE by default when not specified + State common.StateTypeEnum `protobuf:"varint,1,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` } func (x *ListNamespacesRequest) Reset() { @@ -211,6 +224,13 @@ func (*ListNamespacesRequest) Descriptor() ([]byte, []int) { return file_namespaces_namespaces_proto_rawDescGZIP(), []int{3} } +func (x *ListNamespacesRequest) GetState() common.StateTypeEnum { + if x != nil { + return x.State + } + return common.StateTypeEnum(0) +} + type ListNamespacesResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -454,7 +474,7 @@ func (x *UpdateNamespaceResponse) GetNamespace() *Namespace { return nil } -type DeleteNamespaceRequest struct { +type DeactivateNamespaceRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -462,8 +482,8 @@ type DeleteNamespaceRequest struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *DeleteNamespaceRequest) Reset() { - *x = DeleteNamespaceRequest{} +func (x *DeactivateNamespaceRequest) Reset() { + *x = DeactivateNamespaceRequest{} if protoimpl.UnsafeEnabled { mi := &file_namespaces_namespaces_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -471,13 +491,13 @@ func (x *DeleteNamespaceRequest) Reset() { } } -func (x *DeleteNamespaceRequest) String() string { +func (x *DeactivateNamespaceRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteNamespaceRequest) ProtoMessage() {} +func (*DeactivateNamespaceRequest) ProtoMessage() {} -func (x *DeleteNamespaceRequest) ProtoReflect() protoreflect.Message { +func (x *DeactivateNamespaceRequest) ProtoReflect() protoreflect.Message { mi := &file_namespaces_namespaces_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -489,26 +509,26 @@ func (x *DeleteNamespaceRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteNamespaceRequest.ProtoReflect.Descriptor instead. -func (*DeleteNamespaceRequest) Descriptor() ([]byte, []int) { +// Deprecated: Use DeactivateNamespaceRequest.ProtoReflect.Descriptor instead. +func (*DeactivateNamespaceRequest) Descriptor() ([]byte, []int) { return file_namespaces_namespaces_proto_rawDescGZIP(), []int{9} } -func (x *DeleteNamespaceRequest) GetId() string { +func (x *DeactivateNamespaceRequest) GetId() string { if x != nil { return x.Id } return "" } -type DeleteNamespaceResponse struct { +type DeactivateNamespaceResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields } -func (x *DeleteNamespaceResponse) Reset() { - *x = DeleteNamespaceResponse{} +func (x *DeactivateNamespaceResponse) Reset() { + *x = DeactivateNamespaceResponse{} if protoimpl.UnsafeEnabled { mi := &file_namespaces_namespaces_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -516,13 +536,13 @@ func (x *DeleteNamespaceResponse) Reset() { } } -func (x *DeleteNamespaceResponse) String() string { +func (x *DeactivateNamespaceResponse) String() string { return protoimpl.X.MessageStringOf(x) } -func (*DeleteNamespaceResponse) ProtoMessage() {} +func (*DeactivateNamespaceResponse) ProtoMessage() {} -func (x *DeleteNamespaceResponse) ProtoReflect() protoreflect.Message { +func (x *DeactivateNamespaceResponse) ProtoReflect() protoreflect.Message { mi := &file_namespaces_namespaces_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -534,8 +554,8 @@ func (x *DeleteNamespaceResponse) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use DeleteNamespaceResponse.ProtoReflect.Descriptor instead. -func (*DeleteNamespaceResponse) Descriptor() ([]byte, []int) { +// Deprecated: Use DeactivateNamespaceResponse.ProtoReflect.Descriptor instead. +func (*DeactivateNamespaceResponse) Descriptor() ([]byte, []int) { return file_namespaces_namespaces_proto_rawDescGZIP(), []int{10} } @@ -548,128 +568,137 @@ var file_namespaces_namespaces_proto_rawDesc = []byte{ 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, 0x22, 0x95, 0x04, 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, 0x05, 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, 0x22, 0x2d, 0x0a, 0x13, - 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, + 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, 0xc2, 0x04, 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, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, + 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 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, 0x4b, 0x0a, + 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x44, 0x0a, 0x15, 0x4c, 0x69, + 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x22, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x6e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, + 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x4b, 0x0a, 0x14, 0x47, - 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x17, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x22, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x15, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x30, 0x0a, 0x16, 0x44, 0x65, 0x6c, 0x65, 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, 0x19, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x32, 0x81, 0x05, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x76, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x77, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 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, 0x8e, 0x05, 0x0a, 0x10, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x76, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x1f, 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, 0x23, 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, 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x7f, 0x0a, 0x0f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 0x2e, 0x6e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 0x2e, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x6c, 0x65, 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, + 0x1a, 0x20, 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, 0x42, 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, - 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, - 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xa2, - 0x02, 0x03, 0x4e, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x73, 0xca, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xe2, - 0x02, 0x16, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x77, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x7f, 0x0a, 0x0f, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, + 0x22, 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, 0x23, 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, 0x8b, 0x01, + 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, 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, 0x27, 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, 0x9b, 0x01, 0x0a, 0x0e, + 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, + 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, + 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x4e, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0xe2, 0x02, 0x16, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -686,38 +715,41 @@ func file_namespaces_namespaces_proto_rawDescGZIP() []byte { var file_namespaces_namespaces_proto_msgTypes = make([]protoimpl.MessageInfo, 11) var file_namespaces_namespaces_proto_goTypes = []interface{}{ - (*Namespace)(nil), // 0: namespaces.Namespace - (*GetNamespaceRequest)(nil), // 1: namespaces.GetNamespaceRequest - (*GetNamespaceResponse)(nil), // 2: namespaces.GetNamespaceResponse - (*ListNamespacesRequest)(nil), // 3: namespaces.ListNamespacesRequest - (*ListNamespacesResponse)(nil), // 4: namespaces.ListNamespacesResponse - (*CreateNamespaceRequest)(nil), // 5: namespaces.CreateNamespaceRequest - (*CreateNamespaceResponse)(nil), // 6: namespaces.CreateNamespaceResponse - (*UpdateNamespaceRequest)(nil), // 7: namespaces.UpdateNamespaceRequest - (*UpdateNamespaceResponse)(nil), // 8: namespaces.UpdateNamespaceResponse - (*DeleteNamespaceRequest)(nil), // 9: namespaces.DeleteNamespaceRequest - (*DeleteNamespaceResponse)(nil), // 10: namespaces.DeleteNamespaceResponse + (*Namespace)(nil), // 0: namespaces.Namespace + (*GetNamespaceRequest)(nil), // 1: namespaces.GetNamespaceRequest + (*GetNamespaceResponse)(nil), // 2: namespaces.GetNamespaceResponse + (*ListNamespacesRequest)(nil), // 3: namespaces.ListNamespacesRequest + (*ListNamespacesResponse)(nil), // 4: namespaces.ListNamespacesResponse + (*CreateNamespaceRequest)(nil), // 5: namespaces.CreateNamespaceRequest + (*CreateNamespaceResponse)(nil), // 6: namespaces.CreateNamespaceResponse + (*UpdateNamespaceRequest)(nil), // 7: namespaces.UpdateNamespaceRequest + (*UpdateNamespaceResponse)(nil), // 8: namespaces.UpdateNamespaceResponse + (*DeactivateNamespaceRequest)(nil), // 9: namespaces.DeactivateNamespaceRequest + (*DeactivateNamespaceResponse)(nil), // 10: namespaces.DeactivateNamespaceResponse + (common.StateTypeEnum)(0), // 11: common.StateTypeEnum } var file_namespaces_namespaces_proto_depIdxs = []int32{ - 0, // 0: namespaces.GetNamespaceResponse.namespace:type_name -> namespaces.Namespace - 0, // 1: namespaces.ListNamespacesResponse.namespaces:type_name -> namespaces.Namespace - 0, // 2: namespaces.CreateNamespaceResponse.namespace:type_name -> namespaces.Namespace - 0, // 3: namespaces.UpdateNamespaceResponse.namespace:type_name -> namespaces.Namespace - 1, // 4: namespaces.NamespaceService.GetNamespace:input_type -> namespaces.GetNamespaceRequest - 3, // 5: namespaces.NamespaceService.ListNamespaces:input_type -> namespaces.ListNamespacesRequest - 5, // 6: namespaces.NamespaceService.CreateNamespace:input_type -> namespaces.CreateNamespaceRequest - 7, // 7: namespaces.NamespaceService.UpdateNamespace:input_type -> namespaces.UpdateNamespaceRequest - 9, // 8: namespaces.NamespaceService.DeleteNamespace:input_type -> namespaces.DeleteNamespaceRequest - 2, // 9: namespaces.NamespaceService.GetNamespace:output_type -> namespaces.GetNamespaceResponse - 4, // 10: namespaces.NamespaceService.ListNamespaces:output_type -> namespaces.ListNamespacesResponse - 6, // 11: namespaces.NamespaceService.CreateNamespace:output_type -> namespaces.CreateNamespaceResponse - 8, // 12: namespaces.NamespaceService.UpdateNamespace:output_type -> namespaces.UpdateNamespaceResponse - 10, // 13: namespaces.NamespaceService.DeleteNamespace:output_type -> namespaces.DeleteNamespaceResponse - 9, // [9:14] is the sub-list for method output_type - 4, // [4:9] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name + 11, // 0: namespaces.Namespace.state:type_name -> common.StateTypeEnum + 0, // 1: namespaces.GetNamespaceResponse.namespace:type_name -> namespaces.Namespace + 11, // 2: namespaces.ListNamespacesRequest.state:type_name -> common.StateTypeEnum + 0, // 3: namespaces.ListNamespacesResponse.namespaces:type_name -> namespaces.Namespace + 0, // 4: namespaces.CreateNamespaceResponse.namespace:type_name -> namespaces.Namespace + 0, // 5: namespaces.UpdateNamespaceResponse.namespace:type_name -> namespaces.Namespace + 1, // 6: namespaces.NamespaceService.GetNamespace:input_type -> namespaces.GetNamespaceRequest + 3, // 7: namespaces.NamespaceService.ListNamespaces:input_type -> namespaces.ListNamespacesRequest + 5, // 8: namespaces.NamespaceService.CreateNamespace:input_type -> namespaces.CreateNamespaceRequest + 7, // 9: namespaces.NamespaceService.UpdateNamespace:input_type -> namespaces.UpdateNamespaceRequest + 9, // 10: namespaces.NamespaceService.DeactivateNamespace:input_type -> namespaces.DeactivateNamespaceRequest + 2, // 11: namespaces.NamespaceService.GetNamespace:output_type -> namespaces.GetNamespaceResponse + 4, // 12: namespaces.NamespaceService.ListNamespaces:output_type -> namespaces.ListNamespacesResponse + 6, // 13: namespaces.NamespaceService.CreateNamespace:output_type -> namespaces.CreateNamespaceResponse + 8, // 14: namespaces.NamespaceService.UpdateNamespace:output_type -> namespaces.UpdateNamespaceResponse + 10, // 15: namespaces.NamespaceService.DeactivateNamespace:output_type -> 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 } func init() { file_namespaces_namespaces_proto_init() } @@ -835,7 +867,7 @@ func file_namespaces_namespaces_proto_init() { } } file_namespaces_namespaces_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteNamespaceRequest); i { + switch v := v.(*DeactivateNamespaceRequest); i { case 0: return &v.state case 1: @@ -847,7 +879,7 @@ func file_namespaces_namespaces_proto_init() { } } file_namespaces_namespaces_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeleteNamespaceResponse); i { + switch v := v.(*DeactivateNamespaceResponse); i { case 0: return &v.state case 1: diff --git a/sdk/namespaces/namespaces.pb.gw.go b/sdk/namespaces/namespaces.pb.gw.go index cf7aea46a6..c9ecad548c 100644 --- a/sdk/namespaces/namespaces.pb.gw.go +++ b/sdk/namespaces/namespaces.pb.gw.go @@ -83,10 +83,21 @@ func local_request_NamespaceService_GetNamespace_0(ctx context.Context, marshale } +var ( + filter_NamespaceService_ListNamespaces_0 = &utilities.DoubleArray{Encoding: map[string]int{}, Base: []int(nil), Check: []int(nil)} +) + func request_NamespaceService_ListNamespaces_0(ctx context.Context, marshaler runtime.Marshaler, client NamespaceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { var protoReq ListNamespacesRequest var metadata runtime.ServerMetadata + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NamespaceService_ListNamespaces_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := client.ListNamespaces(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err @@ -96,6 +107,13 @@ func local_request_NamespaceService_ListNamespaces_0(ctx context.Context, marsha var protoReq ListNamespacesRequest var metadata runtime.ServerMetadata + if err := req.ParseForm(); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + if err := runtime.PopulateQueryParameters(&protoReq, req.Form, filter_NamespaceService_ListNamespaces_0); err != nil { + return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err) + } + msg, err := server.ListNamespaces(ctx, &protoReq) return msg, metadata, err @@ -207,8 +225,8 @@ func local_request_NamespaceService_UpdateNamespace_0(ctx context.Context, marsh } -func request_NamespaceService_DeleteNamespace_0(ctx context.Context, marshaler runtime.Marshaler, client NamespaceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteNamespaceRequest +func request_NamespaceService_DeactivateNamespace_0(ctx context.Context, marshaler runtime.Marshaler, client NamespaceServiceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeactivateNamespaceRequest var metadata runtime.ServerMetadata var ( @@ -228,13 +246,13 @@ func request_NamespaceService_DeleteNamespace_0(ctx context.Context, marshaler r return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := client.DeleteNamespace(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) + msg, err := client.DeactivateNamespace(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD)) return msg, metadata, err } -func local_request_NamespaceService_DeleteNamespace_0(ctx context.Context, marshaler runtime.Marshaler, server NamespaceServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { - var protoReq DeleteNamespaceRequest +func local_request_NamespaceService_DeactivateNamespace_0(ctx context.Context, marshaler runtime.Marshaler, server NamespaceServiceServer, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) { + var protoReq DeactivateNamespaceRequest var metadata runtime.ServerMetadata var ( @@ -254,7 +272,7 @@ func local_request_NamespaceService_DeleteNamespace_0(ctx context.Context, marsh return nil, metadata, status.Errorf(codes.InvalidArgument, "type mismatch, parameter: %s, error: %v", "id", err) } - msg, err := server.DeleteNamespace(ctx, &protoReq) + msg, err := server.DeactivateNamespace(ctx, &protoReq) return msg, metadata, err } @@ -365,7 +383,7 @@ func RegisterNamespaceServiceHandlerServer(ctx context.Context, mux *runtime.Ser }) - mux.Handle("DELETE", pattern_NamespaceService_DeleteNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_NamespaceService_DeactivateNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { ctx, cancel := context.WithCancel(req.Context()) defer cancel() var stream runtime.ServerTransportStream @@ -373,12 +391,12 @@ func RegisterNamespaceServiceHandlerServer(ctx context.Context, mux *runtime.Ser inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req) var err error var annotatedContext context.Context - annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/namespaces.NamespaceService/DeleteNamespace", runtime.WithHTTPPathPattern("/attributes/namespaces/{id}")) + annotatedContext, err = runtime.AnnotateIncomingContext(ctx, mux, req, "/namespaces.NamespaceService/DeactivateNamespace", runtime.WithHTTPPathPattern("/attributes/namespaces/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := local_request_NamespaceService_DeleteNamespace_0(annotatedContext, inboundMarshaler, server, req, pathParams) + resp, md, err := local_request_NamespaceService_DeactivateNamespace_0(annotatedContext, inboundMarshaler, server, req, pathParams) md.HeaderMD, md.TrailerMD = metadata.Join(md.HeaderMD, stream.Header()), metadata.Join(md.TrailerMD, stream.Trailer()) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { @@ -386,7 +404,7 @@ func RegisterNamespaceServiceHandlerServer(ctx context.Context, mux *runtime.Ser return } - forward_NamespaceService_DeleteNamespace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NamespaceService_DeactivateNamespace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -519,25 +537,25 @@ func RegisterNamespaceServiceHandlerClient(ctx context.Context, mux *runtime.Ser }) - mux.Handle("DELETE", pattern_NamespaceService_DeleteNamespace_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) { + mux.Handle("DELETE", pattern_NamespaceService_DeactivateNamespace_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, "/namespaces.NamespaceService/DeleteNamespace", runtime.WithHTTPPathPattern("/attributes/namespaces/{id}")) + annotatedContext, err = runtime.AnnotateContext(ctx, mux, req, "/namespaces.NamespaceService/DeactivateNamespace", runtime.WithHTTPPathPattern("/attributes/namespaces/{id}")) if err != nil { runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err) return } - resp, md, err := request_NamespaceService_DeleteNamespace_0(annotatedContext, inboundMarshaler, client, req, pathParams) + resp, md, err := request_NamespaceService_DeactivateNamespace_0(annotatedContext, inboundMarshaler, client, req, pathParams) annotatedContext = runtime.NewServerMetadataContext(annotatedContext, md) if err != nil { runtime.HTTPError(annotatedContext, mux, outboundMarshaler, w, req, err) return } - forward_NamespaceService_DeleteNamespace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) + forward_NamespaceService_DeactivateNamespace_0(annotatedContext, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...) }) @@ -553,7 +571,7 @@ var ( pattern_NamespaceService_UpdateNamespace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"attributes", "namespaces", "id"}, "")) - pattern_NamespaceService_DeleteNamespace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"attributes", "namespaces", "id"}, "")) + pattern_NamespaceService_DeactivateNamespace_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 1, 0, 4, 1, 5, 2}, []string{"attributes", "namespaces", "id"}, "")) ) var ( @@ -565,5 +583,5 @@ var ( forward_NamespaceService_UpdateNamespace_0 = runtime.ForwardResponseMessage - forward_NamespaceService_DeleteNamespace_0 = runtime.ForwardResponseMessage + forward_NamespaceService_DeactivateNamespace_0 = runtime.ForwardResponseMessage ) diff --git a/sdk/namespaces/namespaces_grpc.pb.go b/sdk/namespaces/namespaces_grpc.pb.go index 3a889f6148..eb03f44bf2 100644 --- a/sdk/namespaces/namespaces_grpc.pb.go +++ b/sdk/namespaces/namespaces_grpc.pb.go @@ -19,22 +19,49 @@ import ( const _ = grpc.SupportPackageIsVersion7 const ( - NamespaceService_GetNamespace_FullMethodName = "/namespaces.NamespaceService/GetNamespace" - NamespaceService_ListNamespaces_FullMethodName = "/namespaces.NamespaceService/ListNamespaces" - NamespaceService_CreateNamespace_FullMethodName = "/namespaces.NamespaceService/CreateNamespace" - NamespaceService_UpdateNamespace_FullMethodName = "/namespaces.NamespaceService/UpdateNamespace" - NamespaceService_DeleteNamespace_FullMethodName = "/namespaces.NamespaceService/DeleteNamespace" + NamespaceService_GetNamespace_FullMethodName = "/namespaces.NamespaceService/GetNamespace" + NamespaceService_ListNamespaces_FullMethodName = "/namespaces.NamespaceService/ListNamespaces" + NamespaceService_CreateNamespace_FullMethodName = "/namespaces.NamespaceService/CreateNamespace" + NamespaceService_UpdateNamespace_FullMethodName = "/namespaces.NamespaceService/UpdateNamespace" + NamespaceService_DeactivateNamespace_FullMethodName = "/namespaces.NamespaceService/DeactivateNamespace" ) // NamespaceServiceClient is the client API for NamespaceService service. // // 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 namespaces.NamespaceService/GetNamespace + // Response: + // { + // "namespace": { + // "id": "namespace-id", + // "name": "namespace-name", + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // } 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 namespaces.NamespaceService/ListNamespaces + // Response: + // { + // "namespaces": [ + // { + // "id": "namespace-id", + // "name": "namespace-name", + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // ] + // } ListNamespaces(ctx context.Context, in *ListNamespacesRequest, opts ...grpc.CallOption) (*ListNamespacesResponse, error) + // Request: + // grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace + // Response: + // { "namespace": { "id": "namespace-id" } } CreateNamespace(ctx context.Context, in *CreateNamespaceRequest, opts ...grpc.CallOption) (*CreateNamespaceResponse, error) UpdateNamespace(ctx context.Context, in *UpdateNamespaceRequest, opts ...grpc.CallOption) (*UpdateNamespaceResponse, error) - DeleteNamespace(ctx context.Context, in *DeleteNamespaceRequest, opts ...grpc.CallOption) (*DeleteNamespaceResponse, error) + DeactivateNamespace(ctx context.Context, in *DeactivateNamespaceRequest, opts ...grpc.CallOption) (*DeactivateNamespaceResponse, error) } type namespaceServiceClient struct { @@ -81,9 +108,9 @@ func (c *namespaceServiceClient) UpdateNamespace(ctx context.Context, in *Update return out, nil } -func (c *namespaceServiceClient) DeleteNamespace(ctx context.Context, in *DeleteNamespaceRequest, opts ...grpc.CallOption) (*DeleteNamespaceResponse, error) { - out := new(DeleteNamespaceResponse) - err := c.cc.Invoke(ctx, NamespaceService_DeleteNamespace_FullMethodName, in, out, opts...) +func (c *namespaceServiceClient) DeactivateNamespace(ctx context.Context, in *DeactivateNamespaceRequest, opts ...grpc.CallOption) (*DeactivateNamespaceResponse, error) { + out := new(DeactivateNamespaceResponse) + err := c.cc.Invoke(ctx, NamespaceService_DeactivateNamespace_FullMethodName, in, out, opts...) if err != nil { return nil, err } @@ -94,11 +121,38 @@ func (c *namespaceServiceClient) DeleteNamespace(ctx context.Context, in *Delete // All implementations must embed UnimplementedNamespaceServiceServer // for forward compatibility type NamespaceServiceServer interface { + // Request: + // grpcurl -plaintext -d '{"id": "namespace-id"}' localhost:9000 namespaces.NamespaceService/GetNamespace + // Response: + // { + // "namespace": { + // "id": "namespace-id", + // "name": "namespace-name", + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // } GetNamespace(context.Context, *GetNamespaceRequest) (*GetNamespaceResponse, error) + // NOTE: ACTIVE state by default, INACTIVE or ANY when specified + // Request: + // grpcurl -plaintext localhost:9000 namespaces.NamespaceService/ListNamespaces + // Response: + // { + // "namespaces": [ + // { + // "id": "namespace-id", + // "name": "namespace-name", + // "state": "STATE_TYPE_ENUM_ACTIVE" + // } + // ] + // } ListNamespaces(context.Context, *ListNamespacesRequest) (*ListNamespacesResponse, error) + // Request: + // grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace + // Response: + // { "namespace": { "id": "namespace-id" } } CreateNamespace(context.Context, *CreateNamespaceRequest) (*CreateNamespaceResponse, error) UpdateNamespace(context.Context, *UpdateNamespaceRequest) (*UpdateNamespaceResponse, error) - DeleteNamespace(context.Context, *DeleteNamespaceRequest) (*DeleteNamespaceResponse, error) + DeactivateNamespace(context.Context, *DeactivateNamespaceRequest) (*DeactivateNamespaceResponse, error) mustEmbedUnimplementedNamespaceServiceServer() } @@ -118,8 +172,8 @@ func (UnimplementedNamespaceServiceServer) CreateNamespace(context.Context, *Cre func (UnimplementedNamespaceServiceServer) UpdateNamespace(context.Context, *UpdateNamespaceRequest) (*UpdateNamespaceResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateNamespace not implemented") } -func (UnimplementedNamespaceServiceServer) DeleteNamespace(context.Context, *DeleteNamespaceRequest) (*DeleteNamespaceResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method DeleteNamespace not implemented") +func (UnimplementedNamespaceServiceServer) DeactivateNamespace(context.Context, *DeactivateNamespaceRequest) (*DeactivateNamespaceResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeactivateNamespace not implemented") } func (UnimplementedNamespaceServiceServer) mustEmbedUnimplementedNamespaceServiceServer() {} @@ -206,20 +260,20 @@ func _NamespaceService_UpdateNamespace_Handler(srv interface{}, ctx context.Cont return interceptor(ctx, in, info, handler) } -func _NamespaceService_DeleteNamespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(DeleteNamespaceRequest) +func _NamespaceService_DeactivateNamespace_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeactivateNamespaceRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(NamespaceServiceServer).DeleteNamespace(ctx, in) + return srv.(NamespaceServiceServer).DeactivateNamespace(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: NamespaceService_DeleteNamespace_FullMethodName, + FullMethod: NamespaceService_DeactivateNamespace_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NamespaceServiceServer).DeleteNamespace(ctx, req.(*DeleteNamespaceRequest)) + return srv.(NamespaceServiceServer).DeactivateNamespace(ctx, req.(*DeactivateNamespaceRequest)) } return interceptor(ctx, in, info, handler) } @@ -248,8 +302,8 @@ var NamespaceService_ServiceDesc = grpc.ServiceDesc{ Handler: _NamespaceService_UpdateNamespace_Handler, }, { - MethodName: "DeleteNamespace", - Handler: _NamespaceService_DeleteNamespace_Handler, + MethodName: "DeactivateNamespace", + Handler: _NamespaceService_DeactivateNamespace_Handler, }, }, Streams: []grpc.StreamDesc{}, From 77a2d4e8a09c3f041d4c25c82d4cc676ad13beb3 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Wed, 14 Feb 2024 16:10:10 -0500 Subject: [PATCH 12/28] add support for state in the db functions that message handlers call --- internal/db/attribute_values.go | 47 ++++++++++++++++++++---- internal/db/attributes.go | 35 +++++++++++++++--- internal/db/db.go | 15 +++++++- internal/db/namespaces.go | 64 ++++++++++++++++++++------------- 4 files changed, 123 insertions(+), 38 deletions(-) diff --git a/internal/db/attribute_values.go b/internal/db/attribute_values.go index 6a99b6ec22..88fa23ac8a 100644 --- a/internal/db/attribute_values.go +++ b/internal/db/attribute_values.go @@ -19,8 +19,10 @@ func attributeValueHydrateItem(row pgx.Row) (*attributes.Value, error) { members []string metadataJson []byte attributeId string + state string ) - if err := row.Scan(&id, &value, &members, &metadataJson, &attributeId); err != nil { + + if err := row.Scan(&id, &value, &members, &metadataJson, &attributeId, &state); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } @@ -37,6 +39,7 @@ func attributeValueHydrateItem(row pgx.Row) (*attributes.Value, error) { Members: members, Metadata: m, AttributeId: attributeId, + State: getProtoStateEnum(state), } return v, nil } @@ -49,7 +52,8 @@ func createAttributeValueSql( attribute_id string, value string, members []string, - metadata []byte) (string, []interface{}, error) { + metadata []byte, +) (string, []interface{}, error) { return newStatementBuilder(). Insert(AttributeValueTable). Columns( @@ -67,6 +71,7 @@ func createAttributeValueSql( Suffix("RETURNING id"). ToSql() } + func (c Client) CreateAttributeValue(ctx context.Context, attributeId string, v *attributes.ValueCreateUpdate) (*attributes.Value, error) { metadataJson, metadata, err := marshalCreateMetadata(v.Metadata) if err != nil { @@ -108,11 +113,13 @@ func getAttributeValueSql(id string) (string, []interface{}, error) { tableField(AttributeValueTable, "members"), tableField(AttributeValueTable, "metadata"), tableField(AttributeValueTable, "attribute_definition_id"), + tableField(AttributeValueTable, "state"), ). From(AttributeValueTable). Where(sq.Eq{tableField(AttributeValueTable, "id"): id}). ToSql() } + func (c Client) GetAttributeValue(ctx context.Context, id string) (*attributes.Value, error) { sql, args, err := getAttributeValueSql(id) row, err := c.queryRow(ctx, sql, args, err) @@ -129,18 +136,25 @@ func (c Client) GetAttributeValue(ctx context.Context, id string) (*attributes.V } func listAttributeValuesSql(attribute_id string, state string) (string, []interface{}, error) { - return newStatementBuilder(). + sb := newStatementBuilder(). Select( tableField(AttributeValueTable, "id"), tableField(AttributeValueTable, "value"), tableField(AttributeValueTable, "members"), tableField(AttributeValueTable, "metadata"), tableField(AttributeValueTable, "attribute_definition_id"), + tableField(AttributeValueTable, "state"), ). - From(AttributeValueTable). - Where(sq.Eq{tableField(AttributeValueTable, "attribute_definition_id"): attribute_id, tableField(AttributeValueTable, "state"): state}). - ToSql() + From(AttributeValueTable) + + where := sq.Eq{} + if state != StateAny { + where[tableField(AttributeValueTable, "state")] = state + } + where[tableField(AttributeValueTable, "attribute_definition_id")] = attribute_id + return sb.Where(where).ToSql() } + func (c Client) ListAttributeValues(ctx context.Context, attribute_id string, state string) ([]*attributes.Value, error) { sql, args, err := listAttributeValuesSql(attribute_id, state) rows, err := c.query(ctx, sql, args, err) @@ -165,7 +179,8 @@ func updateAttributeValueSql( id string, value string, members []string, - metadata []byte) (string, []interface{}, error) { + metadata []byte, +) (string, []interface{}, error) { sb := newStatementBuilder(). Update(AttributeValueTable). Set("metadata", metadata) @@ -181,6 +196,7 @@ func updateAttributeValueSql( Where(sq.Eq{"id": id}). ToSql() } + func (c Client) UpdateAttributeValue(ctx context.Context, id string, v *attributes.ValueCreateUpdate) (*attributes.Value, error) { prev, err := c.GetAttributeValue(ctx, id) if err != nil { @@ -209,12 +225,29 @@ func (c Client) UpdateAttributeValue(ctx context.Context, id string, v *attribut return prev, nil } +func deactivateAttributeValueSql(id string) (string, []interface{}, error) { + return newStatementBuilder(). + Update(AttributeValueTable). + Set("state", StateInactive). + Where(sq.Eq{tableField(AttributeValueTable, "id"): id}). + ToSql() +} + +func (c Client) DeactivateAttributeValue(ctx context.Context, id string) (*attributes.Value, error) { + sql, args, err := deactivateAttributeValueSql(id) + if err := c.exec(ctx, sql, args, err); err != nil { + return nil, err + } + return c.GetAttributeValue(ctx, id) +} + func deleteAttributeValueSql(id string) (string, []interface{}, error) { return newStatementBuilder(). Delete(AttributeValueTable). Where(sq.Eq{tableField(AttributeValueTable, "id"): id}). ToSql() } + func (c Client) DeleteAttributeValue(ctx context.Context, id string) (*attributes.Value, error) { prev, err := c.GetAttributeValue(ctx, id) if err != nil { diff --git a/internal/db/attributes.go b/internal/db/attributes.go index 733b0f57c8..335ba092f8 100644 --- a/internal/db/attributes.go +++ b/internal/db/attributes.go @@ -57,6 +57,7 @@ func attributesSelect() sq.SelectBuilder { tableField(AttributeTable, "rule"), tableField(AttributeTable, "metadata"), tableField(AttributeTable, "namespace_id"), + tableField(AttributeTable, "state"), tableField(NamespacesTable, "name"), "JSON_AGG("+ "JSON_BUILD_OBJECT("+ @@ -98,11 +99,12 @@ func attributesHydrateItem(row pgx.Row) (*attributes.Attribute, error) { rule string metadataJson []byte namespaceId string + state string namespaceName string valuesJson []byte grants []byte ) - err := row.Scan(&id, &name, &rule, &metadataJson, &namespaceId, &namespaceName, &valuesJson, &grants) + err := row.Scan(&id, &name, &rule, &metadataJson, &namespaceId, &state, &namespaceName, &valuesJson, &grants) if err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } @@ -133,6 +135,7 @@ func attributesHydrateItem(row pgx.Row) (*attributes.Attribute, error) { Id: id, Name: name, Rule: attributesRuleTypeEnumTransformOut(rule), + State: getProtoStateEnum(state), Metadata: m, Values: v, Namespace: &namespaces.Namespace{Id: namespaceId, Name: namespaceName}, @@ -152,11 +155,12 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) { rule string metadataJson []byte namespaceId string + state string namespaceName string valuesJson []byte grants []byte ) - err := rows.Scan(&id, &name, &rule, &metadataJson, &namespaceId, &namespaceName, &valuesJson, &grants) + err := rows.Scan(&id, &name, &rule, &metadataJson, &namespaceId, &state, &namespaceName, &valuesJson, &grants) if err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } @@ -169,6 +173,7 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) { Id: namespaceId, Name: namespaceName, }, + State: getProtoStateEnum(state), } if metadataJson != nil { @@ -205,9 +210,11 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) { /// func listAllAttributesSql(state string) (string, []interface{}, error) { - return attributesSelect(). - Where(sq.Eq{tableField(AttributeTable, "state"): state}). - From(AttributeTable). + q := attributesSelect() + if state != StateAny { + q = q.Where(sq.Eq{tableField(AttributeTable, "state"): state}) + } + return q.From(AttributeTable). ToSql() } @@ -351,6 +358,24 @@ func (c Client) UpdateAttribute(ctx context.Context, id string, attr *attributes return a, nil } +func deactivateAttributeSql(id string) (string, []interface{}, error) { + return newStatementBuilder(). + Update(AttributeTable). + Set("state", StateInactive). + Where(sq.Eq{tableField(AttributeTable, "id"): id}). + Suffix("RETURNING \"id\""). + ToSql() +} + +func (c Client) DeactivateAttribute(ctx context.Context, id string) (*attributes.Attribute, error) { + sql, args, err := deactivateAttributeSql(id) + + if err := c.exec(ctx, sql, args, err); err != nil { + return nil, err + } + return c.GetAttribute(ctx, id) +} + func deleteAttributeSql(id string) (string, []interface{}, error) { return newStatementBuilder(). Delete(AttributeTable). diff --git a/internal/db/db.go b/internal/db/db.go index 1c2ed9bada..245ce82d87 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -10,6 +10,7 @@ import ( "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgconn" "github.com/jackc/pgx/v5/pgxpool" + "github.com/opentdf/opentdf-v2-poc/sdk/common" ) var ( @@ -65,9 +66,10 @@ func (t Table) Field(field string) string { return t.Name() + "." + field } -var ( +const ( StateInactive = "INACTIVE" StateActive = "ACTIVE" + StateAny = "ANY" StateUnspecified = "UNSPECIFIED" ) @@ -205,3 +207,14 @@ func tableName(table string) string { func tableField(table string, field string) string { return table + "." + field } + +func getProtoStateEnum(state string) common.StateTypeEnum { + switch state { + case StateInactive: + return common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE + case StateActive: + return common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE + default: + return common.StateTypeEnum_STATE_TYPE_ENUM_UNSPECIFIED + } +} diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go index fe8d9fb1ea..e4c6b91785 100644 --- a/internal/db/namespaces.go +++ b/internal/db/namespaces.go @@ -10,7 +10,7 @@ import ( func getNamespaceSql(id string) (string, []interface{}, error) { t := Tables.Namespaces return newStatementBuilder(). - Select(t.Field("id"), t.Field("name")). + Select(t.Field("id"), t.Field("name"), t.Field("state")). From(t.Name()). Where(sq.Eq{t.Field("id"): id}). ToSql() @@ -27,21 +27,26 @@ func (c Client) GetNamespace(ctx context.Context, id string) (*namespaces.Namesp return nil, err } - namespace := &namespaces.Namespace{Id: "", Name: ""} - if err := row.Scan(&namespace.Id, &namespace.Name); err != nil { + var namespace namespaces.Namespace + state := "" + if err := row.Scan(&namespace.Id, &namespace.Name, &state); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } - return namespace, nil + namespace.State = getProtoStateEnum(state) + return &namespace, nil } func listNamespacesSql(state string) (string, []interface{}, error) { t := Tables.Namespaces - return newStatementBuilder(). - Select(t.Field("id"), t.Field("name")). - From(t.Name()). - Where(sq.Eq{t.Field("state"): state}). - ToSql() + sb := newStatementBuilder(). + Select(t.Field("id"), t.Field("name"), t.Field("state")). + From(t.Name()) + + if state != StateAny { + sb = sb.Where(sq.Eq{t.Field("state"): state}) + } + return sb.ToSql() } func (c Client) ListNamespaces(ctx context.Context, state string) ([]*namespaces.Namespace, error) { @@ -59,9 +64,11 @@ func (c Client) ListNamespaces(ctx context.Context, state string) ([]*namespaces for rows.Next() { var namespace namespaces.Namespace - if err := rows.Scan(&namespace.Id, &namespace.Name); err != nil { + state := "" + if err := rows.Scan(&namespace.Id, &namespace.Name, &state); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } + namespace.State = getProtoStateEnum(state) namespacesList = append(namespacesList, &namespace) } @@ -109,35 +116,42 @@ func (c Client) UpdateNamespace(ctx context.Context, id string, name string) (*n return c.GetNamespace(ctx, id) } -func deleteNamespaceSql(id string, isSoftDelete bool) (string, []interface{}, error) { +func deactivateNamespaceSql(id string) (string, []interface{}, error) { t := Tables.Namespaces - sb := newStatementBuilder() - - // TODO: soft-delete should cascade down - if isSoftDelete { - return sb. - Update(t.Name()). - Set("state", StateInactive). - Where(sq.Eq{t.Field("id"): id}). - Suffix("RETURNING \"id\""). - ToSql() + return newStatementBuilder(). + Update(t.Name()). + Set("state", StateInactive). + Where(sq.Eq{t.Field("id"): id}). + Suffix("RETURNING \"id\""). + ToSql() +} + +func (c Client) DeactivateNamespace(ctx context.Context, id string) (*namespaces.Namespace, error) { + sql, args, err := deactivateNamespaceSql(id) + + if e := c.exec(ctx, sql, args, err); e != nil { + return nil, e } + return c.GetNamespace(ctx, id) +} - // TODO: handle delete cascade, dangerous deletion via special rpc, or "soft-delete" status change - return sb. +func deleteNamespaceSql(id string) (string, []interface{}, error) { + t := Tables.Namespaces + // TODO: handle delete cascade, dangerous deletion via special rpc + return newStatementBuilder(). Delete(t.Name()). Where(sq.Eq{t.Field("id"): id}). Suffix("RETURNING \"id\""). ToSql() } -func (c Client) DeleteNamespace(ctx context.Context, id string, isSoftDelete bool) (*namespaces.Namespace, error) { +func (c Client) DeleteNamespace(ctx context.Context, id string) (*namespaces.Namespace, error) { // get a namespace before deleting ns, err := c.GetNamespace(ctx, id) if err != nil { return nil, err } - sql, args, err := deleteNamespaceSql(id, isSoftDelete) + sql, args, err := deleteNamespaceSql(id) if e := c.exec(ctx, sql, args, err); e != nil { return nil, WrapIfKnownInvalidQueryErr(e) From c9f3a7694bfc9d8ad998b01ed4a0c4ffed032cb2 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Wed, 14 Feb 2024 16:43:44 -0500 Subject: [PATCH 13/28] add debug logs, clean up naming from soft-delete to deactivation, make sure to log db-interpreted state and not the proto enum value which can be different than the db (i.e. 'any' which queries both 'active' and 'inactive') --- integration/attribute_values_test.go | 176 ++++++++++++++- integration/attributes_test.go | 178 +++++++++++++++ integration/namespaces_test.go | 211 ++++++++++++++---- .../20240212000000_add_active_state_enums.sql | 2 +- services/attributes/attributes.go | 29 ++- services/helpers.go | 22 ++ services/namespaces/namespaces.go | 14 +- 7 files changed, 564 insertions(+), 68 deletions(-) create mode 100644 services/helpers.go diff --git a/integration/attribute_values_test.go b/integration/attribute_values_test.go index 7e606d5c39..a1f3298f9c 100644 --- a/integration/attribute_values_test.go +++ b/integration/attribute_values_test.go @@ -15,7 +15,10 @@ import ( // TODO: test failure of create/update with invalid member id's [https://github.com/opentdf/opentdf-v2-poc/issues/105] -var nonExistentAttributeValueUuid = "78909865-8888-9999-9999-000000000000" +var ( + nonExistentAttributeValueUuid = "78909865-8888-9999-9999-000000000000" + stillActiveAttributeId string +) type AttributeValuesSuite struct { suite.Suite @@ -33,6 +36,7 @@ func (s *AttributeValuesSuite) SetupSuite() { s.db = NewDBInterface(s.schema) s.f = NewFixture(s.db) s.f.Provision() + stillActiveNsId, stillActiveAttributeId, deactivatedAttrValueId = setupDeactivateAttributeValue(s) } func (s *AttributeValuesSuite) TearDownSuite() { @@ -235,6 +239,176 @@ func (s *AttributeValuesSuite) Test_DeleteAttribute_NotFound() { assert.ErrorIs(s.T(), err, db.ErrNotFound) } +func (s *AttributeValuesSuite) Test_DeactivateAttributeValue_WithInvalidIdFails() { + deactivated, err := s.db.Client.DeactivateAttributeValue(s.ctx, nonExistentAttributeValueUuid) + assert.NotNil(s.T(), err) + assert.Nil(s.T(), deactivated) + assert.ErrorIs(s.T(), err, db.ErrNotFound) +} + +// 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.Client.CreateNamespace(s.ctx, "cascading-deactivate-attribute-value.com") + assert.Nil(s.T(), err) + assert.NotEqual(s.T(), "", nsId) + + // add an attribute under that namespaces + attr := &attributes.AttributeCreateUpdate{ + Name: "test__cascading-deactivate-attr-value", + NamespaceId: nsId, + Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, + } + createdAttr, err := s.db.Client.CreateAttribute(s.ctx, attr) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), createdAttr) + + // add a value under that attribute + val := &attributes.ValueCreateUpdate{ + Value: "test__cascading-deactivate-attr-value-value", + } + createdVal, err := s.db.Client.CreateAttributeValue(s.ctx, createdAttr.Id, val) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), createdVal) + + // deactivate the attribute + deactivatedAttr, err := s.db.Client.DeactivateAttributeValue(s.ctx, createdVal.Id) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), deactivatedAttr) + + return nsId, createdAttr.Id, createdVal.Id +} + +// Verify behavior that DB does not bubble up deactivation of value to attributes and namespaces +func (s *AttributeValuesSuite) Test_DeactivateAttribute_Cascades_List() { + type test struct { + name string + testFunc func(state string) bool + state string + isFound bool + } + + getNamespacesList := func(state string) bool { + listedNamespaces, err := s.db.Client.ListNamespaces(s.ctx, state) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedNamespaces) + for _, ns := range listedNamespaces { + if stillActiveNsId == ns.Id { + return true + } + } + return false + } + + getAttributesList := func(state string) bool { + listedAttrs, err := s.db.Client.ListAllAttributes(s.ctx, state) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedAttrs) + for _, a := range listedAttrs { + if stillActiveAttributeId == a.Id { + return true + } + } + return false + } + + getValuesList := func(state string) bool { + listedVals, err := s.db.Client.ListAttributeValues(s.ctx, stillActiveAttributeId, state) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedVals) + for _, v := range listedVals { + if deactivatedAttrValueId == v.Id { + return true + } + } + return false + } + + tests := []test{ + { + name: "namespace is NOT found in LIST of INACTIVE", + testFunc: getNamespacesList, + state: db.StateInactive, + isFound: false, + }, + { + name: "namespace is found when filtering for ACTIVE state", + testFunc: getNamespacesList, + state: db.StateActive, + isFound: true, + }, + { + name: "namespace is found when filtering for ANY state", + testFunc: getNamespacesList, + state: db.StateAny, + isFound: true, + }, + { + name: "attribute is NOT found when filtering for INACTIVE state", + testFunc: getAttributesList, + state: db.StateInactive, + isFound: false, + }, + { + name: "attribute is found when filtering for ANY state", + testFunc: getAttributesList, + state: db.StateAny, + isFound: true, + }, + { + name: "attribute is found when filtering for ACTIVE state", + testFunc: getAttributesList, + state: db.StateActive, + isFound: true, + }, + { + name: "value is NOT found in LIST of ACTIVE", + testFunc: getValuesList, + state: db.StateActive, + isFound: false, + }, + { + name: "value is found when filtering for INACTIVE state", + testFunc: getValuesList, + state: db.StateInactive, + isFound: true, + }, + { + name: "value is found when filtering for ANY state", + testFunc: getValuesList, + state: db.StateAny, + isFound: true, + }, + } + + for _, tableTest := range tests { + s.T().Run(tableTest.name, func(t *testing.T) { + found := tableTest.testFunc(tableTest.state) + assert.Equal(t, tableTest.isFound, found) + }) + } +} + +func (s *AttributeValuesSuite) Test_DeactivateAttributeValue_Get() { + // ensure the namespace has state active still (not bubbled up) + gotNs, err := s.db.Client.GetNamespace(s.ctx, stillActiveNsId) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotNs) + assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE, gotNs.State) + + // ensure the attribute still has state actiave (not bubbled up) + gotAttr, err := s.db.Client.GetAttribute(s.ctx, stillActiveAttributeId) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotAttr) + assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE, gotAttr.State) + + // ensure the value has state inactive + gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotVal) + assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotVal.State) +} + func (s *AttributeValuesSuite) Test_AssignKeyAccessServerToValue_Returns_Error_When_Value_Not_Found() { v := &attributes.ValueKeyAccessServer{ ValueId: nonExistentAttributeValueUuid, diff --git a/integration/attributes_test.go b/integration/attributes_test.go index 51db9b717d..9c8580608a 100644 --- a/integration/attributes_test.go +++ b/integration/attributes_test.go @@ -25,6 +25,7 @@ var ( fixtureNamespaceId string nonExistentAttrId = "00000000-6789-4321-9876-123456765436" fixtureKeyAccessServerId string + stillActiveNsId string ) func (s *AttributesSuite) SetupSuite() { @@ -36,6 +37,7 @@ func (s *AttributesSuite) SetupSuite() { s.db = NewDBInterface(s.schema) s.f = NewFixture(s.db) s.f.Provision() + stillActiveNsId, deactivatedAttrId, deactivatedAttrValueId = setupCascadeDeactivateAttribute(s) } func (s *AttributesSuite) TearDownSuite() { @@ -310,6 +312,182 @@ func (s *AttributesSuite) Test_DeleteAttribute() { assert.Nil(s.T(), resp) } +func (s *AttributesSuite) Test_DeleteAttribute_WithInvalidIdFails() { + deleted, err := s.db.Client.DeleteAttribute(s.ctx, nonExistentAttrId) + assert.NotNil(s.T(), err) + assert.Nil(s.T(), deleted) + assert.ErrorIs(s.T(), err, db.ErrNotFound) +} + +func (s *AttributesSuite) Test_DeactivateAttribute_WithInvalidIdFails() { + deactivated, err := s.db.Client.DeactivateAttribute(s.ctx, nonExistentAttrId) + assert.NotNil(s.T(), err) + assert.Nil(s.T(), deactivated) + assert.ErrorIs(s.T(), err, db.ErrNotFound) +} + +// 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.Client.CreateNamespace(s.ctx, "cascading-deactivate-attribute.com") + assert.Nil(s.T(), err) + assert.NotEqual(s.T(), "", nsId) + + // add an attribute under that namespaces + attr := &attributes.AttributeCreateUpdate{ + Name: "test__cascading-deactivate-attr", + NamespaceId: nsId, + Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, + } + createdAttr, err := s.db.Client.CreateAttribute(s.ctx, attr) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), createdAttr) + + // add a value under that attribute + val := &attributes.ValueCreateUpdate{ + Value: "test__cascading-deactivate-attr-value", + } + createdVal, err := s.db.Client.CreateAttributeValue(s.ctx, createdAttr.Id, val) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), createdVal) + + // deactivate the attribute + deactivatedAttr, err := s.db.Client.DeactivateAttribute(s.ctx, createdAttr.Id) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), deactivatedAttr) + + return nsId, createdAttr.Id, createdVal.Id +} + +func (s *AttributesSuite) Test_DeactivateAttribute_Cascades_List() { + type test struct { + name string + testFunc func(state string) bool + state string + isFound bool + } + + getNamespacesList := func(state string) bool { + listedNamespaces, err := s.db.Client.ListNamespaces(s.ctx, state) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedNamespaces) + for _, ns := range listedNamespaces { + if stillActiveNsId == ns.Id { + return true + } + } + return false + } + + getAttributesList := func(state string) bool { + listedAttrs, err := s.db.Client.ListAllAttributes(s.ctx, state) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedAttrs) + for _, a := range listedAttrs { + if deactivatedAttrId == a.Id { + return true + } + } + return false + } + + getValuesList := func(state string) bool { + listedVals, err := s.db.Client.ListAttributeValues(s.ctx, deactivatedAttrId, state) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedVals) + for _, v := range listedVals { + if deactivatedAttrValueId == v.Id { + return true + } + } + return false + } + + tests := []test{ + { + name: "namespace is NOT found in LIST of INACTIVE", + testFunc: getNamespacesList, + state: db.StateInactive, + isFound: false, + }, + { + name: "namespace is found when filtering for ACTIVE state", + testFunc: getNamespacesList, + state: db.StateActive, + isFound: true, + }, + { + name: "namespace is found when filtering for ANY state", + testFunc: getNamespacesList, + state: db.StateAny, + isFound: true, + }, + { + name: "attribute is found when filtering for INACTIVE state", + testFunc: getAttributesList, + state: db.StateInactive, + isFound: true, + }, + { + name: "attribute is found when filtering for ANY state", + testFunc: getAttributesList, + state: db.StateAny, + isFound: true, + }, + { + name: "attribute is NOT found when filtering for ACTIVE state", + testFunc: getAttributesList, + state: db.StateActive, + isFound: false, + }, + { + name: "value is NOT found in LIST of ACTIVE", + testFunc: getValuesList, + state: db.StateActive, + isFound: false, + }, + { + name: "value is found when filtering for INACTIVE state", + testFunc: getValuesList, + state: db.StateInactive, + isFound: true, + }, + { + name: "value is found when filtering for ANY state", + testFunc: getValuesList, + state: db.StateAny, + isFound: true, + }, + } + + for _, tableTest := range tests { + s.T().Run(tableTest.name, func(t *testing.T) { + found := tableTest.testFunc(tableTest.state) + assert.Equal(t, tableTest.isFound, found) + }) + } +} + +func (s *AttributesSuite) Test_DeactivateAttribute_Cascades_ToValues_Get() { + // ensure the namespace has state active still (not bubbled up) + gotNs, err := s.db.Client.GetNamespace(s.ctx, stillActiveNsId) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotNs) + assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE, gotNs.State) + + // ensure the attribute has state inactive + gotAttr, err := s.db.Client.GetAttribute(s.ctx, deactivatedAttrId) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotAttr) + assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotAttr.State) + + // ensure the value has state inactive + gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotVal) + assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotVal.State) +} + func (s *AttributesSuite) Test_AssignKeyAccessServerToAttribute_Returns_Error_When_Attribute_Not_Found() { aKas := &attributes.AttributeKeyAccessServer{ AttributeId: nonExistentAttrId, diff --git a/integration/namespaces_test.go b/integration/namespaces_test.go index 68d58f0d9d..18be55561e 100644 --- a/integration/namespaces_test.go +++ b/integration/namespaces_test.go @@ -9,6 +9,7 @@ import ( "github.com/opentdf/opentdf-v2-poc/internal/db" "github.com/opentdf/opentdf-v2-poc/sdk/attributes" + "github.com/opentdf/opentdf-v2-poc/sdk/common" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" ) @@ -23,6 +24,12 @@ type NamespacesSuite struct { const nonExistentNamespaceId = "88888888-2222-3333-4444-999999999999" +var ( + deactivatedNsId = "" + deactivatedAttrId = "" + deactivatedAttrValueId = "" +) + func (s *NamespacesSuite) SetupSuite() { slog.Info("setting up db.Namespaces test suite") s.ctx = context.Background() @@ -30,6 +37,7 @@ func (s *NamespacesSuite) SetupSuite() { s.db = NewDBInterface(s.schema) s.f = NewFixture(s.db) s.f.Provision() + deactivatedNsId, deactivatedAttrId, deactivatedAttrValueId = setupCascadeDeactivateNamespace(s) } func (s *NamespacesSuite) TearDownSuite() { @@ -149,13 +157,12 @@ func (s *NamespacesSuite) Test_UpdateNamespace_DoesNotExist_ShouldFail() { assert.Nil(s.T(), ns) } -func (s *NamespacesSuite) Test_DeleteNamespace_HardDelete() { +func (s *NamespacesSuite) Test_DeleteNamespace() { testData := getActiveNamespaceFixtures() - isSoftDelete := false // Deletion should fail when the namespace is referenced as FK in attribute(s) for _, ns := range testData { - deleted, err := s.db.Client.DeleteNamespace(s.ctx, ns.Id, isSoftDelete) + deleted, err := s.db.Client.DeleteNamespace(s.ctx, ns.Id) assert.NotNil(s.T(), err) assert.ErrorIs(s.T(), err, db.ErrForeignKeyViolation) assert.Nil(s.T(), deleted) @@ -166,7 +173,7 @@ func (s *NamespacesSuite) Test_DeleteNamespace_HardDelete() { assert.Nil(s.T(), err) assert.NotEqual(s.T(), "", newNamespaceId) - deleted, err := s.db.Client.DeleteNamespace(s.ctx, newNamespaceId, isSoftDelete) + deleted, err := s.db.Client.DeleteNamespace(s.ctx, newNamespaceId) assert.Nil(s.T(), err) assert.NotNil(s.T(), deleted) @@ -184,18 +191,16 @@ func (s *NamespacesSuite) Test_DeleteNamespace_HardDelete() { assert.NotNil(s.T(), err) } -func (s *NamespacesSuite) Test_DeleteNamespace_SoftDelete() { - isSoftDelete := true - - id, err := s.db.Client.CreateNamespace(s.ctx, "testing-soft-delete-namespace.com") +func (s *NamespacesSuite) Test_DeactivateNamespace() { + id, err := s.db.Client.CreateNamespace(s.ctx, "testing-sdeactivate-namespace.com") assert.Nil(s.T(), err) assert.NotEqual(s.T(), "", id) - deleted, err := s.db.Client.DeleteNamespace(s.ctx, id, isSoftDelete) + inactive, err := s.db.Client.DeactivateNamespace(s.ctx, id) assert.Nil(s.T(), err) - assert.NotNil(s.T(), deleted) + assert.NotNil(s.T(), inactive) - // Deleted namespace should not be found on List + // Deactivated namespace should not be found on List gotNamespaces, err := s.db.Client.ListNamespaces(s.ctx, db.StateActive) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespaces) @@ -203,23 +208,24 @@ func (s *NamespacesSuite) Test_DeleteNamespace_SoftDelete() { assert.NotEqual(s.T(), id, ns.Id) } - // Deleted namespace should still be found on Get + // inactive namespace should still be found on Get gotNamespace, err := s.db.Client.GetNamespace(s.ctx, id) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespace) assert.Equal(s.T(), id, gotNamespace.Id) + assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotNamespace.State) } -// TODO: update these tests to use GETs (not LISTs) and assert on the state once provided in protos/struct types -func (s *NamespacesSuite) Test_SoftDeleteNamespace_Cascades_ToAttributesAndValues() { +// 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.Client.CreateNamespace(s.ctx, "cascading-soft-delete-namespace.com") + nsId, err := s.db.Client.CreateNamespace(s.ctx, "cascading-deactivate-namespace.com") assert.Nil(s.T(), err) assert.NotEqual(s.T(), "", nsId) // add an attribute under that namespaces attr := &attributes.AttributeCreateUpdate{ - Name: "test__cascading-soft-delete-attribute", + Name: "test__cascading-deactivate-attribute", NamespaceId: nsId, Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, } @@ -229,61 +235,168 @@ func (s *NamespacesSuite) Test_SoftDeleteNamespace_Cascades_ToAttributesAndValue // add a value under that attribute val := &attributes.ValueCreateUpdate{ - Value: "test__cascading-soft-delete-value", + Value: "test__cascading-deactivate-value", } createdVal, err := s.db.Client.CreateAttributeValue(s.ctx, createdAttr.Id, val) assert.Nil(s.T(), err) assert.NotNil(s.T(), createdVal) - // soft delete the namespace - deletedNs, err := s.db.Client.DeleteNamespace(s.ctx, nsId, true) + // deactivate the namespace + deletedNs, err := s.db.Client.DeactivateNamespace(s.ctx, nsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), deletedNs) - // ensure the namespace is not found in LIST - listedNamespaces, err := s.db.Client.ListNamespaces(s.ctx, db.StateActive) - assert.Nil(s.T(), err) - assert.NotNil(s.T(), listedNamespaces) - for _, ns := range listedNamespaces { - assert.NotEqual(s.T(), nsId, ns.Id) + return nsId, createdAttr.Id, createdVal.Id +} + +func (s *NamespacesSuite) Test_DeactivateNamespace_Cascades_List() { + type test struct { + name string + testFunc func(state string) bool + state string + isFound bool } - // ensure the attribute is not found in LIST - listedAttrs, err := s.db.Client.ListAllAttributes(s.ctx, db.StateActive) - assert.Nil(s.T(), err) - assert.NotNil(s.T(), listedAttrs) - for _, a := range listedAttrs { - assert.NotEqual(s.T(), createdAttr.Id, a.Id) - assert.NotEqual(s.T(), nsId, a.Namespace.Id) + getNamespacesList := func(state string) bool { + listedNamespaces, err := s.db.Client.ListNamespaces(s.ctx, state) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedNamespaces) + for _, ns := range listedNamespaces { + if deactivatedNsId == ns.Id { + return true + } + } + return false } - // ensure the value is not found in LIST - listedVals, err := s.db.Client.ListAttributeValues(s.ctx, createdAttr.Id, db.StateActive) - assert.Nil(s.T(), err) - assert.NotNil(s.T(), listedVals) - assert.Equal(s.T(), 0, len(listedVals)) + getAttributesList := func(state string) bool { + listedAttrs, err := s.db.Client.ListAllAttributes(s.ctx, state) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedAttrs) + for _, a := range listedAttrs { + if deactivatedAttrId == a.Id { + return true + } + } + return false + } - // ensure the namespaces is still found when filtering for inactive state - listedNamespaces, err = s.db.Client.ListNamespaces(s.ctx, db.StateInactive) - assert.Nil(s.T(), err) - assert.NotNil(s.T(), listedNamespaces) - found := false - for _, ns := range listedNamespaces { - if nsId == ns.Id { - found = true - break + getValuesList := func(state string) bool { + listedVals, err := s.db.Client.ListAttributeValues(s.ctx, deactivatedAttrId, state) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), listedVals) + for _, v := range listedVals { + if deactivatedAttrValueId == v.Id { + return true + } } + return false + } + + tests := []test{ + { + name: "namespace is NOT found in LIST of ACTIVE", + testFunc: getNamespacesList, + state: db.StateActive, + isFound: false, + }, + { + name: "namespace is found when filtering for INACTIVE state", + testFunc: getNamespacesList, + state: db.StateInactive, + isFound: true, + }, + { + name: "namespace is found when filtering for ANY state", + testFunc: getNamespacesList, + state: db.StateAny, + isFound: true, + }, + { + name: "attribute is found when filtering for INACTIVE state", + testFunc: getAttributesList, + state: db.StateInactive, + isFound: true, + }, + { + name: "attribute is found when filtering for ANY state", + testFunc: getAttributesList, + state: db.StateAny, + isFound: true, + }, + { + name: "attribute is NOT found when filtering for ACTIVE state", + testFunc: getAttributesList, + state: db.StateActive, + isFound: false, + }, + { + name: "value is NOT found in LIST of ACTIVE", + testFunc: getValuesList, + state: db.StateActive, + isFound: false, + }, + { + name: "value is found when filtering for INACTIVE state", + testFunc: getValuesList, + state: db.StateInactive, + isFound: true, + }, + { + name: "value is found when filtering for ANY state", + testFunc: getValuesList, + state: db.StateAny, + isFound: true, + }, } - assert.True(s.T(), found) + + for _, tableTest := range tests { + s.T().Run(tableTest.name, func(t *testing.T) { + found := tableTest.testFunc(tableTest.state) + assert.Equal(t, tableTest.isFound, found) + }) + } +} + +func (s *NamespacesSuite) Test_DeactivateNamespace_Cascades_ToAttributesAndValues_Get() { + // ensure the namespace has state inactive + gotNs, err := s.db.Client.GetNamespace(s.ctx, deactivatedNsId) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotNs) + assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotNs.State) + + // ensure the attribute has state inactive + gotAttr, err := s.db.Client.GetAttribute(s.ctx, deactivatedAttrId) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotAttr) + assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotAttr.State) + + // ensure the value has state inactive + gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotVal) + assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotVal.State) } func (s *NamespacesSuite) Test_DeleteNamespace_DoesNotExist_ShouldFail() { - ns, err := s.db.Client.DeleteNamespace(s.ctx, nonExistentNamespaceId, true) + ns, err := s.db.Client.DeleteNamespace(s.ctx, nonExistentNamespaceId) + assert.NotNil(s.T(), err) + assert.ErrorIs(s.T(), err, db.ErrNotFound) + assert.Nil(s.T(), ns) + + ns, err = s.db.Client.DeleteNamespace(s.ctx, nonExistentNamespaceId) + assert.NotNil(s.T(), err) + assert.ErrorIs(s.T(), err, db.ErrNotFound) + assert.Nil(s.T(), ns) +} + +func (s *NamespacesSuite) Test_DeactivateNamespace_DoesNotExist_ShouldFail() { + ns, err := s.db.Client.DeactivateNamespace(s.ctx, nonExistentNamespaceId) assert.NotNil(s.T(), err) assert.ErrorIs(s.T(), err, db.ErrNotFound) assert.Nil(s.T(), ns) - ns, err = s.db.Client.DeleteNamespace(s.ctx, nonExistentNamespaceId, false) + ns, err = s.db.Client.DeactivateNamespace(s.ctx, nonExistentNamespaceId) assert.NotNil(s.T(), err) assert.ErrorIs(s.T(), err, db.ErrNotFound) assert.Nil(s.T(), ns) diff --git a/migrations/20240212000000_add_active_state_enums.sql b/migrations/20240212000000_add_active_state_enums.sql index 4109817f71..29ef8331b9 100644 --- a/migrations/20240212000000_add_active_state_enums.sql +++ b/migrations/20240212000000_add_active_state_enums.sql @@ -11,7 +11,7 @@ CREATE INDEX IF NOT EXISTS idx_attribute_namespaces_state ON attribute_namespace CREATE INDEX IF NOT EXISTS idx_attribute_definitions_state ON attribute_definitions(state); CREATE INDEX IF NOT EXISTS idx_attribute_values_state ON attribute_values(state); ---- Triggers soft-delete cascade namespaces -> attr definitions -> attr values +--- Triggers deactivation cascade namespaces -> attr definitions -> attr values --- Expected trigger args cannot be explicitly defined, but are: [tableName text, foreignKeyColumnName text] CREATE FUNCTION cascade_inactive_state() RETURNS TRIGGER AS $$ diff --git a/services/attributes/attributes.go b/services/attributes/attributes.go index 67ce84f601..41b2d2297f 100644 --- a/services/attributes/attributes.go +++ b/services/attributes/attributes.go @@ -32,6 +32,11 @@ func NewAttributesServer(dbClient *db.Client, g *grpc.Server, s *runtime.ServeMu func (s AttributesService) CreateAttribute(ctx context.Context, req *attributes.CreateAttributeRequest, ) (*attributes.CreateAttributeResponse, error) { + // + // TODO: make sure you can't create in a deactivated namespace!! + // + // + // slog.Debug("creating new attribute definition", slog.String("name", req.Attribute.Name)) rsp := &attributes.CreateAttributeResponse{} @@ -48,9 +53,11 @@ func (s AttributesService) CreateAttribute(ctx context.Context, func (s *AttributesService) ListAttributes(ctx context.Context, req *attributes.ListAttributesRequest, ) (*attributes.ListAttributesResponse, error) { + state := services.GetDbStateEnum(req.State) + slog.Debug("listing attribute definitions", slog.String("state", state)) rsp := &attributes.ListAttributesResponse{} - list, err := s.dbClient.ListAllAttributes(ctx) + list, err := s.dbClient.ListAllAttributes(ctx, state) if err != nil { return nil, services.HandleError(err, services.ErrListRetrievalFailed) } @@ -88,12 +95,12 @@ func (s *AttributesService) UpdateAttribute(ctx context.Context, return rsp, nil } -func (s *AttributesService) DeleteAttribute(ctx context.Context, - req *attributes.DeleteAttributeRequest, -) (*attributes.DeleteAttributeResponse, error) { - rsp := &attributes.DeleteAttributeResponse{} +func (s *AttributesService) DeactivateAttribute(ctx context.Context, + req *attributes.DeactivateAttributeRequest, +) (*attributes.DeactivateAttributeResponse, error) { + rsp := &attributes.DeactivateAttributeResponse{} - a, err := s.dbClient.DeleteAttribute(ctx, req.Id) + a, err := s.dbClient.DeactivateAttribute(ctx, req.Id) if err != nil { return nil, services.HandleError(err, services.ErrDeletionFailed, slog.String("id", req.Id)) } @@ -118,7 +125,9 @@ func (s *AttributesService) CreateAttributeValue(ctx context.Context, req *attri } func (s *AttributesService) ListAttributeValues(ctx context.Context, req *attributes.ListAttributeValuesRequest) (*attributes.ListAttributeValuesResponse, error) { - list, err := s.dbClient.ListAttributeValues(ctx, req.AttributeId) + state := services.GetDbStateEnum(req.State) + slog.Debug("listing attribute values", slog.String("attributeId", req.AttributeId), slog.String("state", state)) + list, err := s.dbClient.ListAttributeValues(ctx, req.AttributeId, state) if err != nil { return nil, services.HandleError(err, services.ErrListRetrievalFailed, slog.String("attributeId", req.AttributeId)) } @@ -150,13 +159,13 @@ func (s *AttributesService) UpdateAttributeValue(ctx context.Context, req *attri }, nil } -func (s *AttributesService) DeleteAttributeValue(ctx context.Context, req *attributes.DeleteAttributeValueRequest) (*attributes.DeleteAttributeValueResponse, error) { - a, err := s.dbClient.DeleteAttributeValue(ctx, req.Id) +func (s *AttributesService) DeactivateAttributeValue(ctx context.Context, req *attributes.DeactivateAttributeValueRequest) (*attributes.DeactivateAttributeValueResponse, error) { + a, err := s.dbClient.DeactivateAttributeValue(ctx, req.Id) if err != nil { return nil, services.HandleError(err, services.ErrDeletionFailed, slog.String("id", req.Id)) } - return &attributes.DeleteAttributeValueResponse{ + return &attributes.DeactivateAttributeValueResponse{ Value: a, }, nil } diff --git a/services/helpers.go b/services/helpers.go new file mode 100644 index 0000000000..6bebb095e3 --- /dev/null +++ b/services/helpers.go @@ -0,0 +1,22 @@ +package services + +import ( + "github.com/opentdf/opentdf-v2-poc/internal/db" + "github.com/opentdf/opentdf-v2-poc/sdk/common" +) + +// If not provided (rpc found state 'unspecified'), queries default to ACTIVE +func GetDbStateEnum(state common.StateTypeEnum) string { + switch state.String() { + case common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE.String(): + return db.StateActive + case common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE.String(): + return db.StateInactive + case common.StateTypeEnum_STATE_TYPE_ENUM_ANY.String(): + return db.StateAny + case common.StateTypeEnum_STATE_TYPE_ENUM_UNSPECIFIED.String(): + return db.StateActive + default: + return db.StateActive + } +} diff --git a/services/namespaces/namespaces.go b/services/namespaces/namespaces.go index 7d423fbd2d..8c92ffbe2d 100644 --- a/services/namespaces/namespaces.go +++ b/services/namespaces/namespaces.go @@ -30,10 +30,11 @@ func NewNamespacesServer(dbClient *db.Client, g *grpc.Server, s *runtime.ServeMu } func (ns NamespacesService) ListNamespaces(ctx context.Context, req *namespaces.ListNamespacesRequest) (*namespaces.ListNamespacesResponse, error) { - slog.Debug("listing namespaces") + state := services.GetDbStateEnum(req.State) + slog.Debug("listing namespaces", slog.String("state", state)) rsp := &namespaces.ListNamespacesResponse{} - list, err := ns.dbClient.ListNamespaces(ctx) + list, err := ns.dbClient.ListNamespaces(ctx, state) if err != nil { return nil, services.HandleError(err, services.ErrListRetrievalFailed) } @@ -94,12 +95,11 @@ func (ns NamespacesService) UpdateNamespace(ctx context.Context, req *namespaces return rsp, nil } -func (ns NamespacesService) DeleteNamespace(ctx context.Context, req *namespaces.DeleteNamespaceRequest) (*namespaces.DeleteNamespaceResponse, error) { - slog.Debug("soft-deleting namespace", slog.String("id", req.Id)) - rsp := &namespaces.DeleteNamespaceResponse{} - isSoftDelete := true +func (ns NamespacesService) DeactivateNamespace(ctx context.Context, req *namespaces.DeactivateNamespaceRequest) (*namespaces.DeactivateNamespaceResponse, error) { + slog.Debug("deactivating namespace", slog.String("id", req.Id)) + rsp := &namespaces.DeactivateNamespaceResponse{} - if _, err := ns.dbClient.DeleteNamespace(ctx, req.Id, isSoftDelete); err != nil { + if _, err := ns.dbClient.DeactivateNamespace(ctx, req.Id); err != nil { return nil, services.HandleError(err, services.ErrDeletionFailed, slog.String("id", req.Id)) } From faf14f5dfe2b2f3dee4265ede4292e707c6b2994 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Thu, 15 Feb 2024 09:56:15 -0500 Subject: [PATCH 14/28] cleanup --- integration/attribute_values_test.go | 11 ++++------- integration/attributes_test.go | 1 - integration/namespaces_test.go | 2 ++ internal/db/namespaces.go | 2 +- services/attributes/attributes.go | 5 ----- services/helpers.go | 1 - 6 files changed, 7 insertions(+), 15 deletions(-) diff --git a/integration/attribute_values_test.go b/integration/attribute_values_test.go index a1f3298f9c..67b1d46826 100644 --- a/integration/attribute_values_test.go +++ b/integration/attribute_values_test.go @@ -15,10 +15,7 @@ import ( // TODO: test failure of create/update with invalid member id's [https://github.com/opentdf/opentdf-v2-poc/issues/105] -var ( - nonExistentAttributeValueUuid = "78909865-8888-9999-9999-000000000000" - stillActiveAttributeId string -) +var nonExistentAttributeValueUuid = "78909865-8888-9999-9999-000000000000" type AttributeValuesSuite struct { suite.Suite @@ -390,19 +387,19 @@ func (s *AttributeValuesSuite) Test_DeactivateAttribute_Cascades_List() { } func (s *AttributeValuesSuite) Test_DeactivateAttributeValue_Get() { - // ensure the namespace has state active still (not bubbled up) + // namespace is still active (not bubbled up) gotNs, err := s.db.Client.GetNamespace(s.ctx, stillActiveNsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNs) assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE, gotNs.State) - // ensure the attribute still has state actiave (not bubbled up) + // attribute is still active (not bubbled up) gotAttr, err := s.db.Client.GetAttribute(s.ctx, stillActiveAttributeId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotAttr) assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE, gotAttr.State) - // ensure the value has state inactive + // value was deactivated gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotVal) diff --git a/integration/attributes_test.go b/integration/attributes_test.go index 9c8580608a..cec283699d 100644 --- a/integration/attributes_test.go +++ b/integration/attributes_test.go @@ -25,7 +25,6 @@ var ( fixtureNamespaceId string nonExistentAttrId = "00000000-6789-4321-9876-123456765436" fixtureKeyAccessServerId string - stillActiveNsId string ) func (s *AttributesSuite) SetupSuite() { diff --git a/integration/namespaces_test.go b/integration/namespaces_test.go index 18be55561e..c56c5946c7 100644 --- a/integration/namespaces_test.go +++ b/integration/namespaces_test.go @@ -28,6 +28,8 @@ var ( deactivatedNsId = "" deactivatedAttrId = "" deactivatedAttrValueId = "" + stillActiveNsId string + stillActiveAttributeId string ) func (s *NamespacesSuite) SetupSuite() { diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go index e4c6b91785..2237ba255a 100644 --- a/internal/db/namespaces.go +++ b/internal/db/namespaces.go @@ -137,7 +137,7 @@ func (c Client) DeactivateNamespace(ctx context.Context, id string) (*namespaces func deleteNamespaceSql(id string) (string, []interface{}, error) { t := Tables.Namespaces - // TODO: handle delete cascade, dangerous deletion via special rpc + // TODO: handle delete cascade, dangerous deletion via special rpc [https://github.com/opentdf/opentdf-v2-poc/issues/115] return newStatementBuilder(). Delete(t.Name()). Where(sq.Eq{t.Field("id"): id}). diff --git a/services/attributes/attributes.go b/services/attributes/attributes.go index 41b2d2297f..d24d74418b 100644 --- a/services/attributes/attributes.go +++ b/services/attributes/attributes.go @@ -32,11 +32,6 @@ func NewAttributesServer(dbClient *db.Client, g *grpc.Server, s *runtime.ServeMu func (s AttributesService) CreateAttribute(ctx context.Context, req *attributes.CreateAttributeRequest, ) (*attributes.CreateAttributeResponse, error) { - // - // TODO: make sure you can't create in a deactivated namespace!! - // - // - // slog.Debug("creating new attribute definition", slog.String("name", req.Attribute.Name)) rsp := &attributes.CreateAttributeResponse{} diff --git a/services/helpers.go b/services/helpers.go index 6bebb095e3..a196311269 100644 --- a/services/helpers.go +++ b/services/helpers.go @@ -5,7 +5,6 @@ import ( "github.com/opentdf/opentdf-v2-poc/sdk/common" ) -// If not provided (rpc found state 'unspecified'), queries default to ACTIVE func GetDbStateEnum(state common.StateTypeEnum) string { switch state.String() { case common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE.String(): From f4dbba305245c58f324254a0b82b32eda57139fd Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Thu, 15 Feb 2024 10:20:15 -0500 Subject: [PATCH 15/28] cleanup --- services/attributes/attributes.go | 4 ++-- services/helpers.go | 2 +- services/namespaces/namespaces.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/services/attributes/attributes.go b/services/attributes/attributes.go index d24d74418b..382a1a3d3c 100644 --- a/services/attributes/attributes.go +++ b/services/attributes/attributes.go @@ -48,7 +48,7 @@ func (s AttributesService) CreateAttribute(ctx context.Context, func (s *AttributesService) ListAttributes(ctx context.Context, req *attributes.ListAttributesRequest, ) (*attributes.ListAttributesResponse, error) { - state := services.GetDbStateEnum(req.State) + state := services.GetDbStateTypeTransformedEnum(req.State) slog.Debug("listing attribute definitions", slog.String("state", state)) rsp := &attributes.ListAttributesResponse{} @@ -120,7 +120,7 @@ func (s *AttributesService) CreateAttributeValue(ctx context.Context, req *attri } func (s *AttributesService) ListAttributeValues(ctx context.Context, req *attributes.ListAttributeValuesRequest) (*attributes.ListAttributeValuesResponse, error) { - state := services.GetDbStateEnum(req.State) + state := services.GetDbStateTypeTransformedEnum(req.State) slog.Debug("listing attribute values", slog.String("attributeId", req.AttributeId), slog.String("state", state)) list, err := s.dbClient.ListAttributeValues(ctx, req.AttributeId, state) if err != nil { diff --git a/services/helpers.go b/services/helpers.go index a196311269..6ec6824beb 100644 --- a/services/helpers.go +++ b/services/helpers.go @@ -5,7 +5,7 @@ import ( "github.com/opentdf/opentdf-v2-poc/sdk/common" ) -func GetDbStateEnum(state common.StateTypeEnum) string { +func GetDbStateTypeTransformedEnum(state common.StateTypeEnum) string { switch state.String() { case common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE.String(): return db.StateActive diff --git a/services/namespaces/namespaces.go b/services/namespaces/namespaces.go index 8c92ffbe2d..f4971c83cb 100644 --- a/services/namespaces/namespaces.go +++ b/services/namespaces/namespaces.go @@ -30,7 +30,7 @@ func NewNamespacesServer(dbClient *db.Client, g *grpc.Server, s *runtime.ServeMu } func (ns NamespacesService) ListNamespaces(ctx context.Context, req *namespaces.ListNamespacesRequest) (*namespaces.ListNamespacesResponse, error) { - state := services.GetDbStateEnum(req.State) + state := services.GetDbStateTypeTransformedEnum(req.State) slog.Debug("listing namespaces", slog.String("state", state)) rsp := &namespaces.ListNamespacesResponse{} From bbee6b942053557c38012cd3aaa2dac15bf7021a Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Thu, 15 Feb 2024 11:09:26 -0500 Subject: [PATCH 16/28] rename schema ERD files and preserve timestamped schemas per migration --- migrations/20240131000000_schema_erd.md | 89 +++++++++++++++++++ ...iagram.md => 20240212000000_schema_erd.md} | 0 2 files changed, 89 insertions(+) create mode 100644 migrations/20240131000000_schema_erd.md rename migrations/{20240212000000_diagram.md => 20240212000000_schema_erd.md} (100%) diff --git a/migrations/20240131000000_schema_erd.md b/migrations/20240131000000_schema_erd.md new file mode 100644 index 0000000000..00efbb7345 --- /dev/null +++ b/migrations/20240131000000_schema_erd.md @@ -0,0 +1,89 @@ +# Diagram for 20240118000000_create_new_tables.sql + +```mermaid +--- +title: Database Schema Mermaid Diagram +nodes: | + Metadata is a jsonb type which will hold a common structure + + To note OCI data we can utilize labels (i.e. map[string]string) + "labels": { + "oci:version": "1.0.0" + "oci:...": "..." + } + +--- + +erDiagram + + Namespace ||--|{ AttributeDefinition : has + AttributeDefinition ||--|{ AttributeValue : has + AttributeDefinition ||--o{ AttributeDefinitionKeyAccessGrant : has + + AttributeValue ||--o{ AttributeValueKeyAccessGrant: has + AttributeValue ||--o{ AttributeValue: "has group members" + + AttributeDefinitionKeyAccessGrant ||--|{ KeyAccessServer: has + AttributeValueKeyAccessGrant ||--|{ KeyAccessServer: has + + ResourceMapping }o--o{ AttributeValue: relates + + SubjectMapping }o--o{ AttributeValue: relates + + Namespace { + uuid id PK + varchar name UK + } + + AttributeDefinition { + uuid id PK + uuid namespace_id FK + varchar name + enum rule + jsonb metadata + compIdx comp_key UK "ns_id + name" + } + + AttributeDefinitionKeyAccessGrant { + uuid attribute_definition_id FK + uuid key_access_server_id FK + } + + AttributeValue { + uuid id PK + uuid namespace_id FK + uuid attribute_definition_id FK + varchar value + uuid[] members FK "Optional grouping of values" + jsonb metadata + compIdx comp_key UK "ns_id + ad_id + value" + } + + AttributeValueKeyAccessGrant { + uuid attribute_value_id FK + uuid key_access_server_id FK + } + + ResourceMapping { + uuid id PK + uuid attribute_value_id FK + varchar[] terms + jsonb metadata + } + + SubjectMapping { + uuid id PK + uuid attribute_value_id + enum operator + varchar subject_attribute + varchar[] subject_attribute_values + jsonb metadata + } + + KeyAccessServer { + uuid id PK + varchar uri UK + jsonb public_key + jsonb metadata + } +``` diff --git a/migrations/20240212000000_diagram.md b/migrations/20240212000000_schema_erd.md similarity index 100% rename from migrations/20240212000000_diagram.md rename to migrations/20240212000000_schema_erd.md From 592d14eac27ff2fa4f8660477e4792db533f997d Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 08:53:04 -0500 Subject: [PATCH 17/28] update proto state type active enum, regenerate protos, and match generated types in services/db code --- docs/grpc/index.html | 24 +- .../attributes/attributes.swagger.json | 28 +- .../namespaces/namespaces.swagger.json | 24 +- .../resource_mapping.swagger.json | 24 +- .../subject_mapping.swagger.json | 24 +- integration/attribute_values_test.go | 6 +- integration/attributes_test.go | 6 +- integration/namespaces_test.go | 8 +- internal/db/db.go | 8 +- proto/attributes/attributes.proto | 8 +- proto/common/common.proto | 10 +- proto/namespaces/namespaces.proto | 4 +- sdk/attributes/attributes.pb.go | 761 +++++++++--------- sdk/common/common.pb.go | 86 +- sdk/namespaces/namespaces.pb.go | 202 ++--- sdkjava/com/attributes/Attribute.java | 32 +- .../com/attributes/AttributeOrBuilder.java | 6 +- sdkjava/com/attributes/AttributesProto.java | 314 ++++---- .../ListAttributeValuesRequest.java | 32 +- .../ListAttributeValuesRequestOrBuilder.java | 6 +- .../com/attributes/ListAttributesRequest.java | 32 +- .../ListAttributesRequestOrBuilder.java | 6 +- sdkjava/com/attributes/Value.java | 32 +- sdkjava/com/attributes/ValueOrBuilder.java | 6 +- sdkjava/com/common/ActiveStateEnum.java | 136 ++++ sdkjava/com/common/CommonProto.java | 16 +- sdkjava/com/common/StateTypeEnum.java | 26 +- .../com/namespaces/ListNamespacesRequest.java | 32 +- .../ListNamespacesRequestOrBuilder.java | 6 +- sdkjava/com/namespaces/Namespace.java | 32 +- .../com/namespaces/NamespaceOrBuilder.java | 6 +- sdkjava/com/namespaces/NamespacesProto.java | 80 +- services/helpers.go | 10 +- 33 files changed, 1085 insertions(+), 948 deletions(-) create mode 100644 sdkjava/com/common/ActiveStateEnum.java diff --git a/docs/grpc/index.html b/docs/grpc/index.html index 83d84e8872..43919edeaa 100644 --- a/docs/grpc/index.html +++ b/docs/grpc/index.html @@ -196,7 +196,7 @@

    Table of Contents

  • - EStateTypeEnum + EActiveStateEnum
  • @@ -838,7 +838,7 @@

    MetadataMutable.LabelsEntry

    -

    StateTypeEnum

    +

    ActiveStateEnum

    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

    ListKeyAccessGrantsListKeyAccessGrantsRequestListKeyAccessGrantsResponseListSubjectMappingsListSubjectMappingsRequestListSubjectMappingsResponse

    GetKeyAccessGrantGetKeyAccessGrantRequestGetKeyAccessGrantResponseGetSubjectMappingGetSubjectMappingRequestGetSubjectMappingResponse

    CreateKeyAccessGrantsCreateKeyAccessGrantsRequestCreateKeyAccessGrantsResponseCreateSubjectMappingCreateSubjectMappingRequestCreateSubjectMappingResponse

    UpdateKeyAccessGrantsUpdateKeyAccessGrantsRequestUpdateKeyAccessGrantsResponseUpdateSubjectMappingUpdateSubjectMappingRequestUpdateSubjectMappingResponse

    DeleteKeyAccessGrantsDeleteKeyAccessGrantsRequestDeleteKeyAccessGrantsResponseDeleteSubjectMappingDeleteSubjectMappingRequestDeleteSubjectMappingResponse

    ListKeyAccessGrantsListSubjectMappings GET/v1/grants/subject-mappings
    GetKeyAccessGrantGetSubjectMapping GET/v1/grants/{id}/subject-mappings/{id}
    CreateKeyAccessGrantsCreateSubjectMapping POST/v1/grantsgrants/subject-mappingssubject_mapping
    UpdateKeyAccessGrantsPUT/v1/grants/{id}grantsUpdateSubjectMappingPOST/subject-mappings/{id}subject_mapping
    DeleteKeyAccessGrantsDeleteSubjectMapping DELETE/v1/grants/{id}/subject-mappings/{id}
    @@ -847,25 +847,25 @@

    StateTypeEnum

    - + - + - + - + @@ -1657,7 +1657,7 @@

    ListNamespacesRequest

    - + @@ -1719,7 +1719,7 @@

    Namespace

    - + @@ -2096,7 +2096,7 @@

    Attribute

    - + @@ -2505,7 +2505,7 @@

    ListAttributeValuesRequest

    - + @@ -2553,7 +2553,7 @@

    ListAttributesRequest

    - + @@ -2856,7 +2856,7 @@

    Value

    - + diff --git a/docs/openapi/attributes/attributes.swagger.json b/docs/openapi/attributes/attributes.swagger.json index b8e9b31196..78118edf64 100644 --- a/docs/openapi/attributes/attributes.swagger.json +++ b/docs/openapi/attributes/attributes.swagger.json @@ -476,7 +476,7 @@ } }, "state": { - "$ref": "#/definitions/commonStateTypeEnum", + "$ref": "#/definitions/commonActiveStateEnum", "title": "active by default until explicitly deactivated" } } @@ -668,7 +668,7 @@ "title": "list of key access servers" }, "state": { - "$ref": "#/definitions/commonStateTypeEnum", + "$ref": "#/definitions/commonActiveStateEnum", "title": "active by default until explicitly deactivated" } } @@ -702,6 +702,17 @@ } } }, + "commonActiveStateEnum": { + "type": "string", + "enum": [ + "ACTIVE_STATE_ENUM_UNSPECIFIED", + "ACTIVE_STATE_ENUM_ACTIVE", + "ACTIVE_STATE_ENUM_INACTIVE", + "ACTIVE_STATE_ENUM_ANY" + ], + "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": { @@ -745,17 +756,6 @@ } } }, - "commonStateTypeEnum": { - "type": "string", - "enum": [ - "STATE_TYPE_ENUM_UNSPECIFIED", - "STATE_TYPE_ENUM_ACTIVE", - "STATE_TYPE_ENUM_INACTIVE", - "STATE_TYPE_ENUM_ANY" - ], - "default": "STATE_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" - }, "kasregistryKeyAccessServer": { "type": "object", "properties": { @@ -800,7 +800,7 @@ "title": "used to partition Attribute Definitions, support by namespace AuthN and enable federation" }, "state": { - "$ref": "#/definitions/commonStateTypeEnum", + "$ref": "#/definitions/commonActiveStateEnum", "title": "active by default until explicitly deactivated" } } diff --git a/docs/openapi/namespaces/namespaces.swagger.json b/docs/openapi/namespaces/namespaces.swagger.json index 2a025ad5c4..a6efd5a4ae 100644 --- a/docs/openapi/namespaces/namespaces.swagger.json +++ b/docs/openapi/namespaces/namespaces.swagger.json @@ -42,12 +42,12 @@ "required": false, "type": "string", "enum": [ - "STATE_TYPE_ENUM_UNSPECIFIED", - "STATE_TYPE_ENUM_ACTIVE", - "STATE_TYPE_ENUM_INACTIVE", - "STATE_TYPE_ENUM_ANY" + "ACTIVE_STATE_ENUM_UNSPECIFIED", + "ACTIVE_STATE_ENUM_ACTIVE", + "ACTIVE_STATE_ENUM_INACTIVE", + "ACTIVE_STATE_ENUM_ANY" ], - "default": "STATE_TYPE_ENUM_UNSPECIFIED" + "default": "ACTIVE_STATE_ENUM_UNSPECIFIED" } ], "tags": [ @@ -179,15 +179,15 @@ } }, "definitions": { - "commonStateTypeEnum": { + "commonActiveStateEnum": { "type": "string", "enum": [ - "STATE_TYPE_ENUM_UNSPECIFIED", - "STATE_TYPE_ENUM_ACTIVE", - "STATE_TYPE_ENUM_INACTIVE", - "STATE_TYPE_ENUM_ANY" + "ACTIVE_STATE_ENUM_UNSPECIFIED", + "ACTIVE_STATE_ENUM_ACTIVE", + "ACTIVE_STATE_ENUM_INACTIVE", + "ACTIVE_STATE_ENUM_ANY" ], - "default": "STATE_TYPE_ENUM_UNSPECIFIED", + "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" }, "namespacesCreateNamespaceResponse": { @@ -233,7 +233,7 @@ "title": "used to partition Attribute Definitions, support by namespace AuthN and enable federation" }, "state": { - "$ref": "#/definitions/commonStateTypeEnum", + "$ref": "#/definitions/commonActiveStateEnum", "title": "active by default until explicitly deactivated" } } diff --git a/docs/openapi/resourcemapping/resource_mapping.swagger.json b/docs/openapi/resourcemapping/resource_mapping.swagger.json index b9d6709716..fb94deb00e 100644 --- a/docs/openapi/resourcemapping/resource_mapping.swagger.json +++ b/docs/openapi/resourcemapping/resource_mapping.swagger.json @@ -206,11 +206,22 @@ "title": "list of key access servers" }, "state": { - "$ref": "#/definitions/commonStateTypeEnum", + "$ref": "#/definitions/commonActiveStateEnum", "title": "active by default until explicitly deactivated" } } }, + "commonActiveStateEnum": { + "type": "string", + "enum": [ + "ACTIVE_STATE_ENUM_UNSPECIFIED", + "ACTIVE_STATE_ENUM_ACTIVE", + "ACTIVE_STATE_ENUM_INACTIVE", + "ACTIVE_STATE_ENUM_ANY" + ], + "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": { @@ -254,17 +265,6 @@ } } }, - "commonStateTypeEnum": { - "type": "string", - "enum": [ - "STATE_TYPE_ENUM_UNSPECIFIED", - "STATE_TYPE_ENUM_ACTIVE", - "STATE_TYPE_ENUM_INACTIVE", - "STATE_TYPE_ENUM_ANY" - ], - "default": "STATE_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" - }, "kasregistryKeyAccessServer": { "type": "object", "properties": { diff --git a/docs/openapi/subjectmapping/subject_mapping.swagger.json b/docs/openapi/subjectmapping/subject_mapping.swagger.json index 2b787e9867..603c2faeb9 100644 --- a/docs/openapi/subjectmapping/subject_mapping.swagger.json +++ b/docs/openapi/subjectmapping/subject_mapping.swagger.json @@ -196,11 +196,22 @@ "title": "list of key access servers" }, "state": { - "$ref": "#/definitions/commonStateTypeEnum", + "$ref": "#/definitions/commonActiveStateEnum", "title": "active by default until explicitly deactivated" } } }, + "commonActiveStateEnum": { + "type": "string", + "enum": [ + "ACTIVE_STATE_ENUM_UNSPECIFIED", + "ACTIVE_STATE_ENUM_ACTIVE", + "ACTIVE_STATE_ENUM_INACTIVE", + "ACTIVE_STATE_ENUM_ANY" + ], + "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": { @@ -244,17 +255,6 @@ } } }, - "commonStateTypeEnum": { - "type": "string", - "enum": [ - "STATE_TYPE_ENUM_UNSPECIFIED", - "STATE_TYPE_ENUM_ACTIVE", - "STATE_TYPE_ENUM_INACTIVE", - "STATE_TYPE_ENUM_ANY" - ], - "default": "STATE_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" - }, "kasregistryKeyAccessServer": { "type": "object", "properties": { diff --git a/integration/attribute_values_test.go b/integration/attribute_values_test.go index 67b1d46826..e1e08576e8 100644 --- a/integration/attribute_values_test.go +++ b/integration/attribute_values_test.go @@ -391,19 +391,19 @@ func (s *AttributeValuesSuite) Test_DeactivateAttributeValue_Get() { gotNs, err := s.db.Client.GetNamespace(s.ctx, stillActiveNsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNs) - assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE, gotNs.State) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, gotNs.State) // attribute is still active (not bubbled up) gotAttr, err := s.db.Client.GetAttribute(s.ctx, stillActiveAttributeId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotAttr) - assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE, gotAttr.State) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, gotAttr.State) // value was deactivated gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotVal) - assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotVal.State) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotVal.State) } func (s *AttributeValuesSuite) Test_AssignKeyAccessServerToValue_Returns_Error_When_Value_Not_Found() { diff --git a/integration/attributes_test.go b/integration/attributes_test.go index cec283699d..1b30009442 100644 --- a/integration/attributes_test.go +++ b/integration/attributes_test.go @@ -472,19 +472,19 @@ func (s *AttributesSuite) Test_DeactivateAttribute_Cascades_ToValues_Get() { gotNs, err := s.db.Client.GetNamespace(s.ctx, stillActiveNsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNs) - assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE, gotNs.State) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, gotNs.State) // ensure the attribute has state inactive gotAttr, err := s.db.Client.GetAttribute(s.ctx, deactivatedAttrId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotAttr) - assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotAttr.State) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotAttr.State) // ensure the value has state inactive gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotVal) - assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotVal.State) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotVal.State) } func (s *AttributesSuite) Test_AssignKeyAccessServerToAttribute_Returns_Error_When_Attribute_Not_Found() { diff --git a/integration/namespaces_test.go b/integration/namespaces_test.go index c56c5946c7..5b5d55c945 100644 --- a/integration/namespaces_test.go +++ b/integration/namespaces_test.go @@ -215,7 +215,7 @@ func (s *NamespacesSuite) Test_DeactivateNamespace() { assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespace) assert.Equal(s.T(), id, gotNamespace.Id) - assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotNamespace.State) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotNamespace.State) } // reusable setup for creating a namespace -> attr -> value and then deactivating the namespace (cascades down) @@ -365,19 +365,19 @@ func (s *NamespacesSuite) Test_DeactivateNamespace_Cascades_ToAttributesAndValue gotNs, err := s.db.Client.GetNamespace(s.ctx, deactivatedNsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNs) - assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotNs.State) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotNs.State) // ensure the attribute has state inactive gotAttr, err := s.db.Client.GetAttribute(s.ctx, deactivatedAttrId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotAttr) - assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotAttr.State) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotAttr.State) // ensure the value has state inactive gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotVal) - assert.Equal(s.T(), common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE, gotVal.State) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotVal.State) } func (s *NamespacesSuite) Test_DeleteNamespace_DoesNotExist_ShouldFail() { diff --git a/internal/db/db.go b/internal/db/db.go index 245ce82d87..4d8ac7a499 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -208,13 +208,13 @@ func tableField(table string, field string) string { return table + "." + field } -func getProtoStateEnum(state string) common.StateTypeEnum { +func getProtoStateEnum(state string) common.ActiveStateEnum { switch state { case StateInactive: - return common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE + return common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE case StateActive: - return common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE + return common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE default: - return common.StateTypeEnum_STATE_TYPE_ENUM_UNSPECIFIED + return common.ActiveStateEnum_ACTIVE_STATE_ENUM_UNSPECIFIED } } diff --git a/proto/attributes/attributes.proto b/proto/attributes/attributes.proto index a763ef6532..d9b68a77f0 100644 --- a/proto/attributes/attributes.proto +++ b/proto/attributes/attributes.proto @@ -39,7 +39,7 @@ message Attribute { repeated kasregistry.KeyAccessServer grants = 8; // active by default until explicitly deactivated - common.StateTypeEnum state = 9; + common.ActiveStateEnum state = 9; } message AttributeCreateUpdate { @@ -79,7 +79,7 @@ message Value { repeated kasregistry.KeyAccessServer grants = 6; // active by default until explicitly deactivated - common.StateTypeEnum state = 7; + common.ActiveStateEnum state = 7; } message ValueCreateUpdate { @@ -111,7 +111,7 @@ message ValueKeyAccessServer { message ListAttributesRequest { // ACTIVE by default when not specified - common.StateTypeEnum state = 1; + common.ActiveStateEnum state = 1; } message ListAttributesResponse { repeated Attribute attributes = 1; @@ -159,7 +159,7 @@ message GetAttributeValueResponse { message ListAttributeValuesRequest { string attribute_id = 1 [(buf.validate.field).required = true]; // ACTIVE by default when not specified - common.StateTypeEnum state = 2; + common.ActiveStateEnum state = 2; } message ListAttributeValuesResponse { repeated Value values = 1; diff --git a/proto/common/common.proto b/proto/common/common.proto index 7422e6642d..319de29ae0 100644 --- a/proto/common/common.proto +++ b/proto/common/common.proto @@ -24,11 +24,11 @@ message MetadataMutable { } // 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 -enum StateTypeEnum { - STATE_TYPE_ENUM_UNSPECIFIED = 0; - STATE_TYPE_ENUM_ACTIVE = 1; - STATE_TYPE_ENUM_INACTIVE = 2; - STATE_TYPE_ENUM_ANY = 3; +enum ActiveStateEnum { + ACTIVE_STATE_ENUM_UNSPECIFIED = 0; + ACTIVE_STATE_ENUM_ACTIVE = 1; + ACTIVE_STATE_ENUM_INACTIVE = 2; + ACTIVE_STATE_ENUM_ANY = 3; } // message ListOptions { diff --git a/proto/namespaces/namespaces.proto b/proto/namespaces/namespaces.proto index 82873f98ed..9edd3b679d 100644 --- a/proto/namespaces/namespaces.proto +++ b/proto/namespaces/namespaces.proto @@ -21,7 +21,7 @@ message Namespace { ]; // active by default until explicitly deactivated - common.StateTypeEnum state = 3; + common.ActiveStateEnum state = 3; } /* @@ -39,7 +39,7 @@ message GetNamespaceResponse { message ListNamespacesRequest { // ACTIVE by default when not specified - common.StateTypeEnum state = 1; + common.ActiveStateEnum state = 1; } message ListNamespacesResponse { repeated Namespace namespaces = 1; diff --git a/sdk/attributes/attributes.pb.go b/sdk/attributes/attributes.pb.go index 7df4500c75..f306d225c3 100644 --- a/sdk/attributes/attributes.pb.go +++ b/sdk/attributes/attributes.pb.go @@ -95,7 +95,7 @@ type Attribute struct { 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"` // active by default until explicitly deactivated - State common.StateTypeEnum `protobuf:"varint,9,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` + State common.ActiveStateEnum `protobuf:"varint,9,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"` } func (x *Attribute) Reset() { @@ -179,11 +179,11 @@ func (x *Attribute) GetGrants() []*kasregistry.KeyAccessServer { return nil } -func (x *Attribute) GetState() common.StateTypeEnum { +func (x *Attribute) GetState() common.ActiveStateEnum { if x != nil { return x.State } - return common.StateTypeEnum(0) + return common.ActiveStateEnum(0) } type AttributeCreateUpdate struct { @@ -285,7 +285,7 @@ type Value struct { // list of key access servers Grants []*kasregistry.KeyAccessServer `protobuf:"bytes,6,rep,name=grants,proto3" json:"grants,omitempty"` // active by default until explicitly deactivated - State common.StateTypeEnum `protobuf:"varint,7,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` + State common.ActiveStateEnum `protobuf:"varint,7,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"` } func (x *Value) Reset() { @@ -362,11 +362,11 @@ func (x *Value) GetGrants() []*kasregistry.KeyAccessServer { return nil } -func (x *Value) GetState() common.StateTypeEnum { +func (x *Value) GetState() common.ActiveStateEnum { if x != nil { return x.State } - return common.StateTypeEnum(0) + return common.ActiveStateEnum(0) } type ValueCreateUpdate struct { @@ -549,7 +549,7 @@ type ListAttributesRequest struct { unknownFields protoimpl.UnknownFields // ACTIVE by default when not specified - State common.StateTypeEnum `protobuf:"varint,1,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` + State common.ActiveStateEnum `protobuf:"varint,1,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"` } func (x *ListAttributesRequest) Reset() { @@ -584,11 +584,11 @@ func (*ListAttributesRequest) Descriptor() ([]byte, []int) { return file_attributes_attributes_proto_rawDescGZIP(), []int{6} } -func (x *ListAttributesRequest) GetState() common.StateTypeEnum { +func (x *ListAttributesRequest) GetState() common.ActiveStateEnum { if x != nil { return x.State } - return common.StateTypeEnum(0) + return common.ActiveStateEnum(0) } type ListAttributesResponse struct { @@ -1126,7 +1126,7 @@ type ListAttributeValuesRequest struct { AttributeId string `protobuf:"bytes,1,opt,name=attribute_id,json=attributeId,proto3" json:"attribute_id,omitempty"` // ACTIVE by default when not specified - State common.StateTypeEnum `protobuf:"varint,2,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` + State common.ActiveStateEnum `protobuf:"varint,2,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"` } func (x *ListAttributeValuesRequest) Reset() { @@ -1168,11 +1168,11 @@ func (x *ListAttributeValuesRequest) GetAttributeId() string { return "" } -func (x *ListAttributeValuesRequest) GetState() common.StateTypeEnum { +func (x *ListAttributeValuesRequest) GetState() common.ActiveStateEnum { if x != nil { return x.State } - return common.StateTypeEnum(0) + return common.ActiveStateEnum(0) } type ListAttributeValuesResponse struct { @@ -1919,7 +1919,7 @@ var file_attributes_attributes_proto_rawDesc = []byte{ 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x6e, 0x61, 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, 0xe4, 0x02, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xe6, 0x02, 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, @@ -1938,397 +1938,398 @@ var file_attributes_attributes_proto_rawDesc = []byte{ 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, 0x2b, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x8e, 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, 0x42, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x21, 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, 0x35, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, - 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 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, 0x83, 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, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x22, 0x78, 0x0a, 0x11, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x2d, + 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 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, 0x8e, 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, 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, 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, + 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, 0x42, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x21, 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, 0x35, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 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, 0x85, + 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, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, + 0x18, 0x07, 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, 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, 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, 0x44, 0x0a, 0x15, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 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, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, - 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x15, 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, 0x61, 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, 0x47, 0x0a, - 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x79, 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 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, 0x4e, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, + 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, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 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, 0x4b, 0x0a, 0x14, + 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x61, 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x79, 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, 0x47, + 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x52, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x52, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, - 0x44, 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, 0x27, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x74, 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, 0x2b, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x48, 0x0a, 0x1b, 0x4c, + 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, 0x44, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x11, 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, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x29, 0x0a, 0x06, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 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, 0x85, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 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, 0x47, 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, 0x27, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x9d, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 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, 0x48, 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, 0x29, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x11, 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, 0x85, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x9d, + 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1d, 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, 0x47, + 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, 0x27, + 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x4b, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x4b, 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, 0x27, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x8e, 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, 0x63, 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, 0x24, 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, 0x8f, 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, 0x63, 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, 0x24, 0x2e, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x8e, 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, 0x63, 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, 0x24, 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, - 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, 0x90, 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, 0x63, 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, 0x24, 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, 0x91, 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, 0x63, 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, 0x24, 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, 0x7e, 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, 0x57, 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, 0x20, 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, 0x7f, 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, 0x57, 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, 0x20, 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, 0x80, 0x01, 0x0a, 0x25, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4b, 0x65, 0x79, + 0x22, 0x8f, 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, 0x63, 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, 0x24, 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, 0x90, 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, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x57, 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, 0x20, 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, 0x81, 0x01, 0x0a, 0x26, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x63, 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, 0x24, 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, 0x91, 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, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x72, 0x6f, 0x6d, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 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, 0x24, 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, 0x7e, 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, 0x57, 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, 0x20, 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, 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, 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, - 0x85, 0x11, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, 0x68, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 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, - 0x27, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x4c, 0x69, 0x73, + 0x65, 0x73, 0x73, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x7f, 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, 0x57, 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, 0x20, 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, 0x80, 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, 0x57, 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, 0x20, 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, 0x81, 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, 0x57, 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, 0x20, 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, 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, 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, 0x85, 0x11, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, + 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, + 0x21, 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, 0x22, 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, 0x68, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, + 0x26, 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, 0x6b, 0x0a, 0x0c, 0x47, 0x65, - 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x1f, 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, 0x20, 0x2e, 0x61, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 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, 0x6b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x1f, 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, 0x20, 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, + 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x7f, 0x0a, 0x0f, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, + 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, 0x23, 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, 0x80, 0x01, 0x0a, + 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 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, 0x27, 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, + 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 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, 0x25, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 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, 0x23, + 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, 0x9b, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 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, 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x80, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 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, 0x27, 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, 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 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, 0x25, 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, 0x9b, 0x01, - 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 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, - 0x28, 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, 0xa0, 0x01, 0x0a, 0x14, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, - 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 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, 0x28, 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, 0x98, - 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, 0x2b, 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, 0x2c, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 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, 0xa0, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 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, 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, 0xd6, 0x01, 0x0a, 0x20, 0x41, 0x73, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 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, 0x98, 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, 0x2b, 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, 0x2c, 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, 0xd6, 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, 0x33, 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, 0x34, 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, 0xdc, 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, 0x35, 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, 0x36, 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, 0xcd, 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, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x33, - 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, 0x34, 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, 0xdc, 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, 0x35, 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, 0x36, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, 0x65, + 0x76, 0x65, 0x72, 0x54, 0x6f, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2f, 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, 0x30, 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, 0xd3, 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, 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, 0xcd, 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, 0x2f, 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, 0x30, 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, 0xd3, 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, 0x31, 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, 0x32, 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, 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, - 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, - 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xa2, - 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x73, 0xca, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xe2, - 0x02, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, - 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x76, 0x65, 0x72, 0x46, 0x72, 0x6f, 0x6d, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x31, 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, + 0x32, 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, + 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, + 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x0a, + 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xe2, 0x02, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2384,7 +2385,7 @@ var file_attributes_attributes_proto_goTypes = []interface{}{ (*common.Metadata)(nil), // 35: common.Metadata (*namespaces.Namespace)(nil), // 36: namespaces.Namespace (*kasregistry.KeyAccessServer)(nil), // 37: kasregistry.KeyAccessServer - (common.StateTypeEnum)(0), // 38: common.StateTypeEnum + (common.ActiveStateEnum)(0), // 38: common.ActiveStateEnum (*common.MetadataMutable)(nil), // 39: common.MetadataMutable } var file_attributes_attributes_proto_depIdxs = []int32{ @@ -2393,15 +2394,15 @@ var file_attributes_attributes_proto_depIdxs = []int32{ 0, // 2: attributes.Attribute.rule:type_name -> attributes.AttributeRuleTypeEnum 3, // 3: attributes.Attribute.values:type_name -> attributes.Value 37, // 4: attributes.Attribute.grants:type_name -> kasregistry.KeyAccessServer - 38, // 5: attributes.Attribute.state:type_name -> common.StateTypeEnum + 38, // 5: attributes.Attribute.state:type_name -> common.ActiveStateEnum 39, // 6: attributes.AttributeCreateUpdate.metadata:type_name -> common.MetadataMutable 0, // 7: attributes.AttributeCreateUpdate.rule:type_name -> attributes.AttributeRuleTypeEnum 4, // 8: attributes.AttributeCreateUpdate.values:type_name -> attributes.ValueCreateUpdate 35, // 9: attributes.Value.metadata:type_name -> common.Metadata 37, // 10: attributes.Value.grants:type_name -> kasregistry.KeyAccessServer - 38, // 11: attributes.Value.state:type_name -> common.StateTypeEnum + 38, // 11: attributes.Value.state:type_name -> common.ActiveStateEnum 39, // 12: attributes.ValueCreateUpdate.metadata:type_name -> common.MetadataMutable - 38, // 13: attributes.ListAttributesRequest.state:type_name -> common.StateTypeEnum + 38, // 13: attributes.ListAttributesRequest.state:type_name -> common.ActiveStateEnum 1, // 14: attributes.ListAttributesResponse.attributes:type_name -> attributes.Attribute 1, // 15: attributes.GetAttributeResponse.attribute:type_name -> attributes.Attribute 2, // 16: attributes.CreateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate @@ -2410,7 +2411,7 @@ var file_attributes_attributes_proto_depIdxs = []int32{ 1, // 19: attributes.UpdateAttributeResponse.attribute:type_name -> attributes.Attribute 1, // 20: attributes.DeactivateAttributeResponse.attribute:type_name -> attributes.Attribute 3, // 21: attributes.GetAttributeValueResponse.value:type_name -> attributes.Value - 38, // 22: attributes.ListAttributeValuesRequest.state:type_name -> common.StateTypeEnum + 38, // 22: attributes.ListAttributeValuesRequest.state:type_name -> common.ActiveStateEnum 3, // 23: attributes.ListAttributeValuesResponse.values:type_name -> attributes.Value 4, // 24: attributes.CreateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate 3, // 25: attributes.CreateAttributeValueResponse.value:type_name -> attributes.Value diff --git a/sdk/common/common.pb.go b/sdk/common/common.pb.go index 5a5bddc47e..9eb15579e9 100644 --- a/sdk/common/common.pb.go +++ b/sdk/common/common.pb.go @@ -22,55 +22,55 @@ const ( ) // 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 StateTypeEnum int32 +type ActiveStateEnum int32 const ( - StateTypeEnum_STATE_TYPE_ENUM_UNSPECIFIED StateTypeEnum = 0 - StateTypeEnum_STATE_TYPE_ENUM_ACTIVE StateTypeEnum = 1 - StateTypeEnum_STATE_TYPE_ENUM_INACTIVE StateTypeEnum = 2 - StateTypeEnum_STATE_TYPE_ENUM_ANY StateTypeEnum = 3 + ActiveStateEnum_ACTIVE_STATE_ENUM_UNSPECIFIED ActiveStateEnum = 0 + ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE ActiveStateEnum = 1 + ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE ActiveStateEnum = 2 + ActiveStateEnum_ACTIVE_STATE_ENUM_ANY ActiveStateEnum = 3 ) -// Enum value maps for StateTypeEnum. +// Enum value maps for ActiveStateEnum. var ( - StateTypeEnum_name = map[int32]string{ - 0: "STATE_TYPE_ENUM_UNSPECIFIED", - 1: "STATE_TYPE_ENUM_ACTIVE", - 2: "STATE_TYPE_ENUM_INACTIVE", - 3: "STATE_TYPE_ENUM_ANY", + ActiveStateEnum_name = map[int32]string{ + 0: "ACTIVE_STATE_ENUM_UNSPECIFIED", + 1: "ACTIVE_STATE_ENUM_ACTIVE", + 2: "ACTIVE_STATE_ENUM_INACTIVE", + 3: "ACTIVE_STATE_ENUM_ANY", } - StateTypeEnum_value = map[string]int32{ - "STATE_TYPE_ENUM_UNSPECIFIED": 0, - "STATE_TYPE_ENUM_ACTIVE": 1, - "STATE_TYPE_ENUM_INACTIVE": 2, - "STATE_TYPE_ENUM_ANY": 3, + ActiveStateEnum_value = map[string]int32{ + "ACTIVE_STATE_ENUM_UNSPECIFIED": 0, + "ACTIVE_STATE_ENUM_ACTIVE": 1, + "ACTIVE_STATE_ENUM_INACTIVE": 2, + "ACTIVE_STATE_ENUM_ANY": 3, } ) -func (x StateTypeEnum) Enum() *StateTypeEnum { - p := new(StateTypeEnum) +func (x ActiveStateEnum) Enum() *ActiveStateEnum { + p := new(ActiveStateEnum) *p = x return p } -func (x StateTypeEnum) String() string { +func (x ActiveStateEnum) String() string { return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) } -func (StateTypeEnum) Descriptor() protoreflect.EnumDescriptor { +func (ActiveStateEnum) Descriptor() protoreflect.EnumDescriptor { return file_common_common_proto_enumTypes[0].Descriptor() } -func (StateTypeEnum) Type() protoreflect.EnumType { +func (ActiveStateEnum) Type() protoreflect.EnumType { return &file_common_common_proto_enumTypes[0] } -func (x StateTypeEnum) Number() protoreflect.EnumNumber { +func (x ActiveStateEnum) Number() protoreflect.EnumNumber { return protoreflect.EnumNumber(x) } -// Deprecated: Use StateTypeEnum.Descriptor instead. -func (StateTypeEnum) EnumDescriptor() ([]byte, []int) { +// Deprecated: Use ActiveStateEnum.Descriptor instead. +func (ActiveStateEnum) EnumDescriptor() ([]byte, []int) { return file_common_common_proto_rawDescGZIP(), []int{0} } @@ -242,24 +242,24 @@ var file_common_common_proto_rawDesc = []byte{ 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, 0x83, 0x01, 0x0a, 0x0d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x1f, 0x0a, 0x1b, 0x53, 0x54, 0x41, 0x54, 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, 0x1a, 0x0a, 0x16, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, - 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, - 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x45, 0x4e, 0x55, 0x4d, 0x5f, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x02, 0x12, - 0x17, 0x0a, 0x13, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x4e, - 0x55, 0x4d, 0x5f, 0x41, 0x4e, 0x59, 0x10, 0x03, 0x42, 0x7f, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, - 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, - 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 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, 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, 0x7f, 0x0a, 0x0a, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, + 0x42, 0x0b, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, + 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, + 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, + 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 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 ( @@ -277,7 +277,7 @@ func file_common_common_proto_rawDescGZIP() []byte { var file_common_common_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_common_common_proto_msgTypes = make([]protoimpl.MessageInfo, 4) var file_common_common_proto_goTypes = []interface{}{ - (StateTypeEnum)(0), // 0: common.StateTypeEnum + (ActiveStateEnum)(0), // 0: common.ActiveStateEnum (*Metadata)(nil), // 1: common.Metadata (*MetadataMutable)(nil), // 2: common.MetadataMutable nil, // 3: common.Metadata.LabelsEntry diff --git a/sdk/namespaces/namespaces.pb.go b/sdk/namespaces/namespaces.pb.go index e17e70afbd..ba3acb64a2 100644 --- a/sdk/namespaces/namespaces.pb.go +++ b/sdk/namespaces/namespaces.pb.go @@ -33,7 +33,7 @@ type Namespace struct { // used to partition Attribute Definitions, support by namespace AuthN and enable federation Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // active by default until explicitly deactivated - State common.StateTypeEnum `protobuf:"varint,3,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` + State common.ActiveStateEnum `protobuf:"varint,3,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"` } func (x *Namespace) Reset() { @@ -82,11 +82,11 @@ func (x *Namespace) GetName() string { return "" } -func (x *Namespace) GetState() common.StateTypeEnum { +func (x *Namespace) GetState() common.ActiveStateEnum { if x != nil { return x.State } - return common.StateTypeEnum(0) + return common.ActiveStateEnum(0) } type GetNamespaceRequest struct { @@ -189,7 +189,7 @@ type ListNamespacesRequest struct { unknownFields protoimpl.UnknownFields // ACTIVE by default when not specified - State common.StateTypeEnum `protobuf:"varint,1,opt,name=state,proto3,enum=common.StateTypeEnum" json:"state,omitempty"` + State common.ActiveStateEnum `protobuf:"varint,1,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"` } func (x *ListNamespacesRequest) Reset() { @@ -224,11 +224,11 @@ func (*ListNamespacesRequest) Descriptor() ([]byte, []int) { return file_namespaces_namespaces_proto_rawDescGZIP(), []int{3} } -func (x *ListNamespacesRequest) GetState() common.StateTypeEnum { +func (x *ListNamespacesRequest) GetState() common.ActiveStateEnum { if x != nil { return x.State } - return common.StateTypeEnum(0) + return common.ActiveStateEnum(0) } type ListNamespacesResponse struct { @@ -569,7 +569,7 @@ var file_namespaces_namespaces_proto_rawDesc = []byte{ 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, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc2, 0x04, 0x0a, 0x09, 0x4e, 0x61, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc4, 0x04, 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, @@ -603,102 +603,102 @@ var file_namespaces_namespaces_proto_rawDesc = []byte{ 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, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x2d, - 0x0a, 0x13, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, + 0x65, 0x12, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 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, 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, + 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x4f, 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, 0x35, + 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x15, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x22, 0x4b, 0x0a, - 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x44, 0x0a, 0x15, 0x4c, 0x69, - 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x2b, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x65, 0x54, 0x79, 0x70, 0x65, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x22, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x4e, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, + 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x8e, + 0x05, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x12, 0x76, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x77, 0x0a, 0x0e, 0x4c, + 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, + 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 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, 0x23, 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, - 0x12, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x8e, 0x05, 0x0a, 0x10, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x76, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x1f, 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, 0x20, 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, 0x77, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, + 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x12, 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x7f, 0x0a, 0x0f, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, - 0x22, 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, 0x23, 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, 0x8b, 0x01, - 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, 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, 0x27, 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, 0x9b, 0x01, 0x0a, 0x0e, - 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, - 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, - 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x4e, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0xe2, 0x02, 0x16, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x23, 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, 0x8b, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, 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, 0x27, 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, + 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, + 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, + 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x4e, 0x58, 0x58, 0xaa, 0x02, 0x0a, + 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x4e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xe2, 0x02, 0x16, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, + 0x61, 0x63, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0xea, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -726,12 +726,12 @@ var file_namespaces_namespaces_proto_goTypes = []interface{}{ (*UpdateNamespaceResponse)(nil), // 8: namespaces.UpdateNamespaceResponse (*DeactivateNamespaceRequest)(nil), // 9: namespaces.DeactivateNamespaceRequest (*DeactivateNamespaceResponse)(nil), // 10: namespaces.DeactivateNamespaceResponse - (common.StateTypeEnum)(0), // 11: common.StateTypeEnum + (common.ActiveStateEnum)(0), // 11: common.ActiveStateEnum } var file_namespaces_namespaces_proto_depIdxs = []int32{ - 11, // 0: namespaces.Namespace.state:type_name -> common.StateTypeEnum + 11, // 0: namespaces.Namespace.state:type_name -> common.ActiveStateEnum 0, // 1: namespaces.GetNamespaceResponse.namespace:type_name -> namespaces.Namespace - 11, // 2: namespaces.ListNamespacesRequest.state:type_name -> common.StateTypeEnum + 11, // 2: namespaces.ListNamespacesRequest.state:type_name -> common.ActiveStateEnum 0, // 3: namespaces.ListNamespacesResponse.namespaces:type_name -> namespaces.Namespace 0, // 4: namespaces.CreateNamespaceResponse.namespace:type_name -> namespaces.Namespace 0, // 5: namespaces.UpdateNamespaceResponse.namespace:type_name -> namespaces.Namespace diff --git a/sdkjava/com/attributes/Attribute.java b/sdkjava/com/attributes/Attribute.java index a2dca50c3c..2eeecce341 100644 --- a/sdkjava/com/attributes/Attribute.java +++ b/sdkjava/com/attributes/Attribute.java @@ -323,7 +323,7 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 9 [json_name = "state"]; + * .common.ActiveStateEnum state = 9 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -334,12 +334,12 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 9 [json_name = "state"]; + * .common.ActiveStateEnum state = 9 [json_name = "state"]; * @return The state. */ - @java.lang.Override public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + @java.lang.Override public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } private byte memoizedIsInitialized = -1; @@ -377,7 +377,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) for (int i = 0; i < grants_.size(); i++) { output.writeMessage(8, grants_.get(i)); } - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { output.writeEnum(9, state_); } getUnknownFields().writeTo(output); @@ -415,7 +415,7 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(8, grants_.get(i)); } - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream .computeEnumSize(9, state_); } @@ -1998,7 +1998,7 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 9 [json_name = "state"]; + * .common.ActiveStateEnum state = 9 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -2009,7 +2009,7 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 9 [json_name = "state"]; + * .common.ActiveStateEnum state = 9 [json_name = "state"]; * @param value The enum numeric value on the wire for state to set. * @return This builder for chaining. */ @@ -2024,24 +2024,24 @@ public Builder setStateValue(int value) { * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 9 [json_name = "state"]; + * .common.ActiveStateEnum state = 9 [json_name = "state"]; * @return The state. */ @java.lang.Override - public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } /** *
          * active by default until explicitly deactivated
          * 
    * - * .common.StateTypeEnum state = 9 [json_name = "state"]; + * .common.ActiveStateEnum state = 9 [json_name = "state"]; * @param value The state to set. * @return This builder for chaining. */ - public Builder setState(com.common.StateTypeEnum value) { + public Builder setState(com.common.ActiveStateEnum value) { if (value == null) { throw new NullPointerException(); } @@ -2055,7 +2055,7 @@ public Builder setState(com.common.StateTypeEnum value) { * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 9 [json_name = "state"]; + * .common.ActiveStateEnum state = 9 [json_name = "state"]; * @return This builder for chaining. */ public Builder clearState() { diff --git a/sdkjava/com/attributes/AttributeOrBuilder.java b/sdkjava/com/attributes/AttributeOrBuilder.java index 26b0d55796..5dc5c4c340 100644 --- a/sdkjava/com/attributes/AttributeOrBuilder.java +++ b/sdkjava/com/attributes/AttributeOrBuilder.java @@ -166,7 +166,7 @@ com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 9 [json_name = "state"]; + * .common.ActiveStateEnum state = 9 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ int getStateValue(); @@ -175,8 +175,8 @@ com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 9 [json_name = "state"]; + * .common.ActiveStateEnum state = 9 [json_name = "state"]; * @return The state. */ - com.common.StateTypeEnum getState(); + com.common.ActiveStateEnum getState(); } diff --git a/sdkjava/com/attributes/AttributesProto.java b/sdkjava/com/attributes/AttributesProto.java index dd2f77e5f9..bbdc31cff6 100644 --- a/sdkjava/com/attributes/AttributesProto.java +++ b/sdkjava/com/attributes/AttributesProto.java @@ -198,7 +198,7 @@ public static void registerAllExtensions( "s\032\033buf/validate/validate.proto\032\023common/c" + "ommon.proto\032\034google/api/annotations.prot" + "o\032,kasregistry/key_access_server_registr" + - "y.proto\032\033namespaces/namespaces.proto\"\344\002\n" + + "y.proto\032\033namespaces/namespaces.proto\"\346\002\n" + "\tAttribute\022\016\n\002id\030\001 \001(\tR\002id\022,\n\010metadata\030\002" + " \001(\0132\020.common.MetadataR\010metadata\0223\n\tname" + "space\030\003 \001(\0132\025.namespaces.NamespaceR\tname" + @@ -206,163 +206,163 @@ public static void registerAllExtensions( "!.attributes.AttributeRuleTypeEnumB\013\272H\010\202" + "\001\002\020\001\310\001\001R\004rule\022)\n\006values\030\007 \003(\0132\021.attribut" + "es.ValueR\006values\0224\n\006grants\030\010 \003(\0132\034.kasre" + - "gistry.KeyAccessServerR\006grants\022+\n\005state\030" + - "\t \001(\0162\025.common.StateTypeEnumR\005state\"\216\002\n\025" + - "AttributeCreateUpdate\0223\n\010metadata\030\001 \001(\0132" + - "\027.common.MetadataMutableR\010metadata\022)\n\014na" + - "mespace_id\030\002 \001(\tB\006\272H\003\310\001\001R\013namespaceId\022\032\n" + - "\004name\030\003 \001(\tB\006\272H\003\310\001\001R\004name\022B\n\004rule\030\004 \001(\0162" + - "!.attributes.AttributeRuleTypeEnumB\013\272H\010\202" + - "\001\002\020\001\310\001\001R\004rule\0225\n\006values\030\005 \003(\0132\035.attribut" + - "es.ValueCreateUpdateR\006values\"\203\002\n\005Value\022\016" + - "\n\002id\030\001 \001(\tR\002id\022,\n\010metadata\030\002 \001(\0132\020.commo" + - "n.MetadataR\010metadata\022)\n\014attribute_id\030\003 \001" + - "(\tB\006\272H\003\310\001\001R\013attributeId\022\024\n\005value\030\004 \001(\tR\005" + - "value\022\030\n\007members\030\005 \003(\tR\007members\0224\n\006grant" + - "s\030\006 \003(\0132\034.kasregistry.KeyAccessServerR\006g" + - "rants\022+\n\005state\030\007 \001(\0162\025.common.StateTypeE" + - "numR\005state\"x\n\021ValueCreateUpdate\0223\n\010metad" + - "ata\030\001 \001(\0132\027.common.MetadataMutableR\010meta" + - "data\022\024\n\005value\030\002 \001(\tR\005value\022\030\n\007members\030\003 " + - "\003(\tR\007members\"n\n\030AttributeKeyAccessServer" + - "\022!\n\014attribute_id\030\001 \001(\tR\013attributeId\022/\n\024k" + - "ey_access_server_id\030\002 \001(\tR\021keyAccessServ" + - "erId\"b\n\024ValueKeyAccessServer\022\031\n\010value_id" + - "\030\001 \001(\tR\007valueId\022/\n\024key_access_server_id\030" + - "\002 \001(\tR\021keyAccessServerId\"D\n\025ListAttribut" + - "esRequest\022+\n\005state\030\001 \001(\0162\025.common.StateT" + - "ypeEnumR\005state\"O\n\026ListAttributesResponse" + - "\0225\n\nattributes\030\001 \003(\0132\025.attributes.Attrib" + - "uteR\nattributes\"-\n\023GetAttributeRequest\022\026" + - "\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetAttributeRe" + - "sponse\0223\n\tattribute\030\001 \001(\0132\025.attributes.A" + - "ttributeR\tattribute\"a\n\026CreateAttributeRe" + - "quest\022G\n\tattribute\030\001 \001(\0132!.attributes.At" + - "tributeCreateUpdateB\006\272H\003\310\001\001R\tattribute\"N" + - "\n\027CreateAttributeResponse\0223\n\tattribute\030\001" + - " \001(\0132\025.attributes.AttributeR\tattribute\"y" + - "\n\026UpdateAttributeRequest\022\026\n\002id\030\001 \001(\tB\006\272H" + - "\003\310\001\001R\002id\022G\n\tattribute\030\002 \001(\0132!.attributes" + - ".AttributeCreateUpdateB\006\272H\003\310\001\001R\tattribut" + - "e\"N\n\027UpdateAttributeResponse\0223\n\tattribut" + - "e\030\001 \001(\0132\025.attributes.AttributeR\tattribut" + - "e\"4\n\032DeactivateAttributeRequest\022\026\n\002id\030\001 " + - "\001(\tB\006\272H\003\310\001\001R\002id\"R\n\033DeactivateAttributeRe" + - "sponse\0223\n\tattribute\030\001 \001(\0132\025.attributes.A" + - "ttributeR\tattribute\"2\n\030GetAttributeValue" + - "Request\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"D\n\031GetAt" + - "tributeValueResponse\022\'\n\005value\030\001 \001(\0132\021.at" + - "tributes.ValueR\005value\"t\n\032ListAttributeVa" + - "luesRequest\022)\n\014attribute_id\030\001 \001(\tB\006\272H\003\310\001" + - "\001R\013attributeId\022+\n\005state\030\002 \001(\0162\025.common.S" + - "tateTypeEnumR\005state\"H\n\033ListAttributeValu" + - "esResponse\022)\n\006values\030\001 \003(\0132\021.attributes." + - "ValueR\006values\"\205\001\n\033CreateAttributeValueRe" + - "quest\022)\n\014attribute_id\030\001 \001(\tB\006\272H\003\310\001\001R\013att" + - "ributeId\022;\n\005value\030\002 \001(\0132\035.attributes.Val" + - "ueCreateUpdateB\006\272H\003\310\001\001R\005value\"G\n\034CreateA" + - "ttributeValueResponse\022\'\n\005value\030\001 \001(\0132\021.a" + - "ttributes.ValueR\005value\"\235\001\n\033UpdateAttribu" + - "teValueRequest\022)\n\014attribute_id\030\001 \001(\tB\006\272H" + - "\003\310\001\001R\013attributeId\022\026\n\002id\030\002 \001(\tB\006\272H\003\310\001\001R\002i" + - "d\022;\n\005value\030\003 \001(\0132\035.attributes.ValueCreat" + - "eUpdateB\006\272H\003\310\001\001R\005value\"G\n\034UpdateAttribut" + - "eValueResponse\022\'\n\005value\030\001 \001(\0132\021.attribut" + - "es.ValueR\005value\"9\n\037DeactivateAttributeVa" + - "lueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n De" + - "activateAttributeValueResponse\022\'\n\005value\030" + - "\001 \001(\0132\021.attributes.ValueR\005value\"\216\001\n\'Assi" + - "gnKeyAccessServerToAttributeRequest\022c\n\033a" + - "ttribute_key_access_server\030\001 \001(\0132$.attri" + - "butes.AttributeKeyAccessServerR\030attribut" + - "eKeyAccessServer\"\217\001\n(AssignKeyAccessServ" + - "erToAttributeResponse\022c\n\033attribute_key_a" + - "ccess_server\030\001 \001(\0132$.attributes.Attribut" + - "eKeyAccessServerR\030attributeKeyAccessServ" + - "er\"\220\001\n)RemoveKeyAccessServerFromAttribut" + - "eRequest\022c\n\033attribute_key_access_server\030" + - "\001 \001(\0132$.attributes.AttributeKeyAccessSer" + - "verR\030attributeKeyAccessServer\"\221\001\n*Remove" + - "KeyAccessServerFromAttributeResponse\022c\n\033" + - "attribute_key_access_server\030\001 \001(\0132$.attr" + - "ibutes.AttributeKeyAccessServerR\030attribu" + - "teKeyAccessServer\"~\n#AssignKeyAccessServ" + - "erToValueRequest\022W\n\027value_key_access_ser" + + "gistry.KeyAccessServerR\006grants\022-\n\005state\030" + + "\t \001(\0162\027.common.ActiveStateEnumR\005state\"\216\002" + + "\n\025AttributeCreateUpdate\0223\n\010metadata\030\001 \001(" + + "\0132\027.common.MetadataMutableR\010metadata\022)\n\014" + + "namespace_id\030\002 \001(\tB\006\272H\003\310\001\001R\013namespaceId\022" + + "\032\n\004name\030\003 \001(\tB\006\272H\003\310\001\001R\004name\022B\n\004rule\030\004 \001(" + + "\0162!.attributes.AttributeRuleTypeEnumB\013\272H" + + "\010\202\001\002\020\001\310\001\001R\004rule\0225\n\006values\030\005 \003(\0132\035.attrib" + + "utes.ValueCreateUpdateR\006values\"\205\002\n\005Value" + + "\022\016\n\002id\030\001 \001(\tR\002id\022,\n\010metadata\030\002 \001(\0132\020.com" + + "mon.MetadataR\010metadata\022)\n\014attribute_id\030\003" + + " \001(\tB\006\272H\003\310\001\001R\013attributeId\022\024\n\005value\030\004 \001(\t" + + "R\005value\022\030\n\007members\030\005 \003(\tR\007members\0224\n\006gra" + + "nts\030\006 \003(\0132\034.kasregistry.KeyAccessServerR" + + "\006grants\022-\n\005state\030\007 \001(\0162\027.common.ActiveSt" + + "ateEnumR\005state\"x\n\021ValueCreateUpdate\0223\n\010m" + + "etadata\030\001 \001(\0132\027.common.MetadataMutableR\010" + + "metadata\022\024\n\005value\030\002 \001(\tR\005value\022\030\n\007member" + + "s\030\003 \003(\tR\007members\"n\n\030AttributeKeyAccessSe" + + "rver\022!\n\014attribute_id\030\001 \001(\tR\013attributeId\022" + + "/\n\024key_access_server_id\030\002 \001(\tR\021keyAccess" + + "ServerId\"b\n\024ValueKeyAccessServer\022\031\n\010valu" + + "e_id\030\001 \001(\tR\007valueId\022/\n\024key_access_server" + + "_id\030\002 \001(\tR\021keyAccessServerId\"F\n\025ListAttr" + + "ibutesRequest\022-\n\005state\030\001 \001(\0162\027.common.Ac" + + "tiveStateEnumR\005state\"O\n\026ListAttributesRe" + + "sponse\0225\n\nattributes\030\001 \003(\0132\025.attributes." + + "AttributeR\nattributes\"-\n\023GetAttributeReq" + + "uest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetAttri" + + "buteResponse\0223\n\tattribute\030\001 \001(\0132\025.attrib" + + "utes.AttributeR\tattribute\"a\n\026CreateAttri" + + "buteRequest\022G\n\tattribute\030\001 \001(\0132!.attribu" + + "tes.AttributeCreateUpdateB\006\272H\003\310\001\001R\tattri" + + "bute\"N\n\027CreateAttributeResponse\0223\n\tattri" + + "bute\030\001 \001(\0132\025.attributes.AttributeR\tattri" + + "bute\"y\n\026UpdateAttributeRequest\022\026\n\002id\030\001 \001" + + "(\tB\006\272H\003\310\001\001R\002id\022G\n\tattribute\030\002 \001(\0132!.attr" + + "ibutes.AttributeCreateUpdateB\006\272H\003\310\001\001R\tat" + + "tribute\"N\n\027UpdateAttributeResponse\0223\n\tat" + + "tribute\030\001 \001(\0132\025.attributes.AttributeR\tat" + + "tribute\"4\n\032DeactivateAttributeRequest\022\026\n" + + "\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"R\n\033DeactivateAttri" + + "buteResponse\0223\n\tattribute\030\001 \001(\0132\025.attrib" + + "utes.AttributeR\tattribute\"2\n\030GetAttribut" + + "eValueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"D\n" + + "\031GetAttributeValueResponse\022\'\n\005value\030\001 \001(" + + "\0132\021.attributes.ValueR\005value\"v\n\032ListAttri" + + "buteValuesRequest\022)\n\014attribute_id\030\001 \001(\tB" + + "\006\272H\003\310\001\001R\013attributeId\022-\n\005state\030\002 \001(\0162\027.co" + + "mmon.ActiveStateEnumR\005state\"H\n\033ListAttri" + + "buteValuesResponse\022)\n\006values\030\001 \003(\0132\021.att" + + "ributes.ValueR\006values\"\205\001\n\033CreateAttribut" + + "eValueRequest\022)\n\014attribute_id\030\001 \001(\tB\006\272H\003" + + "\310\001\001R\013attributeId\022;\n\005value\030\002 \001(\0132\035.attrib" + + "utes.ValueCreateUpdateB\006\272H\003\310\001\001R\005value\"G\n" + + "\034CreateAttributeValueResponse\022\'\n\005value\030\001" + + " \001(\0132\021.attributes.ValueR\005value\"\235\001\n\033Updat" + + "eAttributeValueRequest\022)\n\014attribute_id\030\001" + + " \001(\tB\006\272H\003\310\001\001R\013attributeId\022\026\n\002id\030\002 \001(\tB\006\272" + + "H\003\310\001\001R\002id\022;\n\005value\030\003 \001(\0132\035.attributes.Va" + + "lueCreateUpdateB\006\272H\003\310\001\001R\005value\"G\n\034Update" + + "AttributeValueResponse\022\'\n\005value\030\001 \001(\0132\021." + + "attributes.ValueR\005value\"9\n\037DeactivateAtt" + + "ributeValueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002" + + "id\"K\n DeactivateAttributeValueResponse\022\'" + + "\n\005value\030\001 \001(\0132\021.attributes.ValueR\005value\"" + + "\216\001\n\'AssignKeyAccessServerToAttributeRequ" + + "est\022c\n\033attribute_key_access_server\030\001 \001(\013" + + "2$.attributes.AttributeKeyAccessServerR\030" + + "attributeKeyAccessServer\"\217\001\n(AssignKeyAc" + + "cessServerToAttributeResponse\022c\n\033attribu" + + "te_key_access_server\030\001 \001(\0132$.attributes." + + "AttributeKeyAccessServerR\030attributeKeyAc" + + "cessServer\"\220\001\n)RemoveKeyAccessServerFrom" + + "AttributeRequest\022c\n\033attribute_key_access" + + "_server\030\001 \001(\0132$.attributes.AttributeKeyA" + + "ccessServerR\030attributeKeyAccessServer\"\221\001" + + "\n*RemoveKeyAccessServerFromAttributeResp" + + "onse\022c\n\033attribute_key_access_server\030\001 \001(" + + "\0132$.attributes.AttributeKeyAccessServerR" + + "\030attributeKeyAccessServer\"~\n#AssignKeyAc" + + "cessServerToValueRequest\022W\n\027value_key_ac" + + "cess_server\030\001 \001(\0132 .attributes.ValueKeyA" + + "ccessServerR\024valueKeyAccessServer\"\177\n$Ass" + + "ignKeyAccessServerToValueResponse\022W\n\027val" + + "ue_key_access_server\030\001 \001(\0132 .attributes." + + "ValueKeyAccessServerR\024valueKeyAccessServ" + + "er\"\200\001\n%RemoveKeyAccessServerFromValueReq" + + "uest\022W\n\027value_key_access_server\030\001 \001(\0132 ." + + "attributes.ValueKeyAccessServerR\024valueKe" + + "yAccessServer\"\201\001\n&RemoveKeyAccessServerF" + + "romValueResponse\022W\n\027value_key_access_ser" + "ver\030\001 \001(\0132 .attributes.ValueKeyAccessSer" + - "verR\024valueKeyAccessServer\"\177\n$AssignKeyAc" + - "cessServerToValueResponse\022W\n\027value_key_a" + - "ccess_server\030\001 \001(\0132 .attributes.ValueKey" + - "AccessServerR\024valueKeyAccessServer\"\200\001\n%R" + - "emoveKeyAccessServerFromValueRequest\022W\n\027" + - "value_key_access_server\030\001 \001(\0132 .attribut" + - "es.ValueKeyAccessServerR\024valueKeyAccessS" + - "erver\"\201\001\n&RemoveKeyAccessServerFromValue" + - "Response\022W\n\027value_key_access_server\030\001 \001(" + - "\0132 .attributes.ValueKeyAccessServerR\024val" + - "ueKeyAccessServer*\263\001\n\025AttributeRuleTypeE" + - "num\022(\n$ATTRIBUTE_RULE_TYPE_ENUM_UNSPECIF" + - "IED\020\000\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF" + - "\020\001\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF\020\002\022" + - "&\n\"ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY\020\0032" + - "\205\021\n\021AttributesService\022Y\n\016ListAttributes\022" + - "!.attributes.ListAttributesRequest\032\".att" + - "ributes.ListAttributesResponse\"\000\022h\n\023List" + - "AttributeValues\022&.attributes.ListAttribu" + - "teValuesRequest\032\'.attributes.ListAttribu" + - "teValuesResponse\"\000\022k\n\014GetAttribute\022\037.att" + - "ributes.GetAttributeRequest\032 .attributes" + - ".GetAttributeResponse\"\030\202\323\344\223\002\022\022\020/attribut" + - "es/{id}\022z\n\017CreateAttribute\022\".attributes." + - "CreateAttributeRequest\032#.attributes.Crea" + - "teAttributeResponse\"\036\202\323\344\223\002\030\"\013/attributes" + - ":\tattribute\022\177\n\017UpdateAttribute\022\".attribu" + - "tes.UpdateAttributeRequest\032#.attributes." + - "UpdateAttributeResponse\"#\202\323\344\223\002\035\"\020/attrib" + - "utes/{id}:\tattribute\022\200\001\n\023DeactivateAttri" + - "bute\022&.attributes.DeactivateAttributeReq" + - "uest\032\'.attributes.DeactivateAttributeRes" + - "ponse\"\030\202\323\344\223\002\022*\020/attributes/{id}\022\203\001\n\021GetA" + - "ttributeValue\022$.attributes.GetAttributeV" + - "alueRequest\032%.attributes.GetAttributeVal" + - "ueResponse\"!\202\323\344\223\002\033\022\031/attributes/_/values" + - "/{id}\022\233\001\n\024CreateAttributeValue\022\'.attribu" + - "tes.CreateAttributeValueRequest\032(.attrib" + - "utes.CreateAttributeValueResponse\"0\202\323\344\223\002" + - "*\"!/attributes/{attribute_id}/values:\005va" + - "lue\022\240\001\n\024UpdateAttributeValue\022\'.attribute" + - "s.UpdateAttributeValueRequest\032(.attribut" + - "es.UpdateAttributeValueResponse\"5\202\323\344\223\002/\"" + - "&/attributes/{attribute_id}/values/{id}:" + - "\005value\022\230\001\n\030DeactivateAttributeValue\022+.at" + - "tributes.DeactivateAttributeValueRequest" + - "\032,.attributes.DeactivateAttributeValueRe" + - "sponse\"!\202\323\344\223\002\033*\031/attributes/_/values/{id" + - "}\022\326\001\n AssignKeyAccessServerToAttribute\0223" + - ".attributes.AssignKeyAccessServerToAttri" + - "buteRequest\0324.attributes.AssignKeyAccess" + - "ServerToAttributeResponse\"G\202\323\344\223\002A\"\"/attr" + - "ibutes/keyaccessserver/assign:\033attribute" + - "_key_access_server\022\334\001\n\"RemoveKeyAccessSe" + - "rverFromAttribute\0225.attributes.RemoveKey" + - "AccessServerFromAttributeRequest\0326.attri" + - "butes.RemoveKeyAccessServerFromAttribute" + - "Response\"G\202\323\344\223\002A\"\"/attributes/keyaccesss" + - "erver/remove:\033attribute_key_access_serve" + - "r\022\315\001\n\034AssignKeyAccessServerToValue\022/.att" + - "ributes.AssignKeyAccessServerToValueRequ" + - "est\0320.attributes.AssignKeyAccessServerTo" + - "ValueResponse\"J\202\323\344\223\002D\")/attributes/value" + - "s/keyaccessserver/assign:\027value_key_acce" + - "ss_server\022\323\001\n\036RemoveKeyAccessServerFromV" + - "alue\0221.attributes.RemoveKeyAccessServerF" + - "romValueRequest\0322.attributes.RemoveKeyAc" + - "cessServerFromValueResponse\"J\202\323\344\223\002D\")/at" + - "tributes/values/keyaccessserver/remove:\027" + - "value_key_access_serverB\233\001\n\016com.attribut" + - "esB\017AttributesProtoP\001Z0github.com/opentd" + - "f/opentdf-v2-poc/sdk/attributes\242\002\003AXX\252\002\n" + - "Attributes\312\002\nAttributes\342\002\026Attributes\\GPB" + - "Metadata\352\002\nAttributesb\006proto3" + "verR\024valueKeyAccessServer*\263\001\n\025AttributeR" + + "uleTypeEnum\022(\n$ATTRIBUTE_RULE_TYPE_ENUM_" + + "UNSPECIFIED\020\000\022#\n\037ATTRIBUTE_RULE_TYPE_ENU" + + "M_ALL_OF\020\001\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_A" + + "NY_OF\020\002\022&\n\"ATTRIBUTE_RULE_TYPE_ENUM_HIER" + + "ARCHY\020\0032\205\021\n\021AttributesService\022Y\n\016ListAtt" + + "ributes\022!.attributes.ListAttributesReque" + + "st\032\".attributes.ListAttributesResponse\"\000" + + "\022h\n\023ListAttributeValues\022&.attributes.Lis" + + "tAttributeValuesRequest\032\'.attributes.Lis" + + "tAttributeValuesResponse\"\000\022k\n\014GetAttribu" + + "te\022\037.attributes.GetAttributeRequest\032 .at" + + "tributes.GetAttributeResponse\"\030\202\323\344\223\002\022\022\020/" + + "attributes/{id}\022z\n\017CreateAttribute\022\".att" + + "ributes.CreateAttributeRequest\032#.attribu" + + "tes.CreateAttributeResponse\"\036\202\323\344\223\002\030\"\013/at" + + "tributes:\tattribute\022\177\n\017UpdateAttribute\022\"" + + ".attributes.UpdateAttributeRequest\032#.att" + + "ributes.UpdateAttributeResponse\"#\202\323\344\223\002\035\"" + + "\020/attributes/{id}:\tattribute\022\200\001\n\023Deactiv" + + "ateAttribute\022&.attributes.DeactivateAttr" + + "ibuteRequest\032\'.attributes.DeactivateAttr" + + "ibuteResponse\"\030\202\323\344\223\002\022*\020/attributes/{id}\022" + + "\203\001\n\021GetAttributeValue\022$.attributes.GetAt" + + "tributeValueRequest\032%.attributes.GetAttr" + + "ibuteValueResponse\"!\202\323\344\223\002\033\022\031/attributes/" + + "_/values/{id}\022\233\001\n\024CreateAttributeValue\022\'" + + ".attributes.CreateAttributeValueRequest\032" + + "(.attributes.CreateAttributeValueRespons" + + "e\"0\202\323\344\223\002*\"!/attributes/{attribute_id}/va" + + "lues:\005value\022\240\001\n\024UpdateAttributeValue\022\'.a" + + "ttributes.UpdateAttributeValueRequest\032(." + + "attributes.UpdateAttributeValueResponse\"" + + "5\202\323\344\223\002/\"&/attributes/{attribute_id}/valu" + + "es/{id}:\005value\022\230\001\n\030DeactivateAttributeVa" + + "lue\022+.attributes.DeactivateAttributeValu" + + "eRequest\032,.attributes.DeactivateAttribut" + + "eValueResponse\"!\202\323\344\223\002\033*\031/attributes/_/va" + + "lues/{id}\022\326\001\n AssignKeyAccessServerToAtt" + + "ribute\0223.attributes.AssignKeyAccessServe" + + "rToAttributeRequest\0324.attributes.AssignK" + + "eyAccessServerToAttributeResponse\"G\202\323\344\223\002" + + "A\"\"/attributes/keyaccessserver/assign:\033a" + + "ttribute_key_access_server\022\334\001\n\"RemoveKey" + + "AccessServerFromAttribute\0225.attributes.R" + + "emoveKeyAccessServerFromAttributeRequest" + + "\0326.attributes.RemoveKeyAccessServerFromA" + + "ttributeResponse\"G\202\323\344\223\002A\"\"/attributes/ke" + + "yaccessserver/remove:\033attribute_key_acce" + + "ss_server\022\315\001\n\034AssignKeyAccessServerToVal" + + "ue\022/.attributes.AssignKeyAccessServerToV" + + "alueRequest\0320.attributes.AssignKeyAccess" + + "ServerToValueResponse\"J\202\323\344\223\002D\")/attribut" + + "es/values/keyaccessserver/assign:\027value_" + + "key_access_server\022\323\001\n\036RemoveKeyAccessSer" + + "verFromValue\0221.attributes.RemoveKeyAcces" + + "sServerFromValueRequest\0322.attributes.Rem" + + "oveKeyAccessServerFromValueResponse\"J\202\323\344" + + "\223\002D\")/attributes/values/keyaccessserver/" + + "remove:\027value_key_access_serverB\233\001\n\016com." + + "attributesB\017AttributesProtoP\001Z0github.co" + + "m/opentdf/opentdf-v2-poc/sdk/attributes\242" + + "\002\003AXX\252\002\nAttributes\312\002\nAttributes\342\002\026Attrib" + + "utes\\GPBMetadata\352\002\nAttributesb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, diff --git a/sdkjava/com/attributes/ListAttributeValuesRequest.java b/sdkjava/com/attributes/ListAttributeValuesRequest.java index 5ecc2e2741..a59ae9ad8c 100644 --- a/sdkjava/com/attributes/ListAttributeValuesRequest.java +++ b/sdkjava/com/attributes/ListAttributeValuesRequest.java @@ -87,7 +87,7 @@ public java.lang.String getAttributeId() { * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 2 [json_name = "state"]; + * .common.ActiveStateEnum state = 2 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -98,12 +98,12 @@ public java.lang.String getAttributeId() { * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 2 [json_name = "state"]; + * .common.ActiveStateEnum state = 2 [json_name = "state"]; * @return The state. */ - @java.lang.Override public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + @java.lang.Override public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } private byte memoizedIsInitialized = -1; @@ -123,7 +123,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attributeId_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 1, attributeId_); } - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { output.writeEnum(2, state_); } getUnknownFields().writeTo(output); @@ -138,7 +138,7 @@ public int getSerializedSize() { if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(attributeId_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, attributeId_); } - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream .computeEnumSize(2, state_); } @@ -532,7 +532,7 @@ public Builder setAttributeIdBytes( * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 2 [json_name = "state"]; + * .common.ActiveStateEnum state = 2 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -543,7 +543,7 @@ public Builder setAttributeIdBytes( * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 2 [json_name = "state"]; + * .common.ActiveStateEnum state = 2 [json_name = "state"]; * @param value The enum numeric value on the wire for state to set. * @return This builder for chaining. */ @@ -558,24 +558,24 @@ public Builder setStateValue(int value) { * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 2 [json_name = "state"]; + * .common.ActiveStateEnum state = 2 [json_name = "state"]; * @return The state. */ @java.lang.Override - public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } /** *
          * ACTIVE by default when not specified
          * 
    * - * .common.StateTypeEnum state = 2 [json_name = "state"]; + * .common.ActiveStateEnum state = 2 [json_name = "state"]; * @param value The state to set. * @return This builder for chaining. */ - public Builder setState(com.common.StateTypeEnum value) { + public Builder setState(com.common.ActiveStateEnum value) { if (value == null) { throw new NullPointerException(); } @@ -589,7 +589,7 @@ public Builder setState(com.common.StateTypeEnum value) { * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 2 [json_name = "state"]; + * .common.ActiveStateEnum state = 2 [json_name = "state"]; * @return This builder for chaining. */ public Builder clearState() { diff --git a/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java b/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java index bc15e31e8d..fa6d46763f 100644 --- a/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java +++ b/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java @@ -25,7 +25,7 @@ public interface ListAttributeValuesRequestOrBuilder extends * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 2 [json_name = "state"]; + * .common.ActiveStateEnum state = 2 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ int getStateValue(); @@ -34,8 +34,8 @@ public interface ListAttributeValuesRequestOrBuilder extends * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 2 [json_name = "state"]; + * .common.ActiveStateEnum state = 2 [json_name = "state"]; * @return The state. */ - com.common.StateTypeEnum getState(); + com.common.ActiveStateEnum getState(); } diff --git a/sdkjava/com/attributes/ListAttributesRequest.java b/sdkjava/com/attributes/ListAttributesRequest.java index 89b10b4502..ce98146a23 100644 --- a/sdkjava/com/attributes/ListAttributesRequest.java +++ b/sdkjava/com/attributes/ListAttributesRequest.java @@ -47,7 +47,7 @@ protected java.lang.Object newInstance( * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -58,12 +58,12 @@ protected java.lang.Object newInstance( * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The state. */ - @java.lang.Override public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + @java.lang.Override public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } private byte memoizedIsInitialized = -1; @@ -80,7 +80,7 @@ public final boolean isInitialized() { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { output.writeEnum(1, state_); } getUnknownFields().writeTo(output); @@ -92,7 +92,7 @@ public int getSerializedSize() { if (size != -1) return size; size = 0; - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream .computeEnumSize(1, state_); } @@ -396,7 +396,7 @@ public Builder mergeFrom( * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -407,7 +407,7 @@ public Builder mergeFrom( * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @param value The enum numeric value on the wire for state to set. * @return This builder for chaining. */ @@ -422,24 +422,24 @@ public Builder setStateValue(int value) { * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The state. */ @java.lang.Override - public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } /** *
          * ACTIVE by default when not specified
          * 
    * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @param value The state to set. * @return This builder for chaining. */ - public Builder setState(com.common.StateTypeEnum value) { + public Builder setState(com.common.ActiveStateEnum value) { if (value == null) { throw new NullPointerException(); } @@ -453,7 +453,7 @@ public Builder setState(com.common.StateTypeEnum value) { * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return This builder for chaining. */ public Builder clearState() { diff --git a/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java b/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java index 4c3ea33b91..663317bfe4 100644 --- a/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java +++ b/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java @@ -13,7 +13,7 @@ public interface ListAttributesRequestOrBuilder extends * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ int getStateValue(); @@ -22,8 +22,8 @@ public interface ListAttributesRequestOrBuilder extends * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The state. */ - com.common.StateTypeEnum getState(); + com.common.ActiveStateEnum getState(); } diff --git a/sdkjava/com/attributes/Value.java b/sdkjava/com/attributes/Value.java index 49ad04f672..806904707e 100644 --- a/sdkjava/com/attributes/Value.java +++ b/sdkjava/com/attributes/Value.java @@ -319,7 +319,7 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 7 [json_name = "state"]; + * .common.ActiveStateEnum state = 7 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -330,12 +330,12 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 7 [json_name = "state"]; + * .common.ActiveStateEnum state = 7 [json_name = "state"]; * @return The state. */ - @java.lang.Override public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + @java.lang.Override public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } private byte memoizedIsInitialized = -1; @@ -370,7 +370,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) for (int i = 0; i < grants_.size(); i++) { output.writeMessage(6, grants_.get(i)); } - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { output.writeEnum(7, state_); } getUnknownFields().writeTo(output); @@ -407,7 +407,7 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(6, grants_.get(i)); } - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream .computeEnumSize(7, state_); } @@ -1713,7 +1713,7 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 7 [json_name = "state"]; + * .common.ActiveStateEnum state = 7 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -1724,7 +1724,7 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 7 [json_name = "state"]; + * .common.ActiveStateEnum state = 7 [json_name = "state"]; * @param value The enum numeric value on the wire for state to set. * @return This builder for chaining. */ @@ -1739,24 +1739,24 @@ public Builder setStateValue(int value) { * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 7 [json_name = "state"]; + * .common.ActiveStateEnum state = 7 [json_name = "state"]; * @return The state. */ @java.lang.Override - public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } /** *
          * active by default until explicitly deactivated
          * 
    * - * .common.StateTypeEnum state = 7 [json_name = "state"]; + * .common.ActiveStateEnum state = 7 [json_name = "state"]; * @param value The state to set. * @return This builder for chaining. */ - public Builder setState(com.common.StateTypeEnum value) { + public Builder setState(com.common.ActiveStateEnum value) { if (value == null) { throw new NullPointerException(); } @@ -1770,7 +1770,7 @@ public Builder setState(com.common.StateTypeEnum value) { * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 7 [json_name = "state"]; + * .common.ActiveStateEnum state = 7 [json_name = "state"]; * @return This builder for chaining. */ public Builder clearState() { diff --git a/sdkjava/com/attributes/ValueOrBuilder.java b/sdkjava/com/attributes/ValueOrBuilder.java index 1856626903..29635843ad 100644 --- a/sdkjava/com/attributes/ValueOrBuilder.java +++ b/sdkjava/com/attributes/ValueOrBuilder.java @@ -157,7 +157,7 @@ com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 7 [json_name = "state"]; + * .common.ActiveStateEnum state = 7 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ int getStateValue(); @@ -166,8 +166,8 @@ com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 7 [json_name = "state"]; + * .common.ActiveStateEnum state = 7 [json_name = "state"]; * @return The state. */ - com.common.StateTypeEnum getState(); + com.common.ActiveStateEnum getState(); } diff --git a/sdkjava/com/common/ActiveStateEnum.java b/sdkjava/com/common/ActiveStateEnum.java new file mode 100644 index 0000000000..45f679bb60 --- /dev/null +++ b/sdkjava/com/common/ActiveStateEnum.java @@ -0,0 +1,136 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: common/common.proto + +// Protobuf Java Version: 3.25.2 +package com.common; + +/** + *
    + * 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
    + * 
    + * + * Protobuf enum {@code common.ActiveStateEnum} + */ +public enum ActiveStateEnum + implements com.google.protobuf.ProtocolMessageEnum { + /** + * ACTIVE_STATE_ENUM_UNSPECIFIED = 0; + */ + ACTIVE_STATE_ENUM_UNSPECIFIED(0), + /** + * ACTIVE_STATE_ENUM_ACTIVE = 1; + */ + ACTIVE_STATE_ENUM_ACTIVE(1), + /** + * ACTIVE_STATE_ENUM_INACTIVE = 2; + */ + ACTIVE_STATE_ENUM_INACTIVE(2), + /** + * ACTIVE_STATE_ENUM_ANY = 3; + */ + ACTIVE_STATE_ENUM_ANY(3), + UNRECOGNIZED(-1), + ; + + /** + * ACTIVE_STATE_ENUM_UNSPECIFIED = 0; + */ + public static final int ACTIVE_STATE_ENUM_UNSPECIFIED_VALUE = 0; + /** + * ACTIVE_STATE_ENUM_ACTIVE = 1; + */ + public static final int ACTIVE_STATE_ENUM_ACTIVE_VALUE = 1; + /** + * ACTIVE_STATE_ENUM_INACTIVE = 2; + */ + public static final int ACTIVE_STATE_ENUM_INACTIVE_VALUE = 2; + /** + * ACTIVE_STATE_ENUM_ANY = 3; + */ + public static final int ACTIVE_STATE_ENUM_ANY_VALUE = 3; + + + public final int getNumber() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalArgumentException( + "Can't get the number of an unknown enum value."); + } + return value; + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + * @deprecated Use {@link #forNumber(int)} instead. + */ + @java.lang.Deprecated + public static ActiveStateEnum valueOf(int value) { + return forNumber(value); + } + + /** + * @param value The numeric wire value of the corresponding enum entry. + * @return The enum associated with the given numeric wire value. + */ + public static ActiveStateEnum forNumber(int value) { + switch (value) { + case 0: return ACTIVE_STATE_ENUM_UNSPECIFIED; + case 1: return ACTIVE_STATE_ENUM_ACTIVE; + case 2: return ACTIVE_STATE_ENUM_INACTIVE; + case 3: return ACTIVE_STATE_ENUM_ANY; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + ActiveStateEnum> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ActiveStateEnum findValueByNumber(int number) { + return ActiveStateEnum.forNumber(number); + } + }; + + public final com.google.protobuf.Descriptors.EnumValueDescriptor + getValueDescriptor() { + if (this == UNRECOGNIZED) { + throw new java.lang.IllegalStateException( + "Can't get the descriptor of an unrecognized enum value."); + } + return getDescriptor().getValues().get(ordinal()); + } + public final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptorForType() { + return getDescriptor(); + } + public static final com.google.protobuf.Descriptors.EnumDescriptor + getDescriptor() { + return com.common.CommonProto.getDescriptor().getEnumTypes().get(0); + } + + private static final ActiveStateEnum[] VALUES = values(); + + public static ActiveStateEnum valueOf( + com.google.protobuf.Descriptors.EnumValueDescriptor desc) { + if (desc.getType() != getDescriptor()) { + throw new java.lang.IllegalArgumentException( + "EnumValueDescriptor is not for this type."); + } + if (desc.getIndex() == -1) { + return UNRECOGNIZED; + } + return VALUES[desc.getIndex()]; + } + + private final int value; + + private ActiveStateEnum(int value) { + this.value = value; + } + + // @@protoc_insertion_point(enum_scope:common.ActiveStateEnum) +} + diff --git a/sdkjava/com/common/CommonProto.java b/sdkjava/com/common/CommonProto.java index 2153047a70..2c8b0e4582 100644 --- a/sdkjava/com/common/CommonProto.java +++ b/sdkjava/com/common/CommonProto.java @@ -56,14 +56,14 @@ public static void registerAllExtensions( "\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*\203\001\n\rS" + - "tateTypeEnum\022\037\n\033STATE_TYPE_ENUM_UNSPECIF" + - "IED\020\000\022\032\n\026STATE_TYPE_ENUM_ACTIVE\020\001\022\034\n\030STA" + - "TE_TYPE_ENUM_INACTIVE\020\002\022\027\n\023STATE_TYPE_EN" + - "UM_ANY\020\003B\177\n\ncom.commonB\013CommonProtoP\001Z,g" + - "ithub.com/opentdf/opentdf-v2-poc/sdk/com" + - "mon\242\002\003CXX\252\002\006Common\312\002\006Common\342\002\022Common\\GPB" + - "Metadata\352\002\006Commonb\006proto3" + "\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\177\n\ncom.commonB\013Common" + + "ProtoP\001Z,github.com/opentdf/opentdf-v2-p" + + "oc/sdk/common\242\002\003CXX\252\002\006Common\312\002\006Common\342\002\022" + + "Common\\GPBMetadata\352\002\006Commonb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, diff --git a/sdkjava/com/common/StateTypeEnum.java b/sdkjava/com/common/StateTypeEnum.java index ad6399380c..2aed4306cc 100644 --- a/sdkjava/com/common/StateTypeEnum.java +++ b/sdkjava/com/common/StateTypeEnum.java @@ -9,9 +9,9 @@ * 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 * * - * Protobuf enum {@code common.StateTypeEnum} + * Protobuf enum {@code common.ActiveStateEnum} */ -public enum StateTypeEnum +public enum ActiveStateEnum implements com.google.protobuf.ProtocolMessageEnum { /** * STATE_TYPE_ENUM_UNSPECIFIED = 0; @@ -64,7 +64,7 @@ public final int getNumber() { * @deprecated Use {@link #forNumber(int)} instead. */ @java.lang.Deprecated - public static StateTypeEnum valueOf(int value) { + public static ActiveStateEnum valueOf(int value) { return forNumber(value); } @@ -72,7 +72,7 @@ public static StateTypeEnum valueOf(int value) { * @param value The numeric wire value of the corresponding enum entry. * @return The enum associated with the given numeric wire value. */ - public static StateTypeEnum forNumber(int value) { + public static ActiveStateEnum forNumber(int value) { switch (value) { case 0: return STATE_TYPE_ENUM_UNSPECIFIED; case 1: return STATE_TYPE_ENUM_ACTIVE; @@ -82,15 +82,15 @@ public static StateTypeEnum forNumber(int value) { } } - public static com.google.protobuf.Internal.EnumLiteMap + public static com.google.protobuf.Internal.EnumLiteMap internalGetValueMap() { return internalValueMap; } private static final com.google.protobuf.Internal.EnumLiteMap< - StateTypeEnum> internalValueMap = - new com.google.protobuf.Internal.EnumLiteMap() { - public StateTypeEnum findValueByNumber(int number) { - return StateTypeEnum.forNumber(number); + ActiveStateEnum> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + public ActiveStateEnum findValueByNumber(int number) { + return ActiveStateEnum.forNumber(number); } }; @@ -111,9 +111,9 @@ public StateTypeEnum findValueByNumber(int number) { return com.common.CommonProto.getDescriptor().getEnumTypes().get(0); } - private static final StateTypeEnum[] VALUES = values(); + private static final ActiveStateEnum[] VALUES = values(); - public static StateTypeEnum valueOf( + public static ActiveStateEnum valueOf( com.google.protobuf.Descriptors.EnumValueDescriptor desc) { if (desc.getType() != getDescriptor()) { throw new java.lang.IllegalArgumentException( @@ -127,10 +127,10 @@ public static StateTypeEnum valueOf( private final int value; - private StateTypeEnum(int value) { + private ActiveStateEnum(int value) { this.value = value; } - // @@protoc_insertion_point(enum_scope:common.StateTypeEnum) + // @@protoc_insertion_point(enum_scope:common.ActiveStateEnum) } diff --git a/sdkjava/com/namespaces/ListNamespacesRequest.java b/sdkjava/com/namespaces/ListNamespacesRequest.java index 70207d193d..b919a3b905 100644 --- a/sdkjava/com/namespaces/ListNamespacesRequest.java +++ b/sdkjava/com/namespaces/ListNamespacesRequest.java @@ -47,7 +47,7 @@ protected java.lang.Object newInstance( * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -58,12 +58,12 @@ protected java.lang.Object newInstance( * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The state. */ - @java.lang.Override public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + @java.lang.Override public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } private byte memoizedIsInitialized = -1; @@ -80,7 +80,7 @@ public final boolean isInitialized() { @java.lang.Override public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException { - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { output.writeEnum(1, state_); } getUnknownFields().writeTo(output); @@ -92,7 +92,7 @@ public int getSerializedSize() { if (size != -1) return size; size = 0; - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream .computeEnumSize(1, state_); } @@ -396,7 +396,7 @@ public Builder mergeFrom( * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -407,7 +407,7 @@ public Builder mergeFrom( * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @param value The enum numeric value on the wire for state to set. * @return This builder for chaining. */ @@ -422,24 +422,24 @@ public Builder setStateValue(int value) { * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The state. */ @java.lang.Override - public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } /** *
          * ACTIVE by default when not specified
          * 
    * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @param value The state to set. * @return This builder for chaining. */ - public Builder setState(com.common.StateTypeEnum value) { + public Builder setState(com.common.ActiveStateEnum value) { if (value == null) { throw new NullPointerException(); } @@ -453,7 +453,7 @@ public Builder setState(com.common.StateTypeEnum value) { * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return This builder for chaining. */ public Builder clearState() { diff --git a/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java b/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java index 6c956593f0..4917130992 100644 --- a/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java +++ b/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java @@ -13,7 +13,7 @@ public interface ListNamespacesRequestOrBuilder extends * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ int getStateValue(); @@ -22,8 +22,8 @@ public interface ListNamespacesRequestOrBuilder extends * ACTIVE by default when not specified * * - * .common.StateTypeEnum state = 1 [json_name = "state"]; + * .common.ActiveStateEnum state = 1 [json_name = "state"]; * @return The state. */ - com.common.StateTypeEnum getState(); + com.common.ActiveStateEnum getState(); } diff --git a/sdkjava/com/namespaces/Namespace.java b/sdkjava/com/namespaces/Namespace.java index c19d315836..4a472a1139 100644 --- a/sdkjava/com/namespaces/Namespace.java +++ b/sdkjava/com/namespaces/Namespace.java @@ -143,7 +143,7 @@ public java.lang.String getName() { * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 3 [json_name = "state"]; + * .common.ActiveStateEnum state = 3 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -154,12 +154,12 @@ public java.lang.String getName() { * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 3 [json_name = "state"]; + * .common.ActiveStateEnum state = 3 [json_name = "state"]; * @return The state. */ - @java.lang.Override public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + @java.lang.Override public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } private byte memoizedIsInitialized = -1; @@ -182,7 +182,7 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { output.writeEnum(3, state_); } getUnknownFields().writeTo(output); @@ -200,7 +200,7 @@ public int getSerializedSize() { if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } - if (state_ != com.common.StateTypeEnum.STATE_TYPE_ENUM_UNSPECIFIED.getNumber()) { + if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { size += com.google.protobuf.CodedOutputStream .computeEnumSize(3, state_); } @@ -724,7 +724,7 @@ public Builder setNameBytes( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 3 [json_name = "state"]; + * .common.ActiveStateEnum state = 3 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ @java.lang.Override public int getStateValue() { @@ -735,7 +735,7 @@ public Builder setNameBytes( * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 3 [json_name = "state"]; + * .common.ActiveStateEnum state = 3 [json_name = "state"]; * @param value The enum numeric value on the wire for state to set. * @return This builder for chaining. */ @@ -750,24 +750,24 @@ public Builder setStateValue(int value) { * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 3 [json_name = "state"]; + * .common.ActiveStateEnum state = 3 [json_name = "state"]; * @return The state. */ @java.lang.Override - public com.common.StateTypeEnum getState() { - com.common.StateTypeEnum result = com.common.StateTypeEnum.forNumber(state_); - return result == null ? com.common.StateTypeEnum.UNRECOGNIZED : result; + public com.common.ActiveStateEnum getState() { + com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); + return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; } /** *
          * active by default until explicitly deactivated
          * 
    * - * .common.StateTypeEnum state = 3 [json_name = "state"]; + * .common.ActiveStateEnum state = 3 [json_name = "state"]; * @param value The state to set. * @return This builder for chaining. */ - public Builder setState(com.common.StateTypeEnum value) { + public Builder setState(com.common.ActiveStateEnum value) { if (value == null) { throw new NullPointerException(); } @@ -781,7 +781,7 @@ public Builder setState(com.common.StateTypeEnum value) { * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 3 [json_name = "state"]; + * .common.ActiveStateEnum state = 3 [json_name = "state"]; * @return This builder for chaining. */ public Builder clearState() { diff --git a/sdkjava/com/namespaces/NamespaceOrBuilder.java b/sdkjava/com/namespaces/NamespaceOrBuilder.java index 4f55b7e9ef..d6fd9b3cdf 100644 --- a/sdkjava/com/namespaces/NamespaceOrBuilder.java +++ b/sdkjava/com/namespaces/NamespaceOrBuilder.java @@ -53,7 +53,7 @@ public interface NamespaceOrBuilder extends * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 3 [json_name = "state"]; + * .common.ActiveStateEnum state = 3 [json_name = "state"]; * @return The enum numeric value on the wire for state. */ int getStateValue(); @@ -62,8 +62,8 @@ public interface NamespaceOrBuilder extends * active by default until explicitly deactivated * * - * .common.StateTypeEnum state = 3 [json_name = "state"]; + * .common.ActiveStateEnum state = 3 [json_name = "state"]; * @return The state. */ - com.common.StateTypeEnum getState(); + com.common.ActiveStateEnum getState(); } diff --git a/sdkjava/com/namespaces/NamespacesProto.java b/sdkjava/com/namespaces/NamespacesProto.java index c7cc750158..a760370b77 100644 --- a/sdkjava/com/namespaces/NamespacesProto.java +++ b/sdkjava/com/namespaces/NamespacesProto.java @@ -82,7 +82,7 @@ public static void registerAllExtensions( "\n\033namespaces/namespaces.proto\022\nnamespace" + "s\032\033buf/validate/validate.proto\032\034google/a" + "pi/annotations.proto\032\023common/common.prot" + - "o\"\302\004\n\tNamespace\022\016\n\002id\030\001 \001(\tR\002id\022\367\003\n\004name" + + "o\"\304\004\n\tNamespace\022\016\n\002id\030\001 \001(\tR\002id\022\367\003\n\004name" + "\030\002 \001(\tB\342\003\272H\336\003r\003\030\375\001\272\001\322\003\n\020namespace_format" + "\022\352\002Namespace must be a valid hostname. I" + "t should include at least one dot, with " + @@ -95,45 +95,45 @@ public static void registerAllExtensions( "onsist of at least two alphabetic charac" + "ters.\032Qthis.matches(\'^([a-zA-Z0-9]([a-zA" + "-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?\\\\.)+[a-zA-Z" + - "]{2,}$\')\310\001\001R\004name\022+\n\005state\030\003 \001(\0162\025.commo" + - "n.StateTypeEnumR\005state\"-\n\023GetNamespaceRe" + - "quest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetName" + - "spaceResponse\0223\n\tnamespace\030\001 \001(\0132\025.names" + - "paces.NamespaceR\tnamespace\"D\n\025ListNamesp" + - "acesRequest\022+\n\005state\030\001 \001(\0162\025.common.Stat" + - "eTypeEnumR\005state\"O\n\026ListNamespacesRespon" + - "se\0225\n\nnamespaces\030\001 \003(\0132\025.namespaces.Name" + - "spaceR\nnamespaces\"4\n\026CreateNamespaceRequ" + - "est\022\032\n\004name\030\001 \001(\tB\006\272H\003\310\001\001R\004name\"N\n\027Creat" + - "eNamespaceResponse\0223\n\tnamespace\030\001 \001(\0132\025." + - "namespaces.NamespaceR\tnamespace\"L\n\026Updat" + - "eNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002i" + - "d\022\032\n\004name\030\002 \001(\tB\006\272H\003\310\001\001R\004name\"N\n\027UpdateN" + - "amespaceResponse\0223\n\tnamespace\030\001 \001(\0132\025.na" + - "mespaces.NamespaceR\tnamespace\"4\n\032Deactiv" + - "ateNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R" + - "\002id\"\035\n\033DeactivateNamespaceResponse2\216\005\n\020N" + - "amespaceService\022v\n\014GetNamespace\022\037.namesp" + - "aces.GetNamespaceRequest\032 .namespaces.Ge" + - "tNamespaceResponse\"#\202\323\344\223\002\035\022\033/attributes/" + - "namespaces/{id}\022w\n\016ListNamespaces\022!.name" + - "spaces.ListNamespacesRequest\032\".namespace" + - "s.ListNamespacesResponse\"\036\202\323\344\223\002\030\022\026/attri" + - "butes/namespaces\022z\n\017CreateNamespace\022\".na" + - "mespaces.CreateNamespaceRequest\032#.namesp" + - "aces.CreateNamespaceResponse\"\036\202\323\344\223\002\030\"\026/a" + - "ttributes/namespaces\022\177\n\017UpdateNamespace\022" + - "\".namespaces.UpdateNamespaceRequest\032#.na" + - "mespaces.UpdateNamespaceResponse\"#\202\323\344\223\002\035" + - "\032\033/attributes/namespaces/{id}\022\213\001\n\023Deacti" + - "vateNamespace\022&.namespaces.DeactivateNam" + - "espaceRequest\032\'.namespaces.DeactivateNam" + - "espaceResponse\"#\202\323\344\223\002\035*\033/attributes/name" + - "spaces/{id}B\233\001\n\016com.namespacesB\017Namespac" + - "esProtoP\001Z0github.com/opentdf/opentdf-v2" + - "-poc/sdk/namespaces\242\002\003NXX\252\002\nNamespaces\312\002" + - "\nNamespaces\342\002\026Namespaces\\GPBMetadata\352\002\nN" + - "amespacesb\006proto3" + "]{2,}$\')\310\001\001R\004name\022-\n\005state\030\003 \001(\0162\027.commo" + + "n.ActiveStateEnumR\005state\"-\n\023GetNamespace" + + "Request\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetNa" + + "mespaceResponse\0223\n\tnamespace\030\001 \001(\0132\025.nam" + + "espaces.NamespaceR\tnamespace\"F\n\025ListName" + + "spacesRequest\022-\n\005state\030\001 \001(\0162\027.common.Ac" + + "tiveStateEnumR\005state\"O\n\026ListNamespacesRe" + + "sponse\0225\n\nnamespaces\030\001 \003(\0132\025.namespaces." + + "NamespaceR\nnamespaces\"4\n\026CreateNamespace" + + "Request\022\032\n\004name\030\001 \001(\tB\006\272H\003\310\001\001R\004name\"N\n\027C" + + "reateNamespaceResponse\0223\n\tnamespace\030\001 \001(" + + "\0132\025.namespaces.NamespaceR\tnamespace\"L\n\026U" + + "pdateNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001" + + "\001R\002id\022\032\n\004name\030\002 \001(\tB\006\272H\003\310\001\001R\004name\"N\n\027Upd" + + "ateNamespaceResponse\0223\n\tnamespace\030\001 \001(\0132" + + "\025.namespaces.NamespaceR\tnamespace\"4\n\032Dea" + + "ctivateNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003" + + "\310\001\001R\002id\"\035\n\033DeactivateNamespaceResponse2\216" + + "\005\n\020NamespaceService\022v\n\014GetNamespace\022\037.na" + + "mespaces.GetNamespaceRequest\032 .namespace" + + "s.GetNamespaceResponse\"#\202\323\344\223\002\035\022\033/attribu" + + "tes/namespaces/{id}\022w\n\016ListNamespaces\022!." + + "namespaces.ListNamespacesRequest\032\".names" + + "paces.ListNamespacesResponse\"\036\202\323\344\223\002\030\022\026/a" + + "ttributes/namespaces\022z\n\017CreateNamespace\022" + + "\".namespaces.CreateNamespaceRequest\032#.na" + + "mespaces.CreateNamespaceResponse\"\036\202\323\344\223\002\030" + + "\"\026/attributes/namespaces\022\177\n\017UpdateNamesp" + + "ace\022\".namespaces.UpdateNamespaceRequest\032" + + "#.namespaces.UpdateNamespaceResponse\"#\202\323" + + "\344\223\002\035\032\033/attributes/namespaces/{id}\022\213\001\n\023De" + + "activateNamespace\022&.namespaces.Deactivat" + + "eNamespaceRequest\032\'.namespaces.Deactivat" + + "eNamespaceResponse\"#\202\323\344\223\002\035*\033/attributes/" + + "namespaces/{id}B\233\001\n\016com.namespacesB\017Name" + + "spacesProtoP\001Z0github.com/opentdf/opentd" + + "f-v2-poc/sdk/namespaces\242\002\003NXX\252\002\nNamespac" + + "es\312\002\nNamespaces\342\002\026Namespaces\\GPBMetadata" + + "\352\002\nNamespacesb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, diff --git a/services/helpers.go b/services/helpers.go index 6ec6824beb..07f5e8954a 100644 --- a/services/helpers.go +++ b/services/helpers.go @@ -5,15 +5,15 @@ import ( "github.com/opentdf/opentdf-v2-poc/sdk/common" ) -func GetDbStateTypeTransformedEnum(state common.StateTypeEnum) string { +func GetDbStateTypeTransformedEnum(state common.ActiveStateEnum) string { switch state.String() { - case common.StateTypeEnum_STATE_TYPE_ENUM_ACTIVE.String(): + case common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE.String(): return db.StateActive - case common.StateTypeEnum_STATE_TYPE_ENUM_INACTIVE.String(): + case common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE.String(): return db.StateInactive - case common.StateTypeEnum_STATE_TYPE_ENUM_ANY.String(): + case common.ActiveStateEnum_ACTIVE_STATE_ENUM_ANY.String(): return db.StateAny - case common.StateTypeEnum_STATE_TYPE_ENUM_UNSPECIFIED.String(): + case common.ActiveStateEnum_ACTIVE_STATE_ENUM_UNSPECIFIED.String(): return db.StateActive default: return db.StateActive From cf2981cafc98053f568ea468a3f1d4a309e7272d Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 09:13:56 -0500 Subject: [PATCH 18/28] use Tables struct and fields provided instead of tableField func for clarity --- internal/db/attribute_values.go | 40 +++++++++++++++--------------- internal/db/attributes.go | 44 ++++++++++++++++----------------- 2 files changed, 42 insertions(+), 42 deletions(-) diff --git a/internal/db/attribute_values.go b/internal/db/attribute_values.go index 88fa23ac8a..5377e75b06 100644 --- a/internal/db/attribute_values.go +++ b/internal/db/attribute_values.go @@ -19,9 +19,9 @@ func attributeValueHydrateItem(row pgx.Row) (*attributes.Value, error) { members []string metadataJson []byte attributeId string - state string + state string ) - + if err := row.Scan(&id, &value, &members, &metadataJson, &attributeId, &state); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } @@ -39,7 +39,7 @@ func attributeValueHydrateItem(row pgx.Row) (*attributes.Value, error) { Members: members, Metadata: m, AttributeId: attributeId, - State: getProtoStateEnum(state), + State: getProtoStateEnum(state), } return v, nil } @@ -108,15 +108,15 @@ func (c Client) CreateAttributeValue(ctx context.Context, attributeId string, v func getAttributeValueSql(id string) (string, []interface{}, error) { return newStatementBuilder(). Select( - tableField(AttributeValueTable, "id"), - tableField(AttributeValueTable, "value"), - tableField(AttributeValueTable, "members"), - tableField(AttributeValueTable, "metadata"), - tableField(AttributeValueTable, "attribute_definition_id"), - tableField(AttributeValueTable, "state"), + Tables.AttributeValues.Field("id"), + Tables.AttributeValues.Field("value"), + Tables.AttributeValues.Field("members"), + Tables.AttributeValues.Field("metadata"), + Tables.AttributeValues.Field("attribute_definition_id"), + Tables.AttributeValues.Field("state"), ). From(AttributeValueTable). - Where(sq.Eq{tableField(AttributeValueTable, "id"): id}). + Where(sq.Eq{Tables.AttributeValues.Field("id"): id}). ToSql() } @@ -138,20 +138,20 @@ func (c Client) GetAttributeValue(ctx context.Context, id string) (*attributes.V func listAttributeValuesSql(attribute_id string, state string) (string, []interface{}, error) { sb := newStatementBuilder(). Select( - tableField(AttributeValueTable, "id"), - tableField(AttributeValueTable, "value"), - tableField(AttributeValueTable, "members"), - tableField(AttributeValueTable, "metadata"), - tableField(AttributeValueTable, "attribute_definition_id"), - tableField(AttributeValueTable, "state"), + Tables.AttributeValues.Field("id"), + Tables.AttributeValues.Field("value"), + Tables.AttributeValues.Field("members"), + Tables.AttributeValues.Field("metadata"), + Tables.AttributeValues.Field("attribute_definition_id"), + Tables.AttributeValues.Field("state"), ). From(AttributeValueTable) where := sq.Eq{} if state != StateAny { - where[tableField(AttributeValueTable, "state")] = state + where[Tables.AttributeValues.Field("state")] = state } - where[tableField(AttributeValueTable, "attribute_definition_id")] = attribute_id + where[Tables.AttributeValues.Field("attribute_definition_id")] = attribute_id return sb.Where(where).ToSql() } @@ -229,7 +229,7 @@ func deactivateAttributeValueSql(id string) (string, []interface{}, error) { return newStatementBuilder(). Update(AttributeValueTable). Set("state", StateInactive). - Where(sq.Eq{tableField(AttributeValueTable, "id"): id}). + Where(sq.Eq{Tables.AttributeValues.Field("id"): id}). ToSql() } @@ -244,7 +244,7 @@ func (c Client) DeactivateAttributeValue(ctx context.Context, id string) (*attri func deleteAttributeValueSql(id string) (string, []interface{}, error) { return newStatementBuilder(). Delete(AttributeValueTable). - Where(sq.Eq{tableField(AttributeValueTable, "id"): id}). + Where(sq.Eq{Tables.AttributeValues.Field("id"): id}). ToSql() } diff --git a/internal/db/attributes.go b/internal/db/attributes.go index 335ba092f8..77b2838702 100644 --- a/internal/db/attributes.go +++ b/internal/db/attributes.go @@ -52,18 +52,18 @@ func attributesValuesProtojson(valuesJson []byte) ([]*attributes.Value, error) { func attributesSelect() sq.SelectBuilder { return newStatementBuilder().Select( - tableField(AttributeTable, "id"), - tableField(AttributeTable, "name"), - tableField(AttributeTable, "rule"), - tableField(AttributeTable, "metadata"), - tableField(AttributeTable, "namespace_id"), - tableField(AttributeTable, "state"), - tableField(NamespacesTable, "name"), + Tables.Attributes.Field("id"), + Tables.Attributes.Field("name"), + Tables.Attributes.Field("rule"), + Tables.Attributes.Field("metadata"), + Tables.Attributes.Field("namespace_id"), + Tables.Attributes.Field("state"), + Tables.Namespaces.Field("name"), "JSON_AGG("+ "JSON_BUILD_OBJECT("+ - "'id', "+tableField(AttributeValueTable, "id")+", "+ - "'value', "+tableField(AttributeValueTable, "value")+","+ - "'members', "+tableField(AttributeValueTable, "members")+","+ + "'id', "+Tables.AttributeValues.Field("id")+", "+ + "'value', "+Tables.AttributeValues.Field("value")+","+ + "'members', "+Tables.AttributeValues.Field("members")+","+ "'grants', ("+ "SELECT JSON_AGG("+ "JSON_BUILD_OBJECT("+ @@ -79,9 +79,9 @@ func attributesSelect() sq.SelectBuilder { ")) AS values", "JSON_AGG("+ "JSON_BUILD_OBJECT("+ - "'id', "+tableField(KeyAccessServerTable, "id")+", "+ - "'uri', "+tableField(KeyAccessServerTable, "uri")+", "+ - "'public_key', "+tableField(KeyAccessServerTable, "public_key")+ + "'id', "+Tables.KeyAccessServerRegistry.Field("id")+", "+ + "'uri', "+Tables.KeyAccessServerRegistry.Field("uri")+", "+ + "'public_key', "+Tables.KeyAccessServerRegistry.Field("public_key")+ ")"+ ") AS grants", ). @@ -89,7 +89,7 @@ func attributesSelect() sq.SelectBuilder { LeftJoin(NamespacesTable+" ON "+NamespacesTable+".id = "+AttributeTable+".namespace_id"). LeftJoin(Tables.AttributeKeyAccessGrants.Name()+" ON "+Tables.AttributeKeyAccessGrants.WithoutSchema().Name()+".attribute_definition_id = "+AttributeTable+".id"). LeftJoin(KeyAccessServerTable+" ON "+KeyAccessServerTable+".id = "+Tables.AttributeKeyAccessGrants.WithoutSchema().Name()+".key_access_server_id"). - GroupBy(tableField(AttributeTable, "id"), tableField(NamespacesTable, "name")) + GroupBy(Tables.Attributes.Field("id"), Tables.Namespaces.Field("name")) } func attributesHydrateItem(row pgx.Row) (*attributes.Attribute, error) { @@ -212,9 +212,9 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) { func listAllAttributesSql(state string) (string, []interface{}, error) { q := attributesSelect() if state != StateAny { - q = q.Where(sq.Eq{tableField(AttributeTable, "state"): state}) + q = q.Where(sq.Eq{Tables.Attributes.Field("state"): state}) } - return q.From(AttributeTable). + return q.From(Tables.Attributes.Name()). ToSql() } @@ -237,7 +237,7 @@ func (c Client) ListAllAttributes(ctx context.Context, state string) ([]*attribu func getAttributeSql(id string) (string, []interface{}, error) { return attributesSelect(). - Where(sq.Eq{tableField(AttributeTable, "id"): id}). + Where(sq.Eq{Tables.Attributes.Field("id"): id}). From(AttributeTable). ToSql() } @@ -260,7 +260,7 @@ func (c Client) GetAttribute(ctx context.Context, id string) (*attributes.Attrib func getAttributesByNamespaceSql(namespaceId string) (string, []interface{}, error) { return attributesSelect(). - Where(sq.Eq{tableField(AttributeTable, "namespace_id"): namespaceId}). + Where(sq.Eq{Tables.Attributes.Field("namespace_id"): namespaceId}). From(AttributeTable). ToSql() } @@ -329,7 +329,7 @@ func updateAttributeSql(id string, name string, rule string, metadata []byte) (s } return sb.Set("metadata", metadata). - Where(sq.Eq{tableField(AttributeTable, "id"): id}). + Where(sq.Eq{Tables.Attributes.Field("id"): id}). ToSql() } @@ -360,9 +360,9 @@ func (c Client) UpdateAttribute(ctx context.Context, id string, attr *attributes func deactivateAttributeSql(id string) (string, []interface{}, error) { return newStatementBuilder(). - Update(AttributeTable). + Update(Tables.Attributes.Name()). Set("state", StateInactive). - Where(sq.Eq{tableField(AttributeTable, "id"): id}). + Where(sq.Eq{Tables.Attributes.Field("id"): id}). Suffix("RETURNING \"id\""). ToSql() } @@ -379,7 +379,7 @@ func (c Client) DeactivateAttribute(ctx context.Context, id string) (*attributes func deleteAttributeSql(id string) (string, []interface{}, error) { return newStatementBuilder(). Delete(AttributeTable). - Where(sq.Eq{tableField(AttributeTable, "id"): id}). + Where(sq.Eq{Tables.Attributes.Field("id"): id}). ToSql() } From 9e8238ec26bf11d4f7e6d210ada07702168692f5 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 09:14:45 -0500 Subject: [PATCH 19/28] remove unused tableField func --- internal/db/db.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/internal/db/db.go b/internal/db/db.go index 4d8ac7a499..115ae64ec6 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -204,10 +204,6 @@ func tableName(table string) string { return table } -func tableField(table string, field string) string { - return table + "." + field -} - func getProtoStateEnum(state string) common.ActiveStateEnum { switch state { case StateInactive: From de308d6e246c4bc618e8cffe7cb7ad5ea42cb1b3 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 10:42:52 -0500 Subject: [PATCH 20/28] change state enum to active bool column in schema migration/erd --- .../20240212000000_add_active_state_enums.sql | 61 +++++++------------ migrations/20240212000000_schema_erd.md | 6 +- 2 files changed, 25 insertions(+), 42 deletions(-) diff --git a/migrations/20240212000000_add_active_state_enums.sql b/migrations/20240212000000_add_active_state_enums.sql index 29ef8331b9..bb3fb90cd1 100644 --- a/migrations/20240212000000_add_active_state_enums.sql +++ b/migrations/20240212000000_add_active_state_enums.sql @@ -1,69 +1,52 @@ -- +goose Up -- +goose StatementBegin -CREATE TYPE active_state AS ENUM ('ACTIVE', 'INACTIVE', 'UNSPECIFIED'); - -ALTER TABLE attribute_namespaces ADD COLUMN IF NOT EXISTS state active_state NOT NULL DEFAULT 'ACTIVE'; -ALTER TABLE attribute_definitions ADD COLUMN IF NOT EXISTS state active_state NOT NULL DEFAULT 'ACTIVE'; -ALTER TABLE attribute_values ADD COLUMN IF NOT EXISTS state active_state NOT NULL DEFAULT 'ACTIVE'; - -CREATE INDEX IF NOT EXISTS idx_attribute_namespaces_state ON attribute_namespaces(state); -CREATE INDEX IF NOT EXISTS idx_attribute_definitions_state ON attribute_definitions(state); -CREATE INDEX IF NOT EXISTS idx_attribute_values_state ON attribute_values(state); +ALTER TABLE attribute_namespaces ADD COLUMN IF NOT EXISTS active bool NOT NULL DEFAULT true; +ALTER TABLE attribute_definitions ADD COLUMN IF NOT EXISTS active bool NOT NULL DEFAULT true; +ALTER TABLE attribute_values ADD COLUMN IF NOT EXISTS active bool NOT NULL DEFAULT true; --- Triggers deactivation cascade namespaces -> attr definitions -> attr values --- Expected trigger args cannot be explicitly defined, but are: [tableName text, foreignKeyColumnName text] -CREATE FUNCTION cascade_inactive_state() +CREATE FUNCTION cascade_deactivation() RETURNS TRIGGER AS $$ BEGIN - IF (TG_OP = 'UPDATE' AND NEW.state = 'INACTIVE') THEN - EXECUTE format('UPDATE %I.%I SET state = $1 WHERE %s = $2', TG_TABLE_SCHEMA, TG_ARGV[0], TG_ARGV[1]) USING NEW.state, OLD.id; + IF (TG_OP = 'UPDATE' AND NEW.active = false) THEN + EXECUTE format('UPDATE %I.%I SET active = $1 WHERE %s = $2', TG_TABLE_SCHEMA, TG_ARGV[0], TG_ARGV[1]) USING NEW.active, OLD.id; END IF; RETURN NULL; END $$ language 'plpgsql'; -CREATE TRIGGER namespaces_state_updated +CREATE TRIGGER namespaces_active_updated AFTER - UPDATE OF state + UPDATE OF active ON attribute_namespaces FOR EACH ROW - EXECUTE PROCEDURE cascade_inactive_state('attribute_definitions', 'namespace_id'); + EXECUTE PROCEDURE cascade_deactivation('attribute_definitions', 'namespace_id'); -CREATE TRIGGER attribute_definitions_state_updated +CREATE TRIGGER attribute_definitions_active_updated AFTER - UPDATE OF state + UPDATE OF active ON attribute_definitions FOR EACH ROW - EXECUTE PROCEDURE cascade_inactive_state('attribute_values', 'attribute_definition_id'); + EXECUTE PROCEDURE cascade_deactivation('attribute_values', 'attribute_definition_id'); -- +goose StatementEnd -- +goose Down -- +goose StatementBegin --- If rolling back, all soft deletes should become hard deletes. -DELETE FROM attribute_namespaces WHERE state = 'INACTIVE'; -DELETE FROM attribute_definitions WHERE state = 'INACTIVE'; -DELETE FROM attribute_values WHERE state = 'INACTIVE'; - --- There should be no UNSPECIFIED states, but only preserve active rows just in case. -DELETE FROM attribute_namespaces WHERE state = 'UNSPECIFIED'; -DELETE FROM attribute_definitions WHERE state = 'UNSPECIFIED'; -DELETE FROM attribute_values WHERE state = 'UNSPECIFIED'; - -DROP TRIGGER IF EXISTS namespaces_state_updated ON attribute_namespaces; -DROP TRIGGER IF EXISTS attribute_definitions_state_updated ON attribute_definitions; -DROP FUNCTION cascade_inactive_state; - -DROP INDEX IF EXISTS idx_attribute_namespaces_state; -DROP INDEX IF EXISTS idx_attribute_definitions_state; -DROP INDEX IF EXISTS idx_attribute_values_state; +-- If rolling back, all deactivations should be hard deletes. +DELETE FROM attribute_namespaces WHERE active = false; +DELETE FROM attribute_definitions WHERE active = false; +DELETE FROM attribute_values WHERE active = false; -ALTER TABLE attribute_namespaces DROP COLUMN state; -ALTER TABLE attribute_definitions DROP COLUMN state; -ALTER TABLE attribute_values DROP COLUMN state; +DROP TRIGGER IF EXISTS namespaces_active_updated ON attribute_namespaces; +DROP TRIGGER IF EXISTS attribute_definitions_active_updated ON attribute_definitions; +DROP FUNCTION cascade_deactivation; -DROP TYPE active_state; +ALTER TABLE attribute_namespaces DROP COLUMN active; +ALTER TABLE attribute_definitions DROP COLUMN active; +ALTER TABLE attribute_values DROP COLUMN active; -- +goose StatementEnd \ No newline at end of file diff --git a/migrations/20240212000000_schema_erd.md b/migrations/20240212000000_schema_erd.md index b91e6af3b5..202e631da2 100644 --- a/migrations/20240212000000_schema_erd.md +++ b/migrations/20240212000000_schema_erd.md @@ -33,7 +33,7 @@ erDiagram Namespace { uuid id PK varchar name UK - enum state + bool active } AttributeDefinition { @@ -43,7 +43,7 @@ erDiagram enum rule jsonb metadata compIdx comp_key UK "ns_id + name" - enum state + bool active } AttributeDefinitionKeyAccessGrant { @@ -59,7 +59,7 @@ erDiagram uuid[] members FK "Optional grouping of values" jsonb metadata compIdx comp_key UK "ns_id + ad_id + value" - enum state + bool active } AttributeValueKeyAccessGrant { From 45263deffc5148522cfdcc492f4184cfe5c9de44 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 11:43:38 -0500 Subject: [PATCH 21/28] allow clients to use a string enum active/inactive/any/unspecified in proto messages but keep database column for active state a boolean --- internal/db/attribute_values.go | 15 ++++++++------- internal/db/attributes.go | 19 ++++++++++--------- internal/db/db.go | 10 +++------- internal/db/namespaces.go | 20 ++++++++++---------- 4 files changed, 31 insertions(+), 33 deletions(-) diff --git a/internal/db/attribute_values.go b/internal/db/attribute_values.go index 5377e75b06..56eee345f3 100644 --- a/internal/db/attribute_values.go +++ b/internal/db/attribute_values.go @@ -19,10 +19,10 @@ func attributeValueHydrateItem(row pgx.Row) (*attributes.Value, error) { members []string metadataJson []byte attributeId string - state string + isActive bool ) - if err := row.Scan(&id, &value, &members, &metadataJson, &attributeId, &state); err != nil { + if err := row.Scan(&id, &value, &members, &metadataJson, &attributeId, &isActive); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } @@ -39,7 +39,7 @@ func attributeValueHydrateItem(row pgx.Row) (*attributes.Value, error) { Members: members, Metadata: m, AttributeId: attributeId, - State: getProtoStateEnum(state), + State: getProtoStateEnum(isActive), } return v, nil } @@ -101,6 +101,7 @@ func (c Client) CreateAttributeValue(ctx context.Context, attributeId string, v Value: v.Value, Members: v.Members, Metadata: metadata, + State: common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, } return rV, nil } @@ -113,7 +114,7 @@ func getAttributeValueSql(id string) (string, []interface{}, error) { Tables.AttributeValues.Field("members"), Tables.AttributeValues.Field("metadata"), Tables.AttributeValues.Field("attribute_definition_id"), - Tables.AttributeValues.Field("state"), + Tables.AttributeValues.Field("active"), ). From(AttributeValueTable). Where(sq.Eq{Tables.AttributeValues.Field("id"): id}). @@ -143,13 +144,13 @@ func listAttributeValuesSql(attribute_id string, state string) (string, []interf Tables.AttributeValues.Field("members"), Tables.AttributeValues.Field("metadata"), Tables.AttributeValues.Field("attribute_definition_id"), - Tables.AttributeValues.Field("state"), + Tables.AttributeValues.Field("active"), ). From(AttributeValueTable) where := sq.Eq{} if state != StateAny { - where[Tables.AttributeValues.Field("state")] = state + where[Tables.AttributeValues.Field("active")] = state == StateActive; } where[Tables.AttributeValues.Field("attribute_definition_id")] = attribute_id return sb.Where(where).ToSql() @@ -228,7 +229,7 @@ func (c Client) UpdateAttributeValue(ctx context.Context, id string, v *attribut func deactivateAttributeValueSql(id string) (string, []interface{}, error) { return newStatementBuilder(). Update(AttributeValueTable). - Set("state", StateInactive). + Set("active", false). Where(sq.Eq{Tables.AttributeValues.Field("id"): id}). ToSql() } diff --git a/internal/db/attributes.go b/internal/db/attributes.go index 77b2838702..229f69bf66 100644 --- a/internal/db/attributes.go +++ b/internal/db/attributes.go @@ -57,7 +57,7 @@ func attributesSelect() sq.SelectBuilder { Tables.Attributes.Field("rule"), Tables.Attributes.Field("metadata"), Tables.Attributes.Field("namespace_id"), - Tables.Attributes.Field("state"), + Tables.Attributes.Field("active"), Tables.Namespaces.Field("name"), "JSON_AGG("+ "JSON_BUILD_OBJECT("+ @@ -99,12 +99,12 @@ func attributesHydrateItem(row pgx.Row) (*attributes.Attribute, error) { rule string metadataJson []byte namespaceId string - state string + isActive bool namespaceName string valuesJson []byte grants []byte ) - err := row.Scan(&id, &name, &rule, &metadataJson, &namespaceId, &state, &namespaceName, &valuesJson, &grants) + err := row.Scan(&id, &name, &rule, &metadataJson, &namespaceId, &isActive, &namespaceName, &valuesJson, &grants) if err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } @@ -135,7 +135,7 @@ func attributesHydrateItem(row pgx.Row) (*attributes.Attribute, error) { Id: id, Name: name, Rule: attributesRuleTypeEnumTransformOut(rule), - State: getProtoStateEnum(state), + State: getProtoStateEnum(isActive), Metadata: m, Values: v, Namespace: &namespaces.Namespace{Id: namespaceId, Name: namespaceName}, @@ -155,12 +155,12 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) { rule string metadataJson []byte namespaceId string - state string + isActive bool namespaceName string valuesJson []byte grants []byte ) - err := rows.Scan(&id, &name, &rule, &metadataJson, &namespaceId, &state, &namespaceName, &valuesJson, &grants) + err := rows.Scan(&id, &name, &rule, &metadataJson, &namespaceId, &isActive, &namespaceName, &valuesJson, &grants) if err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } @@ -173,7 +173,7 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) { Id: namespaceId, Name: namespaceName, }, - State: getProtoStateEnum(state), + State: getProtoStateEnum(isActive), } if metadataJson != nil { @@ -212,7 +212,7 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) { func listAllAttributesSql(state string) (string, []interface{}, error) { q := attributesSelect() if state != StateAny { - q = q.Where(sq.Eq{Tables.Attributes.Field("state"): state}) + q = q.Where(sq.Eq{Tables.Attributes.Field("active"): state == StateActive}) } return q.From(Tables.Attributes.Name()). ToSql() @@ -313,6 +313,7 @@ func (c Client) CreateAttribute(ctx context.Context, attr *attributes.AttributeC Namespace: &namespaces.Namespace{ Id: attr.NamespaceId, }, + State: common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, } return a, nil } @@ -361,7 +362,7 @@ func (c Client) UpdateAttribute(ctx context.Context, id string, attr *attributes func deactivateAttributeSql(id string) (string, []interface{}, error) { return newStatementBuilder(). Update(Tables.Attributes.Name()). - Set("state", StateInactive). + Set("active", false). Where(sq.Eq{Tables.Attributes.Field("id"): id}). Suffix("RETURNING \"id\""). ToSql() diff --git a/internal/db/db.go b/internal/db/db.go index 115ae64ec6..c84154c67b 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -204,13 +204,9 @@ func tableName(table string) string { return table } -func getProtoStateEnum(state string) common.ActiveStateEnum { - switch state { - case StateInactive: - return common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE - case StateActive: +func getProtoStateEnum(active bool) common.ActiveStateEnum { + if active { return common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE - default: - return common.ActiveStateEnum_ACTIVE_STATE_ENUM_UNSPECIFIED } + return common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE } diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go index 2237ba255a..5a92f6175e 100644 --- a/internal/db/namespaces.go +++ b/internal/db/namespaces.go @@ -10,7 +10,7 @@ import ( func getNamespaceSql(id string) (string, []interface{}, error) { t := Tables.Namespaces return newStatementBuilder(). - Select(t.Field("id"), t.Field("name"), t.Field("state")). + Select(t.Field("id"), t.Field("name"), t.Field("active")). From(t.Name()). Where(sq.Eq{t.Field("id"): id}). ToSql() @@ -28,23 +28,23 @@ func (c Client) GetNamespace(ctx context.Context, id string) (*namespaces.Namesp } var namespace namespaces.Namespace - state := "" - if err := row.Scan(&namespace.Id, &namespace.Name, &state); err != nil { + isActive := true + if err := row.Scan(&namespace.Id, &namespace.Name, &isActive); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } - namespace.State = getProtoStateEnum(state) + namespace.State = getProtoStateEnum(isActive) return &namespace, nil } func listNamespacesSql(state string) (string, []interface{}, error) { t := Tables.Namespaces sb := newStatementBuilder(). - Select(t.Field("id"), t.Field("name"), t.Field("state")). + Select(t.Field("id"), t.Field("name"), t.Field("active")). From(t.Name()) if state != StateAny { - sb = sb.Where(sq.Eq{t.Field("state"): state}) + sb = sb.Where(sq.Eq{t.Field("active"): state == StateActive}) } return sb.ToSql() } @@ -64,11 +64,11 @@ func (c Client) ListNamespaces(ctx context.Context, state string) ([]*namespaces for rows.Next() { var namespace namespaces.Namespace - state := "" - if err := rows.Scan(&namespace.Id, &namespace.Name, &state); err != nil { + isActive := true + if err := rows.Scan(&namespace.Id, &namespace.Name, &isActive); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } - namespace.State = getProtoStateEnum(state) + namespace.State = getProtoStateEnum(isActive) namespacesList = append(namespacesList, &namespace) } @@ -120,7 +120,7 @@ func deactivateNamespaceSql(id string) (string, []interface{}, error) { t := Tables.Namespaces return newStatementBuilder(). Update(t.Name()). - Set("state", StateInactive). + Set("active", false). Where(sq.Eq{t.Field("id"): id}). Suffix("RETURNING \"id\""). ToSql() From 5c07e8c0e91b73c7564bb483cc3022c452f25801 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 11:43:53 -0500 Subject: [PATCH 22/28] add more integration tests, update tests, and add deactivated state to fixtures --- integration/attribute_values_test.go | 24 +++++++++++++ integration/attributes_test.go | 22 ++++++++++++ integration/db.go | 5 +++ integration/fixtures.go | 12 ++++--- integration/fixtures.yaml | 50 ++++++++++++++++++++++------ integration/namespaces_test.go | 21 +++--------- 6 files changed, 103 insertions(+), 31 deletions(-) diff --git a/integration/attribute_values_test.go b/integration/attribute_values_test.go index e1e08576e8..4844bfd3cc 100644 --- a/integration/attribute_values_test.go +++ b/integration/attribute_values_test.go @@ -88,6 +88,30 @@ func (s *AttributeValuesSuite) Test_GetAttributeValue_NotFound() { assert.ErrorIs(s.T(), err, db.ErrNotFound) } +func (s *AttributeValuesSuite) Test_CreateAttributeValue_SetsActiveStateTrueByDefault() { + attrDef := fixtures.GetAttributeKey("example.net/attr/attr1") + + value := &attributes.ValueCreateUpdate{ + Value: "testing create gives active true by default", + } + createdValue, err := s.db.Client.CreateAttributeValue(s.ctx, attrDef.Id, value) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), createdValue) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, createdValue.State) +} + +func (s *AttributeValuesSuite) Test_GetAttributeValue_Deactivated_Succeeds() { + inactive := fixtures.GetAttributeValueKey("deactivated.io/attr/attr1/value/deactivated_value") + + got, err := s.db.Client.GetAttributeValue(s.ctx, inactive.Id) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), got) + assert.Equal(s.T(), inactive.Id, got.Id) + assert.Equal(s.T(), inactive.Value, got.Value) + assert.Equal(s.T(), len(inactive.Members), len(got.Members)) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, got.State) +} + func (s *AttributeValuesSuite) Test_CreateAttributeValue_NoMembers_Succeeds() { attrDef := fixtures.GetAttributeKey("example.net/attr/attr1") metadata := &common.MetadataMutable{ diff --git a/integration/attributes_test.go b/integration/attributes_test.go index 1b30009442..055571d426 100644 --- a/integration/attributes_test.go +++ b/integration/attributes_test.go @@ -85,6 +85,18 @@ func (s *AttributesSuite) Test_CreateAttribute_WithMetadataSucceeds() { assert.NotNil(s.T(), createdAttr) } +func (s *AttributesSuite) Test_CreateAttribute_SetsActiveStateTrueByDefault() { + attr := &attributes.AttributeCreateUpdate{ + Name: "test__create_attribute_active_state_default", + NamespaceId: fixtureNamespaceId, + Rule: attributes.AttributeRuleTypeEnum_ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF, + } + createdAttr, err := s.db.Client.CreateAttribute(s.ctx, attr) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), createdAttr) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, createdAttr.State) +} + func (s *AttributesSuite) Test_CreateAttribute_WithInvalidNamespaceFails() { attr := &attributes.AttributeCreateUpdate{ Name: "test__create_attribute_invalid_namespace", @@ -183,6 +195,16 @@ func (s *AttributesSuite) Test_GetAttribute_WithInvalidIdFails() { assert.ErrorIs(s.T(), err, db.ErrNotFound) } +func (s *AttributesSuite) Test_GetAttribute_Deactivated_Succeeds() { + deactivated := fixtures.GetAttributeKey("deactivated.io/attr/attr1") + gotAttr, err := s.db.Client.GetAttribute(s.ctx, deactivated.Id) + assert.Nil(s.T(), err) + assert.NotNil(s.T(), gotAttr) + assert.Equal(s.T(), deactivated.Id, gotAttr.Id) + assert.Equal(s.T(), deactivated.Name, gotAttr.Name) + assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotAttr.State) +} + func (s *AttributesSuite) Test_ListAttribute() { fixtures := getAttributeFixtures() diff --git a/integration/db.go b/integration/db.go index a4515bc209..4c89cadad8 100644 --- a/integration/db.go +++ b/integration/db.go @@ -3,6 +3,7 @@ package integration import ( "context" "log/slog" + "strconv" "strings" "github.com/opentdf/opentdf-v2-poc/internal/db" @@ -46,6 +47,10 @@ func (d *DBInterface) StringWrap(v string) string { return "'" + v + "'" } +func (d *DBInterface) BoolWrap(b bool) string { + return strconv.FormatBool(b) +} + func (d *DBInterface) UUIDWrap(v string) string { return "(" + d.StringWrap(v) + ")" + "::uuid" } diff --git a/integration/fixtures.go b/integration/fixtures.go index 3d10f06314..c1ee7d86bf 100644 --- a/integration/fixtures.go +++ b/integration/fixtures.go @@ -21,9 +21,9 @@ type FixtureMetadata struct { } type FixtureDataNamespace struct { - Id string `yaml:"id"` - Name string `yaml:"name"` - State string `yaml:"state"` + Id string `yaml:"id"` + Name string `yaml:"name"` + Active bool `yaml:"active"` } type FixtureDataAttribute struct { @@ -31,6 +31,7 @@ type FixtureDataAttribute struct { NamespaceId string `yaml:"namespace_id"` Name string `yaml:"name"` Rule string `yaml:"rule"` + Active bool `yaml:"active"` } type FixtureDataAttributeKeyAccessServer struct { @@ -43,6 +44,7 @@ type FixtureDataAttributeValue struct { AttributeDefinitionId string `yaml:"attribute_definition_id"` Value string `yaml:"value"` Members []string `yaml:"members"` + Active bool `yaml:"active"` } type FixtureDataAttributeValueKeyAccessServer struct { @@ -225,7 +227,7 @@ func (f *Fixtures) provisionNamespace() int64 { []string{ f.db.StringWrap(d.Id), f.db.StringWrap(d.Name), - f.db.StringWrap(d.State), + f.db.BoolWrap(d.Active), }, ) } @@ -240,6 +242,7 @@ func (f *Fixtures) provisionAttribute() int64 { f.db.StringWrap(d.NamespaceId), f.db.StringWrap(d.Name), f.db.StringWrap(d.Rule), + f.db.BoolWrap(d.Active), }) } return f.provision(fixtureData.Attributes.Metadata.TableName, fixtureData.Attributes.Metadata.Columns, values) @@ -253,6 +256,7 @@ func (f *Fixtures) provisionAttributeValues() int64 { f.db.StringWrap(d.AttributeDefinitionId), f.db.StringWrap(d.Value), f.db.UUIDArrayWrap(d.Members), + f.db.BoolWrap(d.Active), }) } return f.provision(fixtureData.AttributeValues.Metadata.TableName, fixtureData.AttributeValues.Metadata.Columns, values) diff --git a/integration/fixtures.yaml b/integration/fixtures.yaml index e473877825..6676997ef5 100644 --- a/integration/fixtures.yaml +++ b/integration/fixtures.yaml @@ -7,28 +7,25 @@ attribute_namespaces: columns: - id - name - - state + - active data: example.com: id: 8f1d8839-2851-4bf4-8bf4-5243dbfe517d name: example.com - state: ACTIVE + active: true example.net: id: d69cf14d-744b-48cf-aab4-43756e97a8e5 name: example.net - state: ACTIVE + active: true example.org: id: 0d94e00a-7bd3-4482-afe3-f1e4b03c1353 name: example.org - state: ACTIVE - unspecified_state: - id: 3b509401-4f4f-4d3a-a907-55bed403b04b - name: error.gov - state: UNSPECIFIED - inactive_state: + active: true + # deactivated state + deactivated_ns: id: 40790395-88b1-4adc-8bf5-1900491a79ba - name: mistake.io - state: INACTIVE + name: deactivated.io + active: false ## # Attributes @@ -43,49 +40,66 @@ attributes: - namespace_id - name - rule + - active data: example.com/attr/attr1: id: 6a261d68-0899-4e17-bb2f-124abba7c09c namespace_id: 8f1d8839-2851-4bf4-8bf4-5243dbfe517d name: attr1 rule: ANY_OF + active: true example.com/attr/attr2: id: e1536f25-d287-43ed-9ad9-2cf4a7698e5f namespace_id: 8f1d8839-2851-4bf4-8bf4-5243dbfe517d name: attr2 rule: ALL_OF + active: true example.net/attr/attr1: id: d2396dd6-0e4e-4b6d-9ab1-74b69c4b9b99 namespace_id: d69cf14d-744b-48cf-aab4-43756e97a8e5 name: attr1 rule: ANY_OF + active: true example.net/attr/attr2: id: 8e778b7f-3a0e-4ed7-b007-5e4d8dfc03df namespace_id: d69cf14d-744b-48cf-aab4-43756e97a8e5 name: attr2 rule: ALL_OF + active: true example.net/attr/attr3: id: 438a0dfb-cd1a-4f73-af73-2325a6e9db1b namespace_id: d69cf14d-744b-48cf-aab4-43756e97a8e5 name: attr3 rule: HIERARCHY + active: true example.org/attr/attr1: id: 07d04942-c5b4-42d1-964e-f5b2d6365d80 namespace_id: 0d94e00a-7bd3-4482-afe3-f1e4b03c1353 name: attr1 rule: ANY_OF + active: true example.org/attr/attr2: id: 65a0e745-7a22-4e16-8004-09ebc932f621 namespace_id: 0d94e00a-7bd3-4482-afe3-f1e4b03c1353 name: attr2 rule: ALL_OF + active: true example.org/attr/attr3: id: 6dc88b9e-319b-4c6e-85c7-6f7e43a5d8d4 namespace_id: 0d94e00a-7bd3-4482-afe3-f1e4b03c1353 name: attr3 rule: HIERARCHY + active: true + + # deactivated state + deactivated.io/attr/attr1: + id: 3e3e3e3e-3e3e-3e3e-3e3e-3e3e3e3e3e3e + namespace_id: 40790395-88b1-4adc-8bf5-1900491a79ba + name: deactivated_attr + rule: ANY_OF + active: false attribute_key_access_servers: - attribute_id: 6a261d68-0899-4e17-bb2f-124abba7c09c @@ -104,11 +118,13 @@ attribute_values: - attribute_definition_id - value - members + - active data: example.com/attr/attr1/value/value1: id: 74babca6-016f-4f3e-a99b-4e46ea8d0fd8 attribute_definition_id: 6a261d68-0899-4e17-bb2f-124abba7c09c value: value1 + active: true example.com/attr/attr1/value/value2: id: 2fe8dea1-3555-498c-afe9-99724f35f3d3 attribute_definition_id: 6a261d68-0899-4e17-bb2f-124abba7c09c @@ -118,24 +134,36 @@ attribute_values: - 0fd363db-27b1-4210-b77b-8c82fe044d41 # example.net/attr/attr1/value/value1 - 532e5957-28f7-466d-91e2-493e9431cd83 + active: true example.com/attr/attr2/value/value1: id: 0fd363db-27b1-4210-b77b-8c82fe044d41 attribute_definition_id: e1536f25-d287-43ed-9ad9-2cf4a7698e5f value: value1 + active: true example.com/attr/attr2/value/value2: id: 81f643f8-e050-4b97-a005-b61294d4c8bb attribute_definition_id: e1536f25-d287-43ed-9ad9-2cf4a7698e5f value: value2 + active: true example.net/attr/attr1/value/value1: id: 532e5957-28f7-466d-91e2-493e9431cd83 attribute_definition_id: d2396dd6-0e4e-4b6d-9ab1-74b69c4b9b99 value: value1 + active: true example.net/attr/attr1/value/value2: id: 04bd2657-de10-46bc-a88f-5d687de4816b attribute_definition_id: d2396dd6-0e4e-4b6d-9ab1-74b69c4b9b99 value: value2 + active: true + + # deactivated state + deactivated.io/attr/attr1/value/deactivated_value: + id: 06fa035b-8205-4000-86ad-2439cc1325ec + attribute_definition_id: 3e3e3e3e-3e3e-3e3e-3e3e-3e3e3e3e3e3e + value: deactivated_value + active: false attribute_value_key_access_servers: - value_id: 74babca6-016f-4f3e-a99b-4e46ea8d0fd8 diff --git a/integration/namespaces_test.go b/integration/namespaces_test.go index 5b5d55c945..1afcbb98ab 100644 --- a/integration/namespaces_test.go +++ b/integration/namespaces_test.go @@ -25,9 +25,9 @@ type NamespacesSuite struct { const nonExistentNamespaceId = "88888888-2222-3333-4444-999999999999" var ( - deactivatedNsId = "" - deactivatedAttrId = "" - deactivatedAttrValueId = "" + deactivatedNsId string + deactivatedAttrId string + deactivatedAttrValueId string stillActiveNsId string stillActiveAttributeId string ) @@ -90,21 +90,10 @@ func (s *NamespacesSuite) Test_GetNamespace() { assert.ErrorIs(s.T(), err, db.ErrNotFound) } -func (s *NamespacesSuite) Test_GetNamespace_UnspecifiedState_Succeeds() { - unspecified := fixtures.GetNamespaceKey("unspecified_state") - // Ensure our fixtures matches expected string enum - assert.Equal(s.T(), unspecified.State, db.StateUnspecified) - - got, err := s.db.Client.GetNamespace(s.ctx, unspecified.Id) - assert.Nil(s.T(), err) - assert.NotNil(s.T(), got) - assert.Equal(s.T(), unspecified.Name, got.Name) -} - func (s *NamespacesSuite) Test_GetNamespace_InactiveState_Succeeds() { - inactive := fixtures.GetNamespaceKey("inactive_state") + inactive := fixtures.GetNamespaceKey("deactivated_ns") // Ensure our fixtures matches expected string enum - assert.Equal(s.T(), inactive.State, db.StateInactive) + assert.Equal(s.T(), inactive.Active, false) got, err := s.db.Client.GetNamespace(s.ctx, inactive.Id) assert.Nil(s.T(), err) From 18cf0183d11215b650c00763beb7abc0bc2838bb Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 15:22:07 -0500 Subject: [PATCH 23/28] update protos and generated code --- docs/grpc/index.html | 12 +- .../attributes/attributes.swagger.json | 12 +- .../namespaces/namespaces.swagger.json | 4 +- .../resource_mapping.swagger.json | 15 +- .../subject_mapping.swagger.json | 15 +- proto/attributes/attributes.proto | 4 +- proto/namespaces/namespaces.proto | 2 +- sdk/attributes/attributes.pb.go | 895 +++++++++--------- sdk/namespaces/namespaces.pb.go | 237 +++-- ...signKeyAccessServerToAttributeRequest.java | 2 +- ...cessServerToAttributeRequestOrBuilder.java | 2 +- ...ignKeyAccessServerToAttributeResponse.java | 2 +- ...essServerToAttributeResponseOrBuilder.java | 2 +- .../AssignKeyAccessServerToValueRequest.java | 2 +- ...eyAccessServerToValueRequestOrBuilder.java | 2 +- .../AssignKeyAccessServerToValueResponse.java | 2 +- ...yAccessServerToValueResponseOrBuilder.java | 2 +- sdkjava/com/attributes/Attribute.java | 109 +-- .../com/attributes/AttributeCreateUpdate.java | 2 +- .../AttributeCreateUpdateOrBuilder.java | 2 +- .../attributes/AttributeKeyAccessServer.java | 2 +- .../AttributeKeyAccessServerOrBuilder.java | 2 +- .../com/attributes/AttributeOrBuilder.java | 17 +- .../com/attributes/AttributeRuleTypeEnum.java | 2 +- sdkjava/com/attributes/AttributesProto.java | 321 ++++--- .../attributes/CreateAttributeRequest.java | 2 +- .../CreateAttributeRequestOrBuilder.java | 2 +- .../attributes/CreateAttributeResponse.java | 2 +- .../CreateAttributeResponseOrBuilder.java | 2 +- .../CreateAttributeValueRequest.java | 2 +- .../CreateAttributeValueRequestOrBuilder.java | 2 +- .../CreateAttributeValueResponse.java | 2 +- ...CreateAttributeValueResponseOrBuilder.java | 2 +- .../DeactivateAttributeRequest.java | 2 +- .../DeactivateAttributeRequestOrBuilder.java | 2 +- .../DeactivateAttributeResponse.java | 2 +- .../DeactivateAttributeResponseOrBuilder.java | 2 +- .../DeactivateAttributeValueRequest.java | 2 +- ...ctivateAttributeValueRequestOrBuilder.java | 2 +- .../DeactivateAttributeValueResponse.java | 2 +- ...tivateAttributeValueResponseOrBuilder.java | 2 +- .../com/attributes/GetAttributeRequest.java | 2 +- .../GetAttributeRequestOrBuilder.java | 2 +- .../com/attributes/GetAttributeResponse.java | 2 +- .../GetAttributeResponseOrBuilder.java | 2 +- .../attributes/GetAttributeValueRequest.java | 2 +- .../GetAttributeValueRequestOrBuilder.java | 2 +- .../attributes/GetAttributeValueResponse.java | 2 +- .../GetAttributeValueResponseOrBuilder.java | 2 +- .../ListAttributeValuesRequest.java | 2 +- .../ListAttributeValuesRequestOrBuilder.java | 2 +- .../ListAttributeValuesResponse.java | 2 +- .../ListAttributeValuesResponseOrBuilder.java | 2 +- .../com/attributes/ListAttributesRequest.java | 2 +- .../ListAttributesRequestOrBuilder.java | 2 +- .../attributes/ListAttributesResponse.java | 2 +- .../ListAttributesResponseOrBuilder.java | 2 +- ...veKeyAccessServerFromAttributeRequest.java | 2 +- ...ssServerFromAttributeRequestOrBuilder.java | 2 +- ...eKeyAccessServerFromAttributeResponse.java | 2 +- ...sServerFromAttributeResponseOrBuilder.java | 2 +- ...RemoveKeyAccessServerFromValueRequest.java | 2 +- ...AccessServerFromValueRequestOrBuilder.java | 2 +- ...emoveKeyAccessServerFromValueResponse.java | 2 +- ...ccessServerFromValueResponseOrBuilder.java | 2 +- .../attributes/UpdateAttributeRequest.java | 2 +- .../UpdateAttributeRequestOrBuilder.java | 2 +- .../attributes/UpdateAttributeResponse.java | 2 +- .../UpdateAttributeResponseOrBuilder.java | 2 +- .../UpdateAttributeValueRequest.java | 2 +- .../UpdateAttributeValueRequestOrBuilder.java | 2 +- .../UpdateAttributeValueResponse.java | 2 +- ...UpdateAttributeValueResponseOrBuilder.java | 2 +- sdkjava/com/attributes/Value.java | 109 +-- sdkjava/com/attributes/ValueCreateUpdate.java | 2 +- .../ValueCreateUpdateOrBuilder.java | 2 +- .../com/attributes/ValueKeyAccessServer.java | 2 +- .../ValueKeyAccessServerOrBuilder.java | 2 +- sdkjava/com/attributes/ValueOrBuilder.java | 17 +- sdkjava/com/authorization/Action.java | 2 +- .../com/authorization/ActionOrBuilder.java | 2 +- .../com/authorization/AuthorizationProto.java | 2 +- .../com/authorization/DecisionRequest.java | 2 +- .../DecisionRequestOrBuilder.java | 2 +- .../com/authorization/DecisionResponse.java | 2 +- .../DecisionResponseOrBuilder.java | 2 +- sdkjava/com/authorization/Entity.java | 2 +- sdkjava/com/authorization/EntityChain.java | 2 +- .../authorization/EntityChainOrBuilder.java | 2 +- sdkjava/com/authorization/EntityCustom.java | 2 +- .../authorization/EntityCustomOrBuilder.java | 2 +- .../com/authorization/EntityEntitlements.java | 2 +- .../EntityEntitlementsOrBuilder.java | 2 +- .../com/authorization/EntityOrBuilder.java | 2 +- .../authorization/GetDecisionsRequest.java | 2 +- .../GetDecisionsRequestOrBuilder.java | 2 +- .../authorization/GetDecisionsResponse.java | 2 +- .../GetDecisionsResponseOrBuilder.java | 2 +- .../authorization/GetEntitlementsRequest.java | 2 +- .../GetEntitlementsRequestOrBuilder.java | 2 +- .../GetEntitlementsResponse.java | 2 +- .../GetEntitlementsResponseOrBuilder.java | 2 +- .../com/authorization/ResourceAttributes.java | 2 +- .../ResourceAttributesOrBuilder.java | 2 +- sdkjava/com/common/ActiveStateEnum.java | 2 +- sdkjava/com/common/CommonProto.java | 2 +- sdkjava/com/common/Metadata.java | 2 +- sdkjava/com/common/MetadataMutable.java | 2 +- .../com/common/MetadataMutableOrBuilder.java | 2 +- sdkjava/com/common/MetadataOrBuilder.java | 2 +- .../CreateKeyAccessServerRequest.java | 2 +- ...CreateKeyAccessServerRequestOrBuilder.java | 2 +- .../CreateKeyAccessServerResponse.java | 2 +- ...reateKeyAccessServerResponseOrBuilder.java | 2 +- .../DeleteKeyAccessServerRequest.java | 2 +- ...DeleteKeyAccessServerRequestOrBuilder.java | 2 +- .../DeleteKeyAccessServerResponse.java | 2 +- ...eleteKeyAccessServerResponseOrBuilder.java | 2 +- .../GetKeyAccessServerRequest.java | 2 +- .../GetKeyAccessServerRequestOrBuilder.java | 2 +- .../GetKeyAccessServerResponse.java | 2 +- .../GetKeyAccessServerResponseOrBuilder.java | 2 +- sdkjava/com/kasregistry/KeyAccessServer.java | 2 +- .../KeyAccessServerCreateUpdate.java | 2 +- .../KeyAccessServerCreateUpdateOrBuilder.java | 2 +- .../kasregistry/KeyAccessServerOrBuilder.java | 2 +- .../KeyAccessServerRegistryProto.java | 2 +- .../ListKeyAccessServersRequest.java | 2 +- .../ListKeyAccessServersRequestOrBuilder.java | 2 +- .../ListKeyAccessServersResponse.java | 2 +- ...ListKeyAccessServersResponseOrBuilder.java | 2 +- sdkjava/com/kasregistry/PublicKey.java | 2 +- .../com/kasregistry/PublicKeyOrBuilder.java | 2 +- .../UpdateKeyAccessServerRequest.java | 2 +- ...UpdateKeyAccessServerRequestOrBuilder.java | 2 +- .../UpdateKeyAccessServerResponse.java | 2 +- ...pdateKeyAccessServerResponseOrBuilder.java | 2 +- .../namespaces/CreateNamespaceRequest.java | 2 +- .../CreateNamespaceRequestOrBuilder.java | 2 +- .../namespaces/CreateNamespaceResponse.java | 2 +- .../CreateNamespaceResponseOrBuilder.java | 2 +- .../DeactivateNamespaceRequest.java | 2 +- .../DeactivateNamespaceRequestOrBuilder.java | 2 +- .../DeactivateNamespaceResponse.java | 2 +- .../DeactivateNamespaceResponseOrBuilder.java | 2 +- .../com/namespaces/GetNamespaceRequest.java | 2 +- .../GetNamespaceRequestOrBuilder.java | 2 +- .../com/namespaces/GetNamespaceResponse.java | 2 +- .../GetNamespaceResponseOrBuilder.java | 2 +- .../com/namespaces/ListNamespacesRequest.java | 2 +- .../ListNamespacesRequestOrBuilder.java | 2 +- .../namespaces/ListNamespacesResponse.java | 2 +- .../ListNamespacesResponseOrBuilder.java | 2 +- sdkjava/com/namespaces/Namespace.java | 109 +-- .../com/namespaces/NamespaceOrBuilder.java | 17 +- sdkjava/com/namespaces/NamespacesProto.java | 83 +- .../namespaces/UpdateNamespaceRequest.java | 2 +- .../UpdateNamespaceRequestOrBuilder.java | 2 +- .../namespaces/UpdateNamespaceResponse.java | 2 +- .../UpdateNamespaceResponseOrBuilder.java | 2 +- .../CreateResourceMappingRequest.java | 2 +- ...CreateResourceMappingRequestOrBuilder.java | 2 +- .../CreateResourceMappingResponse.java | 2 +- ...reateResourceMappingResponseOrBuilder.java | 2 +- .../DeleteResourceMappingRequest.java | 2 +- ...DeleteResourceMappingRequestOrBuilder.java | 2 +- .../DeleteResourceMappingResponse.java | 2 +- ...eleteResourceMappingResponseOrBuilder.java | 2 +- .../GetResourceMappingRequest.java | 2 +- .../GetResourceMappingRequestOrBuilder.java | 2 +- .../GetResourceMappingResponse.java | 2 +- .../GetResourceMappingResponseOrBuilder.java | 2 +- .../ListResourceMappingsRequest.java | 2 +- .../ListResourceMappingsRequestOrBuilder.java | 2 +- .../ListResourceMappingsResponse.java | 2 +- ...ListResourceMappingsResponseOrBuilder.java | 2 +- .../com/resourcemapping/ResourceMapping.java | 2 +- .../ResourceMappingCreateUpdate.java | 2 +- .../ResourceMappingCreateUpdateOrBuilder.java | 2 +- .../ResourceMappingOrBuilder.java | 2 +- .../resourcemapping/ResourceMappingProto.java | 2 +- .../UpdateResourceMappingRequest.java | 2 +- ...UpdateResourceMappingRequestOrBuilder.java | 2 +- .../UpdateResourceMappingResponse.java | 2 +- ...pdateResourceMappingResponseOrBuilder.java | 2 +- .../CreateSubjectMappingRequest.java | 2 +- .../CreateSubjectMappingRequestOrBuilder.java | 2 +- .../CreateSubjectMappingResponse.java | 2 +- ...CreateSubjectMappingResponseOrBuilder.java | 2 +- .../DeleteSubjectMappingRequest.java | 2 +- .../DeleteSubjectMappingRequestOrBuilder.java | 2 +- .../DeleteSubjectMappingResponse.java | 2 +- ...DeleteSubjectMappingResponseOrBuilder.java | 2 +- .../GetSubjectMappingRequest.java | 2 +- .../GetSubjectMappingRequestOrBuilder.java | 2 +- .../GetSubjectMappingResponse.java | 2 +- .../GetSubjectMappingResponseOrBuilder.java | 2 +- .../ListSubjectMappingsRequest.java | 2 +- .../ListSubjectMappingsRequestOrBuilder.java | 2 +- .../ListSubjectMappingsResponse.java | 2 +- .../ListSubjectMappingsResponseOrBuilder.java | 2 +- .../com/subjectmapping/SubjectMapping.java | 2 +- .../SubjectMappingCreateUpdate.java | 2 +- .../SubjectMappingCreateUpdateOrBuilder.java | 2 +- .../SubjectMappingOperatorEnum.java | 2 +- .../SubjectMappingOrBuilder.java | 2 +- .../subjectmapping/SubjectMappingProto.java | 2 +- .../UpdateSubjectMappingRequest.java | 2 +- .../UpdateSubjectMappingRequestOrBuilder.java | 2 +- .../UpdateSubjectMappingResponse.java | 2 +- ...UpdateSubjectMappingResponseOrBuilder.java | 2 +- 211 files changed, 1095 insertions(+), 1271 deletions(-) diff --git a/docs/grpc/index.html b/docs/grpc/index.html index 43919edeaa..332fc595e7 100644 --- a/docs/grpc/index.html +++ b/docs/grpc/index.html @@ -1718,8 +1718,8 @@

    Namespace

    - - + + @@ -2095,8 +2095,8 @@

    Attribute

    - - + + @@ -2855,8 +2855,8 @@

    Value

    - - + + diff --git a/docs/openapi/attributes/attributes.swagger.json b/docs/openapi/attributes/attributes.swagger.json index 78118edf64..b2a5a68035 100644 --- a/docs/openapi/attributes/attributes.swagger.json +++ b/docs/openapi/attributes/attributes.swagger.json @@ -475,8 +475,8 @@ "$ref": "#/definitions/kasregistryKeyAccessServer" } }, - "state": { - "$ref": "#/definitions/commonActiveStateEnum", + "active": { + "type": "boolean", "title": "active by default until explicitly deactivated" } } @@ -667,8 +667,8 @@ }, "title": "list of key access servers" }, - "state": { - "$ref": "#/definitions/commonActiveStateEnum", + "active": { + "type": "boolean", "title": "active by default until explicitly deactivated" } } @@ -799,8 +799,8 @@ "type": "string", "title": "used to partition Attribute Definitions, support by namespace AuthN and enable federation" }, - "state": { - "$ref": "#/definitions/commonActiveStateEnum", + "active": { + "type": "boolean", "title": "active by default until explicitly deactivated" } } diff --git a/docs/openapi/namespaces/namespaces.swagger.json b/docs/openapi/namespaces/namespaces.swagger.json index a6efd5a4ae..11c68da4cb 100644 --- a/docs/openapi/namespaces/namespaces.swagger.json +++ b/docs/openapi/namespaces/namespaces.swagger.json @@ -232,8 +232,8 @@ "type": "string", "title": "used to partition Attribute Definitions, support by namespace AuthN and enable federation" }, - "state": { - "$ref": "#/definitions/commonActiveStateEnum", + "active": { + "type": "boolean", "title": "active by default until explicitly deactivated" } } diff --git a/docs/openapi/resourcemapping/resource_mapping.swagger.json b/docs/openapi/resourcemapping/resource_mapping.swagger.json index fb94deb00e..ad354a5960 100644 --- a/docs/openapi/resourcemapping/resource_mapping.swagger.json +++ b/docs/openapi/resourcemapping/resource_mapping.swagger.json @@ -205,23 +205,12 @@ }, "title": "list of key access servers" }, - "state": { - "$ref": "#/definitions/commonActiveStateEnum", + "active": { + "type": "boolean", "title": "active by default until explicitly deactivated" } } }, - "commonActiveStateEnum": { - "type": "string", - "enum": [ - "ACTIVE_STATE_ENUM_UNSPECIFIED", - "ACTIVE_STATE_ENUM_ACTIVE", - "ACTIVE_STATE_ENUM_INACTIVE", - "ACTIVE_STATE_ENUM_ANY" - ], - "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": { diff --git a/docs/openapi/subjectmapping/subject_mapping.swagger.json b/docs/openapi/subjectmapping/subject_mapping.swagger.json index 603c2faeb9..ff1e31b484 100644 --- a/docs/openapi/subjectmapping/subject_mapping.swagger.json +++ b/docs/openapi/subjectmapping/subject_mapping.swagger.json @@ -195,23 +195,12 @@ }, "title": "list of key access servers" }, - "state": { - "$ref": "#/definitions/commonActiveStateEnum", + "active": { + "type": "boolean", "title": "active by default until explicitly deactivated" } } }, - "commonActiveStateEnum": { - "type": "string", - "enum": [ - "ACTIVE_STATE_ENUM_UNSPECIFIED", - "ACTIVE_STATE_ENUM_ACTIVE", - "ACTIVE_STATE_ENUM_INACTIVE", - "ACTIVE_STATE_ENUM_ANY" - ], - "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": { diff --git a/proto/attributes/attributes.proto b/proto/attributes/attributes.proto index d9b68a77f0..d42678078d 100644 --- a/proto/attributes/attributes.proto +++ b/proto/attributes/attributes.proto @@ -39,7 +39,7 @@ message Attribute { repeated kasregistry.KeyAccessServer grants = 8; // active by default until explicitly deactivated - common.ActiveStateEnum state = 9; + bool active = 9; } message AttributeCreateUpdate { @@ -79,7 +79,7 @@ message Value { repeated kasregistry.KeyAccessServer grants = 6; // active by default until explicitly deactivated - common.ActiveStateEnum state = 7; + bool active = 7; } message ValueCreateUpdate { diff --git a/proto/namespaces/namespaces.proto b/proto/namespaces/namespaces.proto index 9edd3b679d..c853b7af65 100644 --- a/proto/namespaces/namespaces.proto +++ b/proto/namespaces/namespaces.proto @@ -21,7 +21,7 @@ message Namespace { ]; // active by default until explicitly deactivated - common.ActiveStateEnum state = 3; + bool active = 3; } /* diff --git a/sdk/attributes/attributes.pb.go b/sdk/attributes/attributes.pb.go index f306d225c3..fbe0eabefe 100644 --- a/sdk/attributes/attributes.pb.go +++ b/sdk/attributes/attributes.pb.go @@ -95,7 +95,7 @@ type Attribute struct { 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"` // active by default until explicitly deactivated - State common.ActiveStateEnum `protobuf:"varint,9,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"` + Active bool `protobuf:"varint,9,opt,name=active,proto3" json:"active,omitempty"` } func (x *Attribute) Reset() { @@ -179,11 +179,11 @@ func (x *Attribute) GetGrants() []*kasregistry.KeyAccessServer { return nil } -func (x *Attribute) GetState() common.ActiveStateEnum { +func (x *Attribute) GetActive() bool { if x != nil { - return x.State + return x.Active } - return common.ActiveStateEnum(0) + return false } type AttributeCreateUpdate struct { @@ -285,7 +285,7 @@ type Value struct { // list of key access servers Grants []*kasregistry.KeyAccessServer `protobuf:"bytes,6,rep,name=grants,proto3" json:"grants,omitempty"` // active by default until explicitly deactivated - State common.ActiveStateEnum `protobuf:"varint,7,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"` + Active bool `protobuf:"varint,7,opt,name=active,proto3" json:"active,omitempty"` } func (x *Value) Reset() { @@ -362,11 +362,11 @@ func (x *Value) GetGrants() []*kasregistry.KeyAccessServer { return nil } -func (x *Value) GetState() common.ActiveStateEnum { +func (x *Value) GetActive() bool { if x != nil { - return x.State + return x.Active } - return common.ActiveStateEnum(0) + return false } type ValueCreateUpdate struct { @@ -1919,7 +1919,7 @@ var file_attributes_attributes_proto_rawDesc = []byte{ 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x6e, 0x61, 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, 0xe6, 0x02, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xcf, 0x02, 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, @@ -1938,398 +1938,395 @@ var file_attributes_attributes_proto_rawDesc = []byte{ 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, 0x2d, - 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x09, 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, 0x8e, 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, 0x42, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x21, 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, 0x35, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 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, 0x85, - 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, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x07, 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, 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, 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, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x61, 0x74, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x16, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, + 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x8e, 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, 0x42, 0x0a, 0x04, + 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 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, 0x4b, 0x0a, 0x14, - 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, + 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, 0x35, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1d, 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, 0xee, 0x01, 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, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, + 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, 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, 0x4f, + 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, 0x35, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 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, 0x4b, + 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x61, 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 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, 0x4e, + 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x79, + 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x61, 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x79, 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, 0x47, - 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x52, 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, 0x33, 0x0a, 0x09, - 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x15, 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, 0x44, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x11, 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, 0x48, 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, 0x29, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x11, 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, 0x85, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x9d, - 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1d, 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, 0x47, - 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, 0x27, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x4b, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, - 0x8e, 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, 0x63, 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, 0x24, 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, 0x8f, 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, 0x63, 0x0a, + 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, + 0x52, 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, 0x33, + 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x15, 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, 0x44, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x48, 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, 0x29, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 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, + 0x85, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, + 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x9d, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 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, 0x4b, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x8e, 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, 0x63, 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, 0x24, 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, 0x90, 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, 0x63, 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, 0x24, 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, 0x91, 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, 0x63, 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, 0x24, 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, 0x7e, 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, 0x57, 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, 0x20, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x56, + 0x65, 0x72, 0x22, 0x8f, 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, + 0x63, 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, 0x24, 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, 0x90, 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, 0x63, 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, 0x24, 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, 0x91, 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, 0x63, 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, 0x24, 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, 0x7e, 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, 0x57, 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, 0x20, 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, 0x7f, 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, 0x57, 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, 0x20, 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, 0x80, 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, 0x57, 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, 0x20, 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, + 0x81, 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, 0x57, 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, 0x20, 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, 0x7f, 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, 0x57, 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, 0x20, 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, 0x80, 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, 0x57, 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, 0x20, 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, 0x81, 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, 0x57, 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, 0x20, 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, 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, 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, 0x85, 0x11, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, - 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, - 0x21, 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, 0x22, 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, 0x68, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, - 0x26, 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, 0x27, 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, 0x6b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x1f, 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, 0x20, 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, - 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x7f, 0x0a, 0x0f, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, - 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, 0x23, 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, 0x80, 0x01, 0x0a, - 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 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, 0x27, 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, - 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 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, 0x25, 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, 0x9b, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 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, 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, 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, 0x85, 0x11, 0x0a, 0x11, 0x41, 0x74, + 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, + 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0x12, 0x21, 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, 0x22, 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, 0x68, 0x0a, 0x13, 0x4c, 0x69, + 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x73, 0x12, 0x26, 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, 0x27, 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, 0x6b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, + 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x7f, 0x0a, + 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x22, 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, 0x23, 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, 0x80, + 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 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, 0x27, + 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, 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 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, 0x25, 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, 0x9b, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x12, 0x27, 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, 0x28, 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, 0xa0, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, - 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, + 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, 0x28, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, + 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, 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, + 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, 0x12, 0xa0, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 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, 0x28, 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, 0x98, 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, 0x2b, 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, 0x2c, 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, 0xd6, 0x01, 0x0a, 0x20, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x4b, 0x65, 0x79, 0x41, + 0x75, 0x65, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x98, 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, 0x2b, 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, 0x2c, 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, 0xd6, 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, 0x33, 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, 0x12, 0x33, 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, 0x34, 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, 0xdc, 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, 0x35, 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x52, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 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, 0xdc, 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, 0x35, 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, 0x36, 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, 0xcd, 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, 0x2f, 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, 0x30, 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, 0xd3, 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, 0x31, + 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, 0x32, 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, 0x36, 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, 0xcd, 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, 0x2f, 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, 0x30, 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, 0xd3, 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, 0x31, 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, - 0x32, 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, - 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, - 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x0a, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xe2, 0x02, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 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, 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, + 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, + 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x61, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, + 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xe2, 0x02, 0x16, 0x41, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0xea, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2385,8 +2382,8 @@ var file_attributes_attributes_proto_goTypes = []interface{}{ (*common.Metadata)(nil), // 35: common.Metadata (*namespaces.Namespace)(nil), // 36: namespaces.Namespace (*kasregistry.KeyAccessServer)(nil), // 37: kasregistry.KeyAccessServer - (common.ActiveStateEnum)(0), // 38: common.ActiveStateEnum - (*common.MetadataMutable)(nil), // 39: common.MetadataMutable + (*common.MetadataMutable)(nil), // 38: common.MetadataMutable + (common.ActiveStateEnum)(0), // 39: common.ActiveStateEnum } var file_attributes_attributes_proto_depIdxs = []int32{ 35, // 0: attributes.Attribute.metadata:type_name -> common.Metadata @@ -2394,71 +2391,69 @@ var file_attributes_attributes_proto_depIdxs = []int32{ 0, // 2: attributes.Attribute.rule:type_name -> attributes.AttributeRuleTypeEnum 3, // 3: attributes.Attribute.values:type_name -> attributes.Value 37, // 4: attributes.Attribute.grants:type_name -> kasregistry.KeyAccessServer - 38, // 5: attributes.Attribute.state:type_name -> common.ActiveStateEnum - 39, // 6: attributes.AttributeCreateUpdate.metadata:type_name -> common.MetadataMutable - 0, // 7: attributes.AttributeCreateUpdate.rule:type_name -> attributes.AttributeRuleTypeEnum - 4, // 8: attributes.AttributeCreateUpdate.values:type_name -> attributes.ValueCreateUpdate - 35, // 9: attributes.Value.metadata:type_name -> common.Metadata - 37, // 10: attributes.Value.grants:type_name -> kasregistry.KeyAccessServer - 38, // 11: attributes.Value.state:type_name -> common.ActiveStateEnum - 39, // 12: attributes.ValueCreateUpdate.metadata:type_name -> common.MetadataMutable - 38, // 13: attributes.ListAttributesRequest.state:type_name -> common.ActiveStateEnum - 1, // 14: attributes.ListAttributesResponse.attributes:type_name -> attributes.Attribute - 1, // 15: attributes.GetAttributeResponse.attribute:type_name -> attributes.Attribute - 2, // 16: attributes.CreateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate - 1, // 17: attributes.CreateAttributeResponse.attribute:type_name -> attributes.Attribute - 2, // 18: attributes.UpdateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate - 1, // 19: attributes.UpdateAttributeResponse.attribute:type_name -> attributes.Attribute - 1, // 20: attributes.DeactivateAttributeResponse.attribute:type_name -> attributes.Attribute - 3, // 21: attributes.GetAttributeValueResponse.value:type_name -> attributes.Value - 38, // 22: attributes.ListAttributeValuesRequest.state:type_name -> common.ActiveStateEnum - 3, // 23: attributes.ListAttributeValuesResponse.values:type_name -> attributes.Value - 4, // 24: attributes.CreateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate - 3, // 25: attributes.CreateAttributeValueResponse.value:type_name -> attributes.Value - 4, // 26: attributes.UpdateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate - 3, // 27: attributes.UpdateAttributeValueResponse.value:type_name -> attributes.Value - 3, // 28: attributes.DeactivateAttributeValueResponse.value:type_name -> attributes.Value - 5, // 29: attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 5, // 30: attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 5, // 31: attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 5, // 32: attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 6, // 33: attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 6, // 34: attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 6, // 35: attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 6, // 36: attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 7, // 37: attributes.AttributesService.ListAttributes:input_type -> attributes.ListAttributesRequest - 19, // 38: attributes.AttributesService.ListAttributeValues:input_type -> attributes.ListAttributeValuesRequest - 9, // 39: attributes.AttributesService.GetAttribute:input_type -> attributes.GetAttributeRequest - 11, // 40: attributes.AttributesService.CreateAttribute:input_type -> attributes.CreateAttributeRequest - 13, // 41: attributes.AttributesService.UpdateAttribute:input_type -> attributes.UpdateAttributeRequest - 15, // 42: attributes.AttributesService.DeactivateAttribute:input_type -> attributes.DeactivateAttributeRequest - 17, // 43: attributes.AttributesService.GetAttributeValue:input_type -> attributes.GetAttributeValueRequest - 21, // 44: attributes.AttributesService.CreateAttributeValue:input_type -> attributes.CreateAttributeValueRequest - 23, // 45: attributes.AttributesService.UpdateAttributeValue:input_type -> attributes.UpdateAttributeValueRequest - 25, // 46: attributes.AttributesService.DeactivateAttributeValue:input_type -> attributes.DeactivateAttributeValueRequest - 27, // 47: attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> attributes.AssignKeyAccessServerToAttributeRequest - 29, // 48: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> attributes.RemoveKeyAccessServerFromAttributeRequest - 31, // 49: attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> attributes.AssignKeyAccessServerToValueRequest - 33, // 50: attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> attributes.RemoveKeyAccessServerFromValueRequest - 8, // 51: attributes.AttributesService.ListAttributes:output_type -> attributes.ListAttributesResponse - 20, // 52: attributes.AttributesService.ListAttributeValues:output_type -> attributes.ListAttributeValuesResponse - 10, // 53: attributes.AttributesService.GetAttribute:output_type -> attributes.GetAttributeResponse - 12, // 54: attributes.AttributesService.CreateAttribute:output_type -> attributes.CreateAttributeResponse - 14, // 55: attributes.AttributesService.UpdateAttribute:output_type -> attributes.UpdateAttributeResponse - 16, // 56: attributes.AttributesService.DeactivateAttribute:output_type -> attributes.DeactivateAttributeResponse - 18, // 57: attributes.AttributesService.GetAttributeValue:output_type -> attributes.GetAttributeValueResponse - 22, // 58: attributes.AttributesService.CreateAttributeValue:output_type -> attributes.CreateAttributeValueResponse - 24, // 59: attributes.AttributesService.UpdateAttributeValue:output_type -> attributes.UpdateAttributeValueResponse - 26, // 60: attributes.AttributesService.DeactivateAttributeValue:output_type -> attributes.DeactivateAttributeValueResponse - 28, // 61: attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> attributes.AssignKeyAccessServerToAttributeResponse - 30, // 62: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> attributes.RemoveKeyAccessServerFromAttributeResponse - 32, // 63: attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> attributes.AssignKeyAccessServerToValueResponse - 34, // 64: attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> attributes.RemoveKeyAccessServerFromValueResponse - 51, // [51:65] is the sub-list for method output_type - 37, // [37:51] is the sub-list for method input_type - 37, // [37:37] is the sub-list for extension type_name - 37, // [37:37] is the sub-list for extension extendee - 0, // [0:37] is the sub-list for field type_name + 38, // 5: attributes.AttributeCreateUpdate.metadata:type_name -> common.MetadataMutable + 0, // 6: attributes.AttributeCreateUpdate.rule:type_name -> attributes.AttributeRuleTypeEnum + 4, // 7: attributes.AttributeCreateUpdate.values:type_name -> attributes.ValueCreateUpdate + 35, // 8: attributes.Value.metadata:type_name -> common.Metadata + 37, // 9: attributes.Value.grants:type_name -> kasregistry.KeyAccessServer + 38, // 10: attributes.ValueCreateUpdate.metadata:type_name -> common.MetadataMutable + 39, // 11: attributes.ListAttributesRequest.state:type_name -> common.ActiveStateEnum + 1, // 12: attributes.ListAttributesResponse.attributes:type_name -> attributes.Attribute + 1, // 13: attributes.GetAttributeResponse.attribute:type_name -> attributes.Attribute + 2, // 14: attributes.CreateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate + 1, // 15: attributes.CreateAttributeResponse.attribute:type_name -> attributes.Attribute + 2, // 16: attributes.UpdateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate + 1, // 17: attributes.UpdateAttributeResponse.attribute:type_name -> attributes.Attribute + 1, // 18: attributes.DeactivateAttributeResponse.attribute:type_name -> attributes.Attribute + 3, // 19: attributes.GetAttributeValueResponse.value:type_name -> attributes.Value + 39, // 20: attributes.ListAttributeValuesRequest.state:type_name -> common.ActiveStateEnum + 3, // 21: attributes.ListAttributeValuesResponse.values:type_name -> attributes.Value + 4, // 22: attributes.CreateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate + 3, // 23: attributes.CreateAttributeValueResponse.value:type_name -> attributes.Value + 4, // 24: attributes.UpdateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate + 3, // 25: attributes.UpdateAttributeValueResponse.value:type_name -> attributes.Value + 3, // 26: attributes.DeactivateAttributeValueResponse.value:type_name -> attributes.Value + 5, // 27: attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 5, // 28: attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 5, // 29: attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 5, // 30: attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 6, // 31: attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 6, // 32: attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 6, // 33: attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 6, // 34: attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 7, // 35: attributes.AttributesService.ListAttributes:input_type -> attributes.ListAttributesRequest + 19, // 36: attributes.AttributesService.ListAttributeValues:input_type -> attributes.ListAttributeValuesRequest + 9, // 37: attributes.AttributesService.GetAttribute:input_type -> attributes.GetAttributeRequest + 11, // 38: attributes.AttributesService.CreateAttribute:input_type -> attributes.CreateAttributeRequest + 13, // 39: attributes.AttributesService.UpdateAttribute:input_type -> attributes.UpdateAttributeRequest + 15, // 40: attributes.AttributesService.DeactivateAttribute:input_type -> attributes.DeactivateAttributeRequest + 17, // 41: attributes.AttributesService.GetAttributeValue:input_type -> attributes.GetAttributeValueRequest + 21, // 42: attributes.AttributesService.CreateAttributeValue:input_type -> attributes.CreateAttributeValueRequest + 23, // 43: attributes.AttributesService.UpdateAttributeValue:input_type -> attributes.UpdateAttributeValueRequest + 25, // 44: attributes.AttributesService.DeactivateAttributeValue:input_type -> attributes.DeactivateAttributeValueRequest + 27, // 45: attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> attributes.AssignKeyAccessServerToAttributeRequest + 29, // 46: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> attributes.RemoveKeyAccessServerFromAttributeRequest + 31, // 47: attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> attributes.AssignKeyAccessServerToValueRequest + 33, // 48: attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> attributes.RemoveKeyAccessServerFromValueRequest + 8, // 49: attributes.AttributesService.ListAttributes:output_type -> attributes.ListAttributesResponse + 20, // 50: attributes.AttributesService.ListAttributeValues:output_type -> attributes.ListAttributeValuesResponse + 10, // 51: attributes.AttributesService.GetAttribute:output_type -> attributes.GetAttributeResponse + 12, // 52: attributes.AttributesService.CreateAttribute:output_type -> attributes.CreateAttributeResponse + 14, // 53: attributes.AttributesService.UpdateAttribute:output_type -> attributes.UpdateAttributeResponse + 16, // 54: attributes.AttributesService.DeactivateAttribute:output_type -> attributes.DeactivateAttributeResponse + 18, // 55: attributes.AttributesService.GetAttributeValue:output_type -> attributes.GetAttributeValueResponse + 22, // 56: attributes.AttributesService.CreateAttributeValue:output_type -> attributes.CreateAttributeValueResponse + 24, // 57: attributes.AttributesService.UpdateAttributeValue:output_type -> attributes.UpdateAttributeValueResponse + 26, // 58: attributes.AttributesService.DeactivateAttributeValue:output_type -> attributes.DeactivateAttributeValueResponse + 28, // 59: attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> attributes.AssignKeyAccessServerToAttributeResponse + 30, // 60: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> attributes.RemoveKeyAccessServerFromAttributeResponse + 32, // 61: attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> attributes.AssignKeyAccessServerToValueResponse + 34, // 62: attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> attributes.RemoveKeyAccessServerFromValueResponse + 49, // [49:63] is the sub-list for method output_type + 35, // [35:49] is the sub-list for method input_type + 35, // [35:35] is the sub-list for extension type_name + 35, // [35:35] is the sub-list for extension extendee + 0, // [0:35] is the sub-list for field type_name } func init() { file_attributes_attributes_proto_init() } diff --git a/sdk/namespaces/namespaces.pb.go b/sdk/namespaces/namespaces.pb.go index ba3acb64a2..133dbd7893 100644 --- a/sdk/namespaces/namespaces.pb.go +++ b/sdk/namespaces/namespaces.pb.go @@ -33,7 +33,7 @@ type Namespace struct { // used to partition Attribute Definitions, support by namespace AuthN and enable federation Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // active by default until explicitly deactivated - State common.ActiveStateEnum `protobuf:"varint,3,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"` + Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` } func (x *Namespace) Reset() { @@ -82,11 +82,11 @@ func (x *Namespace) GetName() string { return "" } -func (x *Namespace) GetState() common.ActiveStateEnum { +func (x *Namespace) GetActive() bool { if x != nil { - return x.State + return x.Active } - return common.ActiveStateEnum(0) + return false } type GetNamespaceRequest struct { @@ -569,7 +569,7 @@ var file_namespaces_namespaces_proto_rawDesc = []byte{ 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, 0x13, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc4, 0x04, 0x0a, 0x09, 0x4e, 0x61, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xad, 0x04, 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, @@ -603,102 +603,100 @@ var file_namespaces_namespaces_proto_rawDesc = []byte{ 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, 0x2d, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 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, 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, - 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x4f, 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, 0x35, - 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x15, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x8e, - 0x05, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x76, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x77, 0x0a, 0x0e, 0x4c, - 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 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, 0x23, 0x2e, 0x6e, 0x61, - 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, + 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 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, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 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, 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x8b, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, 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, 0x27, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x44, + 0x12, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 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, 0x4e, 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, + 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x15, 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, 0x4e, 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, 0x33, 0x0a, + 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x15, 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, 0x8e, 0x05, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x76, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x77, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, 0x7a, 0x0a, + 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x12, 0x22, 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, 0x23, 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, 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x8b, 0x01, 0x0a, 0x13, 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, - 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, - 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x6e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x4e, 0x58, 0x58, 0xaa, 0x02, 0x0a, - 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xe2, 0x02, 0x16, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x63, 0x65, 0x12, 0x26, 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, 0x27, 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, 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, + 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, 0x30, + 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, + 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, + 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0xa2, 0x02, 0x03, 0x4e, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, + 0x63, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, + 0xe2, 0x02, 0x16, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x5c, 0x47, 0x50, + 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, + 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -729,27 +727,26 @@ var file_namespaces_namespaces_proto_goTypes = []interface{}{ (common.ActiveStateEnum)(0), // 11: common.ActiveStateEnum } var file_namespaces_namespaces_proto_depIdxs = []int32{ - 11, // 0: namespaces.Namespace.state:type_name -> common.ActiveStateEnum - 0, // 1: namespaces.GetNamespaceResponse.namespace:type_name -> namespaces.Namespace - 11, // 2: namespaces.ListNamespacesRequest.state:type_name -> common.ActiveStateEnum - 0, // 3: namespaces.ListNamespacesResponse.namespaces:type_name -> namespaces.Namespace - 0, // 4: namespaces.CreateNamespaceResponse.namespace:type_name -> namespaces.Namespace - 0, // 5: namespaces.UpdateNamespaceResponse.namespace:type_name -> namespaces.Namespace - 1, // 6: namespaces.NamespaceService.GetNamespace:input_type -> namespaces.GetNamespaceRequest - 3, // 7: namespaces.NamespaceService.ListNamespaces:input_type -> namespaces.ListNamespacesRequest - 5, // 8: namespaces.NamespaceService.CreateNamespace:input_type -> namespaces.CreateNamespaceRequest - 7, // 9: namespaces.NamespaceService.UpdateNamespace:input_type -> namespaces.UpdateNamespaceRequest - 9, // 10: namespaces.NamespaceService.DeactivateNamespace:input_type -> namespaces.DeactivateNamespaceRequest - 2, // 11: namespaces.NamespaceService.GetNamespace:output_type -> namespaces.GetNamespaceResponse - 4, // 12: namespaces.NamespaceService.ListNamespaces:output_type -> namespaces.ListNamespacesResponse - 6, // 13: namespaces.NamespaceService.CreateNamespace:output_type -> namespaces.CreateNamespaceResponse - 8, // 14: namespaces.NamespaceService.UpdateNamespace:output_type -> namespaces.UpdateNamespaceResponse - 10, // 15: namespaces.NamespaceService.DeactivateNamespace:output_type -> 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 + 0, // 0: namespaces.GetNamespaceResponse.namespace:type_name -> namespaces.Namespace + 11, // 1: namespaces.ListNamespacesRequest.state:type_name -> common.ActiveStateEnum + 0, // 2: namespaces.ListNamespacesResponse.namespaces:type_name -> namespaces.Namespace + 0, // 3: namespaces.CreateNamespaceResponse.namespace:type_name -> namespaces.Namespace + 0, // 4: namespaces.UpdateNamespaceResponse.namespace:type_name -> namespaces.Namespace + 1, // 5: namespaces.NamespaceService.GetNamespace:input_type -> namespaces.GetNamespaceRequest + 3, // 6: namespaces.NamespaceService.ListNamespaces:input_type -> namespaces.ListNamespacesRequest + 5, // 7: namespaces.NamespaceService.CreateNamespace:input_type -> namespaces.CreateNamespaceRequest + 7, // 8: namespaces.NamespaceService.UpdateNamespace:input_type -> namespaces.UpdateNamespaceRequest + 9, // 9: namespaces.NamespaceService.DeactivateNamespace:input_type -> namespaces.DeactivateNamespaceRequest + 2, // 10: namespaces.NamespaceService.GetNamespace:output_type -> namespaces.GetNamespaceResponse + 4, // 11: namespaces.NamespaceService.ListNamespaces:output_type -> namespaces.ListNamespacesResponse + 6, // 12: namespaces.NamespaceService.CreateNamespace:output_type -> namespaces.CreateNamespaceResponse + 8, // 13: namespaces.NamespaceService.UpdateNamespace:output_type -> namespaces.UpdateNamespaceResponse + 10, // 14: namespaces.NamespaceService.DeactivateNamespace:output_type -> namespaces.DeactivateNamespaceResponse + 10, // [10:15] is the sub-list for method output_type + 5, // [5:10] is the sub-list for method input_type + 5, // [5:5] is the sub-list for extension type_name + 5, // [5:5] is the sub-list for extension extendee + 0, // [0:5] is the sub-list for field type_name } func init() { file_namespaces_namespaces_proto_init() } diff --git a/sdkjava/com/attributes/AssignKeyAccessServerToAttributeRequest.java b/sdkjava/com/attributes/AssignKeyAccessServerToAttributeRequest.java index 038fdea5ad..5d1720b12e 100644 --- a/sdkjava/com/attributes/AssignKeyAccessServerToAttributeRequest.java +++ b/sdkjava/com/attributes/AssignKeyAccessServerToAttributeRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/AssignKeyAccessServerToAttributeRequestOrBuilder.java b/sdkjava/com/attributes/AssignKeyAccessServerToAttributeRequestOrBuilder.java index f7bf2d3ce8..1d698054d4 100644 --- a/sdkjava/com/attributes/AssignKeyAccessServerToAttributeRequestOrBuilder.java +++ b/sdkjava/com/attributes/AssignKeyAccessServerToAttributeRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface AssignKeyAccessServerToAttributeRequestOrBuilder extends diff --git a/sdkjava/com/attributes/AssignKeyAccessServerToAttributeResponse.java b/sdkjava/com/attributes/AssignKeyAccessServerToAttributeResponse.java index 1591f9f9ea..45c81a7a07 100644 --- a/sdkjava/com/attributes/AssignKeyAccessServerToAttributeResponse.java +++ b/sdkjava/com/attributes/AssignKeyAccessServerToAttributeResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/AssignKeyAccessServerToAttributeResponseOrBuilder.java b/sdkjava/com/attributes/AssignKeyAccessServerToAttributeResponseOrBuilder.java index 6b15472fca..6e2eda49c9 100644 --- a/sdkjava/com/attributes/AssignKeyAccessServerToAttributeResponseOrBuilder.java +++ b/sdkjava/com/attributes/AssignKeyAccessServerToAttributeResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface AssignKeyAccessServerToAttributeResponseOrBuilder extends diff --git a/sdkjava/com/attributes/AssignKeyAccessServerToValueRequest.java b/sdkjava/com/attributes/AssignKeyAccessServerToValueRequest.java index 814427d359..3deadf75b6 100644 --- a/sdkjava/com/attributes/AssignKeyAccessServerToValueRequest.java +++ b/sdkjava/com/attributes/AssignKeyAccessServerToValueRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/AssignKeyAccessServerToValueRequestOrBuilder.java b/sdkjava/com/attributes/AssignKeyAccessServerToValueRequestOrBuilder.java index 056c31058f..004bd6013d 100644 --- a/sdkjava/com/attributes/AssignKeyAccessServerToValueRequestOrBuilder.java +++ b/sdkjava/com/attributes/AssignKeyAccessServerToValueRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface AssignKeyAccessServerToValueRequestOrBuilder extends diff --git a/sdkjava/com/attributes/AssignKeyAccessServerToValueResponse.java b/sdkjava/com/attributes/AssignKeyAccessServerToValueResponse.java index f4647895e5..307b19ca9c 100644 --- a/sdkjava/com/attributes/AssignKeyAccessServerToValueResponse.java +++ b/sdkjava/com/attributes/AssignKeyAccessServerToValueResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/AssignKeyAccessServerToValueResponseOrBuilder.java b/sdkjava/com/attributes/AssignKeyAccessServerToValueResponseOrBuilder.java index 0f8d6be052..0978c210ec 100644 --- a/sdkjava/com/attributes/AssignKeyAccessServerToValueResponseOrBuilder.java +++ b/sdkjava/com/attributes/AssignKeyAccessServerToValueResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface AssignKeyAccessServerToValueResponseOrBuilder extends diff --git a/sdkjava/com/attributes/Attribute.java b/sdkjava/com/attributes/Attribute.java index 2eeecce341..c100e20189 100644 --- a/sdkjava/com/attributes/Attribute.java +++ b/sdkjava/com/attributes/Attribute.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** @@ -22,7 +22,6 @@ private Attribute() { rule_ = 0; values_ = java.util.Collections.emptyList(); grants_ = java.util.Collections.emptyList(); - state_ = 0; } @java.lang.Override @@ -316,30 +315,19 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( return grants_.get(index); } - public static final int STATE_FIELD_NUMBER = 9; - private int state_ = 0; + public static final int ACTIVE_FIELD_NUMBER = 9; + private boolean active_ = false; /** *
        * active by default until explicitly deactivated
        * 
    * - * .common.ActiveStateEnum state = 9 [json_name = "state"]; - * @return The enum numeric value on the wire for state. + * bool active = 9 [json_name = "active"]; + * @return The active. */ - @java.lang.Override public int getStateValue() { - return state_; - } - /** - *
    -   * active by default until explicitly deactivated
    -   * 
    - * - * .common.ActiveStateEnum state = 9 [json_name = "state"]; - * @return The state. - */ - @java.lang.Override public com.common.ActiveStateEnum getState() { - com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); - return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; + @java.lang.Override + public boolean getActive() { + return active_; } private byte memoizedIsInitialized = -1; @@ -377,8 +365,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) for (int i = 0; i < grants_.size(); i++) { output.writeMessage(8, grants_.get(i)); } - if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { - output.writeEnum(9, state_); + if (active_ != false) { + output.writeBool(9, active_); } getUnknownFields().writeTo(output); } @@ -415,9 +403,9 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(8, grants_.get(i)); } - if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { + if (active_ != false) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(9, state_); + .computeBoolSize(9, active_); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -453,7 +441,8 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getValuesList())) return false; if (!getGrantsList() .equals(other.getGrantsList())) return false; - if (state_ != other.state_) return false; + if (getActive() + != other.getActive()) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -487,8 +476,9 @@ public int hashCode() { hash = (37 * hash) + GRANTS_FIELD_NUMBER; hash = (53 * hash) + getGrantsList().hashCode(); } - hash = (37 * hash) + STATE_FIELD_NUMBER; - hash = (53 * hash) + state_; + hash = (37 * hash) + ACTIVE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getActive()); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -656,7 +646,7 @@ public Builder clear() { grantsBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000040); - state_ = 0; + active_ = false; return this; } @@ -735,7 +725,7 @@ private void buildPartial0(com.attributes.Attribute result) { result.rule_ = rule_; } if (((from_bitField0_ & 0x00000080) != 0)) { - result.state_ = state_; + result.active_ = active_; } result.bitField0_ |= to_bitField0_; } @@ -855,8 +845,8 @@ public Builder mergeFrom(com.attributes.Attribute other) { } } } - if (other.state_ != 0) { - setStateValue(other.getStateValue()); + if (other.getActive() != false) { + setActive(other.getActive()); } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -940,7 +930,7 @@ public Builder mergeFrom( break; } // case 66 case 72: { - state_ = input.readEnum(); + active_ = input.readBool(); bitField0_ |= 0x00000080; break; } // case 72 @@ -1992,61 +1982,32 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder( return grantsBuilder_; } - private int state_ = 0; - /** - *
    -     * active by default until explicitly deactivated
    -     * 
    - * - * .common.ActiveStateEnum state = 9 [json_name = "state"]; - * @return The enum numeric value on the wire for state. - */ - @java.lang.Override public int getStateValue() { - return state_; - } + private boolean active_ ; /** *
          * active by default until explicitly deactivated
          * 
    * - * .common.ActiveStateEnum state = 9 [json_name = "state"]; - * @param value The enum numeric value on the wire for state to set. - * @return This builder for chaining. - */ - public Builder setStateValue(int value) { - state_ = value; - bitField0_ |= 0x00000080; - onChanged(); - return this; - } - /** - *
    -     * active by default until explicitly deactivated
    -     * 
    - * - * .common.ActiveStateEnum state = 9 [json_name = "state"]; - * @return The state. + * bool active = 9 [json_name = "active"]; + * @return The active. */ @java.lang.Override - public com.common.ActiveStateEnum getState() { - com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); - return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; + public boolean getActive() { + return active_; } /** *
          * active by default until explicitly deactivated
          * 
    * - * .common.ActiveStateEnum state = 9 [json_name = "state"]; - * @param value The state to set. + * bool active = 9 [json_name = "active"]; + * @param value The active to set. * @return This builder for chaining. */ - public Builder setState(com.common.ActiveStateEnum value) { - if (value == null) { - throw new NullPointerException(); - } + public Builder setActive(boolean value) { + + active_ = value; bitField0_ |= 0x00000080; - state_ = value.getNumber(); onChanged(); return this; } @@ -2055,12 +2016,12 @@ public Builder setState(com.common.ActiveStateEnum value) { * active by default until explicitly deactivated * * - * .common.ActiveStateEnum state = 9 [json_name = "state"]; + * bool active = 9 [json_name = "active"]; * @return This builder for chaining. */ - public Builder clearState() { + public Builder clearActive() { bitField0_ = (bitField0_ & ~0x00000080); - state_ = 0; + active_ = false; onChanged(); return this; } diff --git a/sdkjava/com/attributes/AttributeCreateUpdate.java b/sdkjava/com/attributes/AttributeCreateUpdate.java index 93fc53953f..302ff4b84f 100644 --- a/sdkjava/com/attributes/AttributeCreateUpdate.java +++ b/sdkjava/com/attributes/AttributeCreateUpdate.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/AttributeCreateUpdateOrBuilder.java b/sdkjava/com/attributes/AttributeCreateUpdateOrBuilder.java index 9f9dece7b6..7303cf418a 100644 --- a/sdkjava/com/attributes/AttributeCreateUpdateOrBuilder.java +++ b/sdkjava/com/attributes/AttributeCreateUpdateOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface AttributeCreateUpdateOrBuilder extends diff --git a/sdkjava/com/attributes/AttributeKeyAccessServer.java b/sdkjava/com/attributes/AttributeKeyAccessServer.java index f13143f566..7e2bf70849 100644 --- a/sdkjava/com/attributes/AttributeKeyAccessServer.java +++ b/sdkjava/com/attributes/AttributeKeyAccessServer.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/AttributeKeyAccessServerOrBuilder.java b/sdkjava/com/attributes/AttributeKeyAccessServerOrBuilder.java index f22b016502..a426ac792c 100644 --- a/sdkjava/com/attributes/AttributeKeyAccessServerOrBuilder.java +++ b/sdkjava/com/attributes/AttributeKeyAccessServerOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface AttributeKeyAccessServerOrBuilder extends diff --git a/sdkjava/com/attributes/AttributeOrBuilder.java b/sdkjava/com/attributes/AttributeOrBuilder.java index 5dc5c4c340..5890ad425a 100644 --- a/sdkjava/com/attributes/AttributeOrBuilder.java +++ b/sdkjava/com/attributes/AttributeOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface AttributeOrBuilder extends @@ -166,17 +166,8 @@ com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * .common.ActiveStateEnum state = 9 [json_name = "state"]; - * @return The enum numeric value on the wire for state. + * bool active = 9 [json_name = "active"]; + * @return The active. */ - int getStateValue(); - /** - *
    -   * active by default until explicitly deactivated
    -   * 
    - * - * .common.ActiveStateEnum state = 9 [json_name = "state"]; - * @return The state. - */ - com.common.ActiveStateEnum getState(); + boolean getActive(); } diff --git a/sdkjava/com/attributes/AttributeRuleTypeEnum.java b/sdkjava/com/attributes/AttributeRuleTypeEnum.java index 8ffcb79e87..dec4e4d882 100644 --- a/sdkjava/com/attributes/AttributeRuleTypeEnum.java +++ b/sdkjava/com/attributes/AttributeRuleTypeEnum.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/AttributesProto.java b/sdkjava/com/attributes/AttributesProto.java index bbdc31cff6..670ad35ef3 100644 --- a/sdkjava/com/attributes/AttributesProto.java +++ b/sdkjava/com/attributes/AttributesProto.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public final class AttributesProto { @@ -198,7 +198,7 @@ public static void registerAllExtensions( "s\032\033buf/validate/validate.proto\032\023common/c" + "ommon.proto\032\034google/api/annotations.prot" + "o\032,kasregistry/key_access_server_registr" + - "y.proto\032\033namespaces/namespaces.proto\"\346\002\n" + + "y.proto\032\033namespaces/namespaces.proto\"\317\002\n" + "\tAttribute\022\016\n\002id\030\001 \001(\tR\002id\022,\n\010metadata\030\002" + " \001(\0132\020.common.MetadataR\010metadata\0223\n\tname" + "space\030\003 \001(\0132\025.namespaces.NamespaceR\tname" + @@ -206,163 +206,162 @@ public static void registerAllExtensions( "!.attributes.AttributeRuleTypeEnumB\013\272H\010\202" + "\001\002\020\001\310\001\001R\004rule\022)\n\006values\030\007 \003(\0132\021.attribut" + "es.ValueR\006values\0224\n\006grants\030\010 \003(\0132\034.kasre" + - "gistry.KeyAccessServerR\006grants\022-\n\005state\030" + - "\t \001(\0162\027.common.ActiveStateEnumR\005state\"\216\002" + - "\n\025AttributeCreateUpdate\0223\n\010metadata\030\001 \001(" + - "\0132\027.common.MetadataMutableR\010metadata\022)\n\014" + - "namespace_id\030\002 \001(\tB\006\272H\003\310\001\001R\013namespaceId\022" + - "\032\n\004name\030\003 \001(\tB\006\272H\003\310\001\001R\004name\022B\n\004rule\030\004 \001(" + - "\0162!.attributes.AttributeRuleTypeEnumB\013\272H" + - "\010\202\001\002\020\001\310\001\001R\004rule\0225\n\006values\030\005 \003(\0132\035.attrib" + - "utes.ValueCreateUpdateR\006values\"\205\002\n\005Value" + - "\022\016\n\002id\030\001 \001(\tR\002id\022,\n\010metadata\030\002 \001(\0132\020.com" + - "mon.MetadataR\010metadata\022)\n\014attribute_id\030\003" + - " \001(\tB\006\272H\003\310\001\001R\013attributeId\022\024\n\005value\030\004 \001(\t" + - "R\005value\022\030\n\007members\030\005 \003(\tR\007members\0224\n\006gra" + - "nts\030\006 \003(\0132\034.kasregistry.KeyAccessServerR" + - "\006grants\022-\n\005state\030\007 \001(\0162\027.common.ActiveSt" + - "ateEnumR\005state\"x\n\021ValueCreateUpdate\0223\n\010m" + - "etadata\030\001 \001(\0132\027.common.MetadataMutableR\010" + - "metadata\022\024\n\005value\030\002 \001(\tR\005value\022\030\n\007member" + - "s\030\003 \003(\tR\007members\"n\n\030AttributeKeyAccessSe" + - "rver\022!\n\014attribute_id\030\001 \001(\tR\013attributeId\022" + - "/\n\024key_access_server_id\030\002 \001(\tR\021keyAccess" + - "ServerId\"b\n\024ValueKeyAccessServer\022\031\n\010valu" + - "e_id\030\001 \001(\tR\007valueId\022/\n\024key_access_server" + - "_id\030\002 \001(\tR\021keyAccessServerId\"F\n\025ListAttr" + - "ibutesRequest\022-\n\005state\030\001 \001(\0162\027.common.Ac" + - "tiveStateEnumR\005state\"O\n\026ListAttributesRe" + - "sponse\0225\n\nattributes\030\001 \003(\0132\025.attributes." + - "AttributeR\nattributes\"-\n\023GetAttributeReq" + - "uest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetAttri" + - "buteResponse\0223\n\tattribute\030\001 \001(\0132\025.attrib" + - "utes.AttributeR\tattribute\"a\n\026CreateAttri" + - "buteRequest\022G\n\tattribute\030\001 \001(\0132!.attribu" + - "tes.AttributeCreateUpdateB\006\272H\003\310\001\001R\tattri" + - "bute\"N\n\027CreateAttributeResponse\0223\n\tattri" + - "bute\030\001 \001(\0132\025.attributes.AttributeR\tattri" + - "bute\"y\n\026UpdateAttributeRequest\022\026\n\002id\030\001 \001" + - "(\tB\006\272H\003\310\001\001R\002id\022G\n\tattribute\030\002 \001(\0132!.attr" + - "ibutes.AttributeCreateUpdateB\006\272H\003\310\001\001R\tat" + - "tribute\"N\n\027UpdateAttributeResponse\0223\n\tat" + - "tribute\030\001 \001(\0132\025.attributes.AttributeR\tat" + - "tribute\"4\n\032DeactivateAttributeRequest\022\026\n" + - "\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"R\n\033DeactivateAttri" + - "buteResponse\0223\n\tattribute\030\001 \001(\0132\025.attrib" + - "utes.AttributeR\tattribute\"2\n\030GetAttribut" + - "eValueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"D\n" + - "\031GetAttributeValueResponse\022\'\n\005value\030\001 \001(" + - "\0132\021.attributes.ValueR\005value\"v\n\032ListAttri" + - "buteValuesRequest\022)\n\014attribute_id\030\001 \001(\tB" + - "\006\272H\003\310\001\001R\013attributeId\022-\n\005state\030\002 \001(\0162\027.co" + - "mmon.ActiveStateEnumR\005state\"H\n\033ListAttri" + - "buteValuesResponse\022)\n\006values\030\001 \003(\0132\021.att" + - "ributes.ValueR\006values\"\205\001\n\033CreateAttribut" + - "eValueRequest\022)\n\014attribute_id\030\001 \001(\tB\006\272H\003" + - "\310\001\001R\013attributeId\022;\n\005value\030\002 \001(\0132\035.attrib" + - "utes.ValueCreateUpdateB\006\272H\003\310\001\001R\005value\"G\n" + - "\034CreateAttributeValueResponse\022\'\n\005value\030\001" + - " \001(\0132\021.attributes.ValueR\005value\"\235\001\n\033Updat" + - "eAttributeValueRequest\022)\n\014attribute_id\030\001" + - " \001(\tB\006\272H\003\310\001\001R\013attributeId\022\026\n\002id\030\002 \001(\tB\006\272" + - "H\003\310\001\001R\002id\022;\n\005value\030\003 \001(\0132\035.attributes.Va" + - "lueCreateUpdateB\006\272H\003\310\001\001R\005value\"G\n\034Update" + - "AttributeValueResponse\022\'\n\005value\030\001 \001(\0132\021." + - "attributes.ValueR\005value\"9\n\037DeactivateAtt" + - "ributeValueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002" + - "id\"K\n DeactivateAttributeValueResponse\022\'" + - "\n\005value\030\001 \001(\0132\021.attributes.ValueR\005value\"" + - "\216\001\n\'AssignKeyAccessServerToAttributeRequ" + - "est\022c\n\033attribute_key_access_server\030\001 \001(\013" + - "2$.attributes.AttributeKeyAccessServerR\030" + - "attributeKeyAccessServer\"\217\001\n(AssignKeyAc" + - "cessServerToAttributeResponse\022c\n\033attribu" + - "te_key_access_server\030\001 \001(\0132$.attributes." + - "AttributeKeyAccessServerR\030attributeKeyAc" + - "cessServer\"\220\001\n)RemoveKeyAccessServerFrom" + - "AttributeRequest\022c\n\033attribute_key_access" + - "_server\030\001 \001(\0132$.attributes.AttributeKeyA" + - "ccessServerR\030attributeKeyAccessServer\"\221\001" + - "\n*RemoveKeyAccessServerFromAttributeResp" + - "onse\022c\n\033attribute_key_access_server\030\001 \001(" + - "\0132$.attributes.AttributeKeyAccessServerR" + - "\030attributeKeyAccessServer\"~\n#AssignKeyAc" + - "cessServerToValueRequest\022W\n\027value_key_ac" + - "cess_server\030\001 \001(\0132 .attributes.ValueKeyA" + - "ccessServerR\024valueKeyAccessServer\"\177\n$Ass" + - "ignKeyAccessServerToValueResponse\022W\n\027val" + - "ue_key_access_server\030\001 \001(\0132 .attributes." + - "ValueKeyAccessServerR\024valueKeyAccessServ" + - "er\"\200\001\n%RemoveKeyAccessServerFromValueReq" + - "uest\022W\n\027value_key_access_server\030\001 \001(\0132 ." + - "attributes.ValueKeyAccessServerR\024valueKe" + - "yAccessServer\"\201\001\n&RemoveKeyAccessServerF" + - "romValueResponse\022W\n\027value_key_access_ser" + - "ver\030\001 \001(\0132 .attributes.ValueKeyAccessSer" + - "verR\024valueKeyAccessServer*\263\001\n\025AttributeR" + - "uleTypeEnum\022(\n$ATTRIBUTE_RULE_TYPE_ENUM_" + - "UNSPECIFIED\020\000\022#\n\037ATTRIBUTE_RULE_TYPE_ENU" + - "M_ALL_OF\020\001\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_A" + - "NY_OF\020\002\022&\n\"ATTRIBUTE_RULE_TYPE_ENUM_HIER" + - "ARCHY\020\0032\205\021\n\021AttributesService\022Y\n\016ListAtt" + - "ributes\022!.attributes.ListAttributesReque" + - "st\032\".attributes.ListAttributesResponse\"\000" + - "\022h\n\023ListAttributeValues\022&.attributes.Lis" + - "tAttributeValuesRequest\032\'.attributes.Lis" + - "tAttributeValuesResponse\"\000\022k\n\014GetAttribu" + - "te\022\037.attributes.GetAttributeRequest\032 .at" + - "tributes.GetAttributeResponse\"\030\202\323\344\223\002\022\022\020/" + - "attributes/{id}\022z\n\017CreateAttribute\022\".att" + - "ributes.CreateAttributeRequest\032#.attribu" + - "tes.CreateAttributeResponse\"\036\202\323\344\223\002\030\"\013/at" + - "tributes:\tattribute\022\177\n\017UpdateAttribute\022\"" + - ".attributes.UpdateAttributeRequest\032#.att" + - "ributes.UpdateAttributeResponse\"#\202\323\344\223\002\035\"" + - "\020/attributes/{id}:\tattribute\022\200\001\n\023Deactiv" + - "ateAttribute\022&.attributes.DeactivateAttr" + - "ibuteRequest\032\'.attributes.DeactivateAttr" + - "ibuteResponse\"\030\202\323\344\223\002\022*\020/attributes/{id}\022" + - "\203\001\n\021GetAttributeValue\022$.attributes.GetAt" + - "tributeValueRequest\032%.attributes.GetAttr" + - "ibuteValueResponse\"!\202\323\344\223\002\033\022\031/attributes/" + - "_/values/{id}\022\233\001\n\024CreateAttributeValue\022\'" + - ".attributes.CreateAttributeValueRequest\032" + - "(.attributes.CreateAttributeValueRespons" + - "e\"0\202\323\344\223\002*\"!/attributes/{attribute_id}/va" + - "lues:\005value\022\240\001\n\024UpdateAttributeValue\022\'.a" + - "ttributes.UpdateAttributeValueRequest\032(." + - "attributes.UpdateAttributeValueResponse\"" + - "5\202\323\344\223\002/\"&/attributes/{attribute_id}/valu" + - "es/{id}:\005value\022\230\001\n\030DeactivateAttributeVa" + - "lue\022+.attributes.DeactivateAttributeValu" + - "eRequest\032,.attributes.DeactivateAttribut" + - "eValueResponse\"!\202\323\344\223\002\033*\031/attributes/_/va" + - "lues/{id}\022\326\001\n AssignKeyAccessServerToAtt" + - "ribute\0223.attributes.AssignKeyAccessServe" + - "rToAttributeRequest\0324.attributes.AssignK" + - "eyAccessServerToAttributeResponse\"G\202\323\344\223\002" + - "A\"\"/attributes/keyaccessserver/assign:\033a" + - "ttribute_key_access_server\022\334\001\n\"RemoveKey" + - "AccessServerFromAttribute\0225.attributes.R" + - "emoveKeyAccessServerFromAttributeRequest" + - "\0326.attributes.RemoveKeyAccessServerFromA" + - "ttributeResponse\"G\202\323\344\223\002A\"\"/attributes/ke" + - "yaccessserver/remove:\033attribute_key_acce" + - "ss_server\022\315\001\n\034AssignKeyAccessServerToVal" + - "ue\022/.attributes.AssignKeyAccessServerToV" + - "alueRequest\0320.attributes.AssignKeyAccess" + - "ServerToValueResponse\"J\202\323\344\223\002D\")/attribut" + - "es/values/keyaccessserver/assign:\027value_" + - "key_access_server\022\323\001\n\036RemoveKeyAccessSer" + - "verFromValue\0221.attributes.RemoveKeyAcces" + - "sServerFromValueRequest\0322.attributes.Rem" + - "oveKeyAccessServerFromValueResponse\"J\202\323\344" + - "\223\002D\")/attributes/values/keyaccessserver/" + - "remove:\027value_key_access_serverB\233\001\n\016com." + - "attributesB\017AttributesProtoP\001Z0github.co" + - "m/opentdf/opentdf-v2-poc/sdk/attributes\242" + - "\002\003AXX\252\002\nAttributes\312\002\nAttributes\342\002\026Attrib" + - "utes\\GPBMetadata\352\002\nAttributesb\006proto3" + "gistry.KeyAccessServerR\006grants\022\026\n\006active" + + "\030\t \001(\010R\006active\"\216\002\n\025AttributeCreateUpdate" + + "\0223\n\010metadata\030\001 \001(\0132\027.common.MetadataMuta" + + "bleR\010metadata\022)\n\014namespace_id\030\002 \001(\tB\006\272H\003" + + "\310\001\001R\013namespaceId\022\032\n\004name\030\003 \001(\tB\006\272H\003\310\001\001R\004" + + "name\022B\n\004rule\030\004 \001(\0162!.attributes.Attribut" + + "eRuleTypeEnumB\013\272H\010\202\001\002\020\001\310\001\001R\004rule\0225\n\006valu" + + "es\030\005 \003(\0132\035.attributes.ValueCreateUpdateR" + + "\006values\"\356\001\n\005Value\022\016\n\002id\030\001 \001(\tR\002id\022,\n\010met" + + "adata\030\002 \001(\0132\020.common.MetadataR\010metadata\022" + + ")\n\014attribute_id\030\003 \001(\tB\006\272H\003\310\001\001R\013attribute" + + "Id\022\024\n\005value\030\004 \001(\tR\005value\022\030\n\007members\030\005 \003(" + + "\tR\007members\0224\n\006grants\030\006 \003(\0132\034.kasregistry" + + ".KeyAccessServerR\006grants\022\026\n\006active\030\007 \001(\010" + + "R\006active\"x\n\021ValueCreateUpdate\0223\n\010metadat" + + "a\030\001 \001(\0132\027.common.MetadataMutableR\010metada" + + "ta\022\024\n\005value\030\002 \001(\tR\005value\022\030\n\007members\030\003 \003(" + + "\tR\007members\"n\n\030AttributeKeyAccessServer\022!" + + "\n\014attribute_id\030\001 \001(\tR\013attributeId\022/\n\024key" + + "_access_server_id\030\002 \001(\tR\021keyAccessServer" + + "Id\"b\n\024ValueKeyAccessServer\022\031\n\010value_id\030\001" + + " \001(\tR\007valueId\022/\n\024key_access_server_id\030\002 " + + "\001(\tR\021keyAccessServerId\"F\n\025ListAttributes" + + "Request\022-\n\005state\030\001 \001(\0162\027.common.ActiveSt" + + "ateEnumR\005state\"O\n\026ListAttributesResponse" + + "\0225\n\nattributes\030\001 \003(\0132\025.attributes.Attrib" + + "uteR\nattributes\"-\n\023GetAttributeRequest\022\026" + + "\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetAttributeRe" + + "sponse\0223\n\tattribute\030\001 \001(\0132\025.attributes.A" + + "ttributeR\tattribute\"a\n\026CreateAttributeRe" + + "quest\022G\n\tattribute\030\001 \001(\0132!.attributes.At" + + "tributeCreateUpdateB\006\272H\003\310\001\001R\tattribute\"N" + + "\n\027CreateAttributeResponse\0223\n\tattribute\030\001" + + " \001(\0132\025.attributes.AttributeR\tattribute\"y" + + "\n\026UpdateAttributeRequest\022\026\n\002id\030\001 \001(\tB\006\272H" + + "\003\310\001\001R\002id\022G\n\tattribute\030\002 \001(\0132!.attributes" + + ".AttributeCreateUpdateB\006\272H\003\310\001\001R\tattribut" + + "e\"N\n\027UpdateAttributeResponse\0223\n\tattribut" + + "e\030\001 \001(\0132\025.attributes.AttributeR\tattribut" + + "e\"4\n\032DeactivateAttributeRequest\022\026\n\002id\030\001 " + + "\001(\tB\006\272H\003\310\001\001R\002id\"R\n\033DeactivateAttributeRe" + + "sponse\0223\n\tattribute\030\001 \001(\0132\025.attributes.A" + + "ttributeR\tattribute\"2\n\030GetAttributeValue" + + "Request\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"D\n\031GetAt" + + "tributeValueResponse\022\'\n\005value\030\001 \001(\0132\021.at" + + "tributes.ValueR\005value\"v\n\032ListAttributeVa" + + "luesRequest\022)\n\014attribute_id\030\001 \001(\tB\006\272H\003\310\001" + + "\001R\013attributeId\022-\n\005state\030\002 \001(\0162\027.common.A" + + "ctiveStateEnumR\005state\"H\n\033ListAttributeVa" + + "luesResponse\022)\n\006values\030\001 \003(\0132\021.attribute" + + "s.ValueR\006values\"\205\001\n\033CreateAttributeValue" + + "Request\022)\n\014attribute_id\030\001 \001(\tB\006\272H\003\310\001\001R\013a" + + "ttributeId\022;\n\005value\030\002 \001(\0132\035.attributes.V" + + "alueCreateUpdateB\006\272H\003\310\001\001R\005value\"G\n\034Creat" + + "eAttributeValueResponse\022\'\n\005value\030\001 \001(\0132\021" + + ".attributes.ValueR\005value\"\235\001\n\033UpdateAttri" + + "buteValueRequest\022)\n\014attribute_id\030\001 \001(\tB\006" + + "\272H\003\310\001\001R\013attributeId\022\026\n\002id\030\002 \001(\tB\006\272H\003\310\001\001R" + + "\002id\022;\n\005value\030\003 \001(\0132\035.attributes.ValueCre" + + "ateUpdateB\006\272H\003\310\001\001R\005value\"G\n\034UpdateAttrib" + + "uteValueResponse\022\'\n\005value\030\001 \001(\0132\021.attrib" + + "utes.ValueR\005value\"9\n\037DeactivateAttribute" + + "ValueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n " + + "DeactivateAttributeValueResponse\022\'\n\005valu" + + "e\030\001 \001(\0132\021.attributes.ValueR\005value\"\216\001\n\'As" + + "signKeyAccessServerToAttributeRequest\022c\n" + + "\033attribute_key_access_server\030\001 \001(\0132$.att" + + "ributes.AttributeKeyAccessServerR\030attrib" + + "uteKeyAccessServer\"\217\001\n(AssignKeyAccessSe" + + "rverToAttributeResponse\022c\n\033attribute_key" + + "_access_server\030\001 \001(\0132$.attributes.Attrib" + + "uteKeyAccessServerR\030attributeKeyAccessSe" + + "rver\"\220\001\n)RemoveKeyAccessServerFromAttrib" + + "uteRequest\022c\n\033attribute_key_access_serve" + + "r\030\001 \001(\0132$.attributes.AttributeKeyAccessS" + + "erverR\030attributeKeyAccessServer\"\221\001\n*Remo" + + "veKeyAccessServerFromAttributeResponse\022c" + + "\n\033attribute_key_access_server\030\001 \001(\0132$.at" + + "tributes.AttributeKeyAccessServerR\030attri" + + "buteKeyAccessServer\"~\n#AssignKeyAccessSe" + + "rverToValueRequest\022W\n\027value_key_access_s" + + "erver\030\001 \001(\0132 .attributes.ValueKeyAccessS" + + "erverR\024valueKeyAccessServer\"\177\n$AssignKey" + + "AccessServerToValueResponse\022W\n\027value_key" + + "_access_server\030\001 \001(\0132 .attributes.ValueK" + + "eyAccessServerR\024valueKeyAccessServer\"\200\001\n" + + "%RemoveKeyAccessServerFromValueRequest\022W" + + "\n\027value_key_access_server\030\001 \001(\0132 .attrib" + + "utes.ValueKeyAccessServerR\024valueKeyAcces" + + "sServer\"\201\001\n&RemoveKeyAccessServerFromVal" + + "ueResponse\022W\n\027value_key_access_server\030\001 " + + "\001(\0132 .attributes.ValueKeyAccessServerR\024v" + + "alueKeyAccessServer*\263\001\n\025AttributeRuleTyp" + + "eEnum\022(\n$ATTRIBUTE_RULE_TYPE_ENUM_UNSPEC" + + "IFIED\020\000\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_ALL_" + + "OF\020\001\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF\020" + + "\002\022&\n\"ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY\020" + + "\0032\205\021\n\021AttributesService\022Y\n\016ListAttribute" + + "s\022!.attributes.ListAttributesRequest\032\".a" + + "ttributes.ListAttributesResponse\"\000\022h\n\023Li" + + "stAttributeValues\022&.attributes.ListAttri" + + "buteValuesRequest\032\'.attributes.ListAttri" + + "buteValuesResponse\"\000\022k\n\014GetAttribute\022\037.a" + + "ttributes.GetAttributeRequest\032 .attribut" + + "es.GetAttributeResponse\"\030\202\323\344\223\002\022\022\020/attrib" + + "utes/{id}\022z\n\017CreateAttribute\022\".attribute" + + "s.CreateAttributeRequest\032#.attributes.Cr" + + "eateAttributeResponse\"\036\202\323\344\223\002\030\"\013/attribut" + + "es:\tattribute\022\177\n\017UpdateAttribute\022\".attri" + + "butes.UpdateAttributeRequest\032#.attribute" + + "s.UpdateAttributeResponse\"#\202\323\344\223\002\035\"\020/attr" + + "ibutes/{id}:\tattribute\022\200\001\n\023DeactivateAtt" + + "ribute\022&.attributes.DeactivateAttributeR" + + "equest\032\'.attributes.DeactivateAttributeR" + + "esponse\"\030\202\323\344\223\002\022*\020/attributes/{id}\022\203\001\n\021Ge" + + "tAttributeValue\022$.attributes.GetAttribut" + + "eValueRequest\032%.attributes.GetAttributeV" + + "alueResponse\"!\202\323\344\223\002\033\022\031/attributes/_/valu" + + "es/{id}\022\233\001\n\024CreateAttributeValue\022\'.attri" + + "butes.CreateAttributeValueRequest\032(.attr" + + "ibutes.CreateAttributeValueResponse\"0\202\323\344" + + "\223\002*\"!/attributes/{attribute_id}/values:\005" + + "value\022\240\001\n\024UpdateAttributeValue\022\'.attribu" + + "tes.UpdateAttributeValueRequest\032(.attrib" + + "utes.UpdateAttributeValueResponse\"5\202\323\344\223\002" + + "/\"&/attributes/{attribute_id}/values/{id" + + "}:\005value\022\230\001\n\030DeactivateAttributeValue\022+." + + "attributes.DeactivateAttributeValueReque" + + "st\032,.attributes.DeactivateAttributeValue" + + "Response\"!\202\323\344\223\002\033*\031/attributes/_/values/{" + + "id}\022\326\001\n AssignKeyAccessServerToAttribute" + + "\0223.attributes.AssignKeyAccessServerToAtt" + + "ributeRequest\0324.attributes.AssignKeyAcce" + + "ssServerToAttributeResponse\"G\202\323\344\223\002A\"\"/at" + + "tributes/keyaccessserver/assign:\033attribu" + + "te_key_access_server\022\334\001\n\"RemoveKeyAccess" + + "ServerFromAttribute\0225.attributes.RemoveK" + + "eyAccessServerFromAttributeRequest\0326.att" + + "ributes.RemoveKeyAccessServerFromAttribu" + + "teResponse\"G\202\323\344\223\002A\"\"/attributes/keyacces" + + "sserver/remove:\033attribute_key_access_ser" + + "ver\022\315\001\n\034AssignKeyAccessServerToValue\022/.a" + + "ttributes.AssignKeyAccessServerToValueRe" + + "quest\0320.attributes.AssignKeyAccessServer" + + "ToValueResponse\"J\202\323\344\223\002D\")/attributes/val" + + "ues/keyaccessserver/assign:\027value_key_ac" + + "cess_server\022\323\001\n\036RemoveKeyAccessServerFro" + + "mValue\0221.attributes.RemoveKeyAccessServe" + + "rFromValueRequest\0322.attributes.RemoveKey" + + "AccessServerFromValueResponse\"J\202\323\344\223\002D\")/" + + "attributes/values/keyaccessserver/remove" + + ":\027value_key_access_serverB\233\001\n\016com.attrib" + + "utesB\017AttributesProtoP\001Z0github.com/open" + + "tdf/opentdf-v2-poc/sdk/attributes\242\002\003AXX\252" + + "\002\nAttributes\312\002\nAttributes\342\002\026Attributes\\G" + + "PBMetadata\352\002\nAttributesb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -378,7 +377,7 @@ public static void registerAllExtensions( internal_static_attributes_Attribute_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_attributes_Attribute_descriptor, - new java.lang.String[] { "Id", "Metadata", "Namespace", "Name", "Rule", "Values", "Grants", "State", }); + new java.lang.String[] { "Id", "Metadata", "Namespace", "Name", "Rule", "Values", "Grants", "Active", }); internal_static_attributes_AttributeCreateUpdate_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_attributes_AttributeCreateUpdate_fieldAccessorTable = new @@ -390,7 +389,7 @@ public static void registerAllExtensions( internal_static_attributes_Value_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_attributes_Value_descriptor, - new java.lang.String[] { "Id", "Metadata", "AttributeId", "Value", "Members", "Grants", "State", }); + new java.lang.String[] { "Id", "Metadata", "AttributeId", "Value", "Members", "Grants", "Active", }); internal_static_attributes_ValueCreateUpdate_descriptor = getDescriptor().getMessageTypes().get(3); internal_static_attributes_ValueCreateUpdate_fieldAccessorTable = new diff --git a/sdkjava/com/attributes/CreateAttributeRequest.java b/sdkjava/com/attributes/CreateAttributeRequest.java index 6f41225d3a..a986d23c89 100644 --- a/sdkjava/com/attributes/CreateAttributeRequest.java +++ b/sdkjava/com/attributes/CreateAttributeRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/CreateAttributeRequestOrBuilder.java b/sdkjava/com/attributes/CreateAttributeRequestOrBuilder.java index 2b838cffeb..168d5bc938 100644 --- a/sdkjava/com/attributes/CreateAttributeRequestOrBuilder.java +++ b/sdkjava/com/attributes/CreateAttributeRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface CreateAttributeRequestOrBuilder extends diff --git a/sdkjava/com/attributes/CreateAttributeResponse.java b/sdkjava/com/attributes/CreateAttributeResponse.java index 1539ebb34e..41eb1ed79d 100644 --- a/sdkjava/com/attributes/CreateAttributeResponse.java +++ b/sdkjava/com/attributes/CreateAttributeResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/CreateAttributeResponseOrBuilder.java b/sdkjava/com/attributes/CreateAttributeResponseOrBuilder.java index 92fdbc55ab..660d3aa9ff 100644 --- a/sdkjava/com/attributes/CreateAttributeResponseOrBuilder.java +++ b/sdkjava/com/attributes/CreateAttributeResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface CreateAttributeResponseOrBuilder extends diff --git a/sdkjava/com/attributes/CreateAttributeValueRequest.java b/sdkjava/com/attributes/CreateAttributeValueRequest.java index 1bf033a770..f6456c79f1 100644 --- a/sdkjava/com/attributes/CreateAttributeValueRequest.java +++ b/sdkjava/com/attributes/CreateAttributeValueRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/CreateAttributeValueRequestOrBuilder.java b/sdkjava/com/attributes/CreateAttributeValueRequestOrBuilder.java index 6620304fe3..0678ef5ebf 100644 --- a/sdkjava/com/attributes/CreateAttributeValueRequestOrBuilder.java +++ b/sdkjava/com/attributes/CreateAttributeValueRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface CreateAttributeValueRequestOrBuilder extends diff --git a/sdkjava/com/attributes/CreateAttributeValueResponse.java b/sdkjava/com/attributes/CreateAttributeValueResponse.java index ab08c14943..1657ee56cd 100644 --- a/sdkjava/com/attributes/CreateAttributeValueResponse.java +++ b/sdkjava/com/attributes/CreateAttributeValueResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/CreateAttributeValueResponseOrBuilder.java b/sdkjava/com/attributes/CreateAttributeValueResponseOrBuilder.java index e001e7613e..7b2b745007 100644 --- a/sdkjava/com/attributes/CreateAttributeValueResponseOrBuilder.java +++ b/sdkjava/com/attributes/CreateAttributeValueResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface CreateAttributeValueResponseOrBuilder extends diff --git a/sdkjava/com/attributes/DeactivateAttributeRequest.java b/sdkjava/com/attributes/DeactivateAttributeRequest.java index ef020de109..eb1703ff98 100644 --- a/sdkjava/com/attributes/DeactivateAttributeRequest.java +++ b/sdkjava/com/attributes/DeactivateAttributeRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/DeactivateAttributeRequestOrBuilder.java b/sdkjava/com/attributes/DeactivateAttributeRequestOrBuilder.java index d99e461f27..b133073f70 100644 --- a/sdkjava/com/attributes/DeactivateAttributeRequestOrBuilder.java +++ b/sdkjava/com/attributes/DeactivateAttributeRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface DeactivateAttributeRequestOrBuilder extends diff --git a/sdkjava/com/attributes/DeactivateAttributeResponse.java b/sdkjava/com/attributes/DeactivateAttributeResponse.java index 400c50f98e..2c0f19c7c5 100644 --- a/sdkjava/com/attributes/DeactivateAttributeResponse.java +++ b/sdkjava/com/attributes/DeactivateAttributeResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/DeactivateAttributeResponseOrBuilder.java b/sdkjava/com/attributes/DeactivateAttributeResponseOrBuilder.java index bd8688c35b..c2e5c39c8f 100644 --- a/sdkjava/com/attributes/DeactivateAttributeResponseOrBuilder.java +++ b/sdkjava/com/attributes/DeactivateAttributeResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface DeactivateAttributeResponseOrBuilder extends diff --git a/sdkjava/com/attributes/DeactivateAttributeValueRequest.java b/sdkjava/com/attributes/DeactivateAttributeValueRequest.java index 1e1773cacc..04b493eb84 100644 --- a/sdkjava/com/attributes/DeactivateAttributeValueRequest.java +++ b/sdkjava/com/attributes/DeactivateAttributeValueRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/DeactivateAttributeValueRequestOrBuilder.java b/sdkjava/com/attributes/DeactivateAttributeValueRequestOrBuilder.java index 7c6341a11c..7553fc71da 100644 --- a/sdkjava/com/attributes/DeactivateAttributeValueRequestOrBuilder.java +++ b/sdkjava/com/attributes/DeactivateAttributeValueRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface DeactivateAttributeValueRequestOrBuilder extends diff --git a/sdkjava/com/attributes/DeactivateAttributeValueResponse.java b/sdkjava/com/attributes/DeactivateAttributeValueResponse.java index d2cd5d6378..8a4610b92a 100644 --- a/sdkjava/com/attributes/DeactivateAttributeValueResponse.java +++ b/sdkjava/com/attributes/DeactivateAttributeValueResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/DeactivateAttributeValueResponseOrBuilder.java b/sdkjava/com/attributes/DeactivateAttributeValueResponseOrBuilder.java index 4f9d76f0a9..f2d3a30944 100644 --- a/sdkjava/com/attributes/DeactivateAttributeValueResponseOrBuilder.java +++ b/sdkjava/com/attributes/DeactivateAttributeValueResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface DeactivateAttributeValueResponseOrBuilder extends diff --git a/sdkjava/com/attributes/GetAttributeRequest.java b/sdkjava/com/attributes/GetAttributeRequest.java index 16ac61dc61..fef447f574 100644 --- a/sdkjava/com/attributes/GetAttributeRequest.java +++ b/sdkjava/com/attributes/GetAttributeRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/GetAttributeRequestOrBuilder.java b/sdkjava/com/attributes/GetAttributeRequestOrBuilder.java index 95b3ce1465..d163b194b9 100644 --- a/sdkjava/com/attributes/GetAttributeRequestOrBuilder.java +++ b/sdkjava/com/attributes/GetAttributeRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface GetAttributeRequestOrBuilder extends diff --git a/sdkjava/com/attributes/GetAttributeResponse.java b/sdkjava/com/attributes/GetAttributeResponse.java index 16745b5729..ba2684ee2d 100644 --- a/sdkjava/com/attributes/GetAttributeResponse.java +++ b/sdkjava/com/attributes/GetAttributeResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/GetAttributeResponseOrBuilder.java b/sdkjava/com/attributes/GetAttributeResponseOrBuilder.java index d3e9db2cac..81f7c2a021 100644 --- a/sdkjava/com/attributes/GetAttributeResponseOrBuilder.java +++ b/sdkjava/com/attributes/GetAttributeResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface GetAttributeResponseOrBuilder extends diff --git a/sdkjava/com/attributes/GetAttributeValueRequest.java b/sdkjava/com/attributes/GetAttributeValueRequest.java index f0893e85d9..6d45729aaa 100644 --- a/sdkjava/com/attributes/GetAttributeValueRequest.java +++ b/sdkjava/com/attributes/GetAttributeValueRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/GetAttributeValueRequestOrBuilder.java b/sdkjava/com/attributes/GetAttributeValueRequestOrBuilder.java index d07f7635e0..f0f9dc9a92 100644 --- a/sdkjava/com/attributes/GetAttributeValueRequestOrBuilder.java +++ b/sdkjava/com/attributes/GetAttributeValueRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface GetAttributeValueRequestOrBuilder extends diff --git a/sdkjava/com/attributes/GetAttributeValueResponse.java b/sdkjava/com/attributes/GetAttributeValueResponse.java index 8ee401d1d7..17d180f634 100644 --- a/sdkjava/com/attributes/GetAttributeValueResponse.java +++ b/sdkjava/com/attributes/GetAttributeValueResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/GetAttributeValueResponseOrBuilder.java b/sdkjava/com/attributes/GetAttributeValueResponseOrBuilder.java index bf79250030..078bdaded1 100644 --- a/sdkjava/com/attributes/GetAttributeValueResponseOrBuilder.java +++ b/sdkjava/com/attributes/GetAttributeValueResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface GetAttributeValueResponseOrBuilder extends diff --git a/sdkjava/com/attributes/ListAttributeValuesRequest.java b/sdkjava/com/attributes/ListAttributeValuesRequest.java index a59ae9ad8c..7551d64903 100644 --- a/sdkjava/com/attributes/ListAttributeValuesRequest.java +++ b/sdkjava/com/attributes/ListAttributeValuesRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java b/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java index fa6d46763f..cc5cf5f34e 100644 --- a/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java +++ b/sdkjava/com/attributes/ListAttributeValuesRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface ListAttributeValuesRequestOrBuilder extends diff --git a/sdkjava/com/attributes/ListAttributeValuesResponse.java b/sdkjava/com/attributes/ListAttributeValuesResponse.java index 2333e16c63..513872ccb5 100644 --- a/sdkjava/com/attributes/ListAttributeValuesResponse.java +++ b/sdkjava/com/attributes/ListAttributeValuesResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/ListAttributeValuesResponseOrBuilder.java b/sdkjava/com/attributes/ListAttributeValuesResponseOrBuilder.java index 48526ebaa8..cd17b80bc9 100644 --- a/sdkjava/com/attributes/ListAttributeValuesResponseOrBuilder.java +++ b/sdkjava/com/attributes/ListAttributeValuesResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface ListAttributeValuesResponseOrBuilder extends diff --git a/sdkjava/com/attributes/ListAttributesRequest.java b/sdkjava/com/attributes/ListAttributesRequest.java index ce98146a23..f50dec9eb7 100644 --- a/sdkjava/com/attributes/ListAttributesRequest.java +++ b/sdkjava/com/attributes/ListAttributesRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java b/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java index 663317bfe4..60cb48c9cf 100644 --- a/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java +++ b/sdkjava/com/attributes/ListAttributesRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface ListAttributesRequestOrBuilder extends diff --git a/sdkjava/com/attributes/ListAttributesResponse.java b/sdkjava/com/attributes/ListAttributesResponse.java index 9d6cb4b46c..3bed3a5822 100644 --- a/sdkjava/com/attributes/ListAttributesResponse.java +++ b/sdkjava/com/attributes/ListAttributesResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/ListAttributesResponseOrBuilder.java b/sdkjava/com/attributes/ListAttributesResponseOrBuilder.java index ee78ee1777..ce13dac81a 100644 --- a/sdkjava/com/attributes/ListAttributesResponseOrBuilder.java +++ b/sdkjava/com/attributes/ListAttributesResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface ListAttributesResponseOrBuilder extends diff --git a/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeRequest.java b/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeRequest.java index 05727be0bc..ae22f58131 100644 --- a/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeRequest.java +++ b/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeRequestOrBuilder.java b/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeRequestOrBuilder.java index 710d2023db..f0554d4733 100644 --- a/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeRequestOrBuilder.java +++ b/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface RemoveKeyAccessServerFromAttributeRequestOrBuilder extends diff --git a/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeResponse.java b/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeResponse.java index fcab166745..9e7c736a62 100644 --- a/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeResponse.java +++ b/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeResponseOrBuilder.java b/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeResponseOrBuilder.java index 1e0fcfeab8..3b49524a37 100644 --- a/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeResponseOrBuilder.java +++ b/sdkjava/com/attributes/RemoveKeyAccessServerFromAttributeResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface RemoveKeyAccessServerFromAttributeResponseOrBuilder extends diff --git a/sdkjava/com/attributes/RemoveKeyAccessServerFromValueRequest.java b/sdkjava/com/attributes/RemoveKeyAccessServerFromValueRequest.java index 1d5d5fab40..afbf378428 100644 --- a/sdkjava/com/attributes/RemoveKeyAccessServerFromValueRequest.java +++ b/sdkjava/com/attributes/RemoveKeyAccessServerFromValueRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/RemoveKeyAccessServerFromValueRequestOrBuilder.java b/sdkjava/com/attributes/RemoveKeyAccessServerFromValueRequestOrBuilder.java index 6b14537192..e87bec2023 100644 --- a/sdkjava/com/attributes/RemoveKeyAccessServerFromValueRequestOrBuilder.java +++ b/sdkjava/com/attributes/RemoveKeyAccessServerFromValueRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface RemoveKeyAccessServerFromValueRequestOrBuilder extends diff --git a/sdkjava/com/attributes/RemoveKeyAccessServerFromValueResponse.java b/sdkjava/com/attributes/RemoveKeyAccessServerFromValueResponse.java index 1a99de7e9f..373144c0c1 100644 --- a/sdkjava/com/attributes/RemoveKeyAccessServerFromValueResponse.java +++ b/sdkjava/com/attributes/RemoveKeyAccessServerFromValueResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/RemoveKeyAccessServerFromValueResponseOrBuilder.java b/sdkjava/com/attributes/RemoveKeyAccessServerFromValueResponseOrBuilder.java index 3d2d77e0ea..052b69e8bf 100644 --- a/sdkjava/com/attributes/RemoveKeyAccessServerFromValueResponseOrBuilder.java +++ b/sdkjava/com/attributes/RemoveKeyAccessServerFromValueResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface RemoveKeyAccessServerFromValueResponseOrBuilder extends diff --git a/sdkjava/com/attributes/UpdateAttributeRequest.java b/sdkjava/com/attributes/UpdateAttributeRequest.java index f434c81794..674ef0b561 100644 --- a/sdkjava/com/attributes/UpdateAttributeRequest.java +++ b/sdkjava/com/attributes/UpdateAttributeRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/UpdateAttributeRequestOrBuilder.java b/sdkjava/com/attributes/UpdateAttributeRequestOrBuilder.java index 77c3f54df4..396366b7a1 100644 --- a/sdkjava/com/attributes/UpdateAttributeRequestOrBuilder.java +++ b/sdkjava/com/attributes/UpdateAttributeRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface UpdateAttributeRequestOrBuilder extends diff --git a/sdkjava/com/attributes/UpdateAttributeResponse.java b/sdkjava/com/attributes/UpdateAttributeResponse.java index 041cbf8a37..7cf1fdeeb3 100644 --- a/sdkjava/com/attributes/UpdateAttributeResponse.java +++ b/sdkjava/com/attributes/UpdateAttributeResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/UpdateAttributeResponseOrBuilder.java b/sdkjava/com/attributes/UpdateAttributeResponseOrBuilder.java index 3ee45490dc..17df4f79bd 100644 --- a/sdkjava/com/attributes/UpdateAttributeResponseOrBuilder.java +++ b/sdkjava/com/attributes/UpdateAttributeResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface UpdateAttributeResponseOrBuilder extends diff --git a/sdkjava/com/attributes/UpdateAttributeValueRequest.java b/sdkjava/com/attributes/UpdateAttributeValueRequest.java index e84cccaa44..40cf85abb6 100644 --- a/sdkjava/com/attributes/UpdateAttributeValueRequest.java +++ b/sdkjava/com/attributes/UpdateAttributeValueRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/UpdateAttributeValueRequestOrBuilder.java b/sdkjava/com/attributes/UpdateAttributeValueRequestOrBuilder.java index dd1f9086a5..8403f47ef5 100644 --- a/sdkjava/com/attributes/UpdateAttributeValueRequestOrBuilder.java +++ b/sdkjava/com/attributes/UpdateAttributeValueRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface UpdateAttributeValueRequestOrBuilder extends diff --git a/sdkjava/com/attributes/UpdateAttributeValueResponse.java b/sdkjava/com/attributes/UpdateAttributeValueResponse.java index 7f53d6c259..b839b31a31 100644 --- a/sdkjava/com/attributes/UpdateAttributeValueResponse.java +++ b/sdkjava/com/attributes/UpdateAttributeValueResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/UpdateAttributeValueResponseOrBuilder.java b/sdkjava/com/attributes/UpdateAttributeValueResponseOrBuilder.java index 43c21074e3..8edf999b0d 100644 --- a/sdkjava/com/attributes/UpdateAttributeValueResponseOrBuilder.java +++ b/sdkjava/com/attributes/UpdateAttributeValueResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface UpdateAttributeValueResponseOrBuilder extends diff --git a/sdkjava/com/attributes/Value.java b/sdkjava/com/attributes/Value.java index 806904707e..7be6e1b097 100644 --- a/sdkjava/com/attributes/Value.java +++ b/sdkjava/com/attributes/Value.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** @@ -23,7 +23,6 @@ private Value() { members_ = com.google.protobuf.LazyStringArrayList.emptyList(); grants_ = java.util.Collections.emptyList(); - state_ = 0; } @java.lang.Override @@ -312,30 +311,19 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( return grants_.get(index); } - public static final int STATE_FIELD_NUMBER = 7; - private int state_ = 0; + public static final int ACTIVE_FIELD_NUMBER = 7; + private boolean active_ = false; /** *
        * active by default until explicitly deactivated
        * 
    * - * .common.ActiveStateEnum state = 7 [json_name = "state"]; - * @return The enum numeric value on the wire for state. + * bool active = 7 [json_name = "active"]; + * @return The active. */ - @java.lang.Override public int getStateValue() { - return state_; - } - /** - *
    -   * active by default until explicitly deactivated
    -   * 
    - * - * .common.ActiveStateEnum state = 7 [json_name = "state"]; - * @return The state. - */ - @java.lang.Override public com.common.ActiveStateEnum getState() { - com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); - return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; + @java.lang.Override + public boolean getActive() { + return active_; } private byte memoizedIsInitialized = -1; @@ -370,8 +358,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) for (int i = 0; i < grants_.size(); i++) { output.writeMessage(6, grants_.get(i)); } - if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { - output.writeEnum(7, state_); + if (active_ != false) { + output.writeBool(7, active_); } getUnknownFields().writeTo(output); } @@ -407,9 +395,9 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(6, grants_.get(i)); } - if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { + if (active_ != false) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(7, state_); + .computeBoolSize(7, active_); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -441,7 +429,8 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getMembersList())) return false; if (!getGrantsList() .equals(other.getGrantsList())) return false; - if (state_ != other.state_) return false; + if (getActive() + != other.getActive()) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -471,8 +460,9 @@ public int hashCode() { hash = (37 * hash) + GRANTS_FIELD_NUMBER; hash = (53 * hash) + getGrantsList().hashCode(); } - hash = (37 * hash) + STATE_FIELD_NUMBER; - hash = (53 * hash) + state_; + hash = (37 * hash) + ACTIVE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getActive()); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -628,7 +618,7 @@ public Builder clear() { grantsBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000020); - state_ = 0; + active_ = false; return this; } @@ -696,7 +686,7 @@ private void buildPartial0(com.attributes.Value result) { result.members_ = members_; } if (((from_bitField0_ & 0x00000040) != 0)) { - result.state_ = state_; + result.active_ = active_; } result.bitField0_ |= to_bitField0_; } @@ -799,8 +789,8 @@ public Builder mergeFrom(com.attributes.Value other) { } } } - if (other.state_ != 0) { - setStateValue(other.getStateValue()); + if (other.getActive() != false) { + setActive(other.getActive()); } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -870,7 +860,7 @@ public Builder mergeFrom( break; } // case 50 case 56: { - state_ = input.readEnum(); + active_ = input.readBool(); bitField0_ |= 0x00000040; break; } // case 56 @@ -1707,61 +1697,32 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder( return grantsBuilder_; } - private int state_ = 0; - /** - *
    -     * active by default until explicitly deactivated
    -     * 
    - * - * .common.ActiveStateEnum state = 7 [json_name = "state"]; - * @return The enum numeric value on the wire for state. - */ - @java.lang.Override public int getStateValue() { - return state_; - } - /** - *
    -     * active by default until explicitly deactivated
    -     * 
    - * - * .common.ActiveStateEnum state = 7 [json_name = "state"]; - * @param value The enum numeric value on the wire for state to set. - * @return This builder for chaining. - */ - public Builder setStateValue(int value) { - state_ = value; - bitField0_ |= 0x00000040; - onChanged(); - return this; - } + private boolean active_ ; /** *
          * active by default until explicitly deactivated
          * 
    * - * .common.ActiveStateEnum state = 7 [json_name = "state"]; - * @return The state. + * bool active = 7 [json_name = "active"]; + * @return The active. */ @java.lang.Override - public com.common.ActiveStateEnum getState() { - com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); - return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; + public boolean getActive() { + return active_; } /** *
          * active by default until explicitly deactivated
          * 
    * - * .common.ActiveStateEnum state = 7 [json_name = "state"]; - * @param value The state to set. + * bool active = 7 [json_name = "active"]; + * @param value The active to set. * @return This builder for chaining. */ - public Builder setState(com.common.ActiveStateEnum value) { - if (value == null) { - throw new NullPointerException(); - } + public Builder setActive(boolean value) { + + active_ = value; bitField0_ |= 0x00000040; - state_ = value.getNumber(); onChanged(); return this; } @@ -1770,12 +1731,12 @@ public Builder setState(com.common.ActiveStateEnum value) { * active by default until explicitly deactivated * * - * .common.ActiveStateEnum state = 7 [json_name = "state"]; + * bool active = 7 [json_name = "active"]; * @return This builder for chaining. */ - public Builder clearState() { + public Builder clearActive() { bitField0_ = (bitField0_ & ~0x00000040); - state_ = 0; + active_ = false; onChanged(); return this; } diff --git a/sdkjava/com/attributes/ValueCreateUpdate.java b/sdkjava/com/attributes/ValueCreateUpdate.java index 5cf2a5ece2..20352e7c9b 100644 --- a/sdkjava/com/attributes/ValueCreateUpdate.java +++ b/sdkjava/com/attributes/ValueCreateUpdate.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/ValueCreateUpdateOrBuilder.java b/sdkjava/com/attributes/ValueCreateUpdateOrBuilder.java index 10d353804c..00c236193a 100644 --- a/sdkjava/com/attributes/ValueCreateUpdateOrBuilder.java +++ b/sdkjava/com/attributes/ValueCreateUpdateOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface ValueCreateUpdateOrBuilder extends diff --git a/sdkjava/com/attributes/ValueKeyAccessServer.java b/sdkjava/com/attributes/ValueKeyAccessServer.java index d28cf9180d..f6ac9ae8fc 100644 --- a/sdkjava/com/attributes/ValueKeyAccessServer.java +++ b/sdkjava/com/attributes/ValueKeyAccessServer.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; /** diff --git a/sdkjava/com/attributes/ValueKeyAccessServerOrBuilder.java b/sdkjava/com/attributes/ValueKeyAccessServerOrBuilder.java index 4fbf3adc23..f4e5d6da1c 100644 --- a/sdkjava/com/attributes/ValueKeyAccessServerOrBuilder.java +++ b/sdkjava/com/attributes/ValueKeyAccessServerOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface ValueKeyAccessServerOrBuilder extends diff --git a/sdkjava/com/attributes/ValueOrBuilder.java b/sdkjava/com/attributes/ValueOrBuilder.java index 29635843ad..f53eb124b1 100644 --- a/sdkjava/com/attributes/ValueOrBuilder.java +++ b/sdkjava/com/attributes/ValueOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: attributes/attributes.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.attributes; public interface ValueOrBuilder extends @@ -157,17 +157,8 @@ com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * .common.ActiveStateEnum state = 7 [json_name = "state"]; - * @return The enum numeric value on the wire for state. + * bool active = 7 [json_name = "active"]; + * @return The active. */ - int getStateValue(); - /** - *
    -   * active by default until explicitly deactivated
    -   * 
    - * - * .common.ActiveStateEnum state = 7 [json_name = "state"]; - * @return The state. - */ - com.common.ActiveStateEnum getState(); + boolean getActive(); } diff --git a/sdkjava/com/authorization/Action.java b/sdkjava/com/authorization/Action.java index 1a0d60f9c7..558e0a472a 100644 --- a/sdkjava/com/authorization/Action.java +++ b/sdkjava/com/authorization/Action.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/ActionOrBuilder.java b/sdkjava/com/authorization/ActionOrBuilder.java index ec0b6d68ef..447c648d10 100644 --- a/sdkjava/com/authorization/ActionOrBuilder.java +++ b/sdkjava/com/authorization/ActionOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface ActionOrBuilder extends diff --git a/sdkjava/com/authorization/AuthorizationProto.java b/sdkjava/com/authorization/AuthorizationProto.java index a3a0f5b9ae..7dbcce5c29 100644 --- a/sdkjava/com/authorization/AuthorizationProto.java +++ b/sdkjava/com/authorization/AuthorizationProto.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public final class AuthorizationProto { diff --git a/sdkjava/com/authorization/DecisionRequest.java b/sdkjava/com/authorization/DecisionRequest.java index ea1afd12cb..d73f302e66 100644 --- a/sdkjava/com/authorization/DecisionRequest.java +++ b/sdkjava/com/authorization/DecisionRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/DecisionRequestOrBuilder.java b/sdkjava/com/authorization/DecisionRequestOrBuilder.java index 5b5b1d8f2d..7ab07adbbe 100644 --- a/sdkjava/com/authorization/DecisionRequestOrBuilder.java +++ b/sdkjava/com/authorization/DecisionRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface DecisionRequestOrBuilder extends diff --git a/sdkjava/com/authorization/DecisionResponse.java b/sdkjava/com/authorization/DecisionResponse.java index 154ceafb39..b99d52c9cd 100644 --- a/sdkjava/com/authorization/DecisionResponse.java +++ b/sdkjava/com/authorization/DecisionResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/DecisionResponseOrBuilder.java b/sdkjava/com/authorization/DecisionResponseOrBuilder.java index 97a3467661..1e5b96f1bd 100644 --- a/sdkjava/com/authorization/DecisionResponseOrBuilder.java +++ b/sdkjava/com/authorization/DecisionResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface DecisionResponseOrBuilder extends diff --git a/sdkjava/com/authorization/Entity.java b/sdkjava/com/authorization/Entity.java index 6ff372c86d..ea6802d11b 100644 --- a/sdkjava/com/authorization/Entity.java +++ b/sdkjava/com/authorization/Entity.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/EntityChain.java b/sdkjava/com/authorization/EntityChain.java index dfcbd2c225..d27f0f7635 100644 --- a/sdkjava/com/authorization/EntityChain.java +++ b/sdkjava/com/authorization/EntityChain.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/EntityChainOrBuilder.java b/sdkjava/com/authorization/EntityChainOrBuilder.java index 66be1c4817..d8b5c34258 100644 --- a/sdkjava/com/authorization/EntityChainOrBuilder.java +++ b/sdkjava/com/authorization/EntityChainOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface EntityChainOrBuilder extends diff --git a/sdkjava/com/authorization/EntityCustom.java b/sdkjava/com/authorization/EntityCustom.java index 5f0f82aee3..2216b37912 100644 --- a/sdkjava/com/authorization/EntityCustom.java +++ b/sdkjava/com/authorization/EntityCustom.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/EntityCustomOrBuilder.java b/sdkjava/com/authorization/EntityCustomOrBuilder.java index 5be2400885..f00b231523 100644 --- a/sdkjava/com/authorization/EntityCustomOrBuilder.java +++ b/sdkjava/com/authorization/EntityCustomOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface EntityCustomOrBuilder extends diff --git a/sdkjava/com/authorization/EntityEntitlements.java b/sdkjava/com/authorization/EntityEntitlements.java index a82fdaf7d7..056c34c5bb 100644 --- a/sdkjava/com/authorization/EntityEntitlements.java +++ b/sdkjava/com/authorization/EntityEntitlements.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/EntityEntitlementsOrBuilder.java b/sdkjava/com/authorization/EntityEntitlementsOrBuilder.java index b1ef534ea9..25fabd2952 100644 --- a/sdkjava/com/authorization/EntityEntitlementsOrBuilder.java +++ b/sdkjava/com/authorization/EntityEntitlementsOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface EntityEntitlementsOrBuilder extends diff --git a/sdkjava/com/authorization/EntityOrBuilder.java b/sdkjava/com/authorization/EntityOrBuilder.java index 0ed1070a5d..bf35512fc3 100644 --- a/sdkjava/com/authorization/EntityOrBuilder.java +++ b/sdkjava/com/authorization/EntityOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface EntityOrBuilder extends diff --git a/sdkjava/com/authorization/GetDecisionsRequest.java b/sdkjava/com/authorization/GetDecisionsRequest.java index 1dbcbff74b..b8633efd0c 100644 --- a/sdkjava/com/authorization/GetDecisionsRequest.java +++ b/sdkjava/com/authorization/GetDecisionsRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/GetDecisionsRequestOrBuilder.java b/sdkjava/com/authorization/GetDecisionsRequestOrBuilder.java index 664800480e..de3feefca7 100644 --- a/sdkjava/com/authorization/GetDecisionsRequestOrBuilder.java +++ b/sdkjava/com/authorization/GetDecisionsRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface GetDecisionsRequestOrBuilder extends diff --git a/sdkjava/com/authorization/GetDecisionsResponse.java b/sdkjava/com/authorization/GetDecisionsResponse.java index 13fe3d46b4..af8fb28b51 100644 --- a/sdkjava/com/authorization/GetDecisionsResponse.java +++ b/sdkjava/com/authorization/GetDecisionsResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/GetDecisionsResponseOrBuilder.java b/sdkjava/com/authorization/GetDecisionsResponseOrBuilder.java index 386b7145e1..cd38ecc4ed 100644 --- a/sdkjava/com/authorization/GetDecisionsResponseOrBuilder.java +++ b/sdkjava/com/authorization/GetDecisionsResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface GetDecisionsResponseOrBuilder extends diff --git a/sdkjava/com/authorization/GetEntitlementsRequest.java b/sdkjava/com/authorization/GetEntitlementsRequest.java index 16a168e445..eee6598458 100644 --- a/sdkjava/com/authorization/GetEntitlementsRequest.java +++ b/sdkjava/com/authorization/GetEntitlementsRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/GetEntitlementsRequestOrBuilder.java b/sdkjava/com/authorization/GetEntitlementsRequestOrBuilder.java index a8b597b20e..c4ab02398e 100644 --- a/sdkjava/com/authorization/GetEntitlementsRequestOrBuilder.java +++ b/sdkjava/com/authorization/GetEntitlementsRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface GetEntitlementsRequestOrBuilder extends diff --git a/sdkjava/com/authorization/GetEntitlementsResponse.java b/sdkjava/com/authorization/GetEntitlementsResponse.java index c72f01a300..88959b9e59 100644 --- a/sdkjava/com/authorization/GetEntitlementsResponse.java +++ b/sdkjava/com/authorization/GetEntitlementsResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/GetEntitlementsResponseOrBuilder.java b/sdkjava/com/authorization/GetEntitlementsResponseOrBuilder.java index d48446924a..dbe7d2134f 100644 --- a/sdkjava/com/authorization/GetEntitlementsResponseOrBuilder.java +++ b/sdkjava/com/authorization/GetEntitlementsResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface GetEntitlementsResponseOrBuilder extends diff --git a/sdkjava/com/authorization/ResourceAttributes.java b/sdkjava/com/authorization/ResourceAttributes.java index a6cd0833f9..8108822ab7 100644 --- a/sdkjava/com/authorization/ResourceAttributes.java +++ b/sdkjava/com/authorization/ResourceAttributes.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; /** diff --git a/sdkjava/com/authorization/ResourceAttributesOrBuilder.java b/sdkjava/com/authorization/ResourceAttributesOrBuilder.java index 4d32cd8ce6..08fb7092dd 100644 --- a/sdkjava/com/authorization/ResourceAttributesOrBuilder.java +++ b/sdkjava/com/authorization/ResourceAttributesOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: authorization/authorization.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.authorization; public interface ResourceAttributesOrBuilder extends diff --git a/sdkjava/com/common/ActiveStateEnum.java b/sdkjava/com/common/ActiveStateEnum.java index 45f679bb60..98dfcb24db 100644 --- a/sdkjava/com/common/ActiveStateEnum.java +++ b/sdkjava/com/common/ActiveStateEnum.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: common/common.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.common; /** diff --git a/sdkjava/com/common/CommonProto.java b/sdkjava/com/common/CommonProto.java index 2c8b0e4582..b84d7c6c29 100644 --- a/sdkjava/com/common/CommonProto.java +++ b/sdkjava/com/common/CommonProto.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: common/common.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.common; public final class CommonProto { diff --git a/sdkjava/com/common/Metadata.java b/sdkjava/com/common/Metadata.java index f63e749a2d..379b2d1483 100644 --- a/sdkjava/com/common/Metadata.java +++ b/sdkjava/com/common/Metadata.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: common/common.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.common; /** diff --git a/sdkjava/com/common/MetadataMutable.java b/sdkjava/com/common/MetadataMutable.java index f744988ee2..d300fa0cc2 100644 --- a/sdkjava/com/common/MetadataMutable.java +++ b/sdkjava/com/common/MetadataMutable.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: common/common.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.common; /** diff --git a/sdkjava/com/common/MetadataMutableOrBuilder.java b/sdkjava/com/common/MetadataMutableOrBuilder.java index 2c9e20d16f..3643caa88f 100644 --- a/sdkjava/com/common/MetadataMutableOrBuilder.java +++ b/sdkjava/com/common/MetadataMutableOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: common/common.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.common; public interface MetadataMutableOrBuilder extends diff --git a/sdkjava/com/common/MetadataOrBuilder.java b/sdkjava/com/common/MetadataOrBuilder.java index 5e05983859..dce1ae6823 100644 --- a/sdkjava/com/common/MetadataOrBuilder.java +++ b/sdkjava/com/common/MetadataOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: common/common.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.common; public interface MetadataOrBuilder extends diff --git a/sdkjava/com/kasregistry/CreateKeyAccessServerRequest.java b/sdkjava/com/kasregistry/CreateKeyAccessServerRequest.java index 0555deba39..babbeac974 100644 --- a/sdkjava/com/kasregistry/CreateKeyAccessServerRequest.java +++ b/sdkjava/com/kasregistry/CreateKeyAccessServerRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/CreateKeyAccessServerRequestOrBuilder.java b/sdkjava/com/kasregistry/CreateKeyAccessServerRequestOrBuilder.java index aff6a89601..9728e6d52e 100644 --- a/sdkjava/com/kasregistry/CreateKeyAccessServerRequestOrBuilder.java +++ b/sdkjava/com/kasregistry/CreateKeyAccessServerRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface CreateKeyAccessServerRequestOrBuilder extends diff --git a/sdkjava/com/kasregistry/CreateKeyAccessServerResponse.java b/sdkjava/com/kasregistry/CreateKeyAccessServerResponse.java index 6af99f7e51..f68dd955b9 100644 --- a/sdkjava/com/kasregistry/CreateKeyAccessServerResponse.java +++ b/sdkjava/com/kasregistry/CreateKeyAccessServerResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/CreateKeyAccessServerResponseOrBuilder.java b/sdkjava/com/kasregistry/CreateKeyAccessServerResponseOrBuilder.java index 094255c525..30166fbfc0 100644 --- a/sdkjava/com/kasregistry/CreateKeyAccessServerResponseOrBuilder.java +++ b/sdkjava/com/kasregistry/CreateKeyAccessServerResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface CreateKeyAccessServerResponseOrBuilder extends diff --git a/sdkjava/com/kasregistry/DeleteKeyAccessServerRequest.java b/sdkjava/com/kasregistry/DeleteKeyAccessServerRequest.java index e61bab0693..ffc80086f8 100644 --- a/sdkjava/com/kasregistry/DeleteKeyAccessServerRequest.java +++ b/sdkjava/com/kasregistry/DeleteKeyAccessServerRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/DeleteKeyAccessServerRequestOrBuilder.java b/sdkjava/com/kasregistry/DeleteKeyAccessServerRequestOrBuilder.java index cb1df0c11d..e67b1ce419 100644 --- a/sdkjava/com/kasregistry/DeleteKeyAccessServerRequestOrBuilder.java +++ b/sdkjava/com/kasregistry/DeleteKeyAccessServerRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface DeleteKeyAccessServerRequestOrBuilder extends diff --git a/sdkjava/com/kasregistry/DeleteKeyAccessServerResponse.java b/sdkjava/com/kasregistry/DeleteKeyAccessServerResponse.java index ec055cf4c6..3d923fe3b9 100644 --- a/sdkjava/com/kasregistry/DeleteKeyAccessServerResponse.java +++ b/sdkjava/com/kasregistry/DeleteKeyAccessServerResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/DeleteKeyAccessServerResponseOrBuilder.java b/sdkjava/com/kasregistry/DeleteKeyAccessServerResponseOrBuilder.java index 6afef28993..19574078e8 100644 --- a/sdkjava/com/kasregistry/DeleteKeyAccessServerResponseOrBuilder.java +++ b/sdkjava/com/kasregistry/DeleteKeyAccessServerResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface DeleteKeyAccessServerResponseOrBuilder extends diff --git a/sdkjava/com/kasregistry/GetKeyAccessServerRequest.java b/sdkjava/com/kasregistry/GetKeyAccessServerRequest.java index 3dd923f20d..bf0ad6c1fa 100644 --- a/sdkjava/com/kasregistry/GetKeyAccessServerRequest.java +++ b/sdkjava/com/kasregistry/GetKeyAccessServerRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/GetKeyAccessServerRequestOrBuilder.java b/sdkjava/com/kasregistry/GetKeyAccessServerRequestOrBuilder.java index ef0b1a1015..b3086324b7 100644 --- a/sdkjava/com/kasregistry/GetKeyAccessServerRequestOrBuilder.java +++ b/sdkjava/com/kasregistry/GetKeyAccessServerRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface GetKeyAccessServerRequestOrBuilder extends diff --git a/sdkjava/com/kasregistry/GetKeyAccessServerResponse.java b/sdkjava/com/kasregistry/GetKeyAccessServerResponse.java index 85473b9d04..309c3e0657 100644 --- a/sdkjava/com/kasregistry/GetKeyAccessServerResponse.java +++ b/sdkjava/com/kasregistry/GetKeyAccessServerResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/GetKeyAccessServerResponseOrBuilder.java b/sdkjava/com/kasregistry/GetKeyAccessServerResponseOrBuilder.java index af133d28f6..bcc99d2329 100644 --- a/sdkjava/com/kasregistry/GetKeyAccessServerResponseOrBuilder.java +++ b/sdkjava/com/kasregistry/GetKeyAccessServerResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface GetKeyAccessServerResponseOrBuilder extends diff --git a/sdkjava/com/kasregistry/KeyAccessServer.java b/sdkjava/com/kasregistry/KeyAccessServer.java index 627133af97..1b85ddfff5 100644 --- a/sdkjava/com/kasregistry/KeyAccessServer.java +++ b/sdkjava/com/kasregistry/KeyAccessServer.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/KeyAccessServerCreateUpdate.java b/sdkjava/com/kasregistry/KeyAccessServerCreateUpdate.java index 5a4da06d2b..8236520b7c 100644 --- a/sdkjava/com/kasregistry/KeyAccessServerCreateUpdate.java +++ b/sdkjava/com/kasregistry/KeyAccessServerCreateUpdate.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/KeyAccessServerCreateUpdateOrBuilder.java b/sdkjava/com/kasregistry/KeyAccessServerCreateUpdateOrBuilder.java index b4afa6e4d8..eb5c0bf97f 100644 --- a/sdkjava/com/kasregistry/KeyAccessServerCreateUpdateOrBuilder.java +++ b/sdkjava/com/kasregistry/KeyAccessServerCreateUpdateOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface KeyAccessServerCreateUpdateOrBuilder extends diff --git a/sdkjava/com/kasregistry/KeyAccessServerOrBuilder.java b/sdkjava/com/kasregistry/KeyAccessServerOrBuilder.java index 78c9d4eac0..709bb4b59b 100644 --- a/sdkjava/com/kasregistry/KeyAccessServerOrBuilder.java +++ b/sdkjava/com/kasregistry/KeyAccessServerOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface KeyAccessServerOrBuilder extends diff --git a/sdkjava/com/kasregistry/KeyAccessServerRegistryProto.java b/sdkjava/com/kasregistry/KeyAccessServerRegistryProto.java index 83e14a52d1..cfbee3c50d 100644 --- a/sdkjava/com/kasregistry/KeyAccessServerRegistryProto.java +++ b/sdkjava/com/kasregistry/KeyAccessServerRegistryProto.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public final class KeyAccessServerRegistryProto { diff --git a/sdkjava/com/kasregistry/ListKeyAccessServersRequest.java b/sdkjava/com/kasregistry/ListKeyAccessServersRequest.java index 96830d84bc..ff1ad4cab3 100644 --- a/sdkjava/com/kasregistry/ListKeyAccessServersRequest.java +++ b/sdkjava/com/kasregistry/ListKeyAccessServersRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/ListKeyAccessServersRequestOrBuilder.java b/sdkjava/com/kasregistry/ListKeyAccessServersRequestOrBuilder.java index 3122916f93..867ed5b965 100644 --- a/sdkjava/com/kasregistry/ListKeyAccessServersRequestOrBuilder.java +++ b/sdkjava/com/kasregistry/ListKeyAccessServersRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface ListKeyAccessServersRequestOrBuilder extends diff --git a/sdkjava/com/kasregistry/ListKeyAccessServersResponse.java b/sdkjava/com/kasregistry/ListKeyAccessServersResponse.java index 0f34802cd7..ae945eeacb 100644 --- a/sdkjava/com/kasregistry/ListKeyAccessServersResponse.java +++ b/sdkjava/com/kasregistry/ListKeyAccessServersResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/ListKeyAccessServersResponseOrBuilder.java b/sdkjava/com/kasregistry/ListKeyAccessServersResponseOrBuilder.java index 871bc9678c..ee7f5679c1 100644 --- a/sdkjava/com/kasregistry/ListKeyAccessServersResponseOrBuilder.java +++ b/sdkjava/com/kasregistry/ListKeyAccessServersResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface ListKeyAccessServersResponseOrBuilder extends diff --git a/sdkjava/com/kasregistry/PublicKey.java b/sdkjava/com/kasregistry/PublicKey.java index 60f5738279..9c81329995 100644 --- a/sdkjava/com/kasregistry/PublicKey.java +++ b/sdkjava/com/kasregistry/PublicKey.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/PublicKeyOrBuilder.java b/sdkjava/com/kasregistry/PublicKeyOrBuilder.java index 7d9cc2bf24..26398b6396 100644 --- a/sdkjava/com/kasregistry/PublicKeyOrBuilder.java +++ b/sdkjava/com/kasregistry/PublicKeyOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface PublicKeyOrBuilder extends diff --git a/sdkjava/com/kasregistry/UpdateKeyAccessServerRequest.java b/sdkjava/com/kasregistry/UpdateKeyAccessServerRequest.java index fccf30c52e..6b8754440e 100644 --- a/sdkjava/com/kasregistry/UpdateKeyAccessServerRequest.java +++ b/sdkjava/com/kasregistry/UpdateKeyAccessServerRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/UpdateKeyAccessServerRequestOrBuilder.java b/sdkjava/com/kasregistry/UpdateKeyAccessServerRequestOrBuilder.java index 8d2d6ae033..bc997cc567 100644 --- a/sdkjava/com/kasregistry/UpdateKeyAccessServerRequestOrBuilder.java +++ b/sdkjava/com/kasregistry/UpdateKeyAccessServerRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface UpdateKeyAccessServerRequestOrBuilder extends diff --git a/sdkjava/com/kasregistry/UpdateKeyAccessServerResponse.java b/sdkjava/com/kasregistry/UpdateKeyAccessServerResponse.java index de4c88cc2c..630404a9e2 100644 --- a/sdkjava/com/kasregistry/UpdateKeyAccessServerResponse.java +++ b/sdkjava/com/kasregistry/UpdateKeyAccessServerResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; /** diff --git a/sdkjava/com/kasregistry/UpdateKeyAccessServerResponseOrBuilder.java b/sdkjava/com/kasregistry/UpdateKeyAccessServerResponseOrBuilder.java index f6f526aea6..42d3e5e67b 100644 --- a/sdkjava/com/kasregistry/UpdateKeyAccessServerResponseOrBuilder.java +++ b/sdkjava/com/kasregistry/UpdateKeyAccessServerResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: kasregistry/key_access_server_registry.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.kasregistry; public interface UpdateKeyAccessServerResponseOrBuilder extends diff --git a/sdkjava/com/namespaces/CreateNamespaceRequest.java b/sdkjava/com/namespaces/CreateNamespaceRequest.java index f50b02fd57..eeac618260 100644 --- a/sdkjava/com/namespaces/CreateNamespaceRequest.java +++ b/sdkjava/com/namespaces/CreateNamespaceRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** diff --git a/sdkjava/com/namespaces/CreateNamespaceRequestOrBuilder.java b/sdkjava/com/namespaces/CreateNamespaceRequestOrBuilder.java index c7a93fad4d..ca93c05711 100644 --- a/sdkjava/com/namespaces/CreateNamespaceRequestOrBuilder.java +++ b/sdkjava/com/namespaces/CreateNamespaceRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface CreateNamespaceRequestOrBuilder extends diff --git a/sdkjava/com/namespaces/CreateNamespaceResponse.java b/sdkjava/com/namespaces/CreateNamespaceResponse.java index b211b8c6c3..b3c2c39751 100644 --- a/sdkjava/com/namespaces/CreateNamespaceResponse.java +++ b/sdkjava/com/namespaces/CreateNamespaceResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** diff --git a/sdkjava/com/namespaces/CreateNamespaceResponseOrBuilder.java b/sdkjava/com/namespaces/CreateNamespaceResponseOrBuilder.java index 22f7f85a5f..0f0b272ad3 100644 --- a/sdkjava/com/namespaces/CreateNamespaceResponseOrBuilder.java +++ b/sdkjava/com/namespaces/CreateNamespaceResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface CreateNamespaceResponseOrBuilder extends diff --git a/sdkjava/com/namespaces/DeactivateNamespaceRequest.java b/sdkjava/com/namespaces/DeactivateNamespaceRequest.java index 142a1ef20b..9e27e2eff8 100644 --- a/sdkjava/com/namespaces/DeactivateNamespaceRequest.java +++ b/sdkjava/com/namespaces/DeactivateNamespaceRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** diff --git a/sdkjava/com/namespaces/DeactivateNamespaceRequestOrBuilder.java b/sdkjava/com/namespaces/DeactivateNamespaceRequestOrBuilder.java index 32c824cf8e..3bbecd318e 100644 --- a/sdkjava/com/namespaces/DeactivateNamespaceRequestOrBuilder.java +++ b/sdkjava/com/namespaces/DeactivateNamespaceRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface DeactivateNamespaceRequestOrBuilder extends diff --git a/sdkjava/com/namespaces/DeactivateNamespaceResponse.java b/sdkjava/com/namespaces/DeactivateNamespaceResponse.java index 0bde753995..5ba9f8fb07 100644 --- a/sdkjava/com/namespaces/DeactivateNamespaceResponse.java +++ b/sdkjava/com/namespaces/DeactivateNamespaceResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** diff --git a/sdkjava/com/namespaces/DeactivateNamespaceResponseOrBuilder.java b/sdkjava/com/namespaces/DeactivateNamespaceResponseOrBuilder.java index f3f424e5a8..0e36e8f40e 100644 --- a/sdkjava/com/namespaces/DeactivateNamespaceResponseOrBuilder.java +++ b/sdkjava/com/namespaces/DeactivateNamespaceResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface DeactivateNamespaceResponseOrBuilder extends diff --git a/sdkjava/com/namespaces/GetNamespaceRequest.java b/sdkjava/com/namespaces/GetNamespaceRequest.java index 8d98188c35..1c1fe9c302 100644 --- a/sdkjava/com/namespaces/GetNamespaceRequest.java +++ b/sdkjava/com/namespaces/GetNamespaceRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** diff --git a/sdkjava/com/namespaces/GetNamespaceRequestOrBuilder.java b/sdkjava/com/namespaces/GetNamespaceRequestOrBuilder.java index 2e8e04794e..b5fe0912e2 100644 --- a/sdkjava/com/namespaces/GetNamespaceRequestOrBuilder.java +++ b/sdkjava/com/namespaces/GetNamespaceRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface GetNamespaceRequestOrBuilder extends diff --git a/sdkjava/com/namespaces/GetNamespaceResponse.java b/sdkjava/com/namespaces/GetNamespaceResponse.java index 5d18a3bbb7..39531e4af3 100644 --- a/sdkjava/com/namespaces/GetNamespaceResponse.java +++ b/sdkjava/com/namespaces/GetNamespaceResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** diff --git a/sdkjava/com/namespaces/GetNamespaceResponseOrBuilder.java b/sdkjava/com/namespaces/GetNamespaceResponseOrBuilder.java index 5e33d0ddaa..6b131fd9c0 100644 --- a/sdkjava/com/namespaces/GetNamespaceResponseOrBuilder.java +++ b/sdkjava/com/namespaces/GetNamespaceResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface GetNamespaceResponseOrBuilder extends diff --git a/sdkjava/com/namespaces/ListNamespacesRequest.java b/sdkjava/com/namespaces/ListNamespacesRequest.java index b919a3b905..36ce51b025 100644 --- a/sdkjava/com/namespaces/ListNamespacesRequest.java +++ b/sdkjava/com/namespaces/ListNamespacesRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** diff --git a/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java b/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java index 4917130992..891cace3ff 100644 --- a/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java +++ b/sdkjava/com/namespaces/ListNamespacesRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface ListNamespacesRequestOrBuilder extends diff --git a/sdkjava/com/namespaces/ListNamespacesResponse.java b/sdkjava/com/namespaces/ListNamespacesResponse.java index bdc0705a5c..786e3df315 100644 --- a/sdkjava/com/namespaces/ListNamespacesResponse.java +++ b/sdkjava/com/namespaces/ListNamespacesResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** diff --git a/sdkjava/com/namespaces/ListNamespacesResponseOrBuilder.java b/sdkjava/com/namespaces/ListNamespacesResponseOrBuilder.java index 1dab1da1af..c30202abc5 100644 --- a/sdkjava/com/namespaces/ListNamespacesResponseOrBuilder.java +++ b/sdkjava/com/namespaces/ListNamespacesResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface ListNamespacesResponseOrBuilder extends diff --git a/sdkjava/com/namespaces/Namespace.java b/sdkjava/com/namespaces/Namespace.java index 4a472a1139..7184334d5a 100644 --- a/sdkjava/com/namespaces/Namespace.java +++ b/sdkjava/com/namespaces/Namespace.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** @@ -19,7 +19,6 @@ private Namespace(com.google.protobuf.GeneratedMessageV3.Builder builder) { private Namespace() { id_ = ""; name_ = ""; - state_ = 0; } @java.lang.Override @@ -136,30 +135,19 @@ public java.lang.String getName() { } } - public static final int STATE_FIELD_NUMBER = 3; - private int state_ = 0; + public static final int ACTIVE_FIELD_NUMBER = 3; + private boolean active_ = false; /** *
        * active by default until explicitly deactivated
        * 
    * - * .common.ActiveStateEnum state = 3 [json_name = "state"]; - * @return The enum numeric value on the wire for state. + * bool active = 3 [json_name = "active"]; + * @return The active. */ - @java.lang.Override public int getStateValue() { - return state_; - } - /** - *
    -   * active by default until explicitly deactivated
    -   * 
    - * - * .common.ActiveStateEnum state = 3 [json_name = "state"]; - * @return The state. - */ - @java.lang.Override public com.common.ActiveStateEnum getState() { - com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); - return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; + @java.lang.Override + public boolean getActive() { + return active_; } private byte memoizedIsInitialized = -1; @@ -182,8 +170,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } - if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { - output.writeEnum(3, state_); + if (active_ != false) { + output.writeBool(3, active_); } getUnknownFields().writeTo(output); } @@ -200,9 +188,9 @@ public int getSerializedSize() { if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } - if (state_ != com.common.ActiveStateEnum.ACTIVE_STATE_ENUM_UNSPECIFIED.getNumber()) { + if (active_ != false) { size += com.google.protobuf.CodedOutputStream - .computeEnumSize(3, state_); + .computeBoolSize(3, active_); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -223,7 +211,8 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getId())) return false; if (!getName() .equals(other.getName())) return false; - if (state_ != other.state_) return false; + if (getActive() + != other.getActive()) return false; if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -239,8 +228,9 @@ public int hashCode() { hash = (53 * hash) + getId().hashCode(); hash = (37 * hash) + NAME_FIELD_NUMBER; hash = (53 * hash) + getName().hashCode(); - hash = (37 * hash) + STATE_FIELD_NUMBER; - hash = (53 * hash) + state_; + hash = (37 * hash) + ACTIVE_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getActive()); hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -374,7 +364,7 @@ public Builder clear() { bitField0_ = 0; id_ = ""; name_ = ""; - state_ = 0; + active_ = false; return this; } @@ -415,7 +405,7 @@ private void buildPartial0(com.namespaces.Namespace result) { result.name_ = name_; } if (((from_bitField0_ & 0x00000004) != 0)) { - result.state_ = state_; + result.active_ = active_; } } @@ -473,8 +463,8 @@ public Builder mergeFrom(com.namespaces.Namespace other) { bitField0_ |= 0x00000002; onChanged(); } - if (other.state_ != 0) { - setStateValue(other.getStateValue()); + if (other.getActive() != false) { + setActive(other.getActive()); } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -513,7 +503,7 @@ public Builder mergeFrom( break; } // case 18 case 24: { - state_ = input.readEnum(); + active_ = input.readBool(); bitField0_ |= 0x00000004; break; } // case 24 @@ -718,61 +708,32 @@ public Builder setNameBytes( return this; } - private int state_ = 0; - /** - *
    -     * active by default until explicitly deactivated
    -     * 
    - * - * .common.ActiveStateEnum state = 3 [json_name = "state"]; - * @return The enum numeric value on the wire for state. - */ - @java.lang.Override public int getStateValue() { - return state_; - } - /** - *
    -     * active by default until explicitly deactivated
    -     * 
    - * - * .common.ActiveStateEnum state = 3 [json_name = "state"]; - * @param value The enum numeric value on the wire for state to set. - * @return This builder for chaining. - */ - public Builder setStateValue(int value) { - state_ = value; - bitField0_ |= 0x00000004; - onChanged(); - return this; - } + private boolean active_ ; /** *
          * active by default until explicitly deactivated
          * 
    * - * .common.ActiveStateEnum state = 3 [json_name = "state"]; - * @return The state. + * bool active = 3 [json_name = "active"]; + * @return The active. */ @java.lang.Override - public com.common.ActiveStateEnum getState() { - com.common.ActiveStateEnum result = com.common.ActiveStateEnum.forNumber(state_); - return result == null ? com.common.ActiveStateEnum.UNRECOGNIZED : result; + public boolean getActive() { + return active_; } /** *
          * active by default until explicitly deactivated
          * 
    * - * .common.ActiveStateEnum state = 3 [json_name = "state"]; - * @param value The state to set. + * bool active = 3 [json_name = "active"]; + * @param value The active to set. * @return This builder for chaining. */ - public Builder setState(com.common.ActiveStateEnum value) { - if (value == null) { - throw new NullPointerException(); - } + public Builder setActive(boolean value) { + + active_ = value; bitField0_ |= 0x00000004; - state_ = value.getNumber(); onChanged(); return this; } @@ -781,12 +742,12 @@ public Builder setState(com.common.ActiveStateEnum value) { * active by default until explicitly deactivated * * - * .common.ActiveStateEnum state = 3 [json_name = "state"]; + * bool active = 3 [json_name = "active"]; * @return This builder for chaining. */ - public Builder clearState() { + public Builder clearActive() { bitField0_ = (bitField0_ & ~0x00000004); - state_ = 0; + active_ = false; onChanged(); return this; } diff --git a/sdkjava/com/namespaces/NamespaceOrBuilder.java b/sdkjava/com/namespaces/NamespaceOrBuilder.java index d6fd9b3cdf..d9389cdc88 100644 --- a/sdkjava/com/namespaces/NamespaceOrBuilder.java +++ b/sdkjava/com/namespaces/NamespaceOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface NamespaceOrBuilder extends @@ -53,17 +53,8 @@ public interface NamespaceOrBuilder extends * active by default until explicitly deactivated * * - * .common.ActiveStateEnum state = 3 [json_name = "state"]; - * @return The enum numeric value on the wire for state. + * bool active = 3 [json_name = "active"]; + * @return The active. */ - int getStateValue(); - /** - *
    -   * active by default until explicitly deactivated
    -   * 
    - * - * .common.ActiveStateEnum state = 3 [json_name = "state"]; - * @return The state. - */ - com.common.ActiveStateEnum getState(); + boolean getActive(); } diff --git a/sdkjava/com/namespaces/NamespacesProto.java b/sdkjava/com/namespaces/NamespacesProto.java index a760370b77..917903ca67 100644 --- a/sdkjava/com/namespaces/NamespacesProto.java +++ b/sdkjava/com/namespaces/NamespacesProto.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public final class NamespacesProto { @@ -82,7 +82,7 @@ public static void registerAllExtensions( "\n\033namespaces/namespaces.proto\022\nnamespace" + "s\032\033buf/validate/validate.proto\032\034google/a" + "pi/annotations.proto\032\023common/common.prot" + - "o\"\304\004\n\tNamespace\022\016\n\002id\030\001 \001(\tR\002id\022\367\003\n\004name" + + "o\"\255\004\n\tNamespace\022\016\n\002id\030\001 \001(\tR\002id\022\367\003\n\004name" + "\030\002 \001(\tB\342\003\272H\336\003r\003\030\375\001\272\001\322\003\n\020namespace_format" + "\022\352\002Namespace must be a valid hostname. I" + "t should include at least one dot, with " + @@ -95,45 +95,44 @@ public static void registerAllExtensions( "onsist of at least two alphabetic charac" + "ters.\032Qthis.matches(\'^([a-zA-Z0-9]([a-zA" + "-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?\\\\.)+[a-zA-Z" + - "]{2,}$\')\310\001\001R\004name\022-\n\005state\030\003 \001(\0162\027.commo" + - "n.ActiveStateEnumR\005state\"-\n\023GetNamespace" + - "Request\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetNa" + - "mespaceResponse\0223\n\tnamespace\030\001 \001(\0132\025.nam" + - "espaces.NamespaceR\tnamespace\"F\n\025ListName" + - "spacesRequest\022-\n\005state\030\001 \001(\0162\027.common.Ac" + - "tiveStateEnumR\005state\"O\n\026ListNamespacesRe" + - "sponse\0225\n\nnamespaces\030\001 \003(\0132\025.namespaces." + - "NamespaceR\nnamespaces\"4\n\026CreateNamespace" + - "Request\022\032\n\004name\030\001 \001(\tB\006\272H\003\310\001\001R\004name\"N\n\027C" + - "reateNamespaceResponse\0223\n\tnamespace\030\001 \001(" + - "\0132\025.namespaces.NamespaceR\tnamespace\"L\n\026U" + - "pdateNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001" + - "\001R\002id\022\032\n\004name\030\002 \001(\tB\006\272H\003\310\001\001R\004name\"N\n\027Upd" + - "ateNamespaceResponse\0223\n\tnamespace\030\001 \001(\0132" + - "\025.namespaces.NamespaceR\tnamespace\"4\n\032Dea" + - "ctivateNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003" + - "\310\001\001R\002id\"\035\n\033DeactivateNamespaceResponse2\216" + - "\005\n\020NamespaceService\022v\n\014GetNamespace\022\037.na" + - "mespaces.GetNamespaceRequest\032 .namespace" + - "s.GetNamespaceResponse\"#\202\323\344\223\002\035\022\033/attribu" + - "tes/namespaces/{id}\022w\n\016ListNamespaces\022!." + - "namespaces.ListNamespacesRequest\032\".names" + - "paces.ListNamespacesResponse\"\036\202\323\344\223\002\030\022\026/a" + - "ttributes/namespaces\022z\n\017CreateNamespace\022" + - "\".namespaces.CreateNamespaceRequest\032#.na" + - "mespaces.CreateNamespaceResponse\"\036\202\323\344\223\002\030" + - "\"\026/attributes/namespaces\022\177\n\017UpdateNamesp" + - "ace\022\".namespaces.UpdateNamespaceRequest\032" + - "#.namespaces.UpdateNamespaceResponse\"#\202\323" + - "\344\223\002\035\032\033/attributes/namespaces/{id}\022\213\001\n\023De" + - "activateNamespace\022&.namespaces.Deactivat" + - "eNamespaceRequest\032\'.namespaces.Deactivat" + - "eNamespaceResponse\"#\202\323\344\223\002\035*\033/attributes/" + - "namespaces/{id}B\233\001\n\016com.namespacesB\017Name" + - "spacesProtoP\001Z0github.com/opentdf/opentd" + - "f-v2-poc/sdk/namespaces\242\002\003NXX\252\002\nNamespac" + - "es\312\002\nNamespaces\342\002\026Namespaces\\GPBMetadata" + - "\352\002\nNamespacesb\006proto3" + "]{2,}$\')\310\001\001R\004name\022\026\n\006active\030\003 \001(\010R\006activ" + + "e\"-\n\023GetNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H" + + "\003\310\001\001R\002id\"K\n\024GetNamespaceResponse\0223\n\tname" + + "space\030\001 \001(\0132\025.namespaces.NamespaceR\tname" + + "space\"F\n\025ListNamespacesRequest\022-\n\005state\030" + + "\001 \001(\0162\027.common.ActiveStateEnumR\005state\"O\n" + + "\026ListNamespacesResponse\0225\n\nnamespaces\030\001 " + + "\003(\0132\025.namespaces.NamespaceR\nnamespaces\"4" + + "\n\026CreateNamespaceRequest\022\032\n\004name\030\001 \001(\tB\006" + + "\272H\003\310\001\001R\004name\"N\n\027CreateNamespaceResponse\022" + + "3\n\tnamespace\030\001 \001(\0132\025.namespaces.Namespac" + + "eR\tnamespace\"L\n\026UpdateNamespaceRequest\022\026" + + "\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\022\032\n\004name\030\002 \001(\tB\006\272H" + + "\003\310\001\001R\004name\"N\n\027UpdateNamespaceResponse\0223\n" + + "\tnamespace\030\001 \001(\0132\025.namespaces.NamespaceR" + + "\tnamespace\"4\n\032DeactivateNamespaceRequest" + + "\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"\035\n\033DeactivateNa" + + "mespaceResponse2\216\005\n\020NamespaceService\022v\n\014" + + "GetNamespace\022\037.namespaces.GetNamespaceRe" + + "quest\032 .namespaces.GetNamespaceResponse\"" + + "#\202\323\344\223\002\035\022\033/attributes/namespaces/{id}\022w\n\016" + + "ListNamespaces\022!.namespaces.ListNamespac" + + "esRequest\032\".namespaces.ListNamespacesRes" + + "ponse\"\036\202\323\344\223\002\030\022\026/attributes/namespaces\022z\n" + + "\017CreateNamespace\022\".namespaces.CreateName" + + "spaceRequest\032#.namespaces.CreateNamespac" + + "eResponse\"\036\202\323\344\223\002\030\"\026/attributes/namespace" + + "s\022\177\n\017UpdateNamespace\022\".namespaces.Update" + + "NamespaceRequest\032#.namespaces.UpdateName" + + "spaceResponse\"#\202\323\344\223\002\035\032\033/attributes/names" + + "paces/{id}\022\213\001\n\023DeactivateNamespace\022&.nam" + + "espaces.DeactivateNamespaceRequest\032\'.nam" + + "espaces.DeactivateNamespaceResponse\"#\202\323\344" + + "\223\002\035*\033/attributes/namespaces/{id}B\233\001\n\016com" + + ".namespacesB\017NamespacesProtoP\001Z0github.c" + + "om/opentdf/opentdf-v2-poc/sdk/namespaces" + + "\242\002\003NXX\252\002\nNamespaces\312\002\nNamespaces\342\002\026Names" + + "paces\\GPBMetadata\352\002\nNamespacesb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -147,7 +146,7 @@ public static void registerAllExtensions( internal_static_namespaces_Namespace_fieldAccessorTable = new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( internal_static_namespaces_Namespace_descriptor, - new java.lang.String[] { "Id", "Name", "State", }); + new java.lang.String[] { "Id", "Name", "Active", }); internal_static_namespaces_GetNamespaceRequest_descriptor = getDescriptor().getMessageTypes().get(1); internal_static_namespaces_GetNamespaceRequest_fieldAccessorTable = new diff --git a/sdkjava/com/namespaces/UpdateNamespaceRequest.java b/sdkjava/com/namespaces/UpdateNamespaceRequest.java index 8e84012cef..d518468fd6 100644 --- a/sdkjava/com/namespaces/UpdateNamespaceRequest.java +++ b/sdkjava/com/namespaces/UpdateNamespaceRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** diff --git a/sdkjava/com/namespaces/UpdateNamespaceRequestOrBuilder.java b/sdkjava/com/namespaces/UpdateNamespaceRequestOrBuilder.java index f50e146c63..ac34cc51c3 100644 --- a/sdkjava/com/namespaces/UpdateNamespaceRequestOrBuilder.java +++ b/sdkjava/com/namespaces/UpdateNamespaceRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface UpdateNamespaceRequestOrBuilder extends diff --git a/sdkjava/com/namespaces/UpdateNamespaceResponse.java b/sdkjava/com/namespaces/UpdateNamespaceResponse.java index ed3964e71f..5204183a89 100644 --- a/sdkjava/com/namespaces/UpdateNamespaceResponse.java +++ b/sdkjava/com/namespaces/UpdateNamespaceResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; /** diff --git a/sdkjava/com/namespaces/UpdateNamespaceResponseOrBuilder.java b/sdkjava/com/namespaces/UpdateNamespaceResponseOrBuilder.java index dcd41c3acf..f02b35ef50 100644 --- a/sdkjava/com/namespaces/UpdateNamespaceResponseOrBuilder.java +++ b/sdkjava/com/namespaces/UpdateNamespaceResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: namespaces/namespaces.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.namespaces; public interface UpdateNamespaceResponseOrBuilder extends diff --git a/sdkjava/com/resourcemapping/CreateResourceMappingRequest.java b/sdkjava/com/resourcemapping/CreateResourceMappingRequest.java index 1fb3b36b72..33fdff63ea 100644 --- a/sdkjava/com/resourcemapping/CreateResourceMappingRequest.java +++ b/sdkjava/com/resourcemapping/CreateResourceMappingRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/CreateResourceMappingRequestOrBuilder.java b/sdkjava/com/resourcemapping/CreateResourceMappingRequestOrBuilder.java index 81c632c8db..73e9b8c2b9 100644 --- a/sdkjava/com/resourcemapping/CreateResourceMappingRequestOrBuilder.java +++ b/sdkjava/com/resourcemapping/CreateResourceMappingRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface CreateResourceMappingRequestOrBuilder extends diff --git a/sdkjava/com/resourcemapping/CreateResourceMappingResponse.java b/sdkjava/com/resourcemapping/CreateResourceMappingResponse.java index bf2ea4f351..cfeb5e592d 100644 --- a/sdkjava/com/resourcemapping/CreateResourceMappingResponse.java +++ b/sdkjava/com/resourcemapping/CreateResourceMappingResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/CreateResourceMappingResponseOrBuilder.java b/sdkjava/com/resourcemapping/CreateResourceMappingResponseOrBuilder.java index 24cb002586..8fd3a0e749 100644 --- a/sdkjava/com/resourcemapping/CreateResourceMappingResponseOrBuilder.java +++ b/sdkjava/com/resourcemapping/CreateResourceMappingResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface CreateResourceMappingResponseOrBuilder extends diff --git a/sdkjava/com/resourcemapping/DeleteResourceMappingRequest.java b/sdkjava/com/resourcemapping/DeleteResourceMappingRequest.java index 2a84018251..c3b746d373 100644 --- a/sdkjava/com/resourcemapping/DeleteResourceMappingRequest.java +++ b/sdkjava/com/resourcemapping/DeleteResourceMappingRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/DeleteResourceMappingRequestOrBuilder.java b/sdkjava/com/resourcemapping/DeleteResourceMappingRequestOrBuilder.java index 9c9edc9c71..83e27912a4 100644 --- a/sdkjava/com/resourcemapping/DeleteResourceMappingRequestOrBuilder.java +++ b/sdkjava/com/resourcemapping/DeleteResourceMappingRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface DeleteResourceMappingRequestOrBuilder extends diff --git a/sdkjava/com/resourcemapping/DeleteResourceMappingResponse.java b/sdkjava/com/resourcemapping/DeleteResourceMappingResponse.java index f180743045..89b0e50340 100644 --- a/sdkjava/com/resourcemapping/DeleteResourceMappingResponse.java +++ b/sdkjava/com/resourcemapping/DeleteResourceMappingResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/DeleteResourceMappingResponseOrBuilder.java b/sdkjava/com/resourcemapping/DeleteResourceMappingResponseOrBuilder.java index d89d6b7b5b..c90027d088 100644 --- a/sdkjava/com/resourcemapping/DeleteResourceMappingResponseOrBuilder.java +++ b/sdkjava/com/resourcemapping/DeleteResourceMappingResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface DeleteResourceMappingResponseOrBuilder extends diff --git a/sdkjava/com/resourcemapping/GetResourceMappingRequest.java b/sdkjava/com/resourcemapping/GetResourceMappingRequest.java index 476cde875a..b9b20e8f27 100644 --- a/sdkjava/com/resourcemapping/GetResourceMappingRequest.java +++ b/sdkjava/com/resourcemapping/GetResourceMappingRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/GetResourceMappingRequestOrBuilder.java b/sdkjava/com/resourcemapping/GetResourceMappingRequestOrBuilder.java index fa3de7fb31..9043be9ecd 100644 --- a/sdkjava/com/resourcemapping/GetResourceMappingRequestOrBuilder.java +++ b/sdkjava/com/resourcemapping/GetResourceMappingRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface GetResourceMappingRequestOrBuilder extends diff --git a/sdkjava/com/resourcemapping/GetResourceMappingResponse.java b/sdkjava/com/resourcemapping/GetResourceMappingResponse.java index a83e648b5a..a8fa21aab6 100644 --- a/sdkjava/com/resourcemapping/GetResourceMappingResponse.java +++ b/sdkjava/com/resourcemapping/GetResourceMappingResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/GetResourceMappingResponseOrBuilder.java b/sdkjava/com/resourcemapping/GetResourceMappingResponseOrBuilder.java index fe7276fd84..5ff76274ec 100644 --- a/sdkjava/com/resourcemapping/GetResourceMappingResponseOrBuilder.java +++ b/sdkjava/com/resourcemapping/GetResourceMappingResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface GetResourceMappingResponseOrBuilder extends diff --git a/sdkjava/com/resourcemapping/ListResourceMappingsRequest.java b/sdkjava/com/resourcemapping/ListResourceMappingsRequest.java index 82296861ef..1a8e27d9dc 100644 --- a/sdkjava/com/resourcemapping/ListResourceMappingsRequest.java +++ b/sdkjava/com/resourcemapping/ListResourceMappingsRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/ListResourceMappingsRequestOrBuilder.java b/sdkjava/com/resourcemapping/ListResourceMappingsRequestOrBuilder.java index acc84ff2f5..dff3d2712f 100644 --- a/sdkjava/com/resourcemapping/ListResourceMappingsRequestOrBuilder.java +++ b/sdkjava/com/resourcemapping/ListResourceMappingsRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface ListResourceMappingsRequestOrBuilder extends diff --git a/sdkjava/com/resourcemapping/ListResourceMappingsResponse.java b/sdkjava/com/resourcemapping/ListResourceMappingsResponse.java index f787d41ad0..9e4827713c 100644 --- a/sdkjava/com/resourcemapping/ListResourceMappingsResponse.java +++ b/sdkjava/com/resourcemapping/ListResourceMappingsResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/ListResourceMappingsResponseOrBuilder.java b/sdkjava/com/resourcemapping/ListResourceMappingsResponseOrBuilder.java index bc7933016f..c1208578bf 100644 --- a/sdkjava/com/resourcemapping/ListResourceMappingsResponseOrBuilder.java +++ b/sdkjava/com/resourcemapping/ListResourceMappingsResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface ListResourceMappingsResponseOrBuilder extends diff --git a/sdkjava/com/resourcemapping/ResourceMapping.java b/sdkjava/com/resourcemapping/ResourceMapping.java index c254a6e861..4bda118fe2 100644 --- a/sdkjava/com/resourcemapping/ResourceMapping.java +++ b/sdkjava/com/resourcemapping/ResourceMapping.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/ResourceMappingCreateUpdate.java b/sdkjava/com/resourcemapping/ResourceMappingCreateUpdate.java index fa4949960c..af359fa115 100644 --- a/sdkjava/com/resourcemapping/ResourceMappingCreateUpdate.java +++ b/sdkjava/com/resourcemapping/ResourceMappingCreateUpdate.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/ResourceMappingCreateUpdateOrBuilder.java b/sdkjava/com/resourcemapping/ResourceMappingCreateUpdateOrBuilder.java index ef7cef0401..32ad63a607 100644 --- a/sdkjava/com/resourcemapping/ResourceMappingCreateUpdateOrBuilder.java +++ b/sdkjava/com/resourcemapping/ResourceMappingCreateUpdateOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface ResourceMappingCreateUpdateOrBuilder extends diff --git a/sdkjava/com/resourcemapping/ResourceMappingOrBuilder.java b/sdkjava/com/resourcemapping/ResourceMappingOrBuilder.java index 8298a310eb..9ab3828326 100644 --- a/sdkjava/com/resourcemapping/ResourceMappingOrBuilder.java +++ b/sdkjava/com/resourcemapping/ResourceMappingOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface ResourceMappingOrBuilder extends diff --git a/sdkjava/com/resourcemapping/ResourceMappingProto.java b/sdkjava/com/resourcemapping/ResourceMappingProto.java index 98f7741d97..cfa57ae83b 100644 --- a/sdkjava/com/resourcemapping/ResourceMappingProto.java +++ b/sdkjava/com/resourcemapping/ResourceMappingProto.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public final class ResourceMappingProto { diff --git a/sdkjava/com/resourcemapping/UpdateResourceMappingRequest.java b/sdkjava/com/resourcemapping/UpdateResourceMappingRequest.java index 44d671b6a5..14982f3c6b 100644 --- a/sdkjava/com/resourcemapping/UpdateResourceMappingRequest.java +++ b/sdkjava/com/resourcemapping/UpdateResourceMappingRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/UpdateResourceMappingRequestOrBuilder.java b/sdkjava/com/resourcemapping/UpdateResourceMappingRequestOrBuilder.java index e71a2962b6..c537c23aaf 100644 --- a/sdkjava/com/resourcemapping/UpdateResourceMappingRequestOrBuilder.java +++ b/sdkjava/com/resourcemapping/UpdateResourceMappingRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface UpdateResourceMappingRequestOrBuilder extends diff --git a/sdkjava/com/resourcemapping/UpdateResourceMappingResponse.java b/sdkjava/com/resourcemapping/UpdateResourceMappingResponse.java index f0eb1a0c38..4c4c183b35 100644 --- a/sdkjava/com/resourcemapping/UpdateResourceMappingResponse.java +++ b/sdkjava/com/resourcemapping/UpdateResourceMappingResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; /** diff --git a/sdkjava/com/resourcemapping/UpdateResourceMappingResponseOrBuilder.java b/sdkjava/com/resourcemapping/UpdateResourceMappingResponseOrBuilder.java index c6b229b3ff..dedb0fb090 100644 --- a/sdkjava/com/resourcemapping/UpdateResourceMappingResponseOrBuilder.java +++ b/sdkjava/com/resourcemapping/UpdateResourceMappingResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: resourcemapping/resource_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.resourcemapping; public interface UpdateResourceMappingResponseOrBuilder extends diff --git a/sdkjava/com/subjectmapping/CreateSubjectMappingRequest.java b/sdkjava/com/subjectmapping/CreateSubjectMappingRequest.java index 2f937d28a1..a3e307f50c 100644 --- a/sdkjava/com/subjectmapping/CreateSubjectMappingRequest.java +++ b/sdkjava/com/subjectmapping/CreateSubjectMappingRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/CreateSubjectMappingRequestOrBuilder.java b/sdkjava/com/subjectmapping/CreateSubjectMappingRequestOrBuilder.java index cab1ba06c1..01b7765373 100644 --- a/sdkjava/com/subjectmapping/CreateSubjectMappingRequestOrBuilder.java +++ b/sdkjava/com/subjectmapping/CreateSubjectMappingRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface CreateSubjectMappingRequestOrBuilder extends diff --git a/sdkjava/com/subjectmapping/CreateSubjectMappingResponse.java b/sdkjava/com/subjectmapping/CreateSubjectMappingResponse.java index 83f389a12a..59c75de411 100644 --- a/sdkjava/com/subjectmapping/CreateSubjectMappingResponse.java +++ b/sdkjava/com/subjectmapping/CreateSubjectMappingResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/CreateSubjectMappingResponseOrBuilder.java b/sdkjava/com/subjectmapping/CreateSubjectMappingResponseOrBuilder.java index 3fa31b0c6e..3362bfc912 100644 --- a/sdkjava/com/subjectmapping/CreateSubjectMappingResponseOrBuilder.java +++ b/sdkjava/com/subjectmapping/CreateSubjectMappingResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface CreateSubjectMappingResponseOrBuilder extends diff --git a/sdkjava/com/subjectmapping/DeleteSubjectMappingRequest.java b/sdkjava/com/subjectmapping/DeleteSubjectMappingRequest.java index ee688fffc7..7c5495a1ec 100644 --- a/sdkjava/com/subjectmapping/DeleteSubjectMappingRequest.java +++ b/sdkjava/com/subjectmapping/DeleteSubjectMappingRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/DeleteSubjectMappingRequestOrBuilder.java b/sdkjava/com/subjectmapping/DeleteSubjectMappingRequestOrBuilder.java index f082240148..1b82101ddb 100644 --- a/sdkjava/com/subjectmapping/DeleteSubjectMappingRequestOrBuilder.java +++ b/sdkjava/com/subjectmapping/DeleteSubjectMappingRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface DeleteSubjectMappingRequestOrBuilder extends diff --git a/sdkjava/com/subjectmapping/DeleteSubjectMappingResponse.java b/sdkjava/com/subjectmapping/DeleteSubjectMappingResponse.java index a21545d5da..20ce383aa1 100644 --- a/sdkjava/com/subjectmapping/DeleteSubjectMappingResponse.java +++ b/sdkjava/com/subjectmapping/DeleteSubjectMappingResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/DeleteSubjectMappingResponseOrBuilder.java b/sdkjava/com/subjectmapping/DeleteSubjectMappingResponseOrBuilder.java index 6a832b9a27..82238e4bc0 100644 --- a/sdkjava/com/subjectmapping/DeleteSubjectMappingResponseOrBuilder.java +++ b/sdkjava/com/subjectmapping/DeleteSubjectMappingResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface DeleteSubjectMappingResponseOrBuilder extends diff --git a/sdkjava/com/subjectmapping/GetSubjectMappingRequest.java b/sdkjava/com/subjectmapping/GetSubjectMappingRequest.java index 7b72c21bb8..61cc79da00 100644 --- a/sdkjava/com/subjectmapping/GetSubjectMappingRequest.java +++ b/sdkjava/com/subjectmapping/GetSubjectMappingRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/GetSubjectMappingRequestOrBuilder.java b/sdkjava/com/subjectmapping/GetSubjectMappingRequestOrBuilder.java index 5938610de6..d0ddd42446 100644 --- a/sdkjava/com/subjectmapping/GetSubjectMappingRequestOrBuilder.java +++ b/sdkjava/com/subjectmapping/GetSubjectMappingRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface GetSubjectMappingRequestOrBuilder extends diff --git a/sdkjava/com/subjectmapping/GetSubjectMappingResponse.java b/sdkjava/com/subjectmapping/GetSubjectMappingResponse.java index a85c98c61d..ba32b0a6ad 100644 --- a/sdkjava/com/subjectmapping/GetSubjectMappingResponse.java +++ b/sdkjava/com/subjectmapping/GetSubjectMappingResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/GetSubjectMappingResponseOrBuilder.java b/sdkjava/com/subjectmapping/GetSubjectMappingResponseOrBuilder.java index c8e7f7208a..328e1fd3e2 100644 --- a/sdkjava/com/subjectmapping/GetSubjectMappingResponseOrBuilder.java +++ b/sdkjava/com/subjectmapping/GetSubjectMappingResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface GetSubjectMappingResponseOrBuilder extends diff --git a/sdkjava/com/subjectmapping/ListSubjectMappingsRequest.java b/sdkjava/com/subjectmapping/ListSubjectMappingsRequest.java index e297c125be..c5c4f01567 100644 --- a/sdkjava/com/subjectmapping/ListSubjectMappingsRequest.java +++ b/sdkjava/com/subjectmapping/ListSubjectMappingsRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/ListSubjectMappingsRequestOrBuilder.java b/sdkjava/com/subjectmapping/ListSubjectMappingsRequestOrBuilder.java index 7c614ed9dd..68a3051f63 100644 --- a/sdkjava/com/subjectmapping/ListSubjectMappingsRequestOrBuilder.java +++ b/sdkjava/com/subjectmapping/ListSubjectMappingsRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface ListSubjectMappingsRequestOrBuilder extends diff --git a/sdkjava/com/subjectmapping/ListSubjectMappingsResponse.java b/sdkjava/com/subjectmapping/ListSubjectMappingsResponse.java index c70259b1bf..8fc6220fd3 100644 --- a/sdkjava/com/subjectmapping/ListSubjectMappingsResponse.java +++ b/sdkjava/com/subjectmapping/ListSubjectMappingsResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/ListSubjectMappingsResponseOrBuilder.java b/sdkjava/com/subjectmapping/ListSubjectMappingsResponseOrBuilder.java index 9903976e83..4a8a7ff59b 100644 --- a/sdkjava/com/subjectmapping/ListSubjectMappingsResponseOrBuilder.java +++ b/sdkjava/com/subjectmapping/ListSubjectMappingsResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface ListSubjectMappingsResponseOrBuilder extends diff --git a/sdkjava/com/subjectmapping/SubjectMapping.java b/sdkjava/com/subjectmapping/SubjectMapping.java index 5cf1c5099b..0841498941 100644 --- a/sdkjava/com/subjectmapping/SubjectMapping.java +++ b/sdkjava/com/subjectmapping/SubjectMapping.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/SubjectMappingCreateUpdate.java b/sdkjava/com/subjectmapping/SubjectMappingCreateUpdate.java index 7c596e4de1..f6603fc520 100644 --- a/sdkjava/com/subjectmapping/SubjectMappingCreateUpdate.java +++ b/sdkjava/com/subjectmapping/SubjectMappingCreateUpdate.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/SubjectMappingCreateUpdateOrBuilder.java b/sdkjava/com/subjectmapping/SubjectMappingCreateUpdateOrBuilder.java index ae2a077694..f29e3aa7f6 100644 --- a/sdkjava/com/subjectmapping/SubjectMappingCreateUpdateOrBuilder.java +++ b/sdkjava/com/subjectmapping/SubjectMappingCreateUpdateOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface SubjectMappingCreateUpdateOrBuilder extends diff --git a/sdkjava/com/subjectmapping/SubjectMappingOperatorEnum.java b/sdkjava/com/subjectmapping/SubjectMappingOperatorEnum.java index c37f48c839..8d4a0642b1 100644 --- a/sdkjava/com/subjectmapping/SubjectMappingOperatorEnum.java +++ b/sdkjava/com/subjectmapping/SubjectMappingOperatorEnum.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/SubjectMappingOrBuilder.java b/sdkjava/com/subjectmapping/SubjectMappingOrBuilder.java index 4ae96cc72c..3774ba1016 100644 --- a/sdkjava/com/subjectmapping/SubjectMappingOrBuilder.java +++ b/sdkjava/com/subjectmapping/SubjectMappingOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface SubjectMappingOrBuilder extends diff --git a/sdkjava/com/subjectmapping/SubjectMappingProto.java b/sdkjava/com/subjectmapping/SubjectMappingProto.java index 1868cdb353..7cff367379 100644 --- a/sdkjava/com/subjectmapping/SubjectMappingProto.java +++ b/sdkjava/com/subjectmapping/SubjectMappingProto.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public final class SubjectMappingProto { diff --git a/sdkjava/com/subjectmapping/UpdateSubjectMappingRequest.java b/sdkjava/com/subjectmapping/UpdateSubjectMappingRequest.java index 842f121060..d5bc833053 100644 --- a/sdkjava/com/subjectmapping/UpdateSubjectMappingRequest.java +++ b/sdkjava/com/subjectmapping/UpdateSubjectMappingRequest.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/UpdateSubjectMappingRequestOrBuilder.java b/sdkjava/com/subjectmapping/UpdateSubjectMappingRequestOrBuilder.java index 098ee5f176..4451920436 100644 --- a/sdkjava/com/subjectmapping/UpdateSubjectMappingRequestOrBuilder.java +++ b/sdkjava/com/subjectmapping/UpdateSubjectMappingRequestOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface UpdateSubjectMappingRequestOrBuilder extends diff --git a/sdkjava/com/subjectmapping/UpdateSubjectMappingResponse.java b/sdkjava/com/subjectmapping/UpdateSubjectMappingResponse.java index 1bf84f113c..69e2a4adfb 100644 --- a/sdkjava/com/subjectmapping/UpdateSubjectMappingResponse.java +++ b/sdkjava/com/subjectmapping/UpdateSubjectMappingResponse.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; /** diff --git a/sdkjava/com/subjectmapping/UpdateSubjectMappingResponseOrBuilder.java b/sdkjava/com/subjectmapping/UpdateSubjectMappingResponseOrBuilder.java index 3664494878..0de4cd7c68 100644 --- a/sdkjava/com/subjectmapping/UpdateSubjectMappingResponseOrBuilder.java +++ b/sdkjava/com/subjectmapping/UpdateSubjectMappingResponseOrBuilder.java @@ -1,7 +1,7 @@ // Generated by the protocol buffer compiler. DO NOT EDIT! // source: subjectmapping/subject_mapping.proto -// Protobuf Java Version: 3.25.2 +// Protobuf Java Version: 3.25.3 package com.subjectmapping; public interface UpdateSubjectMappingResponseOrBuilder extends From 4e334e6db2f1af265badbc352b2788f2ab491ce0 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 16:08:36 -0500 Subject: [PATCH 24/28] handle active response as boolean --- integration/attribute_values_test.go | 34 ++++++++++++++-------------- integration/attributes_test.go | 34 ++++++++++++++-------------- integration/namespaces_test.go | 33 +++++++++++++-------------- internal/db/attribute_values.go | 6 ++--- internal/db/attributes.go | 6 ++--- internal/db/db.go | 8 ------- internal/db/namespaces.go | 8 ++----- 7 files changed, 58 insertions(+), 71 deletions(-) diff --git a/integration/attribute_values_test.go b/integration/attribute_values_test.go index 4844bfd3cc..303e09381e 100644 --- a/integration/attribute_values_test.go +++ b/integration/attribute_values_test.go @@ -97,7 +97,7 @@ func (s *AttributeValuesSuite) Test_CreateAttributeValue_SetsActiveStateTrueByDe createdValue, err := s.db.Client.CreateAttributeValue(s.ctx, attrDef.Id, value) assert.Nil(s.T(), err) assert.NotNil(s.T(), createdValue) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, createdValue.State) + assert.Equal(s.T(), true, createdValue.Active) } func (s *AttributeValuesSuite) Test_GetAttributeValue_Deactivated_Succeeds() { @@ -109,7 +109,7 @@ func (s *AttributeValuesSuite) Test_GetAttributeValue_Deactivated_Succeeds() { assert.Equal(s.T(), inactive.Id, got.Id) assert.Equal(s.T(), inactive.Value, got.Value) assert.Equal(s.T(), len(inactive.Members), len(got.Members)) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, got.State) + assert.Equal(s.T(), false, got.Active) } func (s *AttributeValuesSuite) Test_CreateAttributeValue_NoMembers_Succeeds() { @@ -309,7 +309,7 @@ func (s *AttributeValuesSuite) Test_DeactivateAttribute_Cascades_List() { isFound bool } - getNamespacesList := func(state string) bool { + listNamespaces := func(state string) bool { listedNamespaces, err := s.db.Client.ListNamespaces(s.ctx, state) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedNamespaces) @@ -321,7 +321,7 @@ func (s *AttributeValuesSuite) Test_DeactivateAttribute_Cascades_List() { return false } - getAttributesList := func(state string) bool { + listAttributes := func(state string) bool { listedAttrs, err := s.db.Client.ListAllAttributes(s.ctx, state) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedAttrs) @@ -333,7 +333,7 @@ func (s *AttributeValuesSuite) Test_DeactivateAttribute_Cascades_List() { return false } - getValuesList := func(state string) bool { + listValues := func(state string) bool { listedVals, err := s.db.Client.ListAttributeValues(s.ctx, stillActiveAttributeId, state) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedVals) @@ -348,55 +348,55 @@ func (s *AttributeValuesSuite) Test_DeactivateAttribute_Cascades_List() { tests := []test{ { name: "namespace is NOT found in LIST of INACTIVE", - testFunc: getNamespacesList, + testFunc: listNamespaces, state: db.StateInactive, isFound: false, }, { name: "namespace is found when filtering for ACTIVE state", - testFunc: getNamespacesList, + testFunc: listNamespaces, state: db.StateActive, isFound: true, }, { name: "namespace is found when filtering for ANY state", - testFunc: getNamespacesList, + testFunc: listNamespaces, state: db.StateAny, isFound: true, }, { name: "attribute is NOT found when filtering for INACTIVE state", - testFunc: getAttributesList, + testFunc: listAttributes, state: db.StateInactive, isFound: false, }, { name: "attribute is found when filtering for ANY state", - testFunc: getAttributesList, + testFunc: listAttributes, state: db.StateAny, isFound: true, }, { name: "attribute is found when filtering for ACTIVE state", - testFunc: getAttributesList, + testFunc: listAttributes, state: db.StateActive, isFound: true, }, { name: "value is NOT found in LIST of ACTIVE", - testFunc: getValuesList, + testFunc: listValues, state: db.StateActive, isFound: false, }, { name: "value is found when filtering for INACTIVE state", - testFunc: getValuesList, + testFunc: listValues, state: db.StateInactive, isFound: true, }, { name: "value is found when filtering for ANY state", - testFunc: getValuesList, + testFunc: listValues, state: db.StateAny, isFound: true, }, @@ -415,19 +415,19 @@ func (s *AttributeValuesSuite) Test_DeactivateAttributeValue_Get() { gotNs, err := s.db.Client.GetNamespace(s.ctx, stillActiveNsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNs) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, gotNs.State) + assert.Equal(s.T(), true, gotNs.Active) // attribute is still active (not bubbled up) gotAttr, err := s.db.Client.GetAttribute(s.ctx, stillActiveAttributeId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotAttr) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, gotAttr.State) + assert.Equal(s.T(), true, gotAttr.Active) // value was deactivated gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotVal) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotVal.State) + assert.Equal(s.T(), false, gotVal.Active) } func (s *AttributeValuesSuite) Test_AssignKeyAccessServerToValue_Returns_Error_When_Value_Not_Found() { diff --git a/integration/attributes_test.go b/integration/attributes_test.go index 055571d426..5964f6520d 100644 --- a/integration/attributes_test.go +++ b/integration/attributes_test.go @@ -94,7 +94,7 @@ func (s *AttributesSuite) Test_CreateAttribute_SetsActiveStateTrueByDefault() { createdAttr, err := s.db.Client.CreateAttribute(s.ctx, attr) assert.Nil(s.T(), err) assert.NotNil(s.T(), createdAttr) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, createdAttr.State) + assert.Equal(s.T(), true, createdAttr.Active) } func (s *AttributesSuite) Test_CreateAttribute_WithInvalidNamespaceFails() { @@ -202,7 +202,7 @@ func (s *AttributesSuite) Test_GetAttribute_Deactivated_Succeeds() { assert.NotNil(s.T(), gotAttr) assert.Equal(s.T(), deactivated.Id, gotAttr.Id) assert.Equal(s.T(), deactivated.Name, gotAttr.Name) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotAttr.State) + assert.Equal(s.T(), false, gotAttr.Active) } func (s *AttributesSuite) Test_ListAttribute() { @@ -388,7 +388,7 @@ func (s *AttributesSuite) Test_DeactivateAttribute_Cascades_List() { isFound bool } - getNamespacesList := func(state string) bool { + listNamespaces := func(state string) bool { listedNamespaces, err := s.db.Client.ListNamespaces(s.ctx, state) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedNamespaces) @@ -400,7 +400,7 @@ func (s *AttributesSuite) Test_DeactivateAttribute_Cascades_List() { return false } - getAttributesList := func(state string) bool { + listAttributes := func(state string) bool { listedAttrs, err := s.db.Client.ListAllAttributes(s.ctx, state) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedAttrs) @@ -412,7 +412,7 @@ func (s *AttributesSuite) Test_DeactivateAttribute_Cascades_List() { return false } - getValuesList := func(state string) bool { + listValues := func(state string) bool { listedVals, err := s.db.Client.ListAttributeValues(s.ctx, deactivatedAttrId, state) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedVals) @@ -427,55 +427,55 @@ func (s *AttributesSuite) Test_DeactivateAttribute_Cascades_List() { tests := []test{ { name: "namespace is NOT found in LIST of INACTIVE", - testFunc: getNamespacesList, + testFunc: listNamespaces, state: db.StateInactive, isFound: false, }, { name: "namespace is found when filtering for ACTIVE state", - testFunc: getNamespacesList, + testFunc: listNamespaces, state: db.StateActive, isFound: true, }, { name: "namespace is found when filtering for ANY state", - testFunc: getNamespacesList, + testFunc: listNamespaces, state: db.StateAny, isFound: true, }, { name: "attribute is found when filtering for INACTIVE state", - testFunc: getAttributesList, + testFunc: listAttributes, state: db.StateInactive, isFound: true, }, { name: "attribute is found when filtering for ANY state", - testFunc: getAttributesList, + testFunc: listAttributes, state: db.StateAny, isFound: true, }, { name: "attribute is NOT found when filtering for ACTIVE state", - testFunc: getAttributesList, + testFunc: listAttributes, state: db.StateActive, isFound: false, }, { name: "value is NOT found in LIST of ACTIVE", - testFunc: getValuesList, + testFunc: listValues, state: db.StateActive, isFound: false, }, { name: "value is found when filtering for INACTIVE state", - testFunc: getValuesList, + testFunc: listValues, state: db.StateInactive, isFound: true, }, { name: "value is found when filtering for ANY state", - testFunc: getValuesList, + testFunc: listValues, state: db.StateAny, isFound: true, }, @@ -494,19 +494,19 @@ func (s *AttributesSuite) Test_DeactivateAttribute_Cascades_ToValues_Get() { gotNs, err := s.db.Client.GetNamespace(s.ctx, stillActiveNsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNs) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, gotNs.State) + assert.Equal(s.T(), true, gotNs.Active) // ensure the attribute has state inactive gotAttr, err := s.db.Client.GetAttribute(s.ctx, deactivatedAttrId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotAttr) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotAttr.State) + assert.Equal(s.T(), false, gotAttr.Active) // ensure the value has state inactive gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotVal) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotVal.State) + assert.Equal(s.T(), false, gotVal.Active) } func (s *AttributesSuite) Test_AssignKeyAccessServerToAttribute_Returns_Error_When_Attribute_Not_Found() { diff --git a/integration/namespaces_test.go b/integration/namespaces_test.go index 1afcbb98ab..4ce80d5d9a 100644 --- a/integration/namespaces_test.go +++ b/integration/namespaces_test.go @@ -9,7 +9,6 @@ import ( "github.com/opentdf/opentdf-v2-poc/internal/db" "github.com/opentdf/opentdf-v2-poc/sdk/attributes" - "github.com/opentdf/opentdf-v2-poc/sdk/common" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/suite" ) @@ -204,7 +203,7 @@ func (s *NamespacesSuite) Test_DeactivateNamespace() { assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespace) assert.Equal(s.T(), id, gotNamespace.Id) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotNamespace.State) + assert.Equal(s.T(), false, gotNamespace.Active) } // reusable setup for creating a namespace -> attr -> value and then deactivating the namespace (cascades down) @@ -248,7 +247,7 @@ func (s *NamespacesSuite) Test_DeactivateNamespace_Cascades_List() { isFound bool } - getNamespacesList := func(state string) bool { + listNamespaces := func(state string) bool { listedNamespaces, err := s.db.Client.ListNamespaces(s.ctx, state) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedNamespaces) @@ -260,7 +259,7 @@ func (s *NamespacesSuite) Test_DeactivateNamespace_Cascades_List() { return false } - getAttributesList := func(state string) bool { + listAttributes := func(state string) bool { listedAttrs, err := s.db.Client.ListAllAttributes(s.ctx, state) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedAttrs) @@ -272,7 +271,7 @@ func (s *NamespacesSuite) Test_DeactivateNamespace_Cascades_List() { return false } - getValuesList := func(state string) bool { + listValues := func(state string) bool { listedVals, err := s.db.Client.ListAttributeValues(s.ctx, deactivatedAttrId, state) assert.Nil(s.T(), err) assert.NotNil(s.T(), listedVals) @@ -287,55 +286,55 @@ func (s *NamespacesSuite) Test_DeactivateNamespace_Cascades_List() { tests := []test{ { name: "namespace is NOT found in LIST of ACTIVE", - testFunc: getNamespacesList, + testFunc: listNamespaces, state: db.StateActive, isFound: false, }, { name: "namespace is found when filtering for INACTIVE state", - testFunc: getNamespacesList, + testFunc: listNamespaces, state: db.StateInactive, isFound: true, }, { name: "namespace is found when filtering for ANY state", - testFunc: getNamespacesList, + testFunc: listNamespaces, state: db.StateAny, isFound: true, }, { name: "attribute is found when filtering for INACTIVE state", - testFunc: getAttributesList, + testFunc: listAttributes, state: db.StateInactive, isFound: true, }, { name: "attribute is found when filtering for ANY state", - testFunc: getAttributesList, + testFunc: listAttributes, state: db.StateAny, isFound: true, }, { name: "attribute is NOT found when filtering for ACTIVE state", - testFunc: getAttributesList, + testFunc: listAttributes, state: db.StateActive, isFound: false, }, { name: "value is NOT found in LIST of ACTIVE", - testFunc: getValuesList, + testFunc: listValues, state: db.StateActive, isFound: false, }, { name: "value is found when filtering for INACTIVE state", - testFunc: getValuesList, + testFunc: listValues, state: db.StateInactive, isFound: true, }, { name: "value is found when filtering for ANY state", - testFunc: getValuesList, + testFunc: listValues, state: db.StateAny, isFound: true, }, @@ -354,19 +353,19 @@ func (s *NamespacesSuite) Test_DeactivateNamespace_Cascades_ToAttributesAndValue gotNs, err := s.db.Client.GetNamespace(s.ctx, deactivatedNsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNs) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotNs.State) + assert.Equal(s.T(), false, gotNs.Active) // ensure the attribute has state inactive gotAttr, err := s.db.Client.GetAttribute(s.ctx, deactivatedAttrId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotAttr) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotAttr.State) + assert.Equal(s.T(), false, gotAttr.Active) // ensure the value has state inactive gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotVal) - assert.Equal(s.T(), common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE, gotVal.State) + assert.Equal(s.T(), false, gotVal.Active) } func (s *NamespacesSuite) Test_DeleteNamespace_DoesNotExist_ShouldFail() { diff --git a/internal/db/attribute_values.go b/internal/db/attribute_values.go index 56eee345f3..05fa40269d 100644 --- a/internal/db/attribute_values.go +++ b/internal/db/attribute_values.go @@ -39,7 +39,7 @@ func attributeValueHydrateItem(row pgx.Row) (*attributes.Value, error) { Members: members, Metadata: m, AttributeId: attributeId, - State: getProtoStateEnum(isActive), + Active: isActive, } return v, nil } @@ -101,7 +101,7 @@ func (c Client) CreateAttributeValue(ctx context.Context, attributeId string, v Value: v.Value, Members: v.Members, Metadata: metadata, - State: common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, + Active: true, } return rV, nil } @@ -150,7 +150,7 @@ func listAttributeValuesSql(attribute_id string, state string) (string, []interf where := sq.Eq{} if state != StateAny { - where[Tables.AttributeValues.Field("active")] = state == StateActive; + where[Tables.AttributeValues.Field("active")] = state == StateActive } where[Tables.AttributeValues.Field("attribute_definition_id")] = attribute_id return sb.Where(where).ToSql() diff --git a/internal/db/attributes.go b/internal/db/attributes.go index 229f69bf66..02e2f06c32 100644 --- a/internal/db/attributes.go +++ b/internal/db/attributes.go @@ -135,7 +135,7 @@ func attributesHydrateItem(row pgx.Row) (*attributes.Attribute, error) { Id: id, Name: name, Rule: attributesRuleTypeEnumTransformOut(rule), - State: getProtoStateEnum(isActive), + Active: isActive, Metadata: m, Values: v, Namespace: &namespaces.Namespace{Id: namespaceId, Name: namespaceName}, @@ -173,7 +173,7 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) { Id: namespaceId, Name: namespaceName, }, - State: getProtoStateEnum(isActive), + Active: isActive, } if metadataJson != nil { @@ -313,7 +313,7 @@ func (c Client) CreateAttribute(ctx context.Context, attr *attributes.AttributeC Namespace: &namespaces.Namespace{ Id: attr.NamespaceId, }, - State: common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE, + Active: true, } return a, nil } diff --git a/internal/db/db.go b/internal/db/db.go index c84154c67b..0a282e500a 100644 --- a/internal/db/db.go +++ b/internal/db/db.go @@ -10,7 +10,6 @@ import ( "github.com/jackc/pgx/v5" "github.com/jackc/pgx/v5/pgconn" "github.com/jackc/pgx/v5/pgxpool" - "github.com/opentdf/opentdf-v2-poc/sdk/common" ) var ( @@ -203,10 +202,3 @@ func newStatementBuilder() sq.StatementBuilderType { func tableName(table string) string { return table } - -func getProtoStateEnum(active bool) common.ActiveStateEnum { - if active { - return common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE - } - return common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE -} diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go index 5a92f6175e..10d1b6ebf3 100644 --- a/internal/db/namespaces.go +++ b/internal/db/namespaces.go @@ -28,12 +28,10 @@ func (c Client) GetNamespace(ctx context.Context, id string) (*namespaces.Namesp } var namespace namespaces.Namespace - isActive := true - if err := row.Scan(&namespace.Id, &namespace.Name, &isActive); err != nil { + if err := row.Scan(&namespace.Id, &namespace.Name, &namespace.Active); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } - namespace.State = getProtoStateEnum(isActive) return &namespace, nil } @@ -64,11 +62,9 @@ func (c Client) ListNamespaces(ctx context.Context, state string) ([]*namespaces for rows.Next() { var namespace namespaces.Namespace - isActive := true - if err := rows.Scan(&namespace.Id, &namespace.Name, &isActive); err != nil { + if err := rows.Scan(&namespace.Id, &namespace.Name, &namespace.Active); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } - namespace.State = getProtoStateEnum(isActive) namespacesList = append(namespacesList, &namespace) } From c080c4ee736ea563c0bf60100545f492338c193c Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 16:09:42 -0500 Subject: [PATCH 25/28] update example grpcurls to reflect new response active field instead of status enum --- docs/grpc/index.html | 16 +++++++-------- .../attributes/attributes.swagger.json | 2 +- .../namespaces/namespaces.swagger.json | 6 +++--- proto/attributes/attributes.proto | 10 ++++------ proto/namespaces/namespaces.proto | 6 +++--- sdk/attributes/attributes_grpc.pb.go | 20 ++++++++----------- sdk/namespaces/namespaces_grpc.pb.go | 12 +++++------ 7 files changed, 32 insertions(+), 40 deletions(-) diff --git a/docs/grpc/index.html b/docs/grpc/index.html index 332fc595e7..8c6ddf7ec7 100644 --- a/docs/grpc/index.html +++ b/docs/grpc/index.html @@ -1811,7 +1811,7 @@

    NamespaceService

    "namespace": { "id": "namespace-id", "name": "namespace-name", -"state": "STATE_TYPE_ENUM_ACTIVE" +"active": true } }

    @@ -1829,7 +1829,7 @@

    NamespaceService

    { "id": "namespace-id", "name": "namespace-name", -"state": "STATE_TYPE_ENUM_ACTIVE" +"active": true } ] }

    @@ -1842,7 +1842,7 @@

    NamespaceService

    +{ "namespace": { "id": "namespace-id", "active": true } }

    @@ -3029,10 +3029,8 @@

    AttributesService

    }, "name": "key_access_server_name", "description": "key_access_server_description", -"state": "STATE_TYPE_ENUM_ACTIVE" } ], -"state": "STATE_TYPE_ENUM_ACTIVE" } ], "grants": [ @@ -3044,10 +3042,9 @@

    AttributesService

    }, "name": "key_access_server_name", "description": "key_access_server_description", -"state": "STATE_TYPE_ENUM_ACTIVE" } ], -"state": "STATE_TYPE_ENUM_ACTIVE" +"active": true } ] }

    @@ -3087,7 +3084,7 @@

    AttributesService

    ... GRANTS ... } ], -"state": "STATE_TYPE_ENUM_INACTIVE" +"active": true } ] }

    @@ -3119,7 +3116,8 @@

    AttributesService

    "id": "namespace_id" }, "name": "attribute_name", -"rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF" +"rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", +"active": true } }

    diff --git a/docs/openapi/attributes/attributes.swagger.json b/docs/openapi/attributes/attributes.swagger.json index b2a5a68035..b0c33d3adc 100644 --- a/docs/openapi/attributes/attributes.swagger.json +++ b/docs/openapi/attributes/attributes.swagger.json @@ -18,7 +18,7 @@ "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 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}\n}", + "summary": "Create Attribute\nRequest:\ngrpcurl -plaintext -d '{\"attribute\": {\"namespace_id\": \"namespace_id\", \"name\": \"attribute_name\", \"rule\": \"ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF\"}}' localhost:9000 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": { diff --git a/docs/openapi/namespaces/namespaces.swagger.json b/docs/openapi/namespaces/namespaces.swagger.json index 11c68da4cb..0ef06cd25e 100644 --- a/docs/openapi/namespaces/namespaces.swagger.json +++ b/docs/openapi/namespaces/namespaces.swagger.json @@ -18,7 +18,7 @@ "paths": { "/attributes/namespaces": { "get": { - "summary": "NOTE: ACTIVE state by default, INACTIVE or ANY when specified\nRequest: \ngrpcurl -plaintext localhost:9000 namespaces.NamespaceService/ListNamespaces\nResponse:\n{\n\"namespaces\": [\n{\n\"id\": \"namespace-id\",\n\"name\": \"namespace-name\",\n\"state\": \"STATE_TYPE_ENUM_ACTIVE\"\n}\n]\n}", + "summary": "NOTE: ACTIVE state by default, INACTIVE or ANY when specified\nRequest: \ngrpcurl -plaintext localhost:9000 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 +55,7 @@ ] }, "post": { - "summary": "Request: \ngrpcurl -plaintext -d '{\"name\": \"namespace-name\"}' localhost:9000 namespaces.NamespaceService/CreateNamespace\nResponse:\n{ \"namespace\": { \"id\": \"namespace-id\" } }", + "summary": "Request: \ngrpcurl -plaintext -d '{\"name\": \"namespace-name\"}' localhost:9000 namespaces.NamespaceService/CreateNamespace\nResponse:\n{ \"namespace\": { \"id\": \"namespace-id\", \"active\": true } }", "operationId": "NamespaceService_CreateNamespace", "responses": { "200": { @@ -86,7 +86,7 @@ }, "/attributes/namespaces/{id}": { "get": { - "summary": "Request: \ngrpcurl -plaintext -d '{\"id\": \"namespace-id\"}' localhost:9000 namespaces.NamespaceService/GetNamespace\nResponse:\n{\n\"namespace\": {\n\"id\": \"namespace-id\",\n\"name\": \"namespace-name\",\n\"state\": \"STATE_TYPE_ENUM_ACTIVE\"\n}\n}", + "summary": "Request: \ngrpcurl -plaintext -d '{\"id\": \"namespace-id\"}' localhost:9000 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": { diff --git a/proto/attributes/attributes.proto b/proto/attributes/attributes.proto index d42678078d..98fdccb5cc 100644 --- a/proto/attributes/attributes.proto +++ b/proto/attributes/attributes.proto @@ -269,10 +269,8 @@ service AttributesService { }, "name": "key_access_server_name", "description": "key_access_server_description", - "state": "STATE_TYPE_ENUM_ACTIVE" } ], - "state": "STATE_TYPE_ENUM_ACTIVE" } ], "grants": [ @@ -284,10 +282,9 @@ service AttributesService { }, "name": "key_access_server_name", "description": "key_access_server_description", - "state": "STATE_TYPE_ENUM_ACTIVE" } ], - "state": "STATE_TYPE_ENUM_ACTIVE" + "active": true } ] } @@ -325,7 +322,7 @@ service AttributesService { ... GRANTS ... } ], - "state": "STATE_TYPE_ENUM_INACTIVE" + "active": true } ] } @@ -352,7 +349,8 @@ service AttributesService { "id": "namespace_id" }, "name": "attribute_name", - "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF" + "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", + "active": true } } */ diff --git a/proto/namespaces/namespaces.proto b/proto/namespaces/namespaces.proto index c853b7af65..f25d22c522 100644 --- a/proto/namespaces/namespaces.proto +++ b/proto/namespaces/namespaces.proto @@ -75,7 +75,7 @@ service NamespaceService { "namespace": { "id": "namespace-id", "name": "namespace-name", - "state": "STATE_TYPE_ENUM_ACTIVE" + "active": true } } */ @@ -95,7 +95,7 @@ service NamespaceService { { "id": "namespace-id", "name": "namespace-name", - "state": "STATE_TYPE_ENUM_ACTIVE" + "active": true } ] } @@ -110,7 +110,7 @@ service NamespaceService { Request: grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace Response: - { "namespace": { "id": "namespace-id" } } + { "namespace": { "id": "namespace-id", "active": true } } */ rpc CreateNamespace(CreateNamespaceRequest) returns (CreateNamespaceResponse) { option (google.api.http) = { diff --git a/sdk/attributes/attributes_grpc.pb.go b/sdk/attributes/attributes_grpc.pb.go index 57e23523b8..c0ee4be59d 100644 --- a/sdk/attributes/attributes_grpc.pb.go +++ b/sdk/attributes/attributes_grpc.pb.go @@ -78,10 +78,8 @@ type AttributesServiceClient interface { // }, // "name": "key_access_server_name", // "description": "key_access_server_description", - // "state": "STATE_TYPE_ENUM_ACTIVE" // } // ], - // "state": "STATE_TYPE_ENUM_ACTIVE" // } // ], // "grants": [ @@ -93,10 +91,9 @@ type AttributesServiceClient interface { // }, // "name": "key_access_server_name", // "description": "key_access_server_description", - // "state": "STATE_TYPE_ENUM_ACTIVE" // } // ], - // "state": "STATE_TYPE_ENUM_ACTIVE" + // "active": true // } // ] // } @@ -131,7 +128,7 @@ type AttributesServiceClient interface { // ... GRANTS ... // } // ], - // "state": "STATE_TYPE_ENUM_INACTIVE" + // "active": true // } // ] // } @@ -152,7 +149,8 @@ type AttributesServiceClient interface { // "id": "namespace_id" // }, // "name": "attribute_name", - // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF" + // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", + // "active": true // } // } CreateAttribute(ctx context.Context, in *CreateAttributeRequest, opts ...grpc.CallOption) (*CreateAttributeResponse, error) @@ -416,10 +414,8 @@ type AttributesServiceServer interface { // }, // "name": "key_access_server_name", // "description": "key_access_server_description", - // "state": "STATE_TYPE_ENUM_ACTIVE" // } // ], - // "state": "STATE_TYPE_ENUM_ACTIVE" // } // ], // "grants": [ @@ -431,10 +427,9 @@ type AttributesServiceServer interface { // }, // "name": "key_access_server_name", // "description": "key_access_server_description", - // "state": "STATE_TYPE_ENUM_ACTIVE" // } // ], - // "state": "STATE_TYPE_ENUM_ACTIVE" + // "active": true // } // ] // } @@ -469,7 +464,7 @@ type AttributesServiceServer interface { // ... GRANTS ... // } // ], - // "state": "STATE_TYPE_ENUM_INACTIVE" + // "active": true // } // ] // } @@ -490,7 +485,8 @@ type AttributesServiceServer interface { // "id": "namespace_id" // }, // "name": "attribute_name", - // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF" + // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF", + // "active": true // } // } CreateAttribute(context.Context, *CreateAttributeRequest) (*CreateAttributeResponse, error) diff --git a/sdk/namespaces/namespaces_grpc.pb.go b/sdk/namespaces/namespaces_grpc.pb.go index eb03f44bf2..45935f6401 100644 --- a/sdk/namespaces/namespaces_grpc.pb.go +++ b/sdk/namespaces/namespaces_grpc.pb.go @@ -37,7 +37,7 @@ type NamespaceServiceClient interface { // "namespace": { // "id": "namespace-id", // "name": "namespace-name", - // "state": "STATE_TYPE_ENUM_ACTIVE" + // "active": true // } // } GetNamespace(ctx context.Context, in *GetNamespaceRequest, opts ...grpc.CallOption) (*GetNamespaceResponse, error) @@ -50,7 +50,7 @@ type NamespaceServiceClient interface { // { // "id": "namespace-id", // "name": "namespace-name", - // "state": "STATE_TYPE_ENUM_ACTIVE" + // "active": true // } // ] // } @@ -58,7 +58,7 @@ type NamespaceServiceClient interface { // Request: // grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace // Response: - // { "namespace": { "id": "namespace-id" } } + // { "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) @@ -128,7 +128,7 @@ type NamespaceServiceServer interface { // "namespace": { // "id": "namespace-id", // "name": "namespace-name", - // "state": "STATE_TYPE_ENUM_ACTIVE" + // "active": true // } // } GetNamespace(context.Context, *GetNamespaceRequest) (*GetNamespaceResponse, error) @@ -141,7 +141,7 @@ type NamespaceServiceServer interface { // { // "id": "namespace-id", // "name": "namespace-name", - // "state": "STATE_TYPE_ENUM_ACTIVE" + // "active": true // } // ] // } @@ -149,7 +149,7 @@ type NamespaceServiceServer interface { // Request: // grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace // Response: - // { "namespace": { "id": "namespace-id" } } + // { "namespace": { "id": "namespace-id", "active": true } } CreateNamespace(context.Context, *CreateNamespaceRequest) (*CreateNamespaceResponse, error) UpdateNamespace(context.Context, *UpdateNamespaceRequest) (*UpdateNamespaceResponse, error) DeactivateNamespace(context.Context, *DeactivateNamespaceRequest) (*DeactivateNamespaceResponse, error) From 44a0af1960ee06b9e6cdf0efb191630fbbed7696 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 16:47:25 -0500 Subject: [PATCH 26/28] introduced google protobuf boolean wrapper to handle marshaling false as zero value and real value of boolean fields in some policy messages (see issue: https://github.com/golang/protobuf/issues/438) --- docs/grpc/index.html | 6 +- proto/attributes/attributes.proto | 5 +- proto/buf.yaml | 3 +- proto/namespaces/namespaces.proto | 3 +- sdk/attributes/attributes.pb.go | 887 +++++++++--------- sdk/namespaces/namespaces.pb.go | 237 ++--- sdkjava/com/attributes/Attribute.java | 218 ++++- .../com/attributes/AttributeOrBuilder.java | 21 +- sdkjava/com/attributes/AttributesProto.java | 332 +++---- sdkjava/com/attributes/Value.java | 218 ++++- sdkjava/com/attributes/ValueOrBuilder.java | 21 +- sdkjava/com/namespaces/Namespace.java | 230 ++++- .../com/namespaces/NamespaceOrBuilder.java | 21 +- sdkjava/com/namespaces/NamespacesProto.java | 108 ++- services/namespaces/namespaces.go | 1 - 15 files changed, 1423 insertions(+), 888 deletions(-) diff --git a/docs/grpc/index.html b/docs/grpc/index.html index 8c6ddf7ec7..55bab862d4 100644 --- a/docs/grpc/index.html +++ b/docs/grpc/index.html @@ -1719,7 +1719,7 @@

    Namespace

    - + @@ -2096,7 +2096,7 @@

    Attribute

    - + @@ -2856,7 +2856,7 @@

    Value

    - + diff --git a/proto/attributes/attributes.proto b/proto/attributes/attributes.proto index 98fdccb5cc..44d6368187 100644 --- a/proto/attributes/attributes.proto +++ b/proto/attributes/attributes.proto @@ -5,6 +5,7 @@ package attributes; import "buf/validate/validate.proto"; import "common/common.proto"; import "google/api/annotations.proto"; +import "google/protobuf/wrappers.proto"; import "kasregistry/key_access_server_registry.proto"; import "namespaces/namespaces.proto"; @@ -39,7 +40,7 @@ message Attribute { repeated kasregistry.KeyAccessServer grants = 8; // active by default until explicitly deactivated - bool active = 9; + google.protobuf.BoolValue active = 9; } message AttributeCreateUpdate { @@ -79,7 +80,7 @@ message Value { repeated kasregistry.KeyAccessServer grants = 6; // active by default until explicitly deactivated - bool active = 7; + google.protobuf.BoolValue active = 7; } message ValueCreateUpdate { diff --git a/proto/buf.yaml b/proto/buf.yaml index 47666ede3e..3d6ac53217 100644 --- a/proto/buf.yaml +++ b/proto/buf.yaml @@ -17,4 +17,5 @@ lint: ignore_only: PACKAGE_VERSION_SUFFIX: - google/api/annotations.proto - - google/api/http.proto \ No newline at end of file + - google/api/http.proto + - google/protobuf/wrappers.proto diff --git a/proto/namespaces/namespaces.proto b/proto/namespaces/namespaces.proto index f25d22c522..0c37e53da1 100644 --- a/proto/namespaces/namespaces.proto +++ b/proto/namespaces/namespaces.proto @@ -4,6 +4,7 @@ package namespaces; import "buf/validate/validate.proto"; import "google/api/annotations.proto"; +import "google/protobuf/wrappers.proto"; import "common/common.proto"; message Namespace { @@ -21,7 +22,7 @@ message Namespace { ]; // active by default until explicitly deactivated - bool active = 3; + google.protobuf.BoolValue active = 3; } /* diff --git a/sdk/attributes/attributes.pb.go b/sdk/attributes/attributes.pb.go index fbe0eabefe..198744d11e 100644 --- a/sdk/attributes/attributes.pb.go +++ b/sdk/attributes/attributes.pb.go @@ -14,6 +14,7 @@ import ( _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -95,7 +96,7 @@ type Attribute struct { 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"` // active by default until explicitly deactivated - Active bool `protobuf:"varint,9,opt,name=active,proto3" json:"active,omitempty"` + Active *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=active,proto3" json:"active,omitempty"` } func (x *Attribute) Reset() { @@ -179,11 +180,11 @@ func (x *Attribute) GetGrants() []*kasregistry.KeyAccessServer { return nil } -func (x *Attribute) GetActive() bool { +func (x *Attribute) GetActive() *wrapperspb.BoolValue { if x != nil { return x.Active } - return false + return nil } type AttributeCreateUpdate struct { @@ -285,7 +286,7 @@ type Value struct { // list of key access servers Grants []*kasregistry.KeyAccessServer `protobuf:"bytes,6,rep,name=grants,proto3" json:"grants,omitempty"` // active by default until explicitly deactivated - Active bool `protobuf:"varint,7,opt,name=active,proto3" json:"active,omitempty"` + Active *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=active,proto3" json:"active,omitempty"` } func (x *Value) Reset() { @@ -362,11 +363,11 @@ func (x *Value) GetGrants() []*kasregistry.KeyAccessServer { return nil } -func (x *Value) GetActive() bool { +func (x *Value) GetActive() *wrapperspb.BoolValue { if x != nil { return x.Active } - return false + return nil } type ValueCreateUpdate struct { @@ -1914,12 +1915,14 @@ var file_attributes_attributes_proto_rawDesc = []byte{ 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, 0x2c, 0x6b, 0x61, 0x73, 0x72, 0x65, + 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, 0x2c, 0x6b, 0x61, 0x73, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2f, 0x6b, 0x65, 0x79, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x72, 0x65, 0x67, 0x69, 0x73, 0x74, 0x72, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x6e, 0x61, 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, 0xcf, 0x02, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, + 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xeb, 0x02, 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, @@ -1938,395 +1941,398 @@ var file_attributes_attributes_proto_rawDesc = []byte{ 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, 0x16, - 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, - 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x8e, 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, 0x42, 0x0a, 0x04, - 0x72, 0x75, 0x6c, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 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, 0x35, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1d, 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, 0xee, 0x01, 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, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, - 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, 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, 0x4f, - 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, 0x35, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 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, 0x4b, - 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x61, 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 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, 0x4e, - 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x79, - 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, - 0x52, 0x0a, 0x1b, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, + 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x06, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x32, + 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x09, 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, 0x8e, 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, 0x42, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 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, 0x35, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1d, 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, 0x8a, 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, 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, + 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, 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, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 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, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, + 0x75, 0x74, 0x65, 0x22, 0x61, 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, 0x47, 0x0a, + 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x79, 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, 0x47, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, + 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 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, 0x4e, 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, 0x33, 0x0a, 0x09, + 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 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, 0x44, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x48, 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, 0x29, 0x0a, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 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, - 0x85, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x9d, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x11, 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, 0x4b, 0x0a, 0x20, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, + 0xc8, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x22, 0x52, 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, 0x33, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, + 0x44, 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, 0x27, 0x0a, 0x05, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x48, 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, 0x29, 0x0a, 0x06, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x11, 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, 0x85, 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, 0x3b, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1d, 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, + 0x47, 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, + 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, + 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, 0x9d, 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, 0x3b, 0x0a, 0x05, 0x76, + 0x61, 0x6c, 0x75, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 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, 0x47, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x11, 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, 0x8e, 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, 0x63, 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, 0x24, 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, 0x8f, 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, - 0x63, 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, 0x24, 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, 0x90, 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, 0x63, 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, 0x24, 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, 0x91, 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, 0x63, 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, 0x24, 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, 0x7e, 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, 0x57, 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, 0x20, 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, 0x7f, 0x0a, 0x24, 0x41, + 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, 0x4b, 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, 0x27, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x11, 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, 0x8e, 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, 0x63, 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, 0x24, 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, 0x8f, 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, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x57, 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, 0x20, 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, 0x80, 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, 0x57, 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, 0x20, 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, + 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 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, 0x24, 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, 0x90, 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, 0x63, 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, + 0x24, 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, - 0x81, 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, 0x57, 0x0a, 0x17, 0x76, 0x61, + 0x91, 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, 0x63, + 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, 0x24, 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, 0x7e, 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, 0x57, 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, 0x20, 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, 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, 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, 0x85, 0x11, 0x0a, 0x11, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, - 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x73, 0x12, 0x21, 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, 0x22, 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, 0x68, 0x0a, 0x13, 0x4c, 0x69, - 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x73, 0x12, 0x26, 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, 0x27, 0x2e, 0x61, 0x74, 0x74, 0x72, + 0x76, 0x65, 0x72, 0x22, 0x7f, 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, 0x57, 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, 0x20, 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, 0x80, 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, 0x57, + 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, + 0x20, 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, 0x81, 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, 0x57, 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, 0x20, 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, 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, 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, 0x85, 0x11, 0x0a, 0x11, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, + 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x59, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x21, 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, 0x6b, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x7f, 0x0a, - 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, - 0x12, 0x22, 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, 0x23, 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, 0x80, - 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 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, 0x27, + 0x62, 0x75, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x22, 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, 0x68, 0x0a, 0x13, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x12, 0x26, 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, 0x27, 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, 0x6b, 0x0a, 0x0c, + 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, + 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x80, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, 0x26, 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, 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x24, 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, 0x25, 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, 0x9b, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, - 0x12, 0x27, 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, 0x28, 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, 0xa0, 0x01, 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, - 0x2e, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 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, 0x83, 0x01, 0x0a, 0x11, 0x47, 0x65, + 0x74, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, + 0x24, 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, 0x25, 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, + 0x9b, 0x01, 0x0a, 0x14, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 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, 0x28, 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, 0xa0, 0x01, + 0x0a, 0x14, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, + 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x27, 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, + 0x28, 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, 0x98, 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, 0x2b, 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, 0x2c, 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, 0x28, 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, 0x98, 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, 0x2b, 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, 0x2c, 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, 0xd6, 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, 0x33, 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, 0x34, 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, 0xdc, 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, 0x35, 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, 0x36, 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, 0xcd, 0x01, 0x0a, 0x1c, + 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, 0xd6, 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, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x12, 0x2f, 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, 0x30, 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, 0x72, 0x76, 0x65, 0x72, 0x54, 0x6f, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x12, 0x33, 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, 0x34, 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, 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, 0xd3, 0x01, 0x0a, 0x1e, + 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, 0xdc, 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, 0x35, 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, 0x36, 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, 0x12, 0x31, - 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, 0x32, 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, 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, - 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x61, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, - 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x41, - 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0xe2, 0x02, 0x16, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0xea, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 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, 0xcd, 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, 0x2f, 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, 0x30, 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, 0xd3, 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, 0x31, 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, 0x32, 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, 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, + 0x6d, 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, + 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, + 0x74, 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, + 0x6f, 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0xa2, 0x02, 0x03, 0x41, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, + 0x75, 0x74, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, + 0x73, 0xe2, 0x02, 0x16, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x5c, 0x47, + 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x41, 0x74, 0x74, + 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2382,8 +2388,9 @@ var file_attributes_attributes_proto_goTypes = []interface{}{ (*common.Metadata)(nil), // 35: common.Metadata (*namespaces.Namespace)(nil), // 36: namespaces.Namespace (*kasregistry.KeyAccessServer)(nil), // 37: kasregistry.KeyAccessServer - (*common.MetadataMutable)(nil), // 38: common.MetadataMutable - (common.ActiveStateEnum)(0), // 39: common.ActiveStateEnum + (*wrapperspb.BoolValue)(nil), // 38: google.protobuf.BoolValue + (*common.MetadataMutable)(nil), // 39: common.MetadataMutable + (common.ActiveStateEnum)(0), // 40: common.ActiveStateEnum } var file_attributes_attributes_proto_depIdxs = []int32{ 35, // 0: attributes.Attribute.metadata:type_name -> common.Metadata @@ -2391,69 +2398,71 @@ var file_attributes_attributes_proto_depIdxs = []int32{ 0, // 2: attributes.Attribute.rule:type_name -> attributes.AttributeRuleTypeEnum 3, // 3: attributes.Attribute.values:type_name -> attributes.Value 37, // 4: attributes.Attribute.grants:type_name -> kasregistry.KeyAccessServer - 38, // 5: attributes.AttributeCreateUpdate.metadata:type_name -> common.MetadataMutable - 0, // 6: attributes.AttributeCreateUpdate.rule:type_name -> attributes.AttributeRuleTypeEnum - 4, // 7: attributes.AttributeCreateUpdate.values:type_name -> attributes.ValueCreateUpdate - 35, // 8: attributes.Value.metadata:type_name -> common.Metadata - 37, // 9: attributes.Value.grants:type_name -> kasregistry.KeyAccessServer - 38, // 10: attributes.ValueCreateUpdate.metadata:type_name -> common.MetadataMutable - 39, // 11: attributes.ListAttributesRequest.state:type_name -> common.ActiveStateEnum - 1, // 12: attributes.ListAttributesResponse.attributes:type_name -> attributes.Attribute - 1, // 13: attributes.GetAttributeResponse.attribute:type_name -> attributes.Attribute - 2, // 14: attributes.CreateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate - 1, // 15: attributes.CreateAttributeResponse.attribute:type_name -> attributes.Attribute - 2, // 16: attributes.UpdateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate - 1, // 17: attributes.UpdateAttributeResponse.attribute:type_name -> attributes.Attribute - 1, // 18: attributes.DeactivateAttributeResponse.attribute:type_name -> attributes.Attribute - 3, // 19: attributes.GetAttributeValueResponse.value:type_name -> attributes.Value - 39, // 20: attributes.ListAttributeValuesRequest.state:type_name -> common.ActiveStateEnum - 3, // 21: attributes.ListAttributeValuesResponse.values:type_name -> attributes.Value - 4, // 22: attributes.CreateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate - 3, // 23: attributes.CreateAttributeValueResponse.value:type_name -> attributes.Value - 4, // 24: attributes.UpdateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate - 3, // 25: attributes.UpdateAttributeValueResponse.value:type_name -> attributes.Value - 3, // 26: attributes.DeactivateAttributeValueResponse.value:type_name -> attributes.Value - 5, // 27: attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 5, // 28: attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 5, // 29: attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 5, // 30: attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer - 6, // 31: attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 6, // 32: attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 6, // 33: attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 6, // 34: attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer - 7, // 35: attributes.AttributesService.ListAttributes:input_type -> attributes.ListAttributesRequest - 19, // 36: attributes.AttributesService.ListAttributeValues:input_type -> attributes.ListAttributeValuesRequest - 9, // 37: attributes.AttributesService.GetAttribute:input_type -> attributes.GetAttributeRequest - 11, // 38: attributes.AttributesService.CreateAttribute:input_type -> attributes.CreateAttributeRequest - 13, // 39: attributes.AttributesService.UpdateAttribute:input_type -> attributes.UpdateAttributeRequest - 15, // 40: attributes.AttributesService.DeactivateAttribute:input_type -> attributes.DeactivateAttributeRequest - 17, // 41: attributes.AttributesService.GetAttributeValue:input_type -> attributes.GetAttributeValueRequest - 21, // 42: attributes.AttributesService.CreateAttributeValue:input_type -> attributes.CreateAttributeValueRequest - 23, // 43: attributes.AttributesService.UpdateAttributeValue:input_type -> attributes.UpdateAttributeValueRequest - 25, // 44: attributes.AttributesService.DeactivateAttributeValue:input_type -> attributes.DeactivateAttributeValueRequest - 27, // 45: attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> attributes.AssignKeyAccessServerToAttributeRequest - 29, // 46: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> attributes.RemoveKeyAccessServerFromAttributeRequest - 31, // 47: attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> attributes.AssignKeyAccessServerToValueRequest - 33, // 48: attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> attributes.RemoveKeyAccessServerFromValueRequest - 8, // 49: attributes.AttributesService.ListAttributes:output_type -> attributes.ListAttributesResponse - 20, // 50: attributes.AttributesService.ListAttributeValues:output_type -> attributes.ListAttributeValuesResponse - 10, // 51: attributes.AttributesService.GetAttribute:output_type -> attributes.GetAttributeResponse - 12, // 52: attributes.AttributesService.CreateAttribute:output_type -> attributes.CreateAttributeResponse - 14, // 53: attributes.AttributesService.UpdateAttribute:output_type -> attributes.UpdateAttributeResponse - 16, // 54: attributes.AttributesService.DeactivateAttribute:output_type -> attributes.DeactivateAttributeResponse - 18, // 55: attributes.AttributesService.GetAttributeValue:output_type -> attributes.GetAttributeValueResponse - 22, // 56: attributes.AttributesService.CreateAttributeValue:output_type -> attributes.CreateAttributeValueResponse - 24, // 57: attributes.AttributesService.UpdateAttributeValue:output_type -> attributes.UpdateAttributeValueResponse - 26, // 58: attributes.AttributesService.DeactivateAttributeValue:output_type -> attributes.DeactivateAttributeValueResponse - 28, // 59: attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> attributes.AssignKeyAccessServerToAttributeResponse - 30, // 60: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> attributes.RemoveKeyAccessServerFromAttributeResponse - 32, // 61: attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> attributes.AssignKeyAccessServerToValueResponse - 34, // 62: attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> attributes.RemoveKeyAccessServerFromValueResponse - 49, // [49:63] is the sub-list for method output_type - 35, // [35:49] is the sub-list for method input_type - 35, // [35:35] is the sub-list for extension type_name - 35, // [35:35] is the sub-list for extension extendee - 0, // [0:35] is the sub-list for field type_name + 38, // 5: attributes.Attribute.active:type_name -> google.protobuf.BoolValue + 39, // 6: attributes.AttributeCreateUpdate.metadata:type_name -> common.MetadataMutable + 0, // 7: attributes.AttributeCreateUpdate.rule:type_name -> attributes.AttributeRuleTypeEnum + 4, // 8: attributes.AttributeCreateUpdate.values:type_name -> attributes.ValueCreateUpdate + 35, // 9: attributes.Value.metadata:type_name -> common.Metadata + 37, // 10: attributes.Value.grants:type_name -> kasregistry.KeyAccessServer + 38, // 11: attributes.Value.active:type_name -> google.protobuf.BoolValue + 39, // 12: attributes.ValueCreateUpdate.metadata:type_name -> common.MetadataMutable + 40, // 13: attributes.ListAttributesRequest.state:type_name -> common.ActiveStateEnum + 1, // 14: attributes.ListAttributesResponse.attributes:type_name -> attributes.Attribute + 1, // 15: attributes.GetAttributeResponse.attribute:type_name -> attributes.Attribute + 2, // 16: attributes.CreateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate + 1, // 17: attributes.CreateAttributeResponse.attribute:type_name -> attributes.Attribute + 2, // 18: attributes.UpdateAttributeRequest.attribute:type_name -> attributes.AttributeCreateUpdate + 1, // 19: attributes.UpdateAttributeResponse.attribute:type_name -> attributes.Attribute + 1, // 20: attributes.DeactivateAttributeResponse.attribute:type_name -> attributes.Attribute + 3, // 21: attributes.GetAttributeValueResponse.value:type_name -> attributes.Value + 40, // 22: attributes.ListAttributeValuesRequest.state:type_name -> common.ActiveStateEnum + 3, // 23: attributes.ListAttributeValuesResponse.values:type_name -> attributes.Value + 4, // 24: attributes.CreateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate + 3, // 25: attributes.CreateAttributeValueResponse.value:type_name -> attributes.Value + 4, // 26: attributes.UpdateAttributeValueRequest.value:type_name -> attributes.ValueCreateUpdate + 3, // 27: attributes.UpdateAttributeValueResponse.value:type_name -> attributes.Value + 3, // 28: attributes.DeactivateAttributeValueResponse.value:type_name -> attributes.Value + 5, // 29: attributes.AssignKeyAccessServerToAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 5, // 30: attributes.AssignKeyAccessServerToAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 5, // 31: attributes.RemoveKeyAccessServerFromAttributeRequest.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 5, // 32: attributes.RemoveKeyAccessServerFromAttributeResponse.attribute_key_access_server:type_name -> attributes.AttributeKeyAccessServer + 6, // 33: attributes.AssignKeyAccessServerToValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 6, // 34: attributes.AssignKeyAccessServerToValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 6, // 35: attributes.RemoveKeyAccessServerFromValueRequest.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 6, // 36: attributes.RemoveKeyAccessServerFromValueResponse.value_key_access_server:type_name -> attributes.ValueKeyAccessServer + 7, // 37: attributes.AttributesService.ListAttributes:input_type -> attributes.ListAttributesRequest + 19, // 38: attributes.AttributesService.ListAttributeValues:input_type -> attributes.ListAttributeValuesRequest + 9, // 39: attributes.AttributesService.GetAttribute:input_type -> attributes.GetAttributeRequest + 11, // 40: attributes.AttributesService.CreateAttribute:input_type -> attributes.CreateAttributeRequest + 13, // 41: attributes.AttributesService.UpdateAttribute:input_type -> attributes.UpdateAttributeRequest + 15, // 42: attributes.AttributesService.DeactivateAttribute:input_type -> attributes.DeactivateAttributeRequest + 17, // 43: attributes.AttributesService.GetAttributeValue:input_type -> attributes.GetAttributeValueRequest + 21, // 44: attributes.AttributesService.CreateAttributeValue:input_type -> attributes.CreateAttributeValueRequest + 23, // 45: attributes.AttributesService.UpdateAttributeValue:input_type -> attributes.UpdateAttributeValueRequest + 25, // 46: attributes.AttributesService.DeactivateAttributeValue:input_type -> attributes.DeactivateAttributeValueRequest + 27, // 47: attributes.AttributesService.AssignKeyAccessServerToAttribute:input_type -> attributes.AssignKeyAccessServerToAttributeRequest + 29, // 48: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> attributes.RemoveKeyAccessServerFromAttributeRequest + 31, // 49: attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> attributes.AssignKeyAccessServerToValueRequest + 33, // 50: attributes.AttributesService.RemoveKeyAccessServerFromValue:input_type -> attributes.RemoveKeyAccessServerFromValueRequest + 8, // 51: attributes.AttributesService.ListAttributes:output_type -> attributes.ListAttributesResponse + 20, // 52: attributes.AttributesService.ListAttributeValues:output_type -> attributes.ListAttributeValuesResponse + 10, // 53: attributes.AttributesService.GetAttribute:output_type -> attributes.GetAttributeResponse + 12, // 54: attributes.AttributesService.CreateAttribute:output_type -> attributes.CreateAttributeResponse + 14, // 55: attributes.AttributesService.UpdateAttribute:output_type -> attributes.UpdateAttributeResponse + 16, // 56: attributes.AttributesService.DeactivateAttribute:output_type -> attributes.DeactivateAttributeResponse + 18, // 57: attributes.AttributesService.GetAttributeValue:output_type -> attributes.GetAttributeValueResponse + 22, // 58: attributes.AttributesService.CreateAttributeValue:output_type -> attributes.CreateAttributeValueResponse + 24, // 59: attributes.AttributesService.UpdateAttributeValue:output_type -> attributes.UpdateAttributeValueResponse + 26, // 60: attributes.AttributesService.DeactivateAttributeValue:output_type -> attributes.DeactivateAttributeValueResponse + 28, // 61: attributes.AttributesService.AssignKeyAccessServerToAttribute:output_type -> attributes.AssignKeyAccessServerToAttributeResponse + 30, // 62: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> attributes.RemoveKeyAccessServerFromAttributeResponse + 32, // 63: attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> attributes.AssignKeyAccessServerToValueResponse + 34, // 64: attributes.AttributesService.RemoveKeyAccessServerFromValue:output_type -> attributes.RemoveKeyAccessServerFromValueResponse + 51, // [51:65] is the sub-list for method output_type + 37, // [37:51] is the sub-list for method input_type + 37, // [37:37] is the sub-list for extension type_name + 37, // [37:37] is the sub-list for extension extendee + 0, // [0:37] is the sub-list for field type_name } func init() { file_attributes_attributes_proto_init() } diff --git a/sdk/namespaces/namespaces.pb.go b/sdk/namespaces/namespaces.pb.go index 133dbd7893..b72435e0e6 100644 --- a/sdk/namespaces/namespaces.pb.go +++ b/sdk/namespaces/namespaces.pb.go @@ -12,6 +12,7 @@ import ( _ "google.golang.org/genproto/googleapis/api/annotations" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" reflect "reflect" sync "sync" ) @@ -33,7 +34,7 @@ type Namespace struct { // used to partition Attribute Definitions, support by namespace AuthN and enable federation Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` // active by default until explicitly deactivated - Active bool `protobuf:"varint,3,opt,name=active,proto3" json:"active,omitempty"` + Active *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=active,proto3" json:"active,omitempty"` } func (x *Namespace) Reset() { @@ -82,11 +83,11 @@ func (x *Namespace) GetName() string { return "" } -func (x *Namespace) GetActive() bool { +func (x *Namespace) GetActive() *wrapperspb.BoolValue { if x != nil { return x.Active } - return false + return nil } type GetNamespaceRequest struct { @@ -568,8 +569,10 @@ var file_namespaces_namespaces_proto_rawDesc = []byte{ 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, 0xad, 0x04, 0x0a, 0x09, 0x4e, 0x61, + 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc9, 0x04, 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, @@ -603,100 +606,102 @@ var file_namespaces_namespaces_proto_rawDesc = []byte{ 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, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 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, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, - 0x70, 0x61, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 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, 0x4e, 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, - 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x15, 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, 0x4e, 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, 0x33, 0x0a, - 0x09, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x15, 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, 0x8e, 0x05, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x76, 0x0a, 0x0c, - 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x77, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, 0x7a, 0x0a, - 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, - 0x12, 0x22, 0x2e, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x43, 0x72, + 0x65, 0x12, 0x32, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x03, 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, + 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, 0x4b, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x33, 0x0a, 0x09, + 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x15, 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, 0x4f, 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, 0x35, 0x0a, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 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, 0x1a, 0x23, 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, 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, + 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, 0x4e, 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, 0x33, 0x0a, 0x09, 0x6e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, + 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, 0x4e, + 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, 0x33, 0x0a, 0x09, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 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, 0x8e, 0x05, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x76, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x1f, 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, 0x20, 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, 0x77, 0x0a, 0x0e, 0x4c, 0x69, 0x73, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x12, 0x21, 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, 0x22, 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, 0x7a, 0x0a, 0x0f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 0x2e, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 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, 0x23, 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, + 0x1a, 0x23, 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, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0x8b, 0x01, 0x0a, 0x13, 0x44, - 0x65, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x12, 0x26, 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, 0x27, 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, 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, - 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, 0x30, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, - 0x64, 0x66, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, - 0x63, 0x2f, 0x73, 0x64, 0x6b, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0xa2, 0x02, 0x03, 0x4e, 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, - 0x63, 0x65, 0x73, 0xca, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, - 0xe2, 0x02, 0x16, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, - 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x70, 0x61, 0x63, 0x65, 0x73, 0x12, 0x7f, 0x0a, 0x0f, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x22, 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, 0x23, 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, 0x8b, 0x01, 0x0a, 0x13, 0x44, 0x65, 0x61, 0x63, 0x74, + 0x69, 0x76, 0x61, 0x74, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x12, 0x26, + 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, 0x27, 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, 0x9b, 0x01, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 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, 0x30, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6f, 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2f, 0x6f, + 0x70, 0x65, 0x6e, 0x74, 0x64, 0x66, 0x2d, 0x76, 0x32, 0x2d, 0x70, 0x6f, 0x63, 0x2f, 0x73, 0x64, + 0x6b, 0x2f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xa2, 0x02, 0x03, 0x4e, + 0x58, 0x58, 0xaa, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xca, + 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0xe2, 0x02, 0x16, 0x4e, + 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x73, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -724,29 +729,31 @@ var file_namespaces_namespaces_proto_goTypes = []interface{}{ (*UpdateNamespaceResponse)(nil), // 8: namespaces.UpdateNamespaceResponse (*DeactivateNamespaceRequest)(nil), // 9: namespaces.DeactivateNamespaceRequest (*DeactivateNamespaceResponse)(nil), // 10: namespaces.DeactivateNamespaceResponse - (common.ActiveStateEnum)(0), // 11: common.ActiveStateEnum + (*wrapperspb.BoolValue)(nil), // 11: google.protobuf.BoolValue + (common.ActiveStateEnum)(0), // 12: common.ActiveStateEnum } var file_namespaces_namespaces_proto_depIdxs = []int32{ - 0, // 0: namespaces.GetNamespaceResponse.namespace:type_name -> namespaces.Namespace - 11, // 1: namespaces.ListNamespacesRequest.state:type_name -> common.ActiveStateEnum - 0, // 2: namespaces.ListNamespacesResponse.namespaces:type_name -> namespaces.Namespace - 0, // 3: namespaces.CreateNamespaceResponse.namespace:type_name -> namespaces.Namespace - 0, // 4: namespaces.UpdateNamespaceResponse.namespace:type_name -> namespaces.Namespace - 1, // 5: namespaces.NamespaceService.GetNamespace:input_type -> namespaces.GetNamespaceRequest - 3, // 6: namespaces.NamespaceService.ListNamespaces:input_type -> namespaces.ListNamespacesRequest - 5, // 7: namespaces.NamespaceService.CreateNamespace:input_type -> namespaces.CreateNamespaceRequest - 7, // 8: namespaces.NamespaceService.UpdateNamespace:input_type -> namespaces.UpdateNamespaceRequest - 9, // 9: namespaces.NamespaceService.DeactivateNamespace:input_type -> namespaces.DeactivateNamespaceRequest - 2, // 10: namespaces.NamespaceService.GetNamespace:output_type -> namespaces.GetNamespaceResponse - 4, // 11: namespaces.NamespaceService.ListNamespaces:output_type -> namespaces.ListNamespacesResponse - 6, // 12: namespaces.NamespaceService.CreateNamespace:output_type -> namespaces.CreateNamespaceResponse - 8, // 13: namespaces.NamespaceService.UpdateNamespace:output_type -> namespaces.UpdateNamespaceResponse - 10, // 14: namespaces.NamespaceService.DeactivateNamespace:output_type -> namespaces.DeactivateNamespaceResponse - 10, // [10:15] is the sub-list for method output_type - 5, // [5:10] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name + 11, // 0: namespaces.Namespace.active:type_name -> google.protobuf.BoolValue + 0, // 1: namespaces.GetNamespaceResponse.namespace:type_name -> namespaces.Namespace + 12, // 2: namespaces.ListNamespacesRequest.state:type_name -> common.ActiveStateEnum + 0, // 3: namespaces.ListNamespacesResponse.namespaces:type_name -> namespaces.Namespace + 0, // 4: namespaces.CreateNamespaceResponse.namespace:type_name -> namespaces.Namespace + 0, // 5: namespaces.UpdateNamespaceResponse.namespace:type_name -> namespaces.Namespace + 1, // 6: namespaces.NamespaceService.GetNamespace:input_type -> namespaces.GetNamespaceRequest + 3, // 7: namespaces.NamespaceService.ListNamespaces:input_type -> namespaces.ListNamespacesRequest + 5, // 8: namespaces.NamespaceService.CreateNamespace:input_type -> namespaces.CreateNamespaceRequest + 7, // 9: namespaces.NamespaceService.UpdateNamespace:input_type -> namespaces.UpdateNamespaceRequest + 9, // 10: namespaces.NamespaceService.DeactivateNamespace:input_type -> namespaces.DeactivateNamespaceRequest + 2, // 11: namespaces.NamespaceService.GetNamespace:output_type -> namespaces.GetNamespaceResponse + 4, // 12: namespaces.NamespaceService.ListNamespaces:output_type -> namespaces.ListNamespacesResponse + 6, // 13: namespaces.NamespaceService.CreateNamespace:output_type -> namespaces.CreateNamespaceResponse + 8, // 14: namespaces.NamespaceService.UpdateNamespace:output_type -> namespaces.UpdateNamespaceResponse + 10, // 15: namespaces.NamespaceService.DeactivateNamespace:output_type -> 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 } func init() { file_namespaces_namespaces_proto_init() } diff --git a/sdkjava/com/attributes/Attribute.java b/sdkjava/com/attributes/Attribute.java index c100e20189..3d973ad971 100644 --- a/sdkjava/com/attributes/Attribute.java +++ b/sdkjava/com/attributes/Attribute.java @@ -316,18 +316,41 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( } public static final int ACTIVE_FIELD_NUMBER = 9; - private boolean active_ = false; + private com.google.protobuf.BoolValue active_; /** *
        * active by default until explicitly deactivated
        * 
    * - * bool active = 9 [json_name = "active"]; + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; + * @return Whether the active field is set. + */ + @java.lang.Override + public boolean hasActive() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; * @return The active. */ @java.lang.Override - public boolean getActive() { - return active_; + public com.google.protobuf.BoolValue getActive() { + return active_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : active_; + } + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; + */ + @java.lang.Override + public com.google.protobuf.BoolValueOrBuilder getActiveOrBuilder() { + return active_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : active_; } private byte memoizedIsInitialized = -1; @@ -365,8 +388,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) for (int i = 0; i < grants_.size(); i++) { output.writeMessage(8, grants_.get(i)); } - if (active_ != false) { - output.writeBool(9, active_); + if (((bitField0_ & 0x00000004) != 0)) { + output.writeMessage(9, getActive()); } getUnknownFields().writeTo(output); } @@ -403,9 +426,9 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(8, grants_.get(i)); } - if (active_ != false) { + if (((bitField0_ & 0x00000004) != 0)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(9, active_); + .computeMessageSize(9, getActive()); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -441,8 +464,11 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getValuesList())) return false; if (!getGrantsList() .equals(other.getGrantsList())) return false; - if (getActive() - != other.getActive()) return false; + if (hasActive() != other.hasActive()) return false; + if (hasActive()) { + if (!getActive() + .equals(other.getActive())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -476,9 +502,10 @@ public int hashCode() { hash = (37 * hash) + GRANTS_FIELD_NUMBER; hash = (53 * hash) + getGrantsList().hashCode(); } - hash = (37 * hash) + ACTIVE_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getActive()); + if (hasActive()) { + hash = (37 * hash) + ACTIVE_FIELD_NUMBER; + hash = (53 * hash) + getActive().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -613,6 +640,7 @@ private void maybeForceBuilderInitialization() { getNamespaceFieldBuilder(); getValuesFieldBuilder(); getGrantsFieldBuilder(); + getActiveFieldBuilder(); } } @java.lang.Override @@ -646,7 +674,11 @@ public Builder clear() { grantsBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000040); - active_ = false; + active_ = null; + if (activeBuilder_ != null) { + activeBuilder_.dispose(); + activeBuilder_ = null; + } return this; } @@ -725,7 +757,10 @@ private void buildPartial0(com.attributes.Attribute result) { result.rule_ = rule_; } if (((from_bitField0_ & 0x00000080) != 0)) { - result.active_ = active_; + result.active_ = activeBuilder_ == null + ? active_ + : activeBuilder_.build(); + to_bitField0_ |= 0x00000004; } result.bitField0_ |= to_bitField0_; } @@ -845,8 +880,8 @@ public Builder mergeFrom(com.attributes.Attribute other) { } } } - if (other.getActive() != false) { - setActive(other.getActive()); + if (other.hasActive()) { + mergeActive(other.getActive()); } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -929,11 +964,13 @@ public Builder mergeFrom( } break; } // case 66 - case 72: { - active_ = input.readBool(); + case 74: { + input.readMessage( + getActiveFieldBuilder().getBuilder(), + extensionRegistry); bitField0_ |= 0x00000080; break; - } // case 72 + } // case 74 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -1982,31 +2019,51 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder( return grantsBuilder_; } - private boolean active_ ; + private com.google.protobuf.BoolValue active_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder> activeBuilder_; + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; + * @return Whether the active field is set. + */ + public boolean hasActive() { + return ((bitField0_ & 0x00000080) != 0); + } /** *
          * active by default until explicitly deactivated
          * 
    * - * bool active = 9 [json_name = "active"]; + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; * @return The active. */ - @java.lang.Override - public boolean getActive() { - return active_; + public com.google.protobuf.BoolValue getActive() { + if (activeBuilder_ == null) { + return active_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : active_; + } else { + return activeBuilder_.getMessage(); + } } /** *
          * active by default until explicitly deactivated
          * 
    * - * bool active = 9 [json_name = "active"]; - * @param value The active to set. - * @return This builder for chaining. + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; */ - public Builder setActive(boolean value) { - - active_ = value; + public Builder setActive(com.google.protobuf.BoolValue value) { + if (activeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + active_ = value; + } else { + activeBuilder_.setMessage(value); + } bitField0_ |= 0x00000080; onChanged(); return this; @@ -2016,15 +2073,108 @@ public Builder setActive(boolean value) { * active by default until explicitly deactivated * * - * bool active = 9 [json_name = "active"]; - * @return This builder for chaining. + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; + */ + public Builder setActive( + com.google.protobuf.BoolValue.Builder builderForValue) { + if (activeBuilder_ == null) { + active_ = builderForValue.build(); + } else { + activeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000080; + onChanged(); + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; + */ + public Builder mergeActive(com.google.protobuf.BoolValue value) { + if (activeBuilder_ == null) { + if (((bitField0_ & 0x00000080) != 0) && + active_ != null && + active_ != com.google.protobuf.BoolValue.getDefaultInstance()) { + getActiveBuilder().mergeFrom(value); + } else { + active_ = value; + } + } else { + activeBuilder_.mergeFrom(value); + } + if (active_ != null) { + bitField0_ |= 0x00000080; + onChanged(); + } + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; */ public Builder clearActive() { bitField0_ = (bitField0_ & ~0x00000080); - active_ = false; + active_ = null; + if (activeBuilder_ != null) { + activeBuilder_.dispose(); + activeBuilder_ = null; + } onChanged(); return this; } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; + */ + public com.google.protobuf.BoolValue.Builder getActiveBuilder() { + bitField0_ |= 0x00000080; + onChanged(); + return getActiveFieldBuilder().getBuilder(); + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; + */ + public com.google.protobuf.BoolValueOrBuilder getActiveOrBuilder() { + if (activeBuilder_ != null) { + return activeBuilder_.getMessageOrBuilder(); + } else { + return active_ == null ? + com.google.protobuf.BoolValue.getDefaultInstance() : active_; + } + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder> + getActiveFieldBuilder() { + if (activeBuilder_ == null) { + activeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder>( + getActive(), + getParentForChildren(), + isClean()); + active_ = null; + } + return activeBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdkjava/com/attributes/AttributeOrBuilder.java b/sdkjava/com/attributes/AttributeOrBuilder.java index 5890ad425a..35e4c0ab41 100644 --- a/sdkjava/com/attributes/AttributeOrBuilder.java +++ b/sdkjava/com/attributes/AttributeOrBuilder.java @@ -166,8 +166,25 @@ com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * bool active = 9 [json_name = "active"]; + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; + * @return Whether the active field is set. + */ + boolean hasActive(); + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; * @return The active. */ - boolean getActive(); + com.google.protobuf.BoolValue getActive(); + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 9 [json_name = "active"]; + */ + com.google.protobuf.BoolValueOrBuilder getActiveOrBuilder(); } diff --git a/sdkjava/com/attributes/AttributesProto.java b/sdkjava/com/attributes/AttributesProto.java index 670ad35ef3..27838bd01f 100644 --- a/sdkjava/com/attributes/AttributesProto.java +++ b/sdkjava/com/attributes/AttributesProto.java @@ -197,171 +197,173 @@ public static void registerAllExtensions( "\n\033attributes/attributes.proto\022\nattribute" + "s\032\033buf/validate/validate.proto\032\023common/c" + "ommon.proto\032\034google/api/annotations.prot" + - "o\032,kasregistry/key_access_server_registr" + - "y.proto\032\033namespaces/namespaces.proto\"\317\002\n" + - "\tAttribute\022\016\n\002id\030\001 \001(\tR\002id\022,\n\010metadata\030\002" + - " \001(\0132\020.common.MetadataR\010metadata\0223\n\tname" + - "space\030\003 \001(\0132\025.namespaces.NamespaceR\tname" + - "space\022\022\n\004name\030\004 \001(\tR\004name\022B\n\004rule\030\005 \001(\0162" + - "!.attributes.AttributeRuleTypeEnumB\013\272H\010\202" + - "\001\002\020\001\310\001\001R\004rule\022)\n\006values\030\007 \003(\0132\021.attribut" + - "es.ValueR\006values\0224\n\006grants\030\010 \003(\0132\034.kasre" + - "gistry.KeyAccessServerR\006grants\022\026\n\006active" + - "\030\t \001(\010R\006active\"\216\002\n\025AttributeCreateUpdate" + - "\0223\n\010metadata\030\001 \001(\0132\027.common.MetadataMuta" + - "bleR\010metadata\022)\n\014namespace_id\030\002 \001(\tB\006\272H\003" + - "\310\001\001R\013namespaceId\022\032\n\004name\030\003 \001(\tB\006\272H\003\310\001\001R\004" + - "name\022B\n\004rule\030\004 \001(\0162!.attributes.Attribut" + - "eRuleTypeEnumB\013\272H\010\202\001\002\020\001\310\001\001R\004rule\0225\n\006valu" + - "es\030\005 \003(\0132\035.attributes.ValueCreateUpdateR" + - "\006values\"\356\001\n\005Value\022\016\n\002id\030\001 \001(\tR\002id\022,\n\010met" + - "adata\030\002 \001(\0132\020.common.MetadataR\010metadata\022" + - ")\n\014attribute_id\030\003 \001(\tB\006\272H\003\310\001\001R\013attribute" + - "Id\022\024\n\005value\030\004 \001(\tR\005value\022\030\n\007members\030\005 \003(" + - "\tR\007members\0224\n\006grants\030\006 \003(\0132\034.kasregistry" + - ".KeyAccessServerR\006grants\022\026\n\006active\030\007 \001(\010" + - "R\006active\"x\n\021ValueCreateUpdate\0223\n\010metadat" + - "a\030\001 \001(\0132\027.common.MetadataMutableR\010metada" + - "ta\022\024\n\005value\030\002 \001(\tR\005value\022\030\n\007members\030\003 \003(" + - "\tR\007members\"n\n\030AttributeKeyAccessServer\022!" + - "\n\014attribute_id\030\001 \001(\tR\013attributeId\022/\n\024key" + - "_access_server_id\030\002 \001(\tR\021keyAccessServer" + - "Id\"b\n\024ValueKeyAccessServer\022\031\n\010value_id\030\001" + - " \001(\tR\007valueId\022/\n\024key_access_server_id\030\002 " + - "\001(\tR\021keyAccessServerId\"F\n\025ListAttributes" + - "Request\022-\n\005state\030\001 \001(\0162\027.common.ActiveSt" + - "ateEnumR\005state\"O\n\026ListAttributesResponse" + - "\0225\n\nattributes\030\001 \003(\0132\025.attributes.Attrib" + - "uteR\nattributes\"-\n\023GetAttributeRequest\022\026" + - "\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetAttributeRe" + - "sponse\0223\n\tattribute\030\001 \001(\0132\025.attributes.A" + - "ttributeR\tattribute\"a\n\026CreateAttributeRe" + - "quest\022G\n\tattribute\030\001 \001(\0132!.attributes.At" + - "tributeCreateUpdateB\006\272H\003\310\001\001R\tattribute\"N" + - "\n\027CreateAttributeResponse\0223\n\tattribute\030\001" + - " \001(\0132\025.attributes.AttributeR\tattribute\"y" + - "\n\026UpdateAttributeRequest\022\026\n\002id\030\001 \001(\tB\006\272H" + - "\003\310\001\001R\002id\022G\n\tattribute\030\002 \001(\0132!.attributes" + - ".AttributeCreateUpdateB\006\272H\003\310\001\001R\tattribut" + - "e\"N\n\027UpdateAttributeResponse\0223\n\tattribut" + - "e\030\001 \001(\0132\025.attributes.AttributeR\tattribut" + - "e\"4\n\032DeactivateAttributeRequest\022\026\n\002id\030\001 " + - "\001(\tB\006\272H\003\310\001\001R\002id\"R\n\033DeactivateAttributeRe" + - "sponse\0223\n\tattribute\030\001 \001(\0132\025.attributes.A" + - "ttributeR\tattribute\"2\n\030GetAttributeValue" + - "Request\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"D\n\031GetAt" + - "tributeValueResponse\022\'\n\005value\030\001 \001(\0132\021.at" + - "tributes.ValueR\005value\"v\n\032ListAttributeVa" + - "luesRequest\022)\n\014attribute_id\030\001 \001(\tB\006\272H\003\310\001" + - "\001R\013attributeId\022-\n\005state\030\002 \001(\0162\027.common.A" + - "ctiveStateEnumR\005state\"H\n\033ListAttributeVa" + - "luesResponse\022)\n\006values\030\001 \003(\0132\021.attribute" + - "s.ValueR\006values\"\205\001\n\033CreateAttributeValue" + - "Request\022)\n\014attribute_id\030\001 \001(\tB\006\272H\003\310\001\001R\013a" + - "ttributeId\022;\n\005value\030\002 \001(\0132\035.attributes.V" + - "alueCreateUpdateB\006\272H\003\310\001\001R\005value\"G\n\034Creat" + - "eAttributeValueResponse\022\'\n\005value\030\001 \001(\0132\021" + - ".attributes.ValueR\005value\"\235\001\n\033UpdateAttri" + - "buteValueRequest\022)\n\014attribute_id\030\001 \001(\tB\006" + - "\272H\003\310\001\001R\013attributeId\022\026\n\002id\030\002 \001(\tB\006\272H\003\310\001\001R" + - "\002id\022;\n\005value\030\003 \001(\0132\035.attributes.ValueCre" + - "ateUpdateB\006\272H\003\310\001\001R\005value\"G\n\034UpdateAttrib" + - "uteValueResponse\022\'\n\005value\030\001 \001(\0132\021.attrib" + - "utes.ValueR\005value\"9\n\037DeactivateAttribute" + - "ValueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n " + - "DeactivateAttributeValueResponse\022\'\n\005valu" + - "e\030\001 \001(\0132\021.attributes.ValueR\005value\"\216\001\n\'As" + - "signKeyAccessServerToAttributeRequest\022c\n" + - "\033attribute_key_access_server\030\001 \001(\0132$.att" + - "ributes.AttributeKeyAccessServerR\030attrib" + - "uteKeyAccessServer\"\217\001\n(AssignKeyAccessSe" + - "rverToAttributeResponse\022c\n\033attribute_key" + - "_access_server\030\001 \001(\0132$.attributes.Attrib" + - "uteKeyAccessServerR\030attributeKeyAccessSe" + - "rver\"\220\001\n)RemoveKeyAccessServerFromAttrib" + - "uteRequest\022c\n\033attribute_key_access_serve" + - "r\030\001 \001(\0132$.attributes.AttributeKeyAccessS" + - "erverR\030attributeKeyAccessServer\"\221\001\n*Remo" + - "veKeyAccessServerFromAttributeResponse\022c" + - "\n\033attribute_key_access_server\030\001 \001(\0132$.at" + - "tributes.AttributeKeyAccessServerR\030attri" + - "buteKeyAccessServer\"~\n#AssignKeyAccessSe" + - "rverToValueRequest\022W\n\027value_key_access_s" + + "o\032\036google/protobuf/wrappers.proto\032,kasre" + + "gistry/key_access_server_registry.proto\032" + + "\033namespaces/namespaces.proto\"\353\002\n\tAttribu" + + "te\022\016\n\002id\030\001 \001(\tR\002id\022,\n\010metadata\030\002 \001(\0132\020.c" + + "ommon.MetadataR\010metadata\0223\n\tnamespace\030\003 " + + "\001(\0132\025.namespaces.NamespaceR\tnamespace\022\022\n" + + "\004name\030\004 \001(\tR\004name\022B\n\004rule\030\005 \001(\0162!.attrib" + + "utes.AttributeRuleTypeEnumB\013\272H\010\202\001\002\020\001\310\001\001R" + + "\004rule\022)\n\006values\030\007 \003(\0132\021.attributes.Value" + + "R\006values\0224\n\006grants\030\010 \003(\0132\034.kasregistry.K" + + "eyAccessServerR\006grants\0222\n\006active\030\t \001(\0132\032" + + ".google.protobuf.BoolValueR\006active\"\216\002\n\025A" + + "ttributeCreateUpdate\0223\n\010metadata\030\001 \001(\0132\027" + + ".common.MetadataMutableR\010metadata\022)\n\014nam" + + "espace_id\030\002 \001(\tB\006\272H\003\310\001\001R\013namespaceId\022\032\n\004" + + "name\030\003 \001(\tB\006\272H\003\310\001\001R\004name\022B\n\004rule\030\004 \001(\0162!" + + ".attributes.AttributeRuleTypeEnumB\013\272H\010\202\001" + + "\002\020\001\310\001\001R\004rule\0225\n\006values\030\005 \003(\0132\035.attribute" + + "s.ValueCreateUpdateR\006values\"\212\002\n\005Value\022\016\n" + + "\002id\030\001 \001(\tR\002id\022,\n\010metadata\030\002 \001(\0132\020.common" + + ".MetadataR\010metadata\022)\n\014attribute_id\030\003 \001(" + + "\tB\006\272H\003\310\001\001R\013attributeId\022\024\n\005value\030\004 \001(\tR\005v" + + "alue\022\030\n\007members\030\005 \003(\tR\007members\0224\n\006grants" + + "\030\006 \003(\0132\034.kasregistry.KeyAccessServerR\006gr" + + "ants\0222\n\006active\030\007 \001(\0132\032.google.protobuf.B" + + "oolValueR\006active\"x\n\021ValueCreateUpdate\0223\n" + + "\010metadata\030\001 \001(\0132\027.common.MetadataMutable" + + "R\010metadata\022\024\n\005value\030\002 \001(\tR\005value\022\030\n\007memb" + + "ers\030\003 \003(\tR\007members\"n\n\030AttributeKeyAccess" + + "Server\022!\n\014attribute_id\030\001 \001(\tR\013attributeI" + + "d\022/\n\024key_access_server_id\030\002 \001(\tR\021keyAcce" + + "ssServerId\"b\n\024ValueKeyAccessServer\022\031\n\010va" + + "lue_id\030\001 \001(\tR\007valueId\022/\n\024key_access_serv" + + "er_id\030\002 \001(\tR\021keyAccessServerId\"F\n\025ListAt" + + "tributesRequest\022-\n\005state\030\001 \001(\0162\027.common." + + "ActiveStateEnumR\005state\"O\n\026ListAttributes" + + "Response\0225\n\nattributes\030\001 \003(\0132\025.attribute" + + "s.AttributeR\nattributes\"-\n\023GetAttributeR" + + "equest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetAtt" + + "ributeResponse\0223\n\tattribute\030\001 \001(\0132\025.attr" + + "ibutes.AttributeR\tattribute\"a\n\026CreateAtt" + + "ributeRequest\022G\n\tattribute\030\001 \001(\0132!.attri" + + "butes.AttributeCreateUpdateB\006\272H\003\310\001\001R\tatt" + + "ribute\"N\n\027CreateAttributeResponse\0223\n\tatt" + + "ribute\030\001 \001(\0132\025.attributes.AttributeR\tatt" + + "ribute\"y\n\026UpdateAttributeRequest\022\026\n\002id\030\001" + + " \001(\tB\006\272H\003\310\001\001R\002id\022G\n\tattribute\030\002 \001(\0132!.at" + + "tributes.AttributeCreateUpdateB\006\272H\003\310\001\001R\t" + + "attribute\"N\n\027UpdateAttributeResponse\0223\n\t" + + "attribute\030\001 \001(\0132\025.attributes.AttributeR\t" + + "attribute\"4\n\032DeactivateAttributeRequest\022" + + "\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"R\n\033DeactivateAtt" + + "ributeResponse\0223\n\tattribute\030\001 \001(\0132\025.attr" + + "ibutes.AttributeR\tattribute\"2\n\030GetAttrib" + + "uteValueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"" + + "D\n\031GetAttributeValueResponse\022\'\n\005value\030\001 " + + "\001(\0132\021.attributes.ValueR\005value\"v\n\032ListAtt" + + "ributeValuesRequest\022)\n\014attribute_id\030\001 \001(" + + "\tB\006\272H\003\310\001\001R\013attributeId\022-\n\005state\030\002 \001(\0162\027." + + "common.ActiveStateEnumR\005state\"H\n\033ListAtt" + + "ributeValuesResponse\022)\n\006values\030\001 \003(\0132\021.a" + + "ttributes.ValueR\006values\"\205\001\n\033CreateAttrib" + + "uteValueRequest\022)\n\014attribute_id\030\001 \001(\tB\006\272" + + "H\003\310\001\001R\013attributeId\022;\n\005value\030\002 \001(\0132\035.attr" + + "ibutes.ValueCreateUpdateB\006\272H\003\310\001\001R\005value\"" + + "G\n\034CreateAttributeValueResponse\022\'\n\005value" + + "\030\001 \001(\0132\021.attributes.ValueR\005value\"\235\001\n\033Upd" + + "ateAttributeValueRequest\022)\n\014attribute_id" + + "\030\001 \001(\tB\006\272H\003\310\001\001R\013attributeId\022\026\n\002id\030\002 \001(\tB" + + "\006\272H\003\310\001\001R\002id\022;\n\005value\030\003 \001(\0132\035.attributes." + + "ValueCreateUpdateB\006\272H\003\310\001\001R\005value\"G\n\034Upda" + + "teAttributeValueResponse\022\'\n\005value\030\001 \001(\0132" + + "\021.attributes.ValueR\005value\"9\n\037DeactivateA" + + "ttributeValueRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001" + + "R\002id\"K\n DeactivateAttributeValueResponse" + + "\022\'\n\005value\030\001 \001(\0132\021.attributes.ValueR\005valu" + + "e\"\216\001\n\'AssignKeyAccessServerToAttributeRe" + + "quest\022c\n\033attribute_key_access_server\030\001 \001" + + "(\0132$.attributes.AttributeKeyAccessServer" + + "R\030attributeKeyAccessServer\"\217\001\n(AssignKey" + + "AccessServerToAttributeResponse\022c\n\033attri" + + "bute_key_access_server\030\001 \001(\0132$.attribute" + + "s.AttributeKeyAccessServerR\030attributeKey" + + "AccessServer\"\220\001\n)RemoveKeyAccessServerFr" + + "omAttributeRequest\022c\n\033attribute_key_acce" + + "ss_server\030\001 \001(\0132$.attributes.AttributeKe" + + "yAccessServerR\030attributeKeyAccessServer\"" + + "\221\001\n*RemoveKeyAccessServerFromAttributeRe" + + "sponse\022c\n\033attribute_key_access_server\030\001 " + + "\001(\0132$.attributes.AttributeKeyAccessServe" + + "rR\030attributeKeyAccessServer\"~\n#AssignKey" + + "AccessServerToValueRequest\022W\n\027value_key_" + + "access_server\030\001 \001(\0132 .attributes.ValueKe" + + "yAccessServerR\024valueKeyAccessServer\"\177\n$A" + + "ssignKeyAccessServerToValueResponse\022W\n\027v" + + "alue_key_access_server\030\001 \001(\0132 .attribute" + + "s.ValueKeyAccessServerR\024valueKeyAccessSe" + + "rver\"\200\001\n%RemoveKeyAccessServerFromValueR" + + "equest\022W\n\027value_key_access_server\030\001 \001(\0132" + + " .attributes.ValueKeyAccessServerR\024value" + + "KeyAccessServer\"\201\001\n&RemoveKeyAccessServe" + + "rFromValueResponse\022W\n\027value_key_access_s" + "erver\030\001 \001(\0132 .attributes.ValueKeyAccessS" + - "erverR\024valueKeyAccessServer\"\177\n$AssignKey" + - "AccessServerToValueResponse\022W\n\027value_key" + - "_access_server\030\001 \001(\0132 .attributes.ValueK" + - "eyAccessServerR\024valueKeyAccessServer\"\200\001\n" + - "%RemoveKeyAccessServerFromValueRequest\022W" + - "\n\027value_key_access_server\030\001 \001(\0132 .attrib" + - "utes.ValueKeyAccessServerR\024valueKeyAcces" + - "sServer\"\201\001\n&RemoveKeyAccessServerFromVal" + - "ueResponse\022W\n\027value_key_access_server\030\001 " + - "\001(\0132 .attributes.ValueKeyAccessServerR\024v" + - "alueKeyAccessServer*\263\001\n\025AttributeRuleTyp" + - "eEnum\022(\n$ATTRIBUTE_RULE_TYPE_ENUM_UNSPEC" + - "IFIED\020\000\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_ALL_" + - "OF\020\001\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM_ANY_OF\020" + - "\002\022&\n\"ATTRIBUTE_RULE_TYPE_ENUM_HIERARCHY\020" + - "\0032\205\021\n\021AttributesService\022Y\n\016ListAttribute" + - "s\022!.attributes.ListAttributesRequest\032\".a" + - "ttributes.ListAttributesResponse\"\000\022h\n\023Li" + - "stAttributeValues\022&.attributes.ListAttri" + - "buteValuesRequest\032\'.attributes.ListAttri" + - "buteValuesResponse\"\000\022k\n\014GetAttribute\022\037.a" + - "ttributes.GetAttributeRequest\032 .attribut" + - "es.GetAttributeResponse\"\030\202\323\344\223\002\022\022\020/attrib" + - "utes/{id}\022z\n\017CreateAttribute\022\".attribute" + - "s.CreateAttributeRequest\032#.attributes.Cr" + - "eateAttributeResponse\"\036\202\323\344\223\002\030\"\013/attribut" + - "es:\tattribute\022\177\n\017UpdateAttribute\022\".attri" + - "butes.UpdateAttributeRequest\032#.attribute" + - "s.UpdateAttributeResponse\"#\202\323\344\223\002\035\"\020/attr" + - "ibutes/{id}:\tattribute\022\200\001\n\023DeactivateAtt" + - "ribute\022&.attributes.DeactivateAttributeR" + - "equest\032\'.attributes.DeactivateAttributeR" + - "esponse\"\030\202\323\344\223\002\022*\020/attributes/{id}\022\203\001\n\021Ge" + - "tAttributeValue\022$.attributes.GetAttribut" + - "eValueRequest\032%.attributes.GetAttributeV" + - "alueResponse\"!\202\323\344\223\002\033\022\031/attributes/_/valu" + - "es/{id}\022\233\001\n\024CreateAttributeValue\022\'.attri" + - "butes.CreateAttributeValueRequest\032(.attr" + - "ibutes.CreateAttributeValueResponse\"0\202\323\344" + - "\223\002*\"!/attributes/{attribute_id}/values:\005" + - "value\022\240\001\n\024UpdateAttributeValue\022\'.attribu" + - "tes.UpdateAttributeValueRequest\032(.attrib" + - "utes.UpdateAttributeValueResponse\"5\202\323\344\223\002" + - "/\"&/attributes/{attribute_id}/values/{id" + - "}:\005value\022\230\001\n\030DeactivateAttributeValue\022+." + - "attributes.DeactivateAttributeValueReque" + - "st\032,.attributes.DeactivateAttributeValue" + - "Response\"!\202\323\344\223\002\033*\031/attributes/_/values/{" + - "id}\022\326\001\n AssignKeyAccessServerToAttribute" + - "\0223.attributes.AssignKeyAccessServerToAtt" + - "ributeRequest\0324.attributes.AssignKeyAcce" + - "ssServerToAttributeResponse\"G\202\323\344\223\002A\"\"/at" + - "tributes/keyaccessserver/assign:\033attribu" + - "te_key_access_server\022\334\001\n\"RemoveKeyAccess" + - "ServerFromAttribute\0225.attributes.RemoveK" + - "eyAccessServerFromAttributeRequest\0326.att" + - "ributes.RemoveKeyAccessServerFromAttribu" + - "teResponse\"G\202\323\344\223\002A\"\"/attributes/keyacces" + - "sserver/remove:\033attribute_key_access_ser" + - "ver\022\315\001\n\034AssignKeyAccessServerToValue\022/.a" + - "ttributes.AssignKeyAccessServerToValueRe" + - "quest\0320.attributes.AssignKeyAccessServer" + - "ToValueResponse\"J\202\323\344\223\002D\")/attributes/val" + - "ues/keyaccessserver/assign:\027value_key_ac" + - "cess_server\022\323\001\n\036RemoveKeyAccessServerFro" + - "mValue\0221.attributes.RemoveKeyAccessServe" + - "rFromValueRequest\0322.attributes.RemoveKey" + - "AccessServerFromValueResponse\"J\202\323\344\223\002D\")/" + - "attributes/values/keyaccessserver/remove" + - ":\027value_key_access_serverB\233\001\n\016com.attrib" + - "utesB\017AttributesProtoP\001Z0github.com/open" + - "tdf/opentdf-v2-poc/sdk/attributes\242\002\003AXX\252" + - "\002\nAttributes\312\002\nAttributes\342\002\026Attributes\\G" + - "PBMetadata\352\002\nAttributesb\006proto3" + "erverR\024valueKeyAccessServer*\263\001\n\025Attribut" + + "eRuleTypeEnum\022(\n$ATTRIBUTE_RULE_TYPE_ENU" + + "M_UNSPECIFIED\020\000\022#\n\037ATTRIBUTE_RULE_TYPE_E" + + "NUM_ALL_OF\020\001\022#\n\037ATTRIBUTE_RULE_TYPE_ENUM" + + "_ANY_OF\020\002\022&\n\"ATTRIBUTE_RULE_TYPE_ENUM_HI" + + "ERARCHY\020\0032\205\021\n\021AttributesService\022Y\n\016ListA" + + "ttributes\022!.attributes.ListAttributesReq" + + "uest\032\".attributes.ListAttributesResponse" + + "\"\000\022h\n\023ListAttributeValues\022&.attributes.L" + + "istAttributeValuesRequest\032\'.attributes.L" + + "istAttributeValuesResponse\"\000\022k\n\014GetAttri" + + "bute\022\037.attributes.GetAttributeRequest\032 ." + + "attributes.GetAttributeResponse\"\030\202\323\344\223\002\022\022" + + "\020/attributes/{id}\022z\n\017CreateAttribute\022\".a" + + "ttributes.CreateAttributeRequest\032#.attri" + + "butes.CreateAttributeResponse\"\036\202\323\344\223\002\030\"\013/" + + "attributes:\tattribute\022\177\n\017UpdateAttribute" + + "\022\".attributes.UpdateAttributeRequest\032#.a" + + "ttributes.UpdateAttributeResponse\"#\202\323\344\223\002" + + "\035\"\020/attributes/{id}:\tattribute\022\200\001\n\023Deact" + + "ivateAttribute\022&.attributes.DeactivateAt" + + "tributeRequest\032\'.attributes.DeactivateAt" + + "tributeResponse\"\030\202\323\344\223\002\022*\020/attributes/{id" + + "}\022\203\001\n\021GetAttributeValue\022$.attributes.Get" + + "AttributeValueRequest\032%.attributes.GetAt" + + "tributeValueResponse\"!\202\323\344\223\002\033\022\031/attribute" + + "s/_/values/{id}\022\233\001\n\024CreateAttributeValue" + + "\022\'.attributes.CreateAttributeValueReques" + + "t\032(.attributes.CreateAttributeValueRespo" + + "nse\"0\202\323\344\223\002*\"!/attributes/{attribute_id}/" + + "values:\005value\022\240\001\n\024UpdateAttributeValue\022\'" + + ".attributes.UpdateAttributeValueRequest\032" + + "(.attributes.UpdateAttributeValueRespons" + + "e\"5\202\323\344\223\002/\"&/attributes/{attribute_id}/va" + + "lues/{id}:\005value\022\230\001\n\030DeactivateAttribute" + + "Value\022+.attributes.DeactivateAttributeVa" + + "lueRequest\032,.attributes.DeactivateAttrib" + + "uteValueResponse\"!\202\323\344\223\002\033*\031/attributes/_/" + + "values/{id}\022\326\001\n AssignKeyAccessServerToA" + + "ttribute\0223.attributes.AssignKeyAccessSer" + + "verToAttributeRequest\0324.attributes.Assig" + + "nKeyAccessServerToAttributeResponse\"G\202\323\344" + + "\223\002A\"\"/attributes/keyaccessserver/assign:" + + "\033attribute_key_access_server\022\334\001\n\"RemoveK" + + "eyAccessServerFromAttribute\0225.attributes" + + ".RemoveKeyAccessServerFromAttributeReque" + + "st\0326.attributes.RemoveKeyAccessServerFro" + + "mAttributeResponse\"G\202\323\344\223\002A\"\"/attributes/" + + "keyaccessserver/remove:\033attribute_key_ac" + + "cess_server\022\315\001\n\034AssignKeyAccessServerToV" + + "alue\022/.attributes.AssignKeyAccessServerT" + + "oValueRequest\0320.attributes.AssignKeyAcce" + + "ssServerToValueResponse\"J\202\323\344\223\002D\")/attrib" + + "utes/values/keyaccessserver/assign:\027valu" + + "e_key_access_server\022\323\001\n\036RemoveKeyAccessS" + + "erverFromValue\0221.attributes.RemoveKeyAcc" + + "essServerFromValueRequest\0322.attributes.R" + + "emoveKeyAccessServerFromValueResponse\"J\202" + + "\323\344\223\002D\")/attributes/values/keyaccessserve" + + "r/remove:\027value_key_access_serverB\233\001\n\016co" + + "m.attributesB\017AttributesProtoP\001Z0github." + + "com/opentdf/opentdf-v2-poc/sdk/attribute" + + "s\242\002\003AXX\252\002\nAttributes\312\002\nAttributes\342\002\026Attr" + + "ibutes\\GPBMetadata\352\002\nAttributesb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, @@ -369,6 +371,7 @@ public static void registerAllExtensions( com.buf.validate.ValidateProto.getDescriptor(), com.common.CommonProto.getDescriptor(), com.google.api.AnnotationsProto.getDescriptor(), + com.google.protobuf.WrappersProto.getDescriptor(), com.kasregistry.KeyAccessServerRegistryProto.getDescriptor(), com.namespaces.NamespacesProto.getDescriptor(), }); @@ -585,6 +588,7 @@ public static void registerAllExtensions( com.buf.validate.ValidateProto.getDescriptor(); com.common.CommonProto.getDescriptor(); com.google.api.AnnotationsProto.getDescriptor(); + com.google.protobuf.WrappersProto.getDescriptor(); com.kasregistry.KeyAccessServerRegistryProto.getDescriptor(); com.namespaces.NamespacesProto.getDescriptor(); } diff --git a/sdkjava/com/attributes/Value.java b/sdkjava/com/attributes/Value.java index 7be6e1b097..270b716cea 100644 --- a/sdkjava/com/attributes/Value.java +++ b/sdkjava/com/attributes/Value.java @@ -312,18 +312,41 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( } public static final int ACTIVE_FIELD_NUMBER = 7; - private boolean active_ = false; + private com.google.protobuf.BoolValue active_; /** *
        * active by default until explicitly deactivated
        * 
    * - * bool active = 7 [json_name = "active"]; + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; + * @return Whether the active field is set. + */ + @java.lang.Override + public boolean hasActive() { + return ((bitField0_ & 0x00000002) != 0); + } + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; * @return The active. */ @java.lang.Override - public boolean getActive() { - return active_; + public com.google.protobuf.BoolValue getActive() { + return active_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : active_; + } + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; + */ + @java.lang.Override + public com.google.protobuf.BoolValueOrBuilder getActiveOrBuilder() { + return active_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : active_; } private byte memoizedIsInitialized = -1; @@ -358,8 +381,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) for (int i = 0; i < grants_.size(); i++) { output.writeMessage(6, grants_.get(i)); } - if (active_ != false) { - output.writeBool(7, active_); + if (((bitField0_ & 0x00000002) != 0)) { + output.writeMessage(7, getActive()); } getUnknownFields().writeTo(output); } @@ -395,9 +418,9 @@ public int getSerializedSize() { size += com.google.protobuf.CodedOutputStream .computeMessageSize(6, grants_.get(i)); } - if (active_ != false) { + if (((bitField0_ & 0x00000002) != 0)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(7, active_); + .computeMessageSize(7, getActive()); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -429,8 +452,11 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getMembersList())) return false; if (!getGrantsList() .equals(other.getGrantsList())) return false; - if (getActive() - != other.getActive()) return false; + if (hasActive() != other.hasActive()) return false; + if (hasActive()) { + if (!getActive() + .equals(other.getActive())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -460,9 +486,10 @@ public int hashCode() { hash = (37 * hash) + GRANTS_FIELD_NUMBER; hash = (53 * hash) + getGrantsList().hashCode(); } - hash = (37 * hash) + ACTIVE_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getActive()); + if (hasActive()) { + hash = (37 * hash) + ACTIVE_FIELD_NUMBER; + hash = (53 * hash) + getActive().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -595,6 +622,7 @@ private void maybeForceBuilderInitialization() { .alwaysUseFieldBuilders) { getMetadataFieldBuilder(); getGrantsFieldBuilder(); + getActiveFieldBuilder(); } } @java.lang.Override @@ -618,7 +646,11 @@ public Builder clear() { grantsBuilder_.clear(); } bitField0_ = (bitField0_ & ~0x00000020); - active_ = false; + active_ = null; + if (activeBuilder_ != null) { + activeBuilder_.dispose(); + activeBuilder_ = null; + } return this; } @@ -686,7 +718,10 @@ private void buildPartial0(com.attributes.Value result) { result.members_ = members_; } if (((from_bitField0_ & 0x00000040) != 0)) { - result.active_ = active_; + result.active_ = activeBuilder_ == null + ? active_ + : activeBuilder_.build(); + to_bitField0_ |= 0x00000002; } result.bitField0_ |= to_bitField0_; } @@ -789,8 +824,8 @@ public Builder mergeFrom(com.attributes.Value other) { } } } - if (other.getActive() != false) { - setActive(other.getActive()); + if (other.hasActive()) { + mergeActive(other.getActive()); } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -859,11 +894,13 @@ public Builder mergeFrom( } break; } // case 50 - case 56: { - active_ = input.readBool(); + case 58: { + input.readMessage( + getActiveFieldBuilder().getBuilder(), + extensionRegistry); bitField0_ |= 0x00000040; break; - } // case 56 + } // case 58 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -1697,31 +1734,51 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder( return grantsBuilder_; } - private boolean active_ ; + private com.google.protobuf.BoolValue active_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder> activeBuilder_; + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; + * @return Whether the active field is set. + */ + public boolean hasActive() { + return ((bitField0_ & 0x00000040) != 0); + } /** *
          * active by default until explicitly deactivated
          * 
    * - * bool active = 7 [json_name = "active"]; + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; * @return The active. */ - @java.lang.Override - public boolean getActive() { - return active_; + public com.google.protobuf.BoolValue getActive() { + if (activeBuilder_ == null) { + return active_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : active_; + } else { + return activeBuilder_.getMessage(); + } } /** *
          * active by default until explicitly deactivated
          * 
    * - * bool active = 7 [json_name = "active"]; - * @param value The active to set. - * @return This builder for chaining. + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; */ - public Builder setActive(boolean value) { - - active_ = value; + public Builder setActive(com.google.protobuf.BoolValue value) { + if (activeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + active_ = value; + } else { + activeBuilder_.setMessage(value); + } bitField0_ |= 0x00000040; onChanged(); return this; @@ -1731,15 +1788,108 @@ public Builder setActive(boolean value) { * active by default until explicitly deactivated * * - * bool active = 7 [json_name = "active"]; - * @return This builder for chaining. + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; + */ + public Builder setActive( + com.google.protobuf.BoolValue.Builder builderForValue) { + if (activeBuilder_ == null) { + active_ = builderForValue.build(); + } else { + activeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000040; + onChanged(); + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; + */ + public Builder mergeActive(com.google.protobuf.BoolValue value) { + if (activeBuilder_ == null) { + if (((bitField0_ & 0x00000040) != 0) && + active_ != null && + active_ != com.google.protobuf.BoolValue.getDefaultInstance()) { + getActiveBuilder().mergeFrom(value); + } else { + active_ = value; + } + } else { + activeBuilder_.mergeFrom(value); + } + if (active_ != null) { + bitField0_ |= 0x00000040; + onChanged(); + } + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; */ public Builder clearActive() { bitField0_ = (bitField0_ & ~0x00000040); - active_ = false; + active_ = null; + if (activeBuilder_ != null) { + activeBuilder_.dispose(); + activeBuilder_ = null; + } onChanged(); return this; } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; + */ + public com.google.protobuf.BoolValue.Builder getActiveBuilder() { + bitField0_ |= 0x00000040; + onChanged(); + return getActiveFieldBuilder().getBuilder(); + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; + */ + public com.google.protobuf.BoolValueOrBuilder getActiveOrBuilder() { + if (activeBuilder_ != null) { + return activeBuilder_.getMessageOrBuilder(); + } else { + return active_ == null ? + com.google.protobuf.BoolValue.getDefaultInstance() : active_; + } + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder> + getActiveFieldBuilder() { + if (activeBuilder_ == null) { + activeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder>( + getActive(), + getParentForChildren(), + isClean()); + active_ = null; + } + return activeBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdkjava/com/attributes/ValueOrBuilder.java b/sdkjava/com/attributes/ValueOrBuilder.java index f53eb124b1..f229a27ae5 100644 --- a/sdkjava/com/attributes/ValueOrBuilder.java +++ b/sdkjava/com/attributes/ValueOrBuilder.java @@ -157,8 +157,25 @@ com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder( * active by default until explicitly deactivated * * - * bool active = 7 [json_name = "active"]; + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; + * @return Whether the active field is set. + */ + boolean hasActive(); + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; * @return The active. */ - boolean getActive(); + com.google.protobuf.BoolValue getActive(); + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 7 [json_name = "active"]; + */ + com.google.protobuf.BoolValueOrBuilder getActiveOrBuilder(); } diff --git a/sdkjava/com/namespaces/Namespace.java b/sdkjava/com/namespaces/Namespace.java index 7184334d5a..9c163ce250 100644 --- a/sdkjava/com/namespaces/Namespace.java +++ b/sdkjava/com/namespaces/Namespace.java @@ -41,6 +41,7 @@ protected java.lang.Object newInstance( com.namespaces.Namespace.class, com.namespaces.Namespace.Builder.class); } + private int bitField0_; public static final int ID_FIELD_NUMBER = 1; @SuppressWarnings("serial") private volatile java.lang.Object id_ = ""; @@ -136,18 +137,41 @@ public java.lang.String getName() { } public static final int ACTIVE_FIELD_NUMBER = 3; - private boolean active_ = false; + private com.google.protobuf.BoolValue active_; /** *
        * active by default until explicitly deactivated
        * 
    * - * bool active = 3 [json_name = "active"]; + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; + * @return Whether the active field is set. + */ + @java.lang.Override + public boolean hasActive() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; * @return The active. */ @java.lang.Override - public boolean getActive() { - return active_; + public com.google.protobuf.BoolValue getActive() { + return active_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : active_; + } + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; + */ + @java.lang.Override + public com.google.protobuf.BoolValueOrBuilder getActiveOrBuilder() { + return active_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : active_; } private byte memoizedIsInitialized = -1; @@ -170,8 +194,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_); } - if (active_ != false) { - output.writeBool(3, active_); + if (((bitField0_ & 0x00000001) != 0)) { + output.writeMessage(3, getActive()); } getUnknownFields().writeTo(output); } @@ -188,9 +212,9 @@ public int getSerializedSize() { if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(name_)) { size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_); } - if (active_ != false) { + if (((bitField0_ & 0x00000001) != 0)) { size += com.google.protobuf.CodedOutputStream - .computeBoolSize(3, active_); + .computeMessageSize(3, getActive()); } size += getUnknownFields().getSerializedSize(); memoizedSize = size; @@ -211,8 +235,11 @@ public boolean equals(final java.lang.Object obj) { .equals(other.getId())) return false; if (!getName() .equals(other.getName())) return false; - if (getActive() - != other.getActive()) return false; + if (hasActive() != other.hasActive()) return false; + if (hasActive()) { + if (!getActive() + .equals(other.getActive())) return false; + } if (!getUnknownFields().equals(other.getUnknownFields())) return false; return true; } @@ -228,9 +255,10 @@ public int hashCode() { hash = (53 * hash) + getId().hashCode(); hash = (37 * hash) + NAME_FIELD_NUMBER; hash = (53 * hash) + getName().hashCode(); - hash = (37 * hash) + ACTIVE_FIELD_NUMBER; - hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( - getActive()); + if (hasActive()) { + hash = (37 * hash) + ACTIVE_FIELD_NUMBER; + hash = (53 * hash) + getActive().hashCode(); + } hash = (29 * hash) + getUnknownFields().hashCode(); memoizedHashCode = hash; return hash; @@ -350,13 +378,19 @@ public static final class Builder extends // Construct using com.namespaces.Namespace.newBuilder() private Builder() { - + maybeForceBuilderInitialization(); } private Builder( com.google.protobuf.GeneratedMessageV3.BuilderParent parent) { super(parent); - + maybeForceBuilderInitialization(); + } + private void maybeForceBuilderInitialization() { + if (com.google.protobuf.GeneratedMessageV3 + .alwaysUseFieldBuilders) { + getActiveFieldBuilder(); + } } @java.lang.Override public Builder clear() { @@ -364,7 +398,11 @@ public Builder clear() { bitField0_ = 0; id_ = ""; name_ = ""; - active_ = false; + active_ = null; + if (activeBuilder_ != null) { + activeBuilder_.dispose(); + activeBuilder_ = null; + } return this; } @@ -404,9 +442,14 @@ private void buildPartial0(com.namespaces.Namespace result) { if (((from_bitField0_ & 0x00000002) != 0)) { result.name_ = name_; } + int to_bitField0_ = 0; if (((from_bitField0_ & 0x00000004) != 0)) { - result.active_ = active_; + result.active_ = activeBuilder_ == null + ? active_ + : activeBuilder_.build(); + to_bitField0_ |= 0x00000001; } + result.bitField0_ |= to_bitField0_; } @java.lang.Override @@ -463,8 +506,8 @@ public Builder mergeFrom(com.namespaces.Namespace other) { bitField0_ |= 0x00000002; onChanged(); } - if (other.getActive() != false) { - setActive(other.getActive()); + if (other.hasActive()) { + mergeActive(other.getActive()); } this.mergeUnknownFields(other.getUnknownFields()); onChanged(); @@ -502,11 +545,13 @@ public Builder mergeFrom( bitField0_ |= 0x00000002; break; } // case 18 - case 24: { - active_ = input.readBool(); + case 26: { + input.readMessage( + getActiveFieldBuilder().getBuilder(), + extensionRegistry); bitField0_ |= 0x00000004; break; - } // case 24 + } // case 26 default: { if (!super.parseUnknownField(input, extensionRegistry, tag)) { done = true; // was an endgroup tag @@ -708,31 +753,51 @@ public Builder setNameBytes( return this; } - private boolean active_ ; + private com.google.protobuf.BoolValue active_; + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder> activeBuilder_; /** *
          * active by default until explicitly deactivated
          * 
    * - * bool active = 3 [json_name = "active"]; + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; + * @return Whether the active field is set. + */ + public boolean hasActive() { + return ((bitField0_ & 0x00000004) != 0); + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; * @return The active. */ - @java.lang.Override - public boolean getActive() { - return active_; + public com.google.protobuf.BoolValue getActive() { + if (activeBuilder_ == null) { + return active_ == null ? com.google.protobuf.BoolValue.getDefaultInstance() : active_; + } else { + return activeBuilder_.getMessage(); + } } /** *
          * active by default until explicitly deactivated
          * 
    * - * bool active = 3 [json_name = "active"]; - * @param value The active to set. - * @return This builder for chaining. + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; */ - public Builder setActive(boolean value) { - - active_ = value; + public Builder setActive(com.google.protobuf.BoolValue value) { + if (activeBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + active_ = value; + } else { + activeBuilder_.setMessage(value); + } bitField0_ |= 0x00000004; onChanged(); return this; @@ -742,15 +807,108 @@ public Builder setActive(boolean value) { * active by default until explicitly deactivated * * - * bool active = 3 [json_name = "active"]; - * @return This builder for chaining. + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; + */ + public Builder setActive( + com.google.protobuf.BoolValue.Builder builderForValue) { + if (activeBuilder_ == null) { + active_ = builderForValue.build(); + } else { + activeBuilder_.setMessage(builderForValue.build()); + } + bitField0_ |= 0x00000004; + onChanged(); + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; + */ + public Builder mergeActive(com.google.protobuf.BoolValue value) { + if (activeBuilder_ == null) { + if (((bitField0_ & 0x00000004) != 0) && + active_ != null && + active_ != com.google.protobuf.BoolValue.getDefaultInstance()) { + getActiveBuilder().mergeFrom(value); + } else { + active_ = value; + } + } else { + activeBuilder_.mergeFrom(value); + } + if (active_ != null) { + bitField0_ |= 0x00000004; + onChanged(); + } + return this; + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; */ public Builder clearActive() { bitField0_ = (bitField0_ & ~0x00000004); - active_ = false; + active_ = null; + if (activeBuilder_ != null) { + activeBuilder_.dispose(); + activeBuilder_ = null; + } onChanged(); return this; } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; + */ + public com.google.protobuf.BoolValue.Builder getActiveBuilder() { + bitField0_ |= 0x00000004; + onChanged(); + return getActiveFieldBuilder().getBuilder(); + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; + */ + public com.google.protobuf.BoolValueOrBuilder getActiveOrBuilder() { + if (activeBuilder_ != null) { + return activeBuilder_.getMessageOrBuilder(); + } else { + return active_ == null ? + com.google.protobuf.BoolValue.getDefaultInstance() : active_; + } + } + /** + *
    +     * active by default until explicitly deactivated
    +     * 
    + * + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder> + getActiveFieldBuilder() { + if (activeBuilder_ == null) { + activeBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.google.protobuf.BoolValue, com.google.protobuf.BoolValue.Builder, com.google.protobuf.BoolValueOrBuilder>( + getActive(), + getParentForChildren(), + isClean()); + active_ = null; + } + return activeBuilder_; + } @java.lang.Override public final Builder setUnknownFields( final com.google.protobuf.UnknownFieldSet unknownFields) { diff --git a/sdkjava/com/namespaces/NamespaceOrBuilder.java b/sdkjava/com/namespaces/NamespaceOrBuilder.java index d9389cdc88..a88a8e37e9 100644 --- a/sdkjava/com/namespaces/NamespaceOrBuilder.java +++ b/sdkjava/com/namespaces/NamespaceOrBuilder.java @@ -53,8 +53,25 @@ public interface NamespaceOrBuilder extends * active by default until explicitly deactivated * * - * bool active = 3 [json_name = "active"]; + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; + * @return Whether the active field is set. + */ + boolean hasActive(); + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; * @return The active. */ - boolean getActive(); + com.google.protobuf.BoolValue getActive(); + /** + *
    +   * active by default until explicitly deactivated
    +   * 
    + * + * .google.protobuf.BoolValue active = 3 [json_name = "active"]; + */ + com.google.protobuf.BoolValueOrBuilder getActiveOrBuilder(); } diff --git a/sdkjava/com/namespaces/NamespacesProto.java b/sdkjava/com/namespaces/NamespacesProto.java index 917903ca67..cb63e79a3d 100644 --- a/sdkjava/com/namespaces/NamespacesProto.java +++ b/sdkjava/com/namespaces/NamespacesProto.java @@ -81,64 +81,67 @@ public static void registerAllExtensions( java.lang.String[] descriptorData = { "\n\033namespaces/namespaces.proto\022\nnamespace" + "s\032\033buf/validate/validate.proto\032\034google/a" + - "pi/annotations.proto\032\023common/common.prot" + - "o\"\255\004\n\tNamespace\022\016\n\002id\030\001 \001(\tR\002id\022\367\003\n\004name" + - "\030\002 \001(\tB\342\003\272H\336\003r\003\030\375\001\272\001\322\003\n\020namespace_format" + - "\022\352\002Namespace must be a valid hostname. I" + - "t should include at least one dot, with " + - "each segment (label) starting and ending" + - " with an alphanumeric character. Each la" + - "bel must be 1 to 63 characters long, all" + - "owing hyphens but not as the first or la" + - "st character. The top-level domain (the " + - "last segment after the final dot) must c" + - "onsist of at least two alphabetic charac" + - "ters.\032Qthis.matches(\'^([a-zA-Z0-9]([a-zA" + - "-Z0-9\\\\-]{0,61}[a-zA-Z0-9])?\\\\.)+[a-zA-Z" + - "]{2,}$\')\310\001\001R\004name\022\026\n\006active\030\003 \001(\010R\006activ" + - "e\"-\n\023GetNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H" + - "\003\310\001\001R\002id\"K\n\024GetNamespaceResponse\0223\n\tname" + - "space\030\001 \001(\0132\025.namespaces.NamespaceR\tname" + - "space\"F\n\025ListNamespacesRequest\022-\n\005state\030" + - "\001 \001(\0162\027.common.ActiveStateEnumR\005state\"O\n" + - "\026ListNamespacesResponse\0225\n\nnamespaces\030\001 " + - "\003(\0132\025.namespaces.NamespaceR\nnamespaces\"4" + - "\n\026CreateNamespaceRequest\022\032\n\004name\030\001 \001(\tB\006" + - "\272H\003\310\001\001R\004name\"N\n\027CreateNamespaceResponse\022" + - "3\n\tnamespace\030\001 \001(\0132\025.namespaces.Namespac" + - "eR\tnamespace\"L\n\026UpdateNamespaceRequest\022\026" + - "\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\022\032\n\004name\030\002 \001(\tB\006\272H" + - "\003\310\001\001R\004name\"N\n\027UpdateNamespaceResponse\0223\n" + - "\tnamespace\030\001 \001(\0132\025.namespaces.NamespaceR" + - "\tnamespace\"4\n\032DeactivateNamespaceRequest" + - "\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"\035\n\033DeactivateNa" + - "mespaceResponse2\216\005\n\020NamespaceService\022v\n\014" + - "GetNamespace\022\037.namespaces.GetNamespaceRe" + - "quest\032 .namespaces.GetNamespaceResponse\"" + - "#\202\323\344\223\002\035\022\033/attributes/namespaces/{id}\022w\n\016" + - "ListNamespaces\022!.namespaces.ListNamespac" + - "esRequest\032\".namespaces.ListNamespacesRes" + - "ponse\"\036\202\323\344\223\002\030\022\026/attributes/namespaces\022z\n" + - "\017CreateNamespace\022\".namespaces.CreateName" + - "spaceRequest\032#.namespaces.CreateNamespac" + - "eResponse\"\036\202\323\344\223\002\030\"\026/attributes/namespace" + - "s\022\177\n\017UpdateNamespace\022\".namespaces.Update" + - "NamespaceRequest\032#.namespaces.UpdateName" + - "spaceResponse\"#\202\323\344\223\002\035\032\033/attributes/names" + - "paces/{id}\022\213\001\n\023DeactivateNamespace\022&.nam" + - "espaces.DeactivateNamespaceRequest\032\'.nam" + - "espaces.DeactivateNamespaceResponse\"#\202\323\344" + - "\223\002\035*\033/attributes/namespaces/{id}B\233\001\n\016com" + - ".namespacesB\017NamespacesProtoP\001Z0github.c" + - "om/opentdf/opentdf-v2-poc/sdk/namespaces" + - "\242\002\003NXX\252\002\nNamespaces\312\002\nNamespaces\342\002\026Names" + - "paces\\GPBMetadata\352\002\nNamespacesb\006proto3" + "pi/annotations.proto\032\036google/protobuf/wr" + + "appers.proto\032\023common/common.proto\"\311\004\n\tNa" + + "mespace\022\016\n\002id\030\001 \001(\tR\002id\022\367\003\n\004name\030\002 \001(\tB\342" + + "\003\272H\336\003r\003\030\375\001\272\001\322\003\n\020namespace_format\022\352\002Names" + + "pace must be a valid hostname. It should" + + " include at least one dot, with each seg" + + "ment (label) starting and ending with an" + + " alphanumeric character. Each label must" + + " be 1 to 63 characters long, allowing hy" + + "phens but not as the first or last chara" + + "cter. The top-level domain (the last seg" + + "ment after the final dot) must consist o" + + "f at least two alphabetic characters.\032Qt" + + "his.matches(\'^([a-zA-Z0-9]([a-zA-Z0-9\\\\-" + + "]{0,61}[a-zA-Z0-9])?\\\\.)+[a-zA-Z]{2,}$\')" + + "\310\001\001R\004name\0222\n\006active\030\003 \001(\0132\032.google.proto" + + "buf.BoolValueR\006active\"-\n\023GetNamespaceReq" + + "uest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002id\"K\n\024GetNames" + + "paceResponse\0223\n\tnamespace\030\001 \001(\0132\025.namesp" + + "aces.NamespaceR\tnamespace\"F\n\025ListNamespa" + + "cesRequest\022-\n\005state\030\001 \001(\0162\027.common.Activ" + + "eStateEnumR\005state\"O\n\026ListNamespacesRespo" + + "nse\0225\n\nnamespaces\030\001 \003(\0132\025.namespaces.Nam" + + "espaceR\nnamespaces\"4\n\026CreateNamespaceReq" + + "uest\022\032\n\004name\030\001 \001(\tB\006\272H\003\310\001\001R\004name\"N\n\027Crea" + + "teNamespaceResponse\0223\n\tnamespace\030\001 \001(\0132\025" + + ".namespaces.NamespaceR\tnamespace\"L\n\026Upda" + + "teNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001R\002" + + "id\022\032\n\004name\030\002 \001(\tB\006\272H\003\310\001\001R\004name\"N\n\027Update" + + "NamespaceResponse\0223\n\tnamespace\030\001 \001(\0132\025.n" + + "amespaces.NamespaceR\tnamespace\"4\n\032Deacti" + + "vateNamespaceRequest\022\026\n\002id\030\001 \001(\tB\006\272H\003\310\001\001" + + "R\002id\"\035\n\033DeactivateNamespaceResponse2\216\005\n\020" + + "NamespaceService\022v\n\014GetNamespace\022\037.names" + + "paces.GetNamespaceRequest\032 .namespaces.G" + + "etNamespaceResponse\"#\202\323\344\223\002\035\022\033/attributes" + + "/namespaces/{id}\022w\n\016ListNamespaces\022!.nam" + + "espaces.ListNamespacesRequest\032\".namespac" + + "es.ListNamespacesResponse\"\036\202\323\344\223\002\030\022\026/attr" + + "ibutes/namespaces\022z\n\017CreateNamespace\022\".n" + + "amespaces.CreateNamespaceRequest\032#.names" + + "paces.CreateNamespaceResponse\"\036\202\323\344\223\002\030\"\026/" + + "attributes/namespaces\022\177\n\017UpdateNamespace" + + "\022\".namespaces.UpdateNamespaceRequest\032#.n" + + "amespaces.UpdateNamespaceResponse\"#\202\323\344\223\002" + + "\035\032\033/attributes/namespaces/{id}\022\213\001\n\023Deact" + + "ivateNamespace\022&.namespaces.DeactivateNa" + + "mespaceRequest\032\'.namespaces.DeactivateNa" + + "mespaceResponse\"#\202\323\344\223\002\035*\033/attributes/nam" + + "espaces/{id}B\233\001\n\016com.namespacesB\017Namespa" + + "cesProtoP\001Z0github.com/opentdf/opentdf-v" + + "2-poc/sdk/namespaces\242\002\003NXX\252\002\nNamespaces\312" + + "\002\nNamespaces\342\002\026Namespaces\\GPBMetadata\352\002\n" + + "Namespacesb\006proto3" }; descriptor = com.google.protobuf.Descriptors.FileDescriptor .internalBuildGeneratedFileFrom(descriptorData, new com.google.protobuf.Descriptors.FileDescriptor[] { com.buf.validate.ValidateProto.getDescriptor(), com.google.api.AnnotationsProto.getDescriptor(), + com.google.protobuf.WrappersProto.getDescriptor(), com.common.CommonProto.getDescriptor(), }); internal_static_namespaces_Namespace_descriptor = @@ -215,6 +218,7 @@ public static void registerAllExtensions( .internalUpdateFileDescriptor(descriptor, registry); com.buf.validate.ValidateProto.getDescriptor(); com.google.api.AnnotationsProto.getDescriptor(); + com.google.protobuf.WrappersProto.getDescriptor(); com.common.CommonProto.getDescriptor(); } diff --git a/services/namespaces/namespaces.go b/services/namespaces/namespaces.go index f4971c83cb..da5730cb4e 100644 --- a/services/namespaces/namespaces.go +++ b/services/namespaces/namespaces.go @@ -55,7 +55,6 @@ func (ns NamespacesService) GetNamespace(ctx context.Context, req *namespaces.Ge return nil, services.HandleError(err, services.ErrGetRetrievalFailed, "id", req.Id) } - slog.Debug("got namespace", slog.String("id", req.Id)) rsp.Namespace = namespace return rsp, nil From 388d6ebd73c872c6c96275521483fbebd9b8b089 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 16:47:44 -0500 Subject: [PATCH 27/28] consume wrapper type for active state --- internal/db/attribute_values.go | 5 +++-- internal/db/attributes.go | 7 ++++--- internal/db/namespaces.go | 5 ++++- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/internal/db/attribute_values.go b/internal/db/attribute_values.go index 05fa40269d..7e5b45b25b 100644 --- a/internal/db/attribute_values.go +++ b/internal/db/attribute_values.go @@ -8,6 +8,7 @@ import ( "github.com/opentdf/opentdf-v2-poc/sdk/attributes" "github.com/opentdf/opentdf-v2-poc/sdk/common" "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/types/known/wrapperspb" ) var AttributeValueTable = tableName(TableAttributeValues) @@ -39,7 +40,7 @@ func attributeValueHydrateItem(row pgx.Row) (*attributes.Value, error) { Members: members, Metadata: m, AttributeId: attributeId, - Active: isActive, + Active: &wrapperspb.BoolValue{Value: isActive}, } return v, nil } @@ -101,7 +102,7 @@ func (c Client) CreateAttributeValue(ctx context.Context, attributeId string, v Value: v.Value, Members: v.Members, Metadata: metadata, - Active: true, + Active: &wrapperspb.BoolValue{Value: true}, } return rV, nil } diff --git a/internal/db/attributes.go b/internal/db/attributes.go index 02e2f06c32..5c2830d17a 100644 --- a/internal/db/attributes.go +++ b/internal/db/attributes.go @@ -15,6 +15,7 @@ import ( "github.com/opentdf/opentdf-v2-poc/sdk/kasregistry" "github.com/opentdf/opentdf-v2-poc/sdk/namespaces" "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/types/known/wrapperspb" ) var ( @@ -135,7 +136,7 @@ func attributesHydrateItem(row pgx.Row) (*attributes.Attribute, error) { Id: id, Name: name, Rule: attributesRuleTypeEnumTransformOut(rule), - Active: isActive, + Active: &wrapperspb.BoolValue{Value: isActive}, Metadata: m, Values: v, Namespace: &namespaces.Namespace{Id: namespaceId, Name: namespaceName}, @@ -173,7 +174,7 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) { Id: namespaceId, Name: namespaceName, }, - Active: isActive, + Active: &wrapperspb.BoolValue{Value: isActive}, } if metadataJson != nil { @@ -313,7 +314,7 @@ func (c Client) CreateAttribute(ctx context.Context, attr *attributes.AttributeC Namespace: &namespaces.Namespace{ Id: attr.NamespaceId, }, - Active: true, + Active: &wrapperspb.BoolValue{Value: true}, } return a, nil } diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go index 10d1b6ebf3..93991dbb7d 100644 --- a/internal/db/namespaces.go +++ b/internal/db/namespaces.go @@ -5,6 +5,7 @@ import ( sq "github.com/Masterminds/squirrel" "github.com/opentdf/opentdf-v2-poc/sdk/namespaces" + "google.golang.org/protobuf/types/known/wrapperspb" ) func getNamespaceSql(id string) (string, []interface{}, error) { @@ -28,9 +29,11 @@ func (c Client) GetNamespace(ctx context.Context, id string) (*namespaces.Namesp } var namespace namespaces.Namespace - if err := row.Scan(&namespace.Id, &namespace.Name, &namespace.Active); err != nil { + var isActive bool + if err := row.Scan(&namespace.Id, &namespace.Name, &isActive); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } + namespace.Active = &wrapperspb.BoolValue{Value: isActive} return &namespace, nil } From 29050539e7d87868a2f06c1d7bc3074916d50da5 Mon Sep 17 00:00:00 2001 From: jakedoublev Date: Fri, 16 Feb 2024 17:00:18 -0500 Subject: [PATCH 28/28] fix tests to account for new bool wrapper and make sure to scan into bool variable and not the wrapper type --- integration/attribute_values_test.go | 10 +++++----- integration/attributes_test.go | 10 +++++----- integration/namespaces_test.go | 8 ++++---- internal/db/namespaces.go | 4 +++- 4 files changed, 17 insertions(+), 15 deletions(-) diff --git a/integration/attribute_values_test.go b/integration/attribute_values_test.go index 303e09381e..9381b8151f 100644 --- a/integration/attribute_values_test.go +++ b/integration/attribute_values_test.go @@ -97,7 +97,7 @@ func (s *AttributeValuesSuite) Test_CreateAttributeValue_SetsActiveStateTrueByDe createdValue, err := s.db.Client.CreateAttributeValue(s.ctx, attrDef.Id, value) assert.Nil(s.T(), err) assert.NotNil(s.T(), createdValue) - assert.Equal(s.T(), true, createdValue.Active) + assert.Equal(s.T(), true, createdValue.Active.Value) } func (s *AttributeValuesSuite) Test_GetAttributeValue_Deactivated_Succeeds() { @@ -109,7 +109,7 @@ func (s *AttributeValuesSuite) Test_GetAttributeValue_Deactivated_Succeeds() { assert.Equal(s.T(), inactive.Id, got.Id) assert.Equal(s.T(), inactive.Value, got.Value) assert.Equal(s.T(), len(inactive.Members), len(got.Members)) - assert.Equal(s.T(), false, got.Active) + assert.Equal(s.T(), false, got.Active.Value) } func (s *AttributeValuesSuite) Test_CreateAttributeValue_NoMembers_Succeeds() { @@ -415,19 +415,19 @@ func (s *AttributeValuesSuite) Test_DeactivateAttributeValue_Get() { gotNs, err := s.db.Client.GetNamespace(s.ctx, stillActiveNsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNs) - assert.Equal(s.T(), true, gotNs.Active) + assert.Equal(s.T(), true, gotNs.Active.Value) // attribute is still active (not bubbled up) gotAttr, err := s.db.Client.GetAttribute(s.ctx, stillActiveAttributeId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotAttr) - assert.Equal(s.T(), true, gotAttr.Active) + assert.Equal(s.T(), true, gotAttr.Active.Value) // value was deactivated gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotVal) - assert.Equal(s.T(), false, gotVal.Active) + assert.Equal(s.T(), false, gotVal.Active.Value) } func (s *AttributeValuesSuite) Test_AssignKeyAccessServerToValue_Returns_Error_When_Value_Not_Found() { diff --git a/integration/attributes_test.go b/integration/attributes_test.go index 5964f6520d..8b1bcdce7f 100644 --- a/integration/attributes_test.go +++ b/integration/attributes_test.go @@ -94,7 +94,7 @@ func (s *AttributesSuite) Test_CreateAttribute_SetsActiveStateTrueByDefault() { createdAttr, err := s.db.Client.CreateAttribute(s.ctx, attr) assert.Nil(s.T(), err) assert.NotNil(s.T(), createdAttr) - assert.Equal(s.T(), true, createdAttr.Active) + assert.Equal(s.T(), true, createdAttr.Active.Value) } func (s *AttributesSuite) Test_CreateAttribute_WithInvalidNamespaceFails() { @@ -202,7 +202,7 @@ func (s *AttributesSuite) Test_GetAttribute_Deactivated_Succeeds() { assert.NotNil(s.T(), gotAttr) assert.Equal(s.T(), deactivated.Id, gotAttr.Id) assert.Equal(s.T(), deactivated.Name, gotAttr.Name) - assert.Equal(s.T(), false, gotAttr.Active) + assert.Equal(s.T(), false, gotAttr.Active.Value) } func (s *AttributesSuite) Test_ListAttribute() { @@ -494,19 +494,19 @@ func (s *AttributesSuite) Test_DeactivateAttribute_Cascades_ToValues_Get() { gotNs, err := s.db.Client.GetNamespace(s.ctx, stillActiveNsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNs) - assert.Equal(s.T(), true, gotNs.Active) + assert.Equal(s.T(), true, gotNs.Active.Value) // ensure the attribute has state inactive gotAttr, err := s.db.Client.GetAttribute(s.ctx, deactivatedAttrId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotAttr) - assert.Equal(s.T(), false, gotAttr.Active) + assert.Equal(s.T(), false, gotAttr.Active.Value) // ensure the value has state inactive gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotVal) - assert.Equal(s.T(), false, gotVal.Active) + assert.Equal(s.T(), false, gotVal.Active.Value) } func (s *AttributesSuite) Test_AssignKeyAccessServerToAttribute_Returns_Error_When_Attribute_Not_Found() { diff --git a/integration/namespaces_test.go b/integration/namespaces_test.go index 4ce80d5d9a..01809f8b82 100644 --- a/integration/namespaces_test.go +++ b/integration/namespaces_test.go @@ -203,7 +203,7 @@ func (s *NamespacesSuite) Test_DeactivateNamespace() { assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNamespace) assert.Equal(s.T(), id, gotNamespace.Id) - assert.Equal(s.T(), false, gotNamespace.Active) + assert.Equal(s.T(), false, gotNamespace.Active.Value) } // reusable setup for creating a namespace -> attr -> value and then deactivating the namespace (cascades down) @@ -353,19 +353,19 @@ func (s *NamespacesSuite) Test_DeactivateNamespace_Cascades_ToAttributesAndValue gotNs, err := s.db.Client.GetNamespace(s.ctx, deactivatedNsId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotNs) - assert.Equal(s.T(), false, gotNs.Active) + assert.Equal(s.T(), false, gotNs.Active.Value) // ensure the attribute has state inactive gotAttr, err := s.db.Client.GetAttribute(s.ctx, deactivatedAttrId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotAttr) - assert.Equal(s.T(), false, gotAttr.Active) + assert.Equal(s.T(), false, gotAttr.Active.Value) // ensure the value has state inactive gotVal, err := s.db.Client.GetAttributeValue(s.ctx, deactivatedAttrValueId) assert.Nil(s.T(), err) assert.NotNil(s.T(), gotVal) - assert.Equal(s.T(), false, gotVal.Active) + assert.Equal(s.T(), false, gotVal.Active.Value) } func (s *NamespacesSuite) Test_DeleteNamespace_DoesNotExist_ShouldFail() { diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go index 93991dbb7d..17d0db93ab 100644 --- a/internal/db/namespaces.go +++ b/internal/db/namespaces.go @@ -65,9 +65,11 @@ func (c Client) ListNamespaces(ctx context.Context, state string) ([]*namespaces for rows.Next() { var namespace namespaces.Namespace - if err := rows.Scan(&namespace.Id, &namespace.Name, &namespace.Active); err != nil { + var isActive bool + if err := rows.Scan(&namespace.Id, &namespace.Name, &isActive); err != nil { return nil, WrapIfKnownInvalidQueryErr(err) } + namespace.Active = &wrapperspb.BoolValue{Value: isActive} namespacesList = append(namespacesList, &namespace) }
    STATE_TYPE_ENUM_UNSPECIFIEDACTIVE_STATE_ENUM_UNSPECIFIED 0

    STATE_TYPE_ENUM_ACTIVEACTIVE_STATE_ENUM_ACTIVE 1

    STATE_TYPE_ENUM_INACTIVEACTIVE_STATE_ENUM_INACTIVE 2

    STATE_TYPE_ENUM_ANYACTIVE_STATE_ENUM_ANY 3

    statecommon.StateTypeEnumcommon.ActiveStateEnum

    ACTIVE by default when not specified

    statecommon.StateTypeEnumcommon.ActiveStateEnum

    active by default until explicitly deactivated

    statecommon.StateTypeEnumcommon.ActiveStateEnum

    active by default until explicitly deactivated

    statecommon.StateTypeEnumcommon.ActiveStateEnum

    ACTIVE by default when not specified

    statecommon.StateTypeEnumcommon.ActiveStateEnum

    ACTIVE by default when not specified

    statecommon.StateTypeEnumcommon.ActiveStateEnum

    active by default until explicitly deactivated

    statecommon.ActiveStateEnumactivebool

    active by default until explicitly deactivated

    statecommon.ActiveStateEnumactivebool

    active by default until explicitly deactivated

    statecommon.ActiveStateEnumactivebool

    active by default until explicitly deactivated

    Request: grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace Response: -{ "namespace": { "id": "namespace-id" } }

    activeboolgoogle.protobuf.BoolValue

    active by default until explicitly deactivated

    activeboolgoogle.protobuf.BoolValue

    active by default until explicitly deactivated

    activeboolgoogle.protobuf.BoolValue

    active by default until explicitly deactivated