From 77e27a51867d55d2a4176ee82d19b1dc397c2b0a Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Mon, 3 Nov 2025 14:10:54 -0800 Subject: [PATCH 1/8] Alternate type to string type --- specification/storage/Microsoft.BlobStorage/client.tsp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/specification/storage/Microsoft.BlobStorage/client.tsp b/specification/storage/Microsoft.BlobStorage/client.tsp index dda836e75795..9aacc8719f89 100644 --- a/specification/storage/Microsoft.BlobStorage/client.tsp +++ b/specification/storage/Microsoft.BlobStorage/client.tsp @@ -40,6 +40,8 @@ namespace Customizations; "rust" ); +@@alternateType(AccessPolicy.expiry, string, "rust"); +@@alternateType(AccessPolicy.start, string, "rust"); @@alternateType(BlobPropertiesInternal.contentLength, uint64, "rust"); @@alternateType(BlobContentLengthRequired.blobContentLength, uint64, "rust"); @@alternateType(ContentLengthResponseHeader.contentLength, uint64, "rust"); From a0518c70e16727905e2261e093d9995f42d7956f Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Wed, 5 Nov 2025 15:00:19 -0800 Subject: [PATCH 2/8] More accurately describe SignedIdentifiers --- specification/storage/Microsoft.BlobStorage/models.tsp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/specification/storage/Microsoft.BlobStorage/models.tsp b/specification/storage/Microsoft.BlobStorage/models.tsp index 488e4ef7b5ba..23cab4852e6f 100644 --- a/specification/storage/Microsoft.BlobStorage/models.tsp +++ b/specification/storage/Microsoft.BlobStorage/models.tsp @@ -435,8 +435,12 @@ model BlockLookupList { } /** Represents an array of signed identifiers */ -@Xml.name("SignedIdentifiers") -model SignedIdentifiers is Array; +model SignedIdentifiers { + /** The array of signed identifiers. */ + @Xml.unwrapped + @Xml.name("SignedIdentifier") + items: Array; +} /** The signed identifier. */ @Xml.name("SignedIdentifier") From 863cc379bf5a278cf424c98729af41be01415eec Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Wed, 5 Nov 2025 16:03:32 -0800 Subject: [PATCH 3/8] Test making signedidentifiers optional to allow for clearing --- specification/storage/Microsoft.BlobStorage/routes.tsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/storage/Microsoft.BlobStorage/routes.tsp b/specification/storage/Microsoft.BlobStorage/routes.tsp index 27ea1d8940bd..71ff6aeebb68 100644 --- a/specification/storage/Microsoft.BlobStorage/routes.tsp +++ b/specification/storage/Microsoft.BlobStorage/routes.tsp @@ -342,7 +342,7 @@ interface Container { /** The access control list for the container. */ #suppress "@azure-tools/typespec-azure-core/request-body-problem" "Existing API" @body - containerAcl: SignedIdentifiers; + containerAcl?: SignedIdentifiers; ...TimeoutParameter; ...LeaseIdOptionalParameter; From 5b49d1273d30668104eaf5db504983e4ca0c6f93 Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Wed, 5 Nov 2025 16:08:45 -0800 Subject: [PATCH 4/8] body -> bodyRoot to make it optional param hopefully --- specification/storage/Microsoft.BlobStorage/routes.tsp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specification/storage/Microsoft.BlobStorage/routes.tsp b/specification/storage/Microsoft.BlobStorage/routes.tsp index 71ff6aeebb68..58d593f1d2fb 100644 --- a/specification/storage/Microsoft.BlobStorage/routes.tsp +++ b/specification/storage/Microsoft.BlobStorage/routes.tsp @@ -341,7 +341,7 @@ interface Container { { /** The access control list for the container. */ #suppress "@azure-tools/typespec-azure-core/request-body-problem" "Existing API" - @body + @bodyRoot containerAcl?: SignedIdentifiers; ...TimeoutParameter; From f38fa651becb53a5af9354b7d75948af995d1d5d Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Wed, 5 Nov 2025 16:19:37 -0800 Subject: [PATCH 5/8] revert, no current solution for optional param not shoved into options bag --- specification/storage/Microsoft.BlobStorage/routes.tsp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specification/storage/Microsoft.BlobStorage/routes.tsp b/specification/storage/Microsoft.BlobStorage/routes.tsp index 58d593f1d2fb..27ea1d8940bd 100644 --- a/specification/storage/Microsoft.BlobStorage/routes.tsp +++ b/specification/storage/Microsoft.BlobStorage/routes.tsp @@ -341,8 +341,8 @@ interface Container { { /** The access control list for the container. */ #suppress "@azure-tools/typespec-azure-core/request-body-problem" "Existing API" - @bodyRoot - containerAcl?: SignedIdentifiers; + @body + containerAcl: SignedIdentifiers; ...TimeoutParameter; ...LeaseIdOptionalParameter; From 3913dd84023f99de178b889a1c02023585d4976f Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Fri, 7 Nov 2025 14:44:51 -0800 Subject: [PATCH 6/8] Remove alternate type, swap RFC7231 -> RFC3339 --- specification/storage/Microsoft.BlobStorage/client.tsp | 2 -- specification/storage/Microsoft.BlobStorage/models.tsp | 4 ++-- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/specification/storage/Microsoft.BlobStorage/client.tsp b/specification/storage/Microsoft.BlobStorage/client.tsp index 9aacc8719f89..dda836e75795 100644 --- a/specification/storage/Microsoft.BlobStorage/client.tsp +++ b/specification/storage/Microsoft.BlobStorage/client.tsp @@ -40,8 +40,6 @@ namespace Customizations; "rust" ); -@@alternateType(AccessPolicy.expiry, string, "rust"); -@@alternateType(AccessPolicy.start, string, "rust"); @@alternateType(BlobPropertiesInternal.contentLength, uint64, "rust"); @@alternateType(BlobContentLengthRequired.blobContentLength, uint64, "rust"); @@alternateType(ContentLengthResponseHeader.contentLength, uint64, "rust"); diff --git a/specification/storage/Microsoft.BlobStorage/models.tsp b/specification/storage/Microsoft.BlobStorage/models.tsp index 23cab4852e6f..206d85a80cde 100644 --- a/specification/storage/Microsoft.BlobStorage/models.tsp +++ b/specification/storage/Microsoft.BlobStorage/models.tsp @@ -788,12 +788,12 @@ enum LeaseStatus { model AccessPolicy { /** The date-time the policy is active. */ @Xml.name("Start") - @encode("rfc7231") + @encode("rfc3339") start: utcDateTime; /** The date-time the policy expires. */ @Xml.name("Expiry") - @encode("rfc7231") + @encode("rfc3339") expiry: utcDateTime; /** The permissions for acl the policy. */ From 1c722de0ea8cd9168e9e605c4a206cb18b8b83ca Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Fri, 21 Nov 2025 13:06:08 -0800 Subject: [PATCH 7/8] Swap to fixed width --- specification/storage/Microsoft.BlobStorage/models.tsp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specification/storage/Microsoft.BlobStorage/models.tsp b/specification/storage/Microsoft.BlobStorage/models.tsp index 2e2fb102dbe8..d8bb4a71d55f 100644 --- a/specification/storage/Microsoft.BlobStorage/models.tsp +++ b/specification/storage/Microsoft.BlobStorage/models.tsp @@ -788,12 +788,12 @@ enum LeaseStatus { model AccessPolicy { /** The date-time the policy is active. */ @Xml.name("Start") - @encode("rfc3339") + @encode("rfc3339-fixed-width") start: utcDateTime; /** The date-time the policy expires. */ @Xml.name("Expiry") - @encode("rfc3339") + @encode("rfc3339-fixed-width") expiry: utcDateTime; /** The permissions for acl the policy. */ From 2da0145e46b037ff44dd85648e85b97220d72c5b Mon Sep 17 00:00:00 2001 From: Vincent Tran Date: Fri, 21 Nov 2025 13:27:16 -0800 Subject: [PATCH 8/8] Remove alternateType --- specification/storage/Microsoft.BlobStorage/client.tsp | 2 -- 1 file changed, 2 deletions(-) diff --git a/specification/storage/Microsoft.BlobStorage/client.tsp b/specification/storage/Microsoft.BlobStorage/client.tsp index 9aacc8719f89..dda836e75795 100644 --- a/specification/storage/Microsoft.BlobStorage/client.tsp +++ b/specification/storage/Microsoft.BlobStorage/client.tsp @@ -40,8 +40,6 @@ namespace Customizations; "rust" ); -@@alternateType(AccessPolicy.expiry, string, "rust"); -@@alternateType(AccessPolicy.start, string, "rust"); @@alternateType(BlobPropertiesInternal.contentLength, uint64, "rust"); @@alternateType(BlobContentLengthRequired.blobContentLength, uint64, "rust"); @@alternateType(ContentLengthResponseHeader.contentLength, uint64, "rust");