diff --git a/specification/storage/Microsoft.BlobStorage/models.tsp b/specification/storage/Microsoft.BlobStorage/models.tsp index bfe2ae056ead..bd4fa92879b9 100644 --- a/specification/storage/Microsoft.BlobStorage/models.tsp +++ b/specification/storage/Microsoft.BlobStorage/models.tsp @@ -2323,6 +2323,36 @@ alias PageWriteParameter = { pageWrite: TPageWrite; }; +alias IfBlobMatchHeader = { + /** Specify an ETag value to operate only on blobs with a matching value. */ + @added(Versions.v2026_02_06) + @header("x-ms-blob-if-match") + ifMatch?: string; +}; + +alias IfBlobModifiedSinceHeader = { + /** Specify this header value to operate only on a blob if it has been modified since the specified date/time. */ + @added(Versions.v2026_02_06) + @header("x-ms-blob-if-modified-since") + @encode("rfc7231") + ifModifiedSince?: utcDateTime; +}; + +alias IfBlobNoneMatchHeader = { + /** Specify an ETag value to operate only on blobs without a matching value. */ + @added(Versions.v2026_02_06) + @header("x-ms-blob-if-none-match") + ifNoneMatch?: string; +}; + +alias IfBlobUnmodifiedSinceHeader = { + /** Specify this header value to operate only on a blob if it has not been modified since the specified date/time. */ + @added(Versions.v2026_02_06) + @header("x-ms-blob-if-unmodified-since") + @encode("rfc7231") + ifUnmodifiedSince?: utcDateTime; +}; + alias ListBlobsStartFrom = { /** Specifies the relative path to list paths from. For non-recursive list, only one entity level is supported; For recursive list, multiple entity levels are supported. (Inclusive) */ @added(Versions.v2026_02_06) diff --git a/specification/storage/Microsoft.BlobStorage/routes.tsp b/specification/storage/Microsoft.BlobStorage/routes.tsp index a785ebd77d46..da080db30133 100644 --- a/specification/storage/Microsoft.BlobStorage/routes.tsp +++ b/specification/storage/Microsoft.BlobStorage/routes.tsp @@ -1459,6 +1459,10 @@ namespace Storage.Blob { ...VersionIdParameter; ...LeaseIdOptionalParameter; ...IfTagsParameter; + ...IfBlobModifiedSinceHeader; + ...IfBlobUnmodifiedSinceHeader; + ...IfBlobMatchHeader; + ...IfBlobNoneMatchHeader; }, { ...DateResponseHeader; @@ -1487,6 +1491,11 @@ namespace Storage.Blob { /** The blob tags. */ @body tags: BlobTags; + + ...IfBlobModifiedSinceHeader; + ...IfBlobUnmodifiedSinceHeader; + ...IfBlobMatchHeader; + ...IfBlobNoneMatchHeader; }, { @statusCode statusCode: 204; diff --git a/specification/storage/data-plane/Microsoft.BlobStorage/stable/2026-02-06/generated_blob.json b/specification/storage/data-plane/Microsoft.BlobStorage/stable/2026-02-06/generated_blob.json index ae6748da3501..5c3f6d1df44e 100644 --- a/specification/storage/data-plane/Microsoft.BlobStorage/stable/2026-02-06/generated_blob.json +++ b/specification/storage/data-plane/Microsoft.BlobStorage/stable/2026-02-06/generated_blob.json @@ -8441,6 +8441,40 @@ "type": "string", "x-ms-client-name": "ifTags" }, + { + "name": "x-ms-blob-if-modified-since", + "in": "header", + "description": "Specify this header value to operate only on a blob if it has been modified since the specified date/time.", + "required": false, + "type": "string", + "format": "date-time-rfc7231", + "x-ms-client-name": "ifModifiedSince" + }, + { + "name": "x-ms-blob-if-unmodified-since", + "in": "header", + "description": "Specify this header value to operate only on a blob if it has not been modified since the specified date/time.", + "required": false, + "type": "string", + "format": "date-time-rfc7231", + "x-ms-client-name": "ifUnmodifiedSince" + }, + { + "name": "x-ms-blob-if-match", + "in": "header", + "description": "Specify an ETag value to operate only on blobs with a matching value.", + "required": false, + "type": "string", + "x-ms-client-name": "ifMatch" + }, + { + "name": "x-ms-blob-if-none-match", + "in": "header", + "description": "Specify an ETag value to operate only on blobs without a matching value.", + "required": false, + "type": "string", + "x-ms-client-name": "ifNoneMatch" + }, { "name": "x-ms-client-request-id", "in": "header", @@ -8590,6 +8624,40 @@ "type": "string", "x-ms-client-name": "leaseId" }, + { + "name": "x-ms-blob-if-modified-since", + "in": "header", + "description": "Specify this header value to operate only on a blob if it has been modified since the specified date/time.", + "required": false, + "type": "string", + "format": "date-time-rfc7231", + "x-ms-client-name": "ifModifiedSince" + }, + { + "name": "x-ms-blob-if-unmodified-since", + "in": "header", + "description": "Specify this header value to operate only on a blob if it has not been modified since the specified date/time.", + "required": false, + "type": "string", + "format": "date-time-rfc7231", + "x-ms-client-name": "ifUnmodifiedSince" + }, + { + "name": "x-ms-blob-if-match", + "in": "header", + "description": "Specify an ETag value to operate only on blobs with a matching value.", + "required": false, + "type": "string", + "x-ms-client-name": "ifMatch" + }, + { + "name": "x-ms-blob-if-none-match", + "in": "header", + "description": "Specify an ETag value to operate only on blobs without a matching value.", + "required": false, + "type": "string", + "x-ms-client-name": "ifNoneMatch" + }, { "name": "x-ms-client-request-id", "in": "header",