This operation configures or updates the retention period for objects uploaded to a bucket with WORM enabled.
To configure or update the protection period of an object, you must have the PutObjectRetention permission.
OBS automatically enables versioning when you enable WORM for a bucket. In such case, the object you uploaded to the bucket will be assigned a version ID. An object-level WORM policy is applied to the current object version by default, but you can specify a version ID to make the policy applied to a specific object version. The WORM configuration does not apply to a delete marker with a unique version ID.
Before a multipart upload is complete, the default bucket-level WORM policy is not automatically applied to the object parts uploaded. Besides, you cannot configure an object-level WORM policy using a header when you upload a part or assemble the object parts, or for a part that is already uploaded to the bucket. You can call this API to configure a WORM retention policy for the new object after the object parts are assembled.
PUT /ObjectName?retention HTTP/1.1 Host: bucketname.obs.region.example.com Date: date Authorization: authorization <Retention> <Mode>String</Mode> <RetainUntilDate>Timestamp</RetainUntilDate> </Retention>
Table 1 describes the parameters.
This request uses common headers. For details, see Table 3.
Element |
Description |
Mandatory |
---|---|---|
Retention |
Container for configuring an object-level WORM retention policy. Type: container |
Yes |
Mode |
Protection mode for the object. It can only be set to COMPLIANCE now. Type: string Example: COMPLIANCE |
Yes |
RetainUntilDate |
Protection period for the object. Its value is a timestamp accurate to milliseconds, for example, 1435728035000 (corresponding to 13:20:35 on July 1, 2015). NOTE:
The value of this field must be later than the current time and can be extended but not shortened. Type: long Example: 1435728035000 Remarks: Its value is a timestamp accurate to milliseconds in Unix time. |
Yes |
HTTP/1.1 status_code Date: date Content-Length: length
This response uses common headers. For details, see Table 1.
This response involves no elements.
Table 2 describes possible special errors in this request.
Error Code |
Description |
HTTP Status Code |
---|---|---|
InvalidRequest |
The object retention period cannot be configured, because object lock is not enabled for the bucket. |
400 |
InvalidRequest |
The retention period date must be later than the current or the configured date. |
400 |
MalformedObjectLockError |
Invalid format of the Object Lock configuration. The XML you provided was not well-formed or did not validate against our published schema. |
400 |
NoSuchVersion |
The specified version does not exist. |
400 |
For other errors, see Table 2.
PUT /objectname?retention HTTP/1.1
Host: bucketname.obs.region.example.com
Date: WED, 01 Jul 2015 02:25:05 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:75/Y4Ng1izvzc1nTGxpMXTE6ynw=
Content-Type: application/xml
Content-Length: 157
<Retention>
<Mode>COMPLIANCE</Mode>
<RetainUntilDate>1435728035000</RetainUntilDate>
</Retention>
HTTP/1.1 200 OK Server: OBS x-obs-request-id: BF260000016435CE298386946AE4C482 x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCT9W2tcvLmMJ+plfdopaD62S0npbaRUz Date: WED, 01 Jul 2015 02:25:06 GMT Content-Length: 0