diff --git a/docs/grpc/index.html b/docs/grpc/index.html
index 5d44d2d24b..55bab862d4 100644
--- a/docs/grpc/index.html
+++ b/docs/grpc/index.html
@@ -195,6 +195,10 @@
@@ -834,6 +838,41 @@ MetadataMutable.LabelsEntry
+ 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
+
+
+ | Name | Number | Description |
+
+
+
+
+ | ACTIVE_STATE_ENUM_UNSPECIFIED |
+ 0 |
+ |
+
+
+
+ | ACTIVE_STATE_ENUM_ACTIVE |
+ 1 |
+ |
+
+
+
+ | ACTIVE_STATE_ENUM_INACTIVE |
+ 2 |
+ |
+
+
+
+ | ACTIVE_STATE_ENUM_ANY |
+ 3 |
+ |
+
+
+
+
+
@@ -1527,7 +1566,7 @@ CreateNamespaceResponse
- DeleteNamespaceRequest
+ DeactivateNamespaceRequest
@@ -1551,7 +1590,7 @@ DeleteNamespaceRequest
- DeleteNamespaceResponse
+ DeactivateNamespaceResponse
@@ -1610,6 +1649,23 @@ ListNamespacesRequest
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | state |
+ common.ActiveStateEnum |
+ |
+ ACTIVE by default when not specified |
+
+
+
+
+
+
@@ -1661,6 +1717,13 @@ Namespace
used to partition Attribute Definitions, support by namespace AuthN and enable federation |
+
+ | active |
+ google.protobuf.BoolValue |
+ |
+ active by default until explicitly deactivated |
+
+
@@ -1741,21 +1804,45 @@ NamespaceService
GetNamespace |
GetNamespaceRequest |
GetNamespaceResponse |
- |
+ Request:
+grpcurl -plaintext -d '{"id": "namespace-id"}' localhost:9000 namespaces.NamespaceService/GetNamespace
+Response:
+{
+"namespace": {
+"id": "namespace-id",
+"name": "namespace-name",
+"active": true
+}
+} |
| ListNamespaces |
ListNamespacesRequest |
ListNamespacesResponse |
- |
+ 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",
+"active": true
+}
+]
+} |
| CreateNamespace |
CreateNamespaceRequest |
CreateNamespaceResponse |
- |
+ Request:
+grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace
+Response:
+{ "namespace": { "id": "namespace-id", "active": true } } |
@@ -1766,9 +1853,9 @@ NamespaceService
- | DeleteNamespace |
- DeleteNamespaceRequest |
- DeleteNamespaceResponse |
+ DeactivateNamespace |
+ DeactivateNamespaceRequest |
+ DeactivateNamespaceResponse |
|
@@ -1833,7 +1920,7 @@ Methods with HTTP bindings
- | DeleteNamespace |
+ DeactivateNamespace |
DELETE |
/attributes/namespaces/{id} |
|
@@ -2007,6 +2094,13 @@ Attribute
|
+
+ | active |
+ google.protobuf.BoolValue |
+ |
+ active by default until explicitly deactivated |
+
+
@@ -2200,7 +2294,7 @@ CreateAttributeValueResponseDeleteAttributeRequest
+ DeactivateAttributeRequest
@@ -2224,7 +2318,7 @@ DeleteAttributeRequest
- DeleteAttributeResponse
+ DeactivateAttributeResponse
@@ -2248,7 +2342,7 @@ DeleteAttributeResponse
- DeleteAttributeValueRequest
+ DeactivateAttributeValueRequest
@@ -2272,7 +2366,7 @@ DeleteAttributeValueRequest
- DeleteAttributeValueResponse
+ DeactivateAttributeValueResponse
@@ -2409,6 +2503,13 @@ ListAttributeValuesRequest
|
+
+ | state |
+ common.ActiveStateEnum |
+ |
+ ACTIVE by default when not specified |
+
+
@@ -2444,6 +2545,23 @@ ListAttributesRequest
+
+
+ | Field | Type | Label | Description |
+
+
+
+
+ | state |
+ common.ActiveStateEnum |
+ |
+ ACTIVE by default when not specified |
+
+
+
+
+
+
@@ -2736,6 +2854,13 @@ Value
list of key access servers |
+
+ | active |
+ google.protobuf.BoolValue |
+ |
+ active by default until explicitly deactivated |
+
+
@@ -2865,62 +2990,61 @@ AttributesService
ListAttributes |
ListAttributesRequest |
ListAttributesResponse |
- 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": [
{
-"members": [],
+"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": "bb50eaac-0d95-4f28-9a36-9bbf412a7b95",
-"metadata": null,
-"uri": "kas10",
-"public_key": {
-"remote": "https://example.com/kas"
-}
+"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",
}
],
-"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",
+"id": "key_access_server_id",
"metadata": {
-"labels": [],
-"created_at": {
-"seconds": "1706878441",
-"nanos": 147178000
-},
-"updated_at": {
-"seconds": "1706878441",
-"nanos": 147178000
-},
-"description": ""
+"created_at": "2021-01-01T00:00:00Z",
+"updated_at": "2021-01-01T00:00:00Z"
},
-"namespace": {
-"id": "c85d126a-c2f2-4bb6-bc6d-a513015363cb",
-"name": "demo.com"
-},
-"name": "test",
-"rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"
+"name": "key_access_server_name",
+"description": "key_access_server_description",
+}
+],
+"active": true
}
]
} |
@@ -2931,8 +3055,39 @@ AttributesService
ListAttributeValuesRequest |
ListAttributeValuesResponse |
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 ...
+}
+],
+"active": true
+}
+]
+}
@@ -2947,8 +3102,24 @@ AttributesService
CreateAttributeRequest |
CreateAttributeResponse |
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",
+"active": true
+}
+}
@@ -2959,9 +3130,9 @@ AttributesService
- | DeleteAttribute |
- DeleteAttributeRequest |
- DeleteAttributeResponse |
+ DeactivateAttribute |
+ DeactivateAttributeRequest |
+ DeactivateAttributeResponse |
|
@@ -2978,7 +3149,7 @@ AttributesService
CreateAttributeValueResponse |
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
@@ -2989,9 +3160,9 @@ AttributesService
- | DeleteAttributeValue |
- DeleteAttributeValueRequest |
- DeleteAttributeValueResponse |
+ DeactivateAttributeValue |
+ DeactivateAttributeValueRequest |
+ DeactivateAttributeValueResponse |
|
@@ -3136,7 +3307,7 @@ Methods with HTTP bindings
- | DeleteAttribute |
+ DeactivateAttribute |
DELETE |
/attributes/{id} |
|
@@ -3176,7 +3347,7 @@ Methods with HTTP bindings
- | DeleteAttributeValue |
+ DeactivateAttributeValue |
DELETE |
/attributes/_/values/{id} |
|
diff --git a/docs/openapi/attributes/attributes.swagger.json b/docs/openapi/attributes/attributes.swagger.json
index 7eaf3a3d5c..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\nExample:\n grpcurl -plaintext -d '{\"attribute\": {\"namespace_id\": \"namespace_id\", \"name\": \"attribute_name\", \"rule\": \"ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF\"}}' localhost:8080 attributes.AttributesService/CreateAttribute",
+ "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": {
@@ -80,12 +80,12 @@
]
},
"delete": {
- "operationId": "AttributesService_DeleteAttributeValue",
+ "operationId": "AttributesService_DeactivateAttributeValue",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
- "$ref": "#/definitions/attributesDeleteAttributeValueResponse"
+ "$ref": "#/definitions/attributesDeactivateAttributeValueResponse"
}
},
"default": {
@@ -246,7 +246,7 @@
},
"/attributes/{attributeId}/values": {
"post": {
- "summary": "Create Attribute Value\nExample:\n grpcurl -plaintext -d '{\"attribute_id\": \"attribute_id\", \"value\": {\"value\": \"value\"}}' localhost:8080 attributes.AttributesService/CreateValue",
+ "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": {
@@ -357,12 +357,12 @@
]
},
"delete": {
- "operationId": "AttributesService_DeleteAttribute",
+ "operationId": "AttributesService_DeactivateAttribute",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
- "$ref": "#/definitions/attributesDeleteAttributeResponse"
+ "$ref": "#/definitions/attributesDeactivateAttributeResponse"
}
},
"default": {
@@ -474,6 +474,10 @@
"type": "object",
"$ref": "#/definitions/kasregistryKeyAccessServer"
}
+ },
+ "active": {
+ "type": "boolean",
+ "title": "active by default until explicitly deactivated"
}
}
},
@@ -544,7 +548,7 @@
}
}
},
- "attributesDeleteAttributeResponse": {
+ "attributesDeactivateAttributeResponse": {
"type": "object",
"properties": {
"attribute": {
@@ -552,7 +556,7 @@
}
}
},
- "attributesDeleteAttributeValueResponse": {
+ "attributesDeactivateAttributeValueResponse": {
"type": "object",
"properties": {
"value": {
@@ -662,6 +666,10 @@
"$ref": "#/definitions/kasregistryKeyAccessServer"
},
"title": "list of key access servers"
+ },
+ "active": {
+ "type": "boolean",
+ "title": "active by default until explicitly deactivated"
}
}
},
@@ -694,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": {
@@ -779,6 +798,10 @@
"name": {
"type": "string",
"title": "used to partition Attribute Definitions, support by namespace AuthN and enable federation"
+ },
+ "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 e163eb42fd..0ef06cd25e 100644
--- a/docs/openapi/namespaces/namespaces.swagger.json
+++ b/docs/openapi/namespaces/namespaces.swagger.json
@@ -18,6 +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\"active\": true\n}\n]\n}",
"operationId": "NamespaceService_ListNamespaces",
"responses": {
"200": {
@@ -33,11 +34,28 @@
}
}
},
+ "parameters": [
+ {
+ "name": "state",
+ "description": "ACTIVE by default when not specified",
+ "in": "query",
+ "required": false,
+ "type": "string",
+ "enum": [
+ "ACTIVE_STATE_ENUM_UNSPECIFIED",
+ "ACTIVE_STATE_ENUM_ACTIVE",
+ "ACTIVE_STATE_ENUM_INACTIVE",
+ "ACTIVE_STATE_ENUM_ANY"
+ ],
+ "default": "ACTIVE_STATE_ENUM_UNSPECIFIED"
+ }
+ ],
"tags": [
"NamespaceService"
]
},
"post": {
+ "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": {
@@ -68,6 +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\"active\": true\n}\n}",
"operationId": "NamespaceService_GetNamespace",
"responses": {
"200": {
@@ -96,12 +115,12 @@
]
},
"delete": {
- "operationId": "NamespaceService_DeleteNamespace",
+ "operationId": "NamespaceService_DeactivateNamespace",
"responses": {
"200": {
"description": "A successful response.",
"schema": {
- "$ref": "#/definitions/namespacesDeleteNamespaceResponse"
+ "$ref": "#/definitions/namespacesDeactivateNamespaceResponse"
}
},
"default": {
@@ -160,6 +179,17 @@
}
},
"definitions": {
+ "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"
+ },
"namespacesCreateNamespaceResponse": {
"type": "object",
"properties": {
@@ -168,7 +198,7 @@
}
}
},
- "namespacesDeleteNamespaceResponse": {
+ "namespacesDeactivateNamespaceResponse": {
"type": "object"
},
"namespacesGetNamespaceResponse": {
@@ -201,6 +231,10 @@
"name": {
"type": "string",
"title": "used to partition Attribute Definitions, support by namespace AuthN and enable federation"
+ },
+ "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 009941669d..ad354a5960 100644
--- a/docs/openapi/resourcemapping/resource_mapping.swagger.json
+++ b/docs/openapi/resourcemapping/resource_mapping.swagger.json
@@ -204,6 +204,10 @@
"$ref": "#/definitions/kasregistryKeyAccessServer"
},
"title": "list of key access servers"
+ },
+ "active": {
+ "type": "boolean",
+ "title": "active by default until explicitly deactivated"
}
}
},
diff --git a/docs/openapi/subjectmapping/subject_mapping.swagger.json b/docs/openapi/subjectmapping/subject_mapping.swagger.json
index 6fabeefa98..ff1e31b484 100644
--- a/docs/openapi/subjectmapping/subject_mapping.swagger.json
+++ b/docs/openapi/subjectmapping/subject_mapping.swagger.json
@@ -194,6 +194,10 @@
"$ref": "#/definitions/kasregistryKeyAccessServer"
},
"title": "list of key access servers"
+ },
+ "active": {
+ "type": "boolean",
+ "title": "active by default until explicitly deactivated"
}
}
},
diff --git a/integration/attribute_values_test.go b/integration/attribute_values_test.go
index c09464ae2a..9381b8151f 100644
--- a/integration/attribute_values_test.go
+++ b/integration/attribute_values_test.go
@@ -33,6 +33,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() {
@@ -43,7 +44,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)
@@ -87,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(), true, createdValue.Active.Value)
+}
+
+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(), false, got.Active.Value)
+}
+
func (s *AttributeValuesSuite) Test_CreateAttributeValue_NoMembers_Succeeds() {
attrDef := fixtures.GetAttributeKey("example.net/attr/attr1")
metadata := &common.MetadataMutable{
@@ -235,6 +260,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
+ }
+
+ listNamespaces := 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
+ }
+
+ listAttributes := 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
+ }
+
+ 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)
+ for _, v := range listedVals {
+ if deactivatedAttrValueId == v.Id {
+ return true
+ }
+ }
+ return false
+ }
+
+ tests := []test{
+ {
+ name: "namespace is NOT found in LIST of INACTIVE",
+ testFunc: listNamespaces,
+ state: db.StateInactive,
+ isFound: false,
+ },
+ {
+ name: "namespace is found when filtering for ACTIVE state",
+ testFunc: listNamespaces,
+ state: db.StateActive,
+ isFound: true,
+ },
+ {
+ name: "namespace is found when filtering for ANY state",
+ testFunc: listNamespaces,
+ state: db.StateAny,
+ isFound: true,
+ },
+ {
+ name: "attribute is NOT found when filtering for INACTIVE state",
+ testFunc: listAttributes,
+ state: db.StateInactive,
+ isFound: false,
+ },
+ {
+ name: "attribute is found when filtering for ANY state",
+ testFunc: listAttributes,
+ state: db.StateAny,
+ isFound: true,
+ },
+ {
+ name: "attribute is found when filtering for ACTIVE state",
+ testFunc: listAttributes,
+ state: db.StateActive,
+ isFound: true,
+ },
+ {
+ name: "value is NOT found in LIST of ACTIVE",
+ testFunc: listValues,
+ state: db.StateActive,
+ isFound: false,
+ },
+ {
+ name: "value is found when filtering for INACTIVE state",
+ testFunc: listValues,
+ state: db.StateInactive,
+ isFound: true,
+ },
+ {
+ name: "value is found when filtering for ANY state",
+ testFunc: listValues,
+ 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() {
+ // 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(), 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.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.Value)
+}
+
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 102aad7bf6..8b1bcdce7f 100644
--- a/integration/attributes_test.go
+++ b/integration/attributes_test.go
@@ -36,6 +36,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() {
@@ -84,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(), true, createdAttr.Active.Value)
+}
+
func (s *AttributesSuite) Test_CreateAttribute_WithInvalidNamespaceFails() {
attr := &attributes.AttributeCreateUpdate{
Name: "test__create_attribute_invalid_namespace",
@@ -182,10 +195,20 @@ 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(), false, gotAttr.Active.Value)
+}
+
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)
@@ -310,6 +333,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
+ }
+
+ listNamespaces := 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
+ }
+
+ listAttributes := 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
+ }
+
+ 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)
+ for _, v := range listedVals {
+ if deactivatedAttrValueId == v.Id {
+ return true
+ }
+ }
+ return false
+ }
+
+ tests := []test{
+ {
+ name: "namespace is NOT found in LIST of INACTIVE",
+ testFunc: listNamespaces,
+ state: db.StateInactive,
+ isFound: false,
+ },
+ {
+ name: "namespace is found when filtering for ACTIVE state",
+ testFunc: listNamespaces,
+ state: db.StateActive,
+ isFound: true,
+ },
+ {
+ name: "namespace is found when filtering for ANY state",
+ testFunc: listNamespaces,
+ state: db.StateAny,
+ isFound: true,
+ },
+ {
+ name: "attribute is found when filtering for INACTIVE state",
+ testFunc: listAttributes,
+ state: db.StateInactive,
+ isFound: true,
+ },
+ {
+ name: "attribute is found when filtering for ANY state",
+ testFunc: listAttributes,
+ state: db.StateAny,
+ isFound: true,
+ },
+ {
+ name: "attribute is NOT found when filtering for ACTIVE state",
+ testFunc: listAttributes,
+ state: db.StateActive,
+ isFound: false,
+ },
+ {
+ name: "value is NOT found in LIST of ACTIVE",
+ testFunc: listValues,
+ state: db.StateActive,
+ isFound: false,
+ },
+ {
+ name: "value is found when filtering for INACTIVE state",
+ testFunc: listValues,
+ state: db.StateInactive,
+ isFound: true,
+ },
+ {
+ name: "value is found when filtering for ANY state",
+ testFunc: listValues,
+ 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(), 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.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.Value)
+}
+
func (s *AttributesSuite) Test_AssignKeyAccessServerToAttribute_Returns_Error_When_Attribute_Not_Found() {
aKas := &attributes.AttributeKeyAccessServer{
AttributeId: nonExistentAttrId,
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 4797237988..c1ee7d86bf 100644
--- a/integration/fixtures.go
+++ b/integration/fixtures.go
@@ -21,8 +21,9 @@ type FixtureMetadata struct {
}
type FixtureDataNamespace struct {
- Id string `yaml:"id"`
- Name string `yaml:"name"`
+ Id string `yaml:"id"`
+ Name string `yaml:"name"`
+ Active bool `yaml:"active"`
}
type FixtureDataAttribute struct {
@@ -30,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 {
@@ -42,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 {
@@ -224,6 +227,7 @@ func (f *Fixtures) provisionNamespace() int64 {
[]string{
f.db.StringWrap(d.Id),
f.db.StringWrap(d.Name),
+ f.db.BoolWrap(d.Active),
},
)
}
@@ -238,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)
@@ -251,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 7039f4bfaf..6676997ef5 100644
--- a/integration/fixtures.yaml
+++ b/integration/fixtures.yaml
@@ -7,16 +7,25 @@ attribute_namespaces:
columns:
- id
- name
+ - active
data:
example.com:
- id: 00000000-0000-0000-0000-000000000000
+ id: 8f1d8839-2851-4bf4-8bf4-5243dbfe517d
name: example.com
+ active: true
example.net:
- id: 00000000-0000-0000-0000-000000000001
+ id: d69cf14d-744b-48cf-aab4-43756e97a8e5
name: example.net
+ active: true
example.org:
- id: 00000000-0000-0000-0000-000000000002
+ id: 0d94e00a-7bd3-4482-afe3-f1e4b03c1353
name: example.org
+ active: true
+ # deactivated state
+ deactivated_ns:
+ id: 40790395-88b1-4adc-8bf5-1900491a79ba
+ name: deactivated.io
+ active: false
##
# Attributes
@@ -31,55 +40,72 @@ attributes:
- namespace_id
- name
- rule
+ - active
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
+ active: true
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
+ active: true
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
+ active: true
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
+ active: true
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
+ active: true
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
+ active: true
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
+ active: true
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
+ 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: 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
@@ -92,44 +118,58 @@ attribute_values:
- attribute_definition_id
- value
- members
+ - active
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
+ active: true
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
+ active: true
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
+ active: true
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
+ active: true
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
+ active: true
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
+ 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: 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 +187,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 +196,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 +218,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 +247,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==
diff --git a/integration/namespaces_test.go b/integration/namespaces_test.go
index 8071b6dae2..01809f8b82 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"
)
@@ -22,6 +23,14 @@ type NamespacesSuite struct {
const nonExistentNamespaceId = "88888888-2222-3333-4444-999999999999"
+var (
+ deactivatedNsId string
+ deactivatedAttrId string
+ deactivatedAttrValueId string
+ stillActiveNsId string
+ stillActiveAttributeId string
+)
+
func (s *NamespacesSuite) SetupSuite() {
slog.Info("setting up db.Namespaces test suite")
s.ctx = context.Background()
@@ -29,6 +38,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() {
@@ -36,7 +46,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 +55,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 +73,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 +89,17 @@ func (s *NamespacesSuite) Test_GetNamespace() {
assert.ErrorIs(s.T(), err, db.ErrNotFound)
}
+func (s *NamespacesSuite) Test_GetNamespace_InactiveState_Succeeds() {
+ inactive := fixtures.GetNamespaceKey("deactivated_ns")
+ // Ensure our fixtures matches expected string enum
+ assert.Equal(s.T(), inactive.Active, false)
+
+ 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,16 +108,16 @@ func (s *NamespacesSuite) Test_GetNamespace_DoesNotExist_ShouldFail() {
}
func (s *NamespacesSuite) Test_ListNamespaces() {
- testData := getNamespaceFixtures()
+ 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))
}
func (s *NamespacesSuite) Test_UpdateNamespace() {
- testData := getNamespaceFixtures()
+ testData := getActiveNamespaceFixtures()
for i, ns := range testData {
updatedName := fmt.Sprintf("%s-updated", ns.Name)
@@ -127,7 +148,7 @@ func (s *NamespacesSuite) Test_UpdateNamespace_DoesNotExist_ShouldFail() {
}
func (s *NamespacesSuite) Test_DeleteNamespace() {
- testData := getNamespaceFixtures()
+ testData := getActiveNamespaceFixtures()
// Deletion should fail when the namespace is referenced as FK in attribute(s)
for _, ns := range testData {
@@ -147,7 +168,7 @@ func (s *NamespacesSuite) Test_DeleteNamespace() {
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 {
@@ -156,14 +177,219 @@ 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_DeactivateNamespace() {
+ id, err := s.db.Client.CreateNamespace(s.ctx, "testing-sdeactivate-namespace.com")
+ assert.Nil(s.T(), err)
+ assert.NotEqual(s.T(), "", id)
+
+ inactive, err := s.db.Client.DeactivateNamespace(s.ctx, id)
+ assert.Nil(s.T(), err)
+ assert.NotNil(s.T(), inactive)
+
+ // 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)
+ for _, ns := range gotNamespaces {
+ assert.NotEqual(s.T(), id, ns.Id)
+ }
+
+ // 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(), false, gotNamespace.Active.Value)
+}
+
+// reusable setup for creating a namespace -> attr -> value and then deactivating the namespace (cascades down)
+func setupCascadeDeactivateNamespace(s *NamespacesSuite) (string, string, string) {
+ // create a namespace
+ nsId, err := s.db.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-deactivate-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-deactivate-value",
+ }
+ createdVal, err := s.db.Client.CreateAttributeValue(s.ctx, createdAttr.Id, val)
+ assert.Nil(s.T(), err)
+ assert.NotNil(s.T(), createdVal)
+
+ // deactivate the namespace
+ deletedNs, err := s.db.Client.DeactivateNamespace(s.ctx, nsId)
+ assert.Nil(s.T(), err)
+ assert.NotNil(s.T(), deletedNs)
+
+ 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
+ }
+
+ listNamespaces := 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
+ }
+
+ listAttributes := 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
+ }
+
+ 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)
+ for _, v := range listedVals {
+ if deactivatedAttrValueId == v.Id {
+ return true
+ }
+ }
+ return false
+ }
+
+ tests := []test{
+ {
+ name: "namespace is NOT found in LIST of ACTIVE",
+ testFunc: listNamespaces,
+ state: db.StateActive,
+ isFound: false,
+ },
+ {
+ name: "namespace is found when filtering for INACTIVE state",
+ testFunc: listNamespaces,
+ state: db.StateInactive,
+ isFound: true,
+ },
+ {
+ name: "namespace is found when filtering for ANY state",
+ testFunc: listNamespaces,
+ state: db.StateAny,
+ isFound: true,
+ },
+ {
+ name: "attribute is found when filtering for INACTIVE state",
+ testFunc: listAttributes,
+ state: db.StateInactive,
+ isFound: true,
+ },
+ {
+ name: "attribute is found when filtering for ANY state",
+ testFunc: listAttributes,
+ state: db.StateAny,
+ isFound: true,
+ },
+ {
+ name: "attribute is NOT found when filtering for ACTIVE state",
+ testFunc: listAttributes,
+ state: db.StateActive,
+ isFound: false,
+ },
+ {
+ name: "value is NOT found in LIST of ACTIVE",
+ testFunc: listValues,
+ state: db.StateActive,
+ isFound: false,
+ },
+ {
+ name: "value is found when filtering for INACTIVE state",
+ testFunc: listValues,
+ state: db.StateInactive,
+ isFound: true,
+ },
+ {
+ name: "value is found when filtering for ANY state",
+ testFunc: listValues,
+ 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 *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(), 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.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.Value)
+}
+
func (s *NamespacesSuite) Test_DeleteNamespace_DoesNotExist_ShouldFail() {
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.DeactivateNamespace(s.ctx, nonExistentNamespaceId)
+ assert.NotNil(s.T(), err)
+ assert.ErrorIs(s.T(), err, db.ErrNotFound)
+ assert.Nil(s.T(), ns)
}
func TestNamespacesSuite(t *testing.T) {
diff --git a/internal/db/attribute_values.go b/internal/db/attribute_values.go
index eb9199213c..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)
@@ -19,8 +20,10 @@ func attributeValueHydrateItem(row pgx.Row) (*attributes.Value, error) {
members []string
metadataJson []byte
attributeId string
+ isActive bool
)
- if err := row.Scan(&id, &value, &members, &metadataJson, &attributeId); err != nil {
+
+ if err := row.Scan(&id, &value, &members, &metadataJson, &attributeId, &isActive); err != nil {
return nil, WrapIfKnownInvalidQueryErr(err)
}
@@ -37,6 +40,7 @@ func attributeValueHydrateItem(row pgx.Row) (*attributes.Value, error) {
Members: members,
Metadata: m,
AttributeId: attributeId,
+ Active: &wrapperspb.BoolValue{Value: isActive},
}
return v, nil
}
@@ -49,7 +53,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 +72,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 {
@@ -96,6 +102,7 @@ func (c Client) CreateAttributeValue(ctx context.Context, attributeId string, v
Value: v.Value,
Members: v.Members,
Metadata: metadata,
+ Active: &wrapperspb.BoolValue{Value: true},
}
return rV, nil
}
@@ -103,16 +110,18 @@ 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"),
+ 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("active"),
).
From(AttributeValueTable).
- Where(sq.Eq{tableField(AttributeValueTable, "id"): id}).
+ Where(sq.Eq{Tables.AttributeValues.Field("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)
@@ -128,21 +137,28 @@ func (c Client) GetAttributeValue(ctx context.Context, id string) (*attributes.V
return v, nil
}
-func listAttributeValuesSql(attribute_id string) (string, []interface{}, error) {
- return newStatementBuilder().
+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"),
+ 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("active"),
).
- From(AttributeValueTable).
- Where(sq.Eq{tableField(AttributeValueTable, "attribute_definition_id"): attribute_id}).
- ToSql()
+ From(AttributeValueTable)
+
+ where := sq.Eq{}
+ if state != StateAny {
+ where[Tables.AttributeValues.Field("active")] = state == StateActive
+ }
+ where[Tables.AttributeValues.Field("attribute_definition_id")] = attribute_id
+ return sb.Where(where).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
@@ -165,7 +181,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 +198,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 +227,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("active", false).
+ Where(sq.Eq{Tables.AttributeValues.Field("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}).
+ Where(sq.Eq{Tables.AttributeValues.Field("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 385bfb7207..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 (
@@ -52,17 +53,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(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("active"),
+ 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("+
@@ -78,9 +80,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",
).
@@ -88,7 +90,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) {
@@ -98,11 +100,12 @@ func attributesHydrateItem(row pgx.Row) (*attributes.Attribute, error) {
rule string
metadataJson []byte
namespaceId string
+ isActive bool
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, &isActive, &namespaceName, &valuesJson, &grants)
if err != nil {
return nil, WrapIfKnownInvalidQueryErr(err)
}
@@ -133,6 +136,7 @@ func attributesHydrateItem(row pgx.Row) (*attributes.Attribute, error) {
Id: id,
Name: name,
Rule: attributesRuleTypeEnumTransformOut(rule),
+ Active: &wrapperspb.BoolValue{Value: isActive},
Metadata: m,
Values: v,
Namespace: &namespaces.Namespace{Id: namespaceId, Name: namespaceName},
@@ -152,11 +156,12 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) {
rule string
metadataJson []byte
namespaceId string
+ isActive bool
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, &isActive, &namespaceName, &valuesJson, &grants)
if err != nil {
return nil, WrapIfKnownInvalidQueryErr(err)
}
@@ -169,6 +174,7 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) {
Id: namespaceId,
Name: namespaceName,
},
+ Active: &wrapperspb.BoolValue{Value: isActive},
}
if metadataJson != nil {
@@ -204,14 +210,17 @@ func attributesHydrateList(rows pgx.Rows) ([]*attributes.Attribute, error) {
// CRUD operations
///
-func listAllAttributesSql() (string, []interface{}, error) {
- return attributesSelect().
- From(AttributeTable).
+func listAllAttributesSql(state string) (string, []interface{}, error) {
+ q := attributesSelect()
+ if state != StateAny {
+ q = q.Where(sq.Eq{Tables.Attributes.Field("active"): state == StateActive})
+ }
+ return q.From(Tables.Attributes.Name()).
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
@@ -229,7 +238,7 @@ func (c Client) ListAllAttributes(ctx context.Context) ([]*attributes.Attribute,
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()
}
@@ -252,7 +261,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()
}
@@ -305,6 +314,7 @@ func (c Client) CreateAttribute(ctx context.Context, attr *attributes.AttributeC
Namespace: &namespaces.Namespace{
Id: attr.NamespaceId,
},
+ Active: &wrapperspb.BoolValue{Value: true},
}
return a, nil
}
@@ -321,7 +331,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()
}
@@ -350,10 +360,28 @@ func (c Client) UpdateAttribute(ctx context.Context, id string, attr *attributes
return a, nil
}
+func deactivateAttributeSql(id string) (string, []interface{}, error) {
+ return newStatementBuilder().
+ Update(Tables.Attributes.Name()).
+ Set("active", false).
+ Where(sq.Eq{Tables.Attributes.Field("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).
- Where(sq.Eq{tableField(AttributeTable, "id"): id}).
+ Where(sq.Eq{Tables.Attributes.Field("id"): id}).
ToSql()
}
diff --git a/internal/db/db.go b/internal/db/db.go
index c09667c27b..0a282e500a 100644
--- a/internal/db/db.go
+++ b/internal/db/db.go
@@ -65,6 +65,13 @@ func (t Table) Field(field string) string {
return t.Name() + "." + field
}
+const (
+ StateInactive = "INACTIVE"
+ StateActive = "ACTIVE"
+ StateAny = "ANY"
+ StateUnspecified = "UNSPECIFIED"
+)
+
// We can rename this but wanted to get mocks working.
type PgxIface interface {
Acquire(ctx context.Context) (*pgxpool.Conn, error)
@@ -195,7 +202,3 @@ func newStatementBuilder() sq.StatementBuilderType {
func tableName(table string) string {
return table
}
-
-func tableField(table string, field string) string {
- return table + "." + field
-}
diff --git a/internal/db/namespaces.go b/internal/db/namespaces.go
index 336afbaa09..17d0db93ab 100644
--- a/internal/db/namespaces.go
+++ b/internal/db/namespaces.go
@@ -5,12 +5,13 @@ 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) {
t := Tables.Namespaces
return newStatementBuilder().
- Select("*").
+ Select(t.Field("id"), t.Field("name"), t.Field("active")).
From(t.Name()).
Where(sq.Eq{t.Field("id"): id}).
ToSql()
@@ -27,26 +28,32 @@ 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
+ 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
+ return &namespace, nil
}
-func listNamespacesSql() (string, []interface{}, error) {
+func listNamespacesSql(state string) (string, []interface{}, error) {
t := Tables.Namespaces
- return newStatementBuilder().
- Select("*").
- From(t.Name()).
- ToSql()
+ sb := newStatementBuilder().
+ Select(t.Field("id"), t.Field("name"), t.Field("active")).
+ From(t.Name())
+
+ if state != StateAny {
+ sb = sb.Where(sq.Eq{t.Field("active"): state == StateActive})
+ }
+ return sb.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()
+ sql, args, err := listNamespacesSql(state)
if err != nil {
return nil, err
}
@@ -58,9 +65,11 @@ func (c Client) ListNamespaces(ctx context.Context) ([]*namespaces.Namespace, er
for rows.Next() {
var namespace namespaces.Namespace
- if err := rows.Scan(&namespace.Id, &namespace.Name); 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)
}
@@ -108,9 +117,28 @@ func (c Client) UpdateNamespace(ctx context.Context, id string, name string) (*n
return c.GetNamespace(ctx, id)
}
+func deactivateNamespaceSql(id string) (string, []interface{}, error) {
+ t := Tables.Namespaces
+ return newStatementBuilder().
+ Update(t.Name()).
+ Set("active", false).
+ 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)
+}
+
func deleteNamespaceSql(id string) (string, []interface{}, error) {
t := Tables.Namespaces
- // TODO: handle delete cascade, dangerous deletion via special rpc, or "soft-delete" status change
+ // 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}).
@@ -129,7 +157,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
}
diff --git a/migrations/20240131000000_diagram.md b/migrations/20240131000000_schema_erd.md
similarity index 98%
rename from migrations/20240131000000_diagram.md
rename to migrations/20240131000000_schema_erd.md
index 4d8737f75d..00efbb7345 100644
--- a/migrations/20240131000000_diagram.md
+++ b/migrations/20240131000000_schema_erd.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
@@ -86,4 +86,4 @@ erDiagram
jsonb public_key
jsonb metadata
}
-```
\ No newline at end of file
+```
diff --git a/migrations/20240212000000_add_active_state_enums.sql b/migrations/20240212000000_add_active_state_enums.sql
new file mode 100644
index 0000000000..bb3fb90cd1
--- /dev/null
+++ b/migrations/20240212000000_add_active_state_enums.sql
@@ -0,0 +1,52 @@
+-- +goose Up
+-- +goose StatementBegin
+
+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_deactivation()
+RETURNS TRIGGER AS $$
+BEGIN
+ 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_active_updated
+ AFTER
+ UPDATE OF active
+ ON attribute_namespaces
+ FOR EACH ROW
+ EXECUTE PROCEDURE cascade_deactivation('attribute_definitions', 'namespace_id');
+
+CREATE TRIGGER attribute_definitions_active_updated
+ AFTER
+ UPDATE OF active
+ ON attribute_definitions
+ FOR EACH ROW
+ EXECUTE PROCEDURE cascade_deactivation('attribute_values', 'attribute_definition_id');
+
+-- +goose StatementEnd
+
+-- +goose Down
+-- +goose StatementBegin
+
+-- 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;
+
+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;
+
+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
new file mode 100644
index 0000000000..202e631da2
--- /dev/null
+++ b/migrations/20240212000000_schema_erd.md
@@ -0,0 +1,92 @@
+# 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
+ bool active
+ }
+
+ AttributeDefinition {
+ uuid id PK
+ uuid namespace_id FK
+ varchar name
+ enum rule
+ jsonb metadata
+ compIdx comp_key UK "ns_id + name"
+ bool active
+ }
+
+ 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"
+ bool active
+ }
+
+ 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/proto/attributes/attributes.proto b/proto/attributes/attributes.proto
index 2b3c242d9c..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";
@@ -37,6 +38,9 @@ message Attribute {
repeated Value values = 7;
repeated kasregistry.KeyAccessServer grants = 8;
+
+ // active by default until explicitly deactivated
+ google.protobuf.BoolValue active = 9;
}
message AttributeCreateUpdate {
@@ -74,6 +78,9 @@ message Value {
// list of key access servers
repeated kasregistry.KeyAccessServer grants = 6;
+
+ // active by default until explicitly deactivated
+ google.protobuf.BoolValue active = 7;
}
message ValueCreateUpdate {
@@ -103,7 +110,10 @@ message ValueKeyAccessServer {
Attribute Service Definitions
*/
-message ListAttributesRequest {}
+message ListAttributesRequest {
+ // ACTIVE by default when not specified
+ common.ActiveStateEnum state = 1;
+}
message ListAttributesResponse {
repeated Attribute attributes = 1;
}
@@ -130,10 +140,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 +159,8 @@ message GetAttributeValueResponse {
message ListAttributeValuesRequest {
string attribute_id = 1 [(buf.validate.field).required = true];
+ // ACTIVE by default when not specified
+ common.ActiveStateEnum state = 2;
}
message ListAttributeValuesResponse {
repeated Value values = 1;
@@ -171,10 +183,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 +231,103 @@ 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",
+ }
+ ],
+ }
+ ],
+ "grants": [
+ {
+ "id": "key_access_server_id",
+ "metadata": {
+ "created_at": "2021-01-01T00:00:00Z",
+ "updated_at": "2021-01-01T00:00:00Z"
+ },
+ "name": "key_access_server_name",
+ "description": "key_access_server_description",
+ }
+ ],
+ "active": true
+ }
+ ]
+ }
*/
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 ...
+ }
+ ],
+ "active": true
+ }
+ ]
+ }
+
*/
rpc ListAttributeValues(ListAttributeValuesRequest) returns (ListAttributeValuesResponse) {}
@@ -292,9 +335,26 @@ 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",
+ "active": true
+ }
+ }
+ */
rpc CreateAttribute(CreateAttributeRequest) returns (CreateAttributeResponse) {
option (google.api.http) = {
post: "/attributes"
@@ -309,7 +369,7 @@ service AttributesService {
};
}
- rpc DeleteAttribute(DeleteAttributeRequest) returns (DeleteAttributeResponse) {
+ rpc DeactivateAttribute(DeactivateAttributeRequest) returns (DeactivateAttributeResponse) {
option (google.api.http) = {delete: "/attributes/{id}"};
}
@@ -320,7 +380,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 +395,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/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/common/common.proto b/proto/common/common.proto
index b74a3e3970..319de29ae0 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 ActiveStateEnum {
+ ACTIVE_STATE_ENUM_UNSPECIFIED = 0;
+ ACTIVE_STATE_ENUM_ACTIVE = 1;
+ ACTIVE_STATE_ENUM_INACTIVE = 2;
+ ACTIVE_STATE_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..0c37e53da1 100644
--- a/proto/namespaces/namespaces.proto
+++ b/proto/namespaces/namespaces.proto
@@ -4,12 +4,14 @@ package namespaces;
import "buf/validate/validate.proto";
import "google/api/annotations.proto";
+import "google/protobuf/wrappers.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 +20,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
+ google.protobuf.BoolValue active = 3;
}
/*
@@ -33,7 +38,10 @@ message GetNamespaceResponse {
Namespace namespace = 1;
}
-message ListNamespacesRequest {}
+message ListNamespacesRequest {
+ // ACTIVE by default when not specified
+ common.ActiveStateEnum state = 1;
+}
message ListNamespacesResponse {
repeated Namespace namespaces = 1;
}
@@ -53,22 +61,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",
+ "active": true
+ }
+ }
+ */
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",
+ "active": true
+ }
+ ]
+ }
+ */
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", "active": true } }
+ */
rpc CreateNamespace(CreateNamespaceRequest) returns (CreateNamespaceResponse) {
option (google.api.http) = {
post: "/attributes/namespaces"
@@ -79,74 +123,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/sdk/attributes/attributes.pb.go b/sdk/attributes/attributes.pb.go
index d067ead698..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"
)
@@ -94,6 +95,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
+ Active *wrapperspb.BoolValue `protobuf:"bytes,9,opt,name=active,proto3" json:"active,omitempty"`
}
func (x *Attribute) Reset() {
@@ -177,6 +180,13 @@ func (x *Attribute) GetGrants() []*kasregistry.KeyAccessServer {
return nil
}
+func (x *Attribute) GetActive() *wrapperspb.BoolValue {
+ if x != nil {
+ return x.Active
+ }
+ return nil
+}
+
type AttributeCreateUpdate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -275,6 +285,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
+ Active *wrapperspb.BoolValue `protobuf:"bytes,7,opt,name=active,proto3" json:"active,omitempty"`
}
func (x *Value) Reset() {
@@ -351,6 +363,13 @@ func (x *Value) GetGrants() []*kasregistry.KeyAccessServer {
return nil
}
+func (x *Value) GetActive() *wrapperspb.BoolValue {
+ if x != nil {
+ return x.Active
+ }
+ return nil
+}
+
type ValueCreateUpdate struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -529,6 +548,9 @@ type ListAttributesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ // ACTIVE by default when not specified
+ State common.ActiveStateEnum `protobuf:"varint,1,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"`
}
func (x *ListAttributesRequest) Reset() {
@@ -563,6 +585,13 @@ func (*ListAttributesRequest) Descriptor() ([]byte, []int) {
return file_attributes_attributes_proto_rawDescGZIP(), []int{6}
}
+func (x *ListAttributesRequest) GetState() common.ActiveStateEnum {
+ if x != nil {
+ return x.State
+ }
+ return common.ActiveStateEnum(0)
+}
+
type ListAttributesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -900,7 +929,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 +937,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 +946,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 +964,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 +984,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 +993,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 +1011,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 +1126,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.ActiveStateEnum `protobuf:"varint,2,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"`
}
func (x *ListAttributeValuesRequest) Reset() {
@@ -1138,6 +1169,13 @@ func (x *ListAttributeValuesRequest) GetAttributeId() string {
return ""
}
+func (x *ListAttributeValuesRequest) GetState() common.ActiveStateEnum {
+ if x != nil {
+ return x.State
+ }
+ return common.ActiveStateEnum(0)
+}
+
type ListAttributeValuesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -1397,7 +1435,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 +1443,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 +1452,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 +1470,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 +1490,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 +1499,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 +1517,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
}
@@ -1877,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, 0xb7, 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,
@@ -1901,383 +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, 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, 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, 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,
- 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,
+ 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,
- 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,
+ 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, 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,
- 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,
+ 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,
- 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,
+ 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, 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,
+ 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, 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,
+ 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, 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, 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,
- 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, 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,
+ 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, 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,
+ 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,
- 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,
+ 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, 0x44, 0x65, 0x6c, 0x65, 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, 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,
- 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,
+ 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, 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,
+ 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, 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,
+ 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,
- 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,
+ 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 (
@@ -2310,8 +2365,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 +2375,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 +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
+ (*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
@@ -2341,67 +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
- 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
- 29, // 44: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:input_type -> attributes.RemoveKeyAccessServerFromAttributeRequest
- 31, // 45: attributes.AttributesService.AssignKeyAccessServerToValue:input_type -> attributes.AssignKeyAccessServerToValueRequest
- 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
- 30, // 58: attributes.AttributesService.RemoveKeyAccessServerFromAttribute:output_type -> attributes.RemoveKeyAccessServerFromAttributeResponse
- 32, // 59: attributes.AttributesService.AssignKeyAccessServerToValue:output_type -> attributes.AssignKeyAccessServerToValueResponse
- 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.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() }
@@ -2579,7 +2640,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 +2652,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 +2760,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 +2772,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 a9332e1bbd..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
}
@@ -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()...)
})
@@ -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()...)
})
@@ -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,7 +1262,7 @@ 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"}, ""))
@@ -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,7 +1288,7 @@ 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
diff --git a/sdk/attributes/attributes_grpc.pb.go b/sdk/attributes/attributes_grpc.pb.go
index e4350902e1..c0ee4be59d 100644
--- a/sdk/attributes/attributes_grpc.pb.go
+++ b/sdk/attributes/attributes_grpc.pb.go
@@ -24,11 +24,11 @@ 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_RemoveKeyAccessServerFromAttribute_FullMethodName = "/attributes.AttributesService/RemoveKeyAccessServerFromAttribute"
AttributesService_AssignKeyAccessServerToValue_FullMethodName = "/attributes.AttributesService/AssignKeyAccessServerToValue"
@@ -39,87 +39,132 @@ 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": [
// {
- // "members": [],
+ // "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": "bb50eaac-0d95-4f28-9a36-9bbf412a7b95",
- // "metadata": null,
- // "uri": "kas10",
- // "public_key": {
- // "remote": "https://example.com/kas"
- // }
+ // "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",
// }
// ],
- // "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": "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",
// }
// ],
- // "id": "2dc75d97-f6a4-4036-9a6a-acc99171fff1",
+ // "active": true
+ // }
+ // ]
+ // }
+ ListAttributes(ctx context.Context, in *ListAttributesRequest, opts ...grpc.CallOption) (*ListAttributesResponse, error)
+ // List Values
+ //
+ // Request:
+ // NOTE: ACTIVE state by default, INACTIVE or ANY when specified
+ // grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 attributes.AttributesService/ListAttributes
+ // Response:
+ // {
+ // "attributes": [
+ // {
+ // "id": "attribute_id",
// "metadata": {
- // "labels": [],
- // "created_at": {
- // "seconds": "1706878441",
- // "nanos": 147178000
- // },
- // "updated_at": {
- // "seconds": "1706878441",
- // "nanos": 147178000
- // },
- // "description": ""
+ // "createdAt": "2024-02-14T20:24:23.057404Z",
+ // "updatedAt": "2024-02-14T20:24:23.057404Z"
// },
// "namespace": {
- // "id": "c85d126a-c2f2-4bb6-bc6d-a513015363cb",
- // "name": "demo.com"
+ // "id": "namespace_id",
+ // "name": "namespace_name"
// },
- // "name": "test",
- // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"
+ // "name": "attribute_name",
+ // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF",
+ // "values": [
+ // {
+ // ... VALUES ...
+ // }
+ // ],
+ // "grants": [
+ // {
+ // ... GRANTS ...
+ // }
+ // ],
+ // "active": true
// }
// ]
// }
- 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
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",
+ // "active": true
+ // }
+ // }
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
@@ -245,9 +290,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
}
@@ -281,9 +326,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
}
@@ -330,87 +375,132 @@ 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": [
// {
- // "members": [],
+ // "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": "bb50eaac-0d95-4f28-9a36-9bbf412a7b95",
- // "metadata": null,
- // "uri": "kas10",
- // "public_key": {
- // "remote": "https://example.com/kas"
- // }
+ // "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",
// }
// ],
- // "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": "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",
// }
// ],
- // "id": "2dc75d97-f6a4-4036-9a6a-acc99171fff1",
+ // "active": true
+ // }
+ // ]
+ // }
+ ListAttributes(context.Context, *ListAttributesRequest) (*ListAttributesResponse, error)
+ // List Values
+ //
+ // Request:
+ // NOTE: ACTIVE state by default, INACTIVE or ANY when specified
+ // grpcurl -plaintext -d '{"state": "STATE_TYPE_ENUM_INACTIVE"}' localhost:9000 attributes.AttributesService/ListAttributes
+ // Response:
+ // {
+ // "attributes": [
+ // {
+ // "id": "attribute_id",
// "metadata": {
- // "labels": [],
- // "created_at": {
- // "seconds": "1706878441",
- // "nanos": 147178000
- // },
- // "updated_at": {
- // "seconds": "1706878441",
- // "nanos": 147178000
- // },
- // "description": ""
+ // "createdAt": "2024-02-14T20:24:23.057404Z",
+ // "updatedAt": "2024-02-14T20:24:23.057404Z"
// },
// "namespace": {
- // "id": "c85d126a-c2f2-4bb6-bc6d-a513015363cb",
- // "name": "demo.com"
+ // "id": "namespace_id",
+ // "name": "namespace_name"
// },
- // "name": "test",
- // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF"
+ // "name": "attribute_name",
+ // "rule": "ATTRIBUTE_RULE_TYPE_ENUM_ALL_OF",
+ // "values": [
+ // {
+ // ... VALUES ...
+ // }
+ // ],
+ // "grants": [
+ // {
+ // ... GRANTS ...
+ // }
+ // ],
+ // "active": true
// }
// ]
// }
- ListAttributes(context.Context, *ListAttributesRequest) (*ListAttributesResponse, error)
- // List Values
- // Example:
- // grpcurl -plaintext -d '{"attribute_id": "attribute_id"}' localhost:8080 attributes.AttributesService/ListValues
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",
+ // "active": true
+ // }
+ // }
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
@@ -503,8 +593,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")
@@ -515,8 +605,8 @@ 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")
@@ -633,20 +723,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)
}
@@ -705,20 +795,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)
}
@@ -823,8 +913,8 @@ var AttributesService_ServiceDesc = grpc.ServiceDesc{
Handler: _AttributesService_UpdateAttribute_Handler,
},
{
- MethodName: "DeleteAttribute",
- Handler: _AttributesService_DeleteAttribute_Handler,
+ MethodName: "DeactivateAttribute",
+ Handler: _AttributesService_DeactivateAttribute_Handler,
},
{
MethodName: "GetAttributeValue",
@@ -839,8 +929,8 @@ var AttributesService_ServiceDesc = grpc.ServiceDesc{
Handler: _AttributesService_UpdateAttributeValue_Handler,
},
{
- MethodName: "DeleteAttributeValue",
- Handler: _AttributesService_DeleteAttributeValue_Handler,
+ MethodName: "DeactivateAttributeValue",
+ Handler: _AttributesService_DeactivateAttributeValue_Handler,
},
{
MethodName: "AssignKeyAccessServerToAttribute",
diff --git a/sdk/common/common.pb.go b/sdk/common/common.pb.go
index 2702e9aee7..9eb15579e9 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 ActiveStateEnum int32
+
+const (
+ 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 ActiveStateEnum.
+var (
+ 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",
+ }
+ 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 ActiveStateEnum) Enum() *ActiveStateEnum {
+ p := new(ActiveStateEnum)
+ *p = x
+ return p
+}
+
+func (x ActiveStateEnum) String() string {
+ return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
+}
+
+func (ActiveStateEnum) Descriptor() protoreflect.EnumDescriptor {
+ return file_common_common_proto_enumTypes[0].Descriptor()
+}
+
+func (ActiveStateEnum) Type() protoreflect.EnumType {
+ return &file_common_common_proto_enumTypes[0]
+}
+
+func (x ActiveStateEnum) Number() protoreflect.EnumNumber {
+ return protoreflect.EnumNumber(x)
+}
+
+// Deprecated: Use ActiveStateEnum.Descriptor instead.
+func (ActiveStateEnum) 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,7 +242,16 @@ 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,
+ 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,
@@ -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
+ (ActiveStateEnum)(0), // 0: common.ActiveStateEnum
+ (*Metadata)(nil), // 1: common.Metadata
+ (*MetadataMutable)(nil), // 2: common.MetadataMutable
+ nil, // 3: common.Metadata.LabelsEntry
+ nil, // 4: common.MetadataMutable.LabelsEntry
+ (*timestamppb.Timestamp)(nil), // 5: google.protobuf.Timestamp
}
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..b72435e0e6 100644
--- a/sdk/namespaces/namespaces.pb.go
+++ b/sdk/namespaces/namespaces.pb.go
@@ -8,9 +8,11 @@ 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"
+ wrapperspb "google.golang.org/protobuf/types/known/wrapperspb"
reflect "reflect"
sync "sync"
)
@@ -30,7 +32,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
+ Active *wrapperspb.BoolValue `protobuf:"bytes,3,opt,name=active,proto3" json:"active,omitempty"`
}
func (x *Namespace) Reset() {
@@ -79,6 +83,13 @@ func (x *Namespace) GetName() string {
return ""
}
+func (x *Namespace) GetActive() *wrapperspb.BoolValue {
+ if x != nil {
+ return x.Active
+ }
+ return nil
+}
+
type GetNamespaceRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -177,6 +188,9 @@ type ListNamespacesRequest struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
unknownFields protoimpl.UnknownFields
+
+ // ACTIVE by default when not specified
+ State common.ActiveStateEnum `protobuf:"varint,1,opt,name=state,proto3,enum=common.ActiveStateEnum" json:"state,omitempty"`
}
func (x *ListNamespacesRequest) Reset() {
@@ -211,6 +225,13 @@ func (*ListNamespacesRequest) Descriptor() ([]byte, []int) {
return file_namespaces_namespaces_proto_rawDescGZIP(), []int{3}
}
+func (x *ListNamespacesRequest) GetState() common.ActiveStateEnum {
+ if x != nil {
+ return x.State
+ }
+ return common.ActiveStateEnum(0)
+}
+
type ListNamespacesResponse struct {
state protoimpl.MessageState
sizeCache protoimpl.SizeCache
@@ -454,7 +475,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 +483,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 +492,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 +510,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 +537,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 +555,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,78 +569,88 @@ 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,
- 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,
+ 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, 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,
+ 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, 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, 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,
+ 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, 0x81, 0x05, 0x0a, 0x10, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63,
+ 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,
@@ -651,25 +682,26 @@ var file_namespaces_namespaces_proto_rawDesc = []byte{
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,
- 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,
+ 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 +718,42 @@ 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
+ (*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
- 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.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() }
@@ -835,7 +871,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 +883,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..45935f6401 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",
+ // "active": true
+ // }
+ // }
GetNamespace(ctx context.Context, in *GetNamespaceRequest, opts ...grpc.CallOption) (*GetNamespaceResponse, error)
+ // NOTE: ACTIVE state by default, INACTIVE or ANY when specified
+ // Request:
+ // grpcurl -plaintext localhost:9000 namespaces.NamespaceService/ListNamespaces
+ // Response:
+ // {
+ // "namespaces": [
+ // {
+ // "id": "namespace-id",
+ // "name": "namespace-name",
+ // "active": true
+ // }
+ // ]
+ // }
ListNamespaces(ctx context.Context, in *ListNamespacesRequest, opts ...grpc.CallOption) (*ListNamespacesResponse, error)
+ // Request:
+ // grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace
+ // Response:
+ // { "namespace": { "id": "namespace-id", "active": true } }
CreateNamespace(ctx context.Context, in *CreateNamespaceRequest, opts ...grpc.CallOption) (*CreateNamespaceResponse, error)
UpdateNamespace(ctx context.Context, in *UpdateNamespaceRequest, opts ...grpc.CallOption) (*UpdateNamespaceResponse, error)
- 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",
+ // "active": true
+ // }
+ // }
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",
+ // "active": true
+ // }
+ // ]
+ // }
ListNamespaces(context.Context, *ListNamespacesRequest) (*ListNamespacesResponse, error)
+ // Request:
+ // grpcurl -plaintext -d '{"name": "namespace-name"}' localhost:9000 namespaces.NamespaceService/CreateNamespace
+ // Response:
+ // { "namespace": { "id": "namespace-id", "active": true } }
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{},
diff --git a/sdkjava/com/attributes/Attribute.java b/sdkjava/com/attributes/Attribute.java
index d12c390850..3d973ad971 100644
--- a/sdkjava/com/attributes/Attribute.java
+++ b/sdkjava/com/attributes/Attribute.java
@@ -315,6 +315,44 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder(
return grants_.get(index);
}
+ public static final int ACTIVE_FIELD_NUMBER = 9;
+ private com.google.protobuf.BoolValue active_;
+ /**
+ *
+ * active by default until explicitly deactivated
+ *
+ *
+ * .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 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;
@java.lang.Override
public final boolean isInitialized() {
@@ -350,6 +388,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
for (int i = 0; i < grants_.size(); i++) {
output.writeMessage(8, grants_.get(i));
}
+ if (((bitField0_ & 0x00000004) != 0)) {
+ output.writeMessage(9, getActive());
+ }
getUnknownFields().writeTo(output);
}
@@ -385,6 +426,10 @@ public int getSerializedSize() {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(8, grants_.get(i));
}
+ if (((bitField0_ & 0x00000004) != 0)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(9, getActive());
+ }
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
return size;
@@ -419,6 +464,11 @@ public boolean equals(final java.lang.Object obj) {
.equals(other.getValuesList())) return false;
if (!getGrantsList()
.equals(other.getGrantsList())) 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;
}
@@ -452,6 +502,10 @@ public int hashCode() {
hash = (37 * hash) + GRANTS_FIELD_NUMBER;
hash = (53 * hash) + getGrantsList().hashCode();
}
+ if (hasActive()) {
+ hash = (37 * hash) + ACTIVE_FIELD_NUMBER;
+ hash = (53 * hash) + getActive().hashCode();
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -586,6 +640,7 @@ private void maybeForceBuilderInitialization() {
getNamespaceFieldBuilder();
getValuesFieldBuilder();
getGrantsFieldBuilder();
+ getActiveFieldBuilder();
}
}
@java.lang.Override
@@ -619,6 +674,11 @@ public Builder clear() {
grantsBuilder_.clear();
}
bitField0_ = (bitField0_ & ~0x00000040);
+ active_ = null;
+ if (activeBuilder_ != null) {
+ activeBuilder_.dispose();
+ activeBuilder_ = null;
+ }
return this;
}
@@ -696,6 +756,12 @@ private void buildPartial0(com.attributes.Attribute result) {
if (((from_bitField0_ & 0x00000010) != 0)) {
result.rule_ = rule_;
}
+ if (((from_bitField0_ & 0x00000080) != 0)) {
+ result.active_ = activeBuilder_ == null
+ ? active_
+ : activeBuilder_.build();
+ to_bitField0_ |= 0x00000004;
+ }
result.bitField0_ |= to_bitField0_;
}
@@ -814,6 +880,9 @@ public Builder mergeFrom(com.attributes.Attribute other) {
}
}
}
+ if (other.hasActive()) {
+ mergeActive(other.getActive());
+ }
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
@@ -895,6 +964,13 @@ public Builder mergeFrom(
}
break;
} // case 66
+ case 74: {
+ input.readMessage(
+ getActiveFieldBuilder().getBuilder(),
+ extensionRegistry);
+ bitField0_ |= 0x00000080;
+ break;
+ } // case 74
default: {
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
done = true; // was an endgroup tag
@@ -1942,6 +2018,163 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder(
}
return grantsBuilder_;
}
+
+ 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
+ *
+ *
+ * .google.protobuf.BoolValue active = 9 [json_name = "active"];
+ * @return The 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
+ *
+ *
+ * .google.protobuf.BoolValue active = 9 [json_name = "active"];
+ */
+ 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;
+ }
+ /**
+ *
+ * active by default until explicitly deactivated
+ *
+ *
+ * .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_ = 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 c6f7f05fba..35e4c0ab41 100644
--- a/sdkjava/com/attributes/AttributeOrBuilder.java
+++ b/sdkjava/com/attributes/AttributeOrBuilder.java
@@ -160,4 +160,31 @@ com.attributes.ValueOrBuilder getValuesOrBuilder(
*/
com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder(
int index);
+
+ /**
+ *
+ * active by default until explicitly deactivated
+ *
+ *
+ * .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.
+ */
+ 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 662d81a8a5..27838bd01f 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
@@ -197,167 +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\"\267\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\"\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"
+ "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*\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,
@@ -365,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(),
});
@@ -373,7 +380,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", "Active", });
internal_static_attributes_AttributeCreateUpdate_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_attributes_AttributeCreateUpdate_fieldAccessorTable = new
@@ -385,7 +392,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", "Active", });
internal_static_attributes_ValueCreateUpdate_descriptor =
getDescriptor().getMessageTypes().get(3);
internal_static_attributes_ValueCreateUpdate_fieldAccessorTable = new
@@ -409,7 +416,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 +459,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 +488,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 +519,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);
@@ -581,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/DeactivateAttributeRequest.java b/sdkjava/com/attributes/DeactivateAttributeRequest.java
new file mode 100644
index 0000000000..eb1703ff98
--- /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.3
+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..b133073f70
--- /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.3
+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..2c0f19c7c5
--- /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.3
+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..c2e5c39c8f
--- /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.3
+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..04b493eb84
--- /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.3
+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..7553fc71da
--- /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.3
+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..8a4610b92a
--- /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.3
+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..f2d3a30944
--- /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.3
+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 a70868029f..7551d64903 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.ActiveStateEnum 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.ActiveStateEnum state = 2 [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;
+ }
+
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.ActiveStateEnum.ACTIVE_STATE_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.ActiveStateEnum.ACTIVE_STATE_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.ActiveStateEnum 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.ActiveStateEnum 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.ActiveStateEnum state = 2 [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;
+ }
+ /**
+ *
+ * ACTIVE by default when not specified
+ *
+ *
+ * .common.ActiveStateEnum state = 2 [json_name = "state"];
+ * @param value The state to set.
+ * @return This builder for chaining.
+ */
+ public Builder setState(com.common.ActiveStateEnum value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000002;
+ state_ = value.getNumber();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * ACTIVE by default when not specified
+ *
+ *
+ * .common.ActiveStateEnum 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 45b248caa3..cc5cf5f34e 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.ActiveStateEnum state = 2 [json_name = "state"];
+ * @return The enum numeric value on the wire for state.
+ */
+ int getStateValue();
+ /**
+ *
+ * ACTIVE by default when not specified
+ *
+ *
+ * .common.ActiveStateEnum state = 2 [json_name = "state"];
+ * @return The state.
+ */
+ com.common.ActiveStateEnum getState();
}
diff --git a/sdkjava/com/attributes/ListAttributesRequest.java b/sdkjava/com/attributes/ListAttributesRequest.java
index 35d1e303db..f50dec9eb7 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.ActiveStateEnum 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.ActiveStateEnum state = 1 [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;
+ }
+
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.ActiveStateEnum.ACTIVE_STATE_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.ActiveStateEnum.ACTIVE_STATE_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.ActiveStateEnum 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.ActiveStateEnum 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.ActiveStateEnum state = 1 [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;
+ }
+ /**
+ *
+ * ACTIVE by default when not specified
+ *
+ *
+ * .common.ActiveStateEnum state = 1 [json_name = "state"];
+ * @param value The state to set.
+ * @return This builder for chaining.
+ */
+ public Builder setState(com.common.ActiveStateEnum value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ state_ = value.getNumber();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * ACTIVE by default when not specified
+ *
+ *
+ * .common.ActiveStateEnum 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 1fe4b4e5d1..60cb48c9cf 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.ActiveStateEnum state = 1 [json_name = "state"];
+ * @return The enum numeric value on the wire for state.
+ */
+ int getStateValue();
+ /**
+ *
+ * ACTIVE by default when not specified
+ *
+ *
+ * .common.ActiveStateEnum state = 1 [json_name = "state"];
+ * @return The state.
+ */
+ com.common.ActiveStateEnum getState();
}
diff --git a/sdkjava/com/attributes/Value.java b/sdkjava/com/attributes/Value.java
index 00bcdb6c21..270b716cea 100644
--- a/sdkjava/com/attributes/Value.java
+++ b/sdkjava/com/attributes/Value.java
@@ -311,6 +311,44 @@ public com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder(
return grants_.get(index);
}
+ public static final int ACTIVE_FIELD_NUMBER = 7;
+ private com.google.protobuf.BoolValue active_;
+ /**
+ *
+ * active by default until explicitly deactivated
+ *
+ *
+ * .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 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;
@java.lang.Override
public final boolean isInitialized() {
@@ -343,6 +381,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output)
for (int i = 0; i < grants_.size(); i++) {
output.writeMessage(6, grants_.get(i));
}
+ if (((bitField0_ & 0x00000002) != 0)) {
+ output.writeMessage(7, getActive());
+ }
getUnknownFields().writeTo(output);
}
@@ -377,6 +418,10 @@ public int getSerializedSize() {
size += com.google.protobuf.CodedOutputStream
.computeMessageSize(6, grants_.get(i));
}
+ if (((bitField0_ & 0x00000002) != 0)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(7, getActive());
+ }
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
return size;
@@ -407,6 +452,11 @@ public boolean equals(final java.lang.Object obj) {
.equals(other.getMembersList())) return false;
if (!getGrantsList()
.equals(other.getGrantsList())) 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;
}
@@ -436,6 +486,10 @@ public int hashCode() {
hash = (37 * hash) + GRANTS_FIELD_NUMBER;
hash = (53 * hash) + getGrantsList().hashCode();
}
+ if (hasActive()) {
+ hash = (37 * hash) + ACTIVE_FIELD_NUMBER;
+ hash = (53 * hash) + getActive().hashCode();
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -568,6 +622,7 @@ private void maybeForceBuilderInitialization() {
.alwaysUseFieldBuilders) {
getMetadataFieldBuilder();
getGrantsFieldBuilder();
+ getActiveFieldBuilder();
}
}
@java.lang.Override
@@ -591,6 +646,11 @@ public Builder clear() {
grantsBuilder_.clear();
}
bitField0_ = (bitField0_ & ~0x00000020);
+ active_ = null;
+ if (activeBuilder_ != null) {
+ activeBuilder_.dispose();
+ activeBuilder_ = null;
+ }
return this;
}
@@ -657,6 +717,12 @@ private void buildPartial0(com.attributes.Value result) {
members_.makeImmutable();
result.members_ = members_;
}
+ if (((from_bitField0_ & 0x00000040) != 0)) {
+ result.active_ = activeBuilder_ == null
+ ? active_
+ : activeBuilder_.build();
+ to_bitField0_ |= 0x00000002;
+ }
result.bitField0_ |= to_bitField0_;
}
@@ -758,6 +824,9 @@ public Builder mergeFrom(com.attributes.Value other) {
}
}
}
+ if (other.hasActive()) {
+ mergeActive(other.getActive());
+ }
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
@@ -825,6 +894,13 @@ public Builder mergeFrom(
}
break;
} // case 50
+ case 58: {
+ input.readMessage(
+ getActiveFieldBuilder().getBuilder(),
+ extensionRegistry);
+ bitField0_ |= 0x00000040;
+ break;
+ } // case 58
default: {
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
done = true; // was an endgroup tag
@@ -1657,6 +1733,163 @@ public com.kasregistry.KeyAccessServer.Builder addGrantsBuilder(
}
return grantsBuilder_;
}
+
+ 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
+ *
+ *
+ * .google.protobuf.BoolValue active = 7 [json_name = "active"];
+ * @return The 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
+ *
+ *
+ * .google.protobuf.BoolValue active = 7 [json_name = "active"];
+ */
+ 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;
+ }
+ /**
+ *
+ * active by default until explicitly deactivated
+ *
+ *
+ * .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_ = 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 6963ff3910..f229a27ae5 100644
--- a/sdkjava/com/attributes/ValueOrBuilder.java
+++ b/sdkjava/com/attributes/ValueOrBuilder.java
@@ -151,4 +151,31 @@ public interface ValueOrBuilder extends
*/
com.kasregistry.KeyAccessServerOrBuilder getGrantsOrBuilder(
int index);
+
+ /**
+ *
+ * active by default until explicitly deactivated
+ *
+ *
+ * .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.
+ */
+ 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/common/ActiveStateEnum.java b/sdkjava/com/common/ActiveStateEnum.java
new file mode 100644
index 0000000000..98dfcb24db
--- /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.3
+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 428c544f1d..b84d7c6c29 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*\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
new file mode 100644
index 0000000000..2aed4306cc
--- /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.ActiveStateEnum}
+ */
+public enum ActiveStateEnum
+ 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 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 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<
+ 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/namespaces/DeactivateNamespaceRequest.java b/sdkjava/com/namespaces/DeactivateNamespaceRequest.java
new file mode 100644
index 0000000000..9e27e2eff8
--- /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.3
+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..3bbecd318e
--- /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.3
+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..5ba9f8fb07
--- /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.3
+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..0e36e8f40e
--- /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.3
+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 ec445fc455..36ce51b025 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.ActiveStateEnum 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.ActiveStateEnum state = 1 [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;
+ }
+
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.ActiveStateEnum.ACTIVE_STATE_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.ActiveStateEnum.ACTIVE_STATE_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.ActiveStateEnum 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.ActiveStateEnum 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.ActiveStateEnum state = 1 [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;
+ }
+ /**
+ *
+ * ACTIVE by default when not specified
+ *
+ *
+ * .common.ActiveStateEnum state = 1 [json_name = "state"];
+ * @param value The state to set.
+ * @return This builder for chaining.
+ */
+ public Builder setState(com.common.ActiveStateEnum value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ bitField0_ |= 0x00000001;
+ state_ = value.getNumber();
+ onChanged();
+ return this;
+ }
+ /**
+ *
+ * ACTIVE by default when not specified
+ *
+ *
+ * .common.ActiveStateEnum 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 6d70369ae8..891cace3ff 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.ActiveStateEnum state = 1 [json_name = "state"];
+ * @return The enum numeric value on the wire for state.
+ */
+ int getStateValue();
+ /**
+ *
+ * ACTIVE by default when not specified
+ *
+ *
+ * .common.ActiveStateEnum state = 1 [json_name = "state"];
+ * @return The state.
+ */
+ com.common.ActiveStateEnum getState();
}
diff --git a/sdkjava/com/namespaces/Namespace.java b/sdkjava/com/namespaces/Namespace.java
index a37c1cee81..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_ = "";
@@ -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,44 @@ public java.lang.String getName() {
}
}
+ public static final int ACTIVE_FIELD_NUMBER = 3;
+ private com.google.protobuf.BoolValue active_;
+ /**
+ *
+ * active by default until explicitly deactivated
+ *
+ *
+ * .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 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;
@java.lang.Override
public final boolean isInitialized() {
@@ -153,7 +192,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 (((bitField0_ & 0x00000001) != 0)) {
+ output.writeMessage(3, getActive());
}
getUnknownFields().writeTo(output);
}
@@ -168,7 +210,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 (((bitField0_ & 0x00000001) != 0)) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(3, getActive());
}
size += getUnknownFields().getSerializedSize();
memoizedSize = size;
@@ -189,6 +235,11 @@ public boolean equals(final java.lang.Object obj) {
.equals(other.getId())) return false;
if (!getName()
.equals(other.getName())) 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;
}
@@ -204,6 +255,10 @@ public int hashCode() {
hash = (53 * hash) + getId().hashCode();
hash = (37 * hash) + NAME_FIELD_NUMBER;
hash = (53 * hash) + getName().hashCode();
+ if (hasActive()) {
+ hash = (37 * hash) + ACTIVE_FIELD_NUMBER;
+ hash = (53 * hash) + getActive().hashCode();
+ }
hash = (29 * hash) + getUnknownFields().hashCode();
memoizedHashCode = hash;
return hash;
@@ -323,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() {
@@ -337,6 +398,11 @@ public Builder clear() {
bitField0_ = 0;
id_ = "";
name_ = "";
+ active_ = null;
+ if (activeBuilder_ != null) {
+ activeBuilder_.dispose();
+ activeBuilder_ = null;
+ }
return this;
}
@@ -376,6 +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_ = activeBuilder_ == null
+ ? active_
+ : activeBuilder_.build();
+ to_bitField0_ |= 0x00000001;
+ }
+ result.bitField0_ |= to_bitField0_;
}
@java.lang.Override
@@ -432,6 +506,9 @@ public Builder mergeFrom(com.namespaces.Namespace other) {
bitField0_ |= 0x00000002;
onChanged();
}
+ if (other.hasActive()) {
+ mergeActive(other.getActive());
+ }
this.mergeUnknownFields(other.getUnknownFields());
onChanged();
return this;
@@ -463,11 +540,18 @@ public Builder mergeFrom(
bitField0_ |= 0x00000001;
break;
} // case 10
- case 42: {
+ case 18: {
name_ = input.readStringRequireUtf8();
bitField0_ |= 0x00000002;
break;
- } // case 42
+ } // case 18
+ case 26: {
+ input.readMessage(
+ getActiveFieldBuilder().getBuilder(),
+ extensionRegistry);
+ bitField0_ |= 0x00000004;
+ break;
+ } // case 26
default: {
if (!super.parseUnknownField(input, extensionRegistry, tag)) {
done = true; // was an endgroup tag
@@ -583,7 +667,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 +687,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 +708,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 +725,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 +739,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 +752,163 @@ public Builder setNameBytes(
onChanged();
return this;
}
+
+ 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 = 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.
+ */
+ 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
+ *
+ *
+ * .google.protobuf.BoolValue active = 3 [json_name = "active"];
+ */
+ 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;
+ }
+ /**
+ *
+ * active by default until explicitly deactivated
+ *
+ *
+ * .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_ = 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 cfe787d7f3..a88a8e37e9 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,36 @@ 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
+ *
+ *
+ * .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.
+ */
+ 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 ecf93d0539..cb63e79a3d 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,35 +81,39 @@ 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" +
+ "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" +
@@ -122,28 +126,30 @@ public static void registerAllExtensions(
"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"
+ "\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 =
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", "Active", });
internal_static_namespaces_GetNamespaceRequest_descriptor =
getDescriptor().getMessageTypes().get(1);
internal_static_namespaces_GetNamespaceRequest_fieldAccessorTable = new
@@ -161,7 +167,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 +198,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 +218,8 @@ 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();
}
// @@protoc_insertion_point(outer_class_scope)
diff --git a/services/attributes/attributes.go b/services/attributes/attributes.go
index 67ce84f601..382a1a3d3c 100644
--- a/services/attributes/attributes.go
+++ b/services/attributes/attributes.go
@@ -48,9 +48,11 @@ func (s AttributesService) CreateAttribute(ctx context.Context,
func (s *AttributesService) ListAttributes(ctx context.Context,
req *attributes.ListAttributesRequest,
) (*attributes.ListAttributesResponse, error) {
+ state := services.GetDbStateTypeTransformedEnum(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 +90,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 +120,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.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 {
return nil, services.HandleError(err, services.ErrListRetrievalFailed, slog.String("attributeId", req.AttributeId))
}
@@ -150,13 +154,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..07f5e8954a
--- /dev/null
+++ b/services/helpers.go
@@ -0,0 +1,21 @@
+package services
+
+import (
+ "github.com/opentdf/opentdf-v2-poc/internal/db"
+ "github.com/opentdf/opentdf-v2-poc/sdk/common"
+)
+
+func GetDbStateTypeTransformedEnum(state common.ActiveStateEnum) string {
+ switch state.String() {
+ case common.ActiveStateEnum_ACTIVE_STATE_ENUM_ACTIVE.String():
+ return db.StateActive
+ case common.ActiveStateEnum_ACTIVE_STATE_ENUM_INACTIVE.String():
+ return db.StateInactive
+ case common.ActiveStateEnum_ACTIVE_STATE_ENUM_ANY.String():
+ return db.StateAny
+ case common.ActiveStateEnum_ACTIVE_STATE_ENUM_UNSPECIFIED.String():
+ return db.StateActive
+ default:
+ return db.StateActive
+ }
+}
diff --git a/services/namespaces/namespaces.go b/services/namespaces/namespaces.go
index 2c79a42015..da5730cb4e 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.GetDbStateTypeTransformedEnum(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)
}
@@ -54,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
@@ -94,14 +94,14 @@ 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("deleting namespace", slog.String("id", req.Id))
- rsp := &namespaces.DeleteNamespaceResponse{}
+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); err != nil {
+ if _, err := ns.dbClient.DeactivateNamespace(ctx, req.Id); 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
}