Skip to content

Posture

Host posture reports, findings and the service inventory.

GET/api/posture/summary
GET/api/posture/servers
GET/api/posture/findings
GET/api/posture/servers/:serverId
GET/api/posture/servers/:serverId/metrics
GET/api/posture/servers/:serverId/expected-ports
POST/api/posture/servers/:serverId/expected-ports
DELETE/api/posture/servers/:serverId/expected-ports/:entryId
GET/api/posture/export/fields
POST/api/posture/export
POST/api/posture/findings/:id/mute
POST/api/posture/findings/:id/unmute
POST/api/posture/findings/:id/acknowledge
GET/api/posture/settings
PUT/api/posture/settings
GET/api/posture/alert-rules
GET/api/posture/alert-rules/:id
POST/api/posture/alert-rules
PUT/api/posture/alert-rules/:id
DELETE/api/posture/alert-rules/:id
GET/api/posture/inventory/services
GET/api/posture/inventory/listeners
GET/api/posture/inventory/facets

Summary ​

GET/api/posture/summary

Authentication: bearer token.
Permission: posture.read.

Query parameters

NameTypeRequiredNotes
customerIdstringNo
environmentstringNo
bash
curl -X GET "https://shellius.example.com/api/posture/summary" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Servers ​

GET/api/posture/servers

Authentication: bearer token.
Permission: posture.read.

Query parameters

NameTypeRequiredNotes
statestringNoOne of reporting, stale, not_installed, not_applicable.
pagenumberNoDefault 1. At least 1.
limitnumberNoDefault 25. 1–100.
bash
curl -X GET "https://shellius.example.com/api/posture/servers" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Findings ​

GET/api/posture/findings

Authentication: bearer token.
Permission: posture.read.

Query parameters

NameTypeRequiredNotes
severitystringNo
statusstringNo
sectionstringNoOne of open, expected, acknowledged, muted, resolved.
customerIdstringNo
environmentstringNo
serverIdstringNo
pagenumberNoDefault 1. At least 1.
limitnumberNoDefault 25. 1–100.
bash
curl -X GET "https://shellius.example.com/api/posture/findings" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Retrieve posture ​

GET/api/posture/servers/:serverId

Authentication: bearer token.
Permission: posture.read.

Path parameters

NameTypeNotes
serverIdstring
bash
curl -X GET "https://shellius.example.com/api/posture/servers/{serverId}" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Servers metrics ​

GET/api/posture/servers/:serverId/metrics

Authentication: bearer token.
Permission: posture.read.

Path parameters

NameTypeNotes
serverIdstring

Query parameters

NameTypeRequiredNotes
fromdateNoISO 8601.
todateNoISO 8601.
bucketstringNoDefault auto.
bash
curl -X GET "https://shellius.example.com/api/posture/servers/{serverId}/metrics" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Servers expected ports ​

GET/api/posture/servers/:serverId/expected-ports

Authentication: bearer token.
Permission: posture.read.

Path parameters

NameTypeNotes
serverIdstring
bash
curl -X GET "https://shellius.example.com/api/posture/servers/{serverId}/expected-ports" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Servers expected ports ​

POST/api/posture/servers/:serverId/expected-ports

Authentication: bearer token.
Permission: posture.expected_ports.

Path parameters

NameTypeNotes
serverIdstring

Request body

NameTypeRequiredNotes
entriesarrayYesOne of tcp, udp, any. Default any. 1–65535.
bash
curl -X POST "https://shellius.example.com/api/posture/servers/{serverId}/expected-ports" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "entries": "tcp"
  }'

200 OK

json
{ "success": true, "data": { … } }

Delete posture ​

DELETE/api/posture/servers/:serverId/expected-ports/:entryId

Authentication: bearer token.
Permission: posture.expected_ports.

Path parameters

NameTypeNotes
serverIdstring
entryIdstring
bash
curl -X DELETE "https://shellius.example.com/api/posture/servers/{serverId}/expected-ports/{entryId}" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Export fields ​

GET/api/posture/export/fields

Export — posture.export, audited.

Authentication: bearer token.
Permission: posture.export.

bash
curl -X GET "https://shellius.example.com/api/posture/export/fields" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Export ​

POST/api/posture/export

POST, not GET: the field selection and a bulk server list do not belong in a URL, and an export is a recorded action rather than a cacheable read.

Authentication: bearer token.
Permission: posture.export.

Request body

NameTypeRequiredNotes
datasetstringYesOne of findings, listeners.
formatstringNoDefault csv.
bundlestringNoDefault single.
fieldsarrayNoDefault []. At most 64.
filtersobjectNoOne of open, muted, resolved, all. 0–2000.
bash
curl -X POST "https://shellius.example.com/api/posture/export" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "dataset": "findings"
  }'

Returns a file or plain text, not the JSON envelope.

Findings mute ​

POST/api/posture/findings/:id/mute

Finding lifecycle — posture.mute, audited.

Authentication: bearer token.
Permission: posture.mute.

Path parameters

NameTypeNotes
idstring

Request body

NameTypeRequiredNotes
daysnumberNo1–3650.
untildateNoISO 8601.
reasonstringYes1–1000 characters.
bash
curl -X POST "https://shellius.example.com/api/posture/findings/{id}/mute" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "reason": "…"
  }'

200 OK

json
{ "success": true, "data": { … } }

Findings unmute ​

POST/api/posture/findings/:id/unmute

