From 9e1f4405f61056b328839b5479a57006ed5356ea Mon Sep 17 00:00:00 2001 From: Pasha Zayko Date: Mon, 13 Oct 2025 12:35:27 -0400 Subject: [PATCH 01/45] Adding remediation point definition Creating definition for new remediation endpoint with POST request --- specs/SHIELD.json | 93 ++++++++++++++++++++++++- src/shield/TypeScript/package-lock.json | 4 +- src/shield/TypeScript/package.json | 2 +- 3 files changed, 95 insertions(+), 4 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index a97e06a..a927f20 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -1749,7 +1749,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.0.4" + "version": "3.0.9" }, "openapi": "3.1.0", "paths": { @@ -2631,6 +2631,97 @@ ] } }, + "/Api/Deploy/Remediate": { + "post": { + "summary": "Perform remediation steps to address discovered gaps in security posture", + "description": "After the user consents, perform necessary steps to deploy resources to cover the security gap.\n\nThis endpoint requires the `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission).", + "operationId": "/Api/Deploy/Remediate/Post", + "requestBody": { + "content": { + "application/json": { + "examples": { + "Insufficient Remediation Request": { + "description": "Someone trying to automate this application without reading the documentation.", + "summary": "Remediation Request Missing Needed Data", + "value": {} + }, + "No User Consent": { + "description": "User did not agree to the terms and conditions. This post should not have been sent.", + "summary": "User Did Not Consent", + "value": { + "remediationConsent": false, + "templateList": [ + "8e2b1c7a-4d5f-4a8b-9e6a-2c1b7f3d8e4a", + "3a7e2b1c-5d4f-4a8b-9e6a-7f2b3d1c9e45" + ] + } + }, + "User Consented": { + "description": "User agreed to the terms and conditions and pressed the remediate button.", + "summary": "User Consented", + "value": { + "remediationConsent": true, + "templateList": [ + "9c1e7a2b-5d3f-4a8b-2c6e-1a7f3d9e8b5c", + "2b3e7a1c-4d5f-4a8b-9e6a-5d1c7e2b3a4f", + "7f1a3d9e-8b5c-4a8b-2c6e-9c2e7a1b5d3f" + ] + } + } + }, + "schema": { + "properties": { + "remediationConsent": { + "description": "Flag that indicates the end user has consented to remediation steps (`true`) or not (`false`).", + "type": "boolean", + "examples": [ + true + ] + }, + "templateList": { + "description": "List of templateIds that indicate configuration items to be applied as part of remediation.", + "type": "array", + "items": { + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", + "examples": [ + "5d1c7e2b-3a4f-4a8b-9e6a-7f2b3d1c9e45" + ] + }, + "minItems": 0 + } + }, + "type": "object", + "required": [ + "remediationConsent", + "templateList" + ] + } + } + } + }, + "responses": { + "202": { + "description": "Request for remediation is accepted and process is running" + }, + "400": { + "description": "User provided information or choice are invalid for the operation" + }, + "409": { + "description": "Operation is already in progress" + }, + "503": { + "description": "System requirements have not been met!" + } + }, + "tags": [ + "Deploy" + ] + } + }, "/Api/Deploy/Version": { "get": { "description": "Gets the version of the API server and the architecture version deployed as well as the supported version of the architecture spec from the server.\n\nThis endpoint requires the `Deploy.Read`, `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission).", diff --git a/src/shield/TypeScript/package-lock.json b/src/shield/TypeScript/package-lock.json index 9f4da2f..eff69e6 100644 --- a/src/shield/TypeScript/package-lock.json +++ b/src/shield/TypeScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "@shi-corp/sdk-shield", - "version": "3.0.7", + "version": "3.0.9", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@shi-corp/sdk-shield", - "version": "3.0.7", + "version": "3.0.9", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.98", diff --git a/src/shield/TypeScript/package.json b/src/shield/TypeScript/package.json index 02baa58..edada41 100644 --- a/src/shield/TypeScript/package.json +++ b/src/shield/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@shi-corp/sdk-shield", - "version": "3.0.7", + "version": "3.0.9", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHIELD application.", From 5627f91951f8585b38323e80a2d7b39719b61c1a Mon Sep 17 00:00:00 2001 From: Pasha Zayko Date: Mon, 20 Oct 2025 14:00:58 -0400 Subject: [PATCH 02/45] Adding endpoint to create BreakGlass group resource Define new endpoint that attempts to create new group and return its name, or just returns name if the resource has already been provisioned --- specs/SHIELD.json | 51 +++++++++++++++++++++++++ src/shield/TypeScript/package-lock.json | 4 +- src/shield/TypeScript/package.json | 2 +- 3 files changed, 54 insertions(+), 3 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index e658386..94e3f81 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -3732,6 +3732,57 @@ ] } }, + "/Api/Deploy/Remediate/BreakGlass": { + "post": { + "summary": "Request to create BreakGlass security group", + "description": "Attempt to create BreakGlass security group in the tenant. If group has already been provisioned it will return the name of the group to reference.\n\nThis endpoint requires the `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission). ", + "operationId": "/Api/Deploy/Remediate/BreakGlass/Post", + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "Response with data": { + "summary": "Example of the returned data", + "description": "An example of the name of the resource either created or already existing.", + "value": { + "groupName": "SHIELD - BreakGlass" + } + } + }, + "schema": { + "type": "object", + "properties": { + "groupName": { + "type": "string", + "description": "Name of the security group created now or already existing in the tenant.", + "examples": [ + "SHIELD - BreakGlass" + ] + } + }, + "required": [ + "groupName" + ], + "examples": [ + { + "groupName": "SHIELD - BreakGlass" + } + ] + } + } + }, + "description": "OK" + }, + "503": { + "description": "System requirements have not been met!" + } + }, + "tags": [ + "Deploy" + ] + } + }, "/Api/Deploy/Remediate": { "post": { "summary": "Perform remediation steps to address discovered gaps in security posture", diff --git a/src/shield/TypeScript/package-lock.json b/src/shield/TypeScript/package-lock.json index a966a91..de1f019 100644 --- a/src/shield/TypeScript/package-lock.json +++ b/src/shield/TypeScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "@shi-corp/sdk-shield", - "version": "3.0.10", + "version": "3.0.11", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@shi-corp/sdk-shield", - "version": "3.0.10", + "version": "3.0.11", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.99", diff --git a/src/shield/TypeScript/package.json b/src/shield/TypeScript/package.json index 9045d7c..52d8ac4 100644 --- a/src/shield/TypeScript/package.json +++ b/src/shield/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@shi-corp/sdk-shield", - "version": "3.0.10", + "version": "3.0.11", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHIELD application.", From 5a679843b523fad1f454e7dbcd7c66e8d5e4bab2 Mon Sep 17 00:00:00 2001 From: TMoody Date: Thu, 30 Oct 2025 14:28:04 -0400 Subject: [PATCH 03/45] updated spec to include new endpoint updated spec to include the newly added /Api/Deploy/BreakGlassStatus endpoint --- specs/SHIELD.json | 97 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 97 insertions(+) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 1f5116b..40f979a 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -575,6 +575,55 @@ } ] }, + "Deploy.BreakGlassIndicator": { + "title": "Deploy - Break Glass Indicator", + "description": "Object containing the state and message providing details about break glass group and user existence.", + "type": "object", + "properties": { + "state": { + "type": "integer", + "description": " Numerical representation of the break glass group/user state: -1 = no break glass group. 0 = break glass group but < 2 users. 1 = break glass group with >= 2 users.", + "enum": [ + -1, + 0, + 1 + ], + "examples": [ + 1 + ] + }, + "message": { + "type": "string", + "description": "Status message indicating the state of the break glass group deployment and user creation requirements.", + "enum": [ + "No break glass group exists", + "Break glass group has less than 2 users", + "Looks Good" + ], + "examples": [ + "Looks Good" + ] + } + }, + "required": [ + "state", + "message" + ], + "examples": [ + { + "state": 1, + "message": "Looks Good" + }, + { + "state": 0, + "message": "Break glass group has less than 2 users" + }, + { + "state": -1, + "message": "No break glass group exists" + } + ] + }, "Deploy.ConfigurationTag": { "title": "Deploy - Configuration Tag", "description": "Definition of an object representing configuration tag used within architecture collections.", @@ -3592,6 +3641,54 @@ ] } }, + "/Api/Deploy/BreakGlassStatus": { + "get": { + "summary": "Checks the status of the break glass groups and required users existence.", + "description": "Retreives a numerical representation of existence status and a human readable message corresponding to said number", + "operationId": "/Api/Deploy/BreakGlassStatus/Get", + "responses": { + "200": { + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Deploy.BreakGlassIndicator" + }, + "examples": { + "Break Glass Indicator": { + "value": { + "state": 1, + "message": "Looks Good" + }, + "summary": " Group exists with 2 or more users", + "description": "An example break glass indicator object returned from the endpoint when the group is present and there are 2 or more users." + }, + "Break Glass Indicator User Issue": { + "value": { + "state": 0, + "message": "Break glass group has less than 2 users." + }, + "summary": "Group exists with less than 2 users.", + "description": "An example break glass indicator object returned from the endpoint when the break glass group is present and there are less than 2 users." + }, + "Break Glass Indicator Group Issue": { + "value": { + "state": -1, + "message": "No break glass group exists" + }, + "summary": "The break glass group is missing.", + "description": "An example break glass indicator object returned from the endpoint when no break glass group has been detected." + } + } + } + }, + "description": "OK" + } + }, + "tags": [ + "Deploy" + ] + } + }, "/Api/Deploy/Component/Architecture": { "get": { "summary": "Returns List of Available Architectures", From c9734302a6c30536be5b5cb87ec5148459ac7cc1 Mon Sep 17 00:00:00 2001 From: TMoody Date: Fri, 31 Oct 2025 08:49:46 -0400 Subject: [PATCH 04/45] removed unneeded schema removed unneeded object schema --- specs/SHIELD.json | 86 +++++++---------------------------------------- 1 file changed, 13 insertions(+), 73 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 40f979a..59e0e68 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -575,55 +575,6 @@ } ] }, - "Deploy.BreakGlassIndicator": { - "title": "Deploy - Break Glass Indicator", - "description": "Object containing the state and message providing details about break glass group and user existence.", - "type": "object", - "properties": { - "state": { - "type": "integer", - "description": " Numerical representation of the break glass group/user state: -1 = no break glass group. 0 = break glass group but < 2 users. 1 = break glass group with >= 2 users.", - "enum": [ - -1, - 0, - 1 - ], - "examples": [ - 1 - ] - }, - "message": { - "type": "string", - "description": "Status message indicating the state of the break glass group deployment and user creation requirements.", - "enum": [ - "No break glass group exists", - "Break glass group has less than 2 users", - "Looks Good" - ], - "examples": [ - "Looks Good" - ] - } - }, - "required": [ - "state", - "message" - ], - "examples": [ - { - "state": 1, - "message": "Looks Good" - }, - { - "state": 0, - "message": "Break glass group has less than 2 users" - }, - { - "state": -1, - "message": "No break glass group exists" - } - ] - }, "Deploy.ConfigurationTag": { "title": "Deploy - Configuration Tag", "description": "Definition of an object representing configuration tag used within architecture collections.", @@ -3644,39 +3595,28 @@ "/Api/Deploy/BreakGlassStatus": { "get": { "summary": "Checks the status of the break glass groups and required users existence.", - "description": "Retreives a numerical representation of existence status and a human readable message corresponding to said number", + "description": "Retrieves the status of required user qty existence in the break glass group.", "operationId": "/Api/Deploy/BreakGlassStatus/Get", "responses": { "200": { "content": { "application/json": { "schema": { - "$ref": "#/components/schemas/Deploy.BreakGlassIndicator" + "type": "boolean", + "examples": [ + true + ] }, "examples": { - "Break Glass Indicator": { - "value": { - "state": 1, - "message": "Looks Good" - }, - "summary": " Group exists with 2 or more users", - "description": "An example break glass indicator object returned from the endpoint when the group is present and there are 2 or more users." - }, - "Break Glass Indicator User Issue": { - "value": { - "state": 0, - "message": "Break glass group has less than 2 users." - }, - "summary": "Group exists with less than 2 users.", - "description": "An example break glass indicator object returned from the endpoint when the break glass group is present and there are less than 2 users." + "2 or more users": { + "summary": "2 or more users", + "description": "An example boolean value that represents the existence of 2 or more users in the break glass group.", + "value": true }, - "Break Glass Indicator Group Issue": { - "value": { - "state": -1, - "message": "No break glass group exists" - }, - "summary": "The break glass group is missing.", - "description": "An example break glass indicator object returned from the endpoint when no break glass group has been detected." + "Less than 2 users": { + "summary": "Less than 2 users", + "description": "An example boolean value that represents the existence of less than 2 users in the break glass group.", + "value": false } } } From cb38c2adcd8d3136fb8c2d9e543a4bbb643c8447 Mon Sep 17 00:00:00 2001 From: Pasha Zayko Date: Mon, 3 Nov 2025 11:46:23 -0500 Subject: [PATCH 05/45] Updating the spec definition to reflect all properties and adjusting example to match the definition Deploy.ConfigurationItem response now also includes deployStatus field Change example to accurately present available fields --- specs/SHIELD.json | 70 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 55 insertions(+), 15 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 94e3f81..8fd6bef 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -1113,7 +1113,7 @@ }, "Deploy.ConfigurationItem": { "title": "Deploy - Configuration Item List", - "description": "", + "description": "Collection of objects representing the configuration items with curated properties and values in user-friendly format.", "type": "array", "items": { "description": "", @@ -1140,6 +1140,19 @@ ] ] }, + "deployState": { + "type": "string", + "description": "Indicator of the infrastructure configuration item's current state. Mutated means that the item has been modified by the end user outside of SHIELD.", + "enum": [ + "notDeployed", + "deployed", + "Mutated", + "error" + ], + "examples": [ + "deployed" + ] + }, "groupTagList": { "type": "array", "description": "List of metadata tags that indicate which deployment sets the configuration item is compatible with.", @@ -1253,6 +1266,7 @@ }, "required": [ "childDependencies", + "deployState", "groupTagList", "msCloudTypes", "parentDependencies", @@ -1265,6 +1279,7 @@ "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", "9c2e7a1b-5d3f-4a8b-2c6e-7f1a3d9e8b5c" ], + "deployState": "deployed", "groupTagList": [ { "description": "Collection of policies covering critical conditional access settings.", @@ -1290,6 +1305,7 @@ "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", "9c2e7a1b-5d3f-4a8b-2c6e-7f1a3d9e8b5c" ], + "deployState": "deployed", "groupTagList": [ { "description": "Collection of policies covering critical conditional access settings.", @@ -1310,6 +1326,7 @@ "childDependencies": [ "1c2b5d3f-7a1b-4a8b-9e6a-2e4a3b7e8c5d" ], + "deployState": "notDeployed", "groupTagList": [ { "description": "Principal containers that are used to provide assignments.", @@ -3655,22 +3672,45 @@ "summary": "Available Configuration Items", "value": [ { - "id": "5e2a9c1f-8b3d-4f6a-9e7c-2d1f3a6b4c8e", - "name": "Core Security Group", - "description": "A core security group that contains essential security roles and permissions.", - "type": "SecurityGroup", - "isActive": true, - "createdAt": "2024-02-20T10:00:00Z", - "updatedAt": "2024-05-15T11:30:00Z" + "childDependencies": [ + "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", + "9c2e7a1b-5d3f-4a8b-2c6e-7f1a3d9e8b5c" + ], + "deployState": "deployed", + "groupTagList": [ + { + "description": "Collection of policies covering critical conditional access settings.", + "displayName": "Conditional Policy", + "tagId": "3b7e2a1c-4d5f-4a8b-9e6a-2c1b7f3d8e4a" + } + ], + "msCloudTypes": [ + "Public" + ], + "parentDependencies": [ + "8e6a1c2b-7f3d-4a8b-9c2e-5d3f7a1b2e4a" + ], + "templateId": "2a1c7e3b-5d4f-4a8b-9e6a-7f3d2b1c8e4a", + "urlPath": "/identity/conditionalAccess/policies" }, { - "id": "9c7f2e1a-3b6d-4a8e-9f5c-1d2a4b7e6c3f", - "name": "Scope Tag - Confidential Data", - "description": "A scope tag designed to restrict access to confidential data resources.", - "type": "ScopeTag", - "isActive": true, - "createdAt": "2024-04-12T14:20:00Z", - "updatedAt": "2024-07-01T09:50:00Z" + "childDependencies": [ + "1c2b5d3f-7a1b-4a8b-9e6a-2e4a3b7e8c5d" + ], + "deployState": "notDeployed", + "groupTagList": [ + { + "description": "Principal containers that are used to provide assignments.", + "displayName": "Administrative Unit", + "tagId": "5d3f9c2e-7a1b-4a8b-2c6e-1a3d7e8b5c4a" + } + ], + "msCloudTypes": [ + "Public" + ], + "parentDependencies": [], + "templateId": "4a8b7e1a-2b3c-4d5f-9e6a-1c2b7f3d8e4a", + "urlPath": "/directory/administrativeUnits" } ] } From e1e58f6668985b5720788588f27b3b403b4361a3 Mon Sep 17 00:00:00 2001 From: TMoody Date: Mon, 3 Nov 2025 12:08:11 -0500 Subject: [PATCH 06/45] updated endpoint path updated endpoint name to match incoming schema update from @pasha-zayko --- specs/SHIELD.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 59e0e68..7bc1c57 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -3592,11 +3592,11 @@ ] } }, - "/Api/Deploy/BreakGlassStatus": { + "/Api/Deploy/Remediate/BreakGlass": { "get": { "summary": "Checks the status of the break glass groups and required users existence.", "description": "Retrieves the status of required user qty existence in the break glass group.", - "operationId": "/Api/Deploy/BreakGlassStatus/Get", + "operationId": "/Api/Deploy/Remediate/BreakGlass/Get", "responses": { "200": { "content": { From 92ada1fa752bc0df8cbec3ed7934f09f92380aad Mon Sep 17 00:00:00 2001 From: TMoody Date: Thu, 6 Nov 2025 14:06:37 -0500 Subject: [PATCH 07/45] fixed copilot suggestions Fixed copilot pr suggested problems --- specs/SHIELD.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 7bc1c57..a5fe5d4 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -3595,7 +3595,7 @@ "/Api/Deploy/Remediate/BreakGlass": { "get": { "summary": "Checks the status of the break glass groups and required users existence.", - "description": "Retrieves the status of required user qty existence in the break glass group.", + "description": "Retrieves the status of required user quantity existence in the break glass group.\n\nThis endpoint requires the `Deploy.Read` scope (permission).", "operationId": "/Api/Deploy/Remediate/BreakGlass/Get", "responses": { "200": { From 8e85e33c33aedc65e437279e88280dbb7710ca25 Mon Sep 17 00:00:00 2001 From: Pasha Zayko Date: Wed, 19 Nov 2025 13:15:42 -0500 Subject: [PATCH 08/45] Adding optional operation to Deploy/Progress endpoint Included optional query parameter with possible values to retrieve progress of the specific operation --- specs/SHIELD.json | 132 ++++++++++++++++++++++++++++------------------ 1 file changed, 81 insertions(+), 51 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 3eeaeac..0e0ab9b 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -118,6 +118,33 @@ } } }, + "operation": { + "description": "Flag to indicate which progress data in the Deploy Engine to retrieve.", + "in": "query", + "name": "operation", + "schema": { + "examples": [ + "remediate" + ], + "type": "string", + "enum": [ + "deploy", + "remediate" + ] + }, + "examples": { + "valid request": { + "value": "remediate", + "summary": "Example of the request that provides expected value", + "description": "An example of a valid value that indicates the progress bar data to retrieve is for remediation action." + }, + "invalid request": { + "value": "somethingelse", + "summary": "Example of the request that includes unexpected value", + "description": "An example of a incorrect value that would be ignored and defaulted to data for deploy action." + } + } + }, "search": { "description": "Used in object filtering.", "in": "query", @@ -3644,6 +3671,55 @@ "tags": [ "Deploy" ] + }, + "post": { + "summary": "Request to create BreakGlass security group", + "description": "Attempt to create BreakGlass security group in the tenant. If group has already been provisioned it will return the name of the group to reference.\n\nThis endpoint requires the `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission). ", + "operationId": "/Api/Deploy/Remediate/BreakGlass/Post", + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "Response with data": { + "summary": "Example of the returned data", + "description": "An example of the name of the resource either created or already existing.", + "value": { + "groupName": "SHIELD - BreakGlass" + } + } + }, + "schema": { + "type": "object", + "properties": { + "groupName": { + "type": "string", + "description": "Name of the security group created now or already existing in the tenant.", + "examples": [ + "SHIELD - BreakGlass" + ] + } + }, + "required": [ + "groupName" + ], + "examples": [ + { + "groupName": "SHIELD - BreakGlass" + } + ] + } + } + }, + "description": "OK" + }, + "503": { + "description": "System requirements have not been met!" + } + }, + "tags": [ + "Deploy" + ] } }, "/Api/Deploy/Component/Architecture": { @@ -3770,6 +3846,11 @@ "summary": "Returns Current Execution Progress of the Deploy Module", "description": "Provides a detailed breakdown of the current progress of the deploy module and its sub-components, if any.\n\nThis endpoint requires the `Deploy.Read`, `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission).", "operationId": "/Api/Deploy/Progress/Get", + "parameters": [ + { + "$ref": "#/components/parameters/operation" + } + ], "responses": { "200": { "content": { @@ -3809,57 +3890,6 @@ ] } }, - "/Api/Deploy/Remediate/BreakGlass": { - "post": { - "summary": "Request to create BreakGlass security group", - "description": "Attempt to create BreakGlass security group in the tenant. If group has already been provisioned it will return the name of the group to reference.\n\nThis endpoint requires the `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission). ", - "operationId": "/Api/Deploy/Remediate/BreakGlass/Post", - "responses": { - "200": { - "content": { - "application/json": { - "examples": { - "Response with data": { - "summary": "Example of the returned data", - "description": "An example of the name of the resource either created or already existing.", - "value": { - "groupName": "SHIELD - BreakGlass" - } - } - }, - "schema": { - "type": "object", - "properties": { - "groupName": { - "type": "string", - "description": "Name of the security group created now or already existing in the tenant.", - "examples": [ - "SHIELD - BreakGlass" - ] - } - }, - "required": [ - "groupName" - ], - "examples": [ - { - "groupName": "SHIELD - BreakGlass" - } - ] - } - } - }, - "description": "OK" - }, - "503": { - "description": "System requirements have not been met!" - } - }, - "tags": [ - "Deploy" - ] - } - }, "/Api/Deploy/Remediate": { "post": { "summary": "Perform remediation steps to address discovered gaps in security posture", From 4612502f18f4a90c47c7414ea1a1e7637efd9237 Mon Sep 17 00:00:00 2001 From: Pasha Zayko Date: Wed, 19 Nov 2025 13:33:02 -0500 Subject: [PATCH 09/45] Typos and text clarification Typos and text clarification --- specs/SHIELD.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 0e0ab9b..ecc9ce3 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -119,7 +119,7 @@ } }, "operation": { - "description": "Flag to indicate which progress data in the Deploy Engine to retrieve.", + "description": "Flag to indicate which progress data in the Deploy Engine to retrieve. If invalid value is provided, it would be ignored and result defaulted to deploy operation.", "in": "query", "name": "operation", "schema": { @@ -141,7 +141,7 @@ "invalid request": { "value": "somethingelse", "summary": "Example of the request that includes unexpected value", - "description": "An example of a incorrect value that would be ignored and defaulted to data for deploy action." + "description": "An example of an incorrect value that would be ignored and defaulted to data for deploy action." } } }, From 55104d86fab69434a7e50e363d80bc246c4b5be9 Mon Sep 17 00:00:00 2001 From: Pasha Zayko <91487789+pasha-zayko@users.noreply.github.com> Date: Thu, 20 Nov 2025 15:43:27 -0500 Subject: [PATCH 10/45] Adding description to request remediation results (#70) * Adding description to request remediation results Adding new schema and verb option to /Api/Deploy/Remediate path --- specs/SHIELD.json | 138 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 137 insertions(+), 1 deletion(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index ecc9ce3..314d365 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -1138,6 +1138,100 @@ } ] }, + "Deploy.RemediationResponse": { + "title": "Deploy - Remediation Response Record", + "description": "Object with the details of the performed remediation action.", + "type": "object", + "properties": { + "errors": { + "type": "array", + "description": "Collection of the configuration items that failed to provision and available details on the error.", + "items": { + "type": "object", + "properties": { + "templateId": { + "type": "string", + "description": "Internal reference identifier of the resource.", + "format": "uuid", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", + "examples": [ + "7e2b1c3d-4f5a-4a8b-9e6a-1c2b7f3d8e4a" + ] + }, + "message": { + "type": "string", + "description": "Text with the details of the error response.", + "examples": [ + "Failed to create dedicated group for the resource: Unexpected error." + ] + } + }, + "required": [ + "templateId", + "message" + ], + "examples": [ + { + "templateId": "7e2b1c3d-4f5a-4a8b-9e6a-1c2b7f3d8e4a", + "message": "Failed to create dedicated group for the resource: Unexpected error." + } + ] + }, + "examples": [ + [ + { + "templateId": "7e2b1c3d-4f5a-4a8b-9e6a-1c2b7f3d8e4a", + "message": "Failed to create dedicated group for the resource: Unexpected error." + }, + { + "templateId": "2a1c7e3b-5d4f-4a8b-9e6a-7f3d2b1c8e4a", + "message": "Failed to create the resource: invalid value for 'id' reference." + } + ] + ] + }, + "results": { + "type": "object", + "description": "Records in the form of key/value where key is templateId of the configuration item and value is the name of the provisioned resource.", + "additionalProperties": { + "type": "string", + "examples": [ + "CSPM - MDCA" + ] + }, + "examples": [ + { + "4a8b7e1a-2b3c-4d5f-9e6a-1c2b7f3d8e4a": "CSPM - MDCA", + "b3e2c1d4-7f5a-4a8b-9e6a-2c1b7f3d8e4a": "CSPM - Authentication Methods" + } + ] + } + }, + "required": [ + "errors", + "results" + ], + "examples": [ + { + "errors": [ + { + "templateId": "7e2b1c3d-4f5a-4a8b-9e6a-1c2b7f3d8e4a", + "message": "Failed to create dedicated group for the resource: Unexpected error." + }, + { + "templateId": "2a1c7e3b-5d4f-4a8b-9e6a-7f3d2b1c8e4a", + "message": "Failed to create the resource: invalid value for 'id' reference." + } + ], + "results": { + "4a8b7e1a-2b3c-4d5f-9e6a-1c2b7f3d8e4a": "CSPM - MDCA", + "b3e2c1d4-7f5a-4a8b-9e6a-2c1b7f3d8e4a": "CSPM - Authentication Methods" + } + } + ] + }, "Deploy.ConfigurationItem": { "title": "Deploy - Configuration Item List", "description": "Collection of objects representing the configuration items with curated properties and values in user-friendly format.", @@ -3636,7 +3730,7 @@ ] } }, - "/Api/Deploy/Remediate/BreakGlass": { + "/Api/Deploy/BreakGlass": { "get": { "summary": "Checks the status of the break glass groups and required users existence.", "description": "Retrieves the status of required user quantity existence in the break glass group.\n\nThis endpoint requires the `Deploy.Read` scope (permission).", @@ -3891,6 +3985,48 @@ } }, "/Api/Deploy/Remediate": { + "get": { + "summary": "Retrieves Collected Remediation Results", + "description": "Returns results of the performed remediation action including any errors that occurred as well as mapping of templateId/name for the created resources.\n\nThis endpoint requires the `Deploy.Read`, or `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission).", + "operationId": "/Api/Deploy/Remediate/Get", + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "Response with Remediation Data": { + "summary": "Example of the remediation results", + "description": "An example of the current results of the remediation action.", + "value": { + "errors": [ + { + "templateId": "7e2b1c3d-4f5a-4a8b-9e6a-1c2b7f3d8e4a", + "message": "Failed to create dedicated group for the resource: Unexpected error." + }, + { + "templateId": "2a1c7e3b-5d4f-4a8b-9e6a-7f3d2b1c8e4a", + "message": "Failed to create the resource: invalid value for 'id' reference." + } + ], + "results": { + "4a8b7e1a-2b3c-4d5f-9e6a-1c2b7f3d8e4a": "CSPM - MDCA", + "b3e2c1d4-7f5a-4a8b-9e6a-2c1b7f3d8e4a": "CSPM - Authentication Methods" + } + } + } + }, + "schema": { + "$ref": "#/components/schemas/Deploy.RemediationResponse" + } + } + }, + "description": "OK" + } + }, + "tags": [ + "Deploy" + ] + }, "post": { "summary": "Perform remediation steps to address discovered gaps in security posture", "description": "After the user consents, perform necessary steps to deploy resources to cover the security gap.\n\nThis endpoint requires the `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission).", From a56e8476bb799ce432f44446ac864d95c6811128 Mon Sep 17 00:00:00 2001 From: JagdishKhunti Date: Fri, 21 Nov 2025 12:32:10 +0000 Subject: [PATCH 11/45] LAB-980 - Added endpoint and schema descriptions for LicenseReportV1 - Extracted common schema into a shared object for reuse in both LicenseReport and LicenseReportV1 --- specs/Data-Gateway.json | 1962 ++++++++++++++++++++++++++++++--------- 1 file changed, 1544 insertions(+), 418 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index b541504..a521607 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -414,6 +414,26 @@ "role" ] }, + "FeatureBreakdown": { + "additionalProperties": { + "type": "boolean", + "examples": [ + true + ] + }, + "description": "List of features that are configured for the specific service plan's service configuration for the related principal.\nThe key is the name of the feature that is being described.\nThe value is the state of the feature configuration, `true` is in scope and `false` meaning not in scope.", + "examples": [ + { + "Conditional Access": true, + "Access Reviews": true, + "Dynamic Groups": false, + "On-Prem Password Rest": true, + "On-Prem Password Protection": false + } + ], + "title": "License Report - Feature Breakdown", + "type": "object" + }, "LicenseReport.CorrelationRecord": { "description": "Metadata that describes the execution session (run) that is used to tie/relate all of the license report together.", "examples": [ @@ -513,7 +533,7 @@ "additionalProperties": { "oneOf": [ { - "$ref": "#/components/schemas/LicenseReport.FeatureBreakdown" + "$ref": "#/components/schemas/FeatureBreakdown" }, { "type": "integer", @@ -548,7 +568,7 @@ "additionalProperties": { "oneOf": [ { - "$ref": "#/components/schemas/LicenseReport.FeatureBreakdown" + "$ref": "#/components/schemas/FeatureBreakdown" }, { "type": "integer", @@ -634,26 +654,6 @@ ], "title": "License Report - License Data" }, - "LicenseReport.FeatureBreakdown": { - "additionalProperties": { - "type": "boolean", - "examples": [ - true - ] - }, - "description": "List of features that are configured for the specific service plan's service configuration for the related principal.\nThe key is the name of the feature that is being described.\nThe value is the state of the feature configuration, `true` is in scope and `false` meaning not in scope.", - "examples": [ - { - "Conditional Access": true, - "Access Reviews": true, - "Dynamic Groups": false, - "On-Prem Password Rest": true, - "On-Prem Password Protection": false - } - ], - "title": "License Report - Feature Breakdown", - "type": "object" - }, "LicenseReport": { "description": "Completely calculated license report structure that is the result of a complete run.", "examples": [ @@ -724,196 +724,422 @@ ], "title": "License Report - Complete Object" }, - "LicenseEntitlement.Shield": { - "description": "Record that describes the purchased licenses for a specific tenant. More than one of these can be active at a single time.", - "properties": { - "correlationId": { - "description": "Used to correlate the license entitlements with other records.", - "examples": [ - "e097a3f5-9599-44a2-8923-fd3276c83ae1" + "LicenseReportV1": { + "description": "Completely calculated license report V1 structure that is the result of a complete run.", + "examples": [ + { + "availableLicense": [ + { + "count": 10, + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "123e4567-e89b-12d3-a456-426614174000" + ] + } ], - "format": "uuid", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", - "readOnly": true, - "type": "string" + "correlation": { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + "principalData": { + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true + } + } + }, + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Software Engineer", + "idpDepartment": "Engineering", + "idpOfficeLocation": "Building 1", + "idpEmployeeType": "Full-Time" + } + } + } + }, + "schemaVersion": 1 + } + ], + "type": "object", + "properties": { + "availableLicense": { + "type": "array", + "items": { + "type": "object", + "required": [ + "count", + "id", + "servicePlanList" + ], + "properties": { + "count": { + "type": "integer", + "description": "Number of licenses that are purchased of the specific license." + }, + "id": { + "type": "string", + "format": "uuid", + "description": "Well known ID of the license bundle." + }, + "servicePlanList": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "List of available service plans for the current license." + } + } + } }, - "enterpriseDeviceCount": { - "description": "Count of Enterprise Devices that are allowed to be managed.", - "examples": [ - 5 - ], - "format": "int32", - "type": "integer" + "correlation": { + "$ref": "#/components/schemas/LicenseReportV1.LicenseCorrelationRecord" }, - "enterpriseInterfaceCount": { - "description": "Count of Enterprise Interfaces that are allowed to be managed.", - "examples": [ - 6 - ], - "format": "int32", - "type": "integer" + "principalData": { + "$ref": "#/components/schemas/LicenseReportV1.PrincipalData" }, - "enterpriseIntermediaryCount": { - "description": "Count of Enterprise Intermediaries that are allowed to be managed.", - "examples": [ - 7 - ], - "format": "int32", + "schemaVersion": { "type": "integer" - }, - "enterpriseUserCount": { - "description": "Count of Enterprise Users that are allowed to be managed.", + } + }, + "required": [ + "availableLicense", + "correlation", + "principalData", + "schemaVersion" + ], + "title": "License Report V1 - Complete Object" + }, + "LicenseReportV1.LicenseCorrelationRecord": { + "description": "Metadata that describes the execution session (run) that is used to tie/relate all of the license report together.", + "examples": [ + { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + } + ], + "properties": { + "auditTenantAccount": { + "description": "The user account used to retrieve the license information in the tenant being audited.", "examples": [ - 8 + "user@example.com" ], - "format": "int32", - "type": "integer" + "format": "email", + "type": "string" }, - "notValidAfter": { - "description": "Date that the entitlement expires at.", + "correlationId": { + "description": "The ID of the execution session (run) that is used to tie/relate all of the data together.", "examples": [ - "2024-07-30T17:35:24.044Z" + "88da2253-758f-4135-9d37-64448c8b65c1" ], - "format": "date-time", - "type": "string" + "format": "uuid", + "type": "string", + "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" }, - "notValidBefore": { - "description": "Date that the entitlement becomes active at.", + "createdAt": { + "description": "Timestamp of when the report was created.", "examples": [ - "2024-07-30T17:37:15.300Z" + "2024-08-01T21:12:22.148Z" ], "format": "date-time", "type": "string" }, - "privilegedDeviceCount": { - "description": "Count of Privileged Devices (PAW) that are allowed to be managed.", - "examples": [ - 9 - ], - "format": "int32", - "type": "integer" - }, - "privilegedInterfaceCount": { - "description": "Count of Privileged Interfaces that are allowed to be managed.", - "examples": [ - 10 - ], - "format": "int32", - "type": "integer" - }, - "privilegedIntermediaryCount": { - "description": "Count of Privileged Intermediaries that are allowed to be managed.", - "examples": [ - 11 - ], - "format": "int32", - "type": "integer" - }, - "privilegedUserCount": { - "description": "Count of Privileged Users that are allowed to be managed.", + "isMigrating": { + "description": "Flag indicating whether the current license report is migrating. If true, data is currently migrating from one version to another.", "examples": [ - 12 + true ], - "format": "int32", - "type": "integer" + "type": "boolean" }, - "purchaseId": { - "description": "This could be any value used to correlate the purchase operation to this entitlement record.", + "reportTenantAccount": { + "description": "User account used to store/report the license report to the SHI Lab cloud service.", "examples": [ - "Bob's your uncle." + "user@example.com" ], + "format": "email", "type": "string" }, - "specializedDeviceCount": { - "description": "Count of Specialized Devices that are allowed to be managed.", - "examples": [ - 13 - ], - "format": "int32", - "type": "integer" - }, - "specializedInterfaceCount": { - "description": "Count of Specialized Interfaces that are allowed to be managed.", - "examples": [ - 14 - ], - "format": "int32", - "type": "integer" - }, - "specializedIntermediaryCount": { - "description": "Count of Specialized Intermediaries that are allowed to be managed.", + "schemaVersion": { + "description": "Specifies the version of the current license report.", "examples": [ - 15 + 1 ], "format": "int32", "type": "integer" }, - "specializedUserCount": { - "description": "Count of Specialized Users that are allowed to be managed.", + "tenantId": { + "description": "Unique ID of customer's Microsoft tenant that the license report is for.", "examples": [ - 15 + "0e1fe83f-a33f-4250-8546-225b8d45ae01" ], - "format": "int32", - "type": "integer" + "format": "uuid", + "type": "string", + "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" }, - "tenantId": { - "description": "Tenant that this license entitlement is valid for.", + "updatedAt": { + "description": "Timestamp of when the report was last updated.", "examples": [ - "a2a1698d-a3e0-42d3-96a4-47eb3e8f7dd1" + "2024-08-01T21:12:22.148Z" ], - "format": "uuid", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", - "readOnly": true, + "format": "date-time", "type": "string" } }, "required": [ - "enterpriseDeviceCount", - "enterpriseInterfaceCount", - "enterpriseIntermediaryCount", - "enterpriseUserCount", - "notValidAfter", - "notValidBefore", - "privilegedDeviceCount", - "privilegedInterfaceCount", - "privilegedIntermediaryCount", - "privilegedUserCount", - "specializedDeviceCount", - "specializedInterfaceCount", - "specializedIntermediaryCount", - "specializedUserCount", - "tenantId" + "auditTenantAccount", + "reportTenantAccount" ], - "title": "License Entitlement - SHIELD Record", + "title": "License Report V1 - License Correlation Record", + "type": "object" + }, + "LicenseReportV1.PrincipalData": { "type": "object", + "required": [ + "device", + "user" + ], + "properties": { + "user": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "assignedService": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/LicenseReportV1.AdditionalService" + } + }, + "assignedLicense": { + "$ref": "#/components/schemas/LicenseReportV1.AssignedLicense" + }, + "consumedService": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/LicenseReportV1.AdditionalService" + } + }, + "llmInferred": { + "type": "object", + "properties": { + "isServiceAccount": { + "type": "boolean" + }, + "isFrontlineWorker": { + "type": "boolean" + }, + "isTempWorker": { + "type": "boolean" + } + } + }, + "principalMetadata": { + "type": "object", + "properties": { + "sharedMailbox": { + "type": "boolean" + } + } + }, + "enhancedData": { + "type": "object", + "properties": { + "userPrincipalName": { + "type": "string" + }, + "idpJobTitle": { + "type": "string" + }, + "idpDepartment": { + "type": "string" + }, + "idpOfficeLocation": { + "type": "string" + }, + "idpEmployeeType": { + "type": "string" + } + } + } + } + } + }, + "device": { + "type": "object", + "additionalProperties": { + "type": "object", + "properties": { + "assignedService": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/LicenseReportV1.AdditionalService" + } + }, + "assignedLicense": { + "$ref": "#/components/schemas/LicenseReportV1.AssignedLicense" + }, + "consumedService": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/LicenseReportV1.AdditionalService" + } + }, + "principalMetadata": { + "type": "object", + "properties": { + "sharedComputer": { + "type": "boolean" + } + } + } + } + } + }, + "schemaVersion": { + "type": "integer" + } + }, + "title": "License Report V1 - Principal Data" + }, + "LicenseReportV1.AdditionalService": { + "oneOf": [ + { + "$ref": "#/components/schemas/FeatureBreakdown" + }, + { + "type": "number", + "description": "Number of in-scope principals or usage count." + }, + { + "type": "null", + "description": "No data or unused." + } + ], "examples": [ { - "correlationId": "e097a3f5-9599-44a2-8923-fd3276c83ae1", - "enterpriseDeviceCount": 5, - "enterpriseInterfaceCount": 6, - "enterpriseIntermediaryCount": 7, - "enterpriseUserCount": 8, - "notValidAfter": "2024-07-30T17:35:24.044Z", - "notValidBefore": "2024-07-30T17:37:15.300Z", - "privilegedDeviceCount": 9, - "privilegedInterfaceCount": 10, - "privilegedIntermediaryCount": 11, - "privilegedUserCount": 12, - "purchaseId": "any arbitrary string as purchaseId", - "specializedDeviceCount": 13, - "specializedInterfaceCount": 14, - "specializedIntermediaryCount": 15, - "specializedUserCount": 15, - "tenantId": "a2a1698d-a3e0-42d3-96a4-47eb3e8f7dd1" + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + }, + "a1b2c3d4-e5f6-7890-abcd-ef1234567890": 5, + "123e4567-e89b-12d3-a456-426614174000": null } ] }, - "LicenseEntitlement.Shield.Count": { + "LicenseReportV1.AssignedLicense": { + "type": "array", + "items": { + "type": "object", + "required": [ + "id", + "servicePlanList" + ], + "properties": { + "id": { + "type": "string", + "format": "uuid", + "description": "Unique identifier for the assigned license." + }, + "servicePlanList": { + "type": "array", + "items": { + "type": "string", + "format": "uuid" + }, + "description": "List of service plans associated with the assigned license." + } + } + }, + "example": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "123e4567-e89b-12d3-a456-426614174000" + ] + }, + { + "id": "7e8f9a0b-1c2d-3e4f-5a6b-7c8d9e0f1a2b", + "servicePlanList": [ + "abcdefab-cdef-abcd-efab-cdefabcdefab" + ] + } + ] + }, + "LicenseEntitlement.Shield": { + "description": "Record that describes the purchased licenses for a specific tenant. More than one of these can be active at a single time.", "properties": { + "correlationId": { + "description": "Used to correlate the license entitlements with other records.", + "examples": [ + "e097a3f5-9599-44a2-8923-fd3276c83ae1" + ], + "format": "uuid", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", + "readOnly": true, + "type": "string" + }, "enterpriseDeviceCount": { "description": "Count of Enterprise Devices that are allowed to be managed.", "examples": [ @@ -925,7 +1151,7 @@ "enterpriseInterfaceCount": { "description": "Count of Enterprise Interfaces that are allowed to be managed.", "examples": [ - 3 + 6 ], "format": "int32", "type": "integer" @@ -946,6 +1172,22 @@ "format": "int32", "type": "integer" }, + "notValidAfter": { + "description": "Date that the entitlement expires at.", + "examples": [ + "2024-07-30T17:35:24.044Z" + ], + "format": "date-time", + "type": "string" + }, + "notValidBefore": { + "description": "Date that the entitlement becomes active at.", + "examples": [ + "2024-07-30T17:37:15.300Z" + ], + "format": "date-time", + "type": "string" + }, "privilegedDeviceCount": { "description": "Count of Privileged Devices (PAW) that are allowed to be managed.", "examples": [ @@ -978,6 +1220,13 @@ "format": "int32", "type": "integer" }, + "purchaseId": { + "description": "This could be any value used to correlate the purchase operation to this entitlement record.", + "examples": [ + "Bob's your uncle." + ], + "type": "string" + }, "specializedDeviceCount": { "description": "Count of Specialized Devices that are allowed to be managed.", "examples": [ @@ -1009,6 +1258,18 @@ ], "format": "int32", "type": "integer" + }, + "tenantId": { + "description": "Tenant that this license entitlement is valid for.", + "examples": [ + "a2a1698d-a3e0-42d3-96a4-47eb3e8f7dd1" + ], + "format": "uuid", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", + "readOnly": true, + "type": "string" } }, "required": [ @@ -1016,6 +1277,8 @@ "enterpriseInterfaceCount", "enterpriseIntermediaryCount", "enterpriseUserCount", + "notValidAfter", + "notValidBefore", "privilegedDeviceCount", "privilegedInterfaceCount", "privilegedIntermediaryCount", @@ -1023,87 +1286,225 @@ "specializedDeviceCount", "specializedInterfaceCount", "specializedIntermediaryCount", - "specializedUserCount" + "specializedUserCount", + "tenantId" ], - "title": "License Entitlement - Active SHIELD Count", + "title": "License Entitlement - SHIELD Record", "type": "object", "examples": [ { + "correlationId": "e097a3f5-9599-44a2-8923-fd3276c83ae1", "enterpriseDeviceCount": 5, - "enterpriseInterfaceCount": 3, + "enterpriseInterfaceCount": 6, "enterpriseIntermediaryCount": 7, "enterpriseUserCount": 8, + "notValidAfter": "2024-07-30T17:35:24.044Z", + "notValidBefore": "2024-07-30T17:37:15.300Z", "privilegedDeviceCount": 9, "privilegedInterfaceCount": 10, "privilegedIntermediaryCount": 11, "privilegedUserCount": 12, + "purchaseId": "any arbitrary string as purchaseId", "specializedDeviceCount": 13, "specializedInterfaceCount": 14, "specializedIntermediaryCount": 15, - "specializedUserCount": 15 + "specializedUserCount": 15, + "tenantId": "a2a1698d-a3e0-42d3-96a4-47eb3e8f7dd1" } ] }, - "Telemetry.Shield": { + "LicenseEntitlement.Shield.Count": { "properties": { - "correlationId": { - "description": "Primary key for the table, used to correlate multiple telemetry records together.", - "format": "uuid", - "type": "string", - "examples": [ - "1d71e0fe-6e4a-464d-a690-80addf3bda55" - ] - }, "enterpriseDeviceCount": { - "description": "Count of Enterprise Devices that are deployed in the CX environment.", - "type": "integer", - "minimum": 0, + "description": "Count of Enterprise Devices that are allowed to be managed.", "examples": [ - 0 - ] + 5 + ], + "format": "int32", + "type": "integer" }, "enterpriseInterfaceCount": { - "description": "Number of active Enterprise interfaces.", - "type": "integer", - "minimum": 0, + "description": "Count of Enterprise Interfaces that are allowed to be managed.", "examples": [ - 0 - ] + 3 + ], + "format": "int32", + "type": "integer" }, "enterpriseIntermediaryCount": { - "description": "Number of active Enterprise intermediaries.", - "type": "integer", - "minimum": 0, + "description": "Count of Enterprise Intermediaries that are allowed to be managed.", "examples": [ - 0 - ] + 7 + ], + "format": "int32", + "type": "integer" }, "enterpriseUserCount": { - "description": "Count of Enterprise Users that are deployed in the CX environment.", - "type": "integer", - "minimum": 0, + "description": "Count of Enterprise Users that are allowed to be managed.", "examples": [ - 0 - ] + 8 + ], + "format": "int32", + "type": "integer" }, - "monthlyActiveEntUsers": { - "description": "Number of active managed Enterprise users.", - "type": "integer", - "minimum": 0, + "privilegedDeviceCount": { + "description": "Count of Privileged Devices (PAW) that are allowed to be managed.", "examples": [ - 0 - ] + 9 + ], + "format": "int32", + "type": "integer" }, - "monthlyActivePrivUsers": { - "description": "Number of active managed privileged users.", - "type": "integer", - "minimum": 0, + "privilegedInterfaceCount": { + "description": "Count of Privileged Interfaces that are allowed to be managed.", "examples": [ - 0 - ] - }, - "monthlyActiveSpecUsers": { - "description": "Number of active managed Specialized users.", + 10 + ], + "format": "int32", + "type": "integer" + }, + "privilegedIntermediaryCount": { + "description": "Count of Privileged Intermediaries that are allowed to be managed.", + "examples": [ + 11 + ], + "format": "int32", + "type": "integer" + }, + "privilegedUserCount": { + "description": "Count of Privileged Users that are allowed to be managed.", + "examples": [ + 12 + ], + "format": "int32", + "type": "integer" + }, + "specializedDeviceCount": { + "description": "Count of Specialized Devices that are allowed to be managed.", + "examples": [ + 13 + ], + "format": "int32", + "type": "integer" + }, + "specializedInterfaceCount": { + "description": "Count of Specialized Interfaces that are allowed to be managed.", + "examples": [ + 14 + ], + "format": "int32", + "type": "integer" + }, + "specializedIntermediaryCount": { + "description": "Count of Specialized Intermediaries that are allowed to be managed.", + "examples": [ + 15 + ], + "format": "int32", + "type": "integer" + }, + "specializedUserCount": { + "description": "Count of Specialized Users that are allowed to be managed.", + "examples": [ + 15 + ], + "format": "int32", + "type": "integer" + } + }, + "required": [ + "enterpriseDeviceCount", + "enterpriseInterfaceCount", + "enterpriseIntermediaryCount", + "enterpriseUserCount", + "privilegedDeviceCount", + "privilegedInterfaceCount", + "privilegedIntermediaryCount", + "privilegedUserCount", + "specializedDeviceCount", + "specializedInterfaceCount", + "specializedIntermediaryCount", + "specializedUserCount" + ], + "title": "License Entitlement - Active SHIELD Count", + "type": "object", + "examples": [ + { + "enterpriseDeviceCount": 5, + "enterpriseInterfaceCount": 3, + "enterpriseIntermediaryCount": 7, + "enterpriseUserCount": 8, + "privilegedDeviceCount": 9, + "privilegedInterfaceCount": 10, + "privilegedIntermediaryCount": 11, + "privilegedUserCount": 12, + "specializedDeviceCount": 13, + "specializedInterfaceCount": 14, + "specializedIntermediaryCount": 15, + "specializedUserCount": 15 + } + ] + }, + "Telemetry.Shield": { + "properties": { + "correlationId": { + "description": "Primary key for the table, used to correlate multiple telemetry records together.", + "format": "uuid", + "type": "string", + "examples": [ + "1d71e0fe-6e4a-464d-a690-80addf3bda55" + ] + }, + "enterpriseDeviceCount": { + "description": "Count of Enterprise Devices that are deployed in the CX environment.", + "type": "integer", + "minimum": 0, + "examples": [ + 0 + ] + }, + "enterpriseInterfaceCount": { + "description": "Number of active Enterprise interfaces.", + "type": "integer", + "minimum": 0, + "examples": [ + 0 + ] + }, + "enterpriseIntermediaryCount": { + "description": "Number of active Enterprise intermediaries.", + "type": "integer", + "minimum": 0, + "examples": [ + 0 + ] + }, + "enterpriseUserCount": { + "description": "Count of Enterprise Users that are deployed in the CX environment.", + "type": "integer", + "minimum": 0, + "examples": [ + 0 + ] + }, + "monthlyActiveEntUsers": { + "description": "Number of active managed Enterprise users.", + "type": "integer", + "minimum": 0, + "examples": [ + 0 + ] + }, + "monthlyActivePrivUsers": { + "description": "Number of active managed privileged users.", + "type": "integer", + "minimum": 0, + "examples": [ + 0 + ] + }, + "monthlyActiveSpecUsers": { + "description": "Number of active managed Specialized users.", "type": "integer", "minimum": 0, "examples": [ @@ -1597,17 +1998,621 @@ } } } - } + } + } + }, + "Ignorant License Report Request": { + "description": "Clueless dev trying to automate this application without reading the docs. RTFM!", + "summary": "Ignorant License Report Request", + "value": {} + } + }, + "schema": { + "$ref": "#/components/schemas/LicenseReport" + } + } + } + }, + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "License Report": { + "description": "Sample, truncated report from an example customer environment. This will return the same report as the request input.", + "summary": "Example of license report stored.", + "value": { + "availableLicense": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 123456, + "5888a922-9f5b-45fd-bd5f-de3283d6a79e": 99999999, + "a4b2e176-d63d-4081-9e21-226e2ac624b9": 5, + "547404d4-8734-415f-a7ca-e9c1ffb95e48": 25, + "d76878d6-1495-4243-a334-a82bb9818cd0": 500 + }, + "correlation": { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db" + }, + "licenseData": { + "250844e1-a7ab-4f21-8e3f-58f51b5983a3": { + "assignedLicense": { + "5888a922-9f5b-45fd-bd5f-de3283d6a79e": null, + "3d282045-ec7f-4813-88e2-29b74ee609f7": null + }, + "assignedService": { + "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, + "d76878d6-1495-4243-a334-a82bb9818cd0": null + }, + "consumedService": { + "e0d101e8-6f1e-40a9-a66f-cad4112c9a59": null, + "c63b7a2d-6573-4c37-9ca8-e12b954d3198": { + "Something Here": true, + "Other Obscure feature": false + } + } + }, + "04e88835-771a-482b-9d6f-ba06c32cbb67": { + "assignedLicense": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": null + }, + "assignedService": { + "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, + "d76878d6-1495-4243-a334-a82bb9818cd0": null + }, + "consumedService": { + "9d3603de-b378-4c4a-adcc-ee133cbef914": null, + "e9a4e3d3-ebe0-405a-a8f4-35a04c4dba1f": { + "Something Here": true, + "Other Obscure feature": false + } + } + } + } + } + } + }, + "schema": { + "$ref": "#/components/schemas/LicenseReport" + } + } + }, + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "tags": [ + "License Analytics" + ], + "summary": "Store License Analytics Data" + } + }, + "/Api/LicenseReport/Correlation": { + "get": { + "description": "Retrieves the list of correlation records for the authenticated tenant. Can use filters targeting creation date to limit results. Correlation records store the metadata for a specific license report.\n\nThis endpoint requires the `LicenseReport.Read`, `LicenseReport.Read.All`, `LicenseReport.ReadWrite`, or `LicenseReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/LicenseReport/Correlation/Get", + "parameters": [ + { + "$ref": "#/components/parameters/dateStart" + }, + { + "$ref": "#/components/parameters/dateEnd" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "Example Correlation Records": { + "description": "Sample list of correlation records for the current authenticated tenant.", + "summary": "Available Correlation Records", + "value": [ + { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", + "createdAt": "2024-08-01T21:14:45.026Z", + "updatedAt": "2024-08-01T21:14:45.026Z" + }, + { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "d8095827-a313-40e1-b086-f72636de0edf", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", + "createdAt": "2024-07-25T21:14:45.026Z", + "updatedAt": "2024-07-25T21:14:45.026Z" + } + ] + } + }, + "schema": { + "type": "array", + "minItems": 0, + "items": { + "$ref": "#/components/schemas/LicenseReport.CorrelationRecord" + }, + "examples": [ + [ + { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", + "createdAt": "2024-08-01T21:14:45.026Z", + "updatedAt": "2024-08-01T21:14:45.026Z" + }, + { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "d8095827-a313-40e1-b086-f72636de0edf", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", + "createdAt": "2024-07-25T21:14:45.026Z", + "updatedAt": "2024-07-25T21:14:45.026Z" + } + ] + ] + } + } + }, + "description": "OK" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "tags": [ + "License Analytics" + ], + "summary": "Retrieve the List of Correlation Records" + } + }, + "/Api/LicenseReport/Correlation/Tenant/{tenantId}": { + "get": { + "description": "Retrieves the list of correlation records for the specified tenant. Can use filters targeting creation date to limit results. Correlation records store the metadata for a specific license report.\n\nThis endpoint requires the `LicenseReport.Read.All`, or `LicenseReport.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", + "operationId": "/Api/LicenseReport/Correlation/Tenant/:tenantId/Get", + "parameters": [ + { + "$ref": "#/components/parameters/tenantId" + }, + { + "$ref": "#/components/parameters/dateStart" + }, + { + "$ref": "#/components/parameters/dateEnd" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "Example Correlation Records": { + "description": "Sample list of correlation records for the specified tenant.", + "summary": "Available Correlation Records", + "value": [ + { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", + "createdAt": "2024-08-01T21:14:45.026Z", + "updatedAt": "2024-08-01T21:14:45.026Z" + }, + { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "d8095827-a313-40e1-b086-f72636de0edf", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", + "createdAt": "2024-07-25T21:14:45.026Z", + "updatedAt": "2024-07-25T21:14:45.026Z" + } + ] + } + }, + "schema": { + "type": "array", + "minItems": 0, + "items": { + "$ref": "#/components/schemas/LicenseReport.CorrelationRecord" + }, + "examples": [ + [ + { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", + "createdAt": "2024-08-01T21:14:45.026Z", + "updatedAt": "2024-08-01T21:14:45.026Z" + }, + { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "d8095827-a313-40e1-b086-f72636de0edf", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", + "createdAt": "2024-07-25T21:14:45.026Z", + "updatedAt": "2024-07-25T21:14:45.026Z" + } + ] + ] + } + } + }, + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "tags": [ + "License Analytics" + ], + "summary": "Retrieve the List of Correlation Records for Specified Tenant" + } + }, + "/Api/LicenseReport/Correlation/{correlationId}/Data": { + "get": { + "description": "Retrieves the full license report for the specified correlation ID in the authenticated tenant. The license report contains all of the license usage and compliance information with the required correlation data.\n\nThis endpoint requires the `LicenseReport.Read`, `LicenseReport.Read.All`, `LicenseReport.ReadWrite`, or `LicenseReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/LicenseReport/Correlation/:correlationId/Data/Get", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "Example License Report": { + "description": "Sample, truncated license report from an example customer environment for a correlation record of the current authenticated tenant.", + "summary": "Example License Report", + "value": { + "availableLicense": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 123456, + "5888a922-9f5b-45fd-bd5f-de3283d6a79e": 99999999, + "a4b2e176-d63d-4081-9e21-226e2ac624b9": 5, + "547404d4-8734-415f-a7ca-e9c1ffb95e48": 25, + "d76878d6-1495-4243-a334-a82bb9818cd0": 500 + }, + "correlation": { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db" + }, + "licenseData": { + "250844e1-a7ab-4f21-8e3f-58f51b5983a3": { + "assignedLicense": { + "5888a922-9f5b-45fd-bd5f-de3283d6a79e": null, + "3d282045-ec7f-4813-88e2-29b74ee609f7": null + }, + "assignedService": { + "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, + "d76878d6-1495-4243-a334-a82bb9818cd0": null + }, + "consumedService": { + "e0d101e8-6f1e-40a9-a66f-cad4112c9a59": null, + "c63b7a2d-6573-4c37-9ca8-e12b954d3198": { + "Something Here": true, + "Other Obscure feature": false + } + } + }, + "04e88835-771a-482b-9d6f-ba06c32cbb67": { + "assignedLicense": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": null + }, + "assignedService": { + "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, + "d76878d6-1495-4243-a334-a82bb9818cd0": null + }, + "consumedService": { + "9d3603de-b378-4c4a-adcc-ee133cbef914": null, + "e9a4e3d3-ebe0-405a-a8f4-35a04c4dba1f": { + "Something Here": true, + "Other Obscure feature": false + } + } + } + } + } + } + }, + "schema": { + "$ref": "#/components/schemas/LicenseReport" + } + } + }, + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "tags": [ + "License Analytics" + ], + "summary": "Retrieve the Specified License Report" + }, + "delete": { + "description": "Deletes the full license report for the specified correlation ID.\n\nThis endpoint requires the `LicenseReport.ReadWrite`, or `LicenseReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/LicenseReport/Correlation/:correlationId/Data/delete", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId" + } + ], + "responses": { + "201": { + "description": "Deleted successfully" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "tags": [ + "License Analytics" + ], + "summary": "Delete the Specified License Report for the currently authenticated tenant." + } + }, + "/Api/LicenseReport/Correlation/{correlationId}/Tenant/{tenantId}/Data": { + "get": { + "description": "Retrieves the full license report for the specified correlation ID and tenant. The license report contains all of the license usage and compliance information with the required correlation data.\n\nThis endpoint requires the `LicenseReport.Read.All`, or `LicenseReport.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", + "operationId": "/Api/LicenseReport/Correlation/:correlationId/Tenant/:tenantId/Data/Get", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId" + }, + { + "$ref": "#/components/parameters/tenantId" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "License Report": { + "description": "Sample, truncated report from an example customer environment for a correlation record of the specified tenant.", + "summary": "Example License Report", + "value": { + "availableLicense": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 123456, + "5888a922-9f5b-45fd-bd5f-de3283d6a79e": 99999999, + "a4b2e176-d63d-4081-9e21-226e2ac624b9": 5, + "547404d4-8734-415f-a7ca-e9c1ffb95e48": 25, + "d76878d6-1495-4243-a334-a82bb9818cd0": 500 + }, + "correlation": { + "auditTenantAccount": "somebodyThatI@example.com", + "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", + "reportTenantAccount": "usedToKnow@example.com", + "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db" + }, + "licenseData": { + "250844e1-a7ab-4f21-8e3f-58f51b5983a3": { + "assignedLicense": { + "5888a922-9f5b-45fd-bd5f-de3283d6a79e": null, + "3d282045-ec7f-4813-88e2-29b74ee609f7": null + }, + "assignedService": { + "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, + "d76878d6-1495-4243-a334-a82bb9818cd0": null + }, + "consumedService": { + "e0d101e8-6f1e-40a9-a66f-cad4112c9a59": null, + "c63b7a2d-6573-4c37-9ca8-e12b954d3198": { + "Something Here": true, + "Other Obscure feature": false + } + } + }, + "04e88835-771a-482b-9d6f-ba06c32cbb67": { + "assignedLicense": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": null + }, + "assignedService": { + "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, + "d76878d6-1495-4243-a334-a82bb9818cd0": null + }, + "consumedService": { + "9d3603de-b378-4c4a-adcc-ee133cbef914": null, + "e9a4e3d3-ebe0-405a-a8f4-35a04c4dba1f": { + "Something Here": true, + "Other Obscure feature": false + } + } + } + } + } + } + }, + "schema": { + "$ref": "#/components/schemas/LicenseReport" + } + } + }, + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "tags": [ + "License Analytics" + ], + "summary": "Retrieve the Specified License Report for Specified Tenant" + }, + "delete": { + "description": "Deletes the full license report for the specified correlation ID and tenant.\n\nThis endpoint requires the `LicenseReport.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", + "operationId": "/Api/LicenseReport/Correlation/:correlationId/Tenant/:tenantId/Data/delete", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId" + }, + { + "$ref": "#/components/parameters/tenantId" + } + ], + "responses": { + "201": { + "description": "Deleted successfully" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "tags": [ + "License Analytics" + ], + "summary": "Delete the Specified License Report for Specified Tenant" + } + }, + "/Api/V1/LicenseReport": { + "post": { + "description": "Store the results of a license analytics run.\n\nThis endpoint requires the `LicenseReport.ReadWrite`, or `LicenseReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/V1/LicenseReport/Post", + "requestBody": { + "content": { + "application/json": { + "examples": { + "License Report": { + "description": "Sample, truncated report from an example customer environment. The request body is the License Report V1 that to be stored.", + "summary": "Example License Report Request", + "value": { + "availableLicense": [ + { + "count": 10, + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "123e4567-e89b-12d3-a456-426614174000" + ] + } + ], + "correlation": { + "auditTenantAccount": "user@example.com", + "reportTenantAccount": "user@example.com" + }, + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Software Engineer", + "idpDepartment": "Engineering", + "idpOfficeLocation": "Building 1", + "idpEmployeeType": "Full-Time" + } + } + }, + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true + } + } + } + }, + "schemaVersion": 1 } }, "Ignorant License Report Request": { - "description": "Clueless dev trying to automate this application without reading the docs. RTFM!", - "summary": "Ignorant License Report Request", + "description": "Looks like automation started without checking the docs—give them a quick read to make things easier!", + "summary": "Docs First, Smooth Automation Ahead", "value": {} } }, "schema": { - "$ref": "#/components/schemas/LicenseReport" + "$ref": "#/components/schemas/LicenseReportV1" } } } @@ -1617,63 +2622,98 @@ "content": { "application/json": { "examples": { - "License Report": { + "License Report V1": { "description": "Sample, truncated report from an example customer environment. This will return the same report as the request input.", "summary": "Example of license report stored.", "value": { - "availableLicense": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": 123456, - "5888a922-9f5b-45fd-bd5f-de3283d6a79e": 99999999, - "a4b2e176-d63d-4081-9e21-226e2ac624b9": 5, - "547404d4-8734-415f-a7ca-e9c1ffb95e48": 25, - "d76878d6-1495-4243-a334-a82bb9818cd0": 500 - }, + "availableLicense": [ + { + "count": 10, + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "123e4567-e89b-12d3-a456-426614174000" + ] + } + ], "correlation": { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db" + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" }, - "licenseData": { - "250844e1-a7ab-4f21-8e3f-58f51b5983a3": { - "assignedLicense": { - "5888a922-9f5b-45fd-bd5f-de3283d6a79e": null, - "3d282045-ec7f-4813-88e2-29b74ee609f7": null - }, - "assignedService": { - "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, - "d76878d6-1495-4243-a334-a82bb9818cd0": null - }, - "consumedService": { - "e0d101e8-6f1e-40a9-a66f-cad4112c9a59": null, - "c63b7a2d-6573-4c37-9ca8-e12b954d3198": { - "Something Here": true, - "Other Obscure feature": false + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Software Engineer", + "idpDepartment": "Engineering", + "idpOfficeLocation": "Building 1", + "idpEmployeeType": "Full-Time" } } }, - "04e88835-771a-482b-9d6f-ba06c32cbb67": { - "assignedLicense": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": null - }, - "assignedService": { - "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, - "d76878d6-1495-4243-a334-a82bb9818cd0": null - }, - "consumedService": { - "9d3603de-b378-4c4a-adcc-ee133cbef914": null, - "e9a4e3d3-ebe0-405a-a8f4-35a04c4dba1f": { - "Something Here": true, - "Other Obscure feature": false + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true } } } - } + }, + "schemaVersion": 1 } } }, "schema": { - "$ref": "#/components/schemas/LicenseReport" + "$ref": "#/components/schemas/LicenseReportV1" } } }, @@ -1695,10 +2735,10 @@ "summary": "Store License Analytics Data" } }, - "/Api/LicenseReport/Correlation": { + "/Api/V1/LicenseReport/Correlation": { "get": { "description": "Retrieves the list of correlation records for the authenticated tenant. Can use filters targeting creation date to limit results. Correlation records store the metadata for a specific license report.\n\nThis endpoint requires the `LicenseReport.Read`, `LicenseReport.Read.All`, `LicenseReport.ReadWrite`, or `LicenseReport.ReadWrite.All` scope (permission).", - "operationId": "/Api/LicenseReport/Correlation/Get", + "operationId": "/Api/V1/LicenseReport/Correlation/Get", "parameters": [ { "$ref": "#/components/parameters/dateStart" @@ -1717,20 +2757,24 @@ "summary": "Available Correlation Records", "value": [ { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", - "createdAt": "2024-08-01T21:14:45.026Z", - "updatedAt": "2024-08-01T21:14:45.026Z" + "auditTenantAccount": "user@example.com", + "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" }, { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "d8095827-a313-40e1-b086-f72636de0edf", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", - "createdAt": "2024-07-25T21:14:45.026Z", - "updatedAt": "2024-07-25T21:14:45.026Z" + "auditTenantAccount": "user@example.com", + "correlationId": "5888a922-9f5b-45fd-bd5f-de3283d6a79e", + "createdAt": "2023-12-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" } ] } @@ -1739,25 +2783,29 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/LicenseReport.CorrelationRecord" + "$ref": "#/components/schemas/LicenseReportV1.LicenseCorrelationRecord" }, "examples": [ [ { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", - "createdAt": "2024-08-01T21:14:45.026Z", - "updatedAt": "2024-08-01T21:14:45.026Z" + "auditTenantAccount": "user@example.com", + "correlationId": "547404d4-8734-415f-a7ca-e9c1ffb95e48", + "createdAt": "2023-12-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" }, { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "d8095827-a313-40e1-b086-f72636de0edf", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", - "createdAt": "2024-07-25T21:14:45.026Z", - "updatedAt": "2024-07-25T21:14:45.026Z" + "auditTenantAccount": "user@example.com", + "correlationId": "d76878d6-1495-4243-a334-a82bb9818cd0", + "createdAt": "2023-12-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" } ] ] @@ -1779,10 +2827,10 @@ "summary": "Retrieve the List of Correlation Records" } }, - "/Api/LicenseReport/Correlation/Tenant/{tenantId}": { + "/Api/V1/LicenseReport/Correlation/Tenant/{tenantId}": { "get": { "description": "Retrieves the list of correlation records for the specified tenant. Can use filters targeting creation date to limit results. Correlation records store the metadata for a specific license report.\n\nThis endpoint requires the `LicenseReport.Read.All`, or `LicenseReport.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", - "operationId": "/Api/LicenseReport/Correlation/Tenant/:tenantId/Get", + "operationId": "/Api/V1/LicenseReport/Correlation/Tenant/:tenantId/Get", "parameters": [ { "$ref": "#/components/parameters/tenantId" @@ -1804,20 +2852,24 @@ "summary": "Available Correlation Records", "value": [ { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", - "createdAt": "2024-08-01T21:14:45.026Z", - "updatedAt": "2024-08-01T21:14:45.026Z" + "auditTenantAccount": "user@example.com", + "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" }, { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "d8095827-a313-40e1-b086-f72636de0edf", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", - "createdAt": "2024-07-25T21:14:45.026Z", - "updatedAt": "2024-07-25T21:14:45.026Z" + "auditTenantAccount": "user@example.com", + "correlationId": "e0d101e8-6f1e-40a9-a66f-cad4112c9a59", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" } ] } @@ -1826,25 +2878,29 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/LicenseReport.CorrelationRecord" + "$ref": "#/components/schemas/LicenseReportV1.LicenseCorrelationRecord" }, "examples": [ [ { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", - "createdAt": "2024-08-01T21:14:45.026Z", - "updatedAt": "2024-08-01T21:14:45.026Z" + "auditTenantAccount": "user@example.com", + "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" }, { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "d8095827-a313-40e1-b086-f72636de0edf", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db", - "createdAt": "2024-07-25T21:14:45.026Z", - "updatedAt": "2024-07-25T21:14:45.026Z" + "auditTenantAccount": "user@example.com", + "correlationId": "e0d101e8-6f1e-40a9-a66f-cad4112c9a59", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" } ] ] @@ -1869,10 +2925,10 @@ "summary": "Retrieve the List of Correlation Records for Specified Tenant" } }, - "/Api/LicenseReport/Correlation/{correlationId}/Data": { + "/Api/V1/LicenseReport/Correlation/{correlationId}/Data": { "get": { - "description": "Retrieves the full license report for the specified correlation ID in the authenticated tenant. The license report contains all of the license usage and compliance information with the required correlation data.\n\nThis endpoint requires the `LicenseReport.Read`, `LicenseReport.Read.All`, `LicenseReport.ReadWrite`, or `LicenseReport.ReadWrite.All` scope (permission).", - "operationId": "/Api/LicenseReport/Correlation/:correlationId/Data/Get", + "description": "Retrieves the full license report v1 for the specified correlation ID in the authenticated tenant. The license report v1 contains all of the license usage and compliance information with the required correlation data.\n\nThis endpoint requires the `LicenseReport.Read`, `LicenseReport.Read.All`, `LicenseReport.ReadWrite`, or `LicenseReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/V1/LicenseReport/Correlation/:correlationId/Data/Get", "parameters": [ { "$ref": "#/components/parameters/correlationId" @@ -1883,63 +2939,98 @@ "content": { "application/json": { "examples": { - "Example License Report": { - "description": "Sample, truncated license report from an example customer environment for a correlation record of the current authenticated tenant.", - "summary": "Example License Report", + "Example License Report V1": { + "description": "Sample, truncated license report v1 from an example customer environment for a correlation record of the current authenticated tenant.", + "summary": "Example License Report V1", "value": { - "availableLicense": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": 123456, - "5888a922-9f5b-45fd-bd5f-de3283d6a79e": 99999999, - "a4b2e176-d63d-4081-9e21-226e2ac624b9": 5, - "547404d4-8734-415f-a7ca-e9c1ffb95e48": 25, - "d76878d6-1495-4243-a334-a82bb9818cd0": 500 - }, + "availableLicense": [ + { + "count": 10, + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "123e4567-e89b-12d3-a456-426614174000" + ] + } + ], "correlation": { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db" + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" }, - "licenseData": { - "250844e1-a7ab-4f21-8e3f-58f51b5983a3": { - "assignedLicense": { - "5888a922-9f5b-45fd-bd5f-de3283d6a79e": null, - "3d282045-ec7f-4813-88e2-29b74ee609f7": null - }, - "assignedService": { - "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, - "d76878d6-1495-4243-a334-a82bb9818cd0": null - }, - "consumedService": { - "e0d101e8-6f1e-40a9-a66f-cad4112c9a59": null, - "c63b7a2d-6573-4c37-9ca8-e12b954d3198": { - "Something Here": true, - "Other Obscure feature": false + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Software Engineer", + "idpDepartment": "Engineering", + "idpOfficeLocation": "Building 1", + "idpEmployeeType": "Full-Time" } } }, - "04e88835-771a-482b-9d6f-ba06c32cbb67": { - "assignedLicense": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": null - }, - "assignedService": { - "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, - "d76878d6-1495-4243-a334-a82bb9818cd0": null - }, - "consumedService": { - "9d3603de-b378-4c4a-adcc-ee133cbef914": null, - "e9a4e3d3-ebe0-405a-a8f4-35a04c4dba1f": { - "Something Here": true, - "Other Obscure feature": false + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true } } } - } + }, + "schemaVersion": 1 } } }, "schema": { - "$ref": "#/components/schemas/LicenseReport" + "$ref": "#/components/schemas/LicenseReportV1" } } }, @@ -1958,18 +3049,18 @@ "tags": [ "License Analytics" ], - "summary": "Retrieve the Specified License Report" + "summary": "Retrieve the Specified License Report V1" }, "delete": { - "description": "Deletes the full license report for the specified correlation ID.\n\nThis endpoint requires the `LicenseReport.ReadWrite`, or `LicenseReport.ReadWrite.All` scope (permission).", - "operationId": "/Api/LicenseReport/Correlation/:correlationId/Data/delete", + "description": "Deletes the full license report v1 for the specified correlation ID.\n\nThis endpoint requires the `LicenseReport.ReadWrite`, or `LicenseReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/V1/LicenseReport/Correlation/:correlationId/Data/delete", "parameters": [ { "$ref": "#/components/parameters/correlationId" } ], "responses": { - "201": { + "204": { "description": "Deleted successfully" }, "400": { @@ -1988,10 +3079,10 @@ "summary": "Delete the Specified License Report for the currently authenticated tenant." } }, - "/Api/LicenseReport/Correlation/{correlationId}/Tenant/{tenantId}/Data": { + "/Api/V1/LicenseReport/Correlation/{correlationId}/Tenant/{tenantId}/Data": { "get": { - "description": "Retrieves the full license report for the specified correlation ID and tenant. The license report contains all of the license usage and compliance information with the required correlation data.\n\nThis endpoint requires the `LicenseReport.Read.All`, or `LicenseReport.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", - "operationId": "/Api/LicenseReport/Correlation/:correlationId/Tenant/:tenantId/Data/Get", + "description": "Retrieves the full license report v1 for the specified correlation ID and tenant. The license report v1 contains all of the license usage and compliance information with the required correlation data.\n\nThis endpoint requires the `LicenseReport.Read.All`, or `LicenseReport.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/LicenseReport/Correlation/:correlationId/Tenant/:tenantId/Data/Get", "parameters": [ { "$ref": "#/components/parameters/correlationId" @@ -2005,63 +3096,98 @@ "content": { "application/json": { "examples": { - "License Report": { + "License Report V1": { "description": "Sample, truncated report from an example customer environment for a correlation record of the specified tenant.", - "summary": "Example License Report", + "summary": "Example License Report V1", "value": { - "availableLicense": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": 123456, - "5888a922-9f5b-45fd-bd5f-de3283d6a79e": 99999999, - "a4b2e176-d63d-4081-9e21-226e2ac624b9": 5, - "547404d4-8734-415f-a7ca-e9c1ffb95e48": 25, - "d76878d6-1495-4243-a334-a82bb9818cd0": 500 - }, + "availableLicense": [ + { + "count": 10, + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "123e4567-e89b-12d3-a456-426614174000" + ] + } + ], "correlation": { - "auditTenantAccount": "somebodyThatI@example.com", - "correlationId": "6d7c9271-9e68-4bdf-9ae3-f90c4213f74b", - "reportTenantAccount": "usedToKnow@example.com", - "tenantId": "3d6e7b7e-8d9a-4eb0-8753-67829b3934db" + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" }, - "licenseData": { - "250844e1-a7ab-4f21-8e3f-58f51b5983a3": { - "assignedLicense": { - "5888a922-9f5b-45fd-bd5f-de3283d6a79e": null, - "3d282045-ec7f-4813-88e2-29b74ee609f7": null - }, - "assignedService": { - "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, - "d76878d6-1495-4243-a334-a82bb9818cd0": null - }, - "consumedService": { - "e0d101e8-6f1e-40a9-a66f-cad4112c9a59": null, - "c63b7a2d-6573-4c37-9ca8-e12b954d3198": { - "Something Here": true, - "Other Obscure feature": false + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Software Engineer", + "idpDepartment": "Engineering", + "idpOfficeLocation": "Building 1", + "idpEmployeeType": "Full-Time" } } }, - "04e88835-771a-482b-9d6f-ba06c32cbb67": { - "assignedLicense": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": null - }, - "assignedService": { - "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, - "d76878d6-1495-4243-a334-a82bb9818cd0": null - }, - "consumedService": { - "9d3603de-b378-4c4a-adcc-ee133cbef914": null, - "e9a4e3d3-ebe0-405a-a8f4-35a04c4dba1f": { - "Something Here": true, - "Other Obscure feature": false + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true } } } - } + }, + "schemaVersion": 1 } } }, "schema": { - "$ref": "#/components/schemas/LicenseReport" + "$ref": "#/components/schemas/LicenseReportV1" } } }, @@ -2080,11 +3206,11 @@ "tags": [ "License Analytics" ], - "summary": "Retrieve the Specified License Report for Specified Tenant" + "summary": "Retrieve the Specified License Report V1 for Specified Tenant" }, "delete": { - "description": "Deletes the full license report for the specified correlation ID and tenant.\n\nThis endpoint requires the `LicenseReport.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", - "operationId": "/Api/LicenseReport/Correlation/:correlationId/Tenant/:tenantId/Data/delete", + "description": "Deletes the full license report v1 for the specified correlation ID and tenant.\n\nThis endpoint requires the `LicenseReport.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/LicenseReport/Correlation/:correlationId/Tenant/:tenantId/Data/delete", "parameters": [ { "$ref": "#/components/parameters/correlationId" @@ -2094,7 +3220,7 @@ } ], "responses": { - "201": { + "204": { "description": "Deleted successfully" }, "400": { @@ -2110,7 +3236,7 @@ "tags": [ "License Analytics" ], - "summary": "Delete the Specified License Report for Specified Tenant" + "summary": "Delete the Specified License Report V1 for Specified Tenant" } }, "/Api/Chat/LicenseGpt": { From 6cf8173d735a92f0c95ad7b998de0fffb759b77e Mon Sep 17 00:00:00 2001 From: Pasha Zayko <91487789+pasha-zayko@users.noreply.github.com> Date: Wed, 26 Nov 2025 09:03:40 -0500 Subject: [PATCH 12/45] Adding new schema and path for configuration item metadata (#75) Adding schema to describe documentation response object when data is available. Adding path to handle retrieval of the configuration item documentation. --- specs/SHIELD.json | 332 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 332 insertions(+) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 314d365..668ccdf 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -1465,6 +1465,246 @@ ] ] }, + "Deploy.ConfigurationItemMetaData": { + "title": "Deploy - Configuration Item Meta Data", + "description": "Object representing populated information expanding details of the Configuration Item with user friendly information.", + "type": "object", + "properties": { + "title": { + "type": "string", + "description": "Human readable short title.", + "examples": [ + "Multi-Factor Authentication (MFA)" + ] + }, + "description": { + "type": "string", + "description": "Lengthier definition for the resource that provides more insight into what is covered or intended.", + "examples": [ + "This policy enforces multi-factor authentication (MFA) for enterprise identities during sign-in to reduce the risk of identity compromise." + ] + }, + "licenseRequirement": { + "type": "string", + "description": "Definition of license requirements to use this resource.", + "examples": [ + "Microsoft Entra ID P1" + ] + }, + "priority": { + "type": "integer", + "description": "Indicator of the priority of the resource implementation. Lower number indicates higher priority.", + "enum": [ + 1, + 50, + 100 + ], + "examples": [ + 1 + ] + }, + "operationalRisk": { + "type": "integer", + "description": "Indicator of the level of possible disruptions if this resource is not implemented. Lower number indicates higher risk.", + "enum": [ + 1, + 50, + 100 + ], + "examples": [ + 50 + ] + }, + "importanceReasonList": { + "type": "array", + "description": "Reasons explaining importance of the implementation of this resource.", + "items": { + "type": "string", + "examples": [ + "MFA adds a layer of protection to the sign-in process." + ] + }, + "examples": [ + [ + "MFA adds a layer of protection to the sign-in process.", + "When accessing accounts or apps, users provide additional identity verification, such as scanning a fingerprint or entering a code." + ] + ] + }, + "deploymentBenefitList": { + "type": "array", + "description": "Benefits gained by implementing the resource.", + "items": { + "type": "string", + "examples": [ + "Reduces the risk of compromised user credentials." + ] + }, + "examples": [ + [ + "Reduces the risk of compromised user credentials.", + "Prevents brute-force attack." + ] + ] + }, + "nonDeploymentRiskList": { + "type": "array", + "description": "Possible risks that could lead to issues if this resource is not implemented.", + "items": { + "type": "string", + "examples": [ + "Dramatically increased risk of account compromise." + ] + }, + "examples": [ + [ + "Dramatically increased risk of account compromise.", + "Higher chance of account compromise through phishing attacks." + ] + ] + }, + "guideStepList": { + "type": "array", + "description": "Collection of steps customer should consider or follow for successful implementation of the resource.", + "items": { + "type": "string", + "examples": [ + "Communicate the restriction to EntraID-joined devices and provide transition guidance." + ] + }, + "examples": [ + [ + "Communicate the restriction to EntraID-joined devices and provide transition guidance.", + "Stage the rollout with a pilot group and exclude critical accounts." + ] + ] + }, + "compliancePositionList": { + "type": "array", + "description": "Statements describing what this resource might help with in the realm of compliance and security.", + "items": { + "type": "string", + "examples": [ + "Deploying MFA helps meet compliance requirements for various industry regulations and standards." + ] + }, + "examples": [ + [ + "Deploying MFA helps meet compliance requirements for various industry regulations and standards." + ] + ] + }, + "compliancePositionStandardList": { + "type": "array", + "description": "Collection of frameworks that this resource addresses when implemented.", + "items": { + "type": "string", + "examples": [ + "ISO 27001" + ] + }, + "examples": [ + [ + "ISO 27001", + "NIST" + ] + ] + }, + "disclaimerList": { + "type": "array", + "description": "Collection of disclaimer statements.", + "items": { + "type": "string", + "examples": [ + "Please be aware that deploying this policy will enforce MFA for all users on their next sign-in." + ] + }, + "examples": [ + [ + "Please be aware that deploying this policy will enforce MFA for all users on their next sign-in." + ] + ] + }, + "baseLink": { + "type": "string", + "description": "Web URL to the Microsoft or Azure service where resource can be found.", + "format": "uri", + "examples": [ + "https://entra.microsoft.com" + ] + }, + "learnLinkList": { + "type": "array", + "description": "Collection of educational URLs for user to explore.", + "items": { + "type": "string", + "format": "uri", + "examples": [ + "https://learn.microsoft.com/en-us/azure/active-directory/authentication/concept-mfa-howitworks" + ] + }, + "examples": [ + [ + "https://learn.microsoft.com/en-us/azure/active-directory/authentication/concept-mfa-howitworks", + "https://learn.microsoft.com/en-us/azure/active-directory/authentication/tutorial-enable-azure-mfa" + ] + ] + } + }, + "required": [ + "title", + "description", + "priority", + "operationalRisk", + "importanceReasonList", + "deploymentBenefitList", + "nonDeploymentRiskList", + "guideStepList", + "compliancePositionList", + "compliancePositionStandardList", + "disclaimerList", + "baseLink" + ], + "examples": [ + { + "title": "Multi-Factor Authentication (MFA)", + "description": "This policy enforces multi-factor authentication (MFA) for enterprise identities during sign-in to reduce the risk of identity compromise.", + "licenseRequirement": "Microsoft Entra ID P1", + "priority": 1, + "operationalRisk": 50, + "importanceReasonList": [ + "MFA adds a layer of protection to the sign-in process." + ], + "deploymentBenefitList": [ + "Reduces the risk of compromised user credentials.", + "Prevents brute-force attack." + ], + "nonDeploymentRiskList": [ + "Dramatically increased risk of account compromise.", + "Higher chance of account compromise through phishing attacks." + ], + "guideStepList": [ + "Communicate the restriction to EntraID-joined devices and provide transition guidance.", + "Stage the rollout with a pilot group and exclude critical accounts." + ], + "compliancePositionList": [ + "Deploying MFA helps meet compliance requirements for various industry regulations and standards." + ], + "compliancePositionStandardList": [ + "ISO 27001", + "NIST" + ], + "disclaimerList": [ + "Please be aware that deploying this policy will enforce MFA for all users on their next sign-in." + ], + "baseLink": "https://entra.microsoft.com", + "learnLinkList": [ + "https://learn.microsoft.com/en-us/azure/active-directory/authentication/concept-mfa-howitworks", + "https://learn.microsoft.com/en-us/azure/active-directory/authentication/tutorial-enable-azure-mfa" + ] + } + ] + }, "Deploy.PathIndicator": { "title": "Deploy - Path Payload", "description": "Payload with path data used in several endpoints", @@ -3935,6 +4175,98 @@ ] } }, + "/Api/Deploy/Component/ConfigurationItemMetaData/{templateId}": { + "get": { + "summary": "Returns Result of Retrieving Configuration Item Documentation", + "description": "Retrieves additional metadata from the configuration item if it was entered, or provides a message indicating it is missing.\n\nThis endpoint requires the `Deploy.Read`, `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission). ", + "operationId": "/Api/Deploy/Component/ConfigurationItemMetaData/:templateId/Get", + "parameters": [ + { + "$ref": "#/components/parameters/templateId" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "Response With Documentation": { + "description": "Sample response object of the documentation for the specific configuration item.", + "summary": "Configuration Item Documentation", + "value": { + "title": "Multi-Factor Authentication (MFA)", + "description": "This policy enforces multi-factor authentication (MFA) for enterprise identities during sign-in to reduce the risk of identity compromise.", + "licenseRequirement": "Microsoft Entra ID P1", + "priority": 1, + "operationalRisk": 50, + "importanceReasonList": [ + "MFA adds a layer of protection to the sign-in process." + ], + "deploymentBenefitList": [ + "Reduces the risk of compromised user credentials.", + "Prevents brute-force attack." + ], + "nonDeploymentRiskList": [ + "Dramatically increased risk of account compromise.", + "Higher chance of account compromise through phishing attacks." + ], + "guideStepList": [ + "Communicate the restriction to EntraID-joined devices and provide transition guidance.", + "Stage the rollout with a pilot group and exclude critical accounts." + ], + "compliancePositionList": [ + "Deploying MFA helps meet compliance requirements for various industry regulations and standards." + ], + "compliancePositionStandardList": [ + "ISO 27001", + "NIST" + ], + "disclaimerList": [ + "Please be aware that deploying this policy will enforce MFA for all users on their next sign-in." + ], + "baseLink": "https://entra.microsoft.com", + "learnLinkList": [ + "https://learn.microsoft.com/en-us/azure/active-directory/authentication/concept-mfa-howitworks", + "https://learn.microsoft.com/en-us/azure/active-directory/authentication/tutorial-enable-azure-mfa" + ] + } + }, + "Response When Documentation is Missing": { + "description": "Sample response with unavailable documentation", + "summary": "Missing Configuration Item Documentation", + "value": "No documentation available yet!" + } + }, + "schema": { + "oneOf": [ + { + "$ref": "#/components/schemas/Deploy.ConfigurationItemMetaData" + }, + { + "type": "string", + "description": "Indicator that no additional information is available for this configuration item.", + "examples": [ + "No documentation available yet!" + ] + } + ] + } + } + }, + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "tags": [ + "Deploy" + ] + } + }, "/Api/Deploy/Progress": { "get": { "summary": "Returns Current Execution Progress of the Deploy Module", From 3e7c41774912c751f34e69232a73aca44c36b4f0 Mon Sep 17 00:00:00 2001 From: Ruman Mulla <91155446+Loop-infinity@users.noreply.github.com> Date: Wed, 26 Nov 2025 14:57:32 +0000 Subject: [PATCH 13/45] LAB-979 - [SHIELD] Add Spec for Deploy/Analyze/Invoke (#73) * LAB-979 - [SHIELD] Add Open API Spec for Deploy/Analyze/Invoke --- specs/SHIELD.json | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 668ccdf..0bf9e9f 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -4620,6 +4620,32 @@ ] } }, + "/Api/Deploy/Analyze/Invoke": { + "post": { + "summary": "Requests to run the Infrastructure Configuration Analysis", + "description": "Initiates an asynchronous analysis of all deployed configuration items in the infrastructure. It starts the analysis process, to discover any and all inconsistencies at the configuration item level.\n\nThis endpoint requires the `Deploy.ReadWrite` or `Everything.ReadWrite` scope (permission).", + "operationId": "/Api/Analyze/Invoke/Post", + "requestBody": { + "description": "No payload is expected or needed for this operation", + "content": { + "application/json": { + "schema": { + "type": "object", + "properties": {} + } + } + } + }, + "responses": { + "202": { + "description": "Request for analyze is accepted and process is initiated" + } + }, + "tags": [ + "Deploy" + ] + } + }, "/Api/Deploy/Skip": { "get": { "summary": "Retrieves List of Existing Override Rules", From 056e96d90611969dc38fafd3f198436a0788306a Mon Sep 17 00:00:00 2001 From: JagdishKhunti Date: Wed, 26 Nov 2025 16:59:54 +0000 Subject: [PATCH 14/45] Refactor license report schemas and enhance docs Renamed LicenseReportV1 schemas to Report.* for consistency and updated all references. Added detailed descriptions, examples, and validation patterns to license, principal, and service plan fields. Improved API response codes and documentation for error handling and deletion endpoints. --- specs/Data-Gateway.json | 460 ++++++++++++++++++++++++++++++++++------ 1 file changed, 390 insertions(+), 70 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index a521607..c92c7ce 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -414,7 +414,7 @@ "role" ] }, - "FeatureBreakdown": { + "Report.FeatureBreakdown": { "additionalProperties": { "type": "boolean", "examples": [ @@ -431,7 +431,7 @@ "On-Prem Password Protection": false } ], - "title": "License Report - Feature Breakdown", + "title": "Report - Feature Breakdown", "type": "object" }, "LicenseReport.CorrelationRecord": { @@ -533,7 +533,7 @@ "additionalProperties": { "oneOf": [ { - "$ref": "#/components/schemas/FeatureBreakdown" + "$ref": "#/components/schemas/Report.FeatureBreakdown" }, { "type": "integer", @@ -568,7 +568,7 @@ "additionalProperties": { "oneOf": [ { - "$ref": "#/components/schemas/FeatureBreakdown" + "$ref": "#/components/schemas/Report.FeatureBreakdown" }, { "type": "integer", @@ -817,6 +817,7 @@ "properties": { "availableLicense": { "type": "array", + "description": "Array of license bundles available. Each item includes the total purchased, the unique license bundle ID, and a list of associated service plan list.", "items": { "type": "object", "required": [ @@ -827,32 +828,79 @@ "properties": { "count": { "type": "integer", - "description": "Number of licenses that are purchased of the specific license." + "format": "int32", + "description": "Number of licenses that are purchased of the specific license.", + "examples": [ + 10 + ] }, "id": { "type": "string", "format": "uuid", - "description": "Well known ID of the license bundle." + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", + "description": "Well known ID of the license bundle.", + "examples": [ + "09d9b4dc-b229-4f06-a22a-617c82091e21" + ] }, "servicePlanList": { "type": "array", "items": { "type": "string", - "format": "uuid" + "format": "uuid", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", + "description": "Well known ID of the license bundle." }, - "description": "List of available service plans for the current license." - } + "description": "List of available service plans for the current license.", + "examples": [ + [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + ] + }, + "examples": [ + { + "count": 10, + "id": "034d1003-cab4-4a91-9ebc-c8931fdf0063", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ] } - } + }, + "examples": [ + { + "availableLicense": [ + { + "count": 10, + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "123e4567-e89b-12d3-a456-426614174000" + ] + } + ] + } + ] }, "correlation": { - "$ref": "#/components/schemas/LicenseReportV1.LicenseCorrelationRecord" + "$ref": "#/components/schemas/Report.CorrelationRecordV1" }, "principalData": { - "$ref": "#/components/schemas/LicenseReportV1.PrincipalData" + "$ref": "#/components/schemas/Report.PrincipalData" }, "schemaVersion": { - "type": "integer" + "type": "integer", + "format": "int32", + "description": "Version number of the license report schema.", + "examples": [ + 1 + ] } }, "required": [ @@ -863,8 +911,8 @@ ], "title": "License Report V1 - Complete Object" }, - "LicenseReportV1.LicenseCorrelationRecord": { - "description": "Metadata that describes the execution session (run) that is used to tie/relate all of the license report together.", + "Report.CorrelationRecordV1": { + "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", "examples": [ { "auditTenantAccount": "user@example.com", @@ -893,7 +941,9 @@ ], "format": "uuid", "type": "string", - "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$" }, "createdAt": { "description": "Timestamp of when the report was created.", @@ -933,7 +983,9 @@ ], "format": "uuid", "type": "string", - "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$" }, "updatedAt": { "description": "Timestamp of when the report was last updated.", @@ -948,10 +1000,11 @@ "auditTenantAccount", "reportTenantAccount" ], - "title": "License Report V1 - License Correlation Record", + "title": "Report - Correlation Record V1", "type": "object" }, - "LicenseReportV1.PrincipalData": { + "Report.PrincipalData": { + "description": "Contains user and device records included in the license report, detailing assigned services, licenses, consumed services, and related metadata for each principal. ", "type": "object", "required": [ "device", @@ -960,120 +1013,337 @@ "properties": { "user": { "type": "object", + "description": "Object containing user records, each keyed by user ID. Includes assigned services, licenses, consumed services, inferred attributes, metadata, and enhanced identity data for each user.", "additionalProperties": { "type": "object", "properties": { "assignedService": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/LicenseReportV1.AdditionalService" + "$ref": "#/components/schemas/Report.AdditionalService" } }, "assignedLicense": { - "$ref": "#/components/schemas/LicenseReportV1.AssignedLicense" + "$ref": "#/components/schemas/Report.AssignedLicense" }, "consumedService": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/LicenseReportV1.AdditionalService" + "$ref": "#/components/schemas/Report.AdditionalService" } }, "llmInferred": { "type": "object", + "description": "Inferred principal attributes, showing if the account is a service account, frontline worker, temporary worker.", "properties": { "isServiceAccount": { - "type": "boolean" + "description": "Indicates if the account is a service account.", + "type": [ + "boolean", + "null" + ], + "examples": [ + true, + null + ] }, "isFrontlineWorker": { - "type": "boolean" + "description": "Indicates if the user is a frontline worker.", + "type": [ + "boolean", + "null" + ], + "examples": [ + true, + null + ] }, "isTempWorker": { - "type": "boolean" + "description": "Indicates if the user is a temporary worker.", + "type": [ + "boolean", + "null" + ], + "examples": [ + true, + null + ] } - } + }, + "examples": [ + { + "llmInferred": { + "isFrontlineWorker": false, + "isTempWorker": true, + "isServiceAccount": null + } + } + ] }, "principalMetadata": { - "type": "object", - "properties": { - "sharedMailbox": { - "type": "boolean" - } - } + "$ref": "#/components/schemas/Report.PrincipalMetadata" }, "enhancedData": { "type": "object", + "descriptions": "Additional identity details for the user, such as principal name, job title, department, office location, and employee type.", "properties": { "userPrincipalName": { - "type": "string" + "type": "string", + "description": "The user's principal name (UPN).", + "examples": [ + "user@example.com" + ] }, "idpJobTitle": { - "type": "string" + "type": [ + "string", + "null" + ], + "description": "The user's job title from the identity provider.", + "examples": [ + "Engineer", + null + ] }, "idpDepartment": { - "type": "string" + "type": [ + "string", + "null" + ], + "description": "The user's department from the identity provider", + "examples": [ + "IT", + null + ] }, "idpOfficeLocation": { - "type": "string" + "type": [ + "string", + "null" + ], + "description": "The user's office location from the identity provider", + "examples": [ + "HQ", + null + ] }, "idpEmployeeType": { - "type": "string" + "type": [ + "string", + "null" + ], + "description": "The user's employee type from the identity provider.", + "examples": [ + "Permanent", + null + ] + } + }, + "examples": [ + { + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Permanent" + } + } + ] + } + } + }, + "examples": [ + { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Full-Time" } } } } - } + ] }, "device": { "type": "object", + "description": "Object containing device records, each keyed by device ID. Includes assigned services, licenses, consumed services, and metadata for each device.", "additionalProperties": { "type": "object", "properties": { "assignedService": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/LicenseReportV1.AdditionalService" + "$ref": "#/components/schemas/Report.AdditionalService" } }, "assignedLicense": { - "$ref": "#/components/schemas/LicenseReportV1.AssignedLicense" + "$ref": "#/components/schemas/Report.AssignedLicense" }, "consumedService": { "type": "object", "additionalProperties": { - "$ref": "#/components/schemas/LicenseReportV1.AdditionalService" + "$ref": "#/components/schemas/Report.AdditionalService" } }, "principalMetadata": { - "type": "object", - "properties": { - "sharedComputer": { - "type": "boolean" + "$ref": "#/components/schemas/Report.PrincipalMetadata" + } + } + }, + "examples": [ + { + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true } } } } - } - }, - "schemaVersion": { - "type": "integer" + ] } }, - "title": "License Report V1 - Principal Data" - }, - "LicenseReportV1.AdditionalService": { - "oneOf": [ - { - "$ref": "#/components/schemas/FeatureBreakdown" - }, - { - "type": "number", - "description": "Number of in-scope principals or usage count." - }, + "examples": [ { - "type": "null", - "description": "No data or unused." + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Full-Time" + } + } + }, + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true + } + } + } } ], + "title": "Report - Principal Data" + }, + "Report.AdditionalService": { + "description": "Represents a service assignment or usage for a principal, which can be a feature breakdown, a usage count, or null if not applicable.", + "additionalProperties": { + "type": "object", + "oneOf": [ + { + "$ref": "#/components/schemas/Report.FeatureBreakdown" + }, + { + "type": "number", + "description": "Number of in-scope principals or usage count.", + "examples": [ + 10 + ] + }, + { + "type": "null", + "description": "No data or unused." + } + ], + "examples": [ + { + "featureA": true, + "featureB": false, + "featureC": null + } + ] + }, "examples": [ { "3d282045-ec7f-4813-88e2-29b74ee609f7": { @@ -1083,9 +1353,11 @@ "a1b2c3d4-e5f6-7890-abcd-ef1234567890": 5, "123e4567-e89b-12d3-a456-426614174000": null } - ] + ], + "title": "Report - Additional Service" }, - "LicenseReportV1.AssignedLicense": { + "Report.AssignedLicense": { + "description": "List of licenses assigned to a principal, including license ID and associated service plans.", "type": "array", "items": { "type": "object", @@ -1097,13 +1369,26 @@ "id": { "type": "string", "format": "uuid", - "description": "Unique identifier for the assigned license." + "description": "Unique identifier for the assigned license.", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", + "examples": [ + "88da2253-758f-4135-9d37-64448c8b65c1" + ] }, "servicePlanList": { "type": "array", "items": { "type": "string", - "format": "uuid" + "format": "uuid", + "description": "Unique identifier for the service plan.", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", + "examples": [ + "88da2253-758f-4135-9d37-64448c8b65c1" + ] }, "description": "List of service plans associated with the assigned license." } @@ -1123,7 +1408,21 @@ "abcdefab-cdef-abcd-efab-cdefabcdefab" ] } - ] + ], + "title": "Report - Assigned License" + }, + "Report.PrincipalMetadata": { + "type": "object", + "description": "Metadata about the principal, such as whether the account is a shared.", + "properties": { + "sharedMailbox": { + "type": "boolean", + "examples": [ + true + ] + } + }, + "title": "Report - Principal Meta Data" }, "LicenseEntitlement.Shield": { "description": "Record that describes the purchased licenses for a specific tenant. More than one of these can be active at a single time.", @@ -2618,7 +2917,7 @@ } }, "responses": { - "200": { + "201": { "content": { "application/json": { "examples": { @@ -2783,7 +3082,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/LicenseReportV1.LicenseCorrelationRecord" + "$ref": "#/components/schemas/Report.CorrelationRecordV1" }, "examples": [ [ @@ -2814,11 +3113,17 @@ }, "description": "OK" }, + "400": { + "$ref": "#/components/responses/400" + }, "401": { "$ref": "#/components/responses/401" }, "403": { "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" } }, "tags": [ @@ -2878,7 +3183,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/LicenseReportV1.LicenseCorrelationRecord" + "$ref": "#/components/schemas/Report.CorrelationRecordV1" }, "examples": [ [ @@ -2917,6 +3222,9 @@ }, "403": { "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" } }, "tags": [ @@ -3044,6 +3352,9 @@ }, "403": { "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" } }, "tags": [ @@ -3060,6 +3371,9 @@ } ], "responses": { + "201": { + "description": "Deleted successfully" + }, "204": { "description": "Deleted successfully" }, @@ -3201,6 +3515,9 @@ }, "403": { "$ref": "#/components/responses/403" + }, + "404": { + "$ref": "#/components/responses/404" } }, "tags": [ @@ -3220,6 +3537,9 @@ } ], "responses": { + "201": { + "description": "Deleted successfully" + }, "204": { "description": "Deleted successfully" }, From 0bd0f0d3e973a8f1bd0c19ba7a75b3c31f804e97 Mon Sep 17 00:00:00 2001 From: JagdishKhunti Date: Fri, 28 Nov 2025 14:51:55 +0000 Subject: [PATCH 15/45] Update Data-Gateway.json --- specs/Data-Gateway.json | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index c92c7ce..b092adb 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -1012,6 +1012,7 @@ ], "properties": { "user": { + "title": "User Principal Records", "type": "object", "description": "Object containing user records, each keyed by user ID. Includes assigned services, licenses, consumed services, inferred attributes, metadata, and enhanced identity data for each user.", "additionalProperties": { @@ -1033,6 +1034,7 @@ } }, "llmInferred": { + "title": "Principal Inferred Attributes", "type": "object", "description": "Inferred principal attributes, showing if the account is a service account, frontline worker, temporary worker.", "properties": { @@ -1084,6 +1086,7 @@ "$ref": "#/components/schemas/Report.PrincipalMetadata" }, "enhancedData": { + "title": "User Enhanced Identity Data", "type": "object", "descriptions": "Additional identity details for the user, such as principal name, job title, department, office location, and employee type.", "properties": { @@ -1099,7 +1102,7 @@ "string", "null" ], - "description": "The user's job title from the identity provider.", + "description": "The user's job title.", "examples": [ "Engineer", null @@ -1110,7 +1113,7 @@ "string", "null" ], - "description": "The user's department from the identity provider", + "description": "The user's department.", "examples": [ "IT", null @@ -1121,7 +1124,7 @@ "string", "null" ], - "description": "The user's office location from the identity provider", + "description": "The user's office location.", "examples": [ "HQ", null @@ -1132,7 +1135,7 @@ "string", "null" ], - "description": "The user's employee type from the identity provider.", + "description": "The user's employee type.", "examples": [ "Permanent", null @@ -1198,6 +1201,7 @@ ] }, "device": { + "title": "Device Principal Records", "type": "object", "description": "Object containing device records, each keyed by device ID. Includes assigned services, licenses, consumed services, and metadata for each device.", "additionalProperties": { From 2d98a0025b5a71d2566cdf02780c0e64705623e9 Mon Sep 17 00:00:00 2001 From: Ruman Mulla <91155446+Loop-infinity@users.noreply.github.com> Date: Mon, 1 Dec 2025 14:38:46 +0000 Subject: [PATCH 16/45] LAB-1034: [SHIELD] Open Api Spec for Deploy/Progress (#78) --- specs/SHIELD.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 0bf9e9f..8aea970 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -129,7 +129,8 @@ "type": "string", "enum": [ "deploy", - "remediate" + "remediate", + "analysis" ] }, "examples": { From 424c5fd6e51378cb82f8607179affdb20516502c Mon Sep 17 00:00:00 2001 From: JagdishKhunti Date: Tue, 2 Dec 2025 13:22:14 +0000 Subject: [PATCH 17/45] LAB-980 Updated the Data-Gateway JSON schema to clarify and expand user and device principal records, including required fields and more detailed property definitions. Enhanced the structure and examples for inferred attributes and enhanced identity data, added explicit nullability, and improved descriptions for service plan and license references. These changes improve schema accuracy and documentation for integrators. --- specs/Data-Gateway.json | 292 ++++++++++++++++++++++++++++++---------- 1 file changed, 220 insertions(+), 72 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index b092adb..4758505 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -853,7 +853,10 @@ "maxLength": 36, "minLength": 36, "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", - "description": "Well known ID of the license bundle." + "description": "Well known ID of the service plan.", + "examples": [ + "ff417b87-8f30-4250-94bb-8551cab0453b" + ] }, "description": "List of available service plans for the current license.", "examples": [ @@ -1014,6 +1017,14 @@ "user": { "title": "User Principal Records", "type": "object", + "required": [ + "assignedService", + "assignedLicense", + "consumedService", + "llmInferred", + "principalMetadata", + "enhancedData" + ], "description": "Object containing user records, each keyed by user ID. Includes assigned services, licenses, consumed services, inferred attributes, metadata, and enhanced identity data for each user.", "additionalProperties": { "type": "object", @@ -1036,39 +1047,83 @@ "llmInferred": { "title": "Principal Inferred Attributes", "type": "object", + "required": [ + "isServiceAccount", + "isFrontlineWorker", + "isTempWorker" + ], "description": "Inferred principal attributes, showing if the account is a service account, frontline worker, temporary worker.", "properties": { "isServiceAccount": { - "description": "Indicates if the account is a service account.", - "type": [ - "boolean", - "null" + "description": "The user service account; may be null if not provided.", + "oneOf": [ + { + "type": "boolean", + "description": "Indicates if the account is a service account.", + "examples": [ + true + ] + }, + { + "type": "null", + "description": "No data or unused." + } ], "examples": [ - true, - null + { + "isServiceAccount": true + }, + { + "isServiceAccount": null + } ] }, "isFrontlineWorker": { - "description": "Indicates if the user is a frontline worker.", - "type": [ - "boolean", - "null" + "description": "The user a temporary employee; may be null if not provided.", + "oneOf": [ + { + "type": "boolean", + "description": "Indicates if the user is a frontline worker.", + "examples": [ + true + ] + }, + { + "type": "null", + "description": "No data or unused." + } ], "examples": [ - true, - null + { + "isFrontlineWorker": true + }, + { + "isFrontlineWorker": null + } ] }, "isTempWorker": { - "description": "Indicates if the user is a temporary worker.", - "type": [ - "boolean", - "null" + "description": "The user is a temporary worker; may be bull if not provided.", + "oneOf": [ + { + "type": "boolean", + "description": "Indicates if the user is a temporary worker.", + "examples": [ + true + ] + }, + { + "type": "null", + "description": "No data or unused." + } ], "examples": [ - true, - null + { + "isTempWorker": true + }, + { + "isTempWorker": null + } ] } }, @@ -1087,61 +1142,139 @@ }, "enhancedData": { "title": "User Enhanced Identity Data", - "type": "object", - "descriptions": "Additional identity details for the user, such as principal name, job title, department, office location, and employee type.", - "properties": { - "userPrincipalName": { - "type": "string", - "description": "The user's principal name (UPN).", - "examples": [ - "user@example.com" - ] - }, - "idpJobTitle": { - "type": [ - "string", - "null" - ], - "description": "The user's job title.", - "examples": [ - "Engineer", - null - ] - }, - "idpDepartment": { - "type": [ - "string", - "null" - ], - "description": "The user's department.", - "examples": [ - "IT", - null - ] - }, - "idpOfficeLocation": { - "type": [ - "string", - "null" + "description": "Additional identity details for the user, such as principal name, job title, department, office location, and employee type; present only if customer consented, otherwise null.", + "oneOf": [ + { + "type": "object", + "required": [ + "userPrincipalName", + "idpJobTitle", + "idpDepartment", + "idpOfficeLocation", + "idpEmployeeType" ], - "description": "The user's office location.", + "properties": { + "userPrincipalName": { + "type": "string", + "description": "The user's principal name (UPN).", + "examples": [ + "user@example.com" + ] + }, + "idpJobTitle": { + "description": "The user's job title as provided by the identity provider; may be null if not available.", + "oneOf": [ + { + "type": "string", + "description": "The user's job title.", + "examples": [ + "Engineer" + ] + }, + { + "type": "null", + "description": "No data or unused." + } + ], + "examples": [ + { + "idpJobTitle": "Engineer" + }, + { + "idpJobTitle": null + } + ] + }, + "idpDepartment": { + "description": "The user's employee department as provided by the identity provider; may be null if not available.", + "oneOf": [ + { + "type": "string", + "description": "The user's department.", + "examples": [ + "IT" + ] + }, + { + "type": "null", + "description": "No data or unused." + } + ], + "examples": [ + { + "idpDepartment": "IT" + }, + { + "idpDepartment": null + } + ] + }, + "idpOfficeLocation": { + "description": "The user's office location as provided by the identity provider; may be null if not available.", + "oneOf": [ + { + "type": "string", + "description": "The user's office location.", + "examples": [ + "HQ" + ] + }, + { + "type": "null", + "description": "No data or unused." + } + ], + "examples": [ + { + "idpOfficeLocation": "IT" + }, + { + "idpOfficeLocation": null + } + ] + }, + "idpEmployeeType": { + "description": "The user's employee type as provided by the identity provider; may be null if not available.", + "oneOf": [ + { + "type": "string", + "description": "The user's employee type.", + "examples": [ + "Permanent" + ] + }, + { + "type": "null", + "description": "No data or unused." + } + ], + "examples": [ + { + "idpEmployeeType": "IT" + }, + { + "idpEmployeeType": null + } + ] + } + }, "examples": [ - "HQ", - null + { + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Permanent" + } + } ] }, - "idpEmployeeType": { - "type": [ - "string", - "null" - ], - "description": "The user's employee type.", - "examples": [ - "Permanent", - null - ] + { + "type": "null", + "description": "No data or unused." } - }, + ], "examples": [ { "enhancedData": { @@ -1151,6 +1284,9 @@ "idpOfficeLocation": "HQ", "idpEmployeeType": "Permanent" } + }, + { + "enhancedData": null } ] } @@ -1203,6 +1339,12 @@ "device": { "title": "Device Principal Records", "type": "object", + "required": [ + "assignedService", + "assignedLicense", + "consumedService", + "principalMetadata" + ], "description": "Object containing device records, each keyed by device ID. Includes assigned services, licenses, consumed services, and metadata for each device.", "additionalProperties": { "type": "object", @@ -1323,7 +1465,6 @@ "Report.AdditionalService": { "description": "Represents a service assignment or usage for a principal, which can be a feature breakdown, a usage count, or null if not applicable.", "additionalProperties": { - "type": "object", "oneOf": [ { "$ref": "#/components/schemas/Report.FeatureBreakdown" @@ -1391,14 +1532,16 @@ "minLength": 36, "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$", "examples": [ - "88da2253-758f-4135-9d37-64448c8b65c1" + [ + "88da2253-758f-4135-9d37-64448c8b65c1" + ] ] }, "description": "List of service plans associated with the assigned license." } } }, - "example": [ + "examples": [ { "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", "servicePlanList": [ @@ -1426,6 +1569,11 @@ ] } }, + "examples": [ + { + "sharedMailbox": true + } + ], "title": "Report - Principal Meta Data" }, "LicenseEntitlement.Shield": { From 85d6ae6e5bc178c4b25711ffc5deb40fa0319104 Mon Sep 17 00:00:00 2001 From: Ruman Mulla <91155446+Loop-infinity@users.noreply.github.com> Date: Tue, 2 Dec 2025 16:17:14 +0000 Subject: [PATCH 18/45] Add Open API Spec for Discover/ArchitectureReport/Correlation/:correlationId/Data * LAB-989: [SHIELD] Add Open API Spec for Discover/ArchitectureReport/Correlation/:correlationId/Data --- specs/SHIELD.json | 377 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 377 insertions(+) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 8aea970..57a9836 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -1750,6 +1750,266 @@ } ] }, + "Discover.ArchitectureReport.CspmPolicyAssessment": { + "title": "Discover - Architecture Report - Cspm Policy Assessment Result", + "description": "Policy Assessment Result containing coverage calculations for the architecture report", + "type": "object", + "properties": { + "policyList": { + "type": "object", + "additionalProperties": { + "$ref": "#/components/schemas/Discover.ArchitectureReport.CspmPolicyAssessment.PolicyRecord" + }, + "description": "The mapping between ConfigurationItem templateIds and their corresponding policy record" + }, + "reportCreatedDate": { + "type": "string", + "format": "date-time", + "description": "The date the architecture report was created.", + "examples": [ + "2025-11-25T11:00:00Z" + ] + }, + "reportUpdatedDate": { + "type": "string", + "format": "date-time", + "description": "The date the architecture report was last updated.", + "examples": [ + "2025-11-25T11:00:00Z" + ] + } + }, + "required": [ + "policyList" + ], + "examples": [ + { + "policyList": { + "e7b8c2a2-2e4a-4b6a-9c3d-8f1e2a7b6c4d": { + "categoryList": [ + "Access Control", + "Compliance" + ], + "coverageMetricsNormalized": { + "covered": 80, + "noCover": 0, + "partial": 20 + }, + "coverageMetricsRaw": { + "covered": 8, + "noCover": 0, + "partial": 2 + }, + "coverageStatus": "full", + "name": "Sample Policy 1" + }, + "2a1e3c4d-5b6f-4e7a-8c9d-0f1b2a3c4d5e": { + "categoryList": [ + "Data Protection" + ], + "coverageMetricsNormalized": { + "covered": 50, + "noCover": 20, + "partial": 30 + }, + "coverageMetricsRaw": { + "covered": 5, + "noCover": 2, + "partial": 3 + }, + "coverageStatus": "partial", + "name": "Sample Policy 2" + }, + "9f8e7d6c-5b4a-3c2e-1d0f-8a7b6c5d4e3f": { + "categoryList": [ + "Network Security" + ], + "coverageMetricsNormalized": { + "covered": 0, + "noCover": 100, + "partial": 0 + }, + "coverageMetricsRaw": { + "covered": 0, + "noCover": 10, + "partial": 0 + }, + "coverageStatus": "none", + "name": "Sample Policy 3" + }, + "1f0e9d8c-7b6a-5c4d-3e2f-1a0b9c8d7e6f": { + "categoryList": [ + "Identity Management" + ], + "coverageMetricsNormalized": { + "covered": 70, + "noCover": 20, + "partial": 10 + }, + "coverageMetricsRaw": { + "covered": 7, + "noCover": 2, + "partial": 1 + }, + "coverageStatus": "partial", + "name": "Sample Policy 4" + } + }, + "reportCreatedDate": "2025-11-25T11:00:00Z", + "reportUpdatedDate": "2025-11-26T11:00:00Z" + } + ] + }, + "Discover.ArchitectureReport.CspmPolicyAssessment.PolicyRecord": { + "title": "Discover - Architecture Report - Cspm Policy Assessment Policy Record", + "description": "Represents a policy record containing policy details along with user coverage metrics and status", + "type": "object", + "properties": { + "categoryList": { + "description": "Categories that the policy belongs to", + "type": "array", + "items": { + "type": "string", + "description": "category of the policy", + "examples": [ + "Identity Management" + ] + }, + "examples": [ + [ + "Identity Management" + ] + ] + }, + "name": { + "description": "Name of the policy", + "type": "string", + "examples": [ + "Sample Policy Name" + ] + }, + "coverageMetricsRaw": { + "description": "Represents the raw coverage status of the users", + "type": "object", + "properties": { + "covered": { + "description": "The amount of users fully covered", + "type": "number", + "examples": [ + 5 + ] + }, + "partial": { + "description": "The amount of users partially covered", + "type": "number", + "examples": [ + 0, + 5, + 10 + ] + }, + "noCover": { + "description": "The amount of users not covered", + "type": "number", + "examples": [ + 0, + 5, + 10 + ] + } + }, + "examples": [ + { + "covered": 7, + "noCover": 2, + "partial": 1 + } + ], + "required": [ + "covered", + "partial", + "noCover" + ] + }, + "coverageMetricsNormalized": { + "description": "Represents the normalized coverage status of the users", + "type": "object", + "properties": { + "covered": { + "description": "The amount of users fully covered", + "type": "number", + "examples": [ + 70 + ] + }, + "partial": { + "description": "The amount of users partially covered", + "type": "number", + "examples": [ + 20 + ] + }, + "noCover": { + "description": "The amount of users not covered", + "type": "number", + "examples": [ + 10 + ] + } + }, + "examples": [ + { + "covered": 70, + "noCover": 20, + "partial": 10 + } + ], + "required": [ + "covered", + "partial", + "noCover" + ] + }, + "coverageStatus": { + "description": "The summary status for the coverage metrics", + "type": "string", + "enum": [ + "full", + "partial", + "none" + ], + "examples": [ + "partial" + ] + } + }, + "required": [ + "categoryList", + "name", + "coverageMetricsRaw", + "coverageMetricsNormalized", + "coverageStatus" + ], + "examples": [ + { + "categoryList": [ + "Identity Management" + ], + "coverageMetricsNormalized": { + "covered": 70, + "noCover": 20, + "partial": 10 + }, + "coverageMetricsRaw": { + "covered": 7, + "noCover": 2, + "partial": 1 + }, + "coverageStatus": "partial", + "name": "Sample Policy" + } + ] + }, "ManagedObject.Intermediary": { "description": "Base template for all intermediary objects to inherit from.", "properties": { @@ -3690,6 +3950,123 @@ "summary": "Retrieve the Specified License Report" } }, + "/Api/Discover/ArchitectureReport/Correlation/{correlationId}/Data": { + "get": { + "description": "Retrieves the CSPM assessment coverage calculation results on the architecture report for the specified correlation ID in the authenticated tenant.\n\nThis endpoint requires the `Discover.Read`, or the `Everything.ReadWrite` scope (permission).", + "operationId": "/Api/Discover/ArchitectureReport/Correlation/:correlationId/Data/Get", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId" + } + ], + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "CspmPolicyAssessment": { + "description": "Sample CSPM Policy Assessment including a mapping of configuration item template IDs to their corresponding policy records containing coverage status", + "summary": "Example CSPM Policy Assessment Response", + "value": { + "policyList": { + "e7b8c2a2-2e4a-4b6a-9c3d-8f1e2a7b6c4d": { + "categoryList": [ + "Access Control", + "Compliance" + ], + "coverageMetricsNormalized": { + "covered": 80, + "noCover": 0, + "partial": 20 + }, + "coverageMetricsRaw": { + "covered": 8, + "noCover": 0, + "partial": 2 + }, + "coverageStatus": "full", + "name": "Sample Policy 1" + }, + "2a1e3c4d-5b6f-4e7a-8c9d-0f1b2a3c4d5e": { + "categoryList": [ + "Data Protection" + ], + "coverageMetricsNormalized": { + "covered": 50, + "noCover": 20, + "partial": 30 + }, + "coverageMetricsRaw": { + "covered": 5, + "noCover": 2, + "partial": 3 + }, + "coverageStatus": "partial", + "name": "Sample Policy 2" + }, + "9f8e7d6c-5b4a-3c2e-1d0f-8a7b6c5d4e3f": { + "categoryList": [ + "Network Security" + ], + "coverageMetricsNormalized": { + "covered": 0, + "noCover": 100, + "partial": 0 + }, + "coverageMetricsRaw": { + "covered": 0, + "noCover": 10, + "partial": 0 + }, + "coverageStatus": "none", + "name": "Sample Policy 3" + }, + "1f0e9d8c-7b6a-5c4d-3e2f-1a0b9c8d7e6f": { + "categoryList": [ + "Identity Management" + ], + "coverageMetricsNormalized": { + "covered": 70, + "noCover": 20, + "partial": 10 + }, + "coverageMetricsRaw": { + "covered": 7, + "noCover": 2, + "partial": 1 + }, + "coverageStatus": "partial", + "name": "Sample Policy 4" + } + }, + "reportCreatedDate": "2025-11-25T11:00:00Z", + "reportUpdatedDate": "2025-11-26T11:00:00Z" + } + } + }, + "schema": { + "$ref": "#/components/schemas/Discover.ArchitectureReport.CspmPolicyAssessment" + } + } + }, + "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "tags": [ + "Discover" + ], + "summary": "Retrieve the Specified Architecture Report's CSPM assessment coverage calculations" + } + }, "/Api/Deploy": { "get": { "summary": "Gets the Current Status of the Infrastructure Deployment", From 3d2e0a29208c6e26da55219abd495db92e127402 Mon Sep 17 00:00:00 2001 From: JagdishKhunti Date: Tue, 2 Dec 2025 17:41:04 +0000 Subject: [PATCH 19/45] LAB-980 Refactored user and device principal data schemas to use new CommonService, AssignedLicense, and PrincipalMetadata references under Report.PrincipalData. Simplified nullable property definitions and examples. Added 500 error responses to multiple API endpoints for improved error handling. --- specs/Data-Gateway.json | 307 +++++++++++++++------------------------- 1 file changed, 112 insertions(+), 195 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 4758505..b98982a 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -192,6 +192,9 @@ "404": { "description": "The requested object was not found." }, + "500": { + "description": "An unexpected error occurred on the server!" + }, "503": { "description": "App is starting still. Feature is not available. Please try again later." }, @@ -1017,32 +1020,26 @@ "user": { "title": "User Principal Records", "type": "object", - "required": [ - "assignedService", - "assignedLicense", - "consumedService", - "llmInferred", - "principalMetadata", - "enhancedData" - ], "description": "Object containing user records, each keyed by user ID. Includes assigned services, licenses, consumed services, inferred attributes, metadata, and enhanced identity data for each user.", "additionalProperties": { "type": "object", + "required": [ + "assignedService", + "assignedLicense", + "consumedService", + "llmInferred", + "principalMetadata", + "enhancedData" + ], "properties": { "assignedService": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Report.AdditionalService" - } + "$ref": "#/components/schemas/Report.PrincipalData.CommonService" }, "assignedLicense": { - "$ref": "#/components/schemas/Report.AssignedLicense" + "$ref": "#/components/schemas/Report.PrincipalData.AssignedLicense" }, "consumedService": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Report.AdditionalService" - } + "$ref": "#/components/schemas/Report.PrincipalData.CommonService" }, "llmInferred": { "title": "Principal Inferred Attributes", @@ -1055,90 +1052,49 @@ "description": "Inferred principal attributes, showing if the account is a service account, frontline worker, temporary worker.", "properties": { "isServiceAccount": { - "description": "The user service account; may be null if not provided.", - "oneOf": [ - { - "type": "boolean", - "description": "Indicates if the account is a service account.", - "examples": [ - true - ] - }, - { - "type": "null", - "description": "No data or unused." - } + "description": "Indicates if the account is a service account.", + "type": [ + "boolean", + "null" ], "examples": [ - { - "isServiceAccount": true - }, - { - "isServiceAccount": null - } + true, + null ] }, "isFrontlineWorker": { - "description": "The user a temporary employee; may be null if not provided.", - "oneOf": [ - { - "type": "boolean", - "description": "Indicates if the user is a frontline worker.", - "examples": [ - true - ] - }, - { - "type": "null", - "description": "No data or unused." - } + "description": "Indicates if the user is a frontline worker.", + "type": [ + "boolean", + "null" ], "examples": [ - { - "isFrontlineWorker": true - }, - { - "isFrontlineWorker": null - } + true, + null ] }, "isTempWorker": { - "description": "The user is a temporary worker; may be bull if not provided.", - "oneOf": [ - { - "type": "boolean", - "description": "Indicates if the user is a temporary worker.", - "examples": [ - true - ] - }, - { - "type": "null", - "description": "No data or unused." - } + "description": "Indicates if the user is a temporary worker.", + "type": [ + "boolean", + "null" ], "examples": [ - { - "isTempWorker": true - }, - { - "isTempWorker": null - } + true, + null ] } }, "examples": [ { - "llmInferred": { - "isFrontlineWorker": false, - "isTempWorker": true, - "isServiceAccount": null - } + "isFrontlineWorker": false, + "isTempWorker": true, + "isServiceAccount": null } ] }, "principalMetadata": { - "$ref": "#/components/schemas/Report.PrincipalMetadata" + "$ref": "#/components/schemas/Report.PrincipalData.PrincipalMetadata" }, "enhancedData": { "title": "User Enhanced Identity Data", @@ -1162,111 +1118,57 @@ ] }, "idpJobTitle": { - "description": "The user's job title as provided by the identity provider; may be null if not available.", - "oneOf": [ - { - "type": "string", - "description": "The user's job title.", - "examples": [ - "Engineer" - ] - }, - { - "type": "null", - "description": "No data or unused." - } + "type": [ + "string", + "null" ], + "description": "The user's job title.", "examples": [ - { - "idpJobTitle": "Engineer" - }, - { - "idpJobTitle": null - } + "Engineer", + null ] }, "idpDepartment": { - "description": "The user's employee department as provided by the identity provider; may be null if not available.", - "oneOf": [ - { - "type": "string", - "description": "The user's department.", - "examples": [ - "IT" - ] - }, - { - "type": "null", - "description": "No data or unused." - } + "type": [ + "string", + "null" ], + "description": "The user's department.", "examples": [ - { - "idpDepartment": "IT" - }, - { - "idpDepartment": null - } + "IT", + null ] }, "idpOfficeLocation": { - "description": "The user's office location as provided by the identity provider; may be null if not available.", - "oneOf": [ - { - "type": "string", - "description": "The user's office location.", - "examples": [ - "HQ" - ] - }, - { - "type": "null", - "description": "No data or unused." - } + "type": [ + "string", + "null" ], + "description": "The user's office location.", "examples": [ - { - "idpOfficeLocation": "IT" - }, - { - "idpOfficeLocation": null - } + "HQ", + null ] }, "idpEmployeeType": { - "description": "The user's employee type as provided by the identity provider; may be null if not available.", - "oneOf": [ - { - "type": "string", - "description": "The user's employee type.", - "examples": [ - "Permanent" - ] - }, - { - "type": "null", - "description": "No data or unused." - } + "type": [ + "string", + "null" ], + "description": "The user's employee type.", "examples": [ - { - "idpEmployeeType": "IT" - }, - { - "idpEmployeeType": null - } + "Permanent", + null ] } }, "examples": [ { - "enhancedData": { - "userPrincipalName": "user@example.com", - "idpJobTitle": "Engineer", - "idpDepartment": "IT", - "idpOfficeLocation": "HQ", - "idpEmployeeType": "Permanent" - } + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Permanent" } ] }, @@ -1277,17 +1179,13 @@ ], "examples": [ { - "enhancedData": { - "userPrincipalName": "user@example.com", - "idpJobTitle": "Engineer", - "idpDepartment": "IT", - "idpOfficeLocation": "HQ", - "idpEmployeeType": "Permanent" - } + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Permanent" }, - { - "enhancedData": null - } + null ] } } @@ -1339,33 +1237,27 @@ "device": { "title": "Device Principal Records", "type": "object", - "required": [ - "assignedService", - "assignedLicense", - "consumedService", - "principalMetadata" - ], "description": "Object containing device records, each keyed by device ID. Includes assigned services, licenses, consumed services, and metadata for each device.", "additionalProperties": { "type": "object", + "required": [ + "assignedService", + "assignedLicense", + "consumedService", + "principalMetadata" + ], "properties": { "assignedService": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Report.AdditionalService" - } + "$ref": "#/components/schemas/Report.PrincipalData.CommonService" }, "assignedLicense": { - "$ref": "#/components/schemas/Report.AssignedLicense" + "$ref": "#/components/schemas/Report.PrincipalData.AssignedLicense" }, "consumedService": { - "type": "object", - "additionalProperties": { - "$ref": "#/components/schemas/Report.AdditionalService" - } + "$ref": "#/components/schemas/Report.PrincipalData.CommonService" }, "principalMetadata": { - "$ref": "#/components/schemas/Report.PrincipalMetadata" + "$ref": "#/components/schemas/Report.PrincipalData.PrincipalMetadata" } } }, @@ -1462,7 +1354,8 @@ ], "title": "Report - Principal Data" }, - "Report.AdditionalService": { + "Report.PrincipalData.CommonService": { + "type": "object", "description": "Represents a service assignment or usage for a principal, which can be a feature breakdown, a usage count, or null if not applicable.", "additionalProperties": { "oneOf": [ @@ -1499,9 +1392,9 @@ "123e4567-e89b-12d3-a456-426614174000": null } ], - "title": "Report - Additional Service" + "title": "Report - PrincipalData - Common Service" }, - "Report.AssignedLicense": { + "Report.PrincipalData.AssignedLicense": { "description": "List of licenses assigned to a principal, including license ID and associated service plans.", "type": "array", "items": { @@ -1556,11 +1449,14 @@ ] } ], - "title": "Report - Assigned License" + "title": "Report - PrincipalData - Assigned License" }, - "Report.PrincipalMetadata": { + "Report.PrincipalData.PrincipalMetadata": { "type": "object", "description": "Metadata about the principal, such as whether the account is a shared.", + "required": [ + "sharedMailbox" + ], "properties": { "sharedMailbox": { "type": "boolean", @@ -1574,7 +1470,7 @@ "sharedMailbox": true } ], - "title": "Report - Principal Meta Data" + "title": "Report - PrincipalData - Principal Meta Data" }, "LicenseEntitlement.Shield": { "description": "Record that describes the purchased licenses for a specific tenant. More than one of these can be active at a single time.", @@ -3178,6 +3074,9 @@ }, "403": { "$ref": "#/components/responses/403" + }, + "500": { + "$ref": "#/components/responses/500" } }, "tags": [ @@ -3276,6 +3175,9 @@ }, "404": { "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" } }, "tags": [ @@ -3377,6 +3279,9 @@ }, "404": { "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" } }, "tags": [ @@ -3507,6 +3412,9 @@ }, "404": { "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" } }, "tags": [ @@ -3537,6 +3445,9 @@ }, "403": { "$ref": "#/components/responses/403" + }, + "500": { + "$ref": "#/components/responses/500" } }, "tags": [ @@ -3670,6 +3581,9 @@ }, "404": { "$ref": "#/components/responses/404" + }, + "500": { + "$ref": "#/components/responses/500" } }, "tags": [ @@ -3703,6 +3617,9 @@ }, "403": { "$ref": "#/components/responses/403" + }, + "500": { + "$ref": "#/components/responses/500" } }, "tags": [ From f9faf378801f3ce1447d1eeb4c3b3befeb9504c0 Mon Sep 17 00:00:00 2001 From: JagdishKhunti Date: Tue, 2 Dec 2025 18:05:40 +0000 Subject: [PATCH 20/45] LAB-987 Revised the structure of the 'examples' field for assigned licenses, wrapping multiple example objects in an array and adding a new example. This improves consistency and clarity in the API specification. --- specs/Data-Gateway.json | 38 ++++++++++++++++++++++++-------------- 1 file changed, 24 insertions(+), 14 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index b98982a..358d00c 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -1432,22 +1432,32 @@ }, "description": "List of service plans associated with the assigned license." } - } + }, + "examples": [ + { + "id": "6318eedb-d578-4917-93d5-26a49fe29431", + "servicePlanList": [ + "d1c81651-c68e-4603-8009-579ac5202286" + ] + } + ] }, "examples": [ - { - "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", - "servicePlanList": [ - "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "123e4567-e89b-12d3-a456-426614174000" - ] - }, - { - "id": "7e8f9a0b-1c2d-3e4f-5a6b-7c8d9e0f1a2b", - "servicePlanList": [ - "abcdefab-cdef-abcd-efab-cdefabcdefab" - ] - } + [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "123e4567-e89b-12d3-a456-426614174000" + ] + }, + { + "id": "7e8f9a0b-1c2d-3e4f-5a6b-7c8d9e0f1a2b", + "servicePlanList": [ + "abcdefab-cdef-abcd-efab-cdefabcdefab" + ] + } + ] ], "title": "Report - PrincipalData - Assigned License" }, From 381385ae47ff088ddf68c6194e846fd6064bc1e8 Mon Sep 17 00:00:00 2001 From: JagdishKhunti Date: Wed, 3 Dec 2025 10:29:58 +0000 Subject: [PATCH 21/45] LAB-980 Refactored and expanded example objects for available licenses, users, and devices to improve clarity and coverage. Adjusted nesting and array structures for consistency and added additional sample entries to better illustrate expected data formats. --- specs/Data-Gateway.json | 158 ++++++++++++++++++++-------------------- 1 file changed, 80 insertions(+), 78 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 358d00c..aa6ef54 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -864,34 +864,40 @@ "description": "List of available service plans for the current license.", "examples": [ [ - "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "f0578fdb-bbf3-43a0-939d-af4a7ddf2532" ] ] - }, - "examples": [ - { - "count": 10, - "id": "034d1003-cab4-4a91-9ebc-c8931fdf0063", - "servicePlanList": [ - "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ] - } - ] - } + } + }, + "examples": [ + { + "count": 10, + "id": "034d1003-cab4-4a91-9ebc-c8931fdf0063", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ] }, "examples": [ - { - "availableLicense": [ - { - "count": 10, - "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", - "servicePlanList": [ - "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "123e4567-e89b-12d3-a456-426614174000" - ] - } - ] - } + [ + { + "count": 10, + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "123e4567-e89b-12d3-a456-426614174000" + ] + }, + { + "count": 20, + "id": "e7358cd2-fea1-4dad-9ff1-e344f9a2b93f", + "servicePlanList": [ + "73d8d3d6-b398-4665-8c64-15e63a75a3b1" + ] + } + ] ] }, "correlation": { @@ -1192,43 +1198,41 @@ }, "examples": [ { - "user": { - "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { - "assignedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": { - "featureA": true, - "featureB": false - } - }, - "assignedLicense": [ - { - "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", - "servicePlanList": [ - "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ] - } - ], - "consumedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": { - "featureA": true, - "featureB": false - } - }, - "llmInferred": { - "isServiceAccount": false, - "isFrontlineWorker": true, - "isTempWorker": null - }, - "principalMetadata": { - "sharedMailbox": false - }, - "enhancedData": { - "userPrincipalName": "user@example.com", - "idpJobTitle": "Engineer", - "idpDepartment": "IT", - "idpOfficeLocation": "HQ", - "idpEmployeeType": "Full-Time" + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Full-Time" } } } @@ -1263,25 +1267,23 @@ }, "examples": [ { - "device": { - "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { - "assignedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 - }, - "assignedLicense": [ - { - "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", - "servicePlanList": [ - "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ] - } - ], - "consumedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 - }, - "principalMetadata": { - "sharedComputer": true + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true } } } From 025620664243000859a9708b4d1dc1c4a21779b4 Mon Sep 17 00:00:00 2001 From: Pasha Zayko <91487789+pasha-zayko@users.noreply.github.com> Date: Wed, 3 Dec 2025 10:29:18 -0500 Subject: [PATCH 22/45] Adding new endpoint to provide list of correlation records (#82) * Adding new endpoint to provide list of correlation records Listing available correlation entries for the Architecture Report --- specs/SHIELD.json | 144 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 143 insertions(+), 1 deletion(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 57a9836..d076717 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -3207,6 +3207,80 @@ ], "title": "Type of security class the object(s) belongs to", "type": "string" + }, + "ArchitectureReport.CorrelationRecord": { + "description": "Metadata that describes the execution session (run) that is used to tie/relate all of the architecture report together.", + "examples": [ + { + "auditTenantAccount": "first-user@example.com", + "correlationId": "b25f54b3-f30e-4447-9236-24ecac2e9261", + "reportTenantAccount": "other-user@example.com", + "tenantId": "a7159bdc-678d-4726-901e-cd6d018d46e2", + "createdAt": "2025-11-01T00:10:10.821Z", + "updatedAt": "2025-12-01T20:10:12.821Z" + } + ], + "properties": { + "auditTenantAccount": { + "description": "The user principal name used to authenticate into the tenant being audited.", + "examples": [ + "admin-user@example.com" + ], + "format": "email", + "type": "string" + }, + "correlationId": { + "description": "Unique Identifier that represents a single run of architectural analysis. This record is used to identify which architecture report records should be grouped together.", + "examples": [ + "88da2253-758f-4135-9d37-64448c8b65c1" + ], + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$" + }, + "reportTenantAccount": { + "description": "User account used to store/report the architecture report to the SHI Lab cloud service.", + "examples": [ + "generic-user@example.com" + ], + "format": "email", + "type": "string" + }, + "tenantId": { + "description": "Unique identifier of the customer tenant that the report was created for.", + "examples": [ + "0e1fe83f-a33f-4250-8546-225b8d45ae01" + ], + "type": "string", + "format": "uuid", + "maxLength": 36, + "minLength": 36, + "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$" + }, + "createdAt": { + "description": "Timestamp when the record was created.", + "examples": [ + "2024-08-01T21:12:22.148Z" + ], + "format": "date-time", + "type": "string" + }, + "updatedAt": { + "description": "Timestamp when the record was updated last.", + "examples": [ + "2024-08-01T21:12:22.148Z" + ], + "format": "date-time", + "type": "string" + } + }, + "required": [ + "auditTenantAccount" + ], + "title": "Architecture Report - Correlation Record", + "type": "object" } }, "securitySchemes": { @@ -3855,7 +3929,7 @@ "tags": [ "Discover" ], - "summary": "Retrieve the List of Correlation Records" + "summary": "Retrieve the List of License Report Correlation Records" } }, "/Api/Discover/LicenseReport/Correlation/{correlationId}/Data": { @@ -3950,6 +4024,74 @@ "summary": "Retrieve the Specified License Report" } }, + "/Api/Discover/ArchitectureReport/Correlation": { + "get": { + "description": "Retrieves the list of correlation records for the authenticated tenant. Correlation records store the metadata for a specific architecture report.\n\nThis endpoint requires the `Discover.Read`, or the `Everything.ReadWrite` scope (permission).", + "operationId": "/Api/Discover/ArchitectureReport/Correlation/Get", + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "Typical Response": { + "description": "Sample list of correlation records for the authenticated tenant.", + "summary": "Available Correlation Records for Architecture Report", + "value": [ + { + "auditTenantAccount": "somebody@example.com", + "correlationId": "e0b0ebef-d0bf-4467-80c8-6a3a5f37fb24", + "reportTenantAccount": "tenantUser@example.com", + "tenantId": "79f7e8c4-15fa-4ae2-8f05-74f3c5071798", + "createdAt": "2025-10-01T12:14:45.026Z", + "updatedAt": "2025-11-02T00:14:45.026Z" + }, + { + "auditTenantAccount": "somebodyElse@example.com", + "correlationId": "de4a7293-eed0-4167-b622-efeb764a2148", + "reportTenantAccount": "anotherUser@example.com", + "tenantId": "23317352-da99-4b52-ac1c-ad8e16310296", + "createdAt": "2025-06-20T20:14:45.026Z", + "updatedAt": "2025-07-22T12:10:45.026Z" + } + ] + } + }, + "schema": { + "type": "array", + "minItems": 0, + "items": { + "$ref": "#/components/schemas/ArchitectureReport.CorrelationRecord" + }, + "examples": [ + [ + { + "auditTenantAccount": "somebody@example.com", + "correlationId": "e0b0ebef-d0bf-4467-80c8-6a3a5f37fb24", + "reportTenantAccount": "tenantUser@example.com", + "tenantId": "79f7e8c4-15fa-4ae2-8f05-74f3c5071798", + "createdAt": "2025-10-01T12:14:45.026Z", + "updatedAt": "2025-11-02T00:14:45.026Z" + } + ] + ] + } + } + }, + "description": "OK" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + } + }, + "tags": [ + "Discover" + ], + "summary": "Retrieve the list of Architecture Report Correlation Records" + } + }, "/Api/Discover/ArchitectureReport/Correlation/{correlationId}/Data": { "get": { "description": "Retrieves the CSPM assessment coverage calculation results on the architecture report for the specified correlation ID in the authenticated tenant.\n\nThis endpoint requires the `Discover.Read`, or the `Everything.ReadWrite` scope (permission).", From c629f9cec8348b850aa9864c698d5448e4f54bd5 Mon Sep 17 00:00:00 2001 From: Jesse H Date: Tue, 25 Nov 2025 06:19:04 -0600 Subject: [PATCH 23/45] Add Architecture Report V1 API and schemas Introduces the ArchitectureReportV1 schema, supporting objects, and new API endpoints for submitting, retrieving, and deleting architecture reports and correlation records. Also adds the 'Architecture Reporting' tag to the API documentation. --- specs/Data-Gateway.json | 536 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 536 insertions(+) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index aa6ef54..b787ac7 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2227,6 +2227,303 @@ ] } ] + }, + "ArchitectureReportV1": { + "description": "Completely calculated architecture report structure that is the result of a complete run.", + "type": "object", + "properties": { + "correlation": { + "$ref": "#/components/schemas/CorrelationRecordV1" + }, + "principalData": { + "$ref": "#/components/schemas/PrincipalData" + }, + "tenantMetadata": { + "$ref": "#/components/schemas/ArchitectureReportV1.TenantMetadata" + } + }, + "required": [ + "correlation", + "tenantMetadata", + "principalData" + ], + "title": "Architecture Report V1 - Complete Object" + }, + "ArchitectureReportV1.CorrelationRecord": { + "$ref": "#/components/schemas/CorrelationRecordV1", + "description": "Metadata that describes the execution session (run) that is used to tie/relate architecture report versions together.", + "title": "Architecture Report V1 - CorrelationRecord" + }, + "ArchitectureReportV1.TenantMetadata": { + "description": "This is the the tenant data calculated for the architecture report", + "example": { + "totalDeviceCount": 1, + "totalGuestCount": 1, + "totalMemberCount": 1, + "totalUserCount": 1 + }, + "properties": { + "totalDeviceCount": { + "description": "The count of total devices within the tenant", + "examples": [ + 1 + ], + "format": "int32", + "type": "integer" + }, + "totalGuestCount": { + "description": "The count of total guests within the tenant", + "examples": [ + 1 + ], + "format": "int32", + "type": "integer" + }, + "totalMemberCount": { + "description": "The count of total members within the tenant", + "examples": [ + 1 + ], + "format": "int32", + "type": "integer" + }, + "totalUserCount": { + "description": "The count of total users within the tenant", + "examples": [ + 1 + ], + "format": "int32", + "type": "integer" + } + }, + "required": [ + "totalDeviceCount", + "totalGuestCount", + "totalMemberCount", + "totalUserCount" + ] + }, + "CorrelationRecordV0": { + "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", + "example": { + "auditTenantAccount": "priv-user@example.com", + "correlationId": "9d838115-0868-45d4-b8a5-98adc1af7e42", + "reportTenantAccount": "ent-user@example.com", + "tenantId": "7e536189-b2dd-4c8b-98b1-9b174777883f", + "createdAt": "2024-08-01T21:13:12.821Z", + "updatedAt": "2024-08-01T21:13:12.821Z" + }, + "properties": { + "auditTenantAccount": { + "description": "The user account used to retrieve the report information in the tenant being audited.", + "examples": [ + "admin-user@example.com" + ], + "format": "email", + "type": "string" + }, + "correlationId": { + "description": "The ID of the execution session (run) that is used to tie/relate all of the data together.", + "examples": [ + "88da2253-758f-4135-9d37-64448c8b65c1" + ], + "format": "uuid", + "type": "string", + "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" + }, + "reportTenantAccount": { + "description": "User account used to store/report the report to the SHI Lab cloud service.", + "examples": [ + "generic-user@example.com" + ], + "format": "email", + "type": "string" + }, + "tenantId": { + "description": "Unique ID of customer's Microsoft tenant that the report is auditing.", + "examples": [ + "0e1fe83f-a33f-4250-8546-225b8d45ae01" + ], + "format": "uuid", + "type": "string", + "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" + }, + "createdAt": { + "description": "Timestamp of when the report was created.", + "examples": [ + "2024-08-01T21:12:22.148Z" + ], + "format": "date-time", + "type": "string" + }, + "updatedAt": { + "description": "Timestamp of when the report was last updated.", + "examples": [ + "2024-08-01T21:12:22.148Z" + ], + "format": "date-time", + "type": "string" + } + }, + "required": [ + "auditTenantAccount" + ], + "title": "Correlation Record V0", + "type": "object" + }, + "CorrelationRecordV1": { + "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", + "example": { + "auditTenantAccount": "priv-user@example.com", + "correlationId": "b7e2c8a1-4f3a-4e2b-9c6d-2a1e8f7b3c2d", + "isMigrating": false, + "reportTenantAccount": "ent-user@example.com", + "schemaVersion": 1, + "tenantId": "f2a4d7c3-8b1e-4e5a-9c2d-7e3b6a1f4c8d", + "createdAt": "2025-01-01T00:00:00Z", + "updatedAt": "2025-01-02T00:00:00Z" + }, + "properties": { + "auditTenantAccount": { + "description": "The user account used to retrieve the report information in the tenant being audited.", + "examples": [ + "admin-user@example.com" + ], + "format": "email", + "type": "string" + }, + "correlationId": { + "description": "The ID of the execution session (run) that is used to tie/relate all of the data together.", + "examples": [ + "88da2253-758f-4135-9d37-64448c8b65c1" + ], + "format": "uuid", + "type": "string", + "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" + }, + "isMigrating": { + "description": "Flag to show when the stored report is migrating to a newer version.", + "examples": [ + true + ], + "type": "boolean" + }, + "reportTenantAccount": { + "description": "User account used to store/report the report to the SHI Lab cloud service.", + "examples": [ + "generic-user@example.com" + ], + "format": "email", + "type": "string" + }, + "schemaVersion": { + "description": "Version number of the rendered report", + "examples": [ + 1 + ], + "format": "int32", + "type": "integer" + }, + "tenantId": { + "description": "Unique ID of customer's Microsoft tenant that the report is auditing.", + "examples": [ + "0e1fe83f-a33f-4250-8546-225b8d45ae01" + ], + "format": "uuid", + "type": "string", + "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" + }, + "createdAt": { + "description": "Timestamp of when the report was created.", + "examples": [ + "2024-08-01T21:12:22.148Z" + ], + "format": "date-time", + "type": "string" + }, + "updatedAt": { + "description": "Timestamp of when the report was last updated.", + "examples": [ + "2024-08-01T21:12:22.148Z" + ], + "format": "date-time", + "type": "string" + } + }, + "required": [ + "auditTenantAccount" + ], + "title": "Correlation Record V1", + "type": "object" + }, + "ArchitectureReport.PrincipalData": { + "$ref": "#/components/schemas/PrincipalData" + }, + "PrincipalData": { + "description": "placeholder", + "example": { + "device": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "assignedService": { + "a4b2e176-d63d-4081-9e21-226e2ac624b9": { + "FeatureA": true, + "FeatureB": false + }, + "d76878d6-1495-4243-a334-a82bb9818cd0": 10 + }, + "assignedLicense": { + "id": "5888a922-9f5b-45fd-bd5f-de3283d6a79e", + "servicePlanList": [ + "547404d4-8734-415f-a7ca-e9c1ffb95e48" + ] + }, + "consumedService": { + "e0d101e8-6f1e-40a9-a66f-cad4112c9a59": { + "FeatureA": true, + "FeatureB": true + }, + "c63b7a2d-6573-4c37-9ca8-e12b954d3198": null + }, + "principalMetadata": { + "sharedComputer": true + } + } + }, + "user": { + "04e88835-771a-482b-9d6f-ba06c32cbb67": { + "assignedService": { + "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, + "d76878d6-1495-4243-a334-a82bb9818cd0": { + "FeatureA": false, + "FeatureB": true + } + }, + "assignedLicense": { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "f8ec916b-97b5-4687-b960-9afb8ed5e85e" + ] + }, + "consumedService": { + "9d3603de-b378-4c4a-adcc-ee133cbef914": 5, + "e9a4e3d3-ebe0-405a-a8f4-35a04c4dba1f": { + "FeatureA": true, + "FeatureB": false + } + }, + "enhancedData": null, + "llmInferred": { + "isServiceAccount": true, + "isFrontlineWorker": false, + "isTempWorker": false + }, + "principalMetadata": { + "sharedMailbox": false + } + } + } + }, + "type": "object" } }, "securitySchemes": { @@ -5996,6 +6293,241 @@ "Tenant Records" ] } + }, + "/Api/V1/ArchitectureReport": { + "post": { + "summary": "Submit Architecture Report V1", + "description": "Submits an Architecture Report V1 payload to the Architecture Report endpoint.", + "operationId": "/Api/V1/ArchitectureReport", + "parameters": [], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArchitectureReportV1" + } + } + } + }, + "responses": { + "201": { + "description": "Architecture Report V1 submitted successfully.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArchitectureReportV1" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + } + }, + "tags": [ + "Architecture Reporting" + ] + } + }, + "/Api/V1/ArchitectureReport/Correlation": { + "get": { + "summary": "Get Correlation Records", + "description": "Retrieves a list of correlation records, optionally filtered by date range.", + "operationId": "/Api/V1/ArchitectureReport/Correlation", + "parameters": [ + { + "$ref": "#/components/parameters/dateStart" + }, + { + "$ref": "#/components/parameters/dateEnd" + } + ], + "responses": { + "200": { + "description": "A list of correlation records.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CorrelationRecordV1" + } + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "tags": [ + "Architecture Reporting" + ] + } + }, + "/Api/V1/ArchitectureReport/Correlation/Tenant/{tenantId}": { + "get": { + "summary": "Get Correlation Records by Tenant", + "description": "Retrieves a list of correlation records for a specific tenant.", + "operationId": "/Api/V1/ArchitectureReport/Correlation/Tenant/{tenantId}", + "parameters": [ + { + "$ref": "#/components/parameters/tenantId" + } + ], + "responses": { + "200": { + "description": "A list of correlation records for the specified tenant.", + "content": { + "application/json": { + "schema": { + "type": "array", + "items": { + "$ref": "#/components/schemas/CorrelationRecordV1" + } + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "tags": [ + "Architecture Reporting" + ] + } + }, + "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data": { + "delete": { + "summary": "Delete Architecture Report Data by Correlation ID", + "description": "Deletes the architecture report data associated with the specified correlation ID.", + "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId" + } + ], + "responses": { + "204": { + "description": "Architecture report data deleted successfully." + }, + "400": { + "$ref": "#/components/responses/400" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "tags": [ + "Architecture Reporting" + ] + }, + "get": { + "summary": "Get Architecture Report Data by Correlation ID", + "description": "Retrieves the architecture report data associated with the specified correlation ID.", + "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId" + } + ], + "responses": { + "200": { + "description": "The architecture report data for the specified correlation ID.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArchitectureReportV1" + } + } + } + }, + "400": { + "description": "Bad Request. The correlation ID is invalid." + }, + "404": { + "description": "Not Found. No data found for the specified correlation ID." + } + }, + "tags": [ + "Architecture Reporting" + ] + } + }, + "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Tenant/{tenantId}/Data": { + "delete": { + "summary": "Delete Architecture Report Data by Correlation ID and Tenant ID", + "description": "Deletes the architecture report data associated with the specified correlation ID and tenant ID.", + "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Tenant/{tenantId}/Data", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId", + "required": true + }, + { + "$ref": "#/components/parameters/tenantId", + "required": true + } + ], + "responses": { + "204": { + "description": "Architecture report data deleted successfully." + }, + "400": { + "$ref": "#/components/responses/400" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "tags": [ + "Architecture Reporting" + ] + }, + "get": { + "summary": "Get Architecture Report Data by Correlation ID and Tenant ID", + "description": "Retrieves the architecture report data associated with the specified correlation ID and tenant ID.", + "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Tenant/{tenantId}/Data", + "parameters": [ + { + "$ref": "#/components/parameters/correlationId", + "required": true + }, + { + "$ref": "#/components/parameters/tenantId", + "required": true + } + ], + "responses": { + "200": { + "description": "The architecture report data for the specified correlation ID and tenant ID.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ArchitectureReportV1" + } + } + } + }, + "400": { + "$ref": "#/components/responses/400" + }, + "404": { + "$ref": "#/components/responses/404" + } + }, + "tags": [ + "Architecture Reporting" + ] + } } }, "security": [ @@ -6034,6 +6566,10 @@ "description": "Manages and reports the list of purchased licenses for the various SHI Lab Products.", "name": "License Entitlement" }, + { + "description": "Collects and reports data about a tenant's architecture.", + "name": "Architecture Reporting" + }, { "description": "Collects data from the various SHI Lab products.", "name": "Telemetry" From 07237344f7fe3d9dd3c12c82498220bfeb0850e9 Mon Sep 17 00:00:00 2001 From: Jesse H Date: Wed, 26 Nov 2025 05:09:09 -0600 Subject: [PATCH 24/45] Refactor example fields to examples arrays in schema Replaces 'example' fields with 'examples' arrays for multiple schema objects to improve consistency and support OpenAPI standards. Also adds new CommonPrincipalAssignment, DevicePrincipalAssignment, and UserPrincipalAssignment schema definitions. --- specs/Data-Gateway.json | 193 +++++++++++++++++++++++----------------- 1 file changed, 113 insertions(+), 80 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index b787ac7..1597e98 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2256,12 +2256,14 @@ }, "ArchitectureReportV1.TenantMetadata": { "description": "This is the the tenant data calculated for the architecture report", - "example": { - "totalDeviceCount": 1, - "totalGuestCount": 1, - "totalMemberCount": 1, - "totalUserCount": 1 - }, + "examples": [ + { + "totalDeviceCount": 1, + "totalGuestCount": 1, + "totalMemberCount": 1, + "totalUserCount": 1 + } + ], "properties": { "totalDeviceCount": { "description": "The count of total devices within the tenant", @@ -2305,14 +2307,16 @@ }, "CorrelationRecordV0": { "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", - "example": { - "auditTenantAccount": "priv-user@example.com", - "correlationId": "9d838115-0868-45d4-b8a5-98adc1af7e42", - "reportTenantAccount": "ent-user@example.com", - "tenantId": "7e536189-b2dd-4c8b-98b1-9b174777883f", - "createdAt": "2024-08-01T21:13:12.821Z", - "updatedAt": "2024-08-01T21:13:12.821Z" - }, + "examples": [ + { + "auditTenantAccount": "priv-user@example.com", + "correlationId": "9d838115-0868-45d4-b8a5-98adc1af7e42", + "reportTenantAccount": "ent-user@example.com", + "tenantId": "7e536189-b2dd-4c8b-98b1-9b174777883f", + "createdAt": "2024-08-01T21:13:12.821Z", + "updatedAt": "2024-08-01T21:13:12.821Z" + } + ], "properties": { "auditTenantAccount": { "description": "The user account used to retrieve the report information in the tenant being audited.", @@ -2373,16 +2377,18 @@ }, "CorrelationRecordV1": { "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", - "example": { - "auditTenantAccount": "priv-user@example.com", - "correlationId": "b7e2c8a1-4f3a-4e2b-9c6d-2a1e8f7b3c2d", - "isMigrating": false, - "reportTenantAccount": "ent-user@example.com", - "schemaVersion": 1, - "tenantId": "f2a4d7c3-8b1e-4e5a-9c2d-7e3b6a1f4c8d", - "createdAt": "2025-01-01T00:00:00Z", - "updatedAt": "2025-01-02T00:00:00Z" - }, + "examples": [ + { + "auditTenantAccount": "priv-user@example.com", + "correlationId": "b7e2c8a1-4f3a-4e2b-9c6d-2a1e8f7b3c2d", + "isMigrating": false, + "reportTenantAccount": "ent-user@example.com", + "schemaVersion": 1, + "tenantId": "f2a4d7c3-8b1e-4e5a-9c2d-7e3b6a1f4c8d", + "createdAt": "2025-01-01T00:00:00Z", + "updatedAt": "2025-01-02T00:00:00Z" + } + ], "properties": { "auditTenantAccount": { "description": "The user account used to retrieve the report information in the tenant being audited.", @@ -2461,70 +2467,97 @@ }, "PrincipalData": { "description": "placeholder", - "example": { - "device": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": { - "assignedService": { - "a4b2e176-d63d-4081-9e21-226e2ac624b9": { - "FeatureA": true, - "FeatureB": false + "examples": [ + { + "device": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "assignedService": { + "a4b2e176-d63d-4081-9e21-226e2ac624b9": { + "FeatureA": true, + "FeatureB": false + }, + "d76878d6-1495-4243-a334-a82bb9818cd0": 10 }, - "d76878d6-1495-4243-a334-a82bb9818cd0": 10 - }, - "assignedLicense": { - "id": "5888a922-9f5b-45fd-bd5f-de3283d6a79e", - "servicePlanList": [ - "547404d4-8734-415f-a7ca-e9c1ffb95e48" - ] - }, - "consumedService": { - "e0d101e8-6f1e-40a9-a66f-cad4112c9a59": { - "FeatureA": true, - "FeatureB": true + "assignedLicense": { + "id": "5888a922-9f5b-45fd-bd5f-de3283d6a79e", + "servicePlanList": [ + "547404d4-8734-415f-a7ca-e9c1ffb95e48" + ] }, - "c63b7a2d-6573-4c37-9ca8-e12b954d3198": null - }, - "principalMetadata": { - "sharedComputer": true - } - } - }, - "user": { - "04e88835-771a-482b-9d6f-ba06c32cbb67": { - "assignedService": { - "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, - "d76878d6-1495-4243-a334-a82bb9818cd0": { - "FeatureA": false, - "FeatureB": true + "consumedService": { + "e0d101e8-6f1e-40a9-a66f-cad4112c9a59": { + "FeatureA": true, + "FeatureB": true + }, + "c63b7a2d-6573-4c37-9ca8-e12b954d3198": null + }, + "principalMetadata": { + "sharedComputer": true } - }, - "assignedLicense": { - "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", - "servicePlanList": [ - "f8ec916b-97b5-4687-b960-9afb8ed5e85e" - ] - }, - "consumedService": { - "9d3603de-b378-4c4a-adcc-ee133cbef914": 5, - "e9a4e3d3-ebe0-405a-a8f4-35a04c4dba1f": { - "FeatureA": true, - "FeatureB": false + } + }, + "user": { + "04e88835-771a-482b-9d6f-ba06c32cbb67": { + "assignedService": { + "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, + "d76878d6-1495-4243-a334-a82bb9818cd0": { + "FeatureA": false, + "FeatureB": true + } + }, + "assignedLicense": { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "f8ec916b-97b5-4687-b960-9afb8ed5e85e" + ] + }, + "consumedService": { + "9d3603de-b378-4c4a-adcc-ee133cbef914": 5, + "e9a4e3d3-ebe0-405a-a8f4-35a04c4dba1f": { + "FeatureA": true, + "FeatureB": false + } + }, + "enhancedData": null, + "llmInferred": { + "isServiceAccount": true, + "isFrontlineWorker": false, + "isTempWorker": false + }, + "principalMetadata": { + "sharedMailbox": false } - }, - "enhancedData": null, - "llmInferred": { - "isServiceAccount": true, - "isFrontlineWorker": false, - "isTempWorker": false - }, - "principalMetadata": { - "sharedMailbox": false } } } - }, + ], "type": "object" - } + }, + "CommonPrincipalAssignment": { + "properties": { + "assignedService": { + "oneOf": [ + { + "$ref": "#/components/schemas/FeatureBreakdown" + }, + { + "type": "integer", + "format": "int32", + "examples": [ + 0 + ] + }, + { + "type": "null" + } + ] + }, + "assignedLicense": [], + "consumedService": {} + } + }, + "DevicePrincipalAssignment": {}, + "UserPrincipalAssignment": {} }, "securitySchemes": { "EntraID": { From 2de7464fc676704cbe85e8b7a94a5ae3901870ea Mon Sep 17 00:00:00 2001 From: Jesse H Date: Wed, 26 Nov 2025 12:14:14 -0600 Subject: [PATCH 25/45] Refactor schema references and principal data descriptions ***WIP*** Replaces inline definitions of LicenseReport.CorrelationRecord and CorrelationRecordV0 with references to Report.CorrelationRecordV0. Updates references and descriptions for principal data and correlation records in architecture and report schemas for consistency. Also renames CommonPrincipalAssignment to Report.CommonPrincipalAssignment and updates related references. --- specs/Data-Gateway.json | 385 +++++++++------------------------------- 1 file changed, 86 insertions(+), 299 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 1597e98..2108761 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -439,73 +439,8 @@ }, "LicenseReport.CorrelationRecord": { "description": "Metadata that describes the execution session (run) that is used to tie/relate all of the license report together.", - "examples": [ - { - "auditTenantAccount": "priv-user@example.com", - "correlationId": "9d838115-0868-45d4-b8a5-98adc1af7e42", - "reportTenantAccount": "ent-user@example.com", - "tenantId": "7e536189-b2dd-4c8b-98b1-9b174777883f", - "createdAt": "2024-08-01T21:13:12.821Z", - "updatedAt": "2024-08-01T21:13:12.821Z" - } - ], - "properties": { - "auditTenantAccount": { - "description": "The user account used to retrieve the license information in the tenant being audited.", - "examples": [ - "admin-user@example.com" - ], - "format": "email", - "type": "string" - }, - "correlationId": { - "description": "The ID of the execution session (run) that is used to tie/relate all of the data together.", - "examples": [ - "88da2253-758f-4135-9d37-64448c8b65c1" - ], - "format": "uuid", - "type": "string", - "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" - }, - "reportTenantAccount": { - "description": "User account used to store/report the license report to the SHI Lab cloud service.", - "examples": [ - "generic-user@example.com" - ], - "format": "email", - "type": "string" - }, - "tenantId": { - "description": "Unique ID of customer's Microsoft tenant that the license report is for.", - "examples": [ - "0e1fe83f-a33f-4250-8546-225b8d45ae01" - ], - "format": "uuid", - "type": "string", - "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" - }, - "createdAt": { - "description": "Timestamp of when the report was created.", - "examples": [ - "2024-08-01T21:12:22.148Z" - ], - "format": "date-time", - "type": "string" - }, - "updatedAt": { - "description": "Timestamp of when the report was last updated.", - "examples": [ - "2024-08-01T21:12:22.148Z" - ], - "format": "date-time", - "type": "string" - } - }, - "required": [ - "auditTenantAccount" - ], - "title": "License Report - Correlation Record", - "type": "object" + "$ref": "#/components/schemas/Report.CorrelationRecordV0", + "title": "License Report - Correlation Record" }, "LicenseReport.LicenseData": { "type": "object", @@ -923,6 +858,81 @@ ], "title": "License Report V1 - Complete Object" }, + "Report.CorrelationRecordV0": { + "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", + "examples": [ + { + "auditTenantAccount": "priv-user@example.com", + "correlationId": "9d838115-0868-45d4-b8a5-98adc1af7e42", + "reportTenantAccount": "ent-user@example.com", + "tenantId": "7e536189-b2dd-4c8b-98b1-9b174777883f", + "createdAt": "2024-08-01T21:13:12.821Z", + "updatedAt": "2024-08-01T21:13:12.821Z" + } + ], + "properties": { + "auditTenantAccount": { + "description": "The user account used to retrieve the report information in the tenant being audited.", + "examples": [ + "admin-user@example.com" + ], + "format": "email", + "type": "string" + }, + "correlationId": { + "description": "The ID of the execution session (run) that is used to tie/relate all of the data together.", + "examples": [ + "88da2253-758f-4135-9d37-64448c8b65c1" + ], + "format": "uuid", + "type": "string", + "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" + }, + "reportTenantAccount": { + "description": "User account used to store/report the report to the SHI Lab cloud service.", + "examples": [ + "generic-user@example.com" + ], + "format": "email", + "type": "string" + }, + "tenantId": { + "description": "Unique ID of customer's Microsoft tenant that the report is auditing.", + "examples": [ + "0e1fe83f-a33f-4250-8546-225b8d45ae01" + ], + "format": "uuid", + "type": "string", + "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" + }, + "createdAt": { + "description": "Timestamp of when the report was created.", + "examples": [ + "2024-08-01T21:12:22.148Z" + ], + "format": "date-time", + "type": "string" + }, + "updatedAt": { + "description": "Timestamp of when the report was last updated.", + "examples": [ + "2024-08-01T21:12:22.148Z" + ], + "format": "date-time", + "type": "string" + } + }, + "required": [ + "auditTenantAccount", + "correlationId", + "reportTenantAccount", + "tenantId", + "createdAt", + "updatedAt" + ], + "title": "Report - Correlation Record V0", + "type": "object" + }, "Report.CorrelationRecordV1": { "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", "examples": [ @@ -1016,7 +1026,7 @@ "type": "object" }, "Report.PrincipalData": { - "description": "Contains user and device records included in the license report, detailing assigned services, licenses, consumed services, and related metadata for each principal. ", + "description": "Contains user and device records included in the report, detailing assigned services, licenses, consumed services, and related metadata for each principal.", "type": "object", "required": [ "device", @@ -2233,10 +2243,10 @@ "type": "object", "properties": { "correlation": { - "$ref": "#/components/schemas/CorrelationRecordV1" + "$ref": "#/components/schemas/ArchitectureReportV1.CorrelationRecord" }, "principalData": { - "$ref": "#/components/schemas/PrincipalData" + "$ref": "#/components/schemas/ArchitectureReport.PrincipalData" }, "tenantMetadata": { "$ref": "#/components/schemas/ArchitectureReportV1.TenantMetadata" @@ -2250,7 +2260,7 @@ "title": "Architecture Report V1 - Complete Object" }, "ArchitectureReportV1.CorrelationRecord": { - "$ref": "#/components/schemas/CorrelationRecordV1", + "$ref": "#/components/schemas/Report.CorrelationRecordV1", "description": "Metadata that describes the execution session (run) that is used to tie/relate architecture report versions together.", "title": "Architecture Report V1 - CorrelationRecord" }, @@ -2305,240 +2315,17 @@ "totalUserCount" ] }, - "CorrelationRecordV0": { - "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", - "examples": [ - { - "auditTenantAccount": "priv-user@example.com", - "correlationId": "9d838115-0868-45d4-b8a5-98adc1af7e42", - "reportTenantAccount": "ent-user@example.com", - "tenantId": "7e536189-b2dd-4c8b-98b1-9b174777883f", - "createdAt": "2024-08-01T21:13:12.821Z", - "updatedAt": "2024-08-01T21:13:12.821Z" - } - ], - "properties": { - "auditTenantAccount": { - "description": "The user account used to retrieve the report information in the tenant being audited.", - "examples": [ - "admin-user@example.com" - ], - "format": "email", - "type": "string" - }, - "correlationId": { - "description": "The ID of the execution session (run) that is used to tie/relate all of the data together.", - "examples": [ - "88da2253-758f-4135-9d37-64448c8b65c1" - ], - "format": "uuid", - "type": "string", - "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" - }, - "reportTenantAccount": { - "description": "User account used to store/report the report to the SHI Lab cloud service.", - "examples": [ - "generic-user@example.com" - ], - "format": "email", - "type": "string" - }, - "tenantId": { - "description": "Unique ID of customer's Microsoft tenant that the report is auditing.", - "examples": [ - "0e1fe83f-a33f-4250-8546-225b8d45ae01" - ], - "format": "uuid", - "type": "string", - "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" - }, - "createdAt": { - "description": "Timestamp of when the report was created.", - "examples": [ - "2024-08-01T21:12:22.148Z" - ], - "format": "date-time", - "type": "string" - }, - "updatedAt": { - "description": "Timestamp of when the report was last updated.", - "examples": [ - "2024-08-01T21:12:22.148Z" - ], - "format": "date-time", - "type": "string" - } - }, - "required": [ - "auditTenantAccount" - ], - "title": "Correlation Record V0", - "type": "object" - }, - "CorrelationRecordV1": { - "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", - "examples": [ - { - "auditTenantAccount": "priv-user@example.com", - "correlationId": "b7e2c8a1-4f3a-4e2b-9c6d-2a1e8f7b3c2d", - "isMigrating": false, - "reportTenantAccount": "ent-user@example.com", - "schemaVersion": 1, - "tenantId": "f2a4d7c3-8b1e-4e5a-9c2d-7e3b6a1f4c8d", - "createdAt": "2025-01-01T00:00:00Z", - "updatedAt": "2025-01-02T00:00:00Z" - } - ], - "properties": { - "auditTenantAccount": { - "description": "The user account used to retrieve the report information in the tenant being audited.", - "examples": [ - "admin-user@example.com" - ], - "format": "email", - "type": "string" - }, - "correlationId": { - "description": "The ID of the execution session (run) that is used to tie/relate all of the data together.", - "examples": [ - "88da2253-758f-4135-9d37-64448c8b65c1" - ], - "format": "uuid", - "type": "string", - "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" - }, - "isMigrating": { - "description": "Flag to show when the stored report is migrating to a newer version.", - "examples": [ - true - ], - "type": "boolean" - }, - "reportTenantAccount": { - "description": "User account used to store/report the report to the SHI Lab cloud service.", - "examples": [ - "generic-user@example.com" - ], - "format": "email", - "type": "string" - }, - "schemaVersion": { - "description": "Version number of the rendered report", - "examples": [ - 1 - ], - "format": "int32", - "type": "integer" - }, - "tenantId": { - "description": "Unique ID of customer's Microsoft tenant that the report is auditing.", - "examples": [ - "0e1fe83f-a33f-4250-8546-225b8d45ae01" - ], - "format": "uuid", - "type": "string", - "pattern": "^\\w+-\\w+-\\w+-\\w+-\\w+$" - }, - "createdAt": { - "description": "Timestamp of when the report was created.", - "examples": [ - "2024-08-01T21:12:22.148Z" - ], - "format": "date-time", - "type": "string" - }, - "updatedAt": { - "description": "Timestamp of when the report was last updated.", - "examples": [ - "2024-08-01T21:12:22.148Z" - ], - "format": "date-time", - "type": "string" - } - }, - "required": [ - "auditTenantAccount" - ], - "title": "Correlation Record V1", - "type": "object" - }, "ArchitectureReport.PrincipalData": { - "$ref": "#/components/schemas/PrincipalData" - }, - "PrincipalData": { - "description": "placeholder", - "examples": [ - { - "device": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": { - "assignedService": { - "a4b2e176-d63d-4081-9e21-226e2ac624b9": { - "FeatureA": true, - "FeatureB": false - }, - "d76878d6-1495-4243-a334-a82bb9818cd0": 10 - }, - "assignedLicense": { - "id": "5888a922-9f5b-45fd-bd5f-de3283d6a79e", - "servicePlanList": [ - "547404d4-8734-415f-a7ca-e9c1ffb95e48" - ] - }, - "consumedService": { - "e0d101e8-6f1e-40a9-a66f-cad4112c9a59": { - "FeatureA": true, - "FeatureB": true - }, - "c63b7a2d-6573-4c37-9ca8-e12b954d3198": null - }, - "principalMetadata": { - "sharedComputer": true - } - } - }, - "user": { - "04e88835-771a-482b-9d6f-ba06c32cbb67": { - "assignedService": { - "a4b2e176-d63d-4081-9e21-226e2ac624b9": null, - "d76878d6-1495-4243-a334-a82bb9818cd0": { - "FeatureA": false, - "FeatureB": true - } - }, - "assignedLicense": { - "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", - "servicePlanList": [ - "f8ec916b-97b5-4687-b960-9afb8ed5e85e" - ] - }, - "consumedService": { - "9d3603de-b378-4c4a-adcc-ee133cbef914": 5, - "e9a4e3d3-ebe0-405a-a8f4-35a04c4dba1f": { - "FeatureA": true, - "FeatureB": false - } - }, - "enhancedData": null, - "llmInferred": { - "isServiceAccount": true, - "isFrontlineWorker": false, - "isTempWorker": false - }, - "principalMetadata": { - "sharedMailbox": false - } - } - } - } - ], - "type": "object" + "description": "Contains user and device records included in the architecture report, detailing assigned services, licenses, consumed services, and related metadata for each principal.", + "$ref": "#/components/schemas/Report.PrincipalData", + "title": "Architecture Report - Principal Data" }, - "CommonPrincipalAssignment": { + "Report.CommonPrincipalAssignment": { "properties": { "assignedService": { "oneOf": [ { - "$ref": "#/components/schemas/FeatureBreakdown" + "$ref": "#/components/schemas/Report.FeatureBreakdown" }, { "type": "integer", From 36bb8934f4f775e1cf690f47fc34d8985b571640 Mon Sep 17 00:00:00 2001 From: Jesse H Date: Mon, 1 Dec 2025 06:04:47 -0600 Subject: [PATCH 26/45] Update Architecture Report API endpoints and responses Refined operationId naming for clarity and consistency across endpoints. Enhanced endpoint descriptions with permission and access details. Added 401 and 403 error responses to relevant endpoints. Updated schema references and parameter lists for improved accuracy. --- specs/Data-Gateway.json | 85 +++++++++++++++++++++++++++++++---------- 1 file changed, 65 insertions(+), 20 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 2108761..482cae6 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -6118,7 +6118,7 @@ "post": { "summary": "Submit Architecture Report V1", "description": "Submits an Architecture Report V1 payload to the Architecture Report endpoint.", - "operationId": "/Api/V1/ArchitectureReport", + "operationId": "/Api/V1/ArchitectureReport/Post", "parameters": [], "requestBody": { "required": true, @@ -6143,6 +6143,12 @@ }, "400": { "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" } }, "tags": [ @@ -6153,8 +6159,8 @@ "/Api/V1/ArchitectureReport/Correlation": { "get": { "summary": "Get Correlation Records", - "description": "Retrieves a list of correlation records, optionally filtered by date range.", - "operationId": "/Api/V1/ArchitectureReport/Correlation", + "description": "Retrieves the list of correlation records for the authenticated tenant. Can use filters targeting creation date to limit results. Correlation records store the metadata for a specific architecture report.\n\nThis endpoint requires the `ArchitectureReport.Read`, `ArchitectureReport.Read.All`, `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/V1/ArchitectureReport/Correlation/Get", "parameters": [ { "$ref": "#/components/parameters/dateStart" @@ -6171,7 +6177,7 @@ "schema": { "type": "array", "items": { - "$ref": "#/components/schemas/CorrelationRecordV1" + "$ref": "#/components/schemas/Report.CorrelationRecordV1" } } } @@ -6180,6 +6186,12 @@ "400": { "$ref": "#/components/responses/400" }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" } @@ -6192,11 +6204,17 @@ "/Api/V1/ArchitectureReport/Correlation/Tenant/{tenantId}": { "get": { "summary": "Get Correlation Records by Tenant", - "description": "Retrieves a list of correlation records for a specific tenant.", - "operationId": "/Api/V1/ArchitectureReport/Correlation/Tenant/{tenantId}", + "description": "Retrieves the list of correlation records for the specified tenant. Can use filters targeting creation date to limit results. Correlation records store the metadata for a specific architecture report.\n\nThis endpoint requires the `ArchitectureReport.Read.All`, 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/Correlation/Tenant/{tenantId}/Get", "parameters": [ { "$ref": "#/components/parameters/tenantId" + }, + { + "$ref": "#/components/parameters/dateStart" + }, + { + "$ref": "#/components/parameters/dateEnd" } ], "responses": { @@ -6216,6 +6234,12 @@ "400": { "$ref": "#/components/responses/400" }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" } @@ -6228,8 +6252,8 @@ "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data": { "delete": { "summary": "Delete Architecture Report Data by Correlation ID", - "description": "Deletes the architecture report data associated with the specified correlation ID.", - "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data", + "description": "Deletes the full license report v1 for the specified correlation ID.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data/Delete", "parameters": [ { "$ref": "#/components/parameters/correlationId" @@ -6242,8 +6266,11 @@ "400": { "$ref": "#/components/responses/400" }, - "404": { - "$ref": "#/components/responses/404" + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" } }, "tags": [ @@ -6251,9 +6278,9 @@ ] }, "get": { - "summary": "Get Architecture Report Data by Correlation ID", - "description": "Retrieves the architecture report data associated with the specified correlation ID.", - "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data", + "summary": "Retrieve the specified Architecture Report V1 by Correlation ID", + "description": "Retrieves the full license report v1 for the specified correlation ID in the authenticated tenant. The license report v1 contains all of the license usage and compliance information with the required correlation data.\n\nThis endpoint requires the `ArchitectureReport.Read`, `ArchitectureReport.Read.All`, `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data/Get", "parameters": [ { "$ref": "#/components/parameters/correlationId" @@ -6271,10 +6298,16 @@ } }, "400": { - "description": "Bad Request. The correlation ID is invalid." + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" }, "404": { - "description": "Not Found. No data found for the specified correlation ID." + "$ref": "#/components/responses/404" } }, "tags": [ @@ -6284,9 +6317,9 @@ }, "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Tenant/{tenantId}/Data": { "delete": { - "summary": "Delete Architecture Report Data by Correlation ID and Tenant ID", - "description": "Deletes the architecture report data associated with the specified correlation ID and tenant ID.", - "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Tenant/{tenantId}/Data", + "summary": "Delete the specified Architecture Report V1 for specified tenant", + "description": "Deletes the full architecture report v1 for the specified correlation ID and tenant.\n\nThis endpoint requires the `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/Correlation/{correlationId}/Tenant/{tenantId}/Data/Delete", "parameters": [ { "$ref": "#/components/parameters/correlationId", @@ -6304,6 +6337,12 @@ "400": { "$ref": "#/components/responses/400" }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" } @@ -6313,9 +6352,9 @@ ] }, "get": { - "summary": "Get Architecture Report Data by Correlation ID and Tenant ID", + "summary": "Get Architecture Report v1 Data by Correlation ID and Tenant ID", "description": "Retrieves the architecture report data associated with the specified correlation ID and tenant ID.", - "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Tenant/{tenantId}/Data", + "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Tenant/{tenantId}/Data/Get", "parameters": [ { "$ref": "#/components/parameters/correlationId", @@ -6340,6 +6379,12 @@ "400": { "$ref": "#/components/responses/400" }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, "404": { "$ref": "#/components/responses/404" } From 2f59617a396f1bb1be4358519cc2a2743429a4dd Mon Sep 17 00:00:00 2001 From: Jesse H Date: Mon, 1 Dec 2025 14:08:51 -0600 Subject: [PATCH 27/45] Update API error responses to use 500 status code Replaces various 401, 403, and 404 error responses with a unified 500 Internal Server Error response across multiple endpoints in Data-Gateway.json. Adds a description for the 500 error and changes some success response codes from 201 to 200 for consistency. --- specs/Data-Gateway.json | 74 +++++++++-------------------------------- 1 file changed, 16 insertions(+), 58 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 482cae6..7380b5e 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -3094,7 +3094,7 @@ } }, "responses": { - "201": { + "200": { "content": { "application/json": { "examples": { @@ -3563,9 +3563,6 @@ "201": { "description": "Deleted successfully" }, - "204": { - "description": "Deleted successfully" - }, "400": { "$ref": "#/components/responses/400" }, @@ -3735,9 +3732,6 @@ "201": { "description": "Deleted successfully" }, - "204": { - "description": "Deleted successfully" - }, "400": { "$ref": "#/components/responses/400" }, @@ -6131,7 +6125,7 @@ } }, "responses": { - "201": { + "200": { "description": "Architecture Report V1 submitted successfully.", "content": { "application/json": { @@ -6144,11 +6138,8 @@ "400": { "$ref": "#/components/responses/400" }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" + "500": { + "$ref": "#/components/responses/500" } }, "tags": [ @@ -6186,14 +6177,8 @@ "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": [ @@ -6234,14 +6219,8 @@ "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": [ @@ -6266,11 +6245,8 @@ "400": { "$ref": "#/components/responses/400" }, - "401": { - "$ref": "#/components/responses/401" - }, - "403": { - "$ref": "#/components/responses/403" + "500": { + "$ref": "#/components/responses/500" } }, "tags": [ @@ -6300,14 +6276,8 @@ "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": [ @@ -6337,14 +6307,8 @@ "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": [ @@ -6379,14 +6343,8 @@ "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": [ From 9686cfbb76c07d54c43e55f66118b07d5cca0fb1 Mon Sep 17 00:00:00 2001 From: JagdishKhunti Date: Tue, 2 Dec 2025 13:22:14 +0000 Subject: [PATCH 28/45] LAB-980 Updated the Data-Gateway JSON schema to clarify and expand user and device principal records, including required fields and more detailed property definitions. Enhanced the structure and examples for inferred attributes and enhanced identity data, added explicit nullability, and improved descriptions for service plan and license references. These changes improve schema accuracy and documentation for integrators. --- specs/Data-Gateway.json | 89 ++++++++++++++++++++++++++++++++--------- 1 file changed, 71 insertions(+), 18 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 7380b5e..dc83c7f 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -1036,6 +1036,14 @@ "user": { "title": "User Principal Records", "type": "object", + "required": [ + "assignedService", + "assignedLicense", + "consumedService", + "llmInferred", + "principalMetadata", + "enhancedData" + ], "description": "Object containing user records, each keyed by user ID. Includes assigned services, licenses, consumed services, inferred attributes, metadata, and enhanced identity data for each user.", "additionalProperties": { "type": "object", @@ -1068,36 +1076,75 @@ "description": "Inferred principal attributes, showing if the account is a service account, frontline worker, temporary worker.", "properties": { "isServiceAccount": { - "description": "Indicates if the account is a service account.", - "type": [ - "boolean", - "null" + "description": "The user service account; may be null if not provided.", + "oneOf": [ + { + "type": "boolean", + "description": "Indicates if the account is a service account.", + "examples": [ + true + ] + }, + { + "type": "null", + "description": "No data or unused." + } ], "examples": [ - true, - null + { + "isServiceAccount": true + }, + { + "isServiceAccount": null + } ] }, "isFrontlineWorker": { - "description": "Indicates if the user is a frontline worker.", - "type": [ - "boolean", - "null" + "description": "The user a temporary employee; may be null if not provided.", + "oneOf": [ + { + "type": "boolean", + "description": "Indicates if the user is a frontline worker.", + "examples": [ + true + ] + }, + { + "type": "null", + "description": "No data or unused." + } ], "examples": [ - true, - null + { + "isFrontlineWorker": true + }, + { + "isFrontlineWorker": null + } ] }, "isTempWorker": { - "description": "Indicates if the user is a temporary worker.", - "type": [ - "boolean", - "null" + "description": "The user is a temporary worker; may be bull if not provided.", + "oneOf": [ + { + "type": "boolean", + "description": "Indicates if the user is a temporary worker.", + "examples": [ + true + ] + }, + { + "type": "null", + "description": "No data or unused." + } ], "examples": [ - true, - null + { + "isTempWorker": true + }, + { + "isTempWorker": null + } ] } }, @@ -1251,6 +1298,12 @@ "device": { "title": "Device Principal Records", "type": "object", + "required": [ + "assignedService", + "assignedLicense", + "consumedService", + "principalMetadata" + ], "description": "Object containing device records, each keyed by device ID. Includes assigned services, licenses, consumed services, and metadata for each device.", "additionalProperties": { "type": "object", From 5e2f5fcf94ac79b1774de0ae8412888285c0eb54 Mon Sep 17 00:00:00 2001 From: Jesse H Date: Tue, 2 Dec 2025 07:47:39 -0600 Subject: [PATCH 29/45] Add permission details to ArchitectureReport endpoints Updated the descriptions for the POST and GET /Api/V1/ArchitectureReport endpoints to specify required scopes and tenant access restrictions for improved API documentation clarity. --- specs/Data-Gateway.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index dc83c7f..be789b2 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -6164,7 +6164,7 @@ "/Api/V1/ArchitectureReport": { "post": { "summary": "Submit Architecture Report V1", - "description": "Submits an Architecture Report V1 payload to the Architecture Report endpoint.", + "description": "Submits an Architecture Report V1 payload to the Architecture Report endpoint.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, `ArchitectureReport.ReadWrite.All` scope (permission).", "operationId": "/Api/V1/ArchitectureReport/Post", "parameters": [], "requestBody": { @@ -6370,7 +6370,7 @@ }, "get": { "summary": "Get Architecture Report v1 Data by Correlation ID and Tenant ID", - "description": "Retrieves the architecture report data associated with the specified correlation ID and tenant ID.", + "description": "Retrieves the architecture report data associated with the specified correlation ID and tenant ID.\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/Correlation/{correlationId}/Tenant/{tenantId}/Data/Get", "parameters": [ { From 16d9755db997b9bce9726ab7c8630b85cfac002d Mon Sep 17 00:00:00 2001 From: Jesse H Date: Tue, 2 Dec 2025 18:41:04 -0600 Subject: [PATCH 30/45] Revise Data-Gateway schema for user and device records Updated required fields and descriptions for user and device principal records, improved enhanced identity data structure to support consent-based nullability, and clarified examples and titles for correlation and principal metadata records. These changes improve schema clarity, flexibility, and alignment with consent requirements. --- specs/Data-Gateway.json | 100 +++++++++------------------------------- 1 file changed, 21 insertions(+), 79 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index be789b2..2f65d5e 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -872,7 +872,7 @@ ], "properties": { "auditTenantAccount": { - "description": "The user account used to retrieve the report information in the tenant being audited.", + "description": "The user account used to retrieve the information in the tenant being audited.", "examples": [ "admin-user@example.com" ], @@ -923,14 +923,9 @@ } }, "required": [ - "auditTenantAccount", - "correlationId", - "reportTenantAccount", - "tenantId", - "createdAt", - "updatedAt" + "auditTenantAccount" ], - "title": "Report - Correlation Record V0", + "title": "License Report - Correlation Record", "type": "object" }, "Report.CorrelationRecordV1": { @@ -1036,14 +1031,6 @@ "user": { "title": "User Principal Records", "type": "object", - "required": [ - "assignedService", - "assignedLicense", - "consumedService", - "llmInferred", - "principalMetadata", - "enhancedData" - ], "description": "Object containing user records, each keyed by user ID. Includes assigned services, licenses, consumed services, inferred attributes, metadata, and enhanced identity data for each user.", "additionalProperties": { "type": "object", @@ -1076,75 +1063,36 @@ "description": "Inferred principal attributes, showing if the account is a service account, frontline worker, temporary worker.", "properties": { "isServiceAccount": { - "description": "The user service account; may be null if not provided.", - "oneOf": [ - { - "type": "boolean", - "description": "Indicates if the account is a service account.", - "examples": [ - true - ] - }, - { - "type": "null", - "description": "No data or unused." - } + "description": "Indicates if the account is a service account.", + "type": [ + "boolean", + "null" ], "examples": [ - { - "isServiceAccount": true - }, - { - "isServiceAccount": null - } + true, + null ] }, "isFrontlineWorker": { - "description": "The user a temporary employee; may be null if not provided.", - "oneOf": [ - { - "type": "boolean", - "description": "Indicates if the user is a frontline worker.", - "examples": [ - true - ] - }, - { - "type": "null", - "description": "No data or unused." - } + "description": "Indicates if the user is a frontline worker.", + "type": [ + "boolean", + "null" ], "examples": [ - { - "isFrontlineWorker": true - }, - { - "isFrontlineWorker": null - } + true, + null ] }, "isTempWorker": { - "description": "The user is a temporary worker; may be bull if not provided.", - "oneOf": [ - { - "type": "boolean", - "description": "Indicates if the user is a temporary worker.", - "examples": [ - true - ] - }, - { - "type": "null", - "description": "No data or unused." - } + "description": "Indicates if the user is a temporary worker.", + "type": [ + "boolean", + "null" ], "examples": [ - { - "isTempWorker": true - }, - { - "isTempWorker": null - } + true, + null ] } }, @@ -1298,12 +1246,6 @@ "device": { "title": "Device Principal Records", "type": "object", - "required": [ - "assignedService", - "assignedLicense", - "consumedService", - "principalMetadata" - ], "description": "Object containing device records, each keyed by device ID. Includes assigned services, licenses, consumed services, and metadata for each device.", "additionalProperties": { "type": "object", From a0eecdb4b2816f3134e759cef15ac6f3c8f34d1b Mon Sep 17 00:00:00 2001 From: Jesse H Date: Wed, 3 Dec 2025 05:14:55 -0600 Subject: [PATCH 31/45] Rename LicenseReport schemas to LicenseReportV0 Updated all references of LicenseReport, LicenseReport.CorrelationRecord, and LicenseReport.LicenseData to LicenseReportV0, LicenseReportV0.CorrelationRecord, and LicenseReportV0.LicenseData in Data-Gateway.json. This change clarifies schema versioning and improves maintainability. --- specs/Data-Gateway.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 2f65d5e..56cdf8e 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -437,12 +437,12 @@ "title": "Report - Feature Breakdown", "type": "object" }, - "LicenseReport.CorrelationRecord": { + "LicenseReportV0.CorrelationRecord": { "description": "Metadata that describes the execution session (run) that is used to tie/relate all of the license report together.", "$ref": "#/components/schemas/Report.CorrelationRecordV0", "title": "License Report - Correlation Record" }, - "LicenseReport.LicenseData": { + "LicenseReportV0.LicenseData": { "type": "object", "properties": { "assignedLicense": { @@ -592,7 +592,7 @@ ], "title": "License Report - License Data" }, - "LicenseReport": { + "LicenseReportV0": { "description": "Completely calculated license report structure that is the result of a complete run.", "examples": [ { @@ -647,11 +647,11 @@ "type": "object" }, "correlation": { - "$ref": "#/components/schemas/LicenseReport.CorrelationRecord" + "$ref": "#/components/schemas/LicenseReportV0.CorrelationRecord" }, "licenseData": { "additionalProperties": { - "$ref": "#/components/schemas/LicenseReport.LicenseData" + "$ref": "#/components/schemas/LicenseReportV0.LicenseData" } } }, @@ -2479,7 +2479,7 @@ } }, "schema": { - "$ref": "#/components/schemas/LicenseReport" + "$ref": "#/components/schemas/LicenseReportV0" } } } @@ -2545,7 +2545,7 @@ } }, "schema": { - "$ref": "#/components/schemas/LicenseReport" + "$ref": "#/components/schemas/LicenseReportV0" } } }, @@ -2611,7 +2611,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/LicenseReport.CorrelationRecord" + "$ref": "#/components/schemas/LicenseReportV0.CorrelationRecord" }, "examples": [ [ @@ -2698,7 +2698,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/LicenseReport.CorrelationRecord" + "$ref": "#/components/schemas/LicenseReportV0.CorrelationRecord" }, "examples": [ [ @@ -2811,7 +2811,7 @@ } }, "schema": { - "$ref": "#/components/schemas/LicenseReport" + "$ref": "#/components/schemas/LicenseReportV0" } } }, @@ -2933,7 +2933,7 @@ } }, "schema": { - "$ref": "#/components/schemas/LicenseReport" + "$ref": "#/components/schemas/LicenseReportV0" } } }, From b137354ca1c947b1ed094d283d09cdaf7f0507a7 Mon Sep 17 00:00:00 2001 From: Jesse H Date: Wed, 3 Dec 2025 07:07:32 -0600 Subject: [PATCH 32/45] Expand Architecture Report API examples and schema Added detailed example objects for Architecture Report endpoints and correlation records, updated required fields in the correlation record schema, and removed unused principal assignment schemas. Also moved and clarified endpoint summaries for improved OpenAPI documentation consistency. --- specs/Data-Gateway.json | 597 +++++++++++++++++++++++++++++++++++++--- 1 file changed, 553 insertions(+), 44 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 56cdf8e..8d35c2b 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -1015,7 +1015,13 @@ }, "required": [ "auditTenantAccount", - "reportTenantAccount" + "correlationId", + "createdAt", + "isMigrating", + "reportTenantAccount", + "schemaVersion", + "tenantId", + "updatedAt" ], "title": "Report - Correlation Record V1", "type": "object" @@ -2252,6 +2258,89 @@ "tenantMetadata", "principalData" ], + "examples": [ + { + "correlation": { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Full-Time" + } + } + }, + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true + } + } + } + }, + "tenantMetadata": { + "totalDeviceCount": 1, + "totalGuestCount": 1, + "totalMemberCount": 1, + "totalUserCount": 1 + }, + "schemaVersion": 1 + } + ], "title": "Architecture Report V1 - Complete Object" }, "ArchitectureReportV1.CorrelationRecord": { @@ -2314,32 +2403,7 @@ "description": "Contains user and device records included in the architecture report, detailing assigned services, licenses, consumed services, and related metadata for each principal.", "$ref": "#/components/schemas/Report.PrincipalData", "title": "Architecture Report - Principal Data" - }, - "Report.CommonPrincipalAssignment": { - "properties": { - "assignedService": { - "oneOf": [ - { - "$ref": "#/components/schemas/Report.FeatureBreakdown" - }, - { - "type": "integer", - "format": "int32", - "examples": [ - 0 - ] - }, - { - "type": "null" - } - ] - }, - "assignedLicense": [], - "consumedService": {} - } - }, - "DevicePrincipalAssignment": {}, - "UserPrincipalAssignment": {} + } }, "securitySchemes": { "EntraID": { @@ -6105,14 +6169,99 @@ }, "/Api/V1/ArchitectureReport": { "post": { - "summary": "Submit Architecture Report V1", "description": "Submits an Architecture Report V1 payload to the Architecture Report endpoint.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, `ArchitectureReport.ReadWrite.All` scope (permission).", "operationId": "/Api/V1/ArchitectureReport/Post", - "parameters": [], "requestBody": { "required": true, "content": { "application/json": { + "examples": { + "Architecture Report V1": { + "description": "Sample, truncated report from an example customer environment. This will return the same report as the request input.", + "summary": "Example of license report stored.", + "value": { + "correlation": { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Full-Time" + } + } + }, + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true + } + } + } + }, + "tenantMetadata": { + "totalDeviceCount": 1, + "totalGuestCount": 1, + "totalMemberCount": 1, + "totalUserCount": 1 + }, + "schemaVersion": 1 + } + } + }, "schema": { "$ref": "#/components/schemas/ArchitectureReportV1" } @@ -6124,6 +6273,93 @@ "description": "Architecture Report V1 submitted successfully.", "content": { "application/json": { + "examples": { + "Architecture Report V1": { + "description": "Sample, truncated report from an example customer environment. This will return the same report as the request input.", + "summary": "Example of license report stored.", + "value": { + "correlation": { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Full-Time" + } + } + }, + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true + } + } + } + }, + "tenantMetadata": { + "totalDeviceCount": 1, + "totalGuestCount": 1, + "totalMemberCount": 1, + "totalUserCount": 1 + }, + "schemaVersion": 1 + } + } + }, "schema": { "$ref": "#/components/schemas/ArchitectureReportV1" } @@ -6139,12 +6375,12 @@ }, "tags": [ "Architecture Reporting" - ] + ], + "summary": "Submit Architecture Report V1" } }, "/Api/V1/ArchitectureReport/Correlation": { "get": { - "summary": "Get Correlation Records", "description": "Retrieves the list of correlation records for the authenticated tenant. Can use filters targeting creation date to limit results. Correlation records store the metadata for a specific architecture report.\n\nThis endpoint requires the `ArchitectureReport.Read`, `ArchitectureReport.Read.All`, `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", "operationId": "/Api/V1/ArchitectureReport/Correlation/Get", "parameters": [ @@ -6160,11 +6396,64 @@ "description": "A list of correlation records.", "content": { "application/json": { + "examples": { + "Example Correlation Records": { + "description": "Sample list of correlation records for the current authenticated tenant.", + "summary": "Available Correlation Records", + "value": [ + { + "auditTenantAccount": "user@example.com", + "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + { + "auditTenantAccount": "user@example.com", + "correlationId": "5888a922-9f5b-45fd-bd5f-de3283d6a79e", + "createdAt": "2023-12-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + } + ] + } + }, "schema": { - "type": "array", + "examples": [ + [ + { + "auditTenantAccount": "user@example.com", + "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + { + "auditTenantAccount": "user@example.com", + "correlationId": "5888a922-9f5b-45fd-bd5f-de3283d6a79e", + "createdAt": "2023-12-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + } + ] + ], "items": { - "$ref": "#/components/schemas/Report.CorrelationRecordV1" - } + "$ref": "#/components/schemas/ArchitectureReportV1.CorrelationRecord" + }, + "minItems": 0, + "type": "array" } } } @@ -6178,12 +6467,12 @@ }, "tags": [ "Architecture Reporting" - ] + ], + "summary": "Get Correlation Records" } }, "/Api/V1/ArchitectureReport/Correlation/Tenant/{tenantId}": { "get": { - "summary": "Get Correlation Records by Tenant", "description": "Retrieves the list of correlation records for the specified tenant. Can use filters targeting creation date to limit results. Correlation records store the metadata for a specific architecture report.\n\nThis endpoint requires the `ArchitectureReport.Read.All`, 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/Correlation/Tenant/{tenantId}/Get", "parameters": [ @@ -6199,17 +6488,70 @@ ], "responses": { "200": { - "description": "A list of correlation records for the specified tenant.", "content": { "application/json": { + "examples": { + "Example Correlation Records": { + "description": "Sample list of correlation records for the specified tenant.", + "summary": "Available Correlation Records", + "value": [ + { + "auditTenantAccount": "user@example.com", + "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + { + "auditTenantAccount": "user@example.com", + "correlationId": "e0d101e8-6f1e-40a9-a66f-cad4112c9a59", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + } + ] + } + }, "schema": { "type": "array", + "minItems": 0, "items": { - "$ref": "#/components/schemas/CorrelationRecordV1" - } + "$ref": "#/components/schemas/ArchitectureReportV1.CorrelationRecord" + }, + "examples": [ + [ + { + "auditTenantAccount": "user@example.com", + "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + { + "auditTenantAccount": "user@example.com", + "correlationId": "e0d101e8-6f1e-40a9-a66f-cad4112c9a59", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + } + ] + ] } } - } + }, + "description": "A list of correlation records for the specified tenant." }, "400": { "$ref": "#/components/responses/400" @@ -6218,6 +6560,7 @@ "$ref": "#/components/responses/500" } }, + "summary": "Get Correlation Records by Tenant", "tags": [ "Architecture Reporting" ] @@ -6225,7 +6568,6 @@ }, "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data": { "delete": { - "summary": "Delete Architecture Report Data by Correlation ID", "description": "Deletes the full license report v1 for the specified correlation ID.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data/Delete", "parameters": [ @@ -6244,12 +6586,12 @@ "$ref": "#/components/responses/500" } }, + "summary": "Delete Architecture Report Data by Correlation ID", "tags": [ "Architecture Reporting" ] }, "get": { - "summary": "Retrieve the specified Architecture Report V1 by Correlation ID", "description": "Retrieves the full license report v1 for the specified correlation ID in the authenticated tenant. The license report v1 contains all of the license usage and compliance information with the required correlation data.\n\nThis endpoint requires the `ArchitectureReport.Read`, `ArchitectureReport.Read.All`, `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data/Get", "parameters": [ @@ -6262,6 +6604,89 @@ "description": "The architecture report data for the specified correlation ID.", "content": { "application/json": { + "examples": { + "Example Architecture Report V1": { + "correlation": { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Full-Time" + } + } + }, + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true + } + } + } + }, + "tenantMetadata": { + "totalDeviceCount": 1, + "totalGuestCount": 1, + "totalMemberCount": 1, + "totalUserCount": 1 + }, + "schemaVersion": 1 + } + }, "schema": { "$ref": "#/components/schemas/ArchitectureReportV1" } @@ -6275,6 +6700,7 @@ "$ref": "#/components/responses/500" } }, + "summary": "Retrieve the specified Architecture Report V1 by Correlation ID", "tags": [ "Architecture Reporting" ] @@ -6326,14 +6752,97 @@ ], "responses": { "200": { - "description": "The architecture report data for the specified correlation ID and tenant ID.", "content": { "application/json": { + "examples": { + "Architecture Report V1": { + "correlation": { + "auditTenantAccount": "user@example.com", + "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "createdAt": "2023-11-19T10:00:00.000Z", + "isMigrating": false, + "reportTenantAccount": "user@example.com", + "schemaVersion": 1, + "tenantId": "123e4567-e89b-12d3-a456-426614174000", + "updatedAt": "2023-11-19T10:05:00.000Z" + }, + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Full-Time" + } + } + }, + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true + } + } + } + }, + "tenantMetadata": { + "totalDeviceCount": 1, + "totalGuestCount": 1, + "totalMemberCount": 1, + "totalUserCount": 1 + }, + "schemaVersion": 1 + } + }, "schema": { "$ref": "#/components/schemas/ArchitectureReportV1" } } - } + }, + "description": "The architecture report data for the specified correlation ID and tenant ID." }, "400": { "$ref": "#/components/responses/400" From 78886157f1479db1355c8ae9a0547dcc474b50e2 Mon Sep 17 00:00:00 2001 From: Jesse H Date: Wed, 3 Dec 2025 08:28:00 -0600 Subject: [PATCH 33/45] Update required fields for correlation record schema Reduced the required fields in the 'Report - Correlation Record V1' schema to only 'auditTenantAccount'. Updated example objects to match the new schema requirements by removing other previously required fields. Jagdish helped :) --- specs/Data-Gateway.json | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 8d35c2b..8fb1c73 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -1014,14 +1014,7 @@ } }, "required": [ - "auditTenantAccount", - "correlationId", - "createdAt", - "isMigrating", - "reportTenantAccount", - "schemaVersion", - "tenantId", - "updatedAt" + "auditTenantAccount" ], "title": "Report - Correlation Record V1", "type": "object" @@ -3072,8 +3065,7 @@ } ], "correlation": { - "auditTenantAccount": "user@example.com", - "reportTenantAccount": "user@example.com" + "auditTenantAccount": "user@example.com" }, "principalData": { "user": { @@ -6181,14 +6173,7 @@ "summary": "Example of license report stored.", "value": { "correlation": { - "auditTenantAccount": "user@example.com", - "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, - "reportTenantAccount": "user@example.com", - "schemaVersion": 1, - "tenantId": "123e4567-e89b-12d3-a456-426614174000", - "updatedAt": "2023-11-19T10:05:00.000Z" + "auditTenantAccount": "user@example.com" }, "principalData": { "user": { From 15a6304fbb0ebf7acecb0c3b6121992a782364bf Mon Sep 17 00:00:00 2001 From: Jesse H Date: Thu, 4 Dec 2025 05:19:36 -0600 Subject: [PATCH 34/45] Update Architecture Report schema and endpoint docs Added 'schemaVersion' field to ArchitectureReportV1.TenantMetadata and updated its title. Revised several endpoint descriptions to refer to 'architecture report' instead of 'license report'. Standardized operationId path parameters to use colon notation for consistency. --- specs/Data-Gateway.json | 27 ++++++++++++++++++--------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 8fb1c73..a6c156d 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2244,6 +2244,14 @@ }, "tenantMetadata": { "$ref": "#/components/schemas/ArchitectureReportV1.TenantMetadata" + }, + "schemaVersion": { + "type": "integer", + "format": "int32", + "description": "Version number of the license report schema.", + "examples": [ + 1 + ] } }, "required": [ @@ -2390,7 +2398,8 @@ "totalGuestCount", "totalMemberCount", "totalUserCount" - ] + ], + "title": "Architecture Report V1 - Tenant Metadata" }, "ArchitectureReport.PrincipalData": { "description": "Contains user and device records included in the architecture report, detailing assigned services, licenses, consumed services, and related metadata for each principal.", @@ -6161,7 +6170,7 @@ }, "/Api/V1/ArchitectureReport": { "post": { - "description": "Submits an Architecture Report V1 payload to the Architecture Report endpoint.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, `ArchitectureReport.ReadWrite.All` scope (permission).", + "description": "Stores the results of an Architecture report.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, `ArchitectureReport.ReadWrite.All` scope (permission).", "operationId": "/Api/V1/ArchitectureReport/Post", "requestBody": { "required": true, @@ -6459,7 +6468,7 @@ "/Api/V1/ArchitectureReport/Correlation/Tenant/{tenantId}": { "get": { "description": "Retrieves the list of correlation records for the specified tenant. Can use filters targeting creation date to limit results. Correlation records store the metadata for a specific architecture report.\n\nThis endpoint requires the `ArchitectureReport.Read.All`, 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/Correlation/Tenant/{tenantId}/Get", + "operationId": "/Api/V1/ArchitectureReport/Correlation/Tenant/:tenantId/Get", "parameters": [ { "$ref": "#/components/parameters/tenantId" @@ -6553,8 +6562,8 @@ }, "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data": { "delete": { - "description": "Deletes the full license report v1 for the specified correlation ID.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", - "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data/Delete", + "description": "Deletes the full architecture report v1 for the specified correlation ID.\n\nThis endpoint requires the `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/V1/ArchitectureReport/Correlation/:correlationId/Data/Delete", "parameters": [ { "$ref": "#/components/parameters/correlationId" @@ -6577,8 +6586,8 @@ ] }, "get": { - "description": "Retrieves the full license report v1 for the specified correlation ID in the authenticated tenant. The license report v1 contains all of the license usage and compliance information with the required correlation data.\n\nThis endpoint requires the `ArchitectureReport.Read`, `ArchitectureReport.Read.All`, `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", - "operationId": "/Api/V1/ArchitectureReport/Correlation/{correlationId}/Data/Get", + "description": "Retrieves the full architecture report v1 for the specified correlation ID in the authenticated tenant. The architecture report v1 contains all of the tenant metadata and user/device data with the required correlation data.\n\nThis endpoint requires the `ArchitectureReport.Read`, `ArchitectureReport.Read.All`, `ArchitectureReport.ReadWrite`, or `ArchitectureReport.ReadWrite.All` scope (permission).", + "operationId": "/Api/V1/ArchitectureReport/Correlation/:correlationId/Data/Get", "parameters": [ { "$ref": "#/components/parameters/correlationId" @@ -6695,7 +6704,7 @@ "delete": { "summary": "Delete the specified Architecture Report V1 for specified tenant", "description": "Deletes the full architecture report v1 for the specified correlation ID and tenant.\n\nThis endpoint requires the `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/Correlation/{correlationId}/Tenant/{tenantId}/Data/Delete", + "operationId": "/Api/V1/ArchitectureReport/Correlation/:correlationId/Tenant/:tenantId/Data/Delete", "parameters": [ { "$ref": "#/components/parameters/correlationId", @@ -6724,7 +6733,7 @@ "get": { "summary": "Get Architecture Report v1 Data by Correlation ID and Tenant ID", "description": "Retrieves the architecture report data associated with the specified correlation ID and tenant ID.\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/Correlation/{correlationId}/Tenant/{tenantId}/Data/Get", + "operationId": "/Api/V1/ArchitectureReport/Correlation/:correlationId/Tenant/:tenantId/Data/Get", "parameters": [ { "$ref": "#/components/parameters/correlationId", From 8f8763a7742288f6db69aa8aace853f7085d906d Mon Sep 17 00:00:00 2001 From: Jesse H Date: Thu, 4 Dec 2025 07:09:16 -0600 Subject: [PATCH 35/45] Remove redundant CorrelationRecord schema references - Eliminated duplicate LicenseReportV0.CorrelationRecord and ArchitectureReportV1.CorrelationRecord schema definitions. - Updated all references to use the shared Report.CorrelationRecordV0 and Report.CorrelationRecordV1 schemas directly for consistency and maintainability. --- specs/Data-Gateway.json | 20 +++++--------------- 1 file changed, 5 insertions(+), 15 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index a6c156d..1b9f97e 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -437,11 +437,6 @@ "title": "Report - Feature Breakdown", "type": "object" }, - "LicenseReportV0.CorrelationRecord": { - "description": "Metadata that describes the execution session (run) that is used to tie/relate all of the license report together.", - "$ref": "#/components/schemas/Report.CorrelationRecordV0", - "title": "License Report - Correlation Record" - }, "LicenseReportV0.LicenseData": { "type": "object", "properties": { @@ -647,7 +642,7 @@ "type": "object" }, "correlation": { - "$ref": "#/components/schemas/LicenseReportV0.CorrelationRecord" + "$ref": "#/components/schemas/Report.CorrelationRecordV0" }, "licenseData": { "additionalProperties": { @@ -2237,7 +2232,7 @@ "type": "object", "properties": { "correlation": { - "$ref": "#/components/schemas/ArchitectureReportV1.CorrelationRecord" + "$ref": "#/components/schemas/Report.CorrelationRecordV1" }, "principalData": { "$ref": "#/components/schemas/ArchitectureReport.PrincipalData" @@ -2344,11 +2339,6 @@ ], "title": "Architecture Report V1 - Complete Object" }, - "ArchitectureReportV1.CorrelationRecord": { - "$ref": "#/components/schemas/Report.CorrelationRecordV1", - "description": "Metadata that describes the execution session (run) that is used to tie/relate architecture report versions together.", - "title": "Architecture Report V1 - CorrelationRecord" - }, "ArchitectureReportV1.TenantMetadata": { "description": "This is the the tenant data calculated for the architecture report", "examples": [ @@ -2677,7 +2667,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/LicenseReportV0.CorrelationRecord" + "$ref": "#/components/schemas/Report.CorrelationRecordV0" }, "examples": [ [ @@ -2764,7 +2754,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/LicenseReportV0.CorrelationRecord" + "$ref": "#/components/schemas/Report.CorrelationRecordV0" }, "examples": [ [ @@ -6444,7 +6434,7 @@ ] ], "items": { - "$ref": "#/components/schemas/ArchitectureReportV1.CorrelationRecord" + "$ref": "#/components/schemas/Report.CorrelationRecordV1" }, "minItems": 0, "type": "array" From 24d96e1856e53628e4781df4a5c1365540a9ea7f Mon Sep 17 00:00:00 2001 From: Jesse H Date: Thu, 4 Dec 2025 07:20:26 -0600 Subject: [PATCH 36/45] Add schemaVersion to required fields in spec Updated the Data-Gateway.json specification to include 'schemaVersion' as a required field alongside 'correlation', 'tenantMetadata', and 'principalData'. --- 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 1b9f97e..b76f6ee 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2252,7 +2252,8 @@ "required": [ "correlation", "tenantMetadata", - "principalData" + "principalData", + "schemaVersion" ], "examples": [ { From b7345489d0ef9227afd114c46e751f821432c797 Mon Sep 17 00:00:00 2001 From: Pasha Zayko Date: Tue, 9 Dec 2025 14:47:39 -0500 Subject: [PATCH 37/45] Adjust fields to match accurate response for correlation record Correct the output for the list of correlation records for license or architecture reports to include only usable and relevant fields --- specs/Data-Gateway.json | 40 ++++------------------------------------ 1 file changed, 4 insertions(+), 36 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index b76f6ee..f76256b 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -3290,9 +3290,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -3300,9 +3298,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "5888a922-9f5b-45fd-bd5f-de3283d6a79e", "createdAt": "2023-12-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" } @@ -3313,7 +3309,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/Report.CorrelationRecordV1" + "$ref": "#/components/schemas/Report.CorrelationRecordV0" }, "examples": [ [ @@ -3321,9 +3317,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "547404d4-8734-415f-a7ca-e9c1ffb95e48", "createdAt": "2023-12-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -3331,9 +3325,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "d76878d6-1495-4243-a334-a82bb9818cd0", "createdAt": "2023-12-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" } @@ -3394,9 +3386,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -3404,9 +3394,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "e0d101e8-6f1e-40a9-a66f-cad4112c9a59", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" } @@ -3417,7 +3405,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/Report.CorrelationRecordV1" + "$ref": "#/components/schemas/Report.CorrelationRecordV0" }, "examples": [ [ @@ -3425,9 +3413,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -3435,9 +3421,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "e0d101e8-6f1e-40a9-a66f-cad4112c9a59", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" } @@ -6390,9 +6374,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -6400,9 +6382,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "5888a922-9f5b-45fd-bd5f-de3283d6a79e", "createdAt": "2023-12-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" } @@ -6416,9 +6396,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -6426,16 +6404,14 @@ "auditTenantAccount": "user@example.com", "correlationId": "5888a922-9f5b-45fd-bd5f-de3283d6a79e", "createdAt": "2023-12-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" } ] ], "items": { - "$ref": "#/components/schemas/Report.CorrelationRecordV1" + "$ref": "#/components/schemas/Report.CorrelationRecordV0" }, "minItems": 0, "type": "array" @@ -6484,9 +6460,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -6494,9 +6468,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "e0d101e8-6f1e-40a9-a66f-cad4112c9a59", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" } @@ -6507,7 +6479,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/ArchitectureReportV1.CorrelationRecord" + "$ref": "#/components/schemas/Report.CorrelationRecordV0" }, "examples": [ [ @@ -6515,9 +6487,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "3d282045-ec7f-4813-88e2-29b74ee609f7", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -6525,9 +6495,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "e0d101e8-6f1e-40a9-a66f-cad4112c9a59", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" } From 4e54841cd84e236bf6a18090d7b41e8415ac1526 Mon Sep 17 00:00:00 2001 From: Pasha Zayko <91487789+pasha-zayko@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:23:04 -0500 Subject: [PATCH 38/45] Simplify Correlation Record definition (#84) Define single version of correlation record. Update references and examples to match the established data structure. --- specs/Data-Gateway.json | 127 ++++------------------------------------ 1 file changed, 10 insertions(+), 117 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index f76256b..d45c660 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -642,7 +642,7 @@ "type": "object" }, "correlation": { - "$ref": "#/components/schemas/Report.CorrelationRecordV0" + "$ref": "#/components/schemas/Report.CorrelationRecord" }, "licenseData": { "additionalProperties": { @@ -675,9 +675,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -831,7 +829,7 @@ ] }, "correlation": { - "$ref": "#/components/schemas/Report.CorrelationRecordV1" + "$ref": "#/components/schemas/Report.CorrelationRecord" }, "principalData": { "$ref": "#/components/schemas/Report.PrincipalData" @@ -853,7 +851,7 @@ ], "title": "License Report V1 - Complete Object" }, - "Report.CorrelationRecordV0": { + "Report.CorrelationRecord": { "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", "examples": [ { @@ -923,97 +921,6 @@ "title": "License Report - Correlation Record", "type": "object" }, - "Report.CorrelationRecordV1": { - "description": "Metadata that describes the execution session (run) that is used to tie/relate report versions together.", - "examples": [ - { - "auditTenantAccount": "user@example.com", - "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", - "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, - "reportTenantAccount": "user@example.com", - "schemaVersion": 1, - "tenantId": "123e4567-e89b-12d3-a456-426614174000", - "updatedAt": "2023-11-19T10:05:00.000Z" - } - ], - "properties": { - "auditTenantAccount": { - "description": "The user account used to retrieve the license information in the tenant being audited.", - "examples": [ - "user@example.com" - ], - "format": "email", - "type": "string" - }, - "correlationId": { - "description": "The ID of the execution session (run) that is used to tie/relate all of the data together.", - "examples": [ - "88da2253-758f-4135-9d37-64448c8b65c1" - ], - "format": "uuid", - "type": "string", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$" - }, - "createdAt": { - "description": "Timestamp of when the report was created.", - "examples": [ - "2024-08-01T21:12:22.148Z" - ], - "format": "date-time", - "type": "string" - }, - "isMigrating": { - "description": "Flag indicating whether the current license report is migrating. If true, data is currently migrating from one version to another.", - "examples": [ - true - ], - "type": "boolean" - }, - "reportTenantAccount": { - "description": "User account used to store/report the license report to the SHI Lab cloud service.", - "examples": [ - "user@example.com" - ], - "format": "email", - "type": "string" - }, - "schemaVersion": { - "description": "Specifies the version of the current license report.", - "examples": [ - 1 - ], - "format": "int32", - "type": "integer" - }, - "tenantId": { - "description": "Unique ID of customer's Microsoft tenant that the license report is for.", - "examples": [ - "0e1fe83f-a33f-4250-8546-225b8d45ae01" - ], - "format": "uuid", - "type": "string", - "maxLength": 36, - "minLength": 36, - "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$" - }, - "updatedAt": { - "description": "Timestamp of when the report was last updated.", - "examples": [ - "2024-08-01T21:12:22.148Z" - ], - "format": "date-time", - "type": "string" - } - }, - "required": [ - "auditTenantAccount" - ], - "title": "Report - Correlation Record V1", - "type": "object" - }, "Report.PrincipalData": { "description": "Contains user and device records included in the report, detailing assigned services, licenses, consumed services, and related metadata for each principal.", "type": "object", @@ -2232,7 +2139,7 @@ "type": "object", "properties": { "correlation": { - "$ref": "#/components/schemas/Report.CorrelationRecordV1" + "$ref": "#/components/schemas/Report.CorrelationRecord" }, "principalData": { "$ref": "#/components/schemas/ArchitectureReport.PrincipalData" @@ -2261,9 +2168,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -2668,7 +2573,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/Report.CorrelationRecordV0" + "$ref": "#/components/schemas/Report.CorrelationRecord" }, "examples": [ [ @@ -2755,7 +2660,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/Report.CorrelationRecordV0" + "$ref": "#/components/schemas/Report.CorrelationRecord" }, "examples": [ [ @@ -3167,9 +3072,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -3309,7 +3212,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/Report.CorrelationRecordV0" + "$ref": "#/components/schemas/Report.CorrelationRecord" }, "examples": [ [ @@ -3405,7 +3308,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/Report.CorrelationRecordV0" + "$ref": "#/components/schemas/Report.CorrelationRecord" }, "examples": [ [ @@ -3486,9 +3389,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -3652,9 +3553,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -6251,9 +6150,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -6411,7 +6308,7 @@ ] ], "items": { - "$ref": "#/components/schemas/Report.CorrelationRecordV0" + "$ref": "#/components/schemas/Report.CorrelationRecord" }, "minItems": 0, "type": "array" @@ -6479,7 +6376,7 @@ "type": "array", "minItems": 0, "items": { - "$ref": "#/components/schemas/Report.CorrelationRecordV0" + "$ref": "#/components/schemas/Report.CorrelationRecord" }, "examples": [ [ @@ -6563,9 +6460,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, @@ -6713,9 +6608,7 @@ "auditTenantAccount": "user@example.com", "correlationId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "createdAt": "2023-11-19T10:00:00.000Z", - "isMigrating": false, "reportTenantAccount": "user@example.com", - "schemaVersion": 1, "tenantId": "123e4567-e89b-12d3-a456-426614174000", "updatedAt": "2023-11-19T10:05:00.000Z" }, From f6d574d26b715f0b2b05b7e799023617990aac9b Mon Sep 17 00:00:00 2001 From: Pasha Zayko <91487789+pasha-zayko@users.noreply.github.com> Date: Fri, 12 Dec 2025 10:41:10 -0500 Subject: [PATCH 39/45] Fixing operationId values to match the route Signed-off-by: Pasha Zayko <91487789+pasha-zayko@users.noreply.github.com> --- specs/SHIELD.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index d076717..fb73622 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -4494,7 +4494,7 @@ "get": { "summary": "Checks the status of the break glass groups and required users existence.", "description": "Retrieves the status of required user quantity existence in the break glass group.\n\nThis endpoint requires the `Deploy.Read` scope (permission).", - "operationId": "/Api/Deploy/Remediate/BreakGlass/Get", + "operationId": "/Api/Deploy/BreakGlass/Get", "responses": { "200": { "content": { @@ -4529,7 +4529,7 @@ "post": { "summary": "Request to create BreakGlass security group", "description": "Attempt to create BreakGlass security group in the tenant. If group has already been provisioned it will return the name of the group to reference.\n\nThis endpoint requires the `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission). ", - "operationId": "/Api/Deploy/Remediate/BreakGlass/Post", + "operationId": "/Api/Deploy/BreakGlass/Post", "responses": { "200": { "content": { From 98555b43a69a02ca1843b0ed06be7b6aa15e6b29 Mon Sep 17 00:00:00 2001 From: Jesse H <19983870+dontPushTheButton@users.noreply.github.com> Date: Fri, 12 Dec 2025 11:06:03 -0600 Subject: [PATCH 40/45] LAB-1185 Add manualCreateGuideList to SHIELD spec (#85) Introduces a new 'manualCreateGuideList' property to the SHIELD.json schema, including its definition, requirements, and example usage. This property provides a collection of strings to guide manual implementation for configuration items. --- specs/SHIELD.json | 61 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 60 insertions(+), 1 deletion(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index fb73622..11b1da9 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -1650,6 +1650,36 @@ "https://learn.microsoft.com/en-us/azure/active-directory/authentication/tutorial-enable-azure-mfa" ] ] + }, + "manualCreateGuideList": { + "type": "array", + "description": "Collection of strings that make up a manual implementation guide for the associated configuration item.", + "minItems": 0, + "items": { + "type": "string", + "examples": [ + "• First level", + " • Second level", + " • Third level", + "[Go to this link](https://google.com/)" + ] + }, + "examples": [ + [ + "• Name: \"PSM - Token Binding\"", + "• Users", + " • What does this policy apply to: Users and groups", + " • Include", + " • Select: Select users and groups", + " • Select: Users and groups", + " • Select: Users and groups to include", + "• Exclude", + " • Select: Select users and groups", + " • Select: Users and groups", + " • Select: Windows", + "[Go to this link](https://google.com/)" + ] + ] } }, "required": [ @@ -1664,7 +1694,8 @@ "compliancePositionList", "compliancePositionStandardList", "disclaimerList", - "baseLink" + "baseLink", + "manualCreateGuideList" ], "examples": [ { @@ -1702,6 +1733,20 @@ "learnLinkList": [ "https://learn.microsoft.com/en-us/azure/active-directory/authentication/concept-mfa-howitworks", "https://learn.microsoft.com/en-us/azure/active-directory/authentication/tutorial-enable-azure-mfa" + ], + "manualCreateGuideList": [ + "• Name: \"PSM - Token Binding\"", + "• Users", + " • What does this policy apply to: Users and groups", + " • Include", + " • Select: Select users and groups", + " • Select: Users and groups", + " • Select: Users and groups to include", + "• Exclude", + " • Select: Select users and groups", + " • Select: Users and groups", + " • Select: Windows", + "[Go to this link](https://google.com/)" ] } ] @@ -4748,6 +4793,20 @@ "learnLinkList": [ "https://learn.microsoft.com/en-us/azure/active-directory/authentication/concept-mfa-howitworks", "https://learn.microsoft.com/en-us/azure/active-directory/authentication/tutorial-enable-azure-mfa" + ], + "manualCreateGuideList": [ + "• Name: \"PSM - Token Binding\"", + "• Users", + " • What does this policy apply to: Users and groups", + " • Include", + " • Select: Select users and groups", + " • Select: Users and groups", + " • Select: Users and groups to include", + "• Exclude", + " • Select: Select users and groups", + " • Select: Users and groups", + " • Select: Windows", + "[Go to this link](https://google.com/)" ] } }, From dfc4dd20e3b8243cd033ded50388cbc6e75d8ab1 Mon Sep 17 00:00:00 2001 From: Pasha Zayko Date: Mon, 15 Dec 2025 12:20:09 -0500 Subject: [PATCH 41/45] Updating versions of the packages Reflecting the significant enhancements and changes in the packages by incrementing to the next minor version --- specs/Data-Gateway.json | 2 +- specs/SHIELD.json | 2 +- src/dataGateway/TypeScript/package-lock.json | 5 +- src/dataGateway/TypeScript/package.json | 2 +- src/shield/TypeScript/package-lock.json | 317 ++++++++++++++++++- src/shield/TypeScript/package.json | 2 +- 6 files changed, 322 insertions(+), 8 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index d45c660..4992866 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -2323,7 +2323,7 @@ }, "description": "Collects data from the various SHI Lab products and makes it available in a standardized way.", "title": "SHI Data Gateway", - "version": "2.3.1" + "version": "2.4.0" }, "openapi": "3.1.1", "paths": { diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 11b1da9..4bb4851 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -3348,7 +3348,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.0.9" + "version": "3.1.0" }, "openapi": "3.1.1", "paths": { diff --git a/src/dataGateway/TypeScript/package-lock.json b/src/dataGateway/TypeScript/package-lock.json index 1376746..d0b76d4 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": "2.3.1", + "version": "2.4.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@shi-corp/sdk-data-gateway", - "version": "2.3.1", + "version": "2.4.0", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.99", @@ -2805,6 +2805,7 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", + "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", diff --git a/src/dataGateway/TypeScript/package.json b/src/dataGateway/TypeScript/package.json index 0a8378c..e4a70e7 100644 --- a/src/dataGateway/TypeScript/package.json +++ b/src/dataGateway/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@shi-corp/sdk-data-gateway", - "version": "2.3.1", + "version": "2.4.0", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHI Data Gateway service.", diff --git a/src/shield/TypeScript/package-lock.json b/src/shield/TypeScript/package-lock.json index b7b6c27..6167edb 100644 --- a/src/shield/TypeScript/package-lock.json +++ b/src/shield/TypeScript/package-lock.json @@ -1,12 +1,12 @@ { "name": "@shi-corp/sdk-shield", - "version": "3.0.11", + "version": "3.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@shi-corp/sdk-shield", - "version": "3.0.11", + "version": "3.1.0", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.99", @@ -280,6 +280,40 @@ "node": ">=6.9.0" } }, + "node_modules/@emnapi/core": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.7.1.tgz", + "integrity": "sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.1.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.7.1.tgz", + "integrity": "sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz", + "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@es-joy/jsdoccomment": { "version": "0.76.0", "dev": true, @@ -603,6 +637,19 @@ "tslib": "^2.6.2" } }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.12", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz", + "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.10.0" + } + }, "node_modules/@next/eslint-plugin-next": { "version": "16.0.0", "dev": true, @@ -725,6 +772,17 @@ "eslint": ">=9.0.0" } }, + "node_modules/@tybys/wasm-util": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz", + "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, "node_modules/@types/estree": { "version": "1.0.8", "dev": true, @@ -1022,6 +1080,261 @@ "node": ">=20.0.0" } }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz", + "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz", + "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz", + "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz", + "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz", + "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz", + "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz", + "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz", + "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz", + "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz", + "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz", + "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz", + "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz", + "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz", + "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz", + "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz", + "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz", + "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz", + "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@unrs/resolver-binding-win32-x64-msvc": { "version": "1.11.1", "cpu": [ diff --git a/src/shield/TypeScript/package.json b/src/shield/TypeScript/package.json index 88e3b5e..d821563 100644 --- a/src/shield/TypeScript/package.json +++ b/src/shield/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@shi-corp/sdk-shield", - "version": "3.0.11", + "version": "3.1.0", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHIELD application.", From f829d03ac7a632bf5fd846664d85a46437163755 Mon Sep 17 00:00:00 2001 From: Pasha Zayko Date: Mon, 15 Dec 2025 12:25:22 -0500 Subject: [PATCH 42/45] Updated lock file Regenerated lock file to ensure correct values are in place --- src/shield/TypeScript/package-lock.json | 1292 ++++++++++++++++++++--- 1 file changed, 1116 insertions(+), 176 deletions(-) diff --git a/src/shield/TypeScript/package-lock.json b/src/shield/TypeScript/package-lock.json index 6167edb..f3f5927 100644 --- a/src/shield/TypeScript/package-lock.json +++ b/src/shield/TypeScript/package-lock.json @@ -23,6 +23,8 @@ }, "node_modules/@azure/abort-controller": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", "license": "MIT", "dependencies": { "tslib": "^2.6.2" @@ -33,6 +35,8 @@ }, "node_modules/@azure/core-auth": { "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", + "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.1.2", @@ -45,6 +49,8 @@ }, "node_modules/@azure/core-util": { "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", + "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", "license": "MIT", "dependencies": { "@azure/abort-controller": "^2.1.2", @@ -57,6 +63,8 @@ }, "node_modules/@babel/code-frame": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, "license": "MIT", "dependencies": { @@ -70,6 +78,8 @@ }, "node_modules/@babel/compat-data": { "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.5.tgz", + "integrity": "sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==", "dev": true, "license": "MIT", "engines": { @@ -78,6 +88,8 @@ }, "node_modules/@babel/core": { "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.5.tgz", + "integrity": "sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==", "dev": true, "license": "MIT", "peer": true, @@ -106,16 +118,10 @@ "url": "https://opencollective.com/babel" } }, - "node_modules/@babel/core/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/generator": { "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.5.tgz", + "integrity": "sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -131,6 +137,8 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, "license": "MIT", "dependencies": { @@ -144,16 +152,10 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-compilation-targets/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/@babel/helper-globals": { "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", "dev": true, "license": "MIT", "engines": { @@ -162,6 +164,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, "license": "MIT", "dependencies": { @@ -174,6 +178,8 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.28.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.3.tgz", + "integrity": "sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==", "dev": true, "license": "MIT", "dependencies": { @@ -190,6 +196,8 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "dev": true, "license": "MIT", "engines": { @@ -198,6 +206,8 @@ }, "node_modules/@babel/helper-validator-identifier": { "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", + "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", "dev": true, "license": "MIT", "engines": { @@ -206,6 +216,8 @@ }, "node_modules/@babel/helper-validator-option": { "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { @@ -214,6 +226,8 @@ }, "node_modules/@babel/helpers": { "version": "7.28.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.4.tgz", + "integrity": "sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==", "dev": true, "license": "MIT", "dependencies": { @@ -226,6 +240,8 @@ }, "node_modules/@babel/parser": { "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.5.tgz", + "integrity": "sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -240,6 +256,8 @@ }, "node_modules/@babel/template": { "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, "license": "MIT", "dependencies": { @@ -253,6 +271,8 @@ }, "node_modules/@babel/traverse": { "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.5.tgz", + "integrity": "sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==", "dev": true, "license": "MIT", "dependencies": { @@ -270,6 +290,8 @@ }, "node_modules/@babel/types": { "version": "7.28.5", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.5.tgz", + "integrity": "sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==", "dev": true, "license": "MIT", "dependencies": { @@ -316,6 +338,8 @@ }, "node_modules/@es-joy/jsdoccomment": { "version": "0.76.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.76.0.tgz", + "integrity": "sha512-g+RihtzFgGTx2WYCuTHbdOXJeAlGnROws0TeALx9ow/ZmOROOZkVg5wp/B44n0WJgI4SQFP1eWM2iRPlU2Y14w==", "dev": true, "license": "MIT", "dependencies": { @@ -330,7 +354,9 @@ } }, "node_modules/@es-joy/resolve.exports": { - "version": "1.0.0", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@es-joy/resolve.exports/-/resolve.exports-1.2.0.tgz", + "integrity": "sha512-Q9hjxWI5xBM+qW2enxfe8wDKdFWMfd0Z29k5ZJnuBqD/CasY5Zryj09aCA6owbGATWz+39p5uIdaHXpopOcG8g==", "dev": true, "license": "MIT", "engines": { @@ -339,6 +365,8 @@ }, "node_modules/@eslint-community/eslint-utils": { "version": "4.9.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.0.tgz", + "integrity": "sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==", "dev": true, "license": "MIT", "dependencies": { @@ -356,6 +384,8 @@ }, "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "license": "Apache-2.0", "engines": { @@ -367,6 +397,8 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -375,6 +407,8 @@ }, "node_modules/@eslint/config-array": { "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -387,11 +421,26 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.4.1", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0" + "@eslint/core": "^0.17.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-helpers/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -399,6 +448,8 @@ }, "node_modules/@eslint/core": { "version": "0.16.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.16.0.tgz", + "integrity": "sha512-nmC8/totwobIiFcGkDza3GIKfAw1+hLiYVrh3I1nIomQ8PEr5cxg34jnkmGawul/ep52wGRAcyeDCNtWKSOj4Q==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -409,7 +460,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.1", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -419,7 +472,7 @@ "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, @@ -432,6 +485,8 @@ }, "node_modules/@eslint/js": { "version": "9.38.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.38.0.tgz", + "integrity": "sha512-UZ1VpFvXf9J06YG9xQBdnzU+kthors6KjhMAl6f4gH4usHyh31rUf2DLGInT8RFYIReYXNSydgPY0V2LuWgl7A==", "dev": true, "license": "MIT", "engines": { @@ -443,6 +498,8 @@ }, "node_modules/@eslint/object-schema": { "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -450,19 +507,36 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.4.0", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.16.0", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@humanfs/core": { "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -471,6 +545,8 @@ }, "node_modules/@humanfs/node": { "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -483,6 +559,8 @@ }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -495,6 +573,8 @@ }, "node_modules/@humanwhocodes/retry": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -506,10 +586,12 @@ } }, "node_modules/@inquirer/external-editor": { - "version": "1.0.2", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", + "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", "license": "MIT", "dependencies": { - "chardet": "^2.1.0", + "chardet": "^2.1.1", "iconv-lite": "^0.7.0" }, "engines": { @@ -526,6 +608,8 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { @@ -535,6 +619,8 @@ }, "node_modules/@jridgewell/remapping": { "version": "2.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", + "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", "dev": true, "license": "MIT", "dependencies": { @@ -544,6 +630,8 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", "dev": true, "license": "MIT", "engines": { @@ -552,11 +640,15 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { @@ -566,6 +658,8 @@ }, "node_modules/@microsoft/kiota-abstractions": { "version": "1.0.0-preview.99", + "resolved": "https://registry.npmjs.org/@microsoft/kiota-abstractions/-/kiota-abstractions-1.0.0-preview.99.tgz", + "integrity": "sha512-6qrlwGCO3DbvpA7tszqk7JNQPFPDg8gv5NGMTziwdtHqaQrUALKusm3vdJGPVGrbNiZL6/lBaY5NSUvLtlhRCg==", "license": "MIT", "dependencies": { "@opentelemetry/api": "^1.7.0", @@ -576,6 +670,8 @@ }, "node_modules/@microsoft/kiota-authentication-azure": { "version": "1.0.0-preview.99", + "resolved": "https://registry.npmjs.org/@microsoft/kiota-authentication-azure/-/kiota-authentication-azure-1.0.0-preview.99.tgz", + "integrity": "sha512-gPmk/vx15sBMfjfLPgqPanmyVR/rA5HGd3318VtPS28mXxH07Zn30R6PVqSemhIwSxfiGnPiq0SlTj28BQhTKQ==", "license": "MIT", "dependencies": { "@azure/core-auth": "^1.5.0", @@ -586,6 +682,8 @@ }, "node_modules/@microsoft/kiota-bundle": { "version": "1.0.0-preview.99", + "resolved": "https://registry.npmjs.org/@microsoft/kiota-bundle/-/kiota-bundle-1.0.0-preview.99.tgz", + "integrity": "sha512-AxvO+z6UgWMAT2NfXN36CMhAUm/39tUQt8o32axeEJDS/EvZINDAPstbQV+zK7bJRC8kCqUHhCE/fuHX2dXA+g==", "license": "MIT", "dependencies": { "@microsoft/kiota-abstractions": "^1.0.0-preview.99", @@ -598,6 +696,8 @@ }, "node_modules/@microsoft/kiota-http-fetchlibrary": { "version": "1.0.0-preview.99", + "resolved": "https://registry.npmjs.org/@microsoft/kiota-http-fetchlibrary/-/kiota-http-fetchlibrary-1.0.0-preview.99.tgz", + "integrity": "sha512-lIruiYf8L7DPG0Fm92QN5YK4zx4sh76EtTONUAqBCxt5AtEJ7KQceBajaXQsjfcndUAp9LmDVdqR44o8sc9/mA==", "license": "MIT", "dependencies": { "@microsoft/kiota-abstractions": "^1.0.0-preview.99", @@ -607,6 +707,8 @@ }, "node_modules/@microsoft/kiota-serialization-form": { "version": "1.0.0-preview.99", + "resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-form/-/kiota-serialization-form-1.0.0-preview.99.tgz", + "integrity": "sha512-BdXxqNfy+5yWTyxpBguqJYy6E9RRotrDClRcUO89okFcR5N6s6xenjsvGw++q9KWNi7qcHrqaG8xlRz1TLk81Q==", "license": "MIT", "dependencies": { "@microsoft/kiota-abstractions": "^1.0.0-preview.99", @@ -615,6 +717,8 @@ }, "node_modules/@microsoft/kiota-serialization-json": { "version": "1.0.0-preview.99", + "resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-json/-/kiota-serialization-json-1.0.0-preview.99.tgz", + "integrity": "sha512-kDmMYmB7XkRprlLviEynRPDkE45JDxqiuUopfBRMvNK4qhzFiJTXGLihZ2FG6fdVu9LbV3/W0QxbeGP35kDK6A==", "license": "MIT", "dependencies": { "@microsoft/kiota-abstractions": "^1.0.0-preview.99", @@ -623,6 +727,8 @@ }, "node_modules/@microsoft/kiota-serialization-multipart": { "version": "1.0.0-preview.99", + "resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-multipart/-/kiota-serialization-multipart-1.0.0-preview.99.tgz", + "integrity": "sha512-cfviCAVTlZPD+MUgdTIgsX/IfHND+gKQhem3vJeo7l5Qqz2rvvVFXOHwECI19umO9Un1QFKe1V5wg+M+aj90+g==", "license": "MIT", "dependencies": { "@microsoft/kiota-abstractions": "^1.0.0-preview.99", @@ -631,6 +737,8 @@ }, "node_modules/@microsoft/kiota-serialization-text": { "version": "1.0.0-preview.99", + "resolved": "https://registry.npmjs.org/@microsoft/kiota-serialization-text/-/kiota-serialization-text-1.0.0-preview.99.tgz", + "integrity": "sha512-gcBffQRI1soHVAiS4YjfMr3SQ9fC8xVUGMfarTTszU4PjpxyFOknaWoFdt/0rvMeavI9jOtbyvDKAf77cZyYIQ==", "license": "MIT", "dependencies": { "@microsoft/kiota-abstractions": "^1.0.0-preview.99", @@ -651,7 +759,9 @@ } }, "node_modules/@next/eslint-plugin-next": { - "version": "16.0.0", + "version": "16.0.10", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-16.0.10.tgz", + "integrity": "sha512-b2NlWN70bbPLmfyoLvvidPKWENBYYIe017ZGUpElvQjDytCWgxPJx7L9juxHt0xHvNVA08ZHJdOyhGzon/KJuw==", "dev": true, "license": "MIT", "dependencies": { @@ -660,6 +770,8 @@ }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "license": "MIT", "dependencies": { @@ -672,6 +784,8 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, "license": "MIT", "engines": { @@ -680,6 +794,8 @@ }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "license": "MIT", "dependencies": { @@ -692,6 +808,8 @@ }, "node_modules/@nolyfill/is-core-module": { "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", "dev": true, "license": "MIT", "engines": { @@ -700,6 +818,8 @@ }, "node_modules/@opentelemetry/api": { "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", "license": "Apache-2.0", "engines": { "node": ">=8.0.0" @@ -707,17 +827,21 @@ }, "node_modules/@rtsao/scc": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", "dev": true, "license": "MIT" }, "node_modules/@samchon/openapi": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@samchon/openapi/-/openapi-5.0.1.tgz", - "integrity": "sha512-u5UYYBLDeCOFKaTm2hE4tRuxR1reNy/PrEZSQyBPUC+/O+IRa6jSHkiXMgtPVSxJK1s9fyhuJhfw+z5OT3myoQ==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@samchon/openapi/-/openapi-5.1.0.tgz", + "integrity": "sha512-PudEhIB/YO+NJPv712+6U7H5qVGJ314QfOnabRxLWoR/A3Hw/wHuHq1Yeb1sdi1Xlx3dUWvGTKXuzE2qEfWR0w==", "license": "MIT" }, "node_modules/@shi-corp/development-utilities": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@shi-corp/development-utilities/-/development-utilities-2.1.0.tgz", + "integrity": "sha512-y4tLpVUkxNllfssEUGhI4H8wu1OTd6mN9s3jdkYrZmtF4WL+gfeG6GslpHisTRkTBscgmyHHUYliN6Busx5aAQ==", "dev": true, "license": "MIT", "dependencies": { @@ -736,6 +860,8 @@ }, "node_modules/@sindresorhus/base62": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/base62/-/base62-1.0.0.tgz", + "integrity": "sha512-TeheYy0ILzBEI/CO55CP6zJCSdSWeRtGnHy8U8dWSUH4I68iqTsy7HkMktR4xakThc9jotkPQUXT4ITdbV7cHA==", "dev": true, "license": "MIT", "engines": { @@ -747,14 +873,20 @@ }, "node_modules/@standard-schema/spec": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==", "license": "MIT" }, "node_modules/@std-uritemplate/std-uritemplate": { "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@std-uritemplate/std-uritemplate/-/std-uritemplate-2.0.8.tgz", + "integrity": "sha512-8oj7jKksoTRxjdPkWKX9FyOKDS8ORBm+ZfTSHm0f3eYha8cI0O1d57gyduOIAX7Y2uUukNDNlxlvGb+FFkE7yQ==", "license": "Apache-2.0" }, "node_modules/@stylistic/eslint-plugin": { "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.5.0.tgz", + "integrity": "sha512-IeZF+8H0ns6prg4VrkhgL+yrvDXWDH2cKchrbh80ejG9dQgZWp10epHMbgRuQvgchLII/lfh6Xn3lu6+6L86Hw==", "dev": true, "license": "MIT", "dependencies": { @@ -785,23 +917,29 @@ }, "node_modules/@types/estree": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, "node_modules/@types/json-schema": { "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", "dev": true, "license": "MIT" }, "node_modules/@types/json5": { "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true, "license": "MIT" }, "node_modules/@types/node": { - "version": "24.10.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.1.tgz", - "integrity": "sha512-GNWcUTRBgIRJD5zj+Tq0fKOJ5XZajIiBroOF0yvj2bSU1WvNdYS/dn9UxwsujGW4JX06dnHyjV2y9rRaybH0iQ==", + "version": "24.10.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.10.4.tgz", + "integrity": "sha512-vnDVpYPMzs4wunl27jHrfmwojOGKya0xyM3sH+UE5iv5uPS6vX7UIoh6m+vQc5LGBq52HBKPIn/zcSZVzeDEZg==", "devOptional": true, "license": "MIT", "peer": true, @@ -810,15 +948,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.46.2", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.46.4.tgz", + "integrity": "sha512-R48VhmTJqplNyDxCyqqVkFSZIx1qX6PzwqgcXn1olLrzxcSBDlOsbtcnQuQhNtnNiJ4Xe5gREI1foajYaYU2Vg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/type-utils": "8.46.2", - "@typescript-eslint/utils": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", + "@typescript-eslint/scope-manager": "8.46.4", + "@typescript-eslint/type-utils": "8.46.4", + "@typescript-eslint/utils": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4", "graphemer": "^1.4.0", "ignore": "^7.0.0", "natural-compare": "^1.4.0", @@ -832,13 +972,15 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.46.2", + "@typescript-eslint/parser": "^8.46.4", "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", "engines": { @@ -846,15 +988,16 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.46.2", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.46.4.tgz", + "integrity": "sha512-tK3GPFWbirvNgsNKto+UmB/cRtn6TZfyw0D6IKrW55n6Vbs7KJoZtI//kpTKzE/DUmmnAFD8/Ca46s7Obs92/w==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", + "@typescript-eslint/scope-manager": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4", "debug": "^4.3.4" }, "engines": { @@ -869,13 +1012,29 @@ "typescript": ">=4.8.4 <6.0.0" } }, + "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", + "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/project-service": { - "version": "8.46.2", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.46.4.tgz", + "integrity": "sha512-nPiRSKuvtTN+no/2N1kt2tUh/HoFzeEgOm9fQ6XQk4/ApGqjx0zFIIaLJ6wooR1HIoozvj2j6vTi/1fgAz7UYQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.46.2", - "@typescript-eslint/types": "^8.46.2", + "@typescript-eslint/tsconfig-utils": "^8.46.4", + "@typescript-eslint/types": "^8.46.4", "debug": "^4.3.4" }, "engines": { @@ -890,13 +1049,29 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.46.2", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.46.4.tgz", + "integrity": "sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2" + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/scope-manager/node_modules/@typescript-eslint/types": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", + "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, @@ -906,7 +1081,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.46.2", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.46.4.tgz", + "integrity": "sha512-+/XqaZPIAk6Cjg7NWgSGe27X4zMGqrFqZ8atJsX3CWxH/jACqWnrWI68h7nHQld0y+k9eTTjb9r+KU4twLoo9A==", "dev": true, "license": "MIT", "engines": { @@ -921,13 +1098,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.46.2", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.46.4.tgz", + "integrity": "sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2", - "@typescript-eslint/utils": "8.46.2", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4", + "@typescript-eslint/utils": "8.46.4", "debug": "^4.3.4", "ts-api-utils": "^2.1.0" }, @@ -943,8 +1122,24 @@ "typescript": ">=4.8.4 <6.0.0" } }, + "node_modules/@typescript-eslint/type-utils/node_modules/@typescript-eslint/types": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", + "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/types": { - "version": "8.46.2", + "version": "8.50.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.50.0.tgz", + "integrity": "sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==", "dev": true, "license": "MIT", "engines": { @@ -956,14 +1151,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.46.2", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.46.4.tgz", + "integrity": "sha512-7oV2qEOr1d4NWNmpXLR35LvCfOkTNymY9oyW+lUHkmCno7aOmIf/hMaydnJBUTBMRCOGZh8YjkFOc8dadEoNGA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.46.2", - "@typescript-eslint/tsconfig-utils": "8.46.2", - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/visitor-keys": "8.46.2", + "@typescript-eslint/project-service": "8.46.4", + "@typescript-eslint/tsconfig-utils": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/visitor-keys": "8.46.4", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", @@ -982,8 +1179,24 @@ "typescript": ">=4.8.4 <6.0.0" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/@typescript-eslint/types": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", + "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -992,6 +1205,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/fast-glob": { "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, "license": "MIT", "dependencies": { @@ -1007,6 +1222,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", "dependencies": { @@ -1018,6 +1235,8 @@ }, "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", "dev": true, "license": "ISC", "dependencies": { @@ -1030,15 +1249,30 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@typescript-eslint/utils": { - "version": "8.46.2", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.46.4.tgz", + "integrity": "sha512-AbSv11fklGXV6T28dp2Me04Uw90R2iJ30g2bgLz529Koehrmkbs1r7paFqr1vPCZi7hHwYxYtxfyQMRC8QaVSg==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.46.2", - "@typescript-eslint/types": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2" + "@typescript-eslint/scope-manager": "8.46.4", + "@typescript-eslint/types": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1052,12 +1286,28 @@ "typescript": ">=4.8.4 <6.0.0" } }, + "node_modules/@typescript-eslint/utils/node_modules/@typescript-eslint/types": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", + "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.46.2", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.46.4.tgz", + "integrity": "sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.46.2", + "@typescript-eslint/types": "8.46.4", "eslint-visitor-keys": "^4.2.1" }, "engines": { @@ -1068,8 +1318,24 @@ "url": "https://opencollective.com/typescript-eslint" } }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/@typescript-eslint/types": { + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.46.4.tgz", + "integrity": "sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.1", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.2.tgz", + "integrity": "sha512-IlqQ/Gv22xUC1r/WQm4StLkYQmaaTsXAhUVsNE0+xiyf0yRFiH5++q78U3bw6bLKDCTmh0uqKB9eG9+Bt75Dkg==", "license": "MIT", "dependencies": { "http-proxy-agent": "^7.0.0", @@ -1337,6 +1603,8 @@ }, "node_modules/@unrs/resolver-binding-win32-x64-msvc": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz", + "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==", "cpu": [ "x64" ], @@ -1349,6 +1617,8 @@ }, "node_modules/acorn": { "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "peer": true, @@ -1361,6 +1631,8 @@ }, "node_modules/acorn-jsx": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", "dev": true, "license": "MIT", "peerDependencies": { @@ -1369,6 +1641,8 @@ }, "node_modules/agent-base": { "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", "license": "MIT", "engines": { "node": ">= 14" @@ -1376,6 +1650,8 @@ }, "node_modules/ajv": { "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, "license": "MIT", "dependencies": { @@ -1391,6 +1667,8 @@ }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "license": "MIT", "dependencies": { "type-fest": "^0.21.3" @@ -1404,6 +1682,8 @@ }, "node_modules/ansi-regex": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { "node": ">=8" @@ -1411,6 +1691,8 @@ }, "node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -1424,6 +1706,8 @@ }, "node_modules/are-docs-informative": { "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", "dev": true, "license": "MIT", "engines": { @@ -1432,11 +1716,15 @@ }, "node_modules/argparse": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, "node_modules/aria-query": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1445,6 +1733,8 @@ }, "node_modules/array-buffer-byte-length": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", "dev": true, "license": "MIT", "dependencies": { @@ -1460,6 +1750,8 @@ }, "node_modules/array-includes": { "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1481,10 +1773,14 @@ }, "node_modules/array-timsort": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-timsort/-/array-timsort-1.0.3.tgz", + "integrity": "sha512-/+3GRL7dDAGEfM6TseQk/U+mi18TU2Ms9I3UlLdUMhz2hbvGNTKdj9xniwXfUqgYhHxRx0+8UnKkvlNwVU+cWQ==", "license": "MIT" }, "node_modules/array.prototype.findlast": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1504,6 +1800,8 @@ }, "node_modules/array.prototype.findlastindex": { "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1524,6 +1822,8 @@ }, "node_modules/array.prototype.flat": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "license": "MIT", "dependencies": { @@ -1541,6 +1841,8 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", "dev": true, "license": "MIT", "dependencies": { @@ -1558,6 +1860,8 @@ }, "node_modules/array.prototype.tosorted": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", "dev": true, "license": "MIT", "dependencies": { @@ -1573,6 +1877,8 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1593,11 +1899,15 @@ }, "node_modules/ast-types-flow": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", "dev": true, "license": "MIT" }, "node_modules/async-function": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", "dev": true, "license": "MIT", "engines": { @@ -1606,6 +1916,8 @@ }, "node_modules/available-typed-arrays": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1620,6 +1932,8 @@ }, "node_modules/axe-core": { "version": "4.11.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.11.0.tgz", + "integrity": "sha512-ilYanEU8vxxBexpJd8cWM4ElSQq4QctCLKih0TSfjIfCQTeyH/6zVrmIJfLPrKTKJRbiG+cfnZbQIjAlJmF1jQ==", "dev": true, "license": "MPL-2.0", "engines": { @@ -1628,6 +1942,8 @@ }, "node_modules/axobject-query": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1636,11 +1952,15 @@ }, "node_modules/balanced-match": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "dev": true, "license": "MIT" }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -1658,7 +1978,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.8.20", + "version": "2.9.7", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.9.7.tgz", + "integrity": "sha512-k9xFKplee6KIio3IDbwj+uaCLpqzOwakOgmqzPezM0sFJlFKcg30vk2wOiAJtkTSfx0SSQDSe8q+mWA/fSH5Zg==", "dev": true, "license": "Apache-2.0", "bin": { @@ -1667,6 +1989,8 @@ }, "node_modules/bl": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "license": "MIT", "dependencies": { "buffer": "^5.5.0", @@ -1676,6 +2000,8 @@ }, "node_modules/brace-expansion": { "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", "dev": true, "license": "MIT", "dependencies": { @@ -1685,6 +2011,8 @@ }, "node_modules/braces": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dev": true, "license": "MIT", "dependencies": { @@ -1695,7 +2023,9 @@ } }, "node_modules/browserslist": { - "version": "4.27.0", + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz", + "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==", "dev": true, "funding": [ { @@ -1714,11 +2044,11 @@ "license": "MIT", "peer": true, "dependencies": { - "baseline-browser-mapping": "^2.8.19", - "caniuse-lite": "^1.0.30001751", - "electron-to-chromium": "^1.5.238", - "node-releases": "^2.0.26", - "update-browserslist-db": "^1.1.4" + "baseline-browser-mapping": "^2.9.0", + "caniuse-lite": "^1.0.30001759", + "electron-to-chromium": "^1.5.263", + "node-releases": "^2.0.27", + "update-browserslist-db": "^1.2.0" }, "bin": { "browserslist": "cli.js" @@ -1729,6 +2059,8 @@ }, "node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -1751,6 +2083,8 @@ }, "node_modules/call-bind": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", "dev": true, "license": "MIT", "dependencies": { @@ -1768,6 +2102,8 @@ }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1780,6 +2116,8 @@ }, "node_modules/call-bound": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", "dev": true, "license": "MIT", "dependencies": { @@ -1795,6 +2133,8 @@ }, "node_modules/callsites": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "license": "MIT", "engines": { @@ -1802,7 +2142,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001751", + "version": "1.0.30001760", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001760.tgz", + "integrity": "sha512-7AAMPcueWELt1p3mi13HR/LHH0TJLT11cnwDJEs3xA4+CK/PLKeO9Kl1oru24htkyUKtkGCvAx4ohB0Ttry8Dw==", "dev": true, "funding": [ { @@ -1822,6 +2164,8 @@ }, "node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", @@ -1835,11 +2179,15 @@ } }, "node_modules/chardet": { - "version": "2.1.0", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", + "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", "license": "MIT" }, "node_modules/cli-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "license": "MIT", "dependencies": { "restore-cursor": "^3.1.0" @@ -1850,6 +2198,8 @@ }, "node_modules/cli-spinners": { "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "license": "MIT", "engines": { "node": ">=6" @@ -1860,6 +2210,8 @@ }, "node_modules/cli-width": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", "license": "ISC", "engines": { "node": ">= 10" @@ -1867,6 +2219,8 @@ }, "node_modules/clone": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "license": "MIT", "engines": { "node": ">=0.8" @@ -1874,6 +2228,8 @@ }, "node_modules/color-convert": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -1884,17 +2240,23 @@ }, "node_modules/color-name": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "license": "MIT" }, "node_modules/commander": { "version": "10.0.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", + "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", "license": "MIT", "engines": { "node": ">=14" } }, "node_modules/comment-json": { - "version": "4.4.1", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/comment-json/-/comment-json-4.5.0.tgz", + "integrity": "sha512-aKl8CwoMKxVTfAK4dFN4v54AEvuUh9pzmgVIBeK6gBomLwMgceQUKKWHzJdW1u1VQXQuwnJ7nJGWYYMTl5U4yg==", "license": "MIT", "dependencies": { "array-timsort": "^1.0.3", @@ -1907,6 +2269,8 @@ }, "node_modules/comment-parser": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", "dev": true, "license": "MIT", "engines": { @@ -1915,20 +2279,28 @@ }, "node_modules/concat-map": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true, "license": "MIT" }, "node_modules/convert-source-map": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", "dev": true, "license": "MIT" }, "node_modules/core-util-is": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", "license": "MIT" }, "node_modules/cross-spawn": { "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -1940,32 +2312,17 @@ "node": ">= 8" } }, - "node_modules/cross-spawn/node_modules/isexe": { - "version": "2.0.0", - "dev": true, - "license": "ISC" - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/damerau-levenshtein": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", "dev": true, "license": "BSD-2-Clause" }, "node_modules/data-view-buffer": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1982,6 +2339,8 @@ }, "node_modules/data-view-byte-length": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1998,6 +2357,8 @@ }, "node_modules/data-view-byte-offset": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2014,6 +2375,8 @@ }, "node_modules/debug": { "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -2029,11 +2392,15 @@ }, "node_modules/deep-is": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true, "license": "MIT" }, "node_modules/defaults": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "license": "MIT", "dependencies": { "clone": "^1.0.2" @@ -2044,6 +2411,8 @@ }, "node_modules/define-data-property": { "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "dev": true, "license": "MIT", "dependencies": { @@ -2060,6 +2429,8 @@ }, "node_modules/define-properties": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dev": true, "license": "MIT", "dependencies": { @@ -2076,6 +2447,8 @@ }, "node_modules/doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2087,6 +2460,8 @@ }, "node_modules/drange": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/drange/-/drange-1.1.1.tgz", + "integrity": "sha512-pYxfDYpued//QpnLIm4Avk7rsNtAtQkUES2cwAYSvD/wd2pKD71gN2Ebj3e7klzXwjocvE8c5vx/1fxwpqmSxA==", "license": "MIT", "engines": { "node": ">=4" @@ -2094,6 +2469,8 @@ }, "node_modules/dunder-proto": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", "dev": true, "license": "MIT", "dependencies": { @@ -2106,16 +2483,23 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.240", + "version": "1.5.267", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.267.tgz", + "integrity": "sha512-0Drusm6MVRXSOJpGbaSVgcQsuB4hEkMpHXaVstcPmhu5LIedxs1xNK/nIxmQIU/RPC0+1/o0AVZfBTkTNJOdUw==", "dev": true, "license": "ISC" }, "node_modules/emoji-regex": { - "version": "8.0.0", + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, "license": "MIT" }, "node_modules/es-abstract": { - "version": "1.24.0", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", "dev": true, "license": "MIT", "dependencies": { @@ -2183,6 +2567,8 @@ }, "node_modules/es-define-property": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, "license": "MIT", "engines": { @@ -2191,6 +2577,8 @@ }, "node_modules/es-errors": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "dev": true, "license": "MIT", "engines": { @@ -2198,25 +2586,27 @@ } }, "node_modules/es-iterator-helpers": { - "version": "1.2.1", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.2.2.tgz", + "integrity": "sha512-BrUQ0cPTB/IwXj23HtwHjS9n7O4h9FX94b4xc5zlTHxeLgTAdzYUDyy6KdExAl9lbN5rtfe44xpjpmj9grxs5w==", "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.8", - "call-bound": "^1.0.3", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.6", + "es-abstract": "^1.24.1", "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", + "es-set-tostringtag": "^2.1.0", "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.6", + "get-intrinsic": "^1.3.0", "globalthis": "^1.0.4", "gopd": "^1.2.0", "has-property-descriptors": "^1.0.2", "has-proto": "^1.2.0", "has-symbols": "^1.1.0", "internal-slot": "^1.1.0", - "iterator.prototype": "^1.1.4", + "iterator.prototype": "^1.1.5", "safe-array-concat": "^1.1.3" }, "engines": { @@ -2225,6 +2615,8 @@ }, "node_modules/es-object-atoms": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, "license": "MIT", "dependencies": { @@ -2236,6 +2628,8 @@ }, "node_modules/es-set-tostringtag": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", "dev": true, "license": "MIT", "dependencies": { @@ -2250,6 +2644,8 @@ }, "node_modules/es-shim-unscopables": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", "dev": true, "license": "MIT", "dependencies": { @@ -2261,6 +2657,8 @@ }, "node_modules/es-to-primitive": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", "dev": true, "license": "MIT", "dependencies": { @@ -2277,6 +2675,8 @@ }, "node_modules/escalade": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "license": "MIT", "engines": { @@ -2284,14 +2684,22 @@ } }, "node_modules/escape-string-regexp": { - "version": "1.0.5", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.8.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint": { "version": "9.38.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.38.0.tgz", + "integrity": "sha512-t5aPOpmtJcZcz5UJyY2GbvpDlsK5E8JqRqoKtfiKE3cNh437KIqfJr3A3AKf5k64NPx6d0G3dno6XDY05PqPtw==", "dev": true, "license": "MIT", "peer": true, @@ -2350,11 +2758,13 @@ } }, "node_modules/eslint-config-next": { - "version": "16.0.0", + "version": "16.0.10", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-16.0.10.tgz", + "integrity": "sha512-BxouZUm0I45K4yjOOIzj24nTi0H2cGo0y7xUmk+Po/PYtJXFBYVDS1BguE7t28efXjKdcN0tmiLivxQy//SsZg==", "dev": true, "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "16.0.0", + "@next/eslint-plugin-next": "16.0.10", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.32.0", @@ -2376,6 +2786,8 @@ }, "node_modules/eslint-config-next/node_modules/globals": { "version": "16.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.4.0.tgz", + "integrity": "sha512-ob/2LcVVaVGCYN+r14cnwnoDPUufjiYgSqRhiFD0Q1iI4Odora5RE8Iv1D24hAz5oMophRGkGz+yuvQmmUMnMw==", "dev": true, "license": "MIT", "engines": { @@ -2387,6 +2799,8 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, "license": "MIT", "dependencies": { @@ -2397,6 +2811,8 @@ }, "node_modules/eslint-import-resolver-node/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2405,6 +2821,8 @@ }, "node_modules/eslint-import-resolver-typescript": { "version": "3.10.1", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.10.1.tgz", + "integrity": "sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==", "dev": true, "license": "ISC", "dependencies": { @@ -2438,6 +2856,8 @@ }, "node_modules/eslint-module-utils": { "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "license": "MIT", "dependencies": { @@ -2454,6 +2874,8 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2462,9 +2884,10 @@ }, "node_modules/eslint-plugin-import": { "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -2495,27 +2918,23 @@ }, "node_modules/eslint-plugin-import/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-plugin-jsdoc": { - "version": "61.1.9", + "version": "61.1.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-61.1.12.tgz", + "integrity": "sha512-CGJTnltz7ovwOW33xYhvA4fMuriPZpR5OnJf09SV28iU2IUpJwMd6P7zvUK8Sl56u5YzO+1F9m46wpSs2dufEw==", "dev": true, "license": "BSD-3-Clause", "dependencies": { "@es-joy/jsdoccomment": "~0.76.0", - "@es-joy/resolve.exports": "1.0.0", + "@es-joy/resolve.exports": "1.2.0", "are-docs-informative": "^0.0.2", "comment-parser": "1.4.1", "debug": "^4.4.3", @@ -2536,19 +2955,23 @@ "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/eslint-plugin-jsdoc/node_modules/escape-string-regexp": { - "version": "4.0.0", + "node_modules/eslint-plugin-jsdoc/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "dev": true, - "license": "MIT", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/eslint-plugin-jsx-a11y": { "version": "6.10.2", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.2.tgz", + "integrity": "sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2575,13 +2998,10 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, - "node_modules/eslint-plugin-jsx-a11y/node_modules/emoji-regex": { - "version": "9.2.2", - "dev": true, - "license": "MIT" - }, "node_modules/eslint-plugin-react": { "version": "7.37.5", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.5.tgz", + "integrity": "sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==", "dev": true, "license": "MIT", "dependencies": { @@ -2613,6 +3033,8 @@ }, "node_modules/eslint-plugin-react-hooks": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-7.0.1.tgz", + "integrity": "sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==", "dev": true, "license": "MIT", "dependencies": { @@ -2631,6 +3053,8 @@ }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, "license": "MIT", "dependencies": { @@ -2645,16 +3069,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "dev": true, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/eslint-scope": { "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2670,6 +3088,8 @@ }, "node_modules/eslint-visitor-keys": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2679,19 +3099,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/espree": { "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2708,6 +3119,8 @@ }, "node_modules/esprima": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "license": "BSD-2-Clause", "bin": { "esparse": "bin/esparse.js", @@ -2719,6 +3132,8 @@ }, "node_modules/esquery": { "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2730,6 +3145,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2741,6 +3158,8 @@ }, "node_modules/estraverse": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -2749,6 +3168,8 @@ }, "node_modules/esutils": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -2757,11 +3178,15 @@ }, "node_modules/fast-deep-equal": { "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", "dev": true, "license": "MIT" }, "node_modules/fast-glob": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "license": "MIT", "dependencies": { @@ -2777,6 +3202,8 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "license": "ISC", "dependencies": { @@ -2788,16 +3215,22 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", "dev": true, "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true, "license": "MIT" }, "node_modules/fastq": { "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", "dependencies": { @@ -2806,6 +3239,8 @@ }, "node_modules/fdir": { "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, "license": "MIT", "engines": { @@ -2822,6 +3257,8 @@ }, "node_modules/figures": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", "license": "MIT", "dependencies": { "escape-string-regexp": "^1.0.5" @@ -2833,8 +3270,19 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/figures/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/file-entry-cache": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2846,6 +3294,8 @@ }, "node_modules/fill-range": { "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "license": "MIT", "dependencies": { @@ -2857,6 +3307,8 @@ }, "node_modules/find-up": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "license": "MIT", "dependencies": { @@ -2872,6 +3324,8 @@ }, "node_modules/flat-cache": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", "dev": true, "license": "MIT", "dependencies": { @@ -2884,11 +3338,15 @@ }, "node_modules/flatted": { "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", "dev": true, "license": "ISC" }, "node_modules/for-each": { "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", "dev": true, "license": "MIT", "dependencies": { @@ -2904,6 +3362,8 @@ "node_modules/function-bind": { "name": "@socketregistry/function-bind", "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@socketregistry/function-bind/-/function-bind-1.0.7.tgz", + "integrity": "sha512-i3Z9BcuHGaMGv8nbcAsVW1tWXxAyjiiBrN3XHUHXsrLvI5auMctY7xHeoBOEIS97xihAdACM/Q3S0h+dhMu7YA==", "dev": true, "license": "MIT", "engines": { @@ -2912,6 +3372,8 @@ }, "node_modules/function.prototype.name": { "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", "dev": true, "license": "MIT", "dependencies": { @@ -2931,6 +3393,8 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true, "license": "MIT", "funding": { @@ -2939,6 +3403,8 @@ }, "node_modules/generator-function": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", "dev": true, "license": "MIT", "engines": { @@ -2947,6 +3413,8 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "dev": true, "license": "MIT", "engines": { @@ -2955,6 +3423,8 @@ }, "node_modules/get-intrinsic": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2978,6 +3448,8 @@ }, "node_modules/get-proto": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", "dev": true, "license": "MIT", "dependencies": { @@ -2990,6 +3462,8 @@ }, "node_modules/get-symbol-description": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", "dev": true, "license": "MIT", "dependencies": { @@ -3006,6 +3480,8 @@ }, "node_modules/get-tsconfig": { "version": "4.13.0", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.13.0.tgz", + "integrity": "sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3017,6 +3493,8 @@ }, "node_modules/glob-parent": { "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "license": "ISC", "dependencies": { @@ -3028,6 +3506,8 @@ }, "node_modules/global-prefix": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz", + "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==", "dev": true, "license": "MIT", "dependencies": { @@ -3039,8 +3519,36 @@ "node": ">=16" } }, + "node_modules/global-prefix/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, "node_modules/globals": { "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, "license": "MIT", "engines": { @@ -3052,6 +3560,8 @@ }, "node_modules/globalthis": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3067,6 +3577,8 @@ }, "node_modules/gopd": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, "license": "MIT", "engines": { @@ -3078,11 +3590,15 @@ }, "node_modules/graphemer": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", "dev": true, "license": "MIT" }, "node_modules/has-bigints": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", "dev": true, "license": "MIT", "engines": { @@ -3094,6 +3610,8 @@ }, "node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "license": "MIT", "engines": { "node": ">=8" @@ -3101,6 +3619,8 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "dev": true, "license": "MIT", "dependencies": { @@ -3112,6 +3632,8 @@ }, "node_modules/has-proto": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3126,6 +3648,8 @@ }, "node_modules/has-symbols": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, "license": "MIT", "engines": { @@ -3137,6 +3661,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", "dev": true, "license": "MIT", "dependencies": { @@ -3152,6 +3678,8 @@ "node_modules/hasown": { "name": "@socketregistry/hasown", "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@socketregistry/hasown/-/hasown-1.0.7.tgz", + "integrity": "sha512-MZ5dyXOtiEc7q3801T+2EmKkxrd55BOSQnG8z/8/IkIJzDxqBxGGBKVyixqFm3W657TyUEBfIT9iWgSB6ipFsA==", "dev": true, "license": "MIT", "engines": { @@ -3160,11 +3688,15 @@ }, "node_modules/hermes-estree": { "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz", + "integrity": "sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==", "dev": true, "license": "MIT" }, "node_modules/hermes-parser": { "version": "0.25.1", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz", + "integrity": "sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==", "dev": true, "license": "MIT", "dependencies": { @@ -3173,6 +3705,8 @@ }, "node_modules/html-entities": { "version": "2.6.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.6.0.tgz", + "integrity": "sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==", "dev": true, "funding": [ { @@ -3188,6 +3722,8 @@ }, "node_modules/http-proxy-agent": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "license": "MIT", "dependencies": { "agent-base": "^7.1.0", @@ -3199,6 +3735,8 @@ }, "node_modules/https-proxy-agent": { "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", "license": "MIT", "dependencies": { "agent-base": "^7.1.2", @@ -3209,7 +3747,9 @@ } }, "node_modules/iconv-lite": { - "version": "0.7.0", + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz", + "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", "license": "MIT", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" @@ -3224,6 +3764,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -3242,6 +3784,8 @@ }, "node_modules/ignore": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", "dev": true, "license": "MIT", "engines": { @@ -3250,6 +3794,8 @@ }, "node_modules/import-fresh": { "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3265,6 +3811,8 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "dev": true, "license": "MIT", "engines": { @@ -3273,10 +3821,14 @@ }, "node_modules/inherits": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "license": "ISC" }, "node_modules/ini": { "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", "dev": true, "license": "ISC", "engines": { @@ -3285,6 +3837,8 @@ }, "node_modules/inquirer": { "version": "8.2.7", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.7.tgz", + "integrity": "sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==", "license": "MIT", "dependencies": { "@inquirer/external-editor": "^1.0.0", @@ -3309,6 +3863,8 @@ }, "node_modules/internal-slot": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", "dev": true, "license": "MIT", "dependencies": { @@ -3322,6 +3878,8 @@ }, "node_modules/is-array-buffer": { "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", "dev": true, "license": "MIT", "dependencies": { @@ -3338,6 +3896,8 @@ }, "node_modules/is-async-function": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3356,6 +3916,8 @@ }, "node_modules/is-bigint": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3370,6 +3932,8 @@ }, "node_modules/is-boolean-object": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", "dev": true, "license": "MIT", "dependencies": { @@ -3385,14 +3949,31 @@ }, "node_modules/is-bun-module": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", "dev": true, "license": "MIT", "dependencies": { "semver": "^7.7.1" } }, + "node_modules/is-bun-module/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/is-callable": { "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "license": "MIT", "engines": { @@ -3405,6 +3986,8 @@ "node_modules/is-core-module": { "name": "@socketregistry/is-core-module", "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@socketregistry/is-core-module/-/is-core-module-1.0.11.tgz", + "integrity": "sha512-obrSzvIfJXKQthA3u1RmkjLHuA1QDtLm0SbXJxGs2CQfXZY9Eql5/pBGSV1hIUWKcpdcNphFgnJMC5BITcTXsQ==", "dev": true, "license": "MIT", "engines": { @@ -3413,6 +3996,8 @@ }, "node_modules/is-data-view": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", "dev": true, "license": "MIT", "dependencies": { @@ -3429,6 +4014,8 @@ }, "node_modules/is-date-object": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", "dev": true, "license": "MIT", "dependencies": { @@ -3444,6 +4031,8 @@ }, "node_modules/is-extglob": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "dev": true, "license": "MIT", "engines": { @@ -3452,6 +4041,8 @@ }, "node_modules/is-finalizationregistry": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", "dev": true, "license": "MIT", "dependencies": { @@ -3466,6 +4057,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", "engines": { "node": ">=8" @@ -3473,6 +4066,8 @@ }, "node_modules/is-generator-function": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, "license": "MIT", "dependencies": { @@ -3491,6 +4086,8 @@ }, "node_modules/is-glob": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "license": "MIT", "dependencies": { @@ -3503,6 +4100,8 @@ "node_modules/is-interactive": { "name": "@socketregistry/is-interactive", "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@socketregistry/is-interactive/-/is-interactive-1.0.6.tgz", + "integrity": "sha512-KbKE6j98nf+cZum6lAO5ubP/Sid5tbbl3S7XYb8VFu3RaHy9I1uIZ/dcM932xYk3+TQuoXgV3pzqAM2ekqA1tA==", "license": "MIT", "engines": { "node": ">=18" @@ -3510,6 +4109,8 @@ }, "node_modules/is-map": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "dev": true, "license": "MIT", "engines": { @@ -3521,6 +4122,8 @@ }, "node_modules/is-negative-zero": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "dev": true, "license": "MIT", "engines": { @@ -3532,6 +4135,8 @@ }, "node_modules/is-number": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, "license": "MIT", "engines": { @@ -3540,6 +4145,8 @@ }, "node_modules/is-number-object": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", "dev": true, "license": "MIT", "dependencies": { @@ -3555,6 +4162,8 @@ }, "node_modules/is-regex": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", "dev": true, "license": "MIT", "dependencies": { @@ -3572,6 +4181,8 @@ }, "node_modules/is-set": { "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "dev": true, "license": "MIT", "engines": { @@ -3583,6 +4194,8 @@ }, "node_modules/is-shared-array-buffer": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", "dev": true, "license": "MIT", "dependencies": { @@ -3597,6 +4210,8 @@ }, "node_modules/is-string": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", "dev": true, "license": "MIT", "dependencies": { @@ -3612,6 +4227,8 @@ }, "node_modules/is-symbol": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", "dev": true, "license": "MIT", "dependencies": { @@ -3628,6 +4245,8 @@ }, "node_modules/is-typed-array": { "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3643,6 +4262,8 @@ "node_modules/is-unicode-supported": { "name": "@socketregistry/is-unicode-supported", "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@socketregistry/is-unicode-supported/-/is-unicode-supported-1.0.5.tgz", + "integrity": "sha512-l3wz0cknjyGlI2iCyZxp50FJhtUFXkdZR6CfUU7OfNxE7I4CRBdsvORLgV+JPwqQQErRO/CZgKsbDHefd3puYA==", "license": "MIT", "engines": { "node": ">=18" @@ -3650,6 +4271,8 @@ }, "node_modules/is-weakmap": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", "dev": true, "license": "MIT", "engines": { @@ -3661,6 +4284,8 @@ }, "node_modules/is-weakref": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", "dev": true, "license": "MIT", "dependencies": { @@ -3675,6 +4300,8 @@ }, "node_modules/is-weakset": { "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3690,19 +4317,22 @@ }, "node_modules/isarray": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", "dev": true, "license": "MIT" }, "node_modules/isexe": { - "version": "3.1.1", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true, - "license": "ISC", - "engines": { - "node": ">=16" - } + "license": "ISC" }, "node_modules/iterator.prototype": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", + "integrity": "sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==", "dev": true, "license": "MIT", "dependencies": { @@ -3719,11 +4349,15 @@ }, "node_modules/js-tokens": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", "dev": true, "license": "MIT" }, "node_modules/js-yaml": { - "version": "4.1.0", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -3735,6 +4369,8 @@ }, "node_modules/jsdoc-type-pratt-parser": { "version": "6.10.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-6.10.0.tgz", + "integrity": "sha512-+LexoTRyYui5iOhJGn13N9ZazL23nAHGkXsa1p/C8yeq79WRfLBag6ZZ0FQG2aRoc9yfo59JT9EYCQonOkHKkQ==", "dev": true, "license": "MIT", "engines": { @@ -3743,6 +4379,8 @@ }, "node_modules/jsesc": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -3754,21 +4392,29 @@ }, "node_modules/json-buffer": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true, "license": "MIT" }, "node_modules/json-schema-traverse": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", "dev": true, "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", "dev": true, "license": "MIT" }, "node_modules/json5": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "dev": true, "license": "MIT", "bin": { @@ -3780,6 +4426,8 @@ }, "node_modules/jsx-ast-utils": { "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3794,6 +4442,8 @@ }, "node_modules/keyv": { "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, "license": "MIT", "dependencies": { @@ -3802,6 +4452,8 @@ }, "node_modules/kind-of": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true, "license": "MIT", "engines": { @@ -3810,11 +4462,15 @@ }, "node_modules/language-subtag-registry": { "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", "dev": true, "license": "CC0-1.0" }, "node_modules/language-tags": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", "dev": true, "license": "MIT", "dependencies": { @@ -3826,6 +4482,8 @@ }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3838,6 +4496,8 @@ }, "node_modules/locate-path": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "license": "MIT", "dependencies": { @@ -3852,15 +4512,21 @@ }, "node_modules/lodash": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, "node_modules/lodash.merge": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true, "license": "MIT" }, "node_modules/log-symbols": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "license": "MIT", "dependencies": { "chalk": "^4.1.0", @@ -3875,6 +4541,8 @@ }, "node_modules/loose-envify": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dev": true, "license": "MIT", "dependencies": { @@ -3886,6 +4554,8 @@ }, "node_modules/lru-cache": { "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dev": true, "license": "ISC", "dependencies": { @@ -3894,6 +4564,8 @@ }, "node_modules/math-intrinsics": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", "dev": true, "license": "MIT", "engines": { @@ -3902,6 +4574,8 @@ }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "license": "MIT", "engines": { @@ -3910,6 +4584,8 @@ }, "node_modules/micromatch": { "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "license": "MIT", "dependencies": { @@ -3922,6 +4598,8 @@ }, "node_modules/micromatch/node_modules/picomatch": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "dev": true, "license": "MIT", "engines": { @@ -3933,6 +4611,8 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "license": "MIT", "engines": { "node": ">=6" @@ -3940,6 +4620,8 @@ }, "node_modules/minimatch": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "license": "ISC", "dependencies": { @@ -3951,6 +4633,8 @@ }, "node_modules/minimist": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "dev": true, "license": "MIT", "funding": { @@ -3959,14 +4643,20 @@ }, "node_modules/ms": { "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, "node_modules/mute-stream": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "license": "ISC" }, "node_modules/napi-postinstall": { "version": "0.3.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz", + "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==", "dev": true, "license": "MIT", "bin": { @@ -3981,16 +4671,22 @@ }, "node_modules/natural-compare": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", "dev": true, "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.26", + "version": "2.0.27", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.27.tgz", + "integrity": "sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==", "dev": true, "license": "MIT" }, "node_modules/object-assign": { "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "license": "MIT", "engines": { @@ -3999,11 +4695,15 @@ }, "node_modules/object-deep-merge": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/object-deep-merge/-/object-deep-merge-2.0.0.tgz", + "integrity": "sha512-3DC3UMpeffLTHiuXSy/UG4NOIYTLlY9u3V82+djSCLYClWobZiS4ivYzpIUWrRY/nfsJ8cWsKyG3QfyLePmhvg==", "dev": true, "license": "MIT" }, "node_modules/object-inspect": { "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, "license": "MIT", "engines": { @@ -4015,6 +4715,8 @@ }, "node_modules/object-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, "license": "MIT", "engines": { @@ -4023,6 +4725,8 @@ }, "node_modules/object.assign": { "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", "dev": true, "license": "MIT", "dependencies": { @@ -4042,6 +4746,8 @@ }, "node_modules/object.entries": { "version": "1.1.9", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.9.tgz", + "integrity": "sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==", "dev": true, "license": "MIT", "dependencies": { @@ -4056,6 +4762,8 @@ }, "node_modules/object.fromentries": { "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4073,6 +4781,8 @@ }, "node_modules/object.groupby": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4086,6 +4796,8 @@ }, "node_modules/object.values": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", "dev": true, "license": "MIT", "dependencies": { @@ -4103,6 +4815,8 @@ }, "node_modules/onetime": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "license": "MIT", "dependencies": { "mimic-fn": "^2.1.0" @@ -4116,6 +4830,8 @@ }, "node_modules/optionator": { "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", "dev": true, "license": "MIT", "dependencies": { @@ -4132,6 +4848,8 @@ }, "node_modules/ora": { "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "license": "MIT", "dependencies": { "bl": "^4.1.0", @@ -4153,6 +4871,8 @@ }, "node_modules/own-keys": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", "dev": true, "license": "MIT", "dependencies": { @@ -4169,6 +4889,8 @@ }, "node_modules/p-limit": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4183,6 +4905,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "license": "MIT", "dependencies": { @@ -4197,6 +4921,8 @@ }, "node_modules/package-manager-detector": { "version": "0.2.11", + "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", + "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", "license": "MIT", "dependencies": { "quansync": "^0.2.7" @@ -4204,6 +4930,8 @@ }, "node_modules/parent-module": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "license": "MIT", "dependencies": { @@ -4215,6 +4943,8 @@ }, "node_modules/parse-imports-exports": { "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4223,11 +4953,15 @@ }, "node_modules/parse-statements": { "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", "dev": true, "license": "MIT" }, "node_modules/path-exists": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, "license": "MIT", "engines": { @@ -4236,6 +4970,8 @@ }, "node_modules/path-key": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true, "license": "MIT", "engines": { @@ -4245,6 +4981,8 @@ "node_modules/path-parse": { "name": "@socketregistry/path-parse", "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@socketregistry/path-parse/-/path-parse-1.0.8.tgz", + "integrity": "sha512-9dcT4Vj4TY6BsU7hd3sEemoaA8OEGUutK2ufNdP+qKOljcH0xy/5+WnbEZ1RLEJcSKDnpZ3T47mVdq/ZWiGNxw==", "dev": true, "license": "MIT", "engines": { @@ -4253,11 +4991,15 @@ }, "node_modules/picocolors": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true, "license": "ISC" }, "node_modules/picomatch": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { @@ -4269,6 +5011,8 @@ }, "node_modules/possible-typed-array-names": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", "dev": true, "license": "MIT", "engines": { @@ -4277,6 +5021,8 @@ }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "license": "MIT", "engines": { @@ -4285,6 +5031,8 @@ }, "node_modules/prop-types": { "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "license": "MIT", "dependencies": { @@ -4295,6 +5043,8 @@ }, "node_modules/punycode": { "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { @@ -4303,6 +5053,8 @@ }, "node_modules/quansync": { "version": "0.2.11", + "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.11.tgz", + "integrity": "sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==", "funding": [ { "type": "individual", @@ -4317,6 +5069,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true, "funding": [ { @@ -4336,6 +5090,8 @@ }, "node_modules/randexp": { "version": "0.5.3", + "resolved": "https://registry.npmjs.org/randexp/-/randexp-0.5.3.tgz", + "integrity": "sha512-U+5l2KrcMNOUPYvazA3h5ekF80FHTUG+87SEAmHZmolh1M+i/WyTCxVzmi+tidIa1tM4BSe8g2Y/D3loWDjj+w==", "license": "MIT", "dependencies": { "drange": "^1.0.2", @@ -4347,11 +5103,15 @@ }, "node_modules/react-is": { "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true, "license": "MIT" }, "node_modules/readable-stream": { "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", "dependencies": { "inherits": "^2.0.3", @@ -4364,6 +5124,8 @@ }, "node_modules/reflect.getprototypeof": { "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", "dev": true, "license": "MIT", "dependencies": { @@ -4385,6 +5147,8 @@ }, "node_modules/regexp.prototype.flags": { "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", "dev": true, "license": "MIT", "dependencies": { @@ -4404,6 +5168,8 @@ }, "node_modules/reserved-identifiers": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/reserved-identifiers/-/reserved-identifiers-1.2.0.tgz", + "integrity": "sha512-yE7KUfFvaBFzGPs5H3Ops1RevfUEsDc5Iz65rOwWg4lE8HJSYtle77uul3+573457oHvBKuHYDl/xqUkKpEEdw==", "dev": true, "license": "MIT", "engines": { @@ -4414,11 +5180,13 @@ } }, "node_modules/resolve": { - "version": "1.22.10", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -4434,6 +5202,8 @@ }, "node_modules/resolve-from": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, "license": "MIT", "engines": { @@ -4442,6 +5212,8 @@ }, "node_modules/resolve-pkg-maps": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", "dev": true, "license": "MIT", "funding": { @@ -4450,6 +5222,8 @@ }, "node_modules/restore-cursor": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "license": "MIT", "dependencies": { "onetime": "^5.1.0", @@ -4461,6 +5235,8 @@ }, "node_modules/ret": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.2.2.tgz", + "integrity": "sha512-M0b3YWQs7R3Z917WRQy1HHA7Ba7D8hvZg6UE5mLykJxQVE2ju0IXbGlaHPPlkY+WN7wFP+wUMXmBFA0aV6vYGQ==", "license": "MIT", "engines": { "node": ">=4" @@ -4468,6 +5244,8 @@ }, "node_modules/reusify": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -4477,6 +5255,8 @@ }, "node_modules/run-async": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", "license": "MIT", "engines": { "node": ">=0.12.0" @@ -4484,6 +5264,8 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -4506,6 +5288,8 @@ }, "node_modules/rxjs": { "version": "7.8.2", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.2.tgz", + "integrity": "sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==", "license": "Apache-2.0", "dependencies": { "tslib": "^2.1.0" @@ -4513,6 +5297,8 @@ }, "node_modules/safe-array-concat": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", "dev": true, "license": "MIT", "dependencies": { @@ -4532,6 +5318,8 @@ "node_modules/safe-buffer": { "name": "@socketregistry/safe-buffer", "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@socketregistry/safe-buffer/-/safe-buffer-1.0.9.tgz", + "integrity": "sha512-eV4uYchI1+vQeKpFG+aBlhVQ/AaaPTTXaan+ReiNn/izy8U9hfT4WC8l4g8o8BC3zaeNnsNVxec14hJH/y2y3g==", "license": "MIT", "engines": { "node": ">=18" @@ -4539,6 +5327,8 @@ }, "node_modules/safe-push-apply": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", "dev": true, "license": "MIT", "dependencies": { @@ -4554,6 +5344,8 @@ }, "node_modules/safe-regex-test": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", "dev": true, "license": "MIT", "dependencies": { @@ -4571,24 +5363,27 @@ "node_modules/safer-buffer": { "name": "@socketregistry/safer-buffer", "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@socketregistry/safer-buffer/-/safer-buffer-1.0.10.tgz", + "integrity": "sha512-jbEY37bJn51W9pP1pXxIoGcQbmbi9EQDtnXfWBjGLNvKC1iEyNLOaGm8ee7dN7Z+KgJdQbrrDjjD3HbGeOFC4A==", "license": "MIT", "engines": { "node": ">=18" } }, "node_modules/semver": { - "version": "7.7.3", + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" } }, "node_modules/set-function-length": { "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", "dev": true, "license": "MIT", "dependencies": { @@ -4605,6 +5400,8 @@ }, "node_modules/set-function-name": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4619,6 +5416,8 @@ }, "node_modules/set-proto": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", "dev": true, "license": "MIT", "dependencies": { @@ -4632,6 +5431,8 @@ }, "node_modules/shebang-command": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "license": "MIT", "dependencies": { @@ -4643,6 +5444,8 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, "license": "MIT", "engines": { @@ -4651,6 +5454,8 @@ }, "node_modules/side-channel": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, "license": "MIT", "dependencies": { @@ -4669,6 +5474,8 @@ }, "node_modules/side-channel-list": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", "dev": true, "license": "MIT", "dependencies": { @@ -4684,6 +5491,8 @@ }, "node_modules/side-channel-map": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", "dev": true, "license": "MIT", "dependencies": { @@ -4701,6 +5510,8 @@ }, "node_modules/side-channel-weakmap": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", "dev": true, "license": "MIT", "dependencies": { @@ -4719,15 +5530,21 @@ }, "node_modules/signal-exit": { "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, "node_modules/spdx-exceptions": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", "dev": true, "license": "CC-BY-3.0" }, "node_modules/spdx-expression-parse": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4737,16 +5554,22 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.22", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.22.tgz", + "integrity": "sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==", "dev": true, "license": "CC0-1.0" }, "node_modules/stable-hash": { "version": "0.0.5", + "resolved": "https://registry.npmjs.org/stable-hash/-/stable-hash-0.0.5.tgz", + "integrity": "sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==", "dev": true, "license": "MIT" }, "node_modules/stop-iteration-iterator": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4759,6 +5582,8 @@ }, "node_modules/string_decoder": { "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "license": "MIT", "dependencies": { "safe-buffer": "~5.2.0" @@ -4766,6 +5591,8 @@ }, "node_modules/string-width": { "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { "emoji-regex": "^8.0.0", @@ -4776,8 +5603,16 @@ "node": ">=8" } }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "license": "MIT" + }, "node_modules/string.prototype.includes": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", + "integrity": "sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==", "dev": true, "license": "MIT", "dependencies": { @@ -4791,6 +5626,8 @@ }, "node_modules/string.prototype.matchall": { "version": "4.0.12", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.12.tgz", + "integrity": "sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==", "dev": true, "license": "MIT", "dependencies": { @@ -4817,6 +5654,8 @@ }, "node_modules/string.prototype.repeat": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", "dev": true, "license": "MIT", "dependencies": { @@ -4826,6 +5665,8 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", "dev": true, "license": "MIT", "dependencies": { @@ -4846,6 +5687,8 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4863,6 +5706,8 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", "dev": true, "license": "MIT", "dependencies": { @@ -4879,6 +5724,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1" @@ -4889,6 +5736,8 @@ }, "node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "license": "MIT", "engines": { @@ -4897,6 +5746,8 @@ }, "node_modules/strip-json-comments": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, "license": "MIT", "engines": { @@ -4908,6 +5759,8 @@ }, "node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -4918,6 +5771,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, "license": "MIT", "engines": { @@ -4929,14 +5784,20 @@ }, "node_modules/through": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", "license": "MIT" }, "node_modules/tinyduration": { "version": "3.4.1", + "resolved": "https://registry.npmjs.org/tinyduration/-/tinyduration-3.4.1.tgz", + "integrity": "sha512-NemFoamVYn7TmtwZKZ3OiliM9fZkr6EWiTM+wKknco6POSy2gS689xx/pXip0JYp40HXpUw6k65CUYHWYUXdaA==", "license": "MIT" }, "node_modules/tinyglobby": { "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4952,6 +5813,8 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4963,6 +5826,8 @@ }, "node_modules/to-valid-identifier": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-valid-identifier/-/to-valid-identifier-1.0.0.tgz", + "integrity": "sha512-41wJyvKep3yT2tyPqX/4blcfybknGB4D+oETKLs7Q76UiPqRpUJK3hr1nxelyYO0PHKVzJwlu0aCeEAsGI6rpw==", "dev": true, "license": "MIT", "dependencies": { @@ -4978,6 +5843,8 @@ }, "node_modules/ts-api-utils": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", "dev": true, "license": "MIT", "engines": { @@ -4989,6 +5856,8 @@ }, "node_modules/ts-patch": { "version": "3.3.0", + "resolved": "https://registry.npmjs.org/ts-patch/-/ts-patch-3.3.0.tgz", + "integrity": "sha512-zAOzDnd5qsfEnjd9IGy1IRuvA7ygyyxxdxesbhMdutt8AHFjD8Vw8hU2rMF89HX1BKRWFYqKHrO8Q6lw0NeUZg==", "dev": true, "license": "MIT", "dependencies": { @@ -5004,8 +5873,23 @@ "tspc": "bin/tspc.js" } }, + "node_modules/ts-patch/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", "dev": true, "license": "MIT", "dependencies": { @@ -5017,6 +5901,8 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, "license": "MIT", "dependencies": { @@ -5028,10 +5914,14 @@ }, "node_modules/tslib": { "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, "license": "MIT", "dependencies": { @@ -5043,6 +5933,8 @@ }, "node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -5053,6 +5945,8 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", "dev": true, "license": "MIT", "dependencies": { @@ -5066,6 +5960,8 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", "dev": true, "license": "MIT", "dependencies": { @@ -5084,6 +5980,8 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", "dev": true, "license": "MIT", "dependencies": { @@ -5104,6 +6002,8 @@ }, "node_modules/typed-array-length": { "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", "dev": true, "license": "MIT", "dependencies": { @@ -5123,6 +6023,8 @@ }, "node_modules/typescript": { "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "license": "Apache-2.0", "peer": true, "bin": { @@ -5134,14 +6036,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.46.2", + "version": "8.46.4", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.46.4.tgz", + "integrity": "sha512-KALyxkpYV5Ix7UhvjTwJXZv76VWsHG+NjNlt/z+a17SOQSiOcBdUXdbJdyXi7RPxrBFECtFOiPwUJQusJuCqrg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.46.2", - "@typescript-eslint/parser": "8.46.2", - "@typescript-eslint/typescript-estree": "8.46.2", - "@typescript-eslint/utils": "8.46.2" + "@typescript-eslint/eslint-plugin": "8.46.4", + "@typescript-eslint/parser": "8.46.4", + "@typescript-eslint/typescript-estree": "8.46.4", + "@typescript-eslint/utils": "8.46.4" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5178,6 +6082,8 @@ }, "node_modules/unbox-primitive": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", "dev": true, "license": "MIT", "dependencies": { @@ -5195,11 +6101,15 @@ }, "node_modules/undici-types": { "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "devOptional": true, "license": "MIT" }, "node_modules/unrs-resolver": { "version": "1.11.1", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz", + "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -5232,7 +6142,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.4", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.2.tgz", + "integrity": "sha512-E85pfNzMQ9jpKkA7+TJAi4TJN+tBCuWh5rUcS/sv6cFi+1q9LYDwDI5dpUL0u/73EElyQ8d3TEaeW4sPedBqYA==", "dev": true, "funding": [ { @@ -5262,6 +6174,8 @@ }, "node_modules/uri-js": { "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -5270,31 +6184,39 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "license": "MIT" }, "node_modules/wcwidth": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "license": "MIT", "dependencies": { "defaults": "^1.0.3" } }, "node_modules/which": { - "version": "4.0.0", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dev": true, "license": "ISC", "dependencies": { - "isexe": "^3.1.1" + "isexe": "^2.0.0" }, "bin": { - "node-which": "bin/which.js" + "node-which": "bin/node-which" }, "engines": { - "node": "^16.13.0 || >=18.0.0" + "node": ">= 8" } }, "node_modules/which-boxed-primitive": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", "dev": true, "license": "MIT", "dependencies": { @@ -5313,6 +6235,8 @@ }, "node_modules/which-builtin-type": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", "dev": true, "license": "MIT", "dependencies": { @@ -5339,6 +6263,8 @@ }, "node_modules/which-collection": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", "dev": true, "license": "MIT", "dependencies": { @@ -5356,6 +6282,8 @@ }, "node_modules/which-typed-array": { "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", "dev": true, "license": "MIT", "dependencies": { @@ -5376,6 +6304,8 @@ }, "node_modules/word-wrap": { "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "dev": true, "license": "MIT", "engines": { @@ -5384,6 +6314,8 @@ }, "node_modules/wrap-ansi": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", @@ -5396,11 +6328,15 @@ }, "node_modules/yallist": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", "dev": true, "license": "ISC" }, "node_modules/yocto-queue": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "dev": true, "license": "MIT", "engines": { @@ -5411,7 +6347,9 @@ } }, "node_modules/zod": { - "version": "4.1.12", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/zod/-/zod-4.2.0.tgz", + "integrity": "sha512-Bd5fw9wlIhtqCCxotZgdTOMwGm1a0u75wARVEY9HMs1X17trvA/lMi4+MGK5EUfYkXVTbX8UDiDKW4OgzHVUZw==", "dev": true, "license": "MIT", "peer": true, @@ -5421,6 +6359,8 @@ }, "node_modules/zod-validation-error": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-4.0.2.tgz", + "integrity": "sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==", "dev": true, "license": "MIT", "engines": { From d5aec8ceb2c58555a16b1bcfee101e96e989e9a0 Mon Sep 17 00:00:00 2001 From: Pasha Zayko Date: Wed, 17 Dec 2025 13:06:20 -0500 Subject: [PATCH 43/45] Adjusting examples section to include missing fields Updating examples for architecture to have appropriate fields and include the sample correctly as the attribute instead of top level props --- specs/Data-Gateway.json | 296 +++++++++++++++++++++------------------- 1 file changed, 152 insertions(+), 144 deletions(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 4992866..6114cd7 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -6456,83 +6456,87 @@ "application/json": { "examples": { "Example Architecture Report V1": { - "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" - }, - "principalData": { - "user": { - "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { - "assignedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": { - "featureA": true, - "featureB": false - } - }, - "assignedLicense": [ - { - "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", - "servicePlanList": [ - "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ] - } - ], - "consumedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": { - "featureA": true, - "featureB": false + "description": "Sample structure of the valid architecture report along with all relevant metadata retrieved using correlation record ID.", + "summary": "Architecture Report 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" + }, + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Full-Time" } - }, - "llmInferred": { - "isServiceAccount": false, - "isFrontlineWorker": true, - "isTempWorker": null - }, - "principalMetadata": { - "sharedMailbox": false - }, - "enhancedData": { - "userPrincipalName": "user@example.com", - "idpJobTitle": "Engineer", - "idpDepartment": "IT", - "idpOfficeLocation": "HQ", - "idpEmployeeType": "Full-Time" } - } - }, - "device": { - "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { - "assignedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 - }, - "assignedLicense": [ - { - "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", - "servicePlanList": [ - "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ] + }, + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true } - ], - "consumedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 - }, - "principalMetadata": { - "sharedComputer": true } } - } - }, - "tenantMetadata": { - "totalDeviceCount": 1, - "totalGuestCount": 1, - "totalMemberCount": 1, - "totalUserCount": 1 - }, - "schemaVersion": 1 + }, + "tenantMetadata": { + "totalDeviceCount": 1, + "totalGuestCount": 1, + "totalMemberCount": 1, + "totalUserCount": 1 + }, + "schemaVersion": 1 + } } }, "schema": { @@ -6604,83 +6608,87 @@ "application/json": { "examples": { "Architecture Report V1": { - "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" - }, - "principalData": { - "user": { - "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { - "assignedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": { - "featureA": true, - "featureB": false - } - }, - "assignedLicense": [ - { - "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", - "servicePlanList": [ - "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ] - } - ], - "consumedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": { - "featureA": true, - "featureB": false + "description": "Sample structure of the valid architecture report along with all relevant metadata retrieved using correlation record ID and specific tenant ID.", + "summary": "Architecture Report 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" + }, + "principalData": { + "user": { + "e7b8c8a2-1f2e-4c3a-9b6a-2d8e4f8a9b7c": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": { + "featureA": true, + "featureB": false + } + }, + "llmInferred": { + "isServiceAccount": false, + "isFrontlineWorker": true, + "isTempWorker": null + }, + "principalMetadata": { + "sharedMailbox": false + }, + "enhancedData": { + "userPrincipalName": "user@example.com", + "idpJobTitle": "Engineer", + "idpDepartment": "IT", + "idpOfficeLocation": "HQ", + "idpEmployeeType": "Full-Time" } - }, - "llmInferred": { - "isServiceAccount": false, - "isFrontlineWorker": true, - "isTempWorker": null - }, - "principalMetadata": { - "sharedMailbox": false - }, - "enhancedData": { - "userPrincipalName": "user@example.com", - "idpJobTitle": "Engineer", - "idpDepartment": "IT", - "idpOfficeLocation": "HQ", - "idpEmployeeType": "Full-Time" } - } - }, - "device": { - "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { - "assignedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 - }, - "assignedLicense": [ - { - "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", - "servicePlanList": [ - "a1b2c3d4-e5f6-7890-abcd-ef1234567890" - ] + }, + "device": { + "f1e2d3c4-b5a6-7890-1234-56789abcdef0": { + "assignedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "assignedLicense": [ + { + "id": "3d282045-ec7f-4813-88e2-29b74ee609f7", + "servicePlanList": [ + "a1b2c3d4-e5f6-7890-abcd-ef1234567890" + ] + } + ], + "consumedService": { + "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 + }, + "principalMetadata": { + "sharedComputer": true } - ], - "consumedService": { - "3d282045-ec7f-4813-88e2-29b74ee609f7": 5 - }, - "principalMetadata": { - "sharedComputer": true } } - } - }, - "tenantMetadata": { - "totalDeviceCount": 1, - "totalGuestCount": 1, - "totalMemberCount": 1, - "totalUserCount": 1 - }, - "schemaVersion": 1 + }, + "tenantMetadata": { + "totalDeviceCount": 1, + "totalGuestCount": 1, + "totalMemberCount": 1, + "totalUserCount": 1 + }, + "schemaVersion": 1 + } } }, "schema": { From 7c10218d14aab5d6281ba6656844843462ee98b6 Mon Sep 17 00:00:00 2001 From: Brandon Pham Date: Mon, 22 Dec 2025 10:41:18 -0600 Subject: [PATCH 44/45] Added Api/Chat/UpdateDocs to spec (#91) * Added Api/Chat/UpdateDocs to spec * clarity improvements --- specs/Data-Gateway.json | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/specs/Data-Gateway.json b/specs/Data-Gateway.json index 6114cd7..905a968 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -4120,6 +4120,33 @@ ] } }, + "/Api/Chat/UpdateDocs": { + "post": { + "description": "Sends a request to update the cached Data Gateway documentation if there is a newer version.\n\nThis endpoint requires the `LicenseGptCache.ReadWrite` scope (permission). This endpoint is also only accessible from the `SHI Lab` tenant. End user access is restricted.", + "operationId": "/Api/Chat/UpdateDocs/Post", + "responses": { + "204": { + "description": "Documentation updated successfully" + }, + "400": { + "$ref": "#/components/responses/400" + }, + "401": { + "$ref": "#/components/responses/401" + }, + "403": { + "$ref": "#/components/responses/403" + }, + "500": { + "description": "Request has a failure that cannot be resolved and might require manual intervention or retry." + } + }, + "summary": "Update Cached Documentation", + "tags": [ + "Chat" + ] + } + }, "/Api/Entitlement/Shield": { "post": { "description": "Creates a new license entitlement (activation) for SHIELD.\n\nThis endpoint requires the `LicenseEntitlement.ReadWrite.All` scope (permission). This endpoint is also only accessible from the `SHI` and `SHI Lab` tenants. End user access is restricted.", @@ -6764,4 +6791,4 @@ "description": "Enables query for available information (like tenant, license, etc) via conversation with OpenAI agent." } ] -} +} \ No newline at end of file From 898082dd5533384462064553bd15de1a2fc90934 Mon Sep 17 00:00:00 2001 From: Pasha Zayko <91487789+pasha-zayko@users.noreply.github.com> Date: Mon, 22 Dec 2025 13:58:17 -0500 Subject: [PATCH 45/45] Fix JSON formatting by adding newline at end Signed-off-by: Pasha Zayko <91487789+pasha-zayko@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 905a968..12c303d 100644 --- a/specs/Data-Gateway.json +++ b/specs/Data-Gateway.json @@ -6791,4 +6791,4 @@ "description": "Enables query for available information (like tenant, license, etc) via conversation with OpenAI agent." } ] -} \ No newline at end of file +}