diff --git a/CHANGELOG.md b/CHANGELOG.md index 9f6053d..1c9dbc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,7 +7,7 @@ - Container `__NEOFS__LOCK_UNTIL` attribute (#357) - `CONTAINER_LOCKED` status (#357) - `CONTAINER_AWAIT_TIMEOUT` status (#358) -- `SetAttribute` and `RemoveAttribute` RPC to `ContainerService` (#362) +- `SetAttribute` and `RemoveAttribute` RPC to `ContainerService` (#362, #375) - `SETATTRIBUTE` and `REMOVEATTRIBUTE` verbs for container sessions V1 (#362) - Container `S3_TAGS`, `S3_SETTINGS`, `S3_NOTIFICATIONS` attributes (#371) diff --git a/container/service.proto b/container/service.proto index ed803ef..b0bea4c 100644 --- a/container/service.proto +++ b/container/service.proto @@ -533,17 +533,8 @@ message SetAttributeRequest { // Attribute setting response message SetAttributeResponse { - // Request result message. - message Body { - // Operation execution status. - neo.fs.v2.status.Status status = 1; - } - - // Request result. - Body body = 1; - - // Signature of stable-marshalled `body` field. - neo.fs.v2.refs.Signature body_signature = 2; + // Operation execution status. + neo.fs.v2.status.Status status = 1; } // Attribute removal request @@ -608,15 +599,6 @@ message RemoveAttributeRequest { // Attribute removal response message RemoveAttributeResponse { - // Request result message. - message Body { - // Operation execution status. - neo.fs.v2.status.Status status = 1; - } - - // Request result. - Body body = 1; - - // Signature of stable-marshalled `body` field. - neo.fs.v2.refs.Signature body_signature = 2; + // Operation execution status. + neo.fs.v2.status.Status status = 1; } diff --git a/proto-docs/container.md b/proto-docs/container.md index 96c48d0..9638dd6 100644 --- a/proto-docs/container.md +++ b/proto-docs/container.md @@ -37,12 +37,10 @@ - [RemoveAttributeRequest.Body](#neo.fs.v2.container.RemoveAttributeRequest.Body) - [RemoveAttributeRequest.Body.Parameters](#neo.fs.v2.container.RemoveAttributeRequest.Body.Parameters) - [RemoveAttributeResponse](#neo.fs.v2.container.RemoveAttributeResponse) - - [RemoveAttributeResponse.Body](#neo.fs.v2.container.RemoveAttributeResponse.Body) - [SetAttributeRequest](#neo.fs.v2.container.SetAttributeRequest) - [SetAttributeRequest.Body](#neo.fs.v2.container.SetAttributeRequest.Body) - [SetAttributeRequest.Body.Parameters](#neo.fs.v2.container.SetAttributeRequest.Body.Parameters) - [SetAttributeResponse](#neo.fs.v2.container.SetAttributeResponse) - - [SetAttributeResponse.Body](#neo.fs.v2.container.SetAttributeResponse.Body) - [SetExtendedACLRequest](#neo.fs.v2.container.SetExtendedACLRequest) - [SetExtendedACLRequest.Body](#neo.fs.v2.container.SetExtendedACLRequest.Body) - [SetExtendedACLResponse](#neo.fs.v2.container.SetExtendedACLResponse) @@ -621,18 +619,6 @@ Attribute-specific requirements: Attribute removal response -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| body | [RemoveAttributeResponse.Body](#neo.fs.v2.container.RemoveAttributeResponse.Body) | | Request result. | -| body_signature | [neo.fs.v2.refs.Signature](#neo.fs.v2.refs.Signature) | | Signature of stable-marshalled `body` field. | - - - - -### Message RemoveAttributeResponse.Body -Request result message. - - | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | status | [neo.fs.v2.status.Status](#neo.fs.v2.status.Status) | | Operation execution status. | @@ -704,18 +690,6 @@ creation. Attribute-specific requirements: Attribute setting response -| Field | Type | Label | Description | -| ----- | ---- | ----- | ----------- | -| body | [SetAttributeResponse.Body](#neo.fs.v2.container.SetAttributeResponse.Body) | | Request result. | -| body_signature | [neo.fs.v2.refs.Signature](#neo.fs.v2.refs.Signature) | | Signature of stable-marshalled `body` field. | - - - - -### Message SetAttributeResponse.Body -Request result message. - - | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | | status | [neo.fs.v2.status.Status](#neo.fs.v2.status.Status) | | Operation execution status. | diff --git a/proto-docs/session.md b/proto-docs/session.md index b10e6e6..0d9f468 100644 --- a/proto-docs/session.md +++ b/proto-docs/session.md @@ -248,8 +248,7 @@ SessionContextV2 carries unified context for both ObjectService and ContainerSer | Field | Type | Label | Description | | ----- | ---- | ----- | ----------- | -| container | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | | Container where operation is allowed. For container operations, this is the container being operated on. For object operations, this is the container holding the objects. Empty container ID means wildcard (applies to all containers). Objects list is ignored for wildcard contexts. | -| objects | [neo.fs.v2.refs.ObjectID](#neo.fs.v2.refs.ObjectID) | repeated | Specific objects where operation is allowed. Only relevant for object operations. Empty list means all objects in the container. Maximum number of objects: 1000. | +| container | [neo.fs.v2.refs.ContainerID](#neo.fs.v2.refs.ContainerID) | | Container where operation is allowed. For container operations, this is the container being operated on. For object operations, this is the container holding the objects. Empty container ID means wildcard (applies to all containers). | | verbs | [Verb](#neo.fs.v2.session.Verb) | repeated | Operations authorized for this context. Must contain at least one verb (empty list is invalid). Verbs must be sorted in ascending order. Maximum number of verbs: 12. | @@ -326,7 +325,7 @@ Session Token body. Validation rules: 1. Only one wildcard context (empty container ID) is allowed per token. Wildcard context must come first if present. 2. Contexts must be sorted in ascending order by ContainerID. 3. Duplicate containers are not allowed (each container can appear only once). 4. Each context must have at least one verb (enforced by SessionContextV2). 5. Verbs within each context must be sorted in ascending order (enforced by SessionContextV2). 6. Maximum number of contexts: 16. -Delegation rules (when origin token is present): 1. New contexts (containers) can only be added if origin token has a wildcard context. 2. All rights must be narrowed during delegation: - Verbs must be a subset of origin's verbs for the same container - Objects (if specified) must be a subset of origin's objects - Cannot add new verbs not present in origin for the same container | +Delegation rules (when origin token is present): 1. New contexts (containers) can only be added if origin token has a wildcard context. 2. All rights must be narrowed during delegation: - Verbs must be a subset of origin's verbs for the same container - Cannot add new verbs not present in origin for the same container | | final | [bool](#bool) | | final is a flag indicating whether further delegation is allowed. If set to true, subjects of this token cannot delegate their rights further. |