From b59e9d28fc7d4c6638cd9b030751abc57902d35a Mon Sep 17 00:00:00 2001 From: alyssarcano <63893679+alyssarcano@users.noreply.github.com> Date: Fri, 1 May 2026 15:00:43 -0500 Subject: [PATCH 01/20] Update OpenAPI specs for new publish template endpoint --- specs/Data-Gateway.json | 51 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 9fbc553..eb04737 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -180,6 +180,22 @@ "value": "Microsoft Enterprise" } } + }, + "templateId": { + "description": "The object ID of the Cloud Matrix template metadata record to publish.", + "in": "path", + "name": "templateId", + "required": true, + "schema": { + "$ref": "#/components/schemas/Uuid" + }, + "examples": { + "Valid Template ID": { + "summary": "Example Valid Template ID", + "description": "An example UUID string that represents a valid Cloud Matrix template metadata record ID.", + "value": "5a2f4c89-7d68-4f2e-8d40-2dca5d5a5c11" + } + } } }, "responses": { @@ -9351,6 +9367,41 @@ "summary": "Get a Specific Cloud Matrix Assessment Template" } }, + "/Api/CloudMatrix/Template/{templateId}/Publish": { + "patch": { + "description": "Publishes the specified Cloud Matrix assessment template metadata record. If the template is already published, the operation still succeeds without making further changes.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission).", + "operationId": "/Api/CloudMatrix/Template/:templateId/Publish/Patch", + "parameters": [ + { + "$ref": "#/components/parameters/templateId" + } + ], + "responses": { + "200": { + "description": "Template published successfully." + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "tags": [ + "Cloud Matrix" + ], + "summary": "Publish Cloud Matrix Assessment Template" + } + }, "/Api/CloudMatrix/Template": { "post": { "description": "Add or update a value assessment template. When the specified template name exists, it will overwrite the existing template JSON file in blob storage.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission).", From 780f0ab0d0083da4f0426e4fcbea88bb3e13f66c Mon Sep 17 00:00:00 2001 From: alyssarcano <63893679+alyssarcano@users.noreply.github.com> Date: Tue, 5 May 2026 08:50:44 -0500 Subject: [PATCH 02/20] Updating version --- src/dataGateway/TypeScript/package-lock.json | 28 ++------------------ src/dataGateway/TypeScript/package.json | 2 +- 2 files changed, 3 insertions(+), 27 deletions(-) diff --git a/src/dataGateway/TypeScript/package-lock.json b/src/dataGateway/TypeScript/package-lock.json index 38cb3e9..0f7ff84 100644 --- a/src/dataGateway/TypeScript/package-lock.json +++ b/src/dataGateway/TypeScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "@shi-corp/sdk-data-gateway", - "version": "3.2.1", + "version": "3.2.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@shi-corp/sdk-data-gateway", - "version": "3.2.1", + "version": "3.2.2", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.100", @@ -1436,9 +1436,6 @@ "arm64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1453,9 +1450,6 @@ "arm64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1470,9 +1464,6 @@ "ppc64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1487,9 +1478,6 @@ "riscv64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1504,9 +1492,6 @@ "riscv64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ @@ -1521,9 +1506,6 @@ "s390x" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1538,9 +1520,6 @@ "x64" ], "dev": true, - "libc": [ - "glibc" - ], "license": "MIT", "optional": true, "os": [ @@ -1555,9 +1534,6 @@ "x64" ], "dev": true, - "libc": [ - "musl" - ], "license": "MIT", "optional": true, "os": [ diff --git a/src/dataGateway/TypeScript/package.json b/src/dataGateway/TypeScript/package.json index 6ee2f40..e3cd51c 100644 --- a/src/dataGateway/TypeScript/package.json +++ b/src/dataGateway/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@shi-corp/sdk-data-gateway", - "version": "3.2.1", + "version": "3.2.2", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHI Data Gateway service.", From 10843e53673719fee0d43253a1766f7d09cf2581 Mon Sep 17 00:00:00 2001 From: Craig Whittington Date: Thu, 7 May 2026 10:39:03 +0100 Subject: [PATCH 03/20] Updated json and bumped version number to account for new params --- specs/Data-Gateway.json | 66 ++++++++++++++++++-- src/dataGateway/TypeScript/package-lock.json | 4 +- src/dataGateway/TypeScript/package.json | 2 +- 3 files changed, 65 insertions(+), 7 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index eb04737..7316c55 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -196,6 +196,38 @@ "value": "5a2f4c89-7d68-4f2e-8d40-2dca5d5a5c11" } } + }, + "type": { + "description": "Name of the Cloud Matrix template type", + "in": "path", + "name": "type", + "required": true, + "schema": { + "$ref": "#/components/schemas/CloudMatrix.Type" + }, + "examples": { + "Valid Template Type": { + "summary": "Example Valid Template Type", + "description": "An example of a valid template type.", + "value": "Google" + } + } + }, + "updateType": { + "description": "Name of the Cloud Matrix template update type", + "in": "path", + "name": "updateType", + "required": true, + "schema": { + "$ref": "#/components/schemas/CloudMatrix.UpdateType" + }, + "examples": { + "Valid Template Update Type": { + "summary": "Example Valid Template Update Type", + "description": "An example of a valid template update type.", + "value": "Major" + } + } } }, "responses": { @@ -4550,11 +4582,19 @@ }, "templateContent": { "$ref": "#/components/schemas/CloudMatrix.BulkCloudMatrix" + }, + "type": { + "$ref": "#/components/schemas/CloudMatrix.Type" + }, + "updateType": { + "$ref": "#/components/schemas/CloudMatrix.UpdateType" } }, "required": [ "templateName", - "templateContent" + "templateContent", + "type", + "updateType" ], "examples": [ { @@ -4733,14 +4773,30 @@ "type": "string", "minLength": 2, "maxLength": 100, - "pattern": "^[A-Za-z0-9][A-Za-z0-9_ -]*[A-Za-z0-9]$", - "description": "A valid template name allows alphanumeric characters, spaces, underscores, and hyphens, but may not start or end with special characters.", + "description": "The name of the template", "examples": [ "Microsoft Enterprise", "Microsoft_Academic", "Google-Workspace" ] }, + "CloudMatrix.Type": { + "type": "string", + "description": "A valid template type.", + "examples": [ + "Microsoft", + "Google" + ] + }, + "CloudMatrix.UpdateType": { + "type": "string", + "description": "Update type, Major, Minor or Patch.", + "examples": [ + "Major", + "Minor", + "Patch" + ] + }, "CloudMatrix.TemplateMetadata": { "title": "Cloud Matrix Template File Metadata", "type": "object", @@ -9404,7 +9460,7 @@ }, "/Api/CloudMatrix/Template": { "post": { - "description": "Add or update a value assessment template. When the specified template name exists, it will overwrite the existing template JSON file in blob storage.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission).", + "description": "Creates the template metadata and adds or updates a value assessment template. When the specified template name exists, it will overwrite the existing template JSON file in blob storage.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission)", "operationId": "/Api/CloudMatrix/Template/Post", "requestBody": { "required": true, @@ -9416,6 +9472,8 @@ "summary": "A sample value assessment template upload request for the Microsoft Enterprise template.", "value": { "templateName": "Microsoft Enterprise", + "type": "Microsoft", + "updateType": "Major", "templateContent": { "title": "CloudMatrix Value Assessment - Microsoft Enterprise", "description": "MICROSOFT CLOUD ADOPTION MATRIX v5.0 for Microsoft Enterprise", diff --git a/src/dataGateway/TypeScript/package-lock.json b/src/dataGateway/TypeScript/package-lock.json index 0f7ff84..08e967c 100644 --- a/src/dataGateway/TypeScript/package-lock.json +++ b/src/dataGateway/TypeScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "@shi-corp/sdk-data-gateway", - "version": "3.2.2", + "version": "3.2.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@shi-corp/sdk-data-gateway", - "version": "3.2.2", + "version": "3.2.3", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.100", diff --git a/src/dataGateway/TypeScript/package.json b/src/dataGateway/TypeScript/package.json index e3cd51c..a17f6b1 100644 --- a/src/dataGateway/TypeScript/package.json +++ b/src/dataGateway/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@shi-corp/sdk-data-gateway", - "version": "3.2.2", + "version": "3.2.3", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHI Data Gateway service.", From f5766b1aae61e942af8c89eba82b0c99468e9508 Mon Sep 17 00:00:00 2001 From: Craig Whittington Date: Thu, 7 May 2026 11:01:58 +0100 Subject: [PATCH 04/20] Changed pattern and description back for templateName --- specs/Data-Gateway.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 7316c55..6dfcb10 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -4773,7 +4773,8 @@ "type": "string", "minLength": 2, "maxLength": 100, - "description": "The name of the template", + "pattern": "^[A-Za-z0-9][A-Za-z0-9_ -]*[A-Za-z0-9]$", + "description": "A valid template name allows alphanumeric characters, spaces, underscores, and hyphens, but may not start or end with special characters.", "examples": [ "Microsoft Enterprise", "Microsoft_Academic", From c83787d683dbedc6a295ac9452f8c484c9628e05 Mon Sep 17 00:00:00 2001 From: Craig Whittington Date: Thu, 7 May 2026 11:29:32 +0100 Subject: [PATCH 05/20] Removed unrequired parameters --- specs/Data-Gateway.json | 32 -------------------------------- 1 file changed, 32 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 6dfcb10..1232920 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -196,38 +196,6 @@ "value": "5a2f4c89-7d68-4f2e-8d40-2dca5d5a5c11" } } - }, - "type": { - "description": "Name of the Cloud Matrix template type", - "in": "path", - "name": "type", - "required": true, - "schema": { - "$ref": "#/components/schemas/CloudMatrix.Type" - }, - "examples": { - "Valid Template Type": { - "summary": "Example Valid Template Type", - "description": "An example of a valid template type.", - "value": "Google" - } - } - }, - "updateType": { - "description": "Name of the Cloud Matrix template update type", - "in": "path", - "name": "updateType", - "required": true, - "schema": { - "$ref": "#/components/schemas/CloudMatrix.UpdateType" - }, - "examples": { - "Valid Template Update Type": { - "summary": "Example Valid Template Update Type", - "description": "An example of a valid template update type.", - "value": "Major" - } - } } }, "responses": { From 965118da4e7bcb1bb377a4befa076510db17cd3e Mon Sep 17 00:00:00 2001 From: Craig Whittington Date: Thu, 7 May 2026 11:30:20 +0100 Subject: [PATCH 06/20] Update comment text --- specs/Data-Gateway.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 1232920..1d3ceaf 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -9429,7 +9429,7 @@ }, "/Api/CloudMatrix/Template": { "post": { - "description": "Creates the template metadata and adds or updates a value assessment template. When the specified template name exists, it will overwrite the existing template JSON file in blob storage.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission)", + "description": "Creates the template metadata and adds or updates a value assessment template. When the specified template name exists, it will overwrite the existing template JSON file in blob storage.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission).", "operationId": "/Api/CloudMatrix/Template/Post", "requestBody": { "required": true, From e36dfb47292993c6afc511f44ebb11eb723f13b9 Mon Sep 17 00:00:00 2001 From: Craig Whittington Date: Thu, 7 May 2026 11:43:04 +0100 Subject: [PATCH 07/20] Updated example --- specs/Data-Gateway.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 1d3ceaf..e82ae17 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -4567,6 +4567,8 @@ "examples": [ { "templateName": "Microsoft Enterprise", + "type": "Microsoft", + "updateType": "Major", "templateContent": { "title": "CloudMatrix Value Assessment - Microsoft Enterprise", "description": "MICROSOFT CLOUD ADOPTION MATRIX v5.0 for Microsoft Enterprise", From c6ce20178d57c84c79d5c359fdb93bda459fabba Mon Sep 17 00:00:00 2001 From: Craig Whittington Date: Thu, 7 May 2026 12:10:56 +0100 Subject: [PATCH 08/20] Updated updateType to enum string --- specs/Data-Gateway.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index e82ae17..31bca6e 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -4762,6 +4762,11 @@ "CloudMatrix.UpdateType": { "type": "string", "description": "Update type, Major, Minor or Patch.", + "enum": [ + "Major", + "Minor", + "Patch" + ], "examples": [ "Major", "Minor", From c173e5cfdff273216f2a3dd1529415f063f71bee Mon Sep 17 00:00:00 2001 From: Craig Whittington Date: Fri, 8 May 2026 09:46:00 +0100 Subject: [PATCH 09/20] Updated 200 response with an example and reverted version change --- specs/Data-Gateway.json | 26 +++++++++++++++++--- src/dataGateway/TypeScript/package-lock.json | 4 +-- src/dataGateway/TypeScript/package.json | 2 +- 3 files changed, 25 insertions(+), 7 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 31bca6e..7ed9ccb 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -9628,10 +9628,28 @@ }, "responses": { "200": { - "description": "Value assessment template overwritten successfully." - }, - "201": { - "description": "Value assessment template created successfully." + "description": "Value assessment template overwritten successfully.", + "content": { + "application/json": { + "examples": { + "Sample value assessment template upload response": { + "description": "This is a sample response for uploading a value assessment template. The response includes the metadata of the uploaded template.", + "summary": "A sample response for a value assessment template upload.", + "value": { + "isPublished": false, + "major": 5, + "minor": 0, + "patch": 14, + "templateId": "75498125-33cb-4b33-8705-f0fadadb1a2f", + "templateName": "Microsoft Enterprise", + "templateType": "Microsoft", + "updatedAt": "2026-05-08T12:34:56Z", + "updatedBy": "bbab2907-c781-4bf1-b912-b91510853052" + } + } + } + } + } }, "400": { "$ref": "#/components/responses/400" diff --git a/src/dataGateway/TypeScript/package-lock.json b/src/dataGateway/TypeScript/package-lock.json index 08e967c..0f7ff84 100644 --- a/src/dataGateway/TypeScript/package-lock.json +++ b/src/dataGateway/TypeScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "@shi-corp/sdk-data-gateway", - "version": "3.2.3", + "version": "3.2.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@shi-corp/sdk-data-gateway", - "version": "3.2.3", + "version": "3.2.2", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.100", diff --git a/src/dataGateway/TypeScript/package.json b/src/dataGateway/TypeScript/package.json index a17f6b1..e3cd51c 100644 --- a/src/dataGateway/TypeScript/package.json +++ b/src/dataGateway/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@shi-corp/sdk-data-gateway", - "version": "3.2.3", + "version": "3.2.2", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHI Data Gateway service.", From e4f732f21aa935a0deff4173c35a4237aa6f90f5 Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Fri, 8 May 2026 17:01:13 +0100 Subject: [PATCH 10/20] LAB-2174:- TemplateId and update CloudMatrix metadata - Add templateId to CloudMatrix assessment schemas and examples. - Switch /Api/CloudMatrix/Template path parameter from templateName to templateId and update operationId/parameter refs. - Rename CloudMatrix.Type to CloudMatrix.TemplateType and update related refs. - Expand and normalize CloudMatrix.TemplateMetadata: rename timestamps (createdOn -> createdAt), add id, createdBy, updatedBy, isPublished and version fields (major/minor/patch), adjust required properties and examples, and update endpoint descriptions/summaries. - Update sample payload keys to include templateId, audit and versioning fields. --- specs/Data-Gateway.json | 172 ++++++++++++++++++++++++++++++---------- 1 file changed, 132 insertions(+), 40 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 7ed9ccb..843d7cf 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -4308,6 +4308,10 @@ "Microsoft Enterprise" ] }, + "templateId": { + "$ref": "#/components/schemas/Uuid", + "description": "Unique Identifier representing the template for this cloud matrix assessment." + }, "updatedAt": { "$ref": "#/components/schemas/DateTimeStringType", "description": "Timestamp indicating when the record was last updated. This is auto managed by sequelize." @@ -4324,7 +4328,8 @@ "accountName", "accountId", "discoveryDate", - "template" + "template", + "templateId" ], "additionalProperties": false, "examples": [ @@ -4336,6 +4341,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "d1a6f8e2-3c4b-4e5f-9a1b-2c3d4e5f6a7b", "updatedAt": "2025-12-15T21:13:12.821Z" } ] @@ -4370,6 +4376,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "d1a6f8e2-3c4b-4e5f-9a1b-2c3d4e5f6a7b", "updatedAt": "2025-12-15T21:13:12.821Z" }, "title": "CloudMatrix Value Assessment", @@ -4551,8 +4558,8 @@ "templateContent": { "$ref": "#/components/schemas/CloudMatrix.BulkCloudMatrix" }, - "type": { - "$ref": "#/components/schemas/CloudMatrix.Type" + "templateType": { + "$ref": "#/components/schemas/CloudMatrix.TemplateType" }, "updateType": { "$ref": "#/components/schemas/CloudMatrix.UpdateType" @@ -4751,7 +4758,7 @@ "Google-Workspace" ] }, - "CloudMatrix.Type": { + "CloudMatrix.TemplateType": { "type": "string", "description": "A valid template type.", "examples": [ @@ -4776,46 +4783,111 @@ "CloudMatrix.TemplateMetadata": { "title": "Cloud Matrix Template File Metadata", "type": "object", - "description": "Information about Cloud Matrix template files.", + "description": "Metadata describing a Cloud Matrix template file, including versioning, publication status, and audit fields.", "properties": { - "createdOn": { + "createdAt": { "$ref": "#/components/schemas/DateTimeStringType", - "description": "Creation date of the template file." + "description": "Timestamp indicating when the record was created. This is auto managed by sequelize." + }, + "createdBy": { + "type": "string", + "description": "Stores the name of the user who created the template file associated with this record.", + "examples": [ + "John Doe" + ] + }, + "id": { + "$ref": "#/components/schemas/Uuid", + "description": "Unique Identifier representing a single cloud matrix template." + }, + "isPublished": { + "type": "boolean", + "description": "Indicates whether the template file associated with this record has been published.", + "examples": [ + true, + false + ] + }, + "majorVersion": { + "type": "number", + "description": "Major version number of the cloud matrix template file associated with this record", + "examples": [ + 1 + ] + }, + "minorVersion": { + "type": "number", + "description": "Minor version number of the cloud matrix template file associated with this record", + "examples": [ + 1 + ] }, "name": { "$ref": "#/components/schemas/CloudMatrix.TemplateName", - "description": "Name of available template." + "description": "Name of the cloud matrix template file associated with this record." }, - "lastModified": { - "$ref": "#/components/schemas/DateTimeStringType", - "description": "Last modified date of the template file." + "patchVersion": { + "type": "number", + "description": "Patch version number of the cloud matrix template file associated with this record", + "examples": [ + 1 + ] }, "type": { + "$ref": "#/components/schemas/CloudMatrix.TemplateType", + "description": "Type of the cloud matrix template file associated with this record." + }, + "updatedAt": { + "$ref": "#/components/schemas/DateTimeStringType", + "description": "Timestamp indicating when the record was last updated. This is auto managed by sequelize." + }, + "updatedBy": { "type": "string", - "description": "Type of the template.", + "description": "Stores the name of the user who last updated the template file associated with this record.", "examples": [ - "Microsoft Cloud Adoption Matrix Template" + "John Doe" ] } }, "required": [ - "createdOn", + "id", + "createdAt", + "createdBy", + "isPublished", + "majorVersion", + "minorVersion", + "patchVersion", "name", - "lastModified", - "type" + "type", + "updatedAt", + "updatedBy" ], "examples": [ { - "createdOn": "2025-12-15T21:13:12.821Z", + "id": "034d1003-cab4-4a91-9ebc-c8931fdf0063", + "createdAt": "2025-12-15T21:13:12.821Z", + "createdBy": "John Doe", + "isPublished": true, + "majorVersion": 1, + "minorVersion": 1, + "patchVersion": 1, "name": "Microsoft Enterprise", - "lastModified": "2025-12-15T21:13:12.821Z", - "type": "Microsoft Cloud Adoption Matrix Template" + "type": "Microsoft", + "updatedAt": "2025-12-15T21:13:12.821Z", + "updatedBy": "John Doe" }, { - "createdOn": "2025-12-15T21:13:12.821Z", + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "createdAt": "2025-12-15T21:13:12.821Z", + "createdBy": "John Doe", + "isPublished": false, + "majorVersion": 1, + "minorVersion": 0, + "patchVersion": 1, "name": "Google-Workspace", - "lastModified": "2025-12-15T21:13:12.821Z", - "type": "Microsoft Cloud Adoption Matrix Template" + "type": "Google", + "updatedAt": "2025-12-15T21:13:12.821Z", + "updatedBy": "John Doe" } ] } @@ -9051,6 +9123,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "d1a6f8e2-3c4b-4e5f-9a1b-2c3d4e5f6a7b", "updatedAt": "2025-12-15T21:13:12.821Z" }, { @@ -9061,6 +9134,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": false, "template": "Google", + "templateId": "d1a6f8e2-3c4b-4e5f-9a1b-2c3d4e5f6a7b", "updatedAt": "2025-12-15T21:13:12.821Z" } ] @@ -9077,6 +9151,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "d1a6f8e2-3c4b-4e5f-9a1b-2c3d4e5f6a7b", "updatedAt": "2025-12-15T21:13:12.821Z" } ] @@ -9136,6 +9211,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "d1a6f8e2-3c4b-4e5f-9a1b-2c3d4e5f6a7b", "updatedAt": "2025-12-15T21:13:12.821Z" }, { @@ -9146,6 +9222,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": false, "template": "Google", + "templateId": "d1a6f8e2-3c4b-4e5f-9a1b-2c3d4e5f6a7b", "updatedAt": "2025-12-15T21:13:12.821Z" } ] @@ -9162,6 +9239,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "d1a6f8e2-3c4b-4e5f-9a1b-2c3d4e5f6a7b", "updatedAt": "2025-12-15T21:13:12.821Z" } ] @@ -9188,13 +9266,13 @@ "summary": "Get Cloud Matrix Correlation Records" } }, - "/Api/CloudMatrix/Template/{templateName}": { + "/Api/CloudMatrix/Template/{templateId}": { "get": { - "description": "Retrieves the specified Cloud Matrix assessment template by template name. \n\nThis endpoint requires the `CloudMatrix.Read` scope (permission).", - "operationId": "/Api/CloudMatrix/Template/:templateName/Get", + "description": "Retrieves the specified Cloud Matrix assessment template by template ID. \n\nThis endpoint requires the `CloudMatrix.Read` scope (permission).", + "operationId": "/Api/CloudMatrix/Template/:templateId/Get", "parameters": [ { - "$ref": "#/components/parameters/templateName" + "$ref": "#/components/parameters/templateId" } ], "responses": { @@ -9448,7 +9526,7 @@ "summary": "A sample value assessment template upload request for the Microsoft Enterprise template.", "value": { "templateName": "Microsoft Enterprise", - "type": "Microsoft", + "templateType": "Microsoft", "updateType": "Major", "templateContent": { "title": "CloudMatrix Value Assessment - Microsoft Enterprise", @@ -9641,8 +9719,8 @@ "minor": 0, "patch": 14, "templateId": "75498125-33cb-4b33-8705-f0fadadb1a2f", - "templateName": "Microsoft Enterprise", - "templateType": "Microsoft", + "name": "Microsoft Enterprise", + "type": "Microsoft", "updatedAt": "2026-05-08T12:34:56Z", "updatedBy": "bbab2907-c781-4bf1-b912-b91510853052" } @@ -11239,7 +11317,7 @@ }, "/Api/CloudMatrix/TemplateMetadata": { "get": { - "description": "Get a list of all template metadata objects for available templates from CM storage. \n\nThis endpoint requires the `CloudMatrix.Read` scope (permission).", + "description": "Retrieves a list of all cloud matrix template metadata records from the database. \n\nThis endpoint requires the `CloudMatrix.Read` scope (permission).", "operationId": "/Api/CloudMatrix/TemplateMetadata/Get", "responses": { "200": { @@ -11248,20 +11326,34 @@ "application/json": { "examples": { "Default Output": { - "description": "A list of template metadata that is stored in blob storage. This is the default output when there are two templates stored in blob storage.", + "description": "A list of cloud matrix template metadata records that are stored in the database. This is the default output when there are two templates stored in the database.", "summary": "Default Output", "value": [ { - "createdOn": "2026-03-24T16:56:43.000Z", - "name": "cloudMatrix", - "lastModified": "2026-03-24T16:56:43.000Z", - "type": "Microsoft Cloud Adoption Matrix Template" + "id": "034d1003-cab4-4a91-9ebc-c8931fdf0063", + "createdAt": "2025-12-15T21:13:12.821Z", + "createdBy": "John Doe", + "isPublished": true, + "majorVersion": 1, + "minorVersion": 1, + "patchVersion": 1, + "name": "Microsoft Enterprise", + "type": "Microsoft", + "updatedAt": "2025-12-15T21:13:12.821Z", + "updatedBy": "John Doe" }, { - "createdOn": "2026-04-08T14:15:44.000Z", - "name": "Google", - "lastModified": "2026-04-08T14:15:44.000Z", - "type": "Microsoft Cloud Adoption Matrix Template" + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "createdAt": "2025-12-15T21:13:12.821Z", + "createdBy": "John Doe", + "isPublished": false, + "majorVersion": 1, + "minorVersion": 0, + "patchVersion": 1, + "name": "Google-Workspace", + "type": "Google", + "updatedAt": "2025-12-15T21:13:12.821Z", + "updatedBy": "John Doe" } ] } @@ -11286,7 +11378,7 @@ "tags": [ "Cloud Matrix" ], - "summary": "Get a List of Template Metadata Objects" + "summary": "Get a List of Cloud Matrix Template Metadata Objects" } } }, From 88e874e876a66c83bed9e6f7104d95e4e4909be2 Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Mon, 11 May 2026 10:39:57 +0100 Subject: [PATCH 11/20] LAB-2174:- Clarify template metadata schema and examples Refine Cloud Matrix template metadata schema and examples: update templateId description; rename the 'type' field to 'templateType' in required fields and examples; change major/minor/patch version types from number to integer (int32) with minimum 0; rename example property 'templateId' to 'id'; and add a response schema $ref to #/components/schemas/CloudMatrix.TemplateMetadata to ensure consistent typing and schema validation. --- specs/Data-Gateway.json | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 843d7cf..810484e 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -182,7 +182,7 @@ } }, "templateId": { - "description": "The object ID of the Cloud Matrix template metadata record to publish.", + "description": "The unique identifier of the Cloud Matrix template metadata record.", "in": "path", "name": "templateId", "required": true, @@ -4568,13 +4568,13 @@ "required": [ "templateName", "templateContent", - "type", + "templateType", "updateType" ], "examples": [ { "templateName": "Microsoft Enterprise", - "type": "Microsoft", + "templateType": "Microsoft", "updateType": "Major", "templateContent": { "title": "CloudMatrix Value Assessment - Microsoft Enterprise", @@ -4809,14 +4809,18 @@ ] }, "majorVersion": { - "type": "number", + "type": "integer", + "format": "int32", + "minimum": 0, "description": "Major version number of the cloud matrix template file associated with this record", "examples": [ 1 ] }, "minorVersion": { - "type": "number", + "type": "integer", + "format": "int32", + "minimum": 0, "description": "Minor version number of the cloud matrix template file associated with this record", "examples": [ 1 @@ -4827,7 +4831,9 @@ "description": "Name of the cloud matrix template file associated with this record." }, "patchVersion": { - "type": "number", + "type": "integer", + "format": "int32", + "minimum": 0, "description": "Patch version number of the cloud matrix template file associated with this record", "examples": [ 1 @@ -9718,13 +9724,16 @@ "major": 5, "minor": 0, "patch": 14, - "templateId": "75498125-33cb-4b33-8705-f0fadadb1a2f", + "id": "75498125-33cb-4b33-8705-f0fadadb1a2f", "name": "Microsoft Enterprise", "type": "Microsoft", "updatedAt": "2026-05-08T12:34:56Z", "updatedBy": "bbab2907-c781-4bf1-b912-b91510853052" } } + }, + "schema": { + "$ref": "#/components/schemas/CloudMatrix.TemplateMetadata" } } } From 6b9f9cfe7988403ca7a569c062261f37b85b594b Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Mon, 11 May 2026 15:02:58 +0100 Subject: [PATCH 12/20] Update Data Gateway spec version & fields Bump SHI - Data Gateway spec version from 3.2.1 to 3.2.2 and rename sample response properties for value assessment template upload from "major/minor/patch" to "majorVersion/minorVersion/patchVersion" to match the updated schema naming. Also includes an auto-generated package-lock.json update. --- specs/Data-Gateway.json | 8 +++---- src/dataGateway/TypeScript/package-lock.json | 24 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 810484e..0ca5f1d 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -4918,7 +4918,7 @@ }, "description": "Collects data from the various SHI Lab products and makes it available in a standardized way.", "title": "SHI - Data Gateway", - "version": "3.2.1" + "version": "3.2.2" }, "openapi": "3.1.1", "paths": { @@ -9721,9 +9721,9 @@ "summary": "A sample response for a value assessment template upload.", "value": { "isPublished": false, - "major": 5, - "minor": 0, - "patch": 14, + "majorVersion": 5, + "minorVersion": 0, + "patchVersion": 14, "id": "75498125-33cb-4b33-8705-f0fadadb1a2f", "name": "Microsoft Enterprise", "type": "Microsoft", diff --git a/src/dataGateway/TypeScript/package-lock.json b/src/dataGateway/TypeScript/package-lock.json index 0f7ff84..da4ca0f 100644 --- a/src/dataGateway/TypeScript/package-lock.json +++ b/src/dataGateway/TypeScript/package-lock.json @@ -1436,6 +1436,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1451,6 +1454,9 @@ ], "dev": true, "license": "MIT", + "libc": [ + "musl" + ], "optional": true, "os": [ "linux" @@ -1464,6 +1470,9 @@ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1478,6 +1487,9 @@ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1492,6 +1504,9 @@ "riscv64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ @@ -1506,6 +1521,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1520,6 +1538,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT", "optional": true, "os": [ @@ -1534,6 +1555,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT", "optional": true, "os": [ From f6fae287d71cce407d02e9e2da86b830ccd9278e Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Mon, 11 May 2026 15:17:41 +0100 Subject: [PATCH 13/20] Remove templateName path parameter Delete the 'templateName' path parameter from specs/Data-Gateway.json. The CloudMatrix.TemplateName parameter (including its schema reference and example value) was removed; the API now relies on the templateId path parameter instead to identify templates, avoiding URL-encoding of template names. --- specs/Data-Gateway.json | 16 ---------------- src/dataGateway/TypeScript/package-lock.json | 2 +- 2 files changed, 1 insertion(+), 17 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 0ca5f1d..224122c 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -165,22 +165,6 @@ } } }, - "templateName": { - "description": "Name of the Cloud Matrix template to retrieve. Because this value is sent as a path segment, clients must URL-encode spaces and other reserved characters.", - "in": "path", - "name": "templateName", - "required": true, - "schema": { - "$ref": "#/components/schemas/CloudMatrix.TemplateName" - }, - "examples": { - "Valid Template Name": { - "summary": "Example Valid Template Name", - "description": "An example of a valid template name before URL encoding for use in the request path.", - "value": "Microsoft Enterprise" - } - } - }, "templateId": { "description": "The unique identifier of the Cloud Matrix template metadata record.", "in": "path", diff --git a/src/dataGateway/TypeScript/package-lock.json b/src/dataGateway/TypeScript/package-lock.json index da4ca0f..d6f92ec 100644 --- a/src/dataGateway/TypeScript/package-lock.json +++ b/src/dataGateway/TypeScript/package-lock.json @@ -1453,10 +1453,10 @@ "arm64" ], "dev": true, - "license": "MIT", "libc": [ "musl" ], + "license": "MIT", "optional": true, "os": [ "linux" From dde39dba4833e708d6961581df07cf49e9ad1984 Mon Sep 17 00:00:00 2001 From: JD-ghforme Date: Mon, 11 May 2026 14:12:46 -0400 Subject: [PATCH 14/20] initial check in for new endpoint --- specs/Data-Gateway.json | 272 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 272 insertions(+) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 224122c..ab97329 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -9502,6 +9502,278 @@ "summary": "Publish Cloud Matrix Assessment Template" } }, + "/Api/CloudMatrix/TemplatePatch/{templateId}": { + "patch": { + "description": "Updates the existing Cloud Matrix Template data for specified templateId (also updates related metadata). The template must exist and the request body must contain valid data.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission).", + "operationId": "/Api/CloudMatrix/Template/:templateId/Patch", + "parameters": [ + { + "$ref": "#/components/parameters/templateId" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "examples": { + "Cloud Matrix Template Update Request": { + "description": "Sample, truncated Cloud Matrix template payload from a production-like environment.", + "summary": "Example request payload for updating a Cloud Matrix template.", + "value": { + "correlation": { + "accountName": "AstraZeneca", + "correlationId": "bbab2907-c781-4bf1-b912-b91510853052", + "createdAt": "2025-12-15T21:13:12.821Z", + "accountId": "75498125-33cb-4b33-8705-f0fadadb1a2f", + "discoveryDate": "2025-12-15T21:13:12.821Z", + "isComplete": true, + "template": "Microsoft Enterprise", + "updatedAt": "2025-12-15T21:13:12.821Z" + }, + "title": "CloudMatrix Value Assessment", + "description": "MICROSOFT CLOUD ADOPTION MATRIX v5.0", + "version": "5.0.14", + "valueAssessment": { + "actionPlan": { + "accountName": "AstraZeneca", + "discoveryDate": "2026-01-01T00:00:00Z", + "accountManager": "John Smith", + "consultant": "MSAG Consultant", + "licensingExecutive": "Jane Doe", + "customerSuccessManager": "John Doe", + "notesAndObjectives": "Sample notes and objectives for the account.", + "accountId": "fd9a6a53-594d-41aa-950a-b21ff41d4688", + "createdDate": "2026-01-01T00:00:00Z", + "modifiedDate": "2026-01-01T00:00:00Z", + "primaryPublisher": "Microsoft" + }, + "userProfiles": [ + { + "id": "00000000-0000-0000-0000-000000000001", + "name": "Profile Details", + "details": [ + { + "name": "Profile Details", + "values": [ + { + "name": "Profile Name", + "value": "Knowledge Worker" + } + ] + } + ] + } + ], + "assessments": [ + { + "metadata": { + "name": "M365 Apps for Enterprise - Mobile/Online", + "breakoutId": null, + "category": "USER EXPERIENCE", + "subCategory": "Productivity", + "help": "Brief: Common applications available through a browser used for business purposes typically bundled together by software vendors like Microsoft and Google. i.e., spreadsheets, slide presentations, word processor, etc.", + "licensingProduct": "M365 Mobile Apps", + "licensingProductHelp": "Mobile Apps The Microsoft 365 mobile app combines Word, Excel, and PowerPoint into a single app for iOS and Android devices. It offers features like creating, editing, and sharing documents on the go, scanning and signing PDFs, and using voice commands for quick tasks. You can also connect your email accounts and calendars in one convenient spot1.\n\nWeb Apps Microsoft 365 for the web includes online versions of Word, Excel, PowerPoint, OneNote, and Outlook. These web apps allow you to create, edit, and share documents directly from your browser without needing to install any software. You can access your documents from anywhere with an internet connection, making it easy to collaborate with others in real-time2.", + "isAddon": false, + "isStrategicAddon": false, + "isTenantBased": false, + "availability": null, + "notes": "", + "startYearConfig": { + "value": null, + "userProfileIds": null, + "isDeepDive": false, + "altProduct": null, + "publisher": null, + "useCase": null + }, + "yearPlusOneConfig": { + "value": null, + "userProfileIds": null, + "isDeepDive": false, + "altProduct": null, + "publisher": null, + "useCase": null + }, + "yearPlusTwoConfig": { + "value": null, + "userProfileIds": null, + "isDeepDive": false, + "altProduct": null, + "publisher": null, + "useCase": null + }, + "yearPlusThreeConfig": { + "value": null, + "userProfileIds": null, + "isDeepDive": false, + "altProduct": null, + "publisher": null, + "useCase": null + }, + "sourceValue": 0.0 + }, + "profiles": [ + { + "name": "Microsoft E5", + "abbreviation": "ME5P", + "value": 5.0 + } + ], + "features": [ + { + "licensing": "M365 SMB", + "products": [ + { + "product": "PS", + "value": "na", + "comment": "" + } + ] + } + ] + } + ], + "displacements": [ + { + "name": "Example displacement opportunity", + "currentProvider": { + "name": "Microsoft", + "terms": "5 Years", + "contractNumber": "C12345678", + "expiryDate": "2026-01-01T00:00:00Z", + "costs": { + "monthlyCost": 5001, + "annualCost": 5002, + "contractValue": 5003 + } + }, + "displacement": { + "name": "Google", + "terms": "3 Years", + "contractNumber": "C87654321", + "expiryDate": "2026-01-01T00:00:00Z", + "costs": [ + { + "monthlyCost": 5001, + "annualCost": 5002, + "contractValue": 5003 + } + ], + "replacementDate": "2026-12-31T00:00:00Z" + }, + "notes": "Example notes" + } + ] + }, + "breakouts": [ + { + "title": "PORTAL APPS", + "breakoutId": "f1ebe6ab-1164-4ab8-8970-2d561ee7634f", + "breakoutName": "BREAKOUT -Portal Apps", + "features": [ + { + "roadmapElementPath": "User Experience /Productivity Apps/Extended Productivity App Ecosystem", + "elementSubdimension": "Productivity Apps", + "roadmapProduct": "Platform Only", + "feature": "Viva Insights - Personal", + "description": "Microsoft Lists is a Microsoft 365 app that helps you track information and organize work with customizable lists for tasks, projects, and more.", + "publisherLink": "", + "subscriptionFeatures": [ + { + "licensing": "M365 FLW", + "products": [ + { + "product": "F1", + "value": "na", + "comment": "" + } + ] + } + ] + } + ] + } + ] + } + } + }, + "schema": { + "$ref": "#/components/schemas/CloudMatrix.BulkCloudMatrix" + } + } + } + }, + "responses": { + "200": { + "description": "Cloud Matrix Template updated successfully" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "tags": [ + "Cloud Matrix" + ], + "summary": "Update Cloud Matrix Template" + }, + "get": { + "description": "Retrieves the details of a specific Cloud Matrix correlation record.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.Read.All` or `CloudMatrix.ReadWrite.All` scope (permission).", + "operationId": "/Api/CloudMatrix/Account/:accountId/Correlation/:correlationId/Get", + "parameters": [ + { + "$ref": "#/components/parameters/accountId" + }, + { + "$ref": "#/components/parameters/correlationId" + } + ], + "responses": { + "200": { + "description": "A specific cloud matrix correlation record.", + "content": { + "application/json": { + "examples": { + "Example Cloud Matrix CorrelationRecord": { + "description": "A single existing Cloud Matrix correlation record.", + "summary": "Existing Cloud Matrix Correlation Record", + "value": { + "accountName": "AstraZeneca", + "correlationId": "bbab2907-c781-4bf1-b912-b91510853052", + "createdAt": "2025-12-15T21:13:12.821Z", + "accountId": "75498125-33cb-4b33-8705-f0fadadb1a2f", + "discoveryDate": "2025-12-15T21:13:12.821Z", + "isComplete": true, + "template": "Microsoft Enterprise", + "updatedAt": "2025-12-15T21:13:12.821Z" + } + } + }, + "schema": { + "$ref": "#/components/schemas/CloudMatrix.CloudMatrixCorrelation" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "tags": [ + "Cloud Matrix" + ], + "summary": "Get a Specific Cloud Matrix Correlation Record" + } + }, "/Api/CloudMatrix/Template": { "post": { "description": "Creates the template metadata and adds or updates a value assessment template. When the specified template name exists, it will overwrite the existing template JSON file in blob storage.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission).", From 6df4f29d4f05e2f52f838a9fb12315fdb56aa8fa Mon Sep 17 00:00:00 2001 From: JD-ghforme Date: Tue, 12 May 2026 08:40:03 -0400 Subject: [PATCH 15/20] new endpoint to update CM tmeplate --- specs/Data-Gateway.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index ab97329..c91ca25 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -9502,10 +9502,10 @@ "summary": "Publish Cloud Matrix Assessment Template" } }, - "/Api/CloudMatrix/TemplatePatch/{templateId}": { + "/Api/CloudMatrix/Template/{templateId}/Update": { "patch": { "description": "Updates the existing Cloud Matrix Template data for specified templateId (also updates related metadata). The template must exist and the request body must contain valid data.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission).", - "operationId": "/Api/CloudMatrix/Template/:templateId/Patch", + "operationId": "/Api/CloudMatrix/Template/:templateId/Update", "parameters": [ { "$ref": "#/components/parameters/templateId" @@ -9705,7 +9705,7 @@ } }, "responses": { - "200": { + "204": { "description": "Cloud Matrix Template updated successfully" }, "400": { From 83ca6137d1f37b04acf3ca0e90b952ac653dd8e7 Mon Sep 17 00:00:00 2001 From: JD-ghforme Date: Tue, 12 May 2026 09:56:06 -0400 Subject: [PATCH 16/20] cleanup changes --- specs/Data-Gateway.json | 323 ++++++++++++++++++++-------------------- 1 file changed, 159 insertions(+), 164 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index c91ca25..dcf1a9b 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -9516,175 +9516,110 @@ "content": { "application/json": { "examples": { - "Cloud Matrix Template Update Request": { - "description": "Sample, truncated Cloud Matrix template payload from a production-like environment.", - "summary": "Example request payload for updating a Cloud Matrix template.", + "Sample Cloud Matrix template update request": { + "description": "This is a sample request for updating a Cloud Matrix template. The templateId must be specified in the URL path and identifies which template will be overwritten.", + "summary": "A sample Cloud Matrix template update request for the Microsoft Enterprise template.", "value": { - "correlation": { - "accountName": "AstraZeneca", - "correlationId": "bbab2907-c781-4bf1-b912-b91510853052", - "createdAt": "2025-12-15T21:13:12.821Z", - "accountId": "75498125-33cb-4b33-8705-f0fadadb1a2f", - "discoveryDate": "2025-12-15T21:13:12.821Z", - "isComplete": true, - "template": "Microsoft Enterprise", - "updatedAt": "2025-12-15T21:13:12.821Z" - }, - "title": "CloudMatrix Value Assessment", - "description": "MICROSOFT CLOUD ADOPTION MATRIX v5.0", - "version": "5.0.14", - "valueAssessment": { - "actionPlan": { - "accountName": "AstraZeneca", - "discoveryDate": "2026-01-01T00:00:00Z", - "accountManager": "John Smith", - "consultant": "MSAG Consultant", - "licensingExecutive": "Jane Doe", - "customerSuccessManager": "John Doe", - "notesAndObjectives": "Sample notes and objectives for the account.", - "accountId": "fd9a6a53-594d-41aa-950a-b21ff41d4688", - "createdDate": "2026-01-01T00:00:00Z", - "modifiedDate": "2026-01-01T00:00:00Z", - "primaryPublisher": "Microsoft" - }, - "userProfiles": [ - { - "id": "00000000-0000-0000-0000-000000000001", - "name": "Profile Details", - "details": [ - { - "name": "Profile Details", - "values": [ - { - "name": "Profile Name", - "value": "Knowledge Worker" - } - ] - } - ] - } - ], - "assessments": [ - { - "metadata": { - "name": "M365 Apps for Enterprise - Mobile/Online", - "breakoutId": null, - "category": "USER EXPERIENCE", - "subCategory": "Productivity", - "help": "Brief: Common applications available through a browser used for business purposes typically bundled together by software vendors like Microsoft and Google. i.e., spreadsheets, slide presentations, word processor, etc.", - "licensingProduct": "M365 Mobile Apps", - "licensingProductHelp": "Mobile Apps The Microsoft 365 mobile app combines Word, Excel, and PowerPoint into a single app for iOS and Android devices. It offers features like creating, editing, and sharing documents on the go, scanning and signing PDFs, and using voice commands for quick tasks. You can also connect your email accounts and calendars in one convenient spot1.\n\nWeb Apps Microsoft 365 for the web includes online versions of Word, Excel, PowerPoint, OneNote, and Outlook. These web apps allow you to create, edit, and share documents directly from your browser without needing to install any software. You can access your documents from anywhere with an internet connection, making it easy to collaborate with others in real-time2.", - "isAddon": false, - "isStrategicAddon": false, - "isTenantBased": false, - "availability": null, - "notes": "", - "startYearConfig": { - "value": null, - "userProfileIds": null, - "isDeepDive": false, - "altProduct": null, - "publisher": null, - "useCase": null - }, - "yearPlusOneConfig": { - "value": null, - "userProfileIds": null, - "isDeepDive": false, - "altProduct": null, - "publisher": null, - "useCase": null - }, - "yearPlusTwoConfig": { - "value": null, - "userProfileIds": null, - "isDeepDive": false, - "altProduct": null, - "publisher": null, - "useCase": null - }, - "yearPlusThreeConfig": { - "value": null, - "userProfileIds": null, - "isDeepDive": false, - "altProduct": null, - "publisher": null, - "useCase": null + "templateName": "Microsoft Enterprise", + "templateType": "Microsoft", + "updateType": "Major", + "templateContent": { + "title": "CloudMatrix Value Assessment - Microsoft Enterprise", + "description": "MICROSOFT CLOUD ADOPTION MATRIX v5.0 for Microsoft Enterprise", + "version": "5.0.14", + "valueAssessment": { + "actionPlan": { + "accountName": "New Account", + "discoveryDate": "2026-01-01T00:00:00Z", + "accountManager": "John Smith", + "consultant": "MSAG Consultant", + "licensingExecutive": "Jane Doe", + "customerSuccessManager": "John Doe", + "notesAndObjectives": "Sample notes and objectives for the account.", + "accountId": "fd9a6a53-594d-41aa-950a-b21ff41d4688", + "createdDate": "2026-01-01T00:00:00Z", + "modifiedDate": "2026-01-01T00:00:00Z", + "primaryPublisher": "Microsoft" + }, + "userProfiles": [ + { + "id": "00000000-0000-0000-0000-000000000001", + "name": "Profile Details", + "details": [ + { + "name": "Profile Details", + "values": [ + { + "name": "Profile Name", + "value": "Knowledge Worker" + } + ] + } + ] + } + ], + "assessments": [ + { + "metadata": { + "name": "M365 Apps for Enterprise - Mobile/Online", + "breakoutId": null, + "category": "USER EXPERIENCE", + "subCategory": "Productivity", + "help": "Brief: Common applications available through a browser used for business purposes typically bundled together by software vendors like Microsoft and Google. i.e., spreadsheets, slide presentations, word processor, etc.", + "licensingProduct": "M365 Mobile Apps", + "licensingProductHelp": "Mobile Apps The Microsoft 365 mobile app combines Word, Excel, and PowerPoint into a single app for iOS and Android devices. It offers features like creating, editing, and sharing documents on the go, scanning and signing PDFs, and using voice commands for quick tasks. You can also connect your email accounts and calendars in one convenient spot1.\n\nWeb Apps Microsoft 365 for the web includes online versions of Word, Excel, PowerPoint, OneNote, and Outlook. These web apps allow you to create, edit, and share documents directly from your browser without needing to install any software. You can access your documents from anywhere with an internet connection, making it easy to collaborate with others in real-time2.", + "isAddon": false, + "isStrategicAddon": false, + "isTenantBased": false, + "availability": null, + "notes": "", + "startYearConfig": { + "value": null, + "userProfileIds": null, + "isDeepDive": false, + "altProduct": null, + "publisher": null, + "useCase": null + }, + "yearPlusOneConfig": { + "value": null, + "userProfileIds": null, + "isDeepDive": false, + "altProduct": null, + "publisher": null, + "useCase": null + }, + "yearPlusTwoConfig": { + "value": null, + "userProfileIds": null, + "isDeepDive": false, + "altProduct": null, + "publisher": null, + "useCase": null + }, + "yearPlusThreeConfig": { + "value": null, + "userProfileIds": null, + "isDeepDive": false, + "altProduct": null, + "publisher": null, + "useCase": null + }, + "sourceValue": 0.0 }, - "sourceValue": 0.0 - }, - "profiles": [ - { - "name": "Microsoft E5", - "abbreviation": "ME5P", - "value": 5.0 - } - ], - "features": [ - { - "licensing": "M365 SMB", - "products": [ - { - "product": "PS", - "value": "na", - "comment": "" - } - ] - } - ] - } - ], - "displacements": [ - { - "name": "Example displacement opportunity", - "currentProvider": { - "name": "Microsoft", - "terms": "5 Years", - "contractNumber": "C12345678", - "expiryDate": "2026-01-01T00:00:00Z", - "costs": { - "monthlyCost": 5001, - "annualCost": 5002, - "contractValue": 5003 - } - }, - "displacement": { - "name": "Google", - "terms": "3 Years", - "contractNumber": "C87654321", - "expiryDate": "2026-01-01T00:00:00Z", - "costs": [ + "profiles": [ { - "monthlyCost": 5001, - "annualCost": 5002, - "contractValue": 5003 + "name": "Microsoft E5", + "abbreviation": "ME5P", + "value": 5.0 } ], - "replacementDate": "2026-12-31T00:00:00Z" - }, - "notes": "Example notes" - } - ] - }, - "breakouts": [ - { - "title": "PORTAL APPS", - "breakoutId": "f1ebe6ab-1164-4ab8-8970-2d561ee7634f", - "breakoutName": "BREAKOUT -Portal Apps", - "features": [ - { - "roadmapElementPath": "User Experience /Productivity Apps/Extended Productivity App Ecosystem", - "elementSubdimension": "Productivity Apps", - "roadmapProduct": "Platform Only", - "feature": "Viva Insights - Personal", - "description": "Microsoft Lists is a Microsoft 365 app that helps you track information and organize work with customizable lists for tasks, projects, and more.", - "publisherLink": "", - "subscriptionFeatures": [ + "features": [ { - "licensing": "M365 FLW", + "licensing": "M365 SMB", "products": [ { - "product": "F1", + "product": "PS", "value": "na", "comment": "" } @@ -9692,14 +9627,74 @@ } ] } + ], + "displacements": [ + { + "name": "Example displacement opportunity", + "currentProvider": { + "name": "Microsoft", + "terms": "5 Years", + "contractNumber": "C12345678", + "expiryDate": "2026-01-01T00:00:00Z", + "costs": { + "monthlyCost": 5001, + "annualCost": 5002, + "contractValue": 5003 + } + }, + "displacement": { + "name": "Google", + "terms": "3 Years", + "contractNumber": "C87654321", + "expiryDate": "2026-01-01T00:00:00Z", + "costs": [ + { + "monthlyCost": 5001, + "annualCost": 5002, + "contractValue": 5003 + } + ], + "replacementDate": "2026-12-31T00:00:00Z" + }, + "notes": "Example notes" + } ] - } - ] + }, + "breakouts": [ + { + "title": "PORTAL APPS", + "breakoutId": "f1ebe6ab-1164-4ab8-8970-2d561ee7634f", + "breakoutName": "BREAKOUT -Portal Apps", + "features": [ + { + "roadmapElementPath": "User Experience /Productivity Apps/Extended Productivity App Ecosystem", + "elementSubdimension": "Productivity Apps", + "roadmapProduct": "Platform Only", + "feature": "Viva Insights - Personal", + "description": "Microsoft Lists is a Microsoft 365 app that helps you track information and organize work with customizable lists for tasks, projects, and more.", + "publisherLink": "", + "subscriptionFeatures": [ + { + "licensing": "M365 FLW", + "products": [ + { + "product": "F1", + "value": "na", + "comment": "" + } + ] + } + ] + } + ] + } + ] + } } } }, "schema": { - "$ref": "#/components/schemas/CloudMatrix.BulkCloudMatrix" + "$ref": "#/components/schemas/CloudMatrix.TemplateUploadRequest" } } } From 9839a6c262ac635564a034c7b25e109609927bd3 Mon Sep 17 00:00:00 2001 From: JD-ghforme Date: Tue, 12 May 2026 10:57:38 -0400 Subject: [PATCH 17/20] fixing review comments --- specs/Data-Gateway.json | 55 +++-------------------------------------- 1 file changed, 4 insertions(+), 51 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index dcf1a9b..7a6e325 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -183,6 +183,9 @@ } }, "responses": { + "204": { + "description": "Successful,No content." + }, "400": { "description": "Invalid input!" }, @@ -9701,7 +9704,7 @@ }, "responses": { "204": { - "description": "Cloud Matrix Template updated successfully" + "description": "Cloud Matrix Template updated successfully, no content returned." }, "400": { "$ref": "#/components/responses/400" @@ -9717,56 +9720,6 @@ "Cloud Matrix" ], "summary": "Update Cloud Matrix Template" - }, - "get": { - "description": "Retrieves the details of a specific Cloud Matrix correlation record.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.Read.All` or `CloudMatrix.ReadWrite.All` scope (permission).", - "operationId": "/Api/CloudMatrix/Account/:accountId/Correlation/:correlationId/Get", - "parameters": [ - { - "$ref": "#/components/parameters/accountId" - }, - { - "$ref": "#/components/parameters/correlationId" - } - ], - "responses": { - "200": { - "description": "A specific cloud matrix correlation record.", - "content": { - "application/json": { - "examples": { - "Example Cloud Matrix CorrelationRecord": { - "description": "A single existing Cloud Matrix correlation record.", - "summary": "Existing Cloud Matrix Correlation Record", - "value": { - "accountName": "AstraZeneca", - "correlationId": "bbab2907-c781-4bf1-b912-b91510853052", - "createdAt": "2025-12-15T21:13:12.821Z", - "accountId": "75498125-33cb-4b33-8705-f0fadadb1a2f", - "discoveryDate": "2025-12-15T21:13:12.821Z", - "isComplete": true, - "template": "Microsoft Enterprise", - "updatedAt": "2025-12-15T21:13:12.821Z" - } - } - }, - "schema": { - "$ref": "#/components/schemas/CloudMatrix.CloudMatrixCorrelation" - } - } - } - }, - "400": { - "$ref": "#/components/responses/400" - }, - "500": { - "$ref": "#/components/responses/500" - } - }, - "tags": [ - "Cloud Matrix" - ], - "summary": "Get a Specific Cloud Matrix Correlation Record" } }, "/Api/CloudMatrix/Template": { From c749676869dc338c65fd549c18ec59000ab89b70 Mon Sep 17 00:00:00 2001 From: JD-ghforme Date: Tue, 12 May 2026 11:17:47 -0400 Subject: [PATCH 18/20] more cleanup --- specs/Data-Gateway.json | 56 ++++------------------------------------- 1 file changed, 5 insertions(+), 51 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 7a6e325..e7d0298 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -184,7 +184,7 @@ }, "responses": { "204": { - "description": "Successful,No content." + "description": "Successful. No content." }, "400": { "description": "Invalid input!" @@ -9508,7 +9508,7 @@ "/Api/CloudMatrix/Template/{templateId}/Update": { "patch": { "description": "Updates the existing Cloud Matrix Template data for specified templateId (also updates related metadata). The template must exist and the request body must contain valid data.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission).", - "operationId": "/Api/CloudMatrix/Template/:templateId/Update", + "operationId": "/Api/CloudMatrix/Template/:templateId/Update/Patch", "parameters": [ { "$ref": "#/components/parameters/templateId" @@ -9544,23 +9544,7 @@ "modifiedDate": "2026-01-01T00:00:00Z", "primaryPublisher": "Microsoft" }, - "userProfiles": [ - { - "id": "00000000-0000-0000-0000-000000000001", - "name": "Profile Details", - "details": [ - { - "name": "Profile Details", - "values": [ - { - "name": "Profile Name", - "value": "Knowledge Worker" - } - ] - } - ] - } - ], + "userProfiles": [], "assessments": [ { "metadata": { @@ -9631,37 +9615,7 @@ ] } ], - "displacements": [ - { - "name": "Example displacement opportunity", - "currentProvider": { - "name": "Microsoft", - "terms": "5 Years", - "contractNumber": "C12345678", - "expiryDate": "2026-01-01T00:00:00Z", - "costs": { - "monthlyCost": 5001, - "annualCost": 5002, - "contractValue": 5003 - } - }, - "displacement": { - "name": "Google", - "terms": "3 Years", - "contractNumber": "C87654321", - "expiryDate": "2026-01-01T00:00:00Z", - "costs": [ - { - "monthlyCost": 5001, - "annualCost": 5002, - "contractValue": 5003 - } - ], - "replacementDate": "2026-12-31T00:00:00Z" - }, - "notes": "Example notes" - } - ] + "displacements": [] }, "breakouts": [ { @@ -9704,7 +9658,7 @@ }, "responses": { "204": { - "description": "Cloud Matrix Template updated successfully, no content returned." + "$ref": "#/components/responses/204" }, "400": { "$ref": "#/components/responses/400" From 0d7d32e94ad5b1dfd75e6089e0b90b53184b87a0 Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Wed, 13 May 2026 11:17:44 +0100 Subject: [PATCH 19/20] LAB-2131:-Update CloudMatrix template API docs - Refine CloudMatrix template POST documentation in specs/Data-Gateway.json: clarify the endpoint description and sample request text; add a 415 Unsupported Media Type response; remove 401/403 response refs from one responses block; simplify sample payloads by emptying userProfiles and displacements arrays; and add templateId fields to multiple sample objects. - These changes improve accuracy of the API examples and response descriptions for template uploads. --- specs/Data-Gateway.json | 71 +++++++++-------------------------------- 1 file changed, 15 insertions(+), 56 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index e7d0298..14db438 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -9486,12 +9486,6 @@ "400": { "$ref": "#/components/responses/400" }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" - }, "404": { "$ref": "#/components/responses/404" }, @@ -9666,6 +9660,9 @@ "404": { "$ref": "#/components/responses/404" }, + "415": { + "description": "Unsupported Media Type - The request payload must use the application/json media type." + }, "500": { "$ref": "#/components/responses/500" } @@ -9678,7 +9675,7 @@ }, "/Api/CloudMatrix/Template": { "post": { - "description": "Creates the template metadata and adds or updates a value assessment template. When the specified template name exists, it will overwrite the existing template JSON file in blob storage.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission).", + "description": "Creates the Cloud Matrix template metadata record, then stores the template content in blob storage using that metadata. On success, the endpoint returns the metadata information of the created template.\n\nThis endpoint is only accessible from the `SHI` and `SHI Lab` tenants and requires the `CloudMatrix.ReadWrite.All` scope (permission).", "operationId": "/Api/CloudMatrix/Template/Post", "requestBody": { "required": true, @@ -9686,7 +9683,7 @@ "application/json": { "examples": { "Sample value assessment template upload request": { - "description": "This is a sample request for uploading a value assessment template. Multiple invocations of this endpoint with the same template name will overwrite the existing template.", + "description": "This is a sample request for uploading a value assessment template. The request body contains the template content along with metadata such as template name, type, and update type.", "summary": "A sample value assessment template upload request for the Microsoft Enterprise template.", "value": { "templateName": "Microsoft Enterprise", @@ -9710,23 +9707,7 @@ "modifiedDate": "2026-01-01T00:00:00Z", "primaryPublisher": "Microsoft" }, - "userProfiles": [ - { - "id": "00000000-0000-0000-0000-000000000001", - "name": "Profile Details", - "details": [ - { - "name": "Profile Details", - "values": [ - { - "name": "Profile Name", - "value": "Knowledge Worker" - } - ] - } - ] - } - ], + "userProfiles": [], "assessments": [ { "metadata": { @@ -9797,37 +9778,7 @@ ] } ], - "displacements": [ - { - "name": "Example displacement opportunity", - "currentProvider": { - "name": "Microsoft", - "terms": "5 Years", - "contractNumber": "C12345678", - "expiryDate": "2026-01-01T00:00:00Z", - "costs": { - "monthlyCost": 5001, - "annualCost": 5002, - "contractValue": 5003 - } - }, - "displacement": { - "name": "Google", - "terms": "3 Years", - "contractNumber": "C87654321", - "expiryDate": "2026-01-01T00:00:00Z", - "costs": [ - { - "monthlyCost": 5001, - "annualCost": 5002, - "contractValue": 5003 - } - ], - "replacementDate": "2026-12-31T00:00:00Z" - }, - "notes": "Example notes" - } - ] + "displacements": [] }, "breakouts": [ { @@ -9933,6 +9884,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "3f8a9c2d-7b54-4e6a-9c2e-1f6a9d0b8a71", "updatedAt": "2025-12-15T21:13:12.821Z" }, "title": "CloudMatrix Value Assessment", @@ -10127,6 +10079,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "3f8a9c2d-7b54-4e6a-9c2e-1f6a9d0b8a71", "updatedAt": "2025-12-15T21:13:12.821Z" }, "title": "CloudMatrix Value Assessment", @@ -10345,6 +10298,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "3f8a9c2d-7b54-4e6a-9c2e-1f6a9d0b8a71", "updatedAt": "2025-12-15T21:13:12.821Z" }, "title": "CloudMatrix Value Assessment", @@ -10539,6 +10493,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "3f8a9c2d-7b54-4e6a-9c2e-1f6a9d0b8a71", "updatedAt": "2025-12-15T21:13:12.821Z" }, "title": "CloudMatrix Value Assessment", @@ -10755,6 +10710,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "3f8a9c2d-7b54-4e6a-9c2e-1f6a9d0b8a71", "updatedAt": "2025-12-15T21:13:12.821Z" } } @@ -10804,6 +10760,7 @@ "discoveryDate": "2025-12-15T21:13:12.821Z", "isComplete": true, "template": "Microsoft Enterprise", + "templateId": "3f8a9c2d-7b54-4e6a-9c2e-1f6a9d0b8a71", "updatedAt": "2025-12-15T21:13:12.821Z" } } @@ -10855,6 +10812,7 @@ "correlationId": "745b00d0-d772-11f0-899c-41d4a068f985", "accountId": "de186670-d772-11f0-899c-41d4a068f985", "template": "Microsoft", + "templateId": "3f8a9c2d-7b54-4e6a-9c2e-1f6a9d0b8a71", "isComplete": true, "discoveryDate": "2026-01-08T21:13:12.821Z", "createdAt": "2026-01-08T21:13:12.821Z", @@ -11184,6 +11142,7 @@ "correlationId": "745b00d0-d772-11f0-899c-41d4a068f985", "accountId": "de186670-d772-11f0-899c-41d4a068f985", "template": "Microsoft", + "templateId": "3f8a9c2d-7b54-4e6a-9c2e-1f6a9d0b8a71", "isComplete": true, "discoveryDate": "2026-01-08T21:13:12.821Z", "createdAt": "2026-01-08T21:13:12.821Z", From 9310bfb12f0aeb360c4a81a4c2fdd677797325d6 Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Wed, 13 May 2026 11:22:39 +0100 Subject: [PATCH 20/20] Add createdAt and createdBy to version entry In specs/Data-Gateway.json, add provenance metadata to a version object by introducing createdAt ("2026-05-08T12:34:56Z") and createdBy ("bbab2907-c781-4bf1-b912-b91510853052") fields alongside the existing major/minor/patchVersion properties to record timestamp and creator for the version record. --- specs/Data-Gateway.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 14db438..b7262d9 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -9833,6 +9833,8 @@ "majorVersion": 5, "minorVersion": 0, "patchVersion": 14, + "createdAt": "2026-05-08T12:34:56Z", + "createdBy": "bbab2907-c781-4bf1-b912-b91510853052", "id": "75498125-33cb-4b33-8705-f0fadadb1a2f", "name": "Microsoft Enterprise", "type": "Microsoft",