From 895e1f9dff51f68e5f3090b0937f1ab12d13ab22 Mon Sep 17 00:00:00 2001 From: Ruman Mulla Date: Mon, 6 Jul 2026 15:37:10 +0100 Subject: [PATCH 01/16] LAB-2581: Post CSPM Assessment Specs --- specs/Data-Gateway.json | 363 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 363 insertions(+) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index a7f5a6a..a0b26c0 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2448,6 +2448,262 @@ "$ref": "#/components/schemas/Report.PrincipalData", "title": "Architecture Report - Principal Data" }, + "CspmPolicyAssessmentV1": { + "title": "CSPM Policy Assessment V1 - Complete Object", + "type": "object", + "description": "Container that represents the entire CSPM policy assessment structure for a complete run.", + "properties": { + "correlation": { + "$ref": "#/components/schemas/Report.CorrelationRecord", + "description": "Used for cross record tracking and auditing." + }, + "data": { + "$ref": "#/components/schemas/CspmPolicyAssessmentV1.CspmPolicyAssessmentData", + "description": "The computed CSPM policy assessment data." + }, + "schemaVersion": { + "type": "integer", + "format": "int32", + "description": "Indicator for migration scripts to auto migrate the data to newer or older formats.", + "examples": [ + 1 + ] + } + }, + "required": [ + "correlation", + "data", + "schemaVersion" + ], + "examples": [ + { + "correlation": { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "reportTenantAccount": "user@example.com", + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + "data": { + "reportCreatedDate": "2026-06-26T11:00:00.000Z", + "reportUpdatedDate": "2026-06-26T11:00:00.000Z", + "policyList": { + "a1b2c3d4-e5f6-7890-abcd-ef1234567890": { + "name": "Require MFA for all users", + "categoryList": [ + "Conditional Access" + ], + "coverageStatus": "partial", + "coverageMetricsRaw": { + "covered": 80, + "partial": 15, + "noCover": 5 + }, + "coverageMetricsNormalized": { + "covered": 80, + "partial": 15, + "noCover": 5 + } + } + } + }, + "schemaVersion": 1 + } + ] + }, + "CspmPolicyAssessmentV1.CspmPolicyAssessmentData": { + "title": "CSPM Policy Assessment Data", + "type": "object", + "description": "Represents the details of a CSPM policy collection, including a mapping of configuration item template IDs to their corresponding policy records. Optionally includes the creation and last update dates of the associated architecture report.", + "properties": { + "policyList": { + "type": "object", + "description": "The calculated mapping between configuration templateIds and their corresponding policy record. Where an architecture report has been provided, each policy record will also contain coverage statistics.", + "additionalProperties": { + "$ref": "#/components/schemas/CspmPolicyAssessmentV1.PolicyRecord" + }, + "examples": [ + { + "a1b2c3d4-e5f6-7890-abcd-ef1234567890": { + "name": "Require MFA for all users", + "categoryList": [ + "Conditional Access" + ], + "coverageStatus": "partial", + "coverageMetricsRaw": { + "covered": 80, + "partial": 15, + "noCover": 5 + }, + "coverageMetricsNormalized": { + "covered": 80, + "partial": 15, + "noCover": 5 + } + } + } + ] + }, + "reportCreatedDate": { + "$ref": "#/components/schemas/NullableDateTimeStringType", + "description": "The date the architecture report was created." + }, + "reportUpdatedDate": { + "$ref": "#/components/schemas/NullableDateTimeStringType", + "description": "The date the architecture report was last updated." + } + }, + "required": [ + "policyList" + ], + "additionalProperties": false, + "examples": [ + { + "reportCreatedDate": "2026-06-26T11:00:00.000Z", + "reportUpdatedDate": "2026-06-26T11:00:00.000Z", + "policyList": { + "a1b2c3d4-e5f6-7890-abcd-ef1234567890": { + "name": "Require MFA for all users", + "categoryList": [ + "Conditional Access" + ], + "coverageStatus": "partial", + "coverageMetricsRaw": { + "covered": 80, + "partial": 15, + "noCover": 5 + }, + "coverageMetricsNormalized": { + "covered": 80, + "partial": 15, + "noCover": 5 + } + } + } + } + ] + }, + "CspmPolicyAssessmentV1.CoverageMetrics": { + "title": "Coverage Metrics", + "type": "object", + "description": "Represents the coverage status of users.", + "properties": { + "covered": { + "type": "integer", + "format": "int64", + "minimum": 0, + "description": "The amount of users fully covered.", + "examples": [ + 80 + ] + }, + "partial": { + "type": "integer", + "format": "int64", + "minimum": 0, + "description": "The amount of users partially covered.", + "examples": [ + 15 + ] + }, + "noCover": { + "type": "integer", + "format": "int64", + "minimum": 0, + "description": "The amount of users not covered.", + "examples": [ + 5 + ] + } + }, + "required": [ + "covered", + "partial", + "noCover" + ], + "additionalProperties": false, + "examples": [ + { + "covered": 80, + "partial": 15, + "noCover": 5 + } + ] + }, + "CspmPolicyAssessmentV1.PolicyRecord": { + "title": "Policy Record", + "type": "object", + "description": "Represents a policy record with associated categories, name, user coverage metrics, and coverage status.", + "properties": { + "categoryList": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The categories that this policy belongs to.", + "examples": [ + [ + "Conditional Access" + ] + ] + }, + "name": { + "type": "string", + "description": "A human readable descriptive name of the policy.", + "examples": [ + "Require MFA for all users" + ] + }, + "coverageMetricsRaw": { + "$ref": "#/components/schemas/CspmPolicyAssessmentV1.CoverageMetrics", + "description": "Details raw coverage metrics of the policy." + }, + "coverageMetricsNormalized": { + "$ref": "#/components/schemas/CspmPolicyAssessmentV1.CoverageMetrics", + "description": "Details normalized coverage metrics of the policy." + }, + "coverageStatus": { + "type": "string", + "enum": [ + "full", + "partial", + "none" + ], + "description": "The summary status for the coverage metrics.", + "examples": [ + "partial" + ] + } + }, + "required": [ + "categoryList", + "name", + "coverageMetricsRaw", + "coverageMetricsNormalized", + "coverageStatus" + ], + "additionalProperties": false, + "examples": [ + { + "name": "Require MFA for all users", + "categoryList": [ + "Conditional Access" + ], + "coverageStatus": "partial", + "coverageMetricsRaw": { + "covered": 80, + "partial": 15, + "noCover": 5 + }, + "coverageMetricsNormalized": { + "covered": 80, + "partial": 15, + "noCover": 5 + } + } + ] + }, "CloudMatrix.UserProfileDetailEntry": { "title": "Cloud Matrix - User Profile Detail Entry", "type": "object", @@ -9680,6 +9936,113 @@ ] } }, + "/Api/V1/ArchitectureReport/CspmPolicyAssessment": { + "post": { + "description": "Stores the result of an Cspm Policy Assessment.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, `ArchitectureReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/V1/ArchitectureReport/CspmPolicyAssessment/Post", + "requestBody": { + "required": true, + "content": { + "application/json": { + "examples": { + "Cspm Policy Assessment V1": { + "description": "Sample, truncated report from an example customer environment. This will return the same report as the request input.", + "summary": "Example of CSPM Policy Assessment Stored.", + "value": { + "reportCreatedDate": "2026-06-26T11:00:00.000Z", + "reportUpdatedDate": "2026-06-26T11:00:00.000Z", + "policyList": { + "a1b2c3d4-e5f6-7890-abcd-ef1234567890": { + "name": "Require MFA for all users", + "categoryList": [ + "Conditional Access" + ], + "coverageStatus": "partial", + "coverageMetricsRaw": { + "covered": 80, + "partial": 15, + "noCover": 5 + }, + "coverageMetricsNormalized": { + "covered": 80, + "partial": 15, + "noCover": 5 + } + } + } + } + } + }, + "schema": { + "$ref": "#/components/schemas/CspmPolicyAssessmentV1.CspmPolicyAssessmentData" + } + } + } + }, + "responses": { + "200": { + "description": "CSPM Policy Assessment V1 submitted successfully.", + "content": { + "application/json": { + "examples": { + "CSPM Policy Assessment V1": { + "description": "Sample, cspm policy assessment result. This will return the same report as the request along with correlation data.", + "summary": "Example of CSPM Policy Assessment Stored.", + "value": { + "correlation": { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "reportTenantAccount": "user@example.com", + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + "data": { + "reportCreatedDate": "2026-06-26T11:00:00.000Z", + "reportUpdatedDate": "2026-06-26T11:00:00.000Z", + "policyList": { + "a1b2c3d4-e5f6-7890-abcd-ef1234567890": { + "name": "Require MFA for all users", + "categoryList": [ + "Conditional Access" + ], + "coverageStatus": "partial", + "coverageMetricsRaw": { + "covered": 80, + "partial": 15, + "noCover": 5 + }, + "coverageMetricsNormalized": { + "covered": 80, + "partial": 15, + "noCover": 5 + } + } + } + }, + "schemaVersion": 1 + } + } + }, + "schema": { + "$ref": "#/components/schemas/CspmPolicyAssessmentV1" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "tags": [ + "Architecture Reporting" + ], + "summary": "Submit CSPM Policy Assessment V1" + } + }, "/Api/CloudMatrix/Dashboard": { "get": { "description": "Retrieves the list of cloud matrix correlation records on the tenant provided inside the token. Can use filters targeting creation date to limit results. Cloud matrix records store the metadata for a specific cloud matrix correlation.\n\nThis endpoint requires the `CloudMatrix.Read`, `CloudMatrix.Read.Del`, `CloudMatrix.Read.All`, `CloudMatrix.ReadWrite`, or `CloudMatrix.ReadWrite.All` scope (permission).", From 62538ec589b636a4f5d1d229c3232e97f8e565bc Mon Sep 17 00:00:00 2001 From: Ruman Mulla <91155446+Loop-infinity@users.noreply.github.com> Date: Mon, 6 Jul 2026 15:43:54 +0100 Subject: [PATCH 02/16] Fix typo Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Ruman Mulla <91155446+Loop-infinity@users.noreply.github.com> --- 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 a0b26c0..f3d79b8 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -9938,7 +9938,7 @@ }, "/Api/V1/ArchitectureReport/CspmPolicyAssessment": { "post": { - "description": "Stores the result of an Cspm Policy Assessment.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, `ArchitectureReport.ReadWrite.All` scope (permission).", + "description": "Stores the result of a CSPM Policy Assessment.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, `ArchitectureReport.ReadWrite.All` scope (permission)." "operationId": "/Api/V1/ArchitectureReport/CspmPolicyAssessment/Post", "requestBody": { "required": true, From 7f804e3032760762e6ffeaaf4e5150fc57a934f4 Mon Sep 17 00:00:00 2001 From: Ruman Mulla Date: Tue, 14 Jul 2026 03:46:55 +0100 Subject: [PATCH 03/16] Datagateway spec - Add missing comma --- 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 f3d79b8..cfead57 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -9938,7 +9938,7 @@ }, "/Api/V1/ArchitectureReport/CspmPolicyAssessment": { "post": { - "description": "Stores the result of a CSPM Policy Assessment.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, `ArchitectureReport.ReadWrite.All` scope (permission)." + "description": "Stores the result of a CSPM Policy Assessment.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, `ArchitectureReport.ReadWrite.All` scope (permission).", "operationId": "/Api/V1/ArchitectureReport/CspmPolicyAssessment/Post", "requestBody": { "required": true, From 92c996c9be13278594201dbb6bf090a17970710f Mon Sep 17 00:00:00 2001 From: Ruman Mulla Date: Tue, 14 Jul 2026 10:28:30 +0100 Subject: [PATCH 04/16] Shield - Open Api spec for Shield Operation mode endpoint --- specs/SHIELD.json | 59 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 3887966..4eecf23 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -394,6 +394,33 @@ } ] }, + "Core.OperationMode": { + "title": "Core - Operation Mode", + "description": "Indicates the operation mode that the SHIELD application is currently running in.", + "type": "object", + "properties": { + "operationMode": { + "description": "Current operation mode value returned by the application.", + "type": "string", + "minLength": 1, + "examples": [ + "normal", + "discover" + ] + } + }, + "required": [ + "operationMode" + ], + "examples": [ + { + "operationMode": "normal" + }, + { + "operationMode": "discover" + } + ] + }, "Core.ProgressBar": { "title": "Core - Progress Bar", "description": "Used to indicate the progress of a long running operation.", @@ -4392,6 +4419,38 @@ "summary": "Health of the Service for Probing" } }, + "/Api/Core/OperationMode": { + "get": { + "description": "Retrieves the current operation mode used by the SHIELD application.", + "operationId": "/Api/Core/OperationMode/Get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Core.OperationMode" + }, + "examples": { + "Current operation mode": { + "summary": "Example Current Operation Mode", + "description": "An example payload that returns the application's current operation mode.", + "value": { + "operationMode": "normal" + } + } + } + } + }, + "description": "OK" + } + }, + "tags": [ + "Core" + ], + "security": [], + "summary": "Retrieves the Current Operation Mode" + } + }, "/Api/Auth/Id": { "get": { "description": "Provides the Tenant ID and the Application ID of the service principal that access tokens need to be issued against. This is also useful for configuring public clients to be able to authenticate to for auth code flows.", From c702f22729e215d4bb89f0049176bd72eeb30b94 Mon Sep 17 00:00:00 2001 From: Ruman Mulla Date: Wed, 15 Jul 2026 14:45:17 +0100 Subject: [PATCH 05/16] LAB-2585: [Data Gateway] Open API Spec for CSPM Assessment Data Retrieval Endpoint --- specs/Data-Gateway.json | 75 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 74 insertions(+), 1 deletion(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 3b7823e..082d5ca 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -5533,7 +5533,7 @@ ], "properties": { "correlationId": { - "$ref": "#/components/schemas/Uuid", + "$ref": "#/components/schemas/Uuid", "description": "Matches ID from whatever is being audited." }, "name": { @@ -10068,6 +10068,79 @@ "summary": "Submit CSPM Policy Assessment V1" } }, + "/Api/V1/ArchitectureReport/CspmPolicyAssessment/Correlation/{correlationId}/Data": { + "get": { + "summary": "Retrieve CSPM Policy Assessment V1 by Correlation ID", + "description": "Retrieves the stored CSPM policy assessment for the specified correlation ID in the authenticated tenant.\n\nThis endpoint requires the `ArchitectureReport.Read`, `ArchitectureReport.Read.All`, `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", + "operationId": "/Api/V1/ArchitectureReport/CspmPolicyAssessment/Correlation/:correlationId/Data/Get", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId" + } + ], + "responses": { + "200": { + "description": "The CSPM policy assessment data for the specified correlation ID.", + "content": { + "application/json": { + "examples": { + "CSPM Policy Assessment V1": { + "description": "Sample stored CSPM policy assessment result retrieved by correlation record ID.", + "summary": "CSPM Policy Assessment Details", + "value": { + "correlation": { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "reportTenantAccount": "user@example.com", + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + "data": { + "reportCreatedDate": "2026-06-26T11:00:00.000Z", + "reportUpdatedDate": "2026-06-26T11:00:00.000Z", + "policyList": { + "a1b2c3d4-e5f6-7890-abcd-ef1234567890": { + "name": "Require MFA for all users", + "categoryList": [ + "Conditional Access" + ], + "coverageStatus": "partial", + "coverageMetricsRaw": { + "covered": 80, + "partial": 15, + "noCover": 5 + }, + "coverageMetricsNormalized": { + "covered": 80, + "partial": 15, + "noCover": 5 + } + } + } + }, + "schemaVersion": 1 + } + } + }, + "schema": { + "$ref": "#/components/schemas/CspmPolicyAssessmentV1" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "tags": [ + "Architecture Reporting" + ] + } + }, "/Api/CloudMatrix/Dashboard": { "get": { "description": "Retrieves the list of cloud matrix correlation records on the tenant provided inside the token. Can use filters targeting creation date to limit results. Cloud matrix records store the metadata for a specific cloud matrix correlation.\n\nThis endpoint requires the `CloudMatrix.Read`, `CloudMatrix.Read.Del`, `CloudMatrix.Read.All`, `CloudMatrix.ReadWrite`, or `CloudMatrix.ReadWrite.All` scope (permission).", From 62443ac73e5d270677b87802edbb83368224efa7 Mon Sep 17 00:00:00 2001 From: Ruman Mulla <91155446+Loop-infinity@users.noreply.github.com> Date: Thu, 16 Jul 2026 09:26:49 +0100 Subject: [PATCH 06/16] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Signed-off-by: Ruman Mulla <91155446+Loop-infinity@users.noreply.github.com> --- specs/Data-Gateway.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 082d5ca..f721577 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -10132,6 +10132,12 @@ "400": { "$ref": "#/components/responses/400" }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, "500": { "$ref": "#/components/responses/500" } From 161859af0a930c34ab2112ac9410d6d7e6f22459 Mon Sep 17 00:00:00 2001 From: Ruman Mulla Date: Fri, 17 Jul 2026 14:26:50 +0100 Subject: [PATCH 07/16] LAB-2581: Update CSPM Assessment Open api spec --- specs/Data-Gateway.json | 90 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 89 insertions(+), 1 deletion(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index f721577..af58517 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -10071,7 +10071,7 @@ "/Api/V1/ArchitectureReport/CspmPolicyAssessment/Correlation/{correlationId}/Data": { "get": { "summary": "Retrieve CSPM Policy Assessment V1 by Correlation ID", - "description": "Retrieves the stored CSPM policy assessment for the specified correlation ID in the authenticated tenant.\n\nThis endpoint requires the `ArchitectureReport.Read`, `ArchitectureReport.Read.All`, `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", + "description": "Retrieves the stored CSPM policy assessment for the specified correlation ID in the authenticated tenant.\n\nThis endpoint requires the `ArchitectureReport.Read`, `ArchitectureReport.Read.All`, `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", "operationId": "/Api/V1/ArchitectureReport/CspmPolicyAssessment/Correlation/:correlationId/Data/Get", "parameters": [ { @@ -10138,6 +10138,94 @@ "403": { "$ref": "#/components/responses/403" }, + "404": { + "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "tags": [ + "Architecture Reporting" + ] + } + }, + "/Api/V1/ArchitectureReport/CspmPolicyAssessment/Correlation/{correlationId}/Tenant/{tenantId}/Data": { + "get": { + "summary": "Retrieve CSPM Policy Assessment V1 by Correlation ID and Tenant ID", + "description": "Retrieves the stored CSPM policy assessment for the specified correlation ID in the specified tenant.\n\nThis endpoint requires the `ArchitectureReport.Read.All`, `ArchitectureReport.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", + "operationId": "/Api/V1/ArchitectureReport/CspmPolicyAssessment/Correlation/:correlationId/Tenant/:tenantId/Data/Get", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId" + }, + { + "$ref": "#/components/parameters/tenantId" + } + ], + "responses": { + "200": { + "description": "The CSPM policy assessment data for the specified correlation ID and tenant ID.", + "content": { + "application/json": { + "examples": { + "CSPM Policy Assessment V1": { + "description": "Sample stored CSPM policy assessment result retrieved by correlation record ID and tenant ID.", + "summary": "CSPM Policy Assessment Details", + "value": { + "correlation": { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "reportTenantAccount": "user@example.com", + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + "data": { + "reportCreatedDate": "2026-06-26T11:00:00.000Z", + "reportUpdatedDate": "2026-06-26T11:00:00.000Z", + "policyList": { + "a1b2c3d4-e5f6-7890-abcd-ef1234567890": { + "name": "Require MFA for all users", + "categoryList": [ + "Conditional Access" + ], + "coverageStatus": "partial", + "coverageMetricsRaw": { + "covered": 80, + "partial": 15, + "noCover": 5 + }, + "coverageMetricsNormalized": { + "covered": 80, + "partial": 15, + "noCover": 5 + } + } + } + }, + "schemaVersion": 1 + } + } + }, + "schema": { + "$ref": "#/components/schemas/CspmPolicyAssessmentV1" + } + } + } + }, + "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" } From 1b533210af6d9f456591b0920c221a10447d55a8 Mon Sep 17 00:00:00 2001 From: JD-ghforme Date: Tue, 18 Aug 2026 14:20:50 -0400 Subject: [PATCH 08/16] initial checkin --- specs/Data-Gateway.json | 39 ++++++++++++++++++++++++++++++++------- 1 file changed, 32 insertions(+), 7 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index af58517..16869c9 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2903,14 +2903,28 @@ }, "altProduct": { "type": [ - "string", + "array", "null" ], - "description": "Alternate product, if any, or null.", - "examples": [ - "Other Product", - null - ] + "items": { + "type": "object", + "properties": { + "name": { + "type": "string" + }, + "publisher": { + "type": "string" + }, + "status": { + "type": "string" + } + }, + "required": [ + "name", + "publisher", + "status" + ] + } }, "publisher": { "type": [ @@ -2960,7 +2974,18 @@ "0d8e0c84-c0b4-4459-8b23-11ccff5ae319" ], "isDeepDive": true, - "altProduct": "Other Product", + "altProduct": [ + { + "name": "Other Product", + "publisher": "Other", + "status": "Broad Adoption" + }, + { + "name": "Another Product", + "publisher": "Another", + "status": "Limited Adoption" + } + ], "publisher": "Microsoft", "useCase": "Augment" } From a15cc2b1bfc142015825d5644de76333e833ba0d Mon Sep 17 00:00:00 2001 From: JD-ghforme Date: Wed, 19 Aug 2026 15:15:50 -0400 Subject: [PATCH 09/16] fixing copilot suggestion --- specs/Data-Gateway.json | 28 ++++++++++------------------ 1 file changed, 10 insertions(+), 18 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 16869c9..f0469e0 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2906,25 +2906,17 @@ "array", "null" ], - "items": { - "type": "object", - "properties": { - "name": { - "type": "string" - }, - "publisher": { - "type": "string" - }, - "status": { - "type": "string" + "description": "Alternative products that may be used for this year phase, or null when no alternatives apply.", + "examples": [ + [ + { + "name": "Google Workspace", + "publisher": "Google", + "status": "Broad Adoption" } - }, - "required": [ - "name", - "publisher", - "status" - ] - } + ], + null + ] }, "publisher": { "type": [ From 1d4b2073b09d82d2c2db936995707a676fef9d0e Mon Sep 17 00:00:00 2001 From: Jonny Pound Date: Wed, 9 Sep 2026 13:52:01 +0100 Subject: [PATCH 10/16] Increasing Data Gateway package version --- src/dataGateway/TypeScript/package-lock.json | 4 ++-- src/dataGateway/TypeScript/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/dataGateway/TypeScript/package-lock.json b/src/dataGateway/TypeScript/package-lock.json index 885e5e1..bb52b4b 100644 --- a/src/dataGateway/TypeScript/package-lock.json +++ b/src/dataGateway/TypeScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "@software-hardware-integration-lab/sdk-data-gateway", - "version": "3.3.3", + "version": "3.3.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@software-hardware-integration-lab/sdk-data-gateway", - "version": "3.3.3", + "version": "3.3.4", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.103", diff --git a/src/dataGateway/TypeScript/package.json b/src/dataGateway/TypeScript/package.json index 00e4e83..4c7c94e 100644 --- a/src/dataGateway/TypeScript/package.json +++ b/src/dataGateway/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@software-hardware-integration-lab/sdk-data-gateway", - "version": "3.3.3", + "version": "3.3.4", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHI Data Gateway service.", From 15dd138f042ede7222453ed85d27dfa04dbee6c7 Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Wed, 9 Sep 2026 14:30:53 +0100 Subject: [PATCH 11/16] ATL-674:- Add SHIELD telemetry event API endpoints Introduces SHIELD telemetry event support in the Data Gateway OpenAPI spec, including new event schemas, event-name enum values, and endpoints to create events plus list events globally or by tenant with optional date filtering. Also bumps the API and TypeScript SDK package versions to 3.3.4 to publish the new contract. --- specs/Data-Gateway.json | 290 ++++++++++++++++++- src/dataGateway/TypeScript/package-lock.json | 4 +- src/dataGateway/TypeScript/package.json | 2 +- 3 files changed, 292 insertions(+), 4 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index af58517..3b41ef5 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2080,6 +2080,66 @@ } ] }, + "Telemetry.Shield.EventName": { + "description": "Enumeration of SHIELD telemetry event names that can be recorded for a tenant.", + "type": "string", + "enum": [ + "license_report_saved", + "license_report_started", + "shield_installed" + ], + "examples": [ + "shield_installed", + "license_report_saved" + ], + "title": "Application Telemetry - SHIELD Event Name" + }, + "Telemetry.Shield.Event": { + "description": "A single SHIELD telemetry event recorded for a tenant.", + "type": "object", + "properties": { + "eventId": { + "$ref": "#/components/schemas/Uuid", + "description": "Unique identifier for the event record." + }, + "eventName": { + "$ref": "#/components/schemas/Telemetry.Shield.EventName", + "description": "Name of the SHIELD event." + }, + "tenantId": { + "$ref": "#/components/schemas/Uuid", + "description": "Tenant that generated the event." + }, + "createdAt": { + "$ref": "#/components/schemas/DateTimeStringType", + "description": "Timestamp indicating when the record was created. This value is automatically managed by Sequelize." + }, + "updatedAt": { + "$ref": "#/components/schemas/DateTimeStringType", + "description": "Timestamp indicating when the record was last updated. This value is automatically managed by Sequelize." + } + }, + "required": [ + "eventName" + ], + "title": "Application Telemetry - SHIELD Event", + "examples": [ + { + "eventId": "c1a2b3d4-5e6f-4789-9abc-def012345678", + "eventName": "shield_installed", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-01T00:00:00.000Z", + "updatedAt": "2026-01-01T00:00:00.000Z" + }, + { + "eventId": "e3c4d5f6-7a8b-4901-bcde-f01234567890", + "eventName": "license_report_saved", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-02T08:20:00.000Z", + "updatedAt": "2026-01-02T08:20:00.000Z" + } + ] + }, "Update.Shield.Check": { "description": "Object returning the value of the version of the latest application package available.", "properties": { @@ -5699,7 +5759,7 @@ }, "description": "Collects data from the various SHI Lab products and makes it available in a standardized way.", "title": "SHI - Data Gateway", - "version": "3.3.1" + "version": "3.3.4" }, "openapi": "3.1.1", "paths": { @@ -8043,6 +8103,234 @@ ] } }, + "/Api/Telemetry/Shield/Event": { + "post": { + "description": "Submits a single SHIELD event for the authenticated tenant.\n\nThis endpoint requires the `Telemetry.Shield.ReadWrite`, or `Telemetry.Shield.ReadWrite.All` scope (permission).", + "operationId": "/Api/Telemetry/Shield/Event/Post", + "requestBody": { + "content": { + "application/json": { + "examples": { + "Shield Installed": { + "description": "Example event reported when SHIELD is installed on a tenant.", + "summary": "Shield Installed Event", + "value": { + "eventName": "shield_installed" + } + }, + "License Report Saved": { + "description": "Example event reported when a license report has finished saving for a tenant.", + "summary": "License Report Saved Event", + "value": { + "eventName": "license_report_saved" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Telemetry.Shield.Event" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "Shield Installed": { + "description": "The recorded event after being saved for the authenticated tenant.", + "summary": "Recorded Shield Installed Event", + "value": { + "eventId": "c1a2b3d4-5e6f-4789-9abc-def012345678", + "eventName": "shield_installed", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-01T00:00:00.000Z", + "updatedAt": "2026-01-01T00:00:00.000Z" + } + }, + "License Report Saved": { + "description": "The recorded event after being saved for the authenticated tenant.", + "summary": "Recorded License Report Saved Event", + "value": { + "eventId": "e3c4d5f6-7a8b-4901-bcde-f01234567890", + "eventName": "license_report_saved", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-02T08:20:00.000Z", + "updatedAt": "2026-01-02T08:20:00.000Z" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Telemetry.Shield.Event" + } + } + }, + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "500": { + "$ref": "#/components/responses/500" + } + }, + "tags": [ + "Telemetry" + ], + "summary": "Creates a SHIELD Event" + }, + "get": { + "description": "Retrieves the SHIELD event records that have been reported across all tenants, optionally filtered to a date range. This endpoint does not filter by tenant, so records for every tenant are returned. Data is not guaranteed to be retrieved in any specific order.\n\nThis endpoint requires the `Telemetry.Shield.Read`, or `Telemetry.Shield.Read.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", + "operationId": "/Api/Telemetry/Shield/Event/Get", + "parameters": [ + { + "$ref": "#/components/parameters/dateStart" + }, + { + "$ref": "#/components/parameters/dateEnd" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "List of Events": { + "description": "List of SHIELD event records reported across all tenants.", + "summary": "List of SHIELD Event Records", + "value": [ + { + "eventId": "c1a2b3d4-5e6f-4789-9abc-def012345678", + "eventName": "shield_installed", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-01T00:00:00.000Z", + "updatedAt": "2026-01-01T00:00:00.000Z" + }, + { + "eventId": "d2b3c4e5-6f7a-4890-abcd-ef0123456789", + "eventName": "license_report_started", + "tenantId": "a7159bdc-678d-4726-901e-cd6d018d46e2", + "createdAt": "2026-01-02T08:15:00.000Z", + "updatedAt": "2026-01-02T08:15:00.000Z" + }, + { + "eventId": "e3c4d5f6-7a8b-4901-bcde-f01234567890", + "eventName": "license_report_saved", + "tenantId": "a7159bdc-678d-4726-901e-cd6d018d46e2", + "createdAt": "2026-01-02T08:20:00.000Z", + "updatedAt": "2026-01-02T08:20:00.000Z" + } + ] + } + }, + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Telemetry.Shield.Event" + }, + "minItems": 0 + } + } + }, + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "summary": "Lists SHIELD Event Records", + "tags": [ + "Telemetry" + ] + } + }, + "/Api/Telemetry/Shield/Event/Tenant/{tenantId}": { + "get": { + "description": "Retrieves the SHIELD event records that have been reported for the specified tenant, optionally filtered to a date range. Data is not guaranteed to be retrieved in any specific order.\n\nThis endpoint requires the `Telemetry.Shield.Read`, or `Telemetry.Shield.Read.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", + "operationId": "/Api/Telemetry/Shield/Event/Tenant/:tenantId/Get", + "parameters": [ + { + "$ref": "#/components/parameters/tenantId" + }, + { + "$ref": "#/components/parameters/dateStart" + }, + { + "$ref": "#/components/parameters/dateEnd" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "List of Events": { + "description": "List of SHIELD event records reported for the specified tenant.", + "summary": "List of SHIELD Event Records", + "value": [ + { + "eventId": "c1a2b3d4-5e6f-4789-9abc-def012345678", + "eventName": "shield_installed", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-01T00:00:00.000Z", + "updatedAt": "2026-01-01T00:00:00.000Z" + }, + { + "eventId": "d2b3c4e5-6f7a-4890-abcd-ef0123456789", + "eventName": "license_report_started", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-02T08:15:00.000Z", + "updatedAt": "2026-01-02T08:15:00.000Z" + }, + { + "eventId": "e3c4d5f6-7a8b-4901-bcde-f01234567890", + "eventName": "license_report_saved", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-02T08:20:00.000Z", + "updatedAt": "2026-01-02T08:20:00.000Z" + } + ] + } + }, + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/Telemetry.Shield.Event" + }, + "minItems": 0 + } + } + }, + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "summary": "Retrieves SHIELD Event Records for Specified Tenant", + "tags": [ + "Telemetry" + ] + } + }, "/Api/Update/Shield/Channel": { "get": { "description": "Retrieves all of the channel configurations that are present in the update service.\n\nThis endpoint requires the `UpdateShield.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI Lab` tenant. End user access is restricted.", diff --git a/src/dataGateway/TypeScript/package-lock.json b/src/dataGateway/TypeScript/package-lock.json index 885e5e1..bb52b4b 100644 --- a/src/dataGateway/TypeScript/package-lock.json +++ b/src/dataGateway/TypeScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "@software-hardware-integration-lab/sdk-data-gateway", - "version": "3.3.3", + "version": "3.3.4", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@software-hardware-integration-lab/sdk-data-gateway", - "version": "3.3.3", + "version": "3.3.4", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.103", diff --git a/src/dataGateway/TypeScript/package.json b/src/dataGateway/TypeScript/package.json index 00e4e83..4c7c94e 100644 --- a/src/dataGateway/TypeScript/package.json +++ b/src/dataGateway/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@software-hardware-integration-lab/sdk-data-gateway", - "version": "3.3.3", + "version": "3.3.4", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHI Data Gateway service.", From c3eddfdd014130b3702c8cab0297092610d2fec5 Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Wed, 9 Sep 2026 15:43:46 +0100 Subject: [PATCH 12/16] Clarify SHIELD event schema and permissions Marks SHIELD event identifiers and timestamps as read-only in the OpenAPI schema. Updates the GET endpoint permission text to reflect the required Telemetry.Shield.Read.All and Telemetry.Shield.ReadWrite.All scopes, and adjusts the spec version metadata accordingly. --- specs/Data-Gateway.json | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 3b41ef5..304ba43 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2100,7 +2100,8 @@ "properties": { "eventId": { "$ref": "#/components/schemas/Uuid", - "description": "Unique identifier for the event record." + "description": "Unique identifier for the event record.", + "readOnly": true }, "eventName": { "$ref": "#/components/schemas/Telemetry.Shield.EventName", @@ -2108,15 +2109,18 @@ }, "tenantId": { "$ref": "#/components/schemas/Uuid", - "description": "Tenant that generated the event." + "description": "Tenant that generated the event.", + "readOnly": true }, "createdAt": { "$ref": "#/components/schemas/DateTimeStringType", - "description": "Timestamp indicating when the record was created. This value is automatically managed by Sequelize." + "description": "Timestamp indicating when the record was created. This value is automatically managed by Sequelize.", + "readOnly": true }, "updatedAt": { "$ref": "#/components/schemas/DateTimeStringType", - "description": "Timestamp indicating when the record was last updated. This value is automatically managed by Sequelize." + "description": "Timestamp indicating when the record was last updated. This value is automatically managed by Sequelize.", + "readOnly": true } }, "required": [ @@ -5759,7 +5763,7 @@ }, "description": "Collects data from the various SHI Lab products and makes it available in a standardized way.", "title": "SHI - Data Gateway", - "version": "3.3.4" + "version": "3.3.2" }, "openapi": "3.1.1", "paths": { @@ -8186,7 +8190,7 @@ "summary": "Creates a SHIELD Event" }, "get": { - "description": "Retrieves the SHIELD event records that have been reported across all tenants, optionally filtered to a date range. This endpoint does not filter by tenant, so records for every tenant are returned. Data is not guaranteed to be retrieved in any specific order.\n\nThis endpoint requires the `Telemetry.Shield.Read`, or `Telemetry.Shield.Read.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", + "description": "Retrieves the SHIELD event records that have been reported across all tenants, optionally filtered to a date range. This endpoint does not filter by tenant, so records for every tenant are returned. Data is not guaranteed to be retrieved in any specific order.\n\nThis endpoint requires the `Telemetry.Shield.Read.All`, or `Telemetry.Shield.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", "operationId": "/Api/Telemetry/Shield/Event/Get", "parameters": [ { @@ -8258,7 +8262,7 @@ }, "/Api/Telemetry/Shield/Event/Tenant/{tenantId}": { "get": { - "description": "Retrieves the SHIELD event records that have been reported for the specified tenant, optionally filtered to a date range. Data is not guaranteed to be retrieved in any specific order.\n\nThis endpoint requires the `Telemetry.Shield.Read`, or `Telemetry.Shield.Read.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", + "description": "Retrieves the SHIELD event records that have been reported for the specified tenant, optionally filtered to a date range. Data is not guaranteed to be retrieved in any specific order.\n\nThis endpoint requires the `Telemetry.Shield.Read.All`, or `Telemetry.Shield.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", "operationId": "/Api/Telemetry/Shield/Event/Tenant/:tenantId/Get", "parameters": [ { From 73e215c753e7ad1370147ac8150129147bed2f28 Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Wed, 9 Sep 2026 15:48:14 +0100 Subject: [PATCH 13/16] Clarify SHIELD telemetry schema descriptions This change updates the Data Gateway schema descriptions for SHIELD event types and records to make the wording more concise and consistent. It removes redundant 'telemetry' phrasing and clarifies that the eventId uniquely identifies the event itself. --- 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 304ba43..57d3bc0 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2081,7 +2081,7 @@ ] }, "Telemetry.Shield.EventName": { - "description": "Enumeration of SHIELD telemetry event names that can be recorded for a tenant.", + "description": "Enumeration of SHIELD event names that can be recorded for a tenant.", "type": "string", "enum": [ "license_report_saved", @@ -2095,12 +2095,12 @@ "title": "Application Telemetry - SHIELD Event Name" }, "Telemetry.Shield.Event": { - "description": "A single SHIELD telemetry event recorded for a tenant.", + "description": "A single SHIELD event recorded for a tenant.", "type": "object", "properties": { "eventId": { "$ref": "#/components/schemas/Uuid", - "description": "Unique identifier for the event record.", + "description": "Unique identifier for the event.", "readOnly": true }, "eventName": { From 17a2476bcd8be8c8bbd68e76eda586b05ae127e9 Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Wed, 9 Sep 2026 16:16:42 +0100 Subject: [PATCH 14/16] Bump Data Gateway to 3.4.0 Update the Data Gateway OpenAPI specification and TypeScript SDK package metadata to version 3.4.0, keeping the published API version and generated package artifacts in sync. --- specs/Data-Gateway.json | 2 +- src/dataGateway/TypeScript/package-lock.json | 4 ++-- src/dataGateway/TypeScript/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 57d3bc0..58d3326 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -5763,7 +5763,7 @@ }, "description": "Collects data from the various SHI Lab products and makes it available in a standardized way.", "title": "SHI - Data Gateway", - "version": "3.3.2" + "version": "3.4.0" }, "openapi": "3.1.1", "paths": { diff --git a/src/dataGateway/TypeScript/package-lock.json b/src/dataGateway/TypeScript/package-lock.json index bb52b4b..5ce3dd5 100644 --- a/src/dataGateway/TypeScript/package-lock.json +++ b/src/dataGateway/TypeScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "@software-hardware-integration-lab/sdk-data-gateway", - "version": "3.3.4", + "version": "3.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@software-hardware-integration-lab/sdk-data-gateway", - "version": "3.3.4", + "version": "3.4.0", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.103", diff --git a/src/dataGateway/TypeScript/package.json b/src/dataGateway/TypeScript/package.json index 4c7c94e..e22839a 100644 --- a/src/dataGateway/TypeScript/package.json +++ b/src/dataGateway/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@software-hardware-integration-lab/sdk-data-gateway", - "version": "3.3.4", + "version": "3.4.0", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHI Data Gateway service.", From bf065d9a6cbb1ca13b8b5a6dba4a2a751c7d3ba3 Mon Sep 17 00:00:00 2001 From: Jagdish Khunti <66874579+JagdishKhunti@users.noreply.github.com> Date: Thu, 10 Sep 2026 10:52:01 +0100 Subject: [PATCH 15/16] Add examples for Shield telemetry events This change adds example payloads for Shield event arrays in the Data-Gateway OpenAPI spec. The examples illustrate common event lifecycle entries such as installation and license report progress, improving discoverability and documentation for API consumers. --- specs/Data-Gateway.json | 50 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 48 insertions(+), 2 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 57d45a4..70740b1 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -8255,7 +8255,30 @@ "items": { "$ref": "#/components/schemas/Telemetry.Shield.Event" }, - "minItems": 0 + "minItems": 0, + "examples": [ + { + "eventId": "c1a2b3d4-5e6f-4789-9abc-def012345678", + "eventName": "shield_installed", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-01T00:00:00.000Z", + "updatedAt": "2026-01-01T00:00:00.000Z" + }, + { + "eventId": "d2b3c4e5-6f7a-4890-abcd-ef0123456789", + "eventName": "license_report_started", + "tenantId": "a7159bdc-678d-4726-901e-cd6d018d46e2", + "createdAt": "2026-01-02T08:15:00.000Z", + "updatedAt": "2026-01-02T08:15:00.000Z" + }, + { + "eventId": "e3c4d5f6-7a8b-4901-bcde-f01234567890", + "eventName": "license_report_saved", + "tenantId": "a7159bdc-678d-4726-901e-cd6d018d46e2", + "createdAt": "2026-01-02T08:20:00.000Z", + "updatedAt": "2026-01-02T08:20:00.000Z" + } + ] } } }, @@ -8330,7 +8353,30 @@ "items": { "$ref": "#/components/schemas/Telemetry.Shield.Event" }, - "minItems": 0 + "minItems": 0, + "examples": [ + { + "eventId": "c1a2b3d4-5e6f-4789-9abc-def012345678", + "eventName": "shield_installed", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-01T00:00:00.000Z", + "updatedAt": "2026-01-01T00:00:00.000Z" + }, + { + "eventId": "d2b3c4e5-6f7a-4890-abcd-ef0123456789", + "eventName": "license_report_started", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-02T08:15:00.000Z", + "updatedAt": "2026-01-02T08:15:00.000Z" + }, + { + "eventId": "e3c4d5f6-7a8b-4901-bcde-f01234567890", + "eventName": "license_report_saved", + "tenantId": "46759f55-fb42-49e3-83ab-93de2a39bc1d", + "createdAt": "2026-01-02T08:20:00.000Z", + "updatedAt": "2026-01-02T08:20:00.000Z" + } + ] } } }, From 60223f80efe3c543575db4dfa55c63380073c91f Mon Sep 17 00:00:00 2001 From: Pasha Zayko Date: Thu, 10 Sep 2026 12:58:29 -0400 Subject: [PATCH 16/16] Updating version for Shield Updating version for Shield --- specs/SHIELD.json | 2 +- src/shield/TypeScript/package-lock.json | 4 ++-- src/shield/TypeScript/package.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 4eecf23..931591a 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -4340,7 +4340,7 @@ }, "description": "Deprive your threats of practical significance. Deploy the Securing Privilege Access architecture. All in a few seconds.", "title": "SHI Environment Lockdown and Defense", - "version": "3.5.2" + "version": "3.6.0" }, "openapi": "3.1.1", "paths": { diff --git a/src/shield/TypeScript/package-lock.json b/src/shield/TypeScript/package-lock.json index 3e1dd15..a2d12e5 100644 --- a/src/shield/TypeScript/package-lock.json +++ b/src/shield/TypeScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "@software-hardware-integration-lab/sdk-shield", - "version": "3.5.2", + "version": "3.6.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@software-hardware-integration-lab/sdk-shield", - "version": "3.5.2", + "version": "3.6.0", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.103", diff --git a/src/shield/TypeScript/package.json b/src/shield/TypeScript/package.json index 74fcd4f..ce281ec 100644 --- a/src/shield/TypeScript/package.json +++ b/src/shield/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@software-hardware-integration-lab/sdk-shield", - "version": "3.5.2", + "version": "3.6.0", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHIELD application.",