Skip to content

Requirements API

This content is not available in your language yet.

Requirements are specific compliance obligations within a framework (regulation). Each requirement belongs to one or more frameworks and can be linked to controls that satisfy it.

Create a new requirement.

FieldTypeRequiredDescription
titlestringYesThe title of the requirement.
regulation_idsarrayYesArray of framework IDs this requirement belongs to.
descriptionstringNoRich-text description (HTML supported).
chapter_namestringNoName of the chapter/section.
chapter_numberstringNoChapter/section number.
paragraph_numberstringNoParagraph number within the chapter.
meaningstringNoExplanation of what the requirement means.
label_idsarrayNoArray of label UUIDs to attach.
is_applicablebooleanNoWhether this requirement is applicable. Defaults to true.
Terminal window
curl --location 'https://YOUR_KORDON_DOMAIN/api/v1/requirements/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-TOKEN' \
--data '{
"requirement": {
"title": "Information Security Policy",
"regulation_ids": ["b698a0ed-ad82-4468-900e-3b6eb3f5eb9b"],
"description": "<p>The organization shall define and communicate an information security policy.</p>",
"chapter_name": "Organizational Controls",
"chapter_number": "5",
"paragraph_number": "5.1",
"meaning": "A documented policy must exist and be communicated to all employees.",
"is_applicable": true
}
}'

Example response:

Status 200

{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"title": "Information Security Policy",
"description": "<p>The organization shall define and communicate an information security policy.</p>",
"chapter_name": "Organizational Controls",
"chapter_number": "5",
"paragraph_number": "5.1",
"meaning": "A documented policy must exist and be communicated to all employees.",
"is_applicable": true,
"labels": [],
"regulations": [
{
"id": "b698a0ed-ad82-4468-900e-3b6eb3f5eb9b",
"title": "ISO 27001:2022"
}
],
"controls": [],
"created_at": "2024-08-28T14:27:26+00:00",
"updated_at": "2024-08-28T14:27:26+00:00"
}
}

Get a single requirement by ID.

Terminal window
curl --location --request GET 'https://YOUR_KORDON_DOMAIN/api/v1/requirements/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-TOKEN'

Example response:

Status 200

{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"title": "Information Security Policy",
"description": "<p>The organization shall define and communicate an information security policy.</p>",
"chapter_name": "Organizational Controls",
"chapter_number": "5",
"paragraph_number": "5.1",
"meaning": "A documented policy must exist and be communicated to all employees.",
"is_applicable": true,
"labels": [],
"regulations": [
{
"id": "b698a0ed-ad82-4468-900e-3b6eb3f5eb9b",
"title": "ISO 27001:2022"
}
],
"controls": [],
"created_at": "2024-08-28T14:27:26+00:00",
"updated_at": "2024-08-28T14:27:26+00:00"
}
}

List all requirements.

Query Parameters

ParameterTypeDescription
frameworks[]arrayFilter by framework IDs.
applicability[]arrayFilter by applicability: true, false.
chapter[]arrayFilter by chapter names.
controls[]arrayFilter by control status: with_failing_controls, with_no_controls.
labels[]arrayFilter by label IDs. Use none for requirements without labels.
Terminal window
curl --location --request GET 'https://YOUR_KORDON_DOMAIN/api/v1/requirements/' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-TOKEN'

Example with filters:

Terminal window
curl --location --request GET 'https://YOUR_KORDON_DOMAIN/api/v1/requirements/?frameworks[]=b698a0ed-ad82-4468-900e-3b6eb3f5eb9b&applicability[]=true&controls[]=with_no_controls' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-TOKEN'

Example response:

Status 200

{
"data": [
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"title": "Information Security Policy",
"chapter_name": "Organizational Controls",
"chapter_number": "5",
"paragraph_number": "5.1",
"is_applicable": true,
"regulations": [
{
"id": "b698a0ed-ad82-4468-900e-3b6eb3f5eb9b",
"title": "ISO 27001:2022"
}
]
}
],
"meta": {
"page": 1,
"per_page": 25,
"total_count": 1,
"total_pages": 1
}
}

Update an existing requirement.

FieldTypeRequiredDescription
titlestringNoThe title of the requirement.
regulation_idsarrayNoArray of framework IDs this requirement belongs to.
descriptionstringNoRich-text description (HTML supported).
chapter_namestringNoName of the chapter/section.
chapter_numberstringNoChapter/section number.
paragraph_numberstringNoParagraph number within the chapter.
meaningstringNoExplanation of what the requirement means.
label_idsarrayNoArray of label UUIDs to attach.
is_applicablebooleanNoWhether this requirement is applicable.
Terminal window
curl --location --request PATCH 'https://YOUR_KORDON_DOMAIN/api/v1/requirements/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-TOKEN' \
--data '{
"requirement": {
"title": "Information Security Policy (Updated)",
"is_applicable": false
}
}'

Example response:

Status 200

{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"title": "Information Security Policy (Updated)",
"is_applicable": false,
"updated_at": "2024-08-29T09:15:00+00:00"
}
}

Delete a requirement.

Terminal window
curl --location --request DELETE 'https://YOUR_KORDON_DOMAIN/api/v1/requirements/a1b2c3d4-e5f6-7890-abcd-ef1234567890' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-TOKEN'

Example response:

Status 200

{
"data": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"deleted": true
}
}