Add CMMI maturity level to compliance controls
Adds an optional CMMI 0-5 maturity level field to Control to support ISO 27001 clause 9.1 effectiveness measurement and HITRUST CSF maturity requirements. The field is nullable, framework-agnostic, and exposed across all four API surfaces (GraphQL, MCP, CLI, n8n) plus the generated SoA document. Signed-off-by: Alejandro Juan <alejandrojuan@alejandrojuan.com>
This commit is contained in:
committed by
Sacha Al Himdani
parent
98487953b9
commit
da91afc2a7
@@ -69,6 +69,29 @@ export const description: INodeProperties[] = [
|
||||
default: '',
|
||||
description: 'The description of the control',
|
||||
},
|
||||
{
|
||||
displayName: 'Maturity Level',
|
||||
name: 'maturityLevel',
|
||||
type: 'options',
|
||||
displayOptions: {
|
||||
show: {
|
||||
resource: ['control'],
|
||||
operation: ['update'],
|
||||
},
|
||||
},
|
||||
options: [
|
||||
{ name: '(Unchanged)', value: '' },
|
||||
{ name: '0 - None', value: 'NONE' },
|
||||
{ name: '1 - Initial', value: 'INITIAL' },
|
||||
{ name: '2 - Managed', value: 'MANAGED' },
|
||||
{ name: '3 - Defined', value: 'DEFINED' },
|
||||
{ name: '4 - Quantitatively Managed', value: 'QUANTITATIVELY_MANAGED' },
|
||||
{ name: '5 - Optimizing', value: 'OPTIMIZING' },
|
||||
{ name: 'Not Set', value: '__unset__' },
|
||||
],
|
||||
default: '',
|
||||
description: 'CMMI 0-5 maturity level. Choose "Not set" to clear the value.',
|
||||
},
|
||||
];
|
||||
|
||||
export async function execute(
|
||||
@@ -79,6 +102,7 @@ export async function execute(
|
||||
const sectionTitle = this.getNodeParameter('sectionTitle', itemIndex, '') as string;
|
||||
const name = this.getNodeParameter('name', itemIndex, '') as string;
|
||||
const description = this.getNodeParameter('description', itemIndex, '') as string;
|
||||
const maturityLevel = this.getNodeParameter('maturityLevel', itemIndex, '') as string;
|
||||
|
||||
const query = `
|
||||
mutation UpdateControl($input: UpdateControlInput!) {
|
||||
@@ -88,6 +112,7 @@ export async function execute(
|
||||
sectionTitle
|
||||
name
|
||||
description
|
||||
maturityLevel
|
||||
createdAt
|
||||
updatedAt
|
||||
}
|
||||
@@ -95,10 +120,15 @@ export async function execute(
|
||||
}
|
||||
`;
|
||||
|
||||
const input: Record<string, string> = { id };
|
||||
const input: Record<string, string | null> = { id };
|
||||
if (sectionTitle) input.sectionTitle = sectionTitle;
|
||||
if (name) input.name = name;
|
||||
if (description) input.description = description;
|
||||
if (maturityLevel === '__unset__') {
|
||||
input.maturityLevel = null;
|
||||
} else if (maturityLevel) {
|
||||
input.maturityLevel = maturityLevel;
|
||||
}
|
||||
|
||||
const responseData = await proboApiRequest.call(this, query, { input });
|
||||
|
||||
|
||||
Reference in New Issue
Block a user