Authentication: bearer token.
Permission: posture.mute.

Path parameters

NameTypeNotes
idstring
bash
curl -X POST "https://shellius.example.com/api/posture/findings/{id}/unmute" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Findings acknowledge ​

POST/api/posture/findings/:id/acknowledge

Authentication: bearer token.
Permission: posture.mute.

Path parameters

NameTypeNotes
idstring
bash
curl -X POST "https://shellius.example.com/api/posture/findings/{id}/acknowledge" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Settings ​

GET/api/posture/settings

Settings — posture.settings.

Authentication: bearer token.
Permission: posture.settings.

bash
curl -X GET "https://shellius.example.com/api/posture/settings" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Settings ​

PUT/api/posture/settings

Authentication: bearer token.
Permission: posture.settings.

Request body

NameTypeRequiredNotes
enabledbooleanNo
collectIntervalSecondsnumberNo1–86400.
snapshotRetentionDaysnumberNo1–365.
metricRetentionHoursnumberNo1–8760.
findingRetentionDaysnumberNo1–3650.
expectedPublicPortsarrayNoAt most 200.
bash
curl -X PUT "https://shellius.example.com/api/posture/settings" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "enabled": false,
    "collectIntervalSeconds": 0,
    "snapshotRetentionDays": 0
  }'

200 OK

json
{ "success": true, "data": { … } }

Alert rules ​

GET/api/posture/alert-rules

Alert rules — posture.settings.

Authentication: bearer token.
Permission: posture.settings.

bash
curl -X GET "https://shellius.example.com/api/posture/alert-rules" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Retrieve posture ​

GET/api/posture/alert-rules/:id

Authentication: bearer token.
Permission: posture.settings.

Path parameters

NameTypeNotes
idstring
bash
curl -X GET "https://shellius.example.com/api/posture/alert-rules/{id}" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Alert rules ​

POST/api/posture/alert-rules

Authentication: bearer token.
Permission: posture.settings.

Request body

NameTypeRequiredNotes
namestringYes1–200 characters.
isActivebooleanNoDefault true.
severitiesarrayNoDefault [].
codesarrayNoDefault []. At most 100.
customerIdsarrayNoDefault [].
environmentsarrayNoDefault [].
recipientRolesarrayNoDefault []. At most 100.
recipientGroupIdstringNoMay be null.
recipientUserIdsarrayNoDefault [].
channelsarrayNoDefault ['inapp'].
modestringNoOne of immediate, digest. Default immediate.
notifyOnResolvebooleanNoDefault false.
throttleMinutesnumberNoDefault 0. 0–10080.
escalateAfterHoursnumberNo1–720. May be null.
escalateToGroupIdstringNoMay be null.
bash
curl -X POST "https://shellius.example.com/api/posture/alert-rules" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "…"
  }'

201 Created

json
{ "success": true, "data": { … } }

Update posture ​

PUT/api/posture/alert-rules/:id

Authentication: bearer token.
Permission: posture.settings.

Path parameters

NameTypeNotes
idstring
bash
curl -X PUT "https://shellius.example.com/api/posture/alert-rules/{id}" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Delete posture ​

DELETE/api/posture/alert-rules/:id

Authentication: bearer token.
Permission: posture.settings.

Path parameters

NameTypeNotes
idstring
bash
curl -X DELETE "https://shellius.example.com/api/posture/alert-rules/{id}" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Inventory services ​

GET/api/posture/inventory/services

One row per distinct service.

Authentication: bearer token.
Permission: posture.read.

Query parameters

NameTypeRequiredNotes
qstringNoAt most 200 characters.
protostringNoAt most 8 characters.
reachabilitystringNoAt most 16 characters.
ownerKindstringNoAt most 32 characters.
portnumberNo0–65535.
portMinnumberNo0–65535.
portMaxnumberNo0–65535.
serverIdstringNo
customerIdstringNo
environmentstringNoAt most 32 characters.
serviceKeystringNoAt most 160 characters.
statestringNoOne of running, stopped, internal, exposed.
hasFindingsbooleanNo
pagenumberNoAt least 1.
limitnumberNo1–200.
bash
curl -X GET "https://shellius.example.com/api/posture/inventory/services" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Inventory listeners ​

GET/api/posture/inventory/listeners

The flat port list across the fleet.

Authentication: bearer token.
Permission: posture.read.

Query parameters

NameTypeRequiredNotes
qstringNoAt most 200 characters.
protostringNoAt most 8 characters.
reachabilitystringNoAt most 16 characters.
ownerKindstringNoAt most 32 characters.
portnumberNo0–65535.
portMinnumberNo0–65535.
portMaxnumberNo0–65535.
serverIdstringNo
customerIdstringNo
environmentstringNoAt most 32 characters.
serviceKeystringNoAt most 160 characters.
statestringNoOne of running, stopped, internal, exposed.
hasFindingsbooleanNo
pagenumberNoAt least 1.
limitnumberNo1–200.
bash
curl -X GET "https://shellius.example.com/api/posture/inventory/listeners" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }

Inventory facets ​

GET/api/posture/inventory/facets

Distinct filter values, in scope.

Authentication: bearer token.
Permission: posture.read.

bash
curl -X GET "https://shellius.example.com/api/posture/inventory/facets" \
  -H "Authorization: Bearer $SHELLIUS_TOKEN"

200 OK

json
{ "success": true, "data": { … } }
Was this page helpful?No, tell us why