This operation configures or updates the retention period for objects uploaded to a bucket with WORM enabled.
To configure or update the retention 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&versionId=versionid HTTP/1.1Host: bucketname.obs.region.example.comDate: dateAuthorization: authorization<Retention><Mode>String</Mode><RetainUntilDate>Timestamp</RetainUntilDate></Retention>
Table 1 describes the request parameters.
Parameter | Mandatory (Yes/No) | Type | Description |
|---|---|---|---|
retention | Yes | String | Definition: Indicates that the operation is to configure or modify the retention period of an object. Constraints: None Range: None Default value: None |
versionId | No | String | Definition: Object version ID The WORM policy of the specified object version is to be changed. If this parameter is not carried, the operation applies to the current object version. Constraints: None Range: The value must contain 32 characters. Default value: None. If this parameter is not configured, the latest version of the object is specified. |
This request uses common headers. For details, see Table 3.
Parameter | Mandatory (Yes/No) | Type | Description |
|---|---|---|---|
Retention | Yes | Container | Definition: Container for object-level WORM policy configuration. Retention is the parent node of Mode and RetainUntilDate. Constraints: None Range: For details, see Table 3. Default value: None |
Parameter | Mandatory (Yes/No) | Type | Description |
|---|---|---|---|
Mode | Yes | String | Definition: Retention policy of the object. Constraints: None Range: COMPLIANCE: compliance mode Default value: None |
RetainUntilDate | Yes | Long | Definition: Retention period for the object. Its value is a timestamp accurate to milliseconds, for example, 1435728035000 (corresponding to 13:20:35 on July 1, 2015). Example: 1435728035000 Constraints: The specified time must be later than the current time and can be extended but not shortened. Range: None Default value: None |
HTTP/1.1 status_codeDate: dateContent-Length: length
This response uses common headers. For details, see Table 1.
This response contains no elements.
Table 4 describes possible special errors in this request.
Error Code | Description | HTTP Status Code |
|---|---|---|
InvalidRequest | The object lock is disabled for the bucket. | 400 |
InvalidRequest | The retention period date must be later than the current or the configured date. | 400 |
MalformedObjectLockError | Invalid policy configuration format. | 400 |
For other errors, see Table 2.
PUT /objectname?retention HTTP/1.1Host: bucketname.obs.region.example.comDate: WED, 01 Jul 2015 02:25:05 GMTAuthorization: OBS H4IPJX0TQTHTHEBQQCEC:75/Y4Ng1izvzc1nTGxpMXTE6ynw=Content-Type: application/xmlContent-Length: 157<Retention><Mode>COMPLIANCE</Mode><RetainUntilDate>1435728035000</RetainUntilDate></Retention>
HTTP/1.1 200 OKServer: OBSx-obs-request-id: BF260000016435CE298386946AE4C482x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCT9W2tcvLmMJ+plfdopaD62S0npbaRUzDate: WED, 01 Jul 2015 02:25:06 GMTContent-Length: 0