Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 5 additions & 9 deletions .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -13758,7 +13758,8 @@ components:
description: Attributes of the Jira issue to create.
properties:
assignee_id:
description: Unique identifier of the user assigned to the Jira issue.
description: Unique identifier of the Datadog user assigned to the Jira
issue.
example: f315bdaf-9ee7-4808-a9c1-99c15bf0f4d0
type: string
description:
Expand All @@ -13779,8 +13780,9 @@ components:
type: object
priority:
$ref: '#/components/schemas/CasePriority'
description: Priority of the Jira issue. If not provided, the priority will
be automatically set to "NOT_DEFINED".
description: Datadog case priority mapped to the Jira issue priority. If
not provided, the priority will be automatically set to "NOT_DEFINED".
To configure the mapping, see [Bidirectional ticket syncing with Jira](https://docs.datadoghq.com/security/ticketing_integrations/#bidirectional-ticket-syncing-with-jira).
example: P4
title:
description: Title of the Jira issue. If not provided, the title will be
Expand Down Expand Up @@ -87136,9 +87138,6 @@ paths:
permissions:
- security_monitoring_findings_write
- appsec_vm_write
x-unstable: '**Note**: This endpoint is in beta and is subject to change.

Please check the documentation regularly for updates.'
post:
description: 'Create Jira issues for security findings.

Expand Down Expand Up @@ -87182,9 +87181,6 @@ paths:
permissions:
- security_monitoring_findings_write
- appsec_vm_write
x-unstable: '**Note**: This endpoint is in beta and is subject to change.

Please check the documentation regularly for updates.'
/api/v2/security/findings/search:
post:
description: 'Get a list of security findings that match a search query. [See
Expand Down
36 changes: 27 additions & 9 deletions examples/v2/security-monitoring/CreateJiraIssues.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
from datadog_api_client.v2.model.case_management_project import CaseManagementProject
from datadog_api_client.v2.model.case_management_project_data import CaseManagementProjectData
from datadog_api_client.v2.model.case_management_project_data_type import CaseManagementProjectDataType
from datadog_api_client.v2.model.case_priority import CasePriority
from datadog_api_client.v2.model.create_jira_issue_request_array import CreateJiraIssueRequestArray
from datadog_api_client.v2.model.create_jira_issue_request_data import CreateJiraIssueRequestData
from datadog_api_client.v2.model.create_jira_issue_request_data_attributes import CreateJiraIssueRequestDataAttributes
Expand All @@ -23,24 +22,44 @@
data=[
CreateJiraIssueRequestData(
attributes=CreateJiraIssueRequestDataAttributes(
assignee_id="f315bdaf-9ee7-4808-a9c1-99c15bf0f4d0",
description="A description of the Jira issue.",
fields=dict([("key1", "value"), ("key2", "['value']"), ("key3", "{'key4': 'value'}")]),
priority=CasePriority.NOT_DEFINED,
title="A title for the Jira issue.",
title="A title",
description="A description",
),
relationships=CreateJiraIssueRequestDataRelationships(
findings=Findings(
data=[
FindingData(
id="ZGVmLTAwcC1pZXJ-aS0wZjhjNjMyZDNmMzRlZTgzNw==",
id="eWswLWJsdC1hZm5-aS0wMjRlYTgwMzVkZTU1MGIwYQ==",
type=FindingDataType.FINDINGS,
),
],
),
project=CaseManagementProject(
data=CaseManagementProjectData(
id="aeadc05e-98a8-11ec-ac2c-da7ad0900001",
id="959a6f71-bac8-4027-b1d3-2264f569296f",
type=CaseManagementProjectDataType.PROJECTS,
),
),
),
type=JiraIssuesDataType.JIRA_ISSUES,
),
CreateJiraIssueRequestData(
attributes=CreateJiraIssueRequestDataAttributes(
title="A title",
description="A description",
),
relationships=CreateJiraIssueRequestDataRelationships(
findings=Findings(
data=[
FindingData(
id="a3ZoLXNjbS14eXV-aS0wNWY5MGYwMGE4NDg2ODdlOA==",
type=FindingDataType.FINDINGS,
),
],
),
project=CaseManagementProject(
data=CaseManagementProjectData(
id="959a6f71-bac8-4027-b1d3-2264f569296f",
type=CaseManagementProjectDataType.PROJECTS,
),
),
Expand All @@ -51,7 +70,6 @@
)

configuration = Configuration()
configuration.unstable_operations["create_jira_issues"] = True
with ApiClient(configuration) as api_client:
api_instance = SecurityMonitoringApi(api_client)
response = api_instance.create_jira_issues(body=body)
Expand Down
54 changes: 54 additions & 0 deletions examples/v2/security-monitoring/CreateJiraIssues_379590688.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
"""
Create Jira issue for security finding returns "Created" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
from datadog_api_client.v2.model.case_management_project import CaseManagementProject
from datadog_api_client.v2.model.case_management_project_data import CaseManagementProjectData
from datadog_api_client.v2.model.case_management_project_data_type import CaseManagementProjectDataType
from datadog_api_client.v2.model.create_jira_issue_request_array import CreateJiraIssueRequestArray
from datadog_api_client.v2.model.create_jira_issue_request_data import CreateJiraIssueRequestData
from datadog_api_client.v2.model.create_jira_issue_request_data_attributes import CreateJiraIssueRequestDataAttributes
from datadog_api_client.v2.model.create_jira_issue_request_data_relationships import (
CreateJiraIssueRequestDataRelationships,
)
from datadog_api_client.v2.model.finding_data import FindingData
from datadog_api_client.v2.model.finding_data_type import FindingDataType
from datadog_api_client.v2.model.findings import Findings
from datadog_api_client.v2.model.jira_issues_data_type import JiraIssuesDataType

body = CreateJiraIssueRequestArray(
data=[
CreateJiraIssueRequestData(
attributes=CreateJiraIssueRequestDataAttributes(
title="A title",
description="A description",
),
relationships=CreateJiraIssueRequestDataRelationships(
findings=Findings(
data=[
FindingData(
id="YmNlZmJhYTcyMDU5ZDk0ZDhiNjRmNGI0NDk4MDdiNzN-MDJlMjg0NzNmYzJiODY2MzJkNjU0OTI4NmVhZTUyY2U=",
type=FindingDataType.FINDINGS,
),
],
),
project=CaseManagementProject(
data=CaseManagementProjectData(
id="959a6f71-bac8-4027-b1d3-2264f569296f",
type=CaseManagementProjectDataType.PROJECTS,
),
),
),
type=JiraIssuesDataType.JIRA_ISSUES,
),
],
)

configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = SecurityMonitoringApi(api_client)
response = api_instance.create_jira_issues(body=body)

print(response)
58 changes: 58 additions & 0 deletions examples/v2/security-monitoring/CreateJiraIssues_829823123.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
"""
Create Jira issue for security findings returns "Created" response
"""

from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v2.api.security_monitoring_api import SecurityMonitoringApi
from datadog_api_client.v2.model.case_management_project import CaseManagementProject
from datadog_api_client.v2.model.case_management_project_data import CaseManagementProjectData
from datadog_api_client.v2.model.case_management_project_data_type import CaseManagementProjectDataType
from datadog_api_client.v2.model.create_jira_issue_request_array import CreateJiraIssueRequestArray
from datadog_api_client.v2.model.create_jira_issue_request_data import CreateJiraIssueRequestData
from datadog_api_client.v2.model.create_jira_issue_request_data_attributes import CreateJiraIssueRequestDataAttributes
from datadog_api_client.v2.model.create_jira_issue_request_data_relationships import (
CreateJiraIssueRequestDataRelationships,
)
from datadog_api_client.v2.model.finding_data import FindingData
from datadog_api_client.v2.model.finding_data_type import FindingDataType
from datadog_api_client.v2.model.findings import Findings
from datadog_api_client.v2.model.jira_issues_data_type import JiraIssuesDataType

body = CreateJiraIssueRequestArray(
data=[
CreateJiraIssueRequestData(
attributes=CreateJiraIssueRequestDataAttributes(
title="A title",
description="A description",
),
relationships=CreateJiraIssueRequestDataRelationships(
findings=Findings(
data=[
FindingData(
id="a3ZoLXNjbS14eXV-aS0wNWY5MGYwMGE4NDg2ODdlOA==",
type=FindingDataType.FINDINGS,
),
FindingData(
id="eWswLWJsdC1hZm5-aS0wMjRlYTgwMzVkZTU1MGIwYQ==",
type=FindingDataType.FINDINGS,
),
],
),
project=CaseManagementProject(
data=CaseManagementProjectData(
id="959a6f71-bac8-4027-b1d3-2264f569296f",
type=CaseManagementProjectDataType.PROJECTS,
),
),
),
type=JiraIssuesDataType.JIRA_ISSUES,
),
],
)

configuration = Configuration()
with ApiClient(configuration) as api_client:
api_instance = SecurityMonitoringApi(api_client)
response = api_instance.create_jira_issues(body=body)

print(response)
2 changes: 0 additions & 2 deletions src/datadog_api_client/configuration.py
Original file line number Diff line number Diff line change
Expand Up @@ -266,10 +266,8 @@ def __init__(
"v2.get_open_api": False,
"v2.list_apis": False,
"v2.update_open_api": False,
"v2.attach_jira_issue": False,
"v2.cancel_threat_hunting_job": False,
"v2.convert_job_result_to_signal": False,
"v2.create_jira_issues": False,
"v2.delete_threat_hunting_job": False,
"v2.get_finding": False,
"v2.get_rule_version_history": False,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ def __init__(
"""
Attributes of the Jira issue to create.
:param assignee_id: Unique identifier of the user assigned to the Jira issue.
:param assignee_id: Unique identifier of the Datadog user assigned to the Jira issue.
:type assignee_id: str, optional
:param description: Description of the Jira issue. If not provided, the description will be automatically generated.
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2026-01-02T17:04:07.979Z
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
interactions:
- request:
body: '{"data":[{"attributes":{"description":"A description","title":"A title"},"relationships":{"findings":{"data":[{"id":"YmNlZmJhYTcyMDU5ZDk0ZDhiNjRmNGI0NDk4MDdiNzN-MDJlMjg0NzNmYzJiODY2MzJkNjU0OTI4NmVhZTUyY2U=","type":"findings"}]},"project":{"data":{"id":"959a6f71-bac8-4027-b1d3-2264f569296f","type":"projects"}}},"type":"jira_issues"}]}'
headers:
accept:
- application/json
content-type:
- application/json
method: POST
uri: https://api.datadoghq.com/api/v2/security/findings/jira_issues
response:
body:
string: '{"data":[{"id":"b5b9ee39-29f8-4b84-a878-28e597e2a33f","type":"cases","attributes":{"created_at":"2026-01-02T17:04:10.514692Z","creation_source":"CS_SECURITY_FINDING","description":"A
description","insights":[{"type":"SECURITY_FINDING","ref":"/security/csm/vm?query=%40workflow.integrations.cases.id%3A%2A\u0026vulnerability=bcefbaa72059d94d8b64f4b449807b73","resource_id":"YmNlZmJhYTcyMDU5ZDk0ZDhiNjRmNGI0NDk4MDdiNzN-MDJlMjg0NzNmYzJiODY2MzJkNjU0OTI4NmVhZTUyY2U="}],"jira_issue":{"status":"COMPLETED","result":{"issue_id":"2523546","issue_key":"CSMSEC-105847","issue_url":"https://datadoghq-sandbox-538.atlassian.net/browse/CSMSEC-105847","account_id":"fdcffa62-24ab-4914-a195-a22bdc607030"}},"key":"CSMINV-521","modified_at":"2026-01-02T17:04:11.504549Z","priority":"P4","status":"OPEN","status_group":"SG_OPEN","status_name":"Open","title":"A
title","type":"SECURITY"},"relationships":{"created_by":{"data":{"id":"dc09afab-6ae7-11ef-92b1-828dac1b0195","type":"users"}},"project":{"data":{"id":"959a6f71-bac8-4027-b1d3-2264f569296f","type":"projects"}}}}]}'
headers:
content-type:
- application/vnd.api+json
status:
code: 201
message: Created
- request:
body: '{"data":{"relationships":{"findings":{"data":[{"id":"YmNlZmJhYTcyMDU5ZDk0ZDhiNjRmNGI0NDk4MDdiNzN-MDJlMjg0NzNmYzJiODY2MzJkNjU0OTI4NmVhZTUyY2U=","type":"findings"}]}},"type":"cases"}}'
headers:
accept:
- '*/*'
content-type:
- application/json
method: DELETE
uri: https://api.datadoghq.com/api/v2/security/findings/cases
response:
body:
string: ''
headers: {}
status:
code: 204
message: No Content
version: 1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2026-01-02T17:21:33.080Z
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
interactions:
- request:
body: '{"data":[{"attributes":{"description":"A description","title":"A title"},"relationships":{"findings":{"data":[{"id":"a3ZoLXNjbS14eXV-aS0wNWY5MGYwMGE4NDg2ODdlOA==","type":"findings"},{"id":"eWswLWJsdC1hZm5-aS0wMjRlYTgwMzVkZTU1MGIwYQ==","type":"findings"}]},"project":{"data":{"id":"959a6f71-bac8-4027-b1d3-2264f569296f","type":"projects"}}},"type":"jira_issues"}]}'
headers:
accept:
- application/json
content-type:
- application/json
method: POST
uri: https://api.datadoghq.com/api/v2/security/findings/jira_issues
response:
body:
string: '{"data":[{"id":"527aa591-d40e-4445-be80-9d012ba8397e","type":"cases","attributes":{"created_at":"2026-01-02T17:21:34.65318Z","creation_source":"CS_SECURITY_FINDING","description":"A
description","insights":[{"type":"SECURITY_FINDING","ref":"/security/compliance?panels=cpfinding%7Cevent%7CruleId%3Akvh-scm-xyu%7CresourceId%3Ai-05f90f00a848687e8\u0026query=%40finding_id%3Aa3ZoLXNjbS14eXV-aS0wNWY5MGYwMGE4NDg2ODdlOA%3D%3D","resource_id":"a3ZoLXNjbS14eXV-aS0wNWY5MGYwMGE4NDg2ODdlOA=="},{"type":"SECURITY_FINDING","ref":"/security/compliance?panels=cpfinding%7Cevent%7CruleId%3Ayk0-blt-afn%7CresourceId%3Ai-024ea8035de550b0a\u0026query=%40finding_id%3AeWswLWJsdC1hZm5-aS0wMjRlYTgwMzVkZTU1MGIwYQ%3D%3D","resource_id":"eWswLWJsdC1hZm5-aS0wMjRlYTgwMzVkZTU1MGIwYQ=="}],"jira_issue":{"status":"COMPLETED","result":{"issue_id":"2523579","issue_key":"CSMSEC-105849","issue_url":"https://datadoghq-sandbox-538.atlassian.net/browse/CSMSEC-105849","account_id":"fdcffa62-24ab-4914-a195-a22bdc607030"}},"key":"CSMINV-523","modified_at":"2026-01-02T17:21:35.836445Z","priority":"P3","status":"OPEN","status_group":"SG_OPEN","status_name":"Open","title":"A
title","type":"SECURITY"},"relationships":{"created_by":{"data":{"id":"dc09afab-6ae7-11ef-92b1-828dac1b0195","type":"users"}},"project":{"data":{"id":"959a6f71-bac8-4027-b1d3-2264f569296f","type":"projects"}}}}]}'
headers:
content-type:
- application/vnd.api+json
status:
code: 201
message: Created
- request:
body: '{"data":{"relationships":{"findings":{"data":[{"id":"a3ZoLXNjbS14eXV-aS0wNWY5MGYwMGE4NDg2ODdlOA==","type":"findings"}]}},"type":"cases"}}'
headers:
accept:
- '*/*'
content-type:
- application/json
method: DELETE
uri: https://api.datadoghq.com/api/v2/security/findings/cases
response:
body:
string: ''
headers: {}
status:
code: 204
message: No Content
version: 1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2026-01-02T16:54:04.434Z
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
interactions:
- request:
body: '{"data":[{"attributes":{},"relationships":{"findings":{"data":[]},"project":{"data":{"id":"7f198869-c7ef-4afc-97cf-da5cdc13b5c3","type":"projects"}}},"type":"jira_issues"}]}'
headers:
accept:
- application/json
content-type:
- application/json
method: POST
uri: https://api.datadoghq.com/api/v2/security/findings/jira_issues
response:
body:
string: '{"errors":[{"status":"400","title":"Bad Request","detail":"no finding
provided"}]}'
headers:
content-type:
- application/vnd.api+json
status:
code: 400
message: Bad Request
version: 1
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2026-01-02T17:23:28.665Z
Loading
Loading