Cyber Essentials

Cyber Essentials checks and remediation. A plan lists the fixes for chosen devices; you approve it, Warden applies it, and each item can be undone. Items that need a person can be marked done or dismissed.

MethodPathSummary
GET/api/ceCyber Essentials status
GET/api/remediationList remediation plans
POST/api/remediationPlan Cyber Essentials fixes
GET/api/remediation/itemsOutstanding items across open plans (optionally ?control=firewall)
GET/api/remediation/:idGet a remediation plan
PATCH/api/remediation/items/:idChange a plan item
POST/api/remediation/:id/approveApprove and apply a plan
POST/api/remediation/:id/discardDiscard a plan
POST/api/remediation/items/:id/undoUndo an applied fix
POST/api/remediation/items/:id/doneMark a manual item done
POST/api/remediation/items/:id/dismissDismiss an item
POST/api/remediation/:id/applyApply more of an approved plan: unticked items, or retry failed ones
POST/api/remediation/:id/closeClose a plan

#Cyber Essentials status

GET/api/ce
Address
https://<your-org>.brambleit.cloud/warden/api/ce
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Response 200

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/ce', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#List remediation plans

GET/api/remediation
Address
https://<your-org>.brambleit.cloud/warden/api/remediation
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Response 200

FieldTypeDescription
plansarray of any
Example response
JSON
{
  "plans": []
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Plan Cyber Essentials fixes

POST/api/remediation
Address
https://<your-org>.brambleit.cloud/warden/api/remediation
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Request body JSON

NameTypeDescription
device_idsarray of anyThe devices.
controlsarray of anyThe Cyber Essentials controls to fix.

Response 201

FieldTypeDescription
planany
Example response
JSON
{
  "plan": null
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation', {
  method: 'POST',
  credentials: 'include',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"device_ids":[],"controls":[]}),
});
const data = await res.json();

#Outstanding items across open plans (optionally ?control=firewall)

GET/api/remediation/items

Outstanding items across open plans (optionally ?control=firewall). Before /:id.

Address
https://<your-org>.brambleit.cloud/warden/api/remediation/items
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Query parameters

NameTypeDescription
controlstring

Response 200

FieldTypeDescription
itemsarray of any
Example response
JSON
{
  "items": []
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation/items', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Get a remediation plan

GET/api/remediation/:id
Address
https://<your-org>.brambleit.cloud/warden/api/remediation/:id
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Response 200

FieldTypeDescription
planobject
plan.itemsarray of any
Example response
JSON
{
  "plan": {
    "…p": "…",
    "items": []
  }
}

Errors

StatusMessage
404Plan not found

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation/12.5', {
  method: 'GET',
  credentials: 'include',
});
const data = await res.json();

#Change a plan item

PATCH/api/remediation/items/:id
Address
https://<your-org>.brambleit.cloud/warden/api/remediation/items/:id
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Request body JSON

NameTypeDescription
selectedanyInclude it when the plan is applied.
portsarray of anyFor firewall items, the ports to allow.

Response 200

FieldTypeDescription
okboolean
Example response
JSON
{
  "ok": true
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation/items/12.5', {
  method: 'PATCH',
  credentials: 'include',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"selected":"…","ports":[]}),
});
const data = await res.json();

#Approve and apply a plan

POST/api/remediation/:id/approve
Address
https://<your-org>.brambleit.cloud/warden/api/remediation/:id/approve
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Response 200

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation/12.5/approve', {
  method: 'POST',
  credentials: 'include',
});
const data = await res.json();

#Discard a plan

POST/api/remediation/:id/discard
Address
https://<your-org>.brambleit.cloud/warden/api/remediation/:id/discard
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Response 200

FieldTypeDescription
okboolean
Example response
JSON
{
  "ok": true
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation/12.5/discard', {
  method: 'POST',
  credentials: 'include',
});
const data = await res.json();

#Undo an applied fix

POST/api/remediation/items/:id/undo
Address
https://<your-org>.brambleit.cloud/warden/api/remediation/items/:id/undo
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Response 200

FieldTypeDescription
messagestring
Example response
JSON
{
  "message": "Saved"
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation/items/12.5/undo', {
  method: 'POST',
  credentials: 'include',
});
const data = await res.json();

#Mark a manual item done

POST/api/remediation/items/:id/done
Address
https://<your-org>.brambleit.cloud/warden/api/remediation/items/:id/done
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Response 200

FieldTypeDescription
okboolean
Example response
JSON
{
  "ok": true
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation/items/12.5/done', {
  method: 'POST',
  credentials: 'include',
});
const data = await res.json();

#Dismiss an item

POST/api/remediation/items/:id/dismiss
Address
https://<your-org>.brambleit.cloud/warden/api/remediation/items/:id/dismiss
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Response 200

FieldTypeDescription
okboolean
Example response
JSON
{
  "ok": true
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation/items/12.5/dismiss', {
  method: 'POST',
  credentials: 'include',
});
const data = await res.json();

#Apply more of an approved plan: unticked items, or retry failed ones

POST/api/remediation/:id/apply

Apply more of an approved plan: unticked items, or retry failed ones. Body { item_ids: [] }.

Address
https://<your-org>.brambleit.cloud/warden/api/remediation/:id/apply
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Request body JSON

NameTypeDescription
item_idsarray of any

Response 200

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation/12.5/apply', {
  method: 'POST',
  credentials: 'include',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({"item_ids":[]}),
});
const data = await res.json();

#Close a plan

POST/api/remediation/:id/close
Address
https://<your-org>.brambleit.cloud/warden/api/remediation/:id/close
Requires
Signed-in browser session (the sso_session / session_id cookies from Bramble sign-in).
Licence: Warden.

Path parameters

NameTypeDescription
idrequirednumber

Response 200

FieldTypeDescription
okboolean
Example response
JSON
{
  "ok": true
}

Example request

JavaScript
// From a page served by Bramble (uses the signed-in session)
const res = await fetch('/warden/api/remediation/12.5/close', {
  method: 'POST',
  credentials: 'include',
});
const data = await res.json();