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

Table of Contents

+
  • + EActiveStateEnum +
  • + @@ -281,11 +285,11 @@

    Table of Contents

  • - MDeleteNamespaceRequest + MDeactivateNamespaceRequest
  • - MDeleteNamespaceResponse + MDeactivateNamespaceResponse
  • @@ -376,19 +380,19 @@

    Table of Contents

  • - MDeleteAttributeRequest + MDeactivateAttributeRequest
  • - MDeleteAttributeResponse + MDeactivateAttributeResponse
  • - MDeleteAttributeValueRequest + MDeactivateAttributeValueRequest
  • - MDeleteAttributeValueResponse + MDeactivateAttributeValueResponse
  • @@ -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

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameNumberDescription
    ACTIVE_STATE_ENUM_UNSPECIFIED0

    ACTIVE_STATE_ENUM_ACTIVE1

    ACTIVE_STATE_ENUM_INACTIVE2

    ACTIVE_STATE_ENUM_ANY3

    + @@ -1527,7 +1566,7 @@

    CreateNamespaceResponse

    -

    DeleteNamespaceRequest

    +

    DeactivateNamespaceRequest

    @@ -1551,7 +1590,7 @@

    DeleteNamespaceRequest

    -

    DeleteNamespaceResponse

    +

    DeactivateNamespaceResponse

    @@ -1610,6 +1649,23 @@

    ListNamespacesRequest

    + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    statecommon.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

    + + + + + + + + + + + + + + +
    FieldTypeLabelDescription
    statecommon.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 }