Skip to content

Commit 43e78c3

Browse files
author
AWS
committed
Security Incident Response Update: Add ListInvestigations and SendFeedback APIs to support SecurityIR AI agents
1 parent 39f79b7 commit 43e78c3

File tree

3 files changed

+295
-0
lines changed

3 files changed

+295
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"type": "feature",
3+
"category": "Security Incident Response",
4+
"contributor": "",
5+
"description": "Add ListInvestigations and SendFeedback APIs to support SecurityIR AI agents"
6+
}

services/securityir/src/main/resources/codegen-resources/paginators-1.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818
"limit_key": "maxResults",
1919
"result_key": "items"
2020
},
21+
"ListInvestigations": {
22+
"input_token": "nextToken",
23+
"output_token": "nextToken",
24+
"limit_key": "maxResults",
25+
"result_key": "investigationActions"
26+
},
2127
"ListMemberships": {
2228
"input_token": "nextToken",
2329
"output_token": "nextToken",

services/securityir/src/main/resources/codegen-resources/service-2.json

Lines changed: 283 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,29 @@
311311
"documentation":"<p>Returns comments for a designated case.</p>",
312312
"readonly":true
313313
},
314+
"ListInvestigations":{
315+
"name":"ListInvestigations",
316+
"http":{
317+
"method":"GET",
318+
"requestUri":"/v1/cases/{caseId}/list-investigations",
319+
"responseCode":200
320+
},
321+
"input":{"shape":"ListInvestigationsRequest"},
322+
"output":{"shape":"ListInvestigationsResponse"},
323+
"errors":[
324+
{"shape":"ServiceQuotaExceededException"},
325+
{"shape":"AccessDeniedException"},
326+
{"shape":"ValidationException"},
327+
{"shape":"SecurityIncidentResponseNotActiveException"},
328+
{"shape":"InternalServerException"},
329+
{"shape":"ThrottlingException"},
330+
{"shape":"ConflictException"},
331+
{"shape":"ResourceNotFoundException"},
332+
{"shape":"InvalidTokenException"}
333+
],
334+
"documentation":"<p>Investigation performed by an agent for a security incident...</p>",
335+
"readonly":true
336+
},
314337
"ListMemberships":{
315338
"name":"ListMemberships",
316339
"http":{
@@ -357,6 +380,28 @@
357380
"documentation":"<p>Returns currently configured tags on a resource.</p>",
358381
"readonly":true
359382
},
383+
"SendFeedback":{
384+
"name":"SendFeedback",
385+
"http":{
386+
"method":"POST",
387+
"requestUri":"/v1/cases/{caseId}/feedback/{resultId}/send-feedback",
388+
"responseCode":200
389+
},
390+
"input":{"shape":"SendFeedbackRequest"},
391+
"output":{"shape":"SendFeedbackResponse"},
392+
"errors":[
393+
{"shape":"ServiceQuotaExceededException"},
394+
{"shape":"AccessDeniedException"},
395+
{"shape":"ValidationException"},
396+
{"shape":"SecurityIncidentResponseNotActiveException"},
397+
{"shape":"InternalServerException"},
398+
{"shape":"ThrottlingException"},
399+
{"shape":"ConflictException"},
400+
{"shape":"ResourceNotFoundException"},
401+
{"shape":"InvalidTokenException"}
402+
],
403+
"documentation":"<p>Send feedback based on response investigation action</p>"
404+
},
360405
"TagResource":{
361406
"name":"TagResource",
362407
"http":{
@@ -544,6 +589,14 @@
544589
},
545590
"exception":true
546591
},
592+
"ActionType":{
593+
"type":"string",
594+
"enum":[
595+
"Evidence",
596+
"Investigation",
597+
"Summarization"
598+
]
599+
},
547600
"Arn":{
548601
"type":"string",
549602
"max":1010,
@@ -760,6 +813,40 @@
760813
"min":10,
761814
"pattern":"\\d{10,32}.*"
762815
},
816+
"CaseMetadata":{
817+
"type":"list",
818+
"member":{"shape":"CaseMetadataEntry"},
819+
"max":30,
820+
"min":1
821+
},
822+
"CaseMetadataEntry":{
823+
"type":"structure",
824+
"required":[
825+
"key",
826+
"value"
827+
],
828+
"members":{
829+
"key":{
830+
"shape":"CaseMetadataEntryKeyString",
831+
"documentation":"<p>The identifier for the metadata field. This key uniquely identifies the type of metadata being stored, such as \"severity\", \"category\", or \"assignee\".</p>"
832+
},
833+
"value":{
834+
"shape":"CaseMetadataEntryValueString",
835+
"documentation":"<p>The value associated with the metadata key. This contains the actual data for the metadata field identified by the key.</p>"
836+
}
837+
},
838+
"documentation":"<p>Represents a single metadata entry associated with a case. Each entry consists of a key-value pair that provides additional contextual information about the case, such as classification tags, custom attributes, or system-generated properties. </p>"
839+
},
840+
"CaseMetadataEntryKeyString":{
841+
"type":"string",
842+
"max":500,
843+
"min":1
844+
},
845+
"CaseMetadataEntryValueString":{
846+
"type":"string",
847+
"max":2000,
848+
"min":1
849+
},
763850
"CaseStatus":{
764851
"type":"string",
765852
"enum":[
@@ -1070,6 +1157,22 @@
10701157
"Investigation"
10711158
]
10721159
},
1160+
"ExecutionStatus":{
1161+
"type":"string",
1162+
"enum":[
1163+
"Pending",
1164+
"InProgress",
1165+
"Waiting",
1166+
"Completed",
1167+
"Failed",
1168+
"Cancelled"
1169+
]
1170+
},
1171+
"FeedbackComment":{
1172+
"type":"string",
1173+
"max":1000,
1174+
"min":1
1175+
},
10731176
"FileName":{
10741177
"type":"string",
10751178
"max":255,
@@ -1242,6 +1345,10 @@
12421345
"closedDate":{
12431346
"shape":"Timestamp",
12441347
"documentation":"<p>Response element for GetCase that provides the date a specified case was closed.</p>"
1348+
},
1349+
"caseMetadata":{
1350+
"shape":"CaseMetadata",
1351+
"documentation":"<p>Case response metadata</p>"
12451352
}
12461353
}
12471354
},
@@ -1483,6 +1590,84 @@
14831590
"exception":true,
14841591
"retryable":{"throttling":false}
14851592
},
1593+
"InvestigationAction":{
1594+
"type":"structure",
1595+
"required":[
1596+
"investigationId",
1597+
"actionType",
1598+
"title",
1599+
"content",
1600+
"status",
1601+
"lastUpdated"
1602+
],
1603+
"members":{
1604+
"investigationId":{
1605+
"shape":"InvestigationId",
1606+
"documentation":"<p>The unique identifier for this investigation action. This ID is used to track and reference the specific investigation throughout its lifecycle.</p>"
1607+
},
1608+
"actionType":{
1609+
"shape":"ActionType",
1610+
"documentation":"<p>The type of investigation action being performed. This categorizes the investigation method or approach used in the case.</p>"
1611+
},
1612+
"title":{
1613+
"shape":"InvestigationTitle",
1614+
"documentation":"<p>Human-readable summary of the investigation focus. This provides a brief description of what the investigation is examining or analyzing.</p>"
1615+
},
1616+
"content":{
1617+
"shape":"InvestigationContent",
1618+
"documentation":"<p>Detailed investigation results in rich markdown format. This field contains the comprehensive findings, analysis, and conclusions from the investigation.</p>"
1619+
},
1620+
"status":{
1621+
"shape":"ExecutionStatus",
1622+
"documentation":"<p>The current execution status of the investigation. This indicates whether the investigation is pending, in progress, completed, or failed.</p>"
1623+
},
1624+
"lastUpdated":{
1625+
"shape":"Timestamp",
1626+
"documentation":"<p>ISO 8601 timestamp of the most recent status update. This indicates when the investigation was last modified or when its status last changed.</p>"
1627+
},
1628+
"feedback":{
1629+
"shape":"InvestigationFeedback",
1630+
"documentation":"<p>User feedback for this investigation result. This contains the user's assessment and comments about the quality and usefulness of the investigation findings.</p>"
1631+
}
1632+
},
1633+
"documentation":"<p>Represents an investigation action performed within a case. This structure captures the details of an automated or manual investigation, including its status, results, and user feedback.</p>"
1634+
},
1635+
"InvestigationActionList":{
1636+
"type":"list",
1637+
"member":{"shape":"InvestigationAction"}
1638+
},
1639+
"InvestigationContent":{
1640+
"type":"string",
1641+
"max":5000,
1642+
"min":1
1643+
},
1644+
"InvestigationFeedback":{
1645+
"type":"structure",
1646+
"members":{
1647+
"usefulness":{
1648+
"shape":"UsefulnessRating",
1649+
"documentation":"<p>User assessment of the investigation result's quality and helpfulness. This rating indicates how valuable the investigation findings were in addressing the case.</p>"
1650+
},
1651+
"comment":{
1652+
"shape":"FeedbackComment",
1653+
"documentation":"<p>Optional user comments providing additional context about the investigation feedback. This allows users to explain their rating or provide suggestions for improvement.</p>"
1654+
},
1655+
"submittedAt":{
1656+
"shape":"Timestamp",
1657+
"documentation":"<p>ISO 8601 timestamp when the feedback was submitted. This records when the user provided their assessment of the investigation results.</p>"
1658+
}
1659+
},
1660+
"documentation":"<p>Represents user feedback for an investigation result. This structure captures the user's evaluation of the investigation's quality, usefulness, and any additional comments.</p>"
1661+
},
1662+
"InvestigationId":{
1663+
"type":"string",
1664+
"pattern":"inv-[a-z0-9]{10,32}"
1665+
},
1666+
"InvestigationTitle":{
1667+
"type":"string",
1668+
"max":200,
1669+
"min":1
1670+
},
14861671
"JobTitle":{
14871672
"type":"string",
14881673
"max":50,
@@ -1712,6 +1897,55 @@
17121897
}
17131898
}
17141899
},
1900+
"ListInvestigationsRequest":{
1901+
"type":"structure",
1902+
"required":["caseId"],
1903+
"members":{
1904+
"nextToken":{
1905+
"shape":"ListInvestigationsRequestNextTokenString",
1906+
"documentation":"<p>Investigation performed by an agent for a security incident request</p>",
1907+
"location":"querystring",
1908+
"locationName":"nextToken"
1909+
},
1910+
"maxResults":{
1911+
"shape":"ListInvestigationsRequestMaxResultsInteger",
1912+
"documentation":"<p>Investigation performed by an agent for a security incident request, returning max results</p>",
1913+
"location":"querystring",
1914+
"locationName":"maxResults"
1915+
},
1916+
"caseId":{
1917+
"shape":"CaseId",
1918+
"documentation":"<p>Investigation performed by an agent for a security incident per caseID</p>",
1919+
"location":"uri",
1920+
"locationName":"caseId"
1921+
}
1922+
}
1923+
},
1924+
"ListInvestigationsRequestMaxResultsInteger":{
1925+
"type":"integer",
1926+
"box":true,
1927+
"max":25,
1928+
"min":1
1929+
},
1930+
"ListInvestigationsRequestNextTokenString":{
1931+
"type":"string",
1932+
"max":2000,
1933+
"min":0
1934+
},
1935+
"ListInvestigationsResponse":{
1936+
"type":"structure",
1937+
"required":["investigationActions"],
1938+
"members":{
1939+
"nextToken":{
1940+
"shape":"String",
1941+
"documentation":"<p>Investigation performed by an agent for a security incident for next Token</p>"
1942+
},
1943+
"investigationActions":{
1944+
"shape":"InvestigationActionList",
1945+
"documentation":"<p>Investigation performed by an agent for a security incid…Unique identifier for the specific investigation&gt;</p>"
1946+
}
1947+
}
1948+
},
17151949
"ListMembershipItem":{
17161950
"type":"structure",
17171951
"required":["membershipId"],
@@ -1967,6 +2201,10 @@
19672201
},
19682202
"exception":true
19692203
},
2204+
"ResultId":{
2205+
"type":"string",
2206+
"pattern":"inv-[a-z0-9]{10,32}"
2207+
},
19702208
"SecurityIncidentResponseNotActiveException":{
19712209
"type":"structure",
19722210
"required":["message"],
@@ -1992,6 +2230,40 @@
19922230
"Post-incident Activities"
19932231
]
19942232
},
2233+
"SendFeedbackRequest":{
2234+
"type":"structure",
2235+
"required":[
2236+
"caseId",
2237+
"resultId",
2238+
"usefulness"
2239+
],
2240+
"members":{
2241+
"caseId":{
2242+
"shape":"CaseId",
2243+
"documentation":"<p>Send feedback based on request caseID</p>",
2244+
"location":"uri",
2245+
"locationName":"caseId"
2246+
},
2247+
"resultId":{
2248+
"shape":"ResultId",
2249+
"documentation":"<p>Send feedback based on request result ID</p>",
2250+
"location":"uri",
2251+
"locationName":"resultId"
2252+
},
2253+
"usefulness":{
2254+
"shape":"UsefulnessRating",
2255+
"documentation":"<p>Required enum value indicating user assessment of result q.....</p>"
2256+
},
2257+
"comment":{
2258+
"shape":"FeedbackComment",
2259+
"documentation":"<p>Send feedback based on request comments</p>"
2260+
}
2261+
}
2262+
},
2263+
"SendFeedbackResponse":{
2264+
"type":"structure",
2265+
"members":{}
2266+
},
19952267
"ServiceQuotaExceededException":{
19962268
"type":"structure",
19972269
"required":[
@@ -2262,6 +2534,10 @@
22622534
"impactedAccountsToDelete":{
22632535
"shape":"ImpactedAccounts",
22642536
"documentation":"<p>Optional element for UpdateCase to provide content to add accounts impacted.</p> <note> <p> AWS account ID's may appear less than 12 characters and need to be zero-prepended. An example would be <code>123123123</code> which is nine digits, and with zero-prepend would be <code>000123123123</code>. Not zero-prepending to 12 digits could result in errors. </p> </note>"
2537+
},
2538+
"caseMetadata":{
2539+
"shape":"CaseMetadata",
2540+
"documentation":"<p>Update the case request with case metadata</p>"
22652541
}
22662542
}
22672543
},
@@ -2375,6 +2651,13 @@
23752651
"pattern":"https?://(?:www.)?[a-zA-Z0-9@:._+~#=-]{2,256}\\.[a-z]{2,6}\\b(?:[-a-zA-Z0-9@:%_+.~#?&/=]{0,2048})",
23762652
"sensitive":true
23772653
},
2654+
"UsefulnessRating":{
2655+
"type":"string",
2656+
"enum":[
2657+
"USEFUL",
2658+
"NOT_USEFUL"
2659+
]
2660+
},
23782661
"UserAgent":{
23792662
"type":"string",
23802663
"max":500,

0 commit comments

Comments
 (0)