Skip to content

Commit 0e82df0

Browse files
Automated commit by github action: 31719608529
Original commit message: Merge pull request #2978 from sailpoint/skale/AI-2397 AI-2397: [abm-detections] - Access Rights & Docs - OpenAPI Docs
1 parent b3629d2 commit 0e82df0

10 files changed

Lines changed: 2538 additions & 102958 deletions

idn/apis/machine-identities/openapi.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,10 @@ paths:
3333
$ref: ./paths/machine-identities-v1.yaml
3434
/machine-identities/v1/{id}:
3535
$ref: ./paths/machine-identities-v1-by-id.yaml
36+
/machine-identities/v1/{id}/anomalies:
37+
$ref: ./paths/machine-identities-v1-by-id-anomalies.yaml
38+
/machine-identities/v1/anomaly-summaries/unsanctioned:
39+
$ref: ./paths/anomaly-summaries-v1-unsanctioned.yaml
3640
/machine-identities/v2:
3741
$ref: ./paths/machine-identities-v2.yaml
3842
/machine-identities/v2/{id}:
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
get:
2+
operationId: getUnsanctionedAnomalySummaryV1
3+
tags:
4+
- Machine Identities
5+
summary: Get unsanctioned application anomaly summary
6+
description: >-
7+
Returns aggregate counts (distinct agents, distinct owners, and total events) for
8+
anomalies of type **unsanctioned_app** across the tenant. Powers the Unsanctioned Agents
9+
card on the Agent Registry page.
10+
security:
11+
- userAuth:
12+
- idn:mis-identity:read
13+
x-sailpoint-userLevels:
14+
- ORG_ADMIN
15+
parameters:
16+
- name: X-SailPoint-Experimental
17+
in: header
18+
description: Use this header to enable this experimental API.
19+
example: true
20+
schema:
21+
type: string
22+
default: true
23+
required: true
24+
responses:
25+
'200':
26+
description: Unsanctioned application anomaly summary.
27+
content:
28+
application/json:
29+
schema:
30+
$ref: ../schemas/unsanctionedsummary.yaml
31+
'400':
32+
$ref: ../../shared/responses/400.yaml
33+
'401':
34+
$ref: ../../shared/responses/401.yaml
35+
'403':
36+
$ref: ../../shared/responses/403.yaml
37+
'404':
38+
$ref: ../../shared/responses/404.yaml
39+
'429':
40+
$ref: ../../shared/responses/429.yaml
41+
'500':
42+
$ref: ../../shared/responses/500.yaml
Lines changed: 81 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
get:
2+
operationId: listMachineIdentityAnomaliesV1
3+
tags:
4+
- Machine Identities
5+
summary: List machine identity anomalies
6+
description: >-
7+
Returns a paginated list of anomalies detected for the specified machine identity (agent).
8+
9+
10+
Set **count=true** to populate the *X-Total-Count* response header with the total number of
11+
anomalies for the agent. Combine **limit=0** with **count=true** to retrieve only the count
12+
with an empty result body.
13+
security:
14+
- userAuth:
15+
- idn:mis-identity:read
16+
x-sailpoint-userLevels:
17+
- ORG_ADMIN
18+
parameters:
19+
- in: path
20+
name: id
21+
schema:
22+
type: string
23+
required: true
24+
x-sailpoint-resource-operation-id: listMachineIdentitiesV1
25+
description: Machine identity (agent) ID.
26+
example: ef38f94347e94562b5bb8424a56397d8
27+
- in: query
28+
name: sorters
29+
schema:
30+
type: string
31+
format: comma-separated
32+
required: false
33+
description: >-
34+
Sort results using the standard syntax described in [V3 API Standard Collection
35+
Parameters](https://developer.sailpoint.com/idn/api/standard-collection-parameters#sorting-results)
36+
37+
38+
Sorting is supported for the following fields: **detectedAt**
39+
40+
41+
The default sort is **-detectedAt** (most recent first).
42+
example: -detectedAt
43+
- name: X-SailPoint-Experimental
44+
in: header
45+
description: Use this header to enable this experimental API.
46+
example: true
47+
schema:
48+
type: string
49+
default: true
50+
required: true
51+
- $ref: ../../shared/parameters/count.yaml
52+
- $ref: ../../shared/parameters/limit.yaml
53+
- $ref: ../../shared/parameters/offset.yaml
54+
responses:
55+
'200':
56+
description: List of anomalies for the machine identity.
57+
headers:
58+
X-Total-Count:
59+
description: >-
60+
Total number of anomalies for the agent. Only returned when **count=true** is
61+
specified on the request.
62+
schema:
63+
type: integer
64+
content:
65+
application/json:
66+
schema:
67+
type: array
68+
items:
69+
$ref: ../schemas/anomaly.yaml
70+
'400':
71+
$ref: ../../shared/responses/400.yaml
72+
'401':
73+
$ref: ../../shared/responses/401.yaml
74+
'403':
75+
$ref: ../../shared/responses/403.yaml
76+
'404':
77+
$ref: ../../shared/responses/404.yaml
78+
'429':
79+
$ref: ../../shared/responses/429.yaml
80+
'500':
81+
$ref: ../../shared/responses/500.yaml
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
type: object
2+
title: Anomaly
3+
description: A single anomaly detected for a machine identity by Agent Behavior Monitoring.
4+
properties:
5+
id:
6+
type: string
7+
description: Anomaly identifier.
8+
example: rule-anom-001
9+
anomalyType:
10+
type: string
11+
description: Category of the detected anomaly.
12+
example: unsanctioned_app
13+
description:
14+
type: string
15+
description: Human-readable description of the anomaly.
16+
example: Agent accessed an unsanctioned application.
17+
ruleId:
18+
type: string
19+
description: Identifier of the detection rule that produced the anomaly.
20+
example: rule-tool-usage
21+
dataSources:
22+
type: array
23+
description: Source systems that contributed to the detection.
24+
items:
25+
type: string
26+
example:
27+
- SENTINEL
28+
detectedAt:
29+
type: string
30+
format: date-time
31+
description: Date-time the anomaly was detected.
32+
example: '2026-07-13T10:14:00Z'
33+
evidence:
34+
description: Detection evidence associated with the anomaly.
35+
$ref: ./anomalyevidence.yaml
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
type: object
2+
title: Anomaly Baseline
3+
description: >-
4+
Peer-group baseline for time-series anomaly detections (SIEM source only). Contains the
5+
windowed data points and deviation thresholds used to render the anomaly chart.
6+
properties:
7+
uiFeatureName:
8+
type: string
9+
description: Name of the feature the baseline describes.
10+
example: outbound_volume
11+
windowSize:
12+
type: integer
13+
format: int32
14+
description: Number of data points in the window.
15+
example: 7
16+
values:
17+
type: array
18+
description: Observed values across the window.
19+
example: [3, 5, 4, 6, 5, 7, 5]
20+
items:
21+
type: integer
22+
format: int32
23+
rawValue:
24+
type: array
25+
description: Raw observed values across the window.
26+
example: ["3", "5", "4", "6", "5", "7", "5"]
27+
items:
28+
type: string
29+
upperBound:
30+
type: array
31+
description: Upper deviation threshold per data point.
32+
example: [8.0, 8.2, 8.1, 8.5, 8.3, 8.6, 8.4]
33+
items:
34+
type: number
35+
format: double
36+
lowerBound:
37+
type: array
38+
description: Lower deviation threshold per data point.
39+
example: [1.0, 1.2, 1.1, 1.5, 1.3, 1.6, 1.4]
40+
items:
41+
type: number
42+
format: double
43+
minimumValue:
44+
type: integer
45+
format: int32
46+
description: Minimum value in the window.
47+
example: 0
48+
fprValue:
49+
type: number
50+
format: double
51+
description: False-positive-rate threshold value.
52+
example: 0.01
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
type: object
2+
title: Anomaly Evidence
3+
description: >-
4+
Detection evidence associated with an anomaly. SENTINEL detections populate the agent
5+
attribute fields; SIEM detections instead include a baseline with windowed time-series data.
6+
properties:
7+
source:
8+
type: string
9+
description: Evidence source system.
10+
example: SENTINEL
11+
timestamp:
12+
description: Timestamp details for when the evidence was captured.
13+
$ref: ./anomalyevidencetimestamp.yaml
14+
agentAttributeType:
15+
type: string
16+
nullable: true
17+
description: Attribute type captured for SENTINEL detections; null for SIEM detections.
18+
example: shell_exec
19+
agentAttributeValue:
20+
type: string
21+
nullable: true
22+
description: Attribute value captured for SENTINEL detections; null for SIEM detections.
23+
example: curl external.example.com
24+
baseline:
25+
allOf:
26+
- $ref: ./anomalybaseline.yaml
27+
nullable: true
28+
description: Peer-group baseline for SIEM detections; null for SENTINEL detections.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
type: object
2+
title: Anomaly Evidence Timestamp
3+
description: Timestamp block for an anomaly's evidence.
4+
properties:
5+
at:
6+
type: string
7+
format: date-time
8+
description: Point-in-time the evidence was captured.
9+
example: '2026-07-13T10:14:00Z'
10+
from:
11+
type: string
12+
format: date-time
13+
nullable: true
14+
description: >-
15+
Start of the aggregation window for time-window detections (SIEM); null for
16+
point-in-time detections (SENTINEL).
17+
example: '2026-07-13T09:00:00Z'
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
type: object
2+
title: Unsanctioned Application Anomaly Summary
3+
description: >-
4+
Aggregate counts of machine identities flagged with unsanctioned-application anomalies,
5+
used to power the Unsanctioned Agents card.
6+
properties:
7+
anomalyType:
8+
type: string
9+
description: The anomaly type these counts describe. Always unsanctioned_app for this endpoint.
10+
example: unsanctioned_app
11+
agentCount:
12+
type: integer
13+
format: int64
14+
description: Number of distinct agents with at least one unsanctioned-application anomaly.
15+
example: 23
16+
userCount:
17+
type: integer
18+
format: int64
19+
description: Number of distinct owners (users) associated with unsanctioned-application anomalies.
20+
example: 254
21+
eventCount:
22+
type: integer
23+
format: int64
24+
description: Total number of unsanctioned-application anomaly records.
25+
example: 97

0 commit comments

Comments
 (0)