From 987762cecefcd7672baaca73aea4f1c7f6f746ba Mon Sep 17 00:00:00 2001 From: anthony bobbie <44766686+bowaybilly@users.noreply.github.com> Date: Tue, 26 May 2026 11:23:40 +0100 Subject: [PATCH 1/5] initial configuration --- specs/SHIELD.json | 167 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 167 insertions(+) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 8c02b1c..0f5eee4 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -1331,6 +1331,125 @@ ] ] }, + "Deploy.ConfigurationCategory": { + "title": "Deploy - Configuration Category List", + "description": "Collection of objects representing configuration categories used to organize deployable configuration items.", + "type": "array", + "items": { + "description": "Single configuration category with curated properties and values in a user-friendly format.", + "type": "object", + "properties": { + "categoryId": { + "type": "string", + "description": "Internal Object ID in UUID format to uniquely identify this configuration category definition.", + "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": [ + "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a" + ] + }, + "name": { + "type": "string", + "description": "Human friendly name of the Configuration Category.", + "examples": [ + "Identity Protection" + ] + }, + "description": { + "type": "string", + "description": "Lengthier explanation of how this category groups related configuration items.", + "examples": [ + "Baseline controls that harden identity and access related workloads." + ] + }, + "parentCategoryId": { + "type": "string", + "description": "Object ID in UUID format that references the parent configuration category when this category is nested.", + "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": [ + "1b7e2a3c-5d4f-4a8b-9e6a-7c2b1d3f8e4a" + ] + }, + "groupTagMetadataId": { + "type": "string", + "description": "Object ID in UUID format that references the deploy group tag metadata record associated with this category.", + "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": [ + "5d3f9c2e-7a1b-4a8b-8c6e-1a3d7e8b5c4a" + ] + }, + "templateIds": { + "type": "array", + "description": "List of configuration item templateIds assigned to this category.", + "minItems": 0, + "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": [ + "2a1c7e3b-5d4f-4a8b-9e6a-7f3d2b1c8e4a" + ] + }, + "examples": [ + [ + "2a1c7e3b-5d4f-4a8b-9e6a-7f3d2b1c8e4a", + "4a8b7e1a-2b3c-4d5f-9e6a-1c2b7f3d8e4a" + ] + ] + } + }, + "required": [ + "categoryId", + "name" + ], + "examples": [ + { + "categoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a", + "name": "Identity Protection", + "description": "Baseline controls that harden identity and access related workloads.", + "groupTagMetadataId": "5d3f9c2e-7a1b-4a8b-8c6e-1a3d7e8b5c4a", + "templateIds": [ + "2a1c7e3b-5d4f-4a8b-9e6a-7f3d2b1c8e4a", + "4a8b7e1a-2b3c-4d5f-9e6a-1c2b7f3d8e4a" + ] + }, + { + "categoryId": "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", + "name": "Conditional Access", + "parentCategoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a" + } + ] + }, + "examples": [ + [ + { + "categoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a", + "name": "Identity Protection", + "description": "Baseline controls that harden identity and access related workloads.", + "groupTagMetadataId": "5d3f9c2e-7a1b-4a8b-8c6e-1a3d7e8b5c4a", + "templateIds": [ + "2a1c7e3b-5d4f-4a8b-9e6a-7f3d2b1c8e4a", + "4a8b7e1a-2b3c-4d5f-9e6a-1c2b7f3d8e4a" + ] + }, + { + "categoryId": "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", + "name": "Conditional Access", + "parentCategoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a" + } + ] + ] + }, "Deploy.ConfigurationItemMetaData": { "title": "Deploy - Configuration Item Meta Data", "description": "Object representing populated information expanding details of the Configuration Item with user friendly information.", @@ -5346,6 +5465,51 @@ ] } }, + "/Api/Deploy/Component/ConfigurationCategory": { + "get": { + "summary": "Returns List of Available Configuration Categories", + "description": "Retrieves the collection of all existing configuration categories with curated set of metadata.\n\nThis endpoint requires the `Deploy.Read`, `Deploy.ReadWrite`, or the `Everything.ReadWrite` scope (permission).", + "operationId": "/Api/Deploy/Component/ConfigurationCategory/Get", + "responses": { + "200": { + "content": { + "application/json": { + "examples": { + "Sample List of Available Configuration Categories": { + "description": "Sample list of configuration category records available for deploy component organization.", + "summary": "Available Configuration Categories", + "value": [ + { + "categoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a", + "name": "Identity Protection", + "description": "Baseline controls that harden identity and access related workloads.", + "groupTagMetadataId": "5d3f9c2e-7a1b-4a8b-8c6e-1a3d7e8b5c4a", + "templateIds": [ + "2a1c7e3b-5d4f-4a8b-9e6a-7f3d2b1c8e4a", + "4a8b7e1a-2b3c-4d5f-9e6a-1c2b7f3d8e4a" + ] + }, + { + "categoryId": "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", + "name": "Conditional Access", + "parentCategoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a" + } + ] + } + }, + "schema": { + "$ref": "#/components/schemas/Deploy.ConfigurationCategory" + } + } + }, + "description": "OK" + } + }, + "tags": [ + "Deploy" + ] + } + }, "/Api/Deploy/Component/ConfigurationItem/{templateId}/Docs": { "get": { "summary": "Return Result of Retrieving Configuration Item Documentation", @@ -5478,6 +5642,9 @@ } }, "description": "OK" + }, + "400": { + "$ref": "#/components/responses/400" } }, "tags": [ From a6874a6caf2b6481c734a1285918e25def862c20 Mon Sep 17 00:00:00 2001 From: anthony bobbie <44766686+bowaybilly@users.noreply.github.com> Date: Tue, 26 May 2026 11:33:34 +0100 Subject: [PATCH 2/5] removed 400 response --- specs/SHIELD.json | 3 --- 1 file changed, 3 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index 0f5eee4..e94e290 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -5642,9 +5642,6 @@ } }, "description": "OK" - }, - "400": { - "$ref": "#/components/responses/400" } }, "tags": [ From 9ac83f983d6c2c65d1f40a8faa338c8367ea4b9c Mon Sep 17 00:00:00 2001 From: anthony bobbie <44766686+bowaybilly@users.noreply.github.com> Date: Thu, 28 May 2026 11:34:45 +0100 Subject: [PATCH 3/5] code review- rework, updated property names to match expected shape --- specs/SHIELD.json | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index e94e290..cff36f7 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -1339,7 +1339,7 @@ "description": "Single configuration category with curated properties and values in a user-friendly format.", "type": "object", "properties": { - "categoryId": { + "id": { "type": "string", "description": "Internal Object ID in UUID format to uniquely identify this configuration category definition.", "format": "uuid", @@ -1350,7 +1350,7 @@ "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a" ] }, - "name": { + "displayName": { "type": "string", "description": "Human friendly name of the Configuration Category.", "examples": [ @@ -1409,13 +1409,13 @@ } }, "required": [ - "categoryId", - "name" + "id", + "displayName" ], "examples": [ { - "categoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a", - "name": "Identity Protection", + "id": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a", + "displayName": "Identity Protection", "description": "Baseline controls that harden identity and access related workloads.", "groupTagMetadataId": "5d3f9c2e-7a1b-4a8b-8c6e-1a3d7e8b5c4a", "templateIds": [ @@ -1424,8 +1424,8 @@ ] }, { - "categoryId": "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", - "name": "Conditional Access", + "id": "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", + "displayName": "Conditional Access", "parentCategoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a" } ] @@ -1433,8 +1433,8 @@ "examples": [ [ { - "categoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a", - "name": "Identity Protection", + "id": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a", + "displayName": "Identity Protection", "description": "Baseline controls that harden identity and access related workloads.", "groupTagMetadataId": "5d3f9c2e-7a1b-4a8b-8c6e-1a3d7e8b5c4a", "templateIds": [ @@ -1443,8 +1443,8 @@ ] }, { - "categoryId": "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", - "name": "Conditional Access", + "id": "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", + "displayName": "Conditional Access", "parentCategoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a" } ] @@ -5480,8 +5480,8 @@ "summary": "Available Configuration Categories", "value": [ { - "categoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a", - "name": "Identity Protection", + "id": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a", + "displayName": "Identity Protection", "description": "Baseline controls that harden identity and access related workloads.", "groupTagMetadataId": "5d3f9c2e-7a1b-4a8b-8c6e-1a3d7e8b5c4a", "templateIds": [ @@ -5490,8 +5490,8 @@ ] }, { - "categoryId": "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", - "name": "Conditional Access", + "id": "7e1a2b3c-4d5f-4a8b-9e6a-1c2b7f3d8e4a", + "displayName": "Conditional Access", "parentCategoryId": "6a2c7e1b-4d5f-4a8b-9e6a-2b1c7f3d8e4a" } ] From a82a593ea5cdc3416c2c60157423b85c5b7acea6 Mon Sep 17 00:00:00 2001 From: anthony bobbie <44766686+bowaybilly@users.noreply.github.com> Date: Thu, 28 May 2026 14:48:10 +0100 Subject: [PATCH 4/5] bumped up app version, ready for packaging --- src/shield/TypeScript/package-lock.json | 4 ++-- src/shield/TypeScript/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/shield/TypeScript/package-lock.json b/src/shield/TypeScript/package-lock.json index 77e3adc..0f72026 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.4.1", + "version": "3.4.2", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@shi-corp/sdk-shield", - "version": "3.4.1", + "version": "3.4.2", "license": "MIT", "dependencies": { "@microsoft/kiota-authentication-azure": "~1.0.0-preview.100", diff --git a/src/shield/TypeScript/package.json b/src/shield/TypeScript/package.json index 5a2e85e..772cea4 100644 --- a/src/shield/TypeScript/package.json +++ b/src/shield/TypeScript/package.json @@ -1,6 +1,6 @@ { "name": "@shi-corp/sdk-shield", - "version": "3.4.1", + "version": "3.4.2", "type": "module", "main": "bin/index.js", "description": "SDK client used to interface with the SHIELD application.", From 7839e22f390656c6a20c6946cf502f5acd6ac776 Mon Sep 17 00:00:00 2001 From: anthony bobbie <44766686+bowaybilly@users.noreply.github.com> Date: Thu, 28 May 2026 14:53:47 +0100 Subject: [PATCH 5/5] added spec api version --- specs/SHIELD.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/specs/SHIELD.json b/specs/SHIELD.json index cff36f7..aed92b2 100644 --- a/specs/SHIELD.json +++ b/specs/SHIELD.json @@ -4109,7 +4109,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.4.1" + "version": "3.4.2" }, "openapi": "3.1.1", "paths": {