diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml
index 0f0a8a4eda9..37053ac91c9 100644
--- a/.generator/schemas/v2/openapi.yaml
+++ b/.generator/schemas/v2/openapi.yaml
@@ -249,7 +249,7 @@ components:
schema:
$ref: "#/components/schemas/CaseSortableField"
CaseTypeIDPathParameter:
- description: Case type's UUID
+ description: The UUID of the case type.
example: "f98a5a5b-e0ff-45d4-b2f5-afe6e74de505"
in: path
name: case_type_id
@@ -257,7 +257,7 @@ components:
schema:
type: string
CellIDPathParameter:
- description: Timeline cell's UUID
+ description: The UUID of the timeline cell (comment) to update.
example: "f98a5a5b-e0ff-45d4-b2f5-afe6e74de504"
in: path
name: cell_id
@@ -853,6 +853,22 @@ components:
required: true
schema:
type: string
+ LinkIDPathParameter:
+ description: "The UUID of the case link."
+ in: path
+ name: link_id
+ required: true
+ schema:
+ example: "804cd682-55f6-4541-ab00-b608b282ea7d"
+ type: string
+ MaintenanceWindowIDPathParameter:
+ description: The UUID of the maintenance window.
+ example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
+ in: path
+ name: maintenance_window_id
+ required: true
+ schema:
+ type: string
MembershipSort:
description: >-
Field to sort memberships by. Supported values: `name`, `uuid`, `-name`, `-uuid`. Defaults to `uuid`.
@@ -1441,6 +1457,14 @@ components:
schema:
example: "1"
type: string
+ RuleIDPathParameter:
+ description: The UUID of the automation rule.
+ example: "e6773723-fe58-49ff-9975-dff00f14e28d"
+ in: path
+ name: rule_id
+ required: true
+ schema:
+ type: string
RuleId:
description: The ID of the rule.
in: path
@@ -1619,6 +1643,22 @@ components:
schema:
example: "00000000-0000-9999-0000-000000000000"
type: string
+ UserUUIDPathParameter:
+ description: The UUID of the user to add or remove as a watcher.
+ example: "8146583c-0b5f-11ec-abf8-da7ad0900001"
+ in: path
+ name: user_uuid
+ required: true
+ schema:
+ type: string
+ ViewIDPathParameter:
+ description: The UUID of the case view.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ in: path
+ name: view_id
+ required: true
+ schema:
+ type: string
WorkflowId:
description: The ID of the workflow.
in: path
@@ -7626,6 +7666,219 @@ components:
description: Whether to auto-transition cases when self-assigned.
type: boolean
type: object
+ AutomationRule:
+ description: An automation rule that executes an action (such as running a Datadog workflow or assigning an AI agent) when a specified case event occurs within a project.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/AutomationRuleAttributes"
+ id:
+ description: Automation rule identifier.
+ example: "e6773723-fe58-49ff-9975-dff00f14e28d"
+ type: string
+ relationships:
+ $ref: "#/components/schemas/AutomationRuleRelationships"
+ type:
+ $ref: "#/components/schemas/CaseAutomationRuleResourceType"
+ required:
+ - id
+ - type
+ - attributes
+ type: object
+ AutomationRuleAction:
+ description: Defines what happens when the rule triggers. Combines an action type with action-specific configuration data.
+ properties:
+ data:
+ $ref: "#/components/schemas/AutomationRuleActionData"
+ type:
+ $ref: "#/components/schemas/AutomationRuleActionType"
+ required:
+ - type
+ - data
+ type: object
+ AutomationRuleActionData:
+ description: Configuration for the action to execute, dependent on the action type.
+ properties:
+ agent_type:
+ description: The type of AI agent to assign. Required when the action type is `assign_agent`.
+ type: string
+ assigned_agent_id:
+ description: The identifier of the AI agent to assign to the case. Required when the action type is `assign_agent`.
+ type: string
+ handle:
+ description: The handle of the Datadog workflow to execute. Required when the action type is `execute_workflow`.
+ example: "workflow-handle-123"
+ type: string
+ type: object
+ AutomationRuleActionType:
+ description: The type of automated action to perform when the rule triggers. `execute_workflow` runs a Datadog workflow; `assign_agent` assigns an AI agent to the case.
+ enum:
+ - execute_workflow
+ - assign_agent
+ example: execute_workflow
+ type: string
+ x-enum-varnames:
+ - EXECUTE_WORKFLOW
+ - ASSIGN_AGENT
+ AutomationRuleAttributes:
+ description: Core attributes of an automation rule, including its name, trigger condition, action to execute, and current state.
+ properties:
+ action:
+ $ref: "#/components/schemas/AutomationRuleAction"
+ created_at:
+ description: Timestamp when the automation rule was created.
+ example: "2024-01-01T00:00:00.000Z"
+ format: date-time
+ readOnly: true
+ type: string
+ modified_at:
+ description: Timestamp when the automation rule was last modified.
+ format: date-time
+ readOnly: true
+ type: string
+ name:
+ description: A human-readable name for the automation rule, used to identify the rule in the UI and API responses.
+ example: "Auto-assign workflow"
+ type: string
+ state:
+ $ref: "#/components/schemas/CaseAutomationRuleState"
+ trigger:
+ $ref: "#/components/schemas/AutomationRuleTrigger"
+ required:
+ - name
+ - trigger
+ - action
+ - state
+ - created_at
+ type: object
+ AutomationRuleCreate:
+ description: Data object for creating an automation rule.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/AutomationRuleCreateAttributes"
+ type:
+ $ref: "#/components/schemas/CaseAutomationRuleResourceType"
+ required:
+ - type
+ - attributes
+ type: object
+ AutomationRuleCreateAttributes:
+ description: Attributes required to create an automation rule.
+ properties:
+ action:
+ $ref: "#/components/schemas/AutomationRuleAction"
+ name:
+ description: Name of the automation rule.
+ example: "Auto-assign workflow"
+ type: string
+ state:
+ $ref: "#/components/schemas/CaseAutomationRuleState"
+ trigger:
+ $ref: "#/components/schemas/AutomationRuleTrigger"
+ required:
+ - name
+ - trigger
+ - action
+ type: object
+ AutomationRuleCreateRequest:
+ description: Request payload for creating an automation rule.
+ properties:
+ data:
+ $ref: "#/components/schemas/AutomationRuleCreate"
+ required:
+ - data
+ type: object
+ AutomationRuleRelationships:
+ description: Related resources for the automation rule, including the users who created and last modified it.
+ properties:
+ created_by:
+ $ref: "#/components/schemas/NullableUserRelationship"
+ modified_by:
+ $ref: "#/components/schemas/NullableUserRelationship"
+ type: object
+ AutomationRuleResponse:
+ description: Response containing a single automation rule.
+ properties:
+ data:
+ $ref: "#/components/schemas/AutomationRule"
+ required:
+ - data
+ type: object
+ AutomationRuleTrigger:
+ description: Defines when the rule activates. Combines a trigger type (the case event to listen for) with optional trigger data (conditions that narrow when the trigger fires).
+ properties:
+ data:
+ $ref: "#/components/schemas/AutomationRuleTriggerData"
+ type:
+ $ref: "#/components/schemas/AutomationRuleTriggerType"
+ required:
+ - type
+ type: object
+ AutomationRuleTriggerData:
+ description: Additional configuration for the trigger, dependent on the trigger type. For `status_transitioned` triggers, specify `from_status_name` and `to_status_name`. For `attribute_value_changed` triggers, specify `field` and `change_type`.
+ properties:
+ approval_type:
+ description: The approval outcome to match. Used with `case_review_approved` triggers.
+ type: string
+ change_type:
+ description: "The kind of attribute change to match. Allowed values: `VALUE_ADDED`, `VALUE_DELETED`, `ANY_CHANGES`. Used with `attribute_value_changed` triggers."
+ type: string
+ field:
+ description: The case attribute field name to monitor for changes. Used with `attribute_value_changed` triggers.
+ type: string
+ from_status_name:
+ description: The originating status name. Used with `status_transitioned` triggers to match transitions from this status.
+ type: string
+ to_status_name:
+ description: The destination status name. Used with `status_transitioned` triggers to match transitions to this status.
+ type: string
+ type: object
+ AutomationRuleTriggerType:
+ description: The case event that activates the automation rule.
+ enum:
+ - case_created
+ - status_transitioned
+ - attribute_value_changed
+ - event_correlation_signal_correlated
+ - case_review_approved
+ - comment_added
+ example: case_created
+ type: string
+ x-enum-varnames:
+ - CASE_CREATED
+ - STATUS_TRANSITIONED
+ - ATTRIBUTE_VALUE_CHANGED
+ - EVENT_CORRELATION_SIGNAL_CORRELATED
+ - CASE_REVIEW_APPROVED
+ - COMMENT_ADDED
+ AutomationRuleUpdate:
+ description: Data object for updating an automation rule.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/AutomationRuleCreateAttributes"
+ type:
+ $ref: "#/components/schemas/CaseAutomationRuleResourceType"
+ required:
+ - type
+ type: object
+ AutomationRuleUpdateRequest:
+ description: Request payload for updating an automation rule.
+ properties:
+ data:
+ $ref: "#/components/schemas/AutomationRuleUpdate"
+ required:
+ - data
+ type: object
+ AutomationRulesResponse:
+ description: Response containing a list of automation rules for a project.
+ properties:
+ data:
+ description: List of automation rules.
+ items:
+ $ref: "#/components/schemas/AutomationRule"
+ type: array
+ required:
+ - data
+ type: object
AwsAccountId:
description: The ID of the AWS account.
example: "123456789012"
@@ -10890,6 +11143,128 @@ components:
- IN_PROGRESS
- COMPLETED
- FAILED
+ CaseAggregateGroup:
+ description: A single group within the aggregation results, containing the group key and its associated count values.
+ properties:
+ group:
+ description: "The value of the field being grouped on (for example, `OPEN` when grouping by status)."
+ example: "OPEN"
+ type: string
+ value:
+ description: The count of cases in this group.
+ example:
+ - 42.0
+ items:
+ format: double
+ type: number
+ type: array
+ required:
+ - group
+ - value
+ type: object
+ CaseAggregateGroupBy:
+ description: Configuration for grouping aggregated results by one or more case fields.
+ properties:
+ groups:
+ description: Fields to group by.
+ example:
+ - "status"
+ items:
+ type: string
+ type: array
+ limit:
+ description: Maximum number of groups to return.
+ example: 14
+ format: int32
+ maximum: 1000
+ type: integer
+ required:
+ - groups
+ - limit
+ type: object
+ CaseAggregateRequest:
+ description: Request payload for aggregating case counts with grouping. Use this to get faceted breakdowns of cases (for example, count of cases grouped by priority and status).
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseAggregateRequestData"
+ required:
+ - data
+ type: object
+ CaseAggregateRequestAttributes:
+ description: Attributes for the aggregation request, including the search query and grouping configuration.
+ properties:
+ group_by:
+ $ref: "#/components/schemas/CaseAggregateGroupBy"
+ query_filter:
+ description: "A search query to filter which cases are included in the aggregation. Uses the same syntax as the Case Management search bar."
+ example: "service:case-api"
+ type: string
+ required:
+ - query_filter
+ - group_by
+ type: object
+ CaseAggregateRequestData:
+ description: Data object wrapping the aggregation query type and attributes.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseAggregateRequestAttributes"
+ type:
+ $ref: "#/components/schemas/CaseAggregateResourceType"
+ required:
+ - attributes
+ - type
+ type: object
+ CaseAggregateResourceType:
+ description: JSON:API resource type for case aggregation requests.
+ enum:
+ - aggregate
+ example: aggregate
+ type: string
+ x-enum-varnames:
+ - AGGREGATE
+ CaseAggregateResponse:
+ description: Response containing aggregated case counts grouped by the requested fields.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseAggregateResponseData"
+ required:
+ - data
+ type: object
+ CaseAggregateResponseAttributes:
+ description: Attributes of the aggregation result, including the total count across all groups and the per-group breakdowns.
+ properties:
+ groups:
+ description: Aggregated groups.
+ items:
+ $ref: "#/components/schemas/CaseAggregateGroup"
+ type: array
+ total:
+ description: Total count of aggregated cases.
+ example: 100.0
+ format: double
+ type: number
+ required:
+ - total
+ - groups
+ type: object
+ CaseAggregateResponseData:
+ description: Data object containing the aggregation results, including total count and per-group breakdowns.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseAggregateResponseAttributes"
+ id:
+ description: Aggregate response identifier.
+ example: "agg-result-001"
+ type: string
+ type:
+ description: Aggregate resource type.
+ example: "aggregate"
+ type: string
+ required:
+ - type
+ - id
+ - attributes
+ type: object
CaseAssign:
description: Case assign
properties:
@@ -10982,6 +11357,102 @@ components:
example: "3b010bde-09ce-4449-b745-71dd5f861963"
type: string
type: object
+ CaseAutomationRuleResourceType:
+ default: rule
+ description: JSON:API resource type for case automation rules.
+ enum:
+ - rule
+ example: rule
+ type: string
+ x-enum-varnames:
+ - RULE
+ CaseAutomationRuleState:
+ description: Whether the automation rule is active. Enabled rules trigger on matching case events; disabled rules are inactive but preserve their configuration.
+ enum:
+ - ENABLED
+ - DISABLED
+ example: ENABLED
+ type: string
+ x-enum-varnames:
+ - ENABLED
+ - DISABLED
+ CaseBulkActionType:
+ description: "The type of action to apply in a bulk update. Allowed values are `priority`, `status`, `assign`, `unassign`, `archive`, `unarchive`, `jira`, `servicenow`, `linear`, `update_project`."
+ enum:
+ - priority
+ - status
+ - assign
+ - unassign
+ - archive
+ - unarchive
+ - jira
+ - servicenow
+ - linear
+ - update_project
+ example: priority
+ type: string
+ x-enum-varnames:
+ - PRIORITY
+ - STATUS
+ - ASSIGN
+ - UNASSIGN
+ - ARCHIVE
+ - UNARCHIVE
+ - JIRA
+ - SERVICENOW
+ - LINEAR
+ - UPDATE_PROJECT
+ CaseBulkResourceType:
+ description: JSON:API resource type for bulk case operations.
+ enum:
+ - bulk
+ example: bulk
+ type: string
+ x-enum-varnames:
+ - BULK
+ CaseBulkUpdateRequest:
+ description: Request payload for applying a single action (such as changing priority, status, or assignment) to multiple cases at once.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseBulkUpdateRequestData"
+ required:
+ - data
+ type: object
+ CaseBulkUpdateRequestAttributes:
+ description: Attributes for the bulk update, specifying which cases to update and the action to apply.
+ properties:
+ case_ids:
+ description: An array of case identifiers to apply the bulk action to.
+ example:
+ - "case-id-1"
+ - "case-id-2"
+ items:
+ type: string
+ type: array
+ payload:
+ additionalProperties:
+ type: string
+ description: A key-value map of action-specific parameters. The required keys depend on the action type (for example, `priority` for the priority action, `assignee_id` for assign).
+ example:
+ priority: "P1"
+ type: object
+ type:
+ $ref: "#/components/schemas/CaseBulkActionType"
+ required:
+ - case_ids
+ - type
+ type: object
+ CaseBulkUpdateRequestData:
+ description: Data object wrapping the bulk update type and attributes.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseBulkUpdateRequestAttributes"
+ type:
+ $ref: "#/components/schemas/CaseBulkResourceType"
+ required:
+ - attributes
+ - type
+ type: object
CaseComment:
description: Case comment
properties:
@@ -11011,6 +11482,75 @@ components:
required:
- data
type: object
+ CaseCountGroup:
+ description: A facet group containing counts broken down by the distinct values of a case field (for example, status or priority).
+ properties:
+ group:
+ description: "The name of the field being grouped on (for example, `status` or `priority`)."
+ example: "status"
+ type: string
+ group_values:
+ description: Values within this group.
+ items:
+ $ref: "#/components/schemas/CaseCountGroupValue"
+ type: array
+ required:
+ - group
+ - group_values
+ type: object
+ CaseCountGroupValue:
+ description: A single value within a count group, representing the number of cases with that specific field value.
+ properties:
+ count:
+ description: Count of cases for this value.
+ example: 42
+ format: int64
+ type: integer
+ value:
+ description: The group value.
+ example: "OPEN"
+ type: string
+ required:
+ - value
+ - count
+ type: object
+ CaseCountResponse:
+ description: Response containing the total number of cases matching a query, optionally grouped by specified fields.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseCountResponseData"
+ required:
+ - data
+ type: object
+ CaseCountResponseAttributes:
+ description: Attributes for the count response, including the total count and optional facet breakdowns.
+ properties:
+ groups:
+ description: List of facet groups, one per field specified in `group_bys`.
+ items:
+ $ref: "#/components/schemas/CaseCountGroup"
+ type: array
+ required:
+ - groups
+ type: object
+ CaseCountResponseData:
+ description: Data object containing the count results, including per-field group breakdowns.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseCountResponseAttributes"
+ id:
+ description: Count response identifier.
+ example: "count-result-001"
+ type: string
+ type:
+ description: Count resource type.
+ example: "count"
+ type: string
+ required:
+ - type
+ - id
+ - attributes
+ type: object
CaseCreate:
description: Case creation data
properties:
@@ -11094,6 +11634,86 @@ components:
required:
- data
type: object
+ CaseInsight:
+ description: A reference to an external Datadog resource that provides investigative context for a case, such as a security signal, monitor alert, error tracking issue, or incident.
+ properties:
+ ref:
+ description: "The URL path or deep link to the insight resource within Datadog (for example, `/monitors/12345?q=total`)."
+ example: "/monitors/12345?q=total"
+ type: string
+ resource_id:
+ description: The unique identifier of the referenced Datadog resource (for example, a monitor ID, incident ID, or signal ID).
+ example: "12345"
+ type: string
+ type:
+ $ref: "#/components/schemas/CaseInsightType"
+ required:
+ - type
+ - ref
+ - resource_id
+ type: object
+ CaseInsightType:
+ description: The type of Datadog resource linked to the case as contextual evidence. Each type corresponds to a different Datadog product signal (for example, a security finding, a monitor alert, or an incident).
+ enum:
+ - SECURITY_SIGNAL
+ - MONITOR
+ - EVENT_CORRELATION
+ - ERROR_TRACKING
+ - CLOUD_COST_RECOMMENDATION
+ - INCIDENT
+ - SENSITIVE_DATA_SCANNER_ISSUE
+ - EVENT
+ - WATCHDOG_STORY
+ - WIDGET
+ - SECURITY_FINDING
+ - INSIGHT_SCORECARD_CAMPAIGN
+ - RESOURCE_POLICY
+ - APM_RECOMMENDATION
+ - SCM_URL
+ - PROFILING_DOWNSIZING_EXPERIMENT
+ example: SECURITY_SIGNAL
+ type: string
+ x-enum-varnames:
+ - SECURITY_SIGNAL
+ - MONITOR
+ - EVENT_CORRELATION
+ - ERROR_TRACKING
+ - CLOUD_COST_RECOMMENDATION
+ - INCIDENT
+ - SENSITIVE_DATA_SCANNER_ISSUE
+ - EVENT
+ - WATCHDOG_STORY
+ - WIDGET
+ - SECURITY_FINDING
+ - INSIGHT_SCORECARD_CAMPAIGN
+ - RESOURCE_POLICY
+ - APM_RECOMMENDATION
+ - SCM_URL
+ - PROFILING_DOWNSIZING_EXPERIMENT
+ CaseInsightsAttributes:
+ description: Attributes for adding or removing insights from a case.
+ properties:
+ insights:
+ description: Array of insights to add to or remove from a case.
+ items:
+ $ref: "#/components/schemas/CaseInsight"
+ maxItems: 100
+ minItems: 1
+ type: array
+ required:
+ - insights
+ type: object
+ CaseInsightsData:
+ description: Data object containing the insights to add or remove.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseInsightsAttributes"
+ type:
+ $ref: "#/components/schemas/CaseResourceType"
+ required:
+ - type
+ - attributes
+ type: object
CaseInsightsItems:
description: An insight of the case.
properties:
@@ -11110,6 +11730,106 @@ components:
example: "SECURITY_FINDING"
type: string
type: object
+ CaseInsightsRequest:
+ description: Request payload for adding or removing case insights.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseInsightsData"
+ required:
+ - data
+ type: object
+ CaseLink:
+ description: "A directional link representing a relationship between two entities. At least one entity must be a case."
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseLinkAttributes"
+ id:
+ description: "The case link identifier."
+ example: "804cd682-55f6-4541-ab00-b608b282ea7d"
+ type: string
+ type:
+ $ref: "#/components/schemas/CaseLinkResourceType"
+ required:
+ - id
+ - type
+ - attributes
+ type: object
+ CaseLinkAttributes:
+ description: "Attributes describing a directional relationship between two entities (cases, incidents, or pages)."
+ properties:
+ child_entity_id:
+ description: "The UUID of the child (target) entity in the relationship."
+ example: "4417921d-0866-4a38-822c-6f2a0f65f77d"
+ type: string
+ child_entity_type:
+ description: "The type of the child entity. Allowed values: `CASE`, `INCIDENT`, `PAGE`, `AGENT_CONVERSATION`."
+ example: "CASE"
+ type: string
+ parent_entity_id:
+ description: "The UUID of the parent (source) entity in the relationship."
+ example: "bf0cbac6-4c16-4cfb-b6bf-ca5e0ec37a4f"
+ type: string
+ parent_entity_type:
+ description: "The type of the parent entity. Allowed values: `CASE`, `INCIDENT`, `PAGE`, `AGENT_CONVERSATION`."
+ example: "CASE"
+ type: string
+ relationship:
+ description: "The type of directional relationship. Allowed values: `RELATES_TO` (bidirectional association), `CAUSES` (parent causes child), `BLOCKS` (parent blocks child), `DUPLICATES` (parent duplicates child), `PARENT_OF` (hierarchical), `SUCCESSOR_OF` (sequence), `ESCALATES_TO` (priority escalation)."
+ example: "BLOCKS"
+ type: string
+ required:
+ - relationship
+ - parent_entity_id
+ - parent_entity_type
+ - child_entity_id
+ - child_entity_type
+ type: object
+ CaseLinkCreate:
+ description: "Data object for creating a case link."
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseLinkAttributes"
+ type:
+ $ref: "#/components/schemas/CaseLinkResourceType"
+ required:
+ - type
+ - attributes
+ type: object
+ CaseLinkCreateRequest:
+ description: "Request payload for creating a link between two entities."
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseLinkCreate"
+ required:
+ - data
+ type: object
+ CaseLinkResourceType:
+ description: "JSON:API resource type for case links."
+ enum:
+ - link
+ example: link
+ type: string
+ x-enum-varnames:
+ - LINK
+ CaseLinkResponse:
+ description: "Response containing a single case link."
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseLink"
+ required:
+ - data
+ type: object
+ CaseLinksResponse:
+ description: "Response containing a list of case links."
+ properties:
+ data:
+ description: "A list of case links."
+ items:
+ $ref: "#/components/schemas/CaseLink"
+ type: array
+ required:
+ - data
+ type: object
CaseManagementProject:
description: Case management project.
properties:
@@ -11352,7 +12072,7 @@ components:
description: An attribute value.
type: string
type: array
- description: The definition of `CaseObjectAttributes` object.
+ description: Key-value pairs of case attributes. Each key maps to an array of string values, used for flexible metadata such as labels or tags.
type: object
CasePriority:
default: NOT_DEFINED
@@ -11387,7 +12107,7 @@ components:
type: object
CaseResourceType:
default: case
- description: Case resource type
+ description: JSON:API resource type for cases.
enum:
- case
example: case
@@ -11467,7 +12187,7 @@ components:
x-enum-varnames:
- STANDARD
CaseTypeCreate:
- description: Case type
+ description: Data object for creating a case type.
properties:
attributes:
$ref: "#/components/schemas/CaseTypeResourceAttributes"
@@ -11478,7 +12198,7 @@ components:
- type
type: object
CaseTypeCreateRequest:
- description: Case type create request
+ description: Request payload for creating a case type.
properties:
data:
$ref: "#/components/schemas/CaseTypeCreate"
@@ -11486,7 +12206,7 @@ components:
- data
type: object
CaseTypeResource:
- description: The definition of `CaseType` object.
+ description: A case type that defines a classification category for cases. Each case type can have its own custom attributes, statuses, and automation rules.
properties:
attributes:
$ref: "#/components/schemas/CaseTypeResourceAttributes"
@@ -11498,24 +12218,24 @@ components:
$ref: "#/components/schemas/CaseTypeResourceType"
type: object
CaseTypeResourceAttributes:
- description: Case Type resource attributes
+ description: "Attributes of a case type, which define a classification category for cases. Organizations use case types to model different workflows (for example, Security Incident, Bug Report, Change Request)."
properties:
deleted_at:
- description: Timestamp of when the case type was deleted
+ description: Timestamp when the case type was marked as deleted. A null value indicates the case type is active.
format: date-time
nullable: true
readOnly: true
type: string
description:
- description: Case type description.
+ description: A detailed description explaining when this case type should be used.
example: "Investigations done in case management"
type: string
emoji:
- description: Case type emoji.
+ description: An emoji icon representing the case type in the UI.
example: "🕵🏻♂️"
type: string
name:
- description: Case type name.
+ description: The display name of the case type, shown in the Case Management UI when creating or viewing cases.
example: "Investigation"
type: string
required:
@@ -11523,7 +12243,7 @@ components:
type: object
CaseTypeResourceType:
default: case_type
- description: Case type resource type
+ description: JSON:API resource type for case types.
enum:
- case_type
example: case_type
@@ -11531,13 +12251,31 @@ components:
x-enum-varnames:
- CASE_TYPE
CaseTypeResponse:
- description: Case type response
+ description: Response containing a single case type.
properties:
data:
$ref: "#/components/schemas/CaseTypeResource"
type: object
+ CaseTypeUpdate:
+ description: Data object for updating a case type.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseTypeResourceAttributes"
+ type:
+ $ref: "#/components/schemas/CaseTypeResourceType"
+ required:
+ - type
+ type: object
+ CaseTypeUpdateRequest:
+ description: Request payload for updating a case type.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseTypeUpdate"
+ required:
+ - data
+ type: object
CaseTypesResponse:
- description: Case types response.
+ description: Response containing a list of case types.
properties:
data:
description: List of case types
@@ -11572,6 +12310,35 @@ components:
required:
- data
type: object
+ CaseUpdateComment:
+ description: Data object for updating a case comment.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseUpdateCommentAttributes"
+ type:
+ $ref: "#/components/schemas/CaseResourceType"
+ required:
+ - type
+ - attributes
+ type: object
+ CaseUpdateCommentAttributes:
+ description: Attributes for updating a comment.
+ properties:
+ comment:
+ description: The updated comment message.
+ example: "Updated comment text"
+ type: string
+ required:
+ - comment
+ type: object
+ CaseUpdateCommentRequest:
+ description: Request payload for updating a comment on a case timeline.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseUpdateComment"
+ required:
+ - data
+ type: object
CaseUpdateCustomAttribute:
description: Case update custom attribute
properties:
@@ -11620,6 +12387,35 @@ components:
required:
- data
type: object
+ CaseUpdateDueDate:
+ description: Data object for updating a case's due date.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseUpdateDueDateAttributes"
+ type:
+ $ref: "#/components/schemas/CaseResourceType"
+ required:
+ - attributes
+ - type
+ type: object
+ CaseUpdateDueDateAttributes:
+ description: Attributes for setting or clearing a case's due date.
+ properties:
+ due_date:
+ description: "The target resolution date for the case, in `YYYY-MM-DD` format. Set to `null` to clear the due date."
+ example: "2026-12-31"
+ type: string
+ required:
+ - due_date
+ type: object
+ CaseUpdateDueDateRequest:
+ description: Request payload for updating a case's due date.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseUpdateDueDate"
+ required:
+ - data
+ type: object
CaseUpdatePriority:
description: Case priority status
properties:
@@ -11647,6 +12443,35 @@ components:
required:
- data
type: object
+ CaseUpdateResolvedReason:
+ description: Data object for updating a case's resolved reason.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseUpdateResolvedReasonAttributes"
+ type:
+ $ref: "#/components/schemas/CaseResourceType"
+ required:
+ - attributes
+ - type
+ type: object
+ CaseUpdateResolvedReasonAttributes:
+ description: Attributes for setting the resolution reason on a security case.
+ properties:
+ security_resolved_reason:
+ description: "The reason the security case was resolved (for example, `FALSE_POSITIVE`, `TRUE_POSITIVE`, `BENIGN_POSITIVE`)."
+ example: "FALSE_POSITIVE"
+ type: string
+ required:
+ - security_resolved_reason
+ type: object
+ CaseUpdateResolvedReasonRequest:
+ description: Request payload for updating the resolution reason on a closed security case.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseUpdateResolvedReason"
+ required:
+ - data
+ type: object
CaseUpdateStatus:
description: Case update status
properties:
@@ -11704,6 +12529,217 @@ components:
required:
- data
type: object
+ CaseView:
+ description: A saved case view that provides a filtered, reusable list of cases matching a specific query. Views act as persistent dashboards for monitoring case subsets.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseViewAttributes"
+ id:
+ description: The view's identifier.
+ example: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ type: string
+ relationships:
+ $ref: "#/components/schemas/CaseViewRelationships"
+ type:
+ $ref: "#/components/schemas/CaseViewResourceType"
+ required:
+ - id
+ - type
+ - attributes
+ type: object
+ CaseViewAttributes:
+ description: Attributes of a case view, including the filter query and optional notification rule.
+ properties:
+ created_at:
+ description: Timestamp when the view was created.
+ example: "2024-01-01T00:00:00.000Z"
+ format: date-time
+ readOnly: true
+ type: string
+ modified_at:
+ description: Timestamp when the view was last modified.
+ format: date-time
+ readOnly: true
+ type: string
+ name:
+ description: A human-readable name for the view, displayed in the Case Management UI.
+ example: Open bugs
+ type: string
+ np_rule_id:
+ description: The identifier of a notification rule linked to this view. When set, users subscribed to the view receive alerts for matching cases.
+ type: string
+ query:
+ description: "The search query that determines which cases appear in this view. Uses the same syntax as the Case Management search bar (for example, `status:open priority:P1`)."
+ example: "status:open type:bug"
+ type: string
+ required:
+ - name
+ - query
+ - created_at
+ type: object
+ CaseViewCreate:
+ description: Data object for creating a case view.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseViewCreateAttributes"
+ type:
+ $ref: "#/components/schemas/CaseViewResourceType"
+ required:
+ - type
+ - attributes
+ type: object
+ CaseViewCreateAttributes:
+ description: Attributes required to create a case view.
+ properties:
+ name:
+ description: The name of the view.
+ example: Open bugs
+ type: string
+ np_rule_id:
+ description: The identifier of a notification rule linked to this view. When set, users subscribed to the view receive alerts for matching cases.
+ type: string
+ project_id:
+ description: The UUID of the project this view belongs to. Views are scoped to a single project.
+ example: e555e290-ed65-49bd-ae18-8acbfcf18db7
+ type: string
+ query:
+ description: The query used to filter cases in this view.
+ example: "status:open type:bug"
+ type: string
+ required:
+ - name
+ - query
+ - project_id
+ type: object
+ CaseViewCreateRequest:
+ description: Request payload for creating a case view.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseViewCreate"
+ required:
+ - data
+ type: object
+ CaseViewRelationships:
+ description: Related resources for the case view, including the creator, last modifier, and associated project.
+ properties:
+ created_by:
+ $ref: "#/components/schemas/NullableUserRelationship"
+ modified_by:
+ $ref: "#/components/schemas/NullableUserRelationship"
+ project:
+ $ref: "#/components/schemas/ProjectRelationship"
+ type: object
+ CaseViewResourceType:
+ default: view
+ description: "JSON:API resource type for case views."
+ enum:
+ - view
+ example: view
+ type: string
+ x-enum-varnames:
+ - VIEW
+ CaseViewResponse:
+ description: Response containing a single case view.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseView"
+ required:
+ - data
+ type: object
+ CaseViewUpdate:
+ description: Data object for updating a case view.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CaseViewUpdateAttributes"
+ type:
+ $ref: "#/components/schemas/CaseViewResourceType"
+ required:
+ - type
+ type: object
+ CaseViewUpdateAttributes:
+ description: Attributes that can be updated on a case view. All fields are optional; only provided fields are changed.
+ properties:
+ name:
+ description: The name of the view.
+ type: string
+ np_rule_id:
+ description: The identifier of a notification rule linked to this view. When set, users subscribed to the view receive alerts for matching cases.
+ type: string
+ query:
+ description: The query used to filter cases in this view.
+ type: string
+ type: object
+ CaseViewUpdateRequest:
+ description: Request payload for updating a case view.
+ properties:
+ data:
+ $ref: "#/components/schemas/CaseViewUpdate"
+ required:
+ - data
+ type: object
+ CaseViewsResponse:
+ description: Response containing a list of case views.
+ properties:
+ data:
+ description: A list of case views.
+ items:
+ $ref: "#/components/schemas/CaseView"
+ type: array
+ required:
+ - data
+ type: object
+ CaseWatcher:
+ description: Represents a user who is subscribed to notifications for a case. Watchers receive updates when the case's status, priority, assignee, or comments change.
+ properties:
+ id:
+ description: The primary identifier of the case watcher.
+ example: "8146583c-0b5f-11ec-abf8-da7ad0900001"
+ type: string
+ relationships:
+ $ref: "#/components/schemas/CaseWatcherRelationships"
+ type:
+ $ref: "#/components/schemas/CaseWatcherResourceType"
+ required:
+ - id
+ - type
+ - relationships
+ type: object
+ CaseWatcherRelationships:
+ description: Relationships for a case watcher, linking to the underlying user resource.
+ properties:
+ user:
+ $ref: "#/components/schemas/CaseWatcherUserRelationship"
+ required:
+ - user
+ type: object
+ CaseWatcherResourceType:
+ default: watcher
+ description: JSON:API resource type for case watchers.
+ enum:
+ - watcher
+ example: watcher
+ type: string
+ x-enum-varnames:
+ - WATCHER
+ CaseWatcherUserRelationship:
+ description: The user relationship for a case watcher.
+ properties:
+ data:
+ $ref: "#/components/schemas/UserRelationshipData"
+ required:
+ - data
+ type: object
+ CaseWatchersResponse:
+ description: Response containing the list of users watching a case.
+ properties:
+ data:
+ description: List of case watchers.
+ items:
+ $ref: "#/components/schemas/CaseWatcher"
+ type: array
+ required:
+ - data
+ type: object
CasesResponse:
description: Response with cases
properties:
@@ -16879,6 +17915,25 @@ components:
- tag_key
- updated_at
type: object
+ CostTagDescriptionResponse:
+ description: Single Cloud Cost Management tag key description returned by the get-by-key endpoint.
+ example:
+ data:
+ attributes:
+ cloud: aws
+ created_at: "2026-01-01T12:00:00Z"
+ description: AWS account that owns this cost.
+ source: human
+ tag_key: account_id
+ updated_at: "2026-01-01T12:00:00Z"
+ id: account_id
+ type: cost_tag_description
+ properties:
+ data:
+ $ref: "#/components/schemas/CostTagDescription"
+ required:
+ - data
+ type: object
CostTagDescriptionSource:
description: Origin of the description. `human` indicates the description was written by a user, `ai_generated` was produced by AI, and `datadog` is a default supplied by Datadog.
enum:
@@ -16900,6 +17955,50 @@ components:
type: string
x-enum-varnames:
- COST_TAG_DESCRIPTION
+ CostTagDescriptionUpsertRequest:
+ description: Request body for creating or updating a Cloud Cost Management tag key description.
+ example:
+ data:
+ attributes:
+ cloud: aws
+ description: AWS account that owns this cost.
+ id: account_id
+ type: cost_tag_description
+ properties:
+ data:
+ $ref: "#/components/schemas/CostTagDescriptionUpsertRequestData"
+ required:
+ - data
+ type: object
+ CostTagDescriptionUpsertRequestData:
+ description: Resource envelope carrying the tag key description being upserted. The `id` is informational; the authoritative tag key is taken from the URL path.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CostTagDescriptionUpsertRequestDataAttributes"
+ id:
+ description: Identifier of the tag key the description applies to. Matches the `tag_key` path parameter.
+ example: account_id
+ type: string
+ type:
+ $ref: "#/components/schemas/CostTagDescriptionType"
+ required:
+ - attributes
+ - type
+ type: object
+ CostTagDescriptionUpsertRequestDataAttributes:
+ description: Mutable attributes set when creating or updating a Cloud Cost Management tag key description.
+ properties:
+ cloud:
+ description: Cloud provider this description applies to (for example, `aws`). Omit to set the cross-cloud default for the tag key.
+ example: aws
+ type: string
+ description:
+ description: The human-readable description for the tag key.
+ example: AWS account that owns this cost.
+ type: string
+ required:
+ - description
+ type: object
CostTagDescriptionsResponse:
description: List of Cloud Cost Management tag key descriptions for the organization, optionally filtered to a single cloud provider.
example:
@@ -20357,7 +21456,7 @@ components:
$ref: "#/components/schemas/CsmServerlessCoverageAnalysisData"
type: object
CustomAttributeConfig:
- description: The definition of `CustomAttributeConfig` object.
+ description: "A custom attribute configuration that defines an organization-specific metadata field on cases. Custom attributes are scoped to a case type and can hold text, URLs, numbers, or predefined select options."
properties:
attributes:
$ref: "#/components/schemas/CustomAttributeConfigResourceAttributes"
@@ -20369,22 +21468,22 @@ components:
$ref: "#/components/schemas/CustomAttributeConfigResourceType"
type: object
CustomAttributeConfigAttributesCreate:
- description: Custom attribute config resource attributes
+ description: Attributes required to create a custom attribute configuration.
properties:
description:
- description: Custom attribute description.
+ description: A description explaining the purpose and expected values for this custom attribute.
example: "AWS Region, must be a valid region supported by AWS"
type: string
display_name:
- description: Custom attribute name.
+ description: The human-readable label shown in the Case Management UI for this custom attribute.
example: "AWS Region"
type: string
is_multi:
- description: Whether multiple values can be set
+ description: "If `true`, this attribute accepts an array of values. If `false`, only a single value is allowed."
example: true
type: boolean
key:
- description: Custom attribute key. This will be the value use to search on this custom attribute
+ description: The programmatic key used to reference this custom attribute in search queries and API calls.
example: "aws_region"
type: string
type:
@@ -20396,7 +21495,7 @@ components:
- is_multi
type: object
CustomAttributeConfigCreate:
- description: Custom attribute config
+ description: Data object for creating a custom attribute configuration.
properties:
attributes:
$ref: "#/components/schemas/CustomAttributeConfigAttributesCreate"
@@ -20407,7 +21506,7 @@ components:
- type
type: object
CustomAttributeConfigCreateRequest:
- description: Custom attribute config create request
+ description: Request payload for creating a custom attribute configuration.
properties:
data:
$ref: "#/components/schemas/CustomAttributeConfigCreate"
@@ -20415,26 +21514,26 @@ components:
- data
type: object
CustomAttributeConfigResourceAttributes:
- description: Custom attribute resource attributes
+ description: "Attributes of a custom attribute configuration, defining an organization-specific metadata field that can be added to cases of a given type."
properties:
case_type_id:
- description: Custom attribute config identifier.
+ description: The UUID of the case type this custom attribute belongs to.
example: "aeadc05e-98a8-11ec-ac2c-da7ad0900001"
type: string
description:
- description: Custom attribute description.
+ description: A description explaining the purpose and expected values for this custom attribute.
example: "AWS Region, must be a valid region supported by AWS"
type: string
display_name:
- description: Custom attribute name.
+ description: The human-readable label shown in the Case Management UI for this custom attribute.
example: "AWS Region"
type: string
is_multi:
- description: Whether multiple values can be set
+ description: "If `true`, this attribute accepts an array of values. If `false`, only a single value is allowed."
example: true
type: boolean
key:
- description: Custom attribute key. This will be the value use to search on this custom attribute
+ description: The programmatic key used to reference this custom attribute in search queries and API calls.
example: "aws_region"
type: string
type:
@@ -20448,7 +21547,7 @@ components:
type: object
CustomAttributeConfigResourceType:
default: custom_attribute
- description: Custom attributes config JSON:API resource type
+ description: JSON:API resource type for custom attribute configurations.
enum:
- custom_attribute
example: custom_attribute
@@ -20456,13 +21555,50 @@ components:
x-enum-varnames:
- CUSTOM_ATTRIBUTE
CustomAttributeConfigResponse:
- description: Custom attribute config response.
+ description: Response containing a single custom attribute configuration.
properties:
data:
$ref: "#/components/schemas/CustomAttributeConfig"
type: object
+ CustomAttributeConfigUpdate:
+ description: Data object for updating a custom attribute configuration.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/CustomAttributeConfigUpdateAttributes"
+ type:
+ $ref: "#/components/schemas/CustomAttributeConfigResourceType"
+ required:
+ - type
+ type: object
+ CustomAttributeConfigUpdateAttributes:
+ description: Attributes that can be updated on a custom attribute configuration. All fields are optional; only provided fields are changed.
+ properties:
+ description:
+ description: A description explaining the purpose and expected values for this custom attribute.
+ example: "Updated description."
+ type: string
+ display_name:
+ description: The human-readable label shown in the Case Management UI for this custom attribute.
+ example: "AWS Region"
+ type: string
+ map_from:
+ description: An external field identifier to auto-populate this attribute from (used for integrations with external systems).
+ type: string
+ type:
+ $ref: "#/components/schemas/CustomAttributeType"
+ type_data:
+ $ref: "#/components/schemas/CustomAttributeTypeData"
+ type: object
+ CustomAttributeConfigUpdateRequest:
+ description: Request payload for updating a custom attribute configuration.
+ properties:
+ data:
+ $ref: "#/components/schemas/CustomAttributeConfigUpdate"
+ required:
+ - data
+ type: object
CustomAttributeConfigsResponse:
- description: Custom attribute configs response.
+ description: Response containing a list of custom attribute configurations.
properties:
data:
description: List of custom attribute configs of case type
@@ -20471,27 +21607,37 @@ components:
type: array
type: object
CustomAttributeMultiNumberValue:
- description: Values of multi NUMBER custom attribute
+ description: An array of numeric values for a multi-value NUMBER-type custom attribute.
items:
description: NUMBER value
format: double
type: number
type: array
CustomAttributeMultiStringValue:
- description: Value of multi TEXT/URL/NUMBER/SELECT custom attribute
+ description: An array of string values for a multi-value TEXT, URL, or SELECT-type custom attribute.
items:
description: TEXT/URL/NUMBER/SELECT Value
type: string
type: array
CustomAttributeNumberValue:
- description: Value of NUMBER custom attribute
+ description: A numeric value for a NUMBER-type custom attribute.
format: double
type: number
+ CustomAttributeSelectOption:
+ description: A selectable option for a SELECT-type custom attribute.
+ properties:
+ value:
+ description: Option value.
+ example: "us-east-1"
+ type: string
+ required:
+ - value
+ type: object
CustomAttributeStringValue:
- description: Value of TEXT/URL/NUMBER/SELECT custom attribute
+ description: A string value for a TEXT, URL, or SELECT-type custom attribute.
type: string
CustomAttributeType:
- description: Custom attributes type
+ description: "The data type of the custom attribute, which determines the allowed values and UI input control."
enum:
- URL
- TEXT
@@ -20504,8 +21650,17 @@ components:
- TEXT
- NUMBER
- SELECT
+ CustomAttributeTypeData:
+ description: "Type-specific configuration for the custom attribute. For SELECT-type attributes, this contains the list of allowed options."
+ properties:
+ options:
+ description: Options for SELECT type custom attributes.
+ items:
+ $ref: "#/components/schemas/CustomAttributeSelectOption"
+ type: array
+ type: object
CustomAttributeValue:
- description: Custom attribute values
+ description: A typed value for a custom attribute on a specific case.
properties:
is_multi:
description: If true, value must be an array
@@ -20521,7 +21676,7 @@ components:
- value
type: object
CustomAttributeValuesUnion:
- description: Union of supported value for a custom attribute
+ description: The value of a custom attribute. The accepted format depends on the attribute's type and whether it accepts multiple values.
example: ""
oneOf:
- $ref: "#/components/schemas/CustomAttributeStringValue"
@@ -32666,6 +33821,55 @@ components:
required:
- type
type: object
+ GenerateCostTagDescriptionResponse:
+ description: Response wrapping an AI-generated Cloud Cost Management tag key description.
+ example:
+ data:
+ attributes:
+ description: AWS account that owns this cost.
+ id: account_id
+ type: cost_generated_tag_description
+ properties:
+ data:
+ $ref: "#/components/schemas/GeneratedCostTagDescription"
+ required:
+ - data
+ type: object
+ GeneratedCostTagDescription:
+ description: AI-generated Cloud Cost Management tag key description returned by the generate endpoint. The result is returned to the client but is not persisted by this endpoint.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/GeneratedCostTagDescriptionAttributes"
+ id:
+ description: The tag key the AI description was generated for.
+ example: account_id
+ type: string
+ type:
+ $ref: "#/components/schemas/GeneratedCostTagDescriptionType"
+ required:
+ - attributes
+ - id
+ - type
+ type: object
+ GeneratedCostTagDescriptionAttributes:
+ description: Attributes of an AI-generated Cloud Cost Management tag key description.
+ properties:
+ description:
+ description: The AI-generated description for the tag key.
+ example: AWS account that owns this cost.
+ type: string
+ required:
+ - description
+ type: object
+ GeneratedCostTagDescriptionType:
+ default: cost_generated_tag_description
+ description: Type of the AI-generated Cloud Cost Management tag description resource.
+ enum:
+ - cost_generated_tag_description
+ example: cost_generated_tag_description
+ type: string
+ x-enum-varnames:
+ - COST_GENERATED_TAG_DESCRIPTION
GetActionConnectionResponse:
description: The response for found connection
properties:
@@ -45325,6 +46529,167 @@ components:
- type
- id
type: object
+ MaintenanceWindow:
+ description: A maintenance window that defines a scheduled time period during which case-related notifications and automation rules are suppressed. Each maintenance window applies to cases matching a specified query.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/MaintenanceWindowAttributes"
+ id:
+ description: The maintenance window's identifier.
+ example: "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
+ type: string
+ type:
+ $ref: "#/components/schemas/MaintenanceWindowResourceType"
+ required:
+ - id
+ - type
+ - attributes
+ type: object
+ MaintenanceWindowAttributes:
+ description: Attributes of a maintenance window, including its schedule and the query that determines which cases are affected.
+ properties:
+ created_by:
+ description: The UUID of the user who created this maintenance window. Read-only.
+ readOnly: true
+ type: string
+ end_at:
+ description: The ISO 8601 timestamp when the maintenance window ends and normal notification behavior resumes.
+ example: "2026-06-01T06:00:00Z"
+ format: date-time
+ type: string
+ name:
+ description: "A human-readable name for the maintenance window (for example, `Database migration - Dec 15`)."
+ example: "Weekly maintenance"
+ type: string
+ query:
+ description: A case search query that determines which cases are affected during the maintenance window. Uses the same syntax as the Case Management search bar.
+ example: "project:SEC"
+ type: string
+ start_at:
+ description: The ISO 8601 timestamp when the maintenance window begins and notifications start being suppressed.
+ example: "2026-06-01T00:00:00Z"
+ format: date-time
+ type: string
+ updated_by:
+ description: The UUID of the user who last modified this maintenance window. Read-only.
+ readOnly: true
+ type: string
+ required:
+ - name
+ - query
+ - start_at
+ - end_at
+ type: object
+ MaintenanceWindowCreate:
+ description: Data object for creating a maintenance window.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/MaintenanceWindowCreateAttributes"
+ type:
+ $ref: "#/components/schemas/MaintenanceWindowResourceType"
+ required:
+ - type
+ - attributes
+ type: object
+ MaintenanceWindowCreateAttributes:
+ description: Attributes required to create a maintenance window.
+ properties:
+ end_at:
+ description: The end time of the maintenance window.
+ example: "2026-06-01T06:00:00Z"
+ format: date-time
+ type: string
+ name:
+ description: The name of the maintenance window.
+ example: "Weekly maintenance"
+ type: string
+ query:
+ description: The query to filter event management cases for this maintenance window.
+ example: "project:SEC"
+ type: string
+ start_at:
+ description: The start time of the maintenance window.
+ example: "2026-06-01T00:00:00Z"
+ format: date-time
+ type: string
+ required:
+ - name
+ - query
+ - start_at
+ - end_at
+ type: object
+ MaintenanceWindowCreateRequest:
+ description: Request payload for creating a maintenance window.
+ properties:
+ data:
+ $ref: "#/components/schemas/MaintenanceWindowCreate"
+ required:
+ - data
+ type: object
+ MaintenanceWindowResourceType:
+ default: maintenance_window
+ description: JSON:API resource type for maintenance windows.
+ enum:
+ - maintenance_window
+ example: maintenance_window
+ type: string
+ x-enum-varnames:
+ - MAINTENANCE_WINDOW
+ MaintenanceWindowResponse:
+ description: Response containing a single maintenance window.
+ properties:
+ data:
+ $ref: "#/components/schemas/MaintenanceWindow"
+ required:
+ - data
+ type: object
+ MaintenanceWindowUpdate:
+ description: Data object for updating a maintenance window.
+ properties:
+ attributes:
+ $ref: "#/components/schemas/MaintenanceWindowUpdateAttributes"
+ type:
+ $ref: "#/components/schemas/MaintenanceWindowResourceType"
+ required:
+ - type
+ type: object
+ MaintenanceWindowUpdateAttributes:
+ description: Attributes that can be updated on a maintenance window. All fields are optional; only provided fields are changed.
+ properties:
+ end_at:
+ description: The end time of the maintenance window.
+ format: date-time
+ type: string
+ name:
+ description: The name of the maintenance window.
+ type: string
+ query:
+ description: The query to filter event management cases for this maintenance window.
+ type: string
+ start_at:
+ description: The start time of the maintenance window.
+ format: date-time
+ type: string
+ type: object
+ MaintenanceWindowUpdateRequest:
+ description: Request payload for updating a maintenance window.
+ properties:
+ data:
+ $ref: "#/components/schemas/MaintenanceWindowUpdate"
+ required:
+ - data
+ type: object
+ MaintenanceWindowsResponse:
+ description: Response containing a list of maintenance windows.
+ properties:
+ data:
+ description: List of maintenance windows.
+ items:
+ $ref: "#/components/schemas/MaintenanceWindow"
+ type: array
+ required:
+ - data
+ type: object
ManagedOrgsData:
description: The managed organizations resource.
properties:
@@ -59450,6 +60815,39 @@ components:
required:
- data
type: object
+ ProjectFavorite:
+ description: Represents a case project that the current user has bookmarked for quick access. Favorited projects appear prominently in the Case Management UI.
+ properties:
+ id:
+ description: The UUID of the favorited project.
+ example: "e555e290-ed65-49bd-ae18-8acbfcf18db7"
+ type: string
+ type:
+ $ref: "#/components/schemas/ProjectFavoriteResourceType"
+ required:
+ - id
+ - type
+ type: object
+ ProjectFavoriteResourceType:
+ default: project_favorite
+ description: "JSON:API resource type for project favorites."
+ enum:
+ - project_favorite
+ example: project_favorite
+ type: string
+ x-enum-varnames:
+ - PROJECT_FAVORITE
+ ProjectFavoritesResponse:
+ description: Response containing the list of projects the current user has favorited.
+ properties:
+ data:
+ description: List of project favorites.
+ items:
+ $ref: "#/components/schemas/ProjectFavorite"
+ type: array
+ required:
+ - data
+ type: object
ProjectNotificationSettings:
description: Project notification settings.
properties:
@@ -82696,7 +84094,7 @@ components:
- restrictions
type: object
TimelineCell:
- description: timeline cell
+ description: "Attributes of a timeline cell, representing a single event in a case's chronological activity log (for example, a comment, status change, or assignment update)."
properties:
author:
$ref: "#/components/schemas/TimelineCellAuthor"
@@ -82721,11 +84119,11 @@ components:
$ref: "#/components/schemas/TimelineCellType"
type: object
TimelineCellAuthor:
- description: author of the timeline cell
+ description: The author of the timeline cell. Currently only user authors are supported.
oneOf:
- $ref: "#/components/schemas/TimelineCellAuthorUser"
TimelineCellAuthorUser:
- description: timeline cell user author
+ description: A user who authored a timeline cell.
properties:
content:
$ref: "#/components/schemas/TimelineCellAuthorUserContent"
@@ -82733,23 +84131,23 @@ components:
$ref: "#/components/schemas/TimelineCellAuthorUserType"
type: object
TimelineCellAuthorUserContent:
- description: user author content.
+ description: Profile information for the user who authored the timeline cell.
properties:
email:
- description: user email
+ description: The email address of the user.
type: string
handle:
- description: user handle
+ description: The Datadog handle of the user.
type: string
id:
- description: user UUID
+ description: The UUID of the user.
type: string
name:
- description: user name
+ description: The display name of the user.
type: string
type: object
TimelineCellAuthorUserType:
- description: user author type.
+ description: The type of timeline cell author. Currently only `USER` is supported.
enum:
- USER
example: USER
@@ -82757,18 +84155,18 @@ components:
x-enum-varnames:
- USER
TimelineCellContent:
- description: timeline cell content
+ description: The content payload of a timeline cell, varying by cell type.
oneOf:
- $ref: "#/components/schemas/TimelineCellContentComment"
TimelineCellContentComment:
- description: comment content
+ description: The content of a comment timeline cell.
properties:
message:
- description: comment message
+ description: The text content of the comment. Supports Markdown formatting.
type: string
type: object
TimelineCellResource:
- description: Timeline cell JSON:API resource
+ description: A timeline cell resource representing a single entry in a case's activity timeline.
properties:
attributes:
$ref: "#/components/schemas/TimelineCell"
@@ -82785,7 +84183,7 @@ components:
type: object
TimelineCellResourceType:
default: timeline_cell
- description: Timeline cell JSON:API resource type
+ description: JSON:API resource type for timeline cells.
enum:
- timeline_cell
example: timeline_cell
@@ -82793,7 +84191,7 @@ components:
x-enum-varnames:
- TIMELINE_CELL
TimelineCellType:
- description: Timeline cell content type
+ description: The type of content in the timeline cell. Currently only `COMMENT` is supported in this endpoint.
enum:
- COMMENT
example: COMMENT
@@ -82801,7 +84199,7 @@ components:
x-enum-varnames:
- COMMENT
TimelineResponse:
- description: Timeline response
+ description: Response containing the chronological list of timeline cells for a case.
properties:
data:
description: The `TimelineResponse` `data`.
@@ -87438,6 +88836,7 @@ components:
bits_investigations_read: View Bits AI investigations.
bits_investigations_write: Create and manage Bits AI investigations.
cases_read: View Cases.
+ cases_shared_settings_write: Update shared case management settings.
cases_write: Create and update cases.
ci_visibility_pipelines_write: Create CI Visibility pipeline spans using the API.
ci_visibility_read: View CI Visibility.
@@ -87459,6 +88858,8 @@ components:
embeddable_graphs_share: Generate public links to share embeddable graphs externally.
error_tracking_read: Read Error Tracking data.
error_tracking_write: Edit Error Tracking issues.
+ event_correlation_config_read: View event correlation configurations.
+ event_correlation_config_write: Create and update event correlation configurations.
events_read: Read Events data.
hosts_read: List hosts and their attributes.
incident_notification_settings_read: View Incident Notification Rule Settings.
@@ -94287,6 +95688,336 @@ paths:
summary: Create a case
tags:
- Case Management
+ /api/v2/cases/aggregate:
+ post:
+ description: Performs an aggregation query over cases, grouping results by specified fields and returning counts per group along with a total. Useful for dashboards and analytics.
+ operationId: AggregateCases
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ group_by:
+ groups:
+ - "status"
+ limit: 14
+ query_filter: "service:case-api"
+ type: aggregate
+ schema:
+ $ref: "#/components/schemas/CaseAggregateRequest"
+ description: Case aggregate request payload.
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ groups:
+ - group: OPEN
+ value:
+ - 42.0
+ total: 100.0
+ id: agg-result-001
+ type: aggregate
+ schema:
+ $ref: "#/components/schemas/CaseAggregateResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_read
+ summary: Aggregate cases
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/bulk:
+ post:
+ description: Applies a single action (such as changing priority, status, assignment, or archiving) to multiple cases at once. The list of case IDs and the action type with its payload are specified in the request body.
+ operationId: BulkUpdateCases
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ case_ids:
+ - "case-id-1"
+ - "case-id-2"
+ payload:
+ priority: "P1"
+ type: priority
+ type: bulk
+ schema:
+ $ref: "#/components/schemas/CaseBulkUpdateRequest"
+ description: Case bulk update request payload.
+ required: true
+ responses:
+ "200":
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Bulk update cases
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/count:
+ get:
+ description: Returns case counts, optionally grouped by one or more fields (for example, status, priority). Supports a query filter to narrow the scope.
+ operationId: CountCases
+ parameters:
+ - description: Filter query for cases.
+ in: query
+ name: query_filter
+ required: false
+ schema:
+ type: string
+ - description: Comma-separated fields to group by.
+ example: "status,priority"
+ in: query
+ name: group_bys
+ required: false
+ schema:
+ type: string
+ - description: Maximum facet values to return.
+ in: query
+ name: limit
+ required: false
+ schema:
+ type: integer
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ groups:
+ - group: status
+ group_values:
+ - count: 42
+ value: OPEN
+ id: count-result-001
+ type: count
+ schema:
+ $ref: "#/components/schemas/CaseCountResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_read
+ summary: Count cases
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/link:
+ get:
+ description: Returns all links associated with a case. Links define relationships (for example, BLOCKS) between cases. Requires entity_type and entity_id query parameters.
+ operationId: ListCaseLinks
+ parameters:
+ - description: "The entity type to look up links for. Use `CASE` to find links for a specific case."
+ in: query
+ name: entity_type
+ required: true
+ schema:
+ example: "CASE"
+ type: string
+ - description: "The UUID of the entity to look up links for."
+ in: query
+ name: entity_id
+ required: true
+ schema:
+ example: "bf0cbac6-4c16-4cfb-b6bf-ca5e0ec37a4f"
+ type: string
+ - description: "Optional filter to only return links of a specific relationship type (for example, `BLOCKS` or `CAUSES`)."
+ in: query
+ name: relationship
+ required: false
+ schema:
+ example: "BLOCKS"
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - attributes:
+ child_entity_id: 4417921d-0866-4a38-822c-6f2a0f65f77d
+ child_entity_type: CASE
+ parent_entity_id: bf0cbac6-4c16-4cfb-b6bf-ca5e0ec37a4f
+ parent_entity_type: CASE
+ relationship: BLOCKS
+ id: 804cd682-55f6-4541-ab00-b608b282ea7d
+ type: link
+ schema:
+ $ref: "#/components/schemas/CaseLinksResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_read
+ summary: List case links
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ post:
+ description: Creates a directional link between two cases (for example, case A blocks case B). The parent and child cases and their relationship type must be specified.
+ operationId: CreateCaseLink
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ child_entity_id: 4417921d-0866-4a38-822c-6f2a0f65f77d
+ child_entity_type: CASE
+ parent_entity_id: bf0cbac6-4c16-4cfb-b6bf-ca5e0ec37a4f
+ parent_entity_type: CASE
+ relationship: BLOCKS
+ type: link
+ schema:
+ $ref: "#/components/schemas/CaseLinkCreateRequest"
+ description: "Case link create request."
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ child_entity_id: 4417921d-0866-4a38-822c-6f2a0f65f77d
+ child_entity_type: CASE
+ parent_entity_id: bf0cbac6-4c16-4cfb-b6bf-ca5e0ec37a4f
+ parent_entity_type: CASE
+ relationship: BLOCKS
+ id: 804cd682-55f6-4541-ab00-b608b282ea7d
+ type: link
+ schema:
+ $ref: "#/components/schemas/CaseLinkResponse"
+ description: Created
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Create a case link
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/link/{link_id}:
+ delete:
+ description: Deletes an existing link between cases by link ID.
+ operationId: DeleteCaseLink
+ parameters:
+ - $ref: "#/components/parameters/LinkIDPathParameter"
+ responses:
+ "204":
+ description: No Content
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Delete a case link
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cases/projects:
get:
description: >-
@@ -94378,6 +96109,44 @@ paths:
summary: Create a project
tags:
- Case Management
+ /api/v2/cases/projects/favorites:
+ get:
+ description: Returns the list of case projects that the current authenticated user has marked as favorites.
+ operationId: ListUserCaseProjectFavorites
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - id: e555e290-ed65-49bd-ae18-8acbfcf18db7
+ type: project_favorite
+ schema:
+ $ref: "#/components/schemas/ProjectFavoritesResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_read
+ summary: List project favorites
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cases/projects/{project_id}:
delete:
description: Remove a project using the project's `id`.
@@ -94497,6 +96266,65 @@ paths:
summary: Update a project
tags:
- Case Management
+ /api/v2/cases/projects/{project_id}/favorites:
+ delete:
+ description: Removes a case project from the current user's favorites list.
+ operationId: UnfavoriteCaseProject
+ parameters:
+ - $ref: "#/components/parameters/ProjectIDPathParameter"
+ responses:
+ "204":
+ description: No Content
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Unfavorite a project
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ post:
+ description: Marks a case project as a favorite for the current authenticated user.
+ operationId: FavoriteCaseProject
+ parameters:
+ - $ref: "#/components/parameters/ProjectIDPathParameter"
+ responses:
+ "204":
+ description: No Content
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Favorite a project
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cases/projects/{project_id}/notification_rules:
get:
description: >-
@@ -94705,6 +96533,418 @@ paths:
summary: Update a notification rule
tags:
- Case Management
+ /api/v2/cases/projects/{project_id}/rules:
+ get:
+ description: Returns all automation rules configured for a project. Automation rules allow automatic actions to be triggered by case events like creation, status transitions, or attribute changes.
+ operationId: ListCaseAutomationRules
+ parameters:
+ - description: The UUID of the project that owns the automation rules.
+ example: "e555e290-ed65-49bd-ae18-8acbfcf18db7"
+ in: path
+ name: project_id
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - attributes:
+ action:
+ data:
+ handle: workflow-handle-123
+ type: execute_workflow
+ created_at: "2024-01-01T00:00:00.000Z"
+ name: Auto-assign workflow
+ state: ENABLED
+ trigger:
+ type: case_created
+ id: e6773723-fe58-49ff-9975-dff00f14e28d
+ type: rule
+ schema:
+ $ref: "#/components/schemas/AutomationRulesResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_read
+ summary: List automation rules
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ post:
+ description: Creates an automation rule for a project. The rule defines a trigger event (for example, case created, status transitioned) and an action to execute.
+ operationId: CreateCaseAutomationRule
+ parameters:
+ - description: The UUID of the project that owns the automation rules.
+ example: "e555e290-ed65-49bd-ae18-8acbfcf18db7"
+ in: path
+ name: project_id
+ required: true
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ action:
+ data:
+ handle: workflow-handle-123
+ type: execute_workflow
+ name: Auto-assign workflow
+ state: ENABLED
+ trigger:
+ type: case_created
+ type: rule
+ schema:
+ $ref: "#/components/schemas/AutomationRuleCreateRequest"
+ description: Automation rule payload.
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ action:
+ data:
+ handle: workflow-handle-123
+ type: execute_workflow
+ created_at: "2024-01-01T00:00:00.000Z"
+ name: Auto-assign workflow
+ state: ENABLED
+ trigger:
+ type: case_created
+ id: e6773723-fe58-49ff-9975-dff00f14e28d
+ type: rule
+ schema:
+ $ref: "#/components/schemas/AutomationRuleResponse"
+ description: Created
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Create an automation rule
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/projects/{project_id}/rules/{rule_id}:
+ delete:
+ description: Permanently deletes an automation rule from a project.
+ operationId: DeleteCaseAutomationRule
+ parameters:
+ - description: The UUID of the project that owns the automation rules.
+ example: "e555e290-ed65-49bd-ae18-8acbfcf18db7"
+ in: path
+ name: project_id
+ required: true
+ schema:
+ type: string
+ - $ref: "#/components/parameters/RuleIDPathParameter"
+ responses:
+ "204":
+ description: No Content
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Delete an automation rule
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ get:
+ description: Returns a single automation rule identified by its UUID, including its trigger, action, and current state (enabled/disabled).
+ operationId: GetCaseAutomationRule
+ parameters:
+ - description: The UUID of the project that owns the automation rules.
+ example: "e555e290-ed65-49bd-ae18-8acbfcf18db7"
+ in: path
+ name: project_id
+ required: true
+ schema:
+ type: string
+ - $ref: "#/components/parameters/RuleIDPathParameter"
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ action:
+ data:
+ handle: workflow-handle-123
+ type: execute_workflow
+ created_at: "2024-01-01T00:00:00.000Z"
+ name: Auto-assign workflow
+ state: ENABLED
+ trigger:
+ type: case_created
+ id: e6773723-fe58-49ff-9975-dff00f14e28d
+ type: rule
+ schema:
+ $ref: "#/components/schemas/AutomationRuleResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_read
+ summary: Get an automation rule
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ put:
+ description: Updates the trigger, action, name, or state of an existing automation rule.
+ operationId: UpdateCaseAutomationRule
+ parameters:
+ - description: The UUID of the project that owns the automation rules.
+ example: "e555e290-ed65-49bd-ae18-8acbfcf18db7"
+ in: path
+ name: project_id
+ required: true
+ schema:
+ type: string
+ - $ref: "#/components/parameters/RuleIDPathParameter"
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ action:
+ data:
+ handle: workflow-handle-123
+ type: execute_workflow
+ name: Auto-assign workflow
+ state: ENABLED
+ trigger:
+ type: case_created
+ type: rule
+ schema:
+ $ref: "#/components/schemas/AutomationRuleUpdateRequest"
+ description: Automation rule payload.
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ action:
+ data:
+ handle: workflow-handle-123
+ type: execute_workflow
+ created_at: "2024-01-01T00:00:00.000Z"
+ name: Auto-assign workflow
+ state: ENABLED
+ trigger:
+ type: case_created
+ id: e6773723-fe58-49ff-9975-dff00f14e28d
+ type: rule
+ schema:
+ $ref: "#/components/schemas/AutomationRuleResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Update an automation rule
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/projects/{project_id}/rules/{rule_id}/disable:
+ post:
+ description: Disables an automation rule so it no longer triggers on case events. The rule configuration is preserved.
+ operationId: DisableCaseAutomationRule
+ parameters:
+ - description: The UUID of the project that owns the automation rules.
+ example: "e555e290-ed65-49bd-ae18-8acbfcf18db7"
+ in: path
+ name: project_id
+ required: true
+ schema:
+ type: string
+ - $ref: "#/components/parameters/RuleIDPathParameter"
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ action:
+ data:
+ handle: workflow-handle-123
+ type: execute_workflow
+ created_at: "2024-01-01T00:00:00.000Z"
+ name: Auto-assign workflow
+ state: DISABLED
+ trigger:
+ type: case_created
+ id: e6773723-fe58-49ff-9975-dff00f14e28d
+ type: rule
+ schema:
+ $ref: "#/components/schemas/AutomationRuleResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Disable an automation rule
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/projects/{project_id}/rules/{rule_id}/enable:
+ post:
+ description: Enables a previously disabled automation rule so it triggers on matching case events.
+ operationId: EnableCaseAutomationRule
+ parameters:
+ - description: The UUID of the project that owns the automation rules.
+ example: "e555e290-ed65-49bd-ae18-8acbfcf18db7"
+ in: path
+ name: project_id
+ required: true
+ schema:
+ type: string
+ - $ref: "#/components/parameters/RuleIDPathParameter"
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ action:
+ data:
+ handle: workflow-handle-123
+ type: execute_workflow
+ created_at: "2024-01-01T00:00:00.000Z"
+ name: Auto-assign workflow
+ state: ENABLED
+ trigger:
+ type: case_created
+ id: e6773723-fe58-49ff-9975-dff00f14e28d
+ type: rule
+ schema:
+ $ref: "#/components/schemas/AutomationRuleResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Enable an automation rule
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cases/types:
get:
description: Get all case types
@@ -94833,6 +97073,65 @@ paths:
summary: Delete a case type
tags:
- Case Management Type
+ put:
+ description: Updates the name, emoji, or description of an existing case type.
+ operationId: UpdateCaseType
+ parameters:
+ - $ref: "#/components/parameters/CaseTypeIDPathParameter"
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ description: Investigations done in case management
+ emoji: "🕵🏻♂️"
+ name: Investigation
+ type: case_type
+ schema:
+ $ref: "#/components/schemas/CaseTypeUpdateRequest"
+ description: Case type payload.
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ description: Investigations done in case management
+ emoji: "🕵🏻♂️"
+ name: Investigation
+ id: 00000000-0000-0000-0000-000000000001
+ type: case_type
+ schema:
+ $ref: "#/components/schemas/CaseTypeResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_shared_settings_write
+ summary: Update a case type
+ tags:
+ - Case Management Type
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cases/types/{case_type_id}/custom_attributes:
get:
description: Get all custom attribute config of case type
@@ -94947,6 +97246,305 @@ paths:
summary: Delete custom attributes config
tags:
- Case Management Attribute
+ put:
+ description: Updates the display name, description, type, or options of an existing custom attribute configuration for a case type.
+ operationId: UpdateCustomAttributeConfig
+ parameters:
+ - $ref: "#/components/parameters/CaseTypeIDPathParameter"
+ - $ref: "#/components/parameters/CaseCustomAttributeIDPathParameter"
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ description: Updated description.
+ display_name: AWS Region
+ type: custom_attribute
+ schema:
+ $ref: "#/components/schemas/CustomAttributeConfigUpdateRequest"
+ description: Custom attribute config payload.
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ case_type_id: 00000000-0000-0000-0000-000000000006
+ description: Updated description.
+ display_name: AWS Region
+ is_multi: true
+ key: aws_region
+ type: TEXT
+ id: 00000000-0000-0000-0000-000000000005
+ type: custom_attribute
+ schema:
+ $ref: "#/components/schemas/CustomAttributeConfigResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_shared_settings_write
+ summary: Update custom attribute config
+ tags:
+ - Case Management Attribute
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/views:
+ get:
+ description: Returns all saved case views for a given project. Views are saved search queries that allow quick access to filtered lists of cases.
+ operationId: ListCaseViews
+ parameters:
+ - description: Filter views by project identifier.
+ example: e555e290-ed65-49bd-ae18-8acbfcf18db7
+ in: query
+ name: project_id
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - attributes:
+ created_at: "2024-01-01T00:00:00.000Z"
+ name: Open bugs
+ query: "status:open type:bug"
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ type: view
+ schema:
+ $ref: "#/components/schemas/CaseViewsResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_read
+ summary: List case views
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ post:
+ description: Creates a new saved case view with a name, filter query, and associated project. Optionally, a notification rule can be linked to the view.
+ operationId: CreateCaseView
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ name: Open bugs
+ project_id: e555e290-ed65-49bd-ae18-8acbfcf18db7
+ query: "status:open type:bug"
+ type: view
+ schema:
+ $ref: "#/components/schemas/CaseViewCreateRequest"
+ description: Case view payload.
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ created_at: "2024-01-01T00:00:00.000Z"
+ name: Open bugs
+ query: "status:open type:bug"
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ type: view
+ schema:
+ $ref: "#/components/schemas/CaseViewResponse"
+ description: Created
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Create a case view
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/views/{view_id}:
+ delete:
+ description: Permanently deletes a saved case view.
+ operationId: DeleteCaseView
+ parameters:
+ - $ref: "#/components/parameters/ViewIDPathParameter"
+ responses:
+ "204":
+ description: No Content
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Delete a case view
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ get:
+ description: Returns a single saved case view identified by its UUID, including its query, associated project, and timestamps.
+ operationId: GetCaseView
+ parameters:
+ - $ref: "#/components/parameters/ViewIDPathParameter"
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ created_at: "2024-01-01T00:00:00.000Z"
+ name: Open bugs
+ query: "status:open type:bug"
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ type: view
+ schema:
+ $ref: "#/components/schemas/CaseViewResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_read
+ summary: Get a case view
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ put:
+ description: Updates the name, query, or notification rule of an existing case view.
+ operationId: UpdateCaseView
+ parameters:
+ - $ref: "#/components/parameters/ViewIDPathParameter"
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ name: Updated view name
+ type: view
+ schema:
+ $ref: "#/components/schemas/CaseViewUpdateRequest"
+ description: Case view payload.
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ created_at: "2024-01-01T00:00:00.000Z"
+ name: Updated view name
+ query: "status:open type:bug"
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ type: view
+ schema:
+ $ref: "#/components/schemas/CaseViewResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Update a case view
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cases/{case_id}:
get:
description: >-
@@ -95265,6 +97863,50 @@ paths:
summary: Delete case comment
tags:
- Case Management
+ put:
+ description: Updates the text content of an existing comment on a case timeline. The comment is identified by its cell ID.
+ operationId: UpdateCaseComment
+ parameters:
+ - $ref: "#/components/parameters/CaseIDPathParameter"
+ - $ref: "#/components/parameters/CellIDPathParameter"
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ comment: Updated comment text
+ type: case
+ schema:
+ $ref: "#/components/schemas/CaseUpdateCommentRequest"
+ description: Case update comment payload.
+ required: true
+ responses:
+ "200":
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Update case comment
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cases/{case_id}/custom_attributes/{custom_attribute_key}:
delete:
description: Delete custom attribute from case
@@ -95361,13 +98003,224 @@ paths:
$ref: "#/components/schemas/CaseResponse"
description: OK
"400":
- $ref: "#/components/responses/BadRequestResponse"
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Update case custom attribute
+ tags:
+ - Case Management
+ /api/v2/cases/{case_id}/description:
+ post:
+ description: Update case description
+ operationId: UpdateCaseDescription
+ parameters:
+ - $ref: "#/components/parameters/CaseIDPathParameter"
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ description: Seeing some weird memory increase... We shouldn't ignore this
+ type: case
+ schema:
+ $ref: "#/components/schemas/CaseUpdateDescriptionRequest"
+ description: Case description update payload
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ created_at: "2024-01-01T00:00:00+00:00"
+ key: CASEM-1234
+ priority: NOT_DEFINED
+ status: OPEN
+ status_name: Open
+ title: Memory leak investigation on API
+ id: 00000000-0000-0000-0000-000000000001
+ relationships:
+ project:
+ data:
+ id: 00000000-0000-0000-0000-000000000002
+ type: project
+ type: case
+ schema:
+ $ref: "#/components/schemas/CaseResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Update case description
+ tags:
+ - Case Management
+ /api/v2/cases/{case_id}/due_date:
+ post:
+ description: Sets or updates the due date for a case. The due date is a calendar date (without a time component) indicating when the case should be resolved.
+ operationId: UpdateCaseDueDate
+ parameters:
+ - $ref: "#/components/parameters/CaseIDPathParameter"
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ due_date: "2026-12-31"
+ type: case
+ schema:
+ $ref: "#/components/schemas/CaseUpdateDueDateRequest"
+ description: Case due date update payload.
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ created_at: "2024-01-01T00:00:00+00:00"
+ key: CASEM-1234
+ priority: NOT_DEFINED
+ status: OPEN
+ status_name: Open
+ title: Memory leak investigation on API
+ id: 00000000-0000-0000-0000-000000000001
+ relationships:
+ project:
+ data:
+ id: 00000000-0000-0000-0000-000000000002
+ type: project
+ type: case
+ schema:
+ $ref: "#/components/schemas/CaseResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Update case due date
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/{case_id}/insights:
+ delete:
+ description: Removes one or more previously added insights from a case by specifying their type and resource identifier in the request body.
+ operationId: RemoveCaseInsights
+ parameters:
+ - $ref: "#/components/parameters/CaseIDPathParameter"
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ insights:
+ - ref: "/monitors/12345?q=total"
+ resource_id: "12345"
+ type: SECURITY_SIGNAL
+ type: case
+ schema:
+ $ref: "#/components/schemas/CaseInsightsRequest"
+ description: Case insights request.
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ created_at: "2024-01-01T00:00:00+00:00"
+ key: CASEM-1234
+ priority: NOT_DEFINED
+ status: OPEN
+ status_name: Open
+ title: Memory leak investigation on API
+ id: 00000000-0000-0000-0000-000000000001
+ relationships:
+ project:
+ data:
+ id: 00000000-0000-0000-0000-000000000002
+ type: project
+ type: case
+ schema:
+ $ref: "#/components/schemas/CaseResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Bad Request
"401":
- $ref: "#/components/responses/UnauthorizedResponse"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Unauthorized
"403":
- $ref: "#/components/responses/ForbiddenResponse"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Forbidden
"404":
- $ref: "#/components/responses/NotFoundResponse"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Not Found
"429":
$ref: "#/components/responses/TooManyRequestsResponse"
security:
@@ -95375,13 +98228,16 @@ paths:
appKeyAuth: []
- AuthZ:
- cases_write
- summary: Update case custom attribute
+ summary: Remove insights from a case
tags:
- Case Management
- /api/v2/cases/{case_id}/description:
- post:
- description: Update case description
- operationId: UpdateCaseDescription
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ put:
+ description: >-
+ Adds one or more insights to a case. Insights are references to related Datadog resources (such as monitors, security signals, incidents, or error tracking issues) that provide investigative context. Up to 100 insights can be added per request. Each insight requires a type (see `CaseInsightType` for allowed values), a ref (URL path to the resource), and a resource_id.
+ operationId: AddCaseInsights
parameters:
- $ref: "#/components/parameters/CaseIDPathParameter"
requestBody:
@@ -95392,11 +98248,14 @@ paths:
value:
data:
attributes:
- description: Seeing some weird memory increase... We shouldn't ignore this
+ insights:
+ - ref: "/monitors/12345?q=total"
+ resource_id: "12345"
+ type: SECURITY_SIGNAL
type: case
schema:
- $ref: "#/components/schemas/CaseUpdateDescriptionRequest"
- description: Case description update payload
+ $ref: "#/components/schemas/CaseInsightsRequest"
+ description: Case insights request.
required: true
responses:
"200":
@@ -95424,13 +98283,29 @@ paths:
$ref: "#/components/schemas/CaseResponse"
description: OK
"400":
- $ref: "#/components/responses/BadRequestResponse"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Bad Request
"401":
- $ref: "#/components/responses/UnauthorizedResponse"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Unauthorized
"403":
- $ref: "#/components/responses/ForbiddenResponse"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Forbidden
"404":
- $ref: "#/components/responses/NotFoundResponse"
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/JSONAPIErrorResponse"
+ description: Not Found
"429":
$ref: "#/components/responses/TooManyRequestsResponse"
security:
@@ -95438,9 +98313,12 @@ paths:
appKeyAuth: []
- AuthZ:
- cases_write
- summary: Update case description
+ summary: Add insights to a case
tags:
- Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cases/{case_id}/priority:
post:
description: Update case priority
@@ -95944,6 +98822,72 @@ paths:
x-unstable: |-
**Note**: This endpoint is in preview and is subject to change.
If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/{case_id}/resolved_reason:
+ post:
+ description: Sets the resolved reason for a security case (for example, FALSE_POSITIVE, TRUE_POSITIVE). Applicable to security-type cases.
+ operationId: UpdateCaseResolvedReason
+ parameters:
+ - $ref: "#/components/parameters/CaseIDPathParameter"
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ security_resolved_reason: "FALSE_POSITIVE"
+ type: case
+ schema:
+ $ref: "#/components/schemas/CaseUpdateResolvedReasonRequest"
+ description: Case resolved reason update payload.
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ created_at: "2024-01-01T00:00:00+00:00"
+ key: CASEM-1234
+ priority: NOT_DEFINED
+ status: OPEN
+ status_name: Open
+ title: Memory leak investigation on API
+ id: 00000000-0000-0000-0000-000000000001
+ relationships:
+ project:
+ data:
+ id: 00000000-0000-0000-0000-000000000002
+ type: project
+ type: case
+ schema:
+ $ref: "#/components/schemas/CaseResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Update case resolved reason
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cases/{case_id}/status:
post:
description: Update case status
@@ -96008,6 +98952,72 @@ paths:
summary: Update case status
tags:
- Case Management
+ /api/v2/cases/{case_id}/timelines:
+ get:
+ description: Returns the timeline of events for a case, including comments, status changes, and other activity. Supports pagination and sort order.
+ operationId: ListCaseTimeline
+ parameters:
+ - $ref: "#/components/parameters/CaseIDPathParameter"
+ - description: Number of timeline cells to return per page.
+ in: query
+ name: page[size]
+ required: false
+ schema:
+ default: 100
+ type: integer
+ - description: Zero-based page number for pagination.
+ in: query
+ name: page[number]
+ required: false
+ schema:
+ default: 0
+ type: integer
+ - description: "If `true`, returns timeline cells in chronological order (oldest first). Defaults to `false` (newest first)."
+ in: query
+ name: sort[ascending]
+ required: false
+ schema:
+ default: false
+ type: boolean
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - attributes:
+ cell_content:
+ message: This is a comment
+ created_at: "2024-01-01T00:00:00+00:00"
+ type: COMMENT
+ id: 00000000-0000-0000-0000-000000000001
+ type: timeline_cell
+ schema:
+ $ref: "#/components/schemas/TimelineResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_read
+ summary: Get case timeline
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/cases/{case_id}/title:
post:
description: Update case title
@@ -96193,6 +99203,112 @@ paths:
summary: Unassign case
tags:
- Case Management
+ /api/v2/cases/{case_id}/watchers:
+ get:
+ description: Returns the list of users who are watching a case. Watchers receive notifications about updates to the case.
+ operationId: ListCaseWatchers
+ parameters:
+ - $ref: "#/components/parameters/CaseIDPathParameter"
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - id: 8146583c-0b5f-11ec-abf8-da7ad0900001
+ relationships:
+ user:
+ data:
+ id: 8146583c-0b5f-11ec-abf8-da7ad0900001
+ type: user
+ type: watcher
+ schema:
+ $ref: "#/components/schemas/CaseWatchersResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_read
+ summary: List case watchers
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/cases/{case_id}/watchers/{user_uuid}:
+ delete:
+ description: Removes a user from the watchers list of a case. The user no longer receives notifications about updates to the case.
+ operationId: UnwatchCase
+ parameters:
+ - $ref: "#/components/parameters/CaseIDPathParameter"
+ - $ref: "#/components/parameters/UserUUIDPathParameter"
+ responses:
+ "204":
+ description: No Content
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Unwatch a case
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ post:
+ description: Adds a user (identified by their UUID) as a watcher of a case. The user receives notifications about subsequent updates to the case.
+ operationId: WatchCase
+ parameters:
+ - $ref: "#/components/parameters/CaseIDPathParameter"
+ - $ref: "#/components/parameters/UserUUIDPathParameter"
+ responses:
+ "201":
+ description: Created
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cases_write
+ summary: Watch a case
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/catalog/entity:
get:
description: Get a list of entities from Software Catalog.
@@ -101607,6 +104723,226 @@ paths:
operator: OR
permissions:
- cloud_cost_management_read
+ /api/v2/cost/tag_descriptions/{tag_key}:
+ delete:
+ description: Delete a Cloud Cost Management tag key description. When `cloud` is omitted, deletes every description for the tag key, falling back to Datadog's global default when available. When `cloud` is provided, deletes only the description scoped to that cloud provider.
+ operationId: DeleteCostTagDescriptionByKey
+ parameters:
+ - description: The tag key whose description is being deleted.
+ in: path
+ name: tag_key
+ required: true
+ schema:
+ type: string
+ - description: Cloud provider to scope the deletion to (for example, `aws`). Omit to delete every description for the tag key.
+ in: query
+ name: cloud
+ required: false
+ schema:
+ type: string
+ responses:
+ "204":
+ description: No Content
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cloud_cost_management_write
+ summary: Delete a Cloud Cost Management tag description
+ tags:
+ - Cloud Cost Management
+ "x-permission":
+ operator: OR
+ permissions:
+ - cloud_cost_management_write
+ get:
+ description: Get the Cloud Cost Management description for a single tag key. Use `filter[cloud]` to scope the lookup to a specific cloud provider; when omitted, the response resolves the description in fallback order (cloud-specific organization override, then cloudless organization default, then Datadog's global default).
+ operationId: GetCostTagDescriptionByKey
+ parameters:
+ - description: The tag key whose description is being fetched.
+ in: path
+ name: tag_key
+ required: true
+ schema:
+ type: string
+ - description: Cloud provider to scope the lookup to (for example, `aws`). Omit to use the resolved fallback.
+ in: query
+ name: filter[cloud]
+ required: false
+ schema:
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ cloud: aws
+ created_at: "2026-01-01T12:00:00Z"
+ description: AWS account that owns this cost.
+ source: human
+ tag_key: account_id
+ updated_at: "2026-01-01T12:00:00Z"
+ id: account_id
+ type: cost_tag_description
+ schema:
+ $ref: "#/components/schemas/CostTagDescriptionResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "404":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Not Found
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cloud_cost_management_read
+ summary: Get a Cloud Cost Management tag description
+ tags:
+ - Cloud Cost Management
+ "x-permission":
+ operator: OR
+ permissions:
+ - cloud_cost_management_read
+ put:
+ description: Create or update a Cloud Cost Management tag key description. The new description and optional cloud scoping are supplied in the request body. Omit `cloud` to set a cross-cloud default for the tag key.
+ operationId: UpsertCostTagDescriptionByKey
+ parameters:
+ - description: The tag key whose description is being upserted.
+ in: path
+ name: tag_key
+ required: true
+ schema:
+ type: string
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ cloud: aws
+ description: AWS account that owns this cost.
+ id: account_id
+ type: cost_tag_description
+ schema:
+ $ref: "#/components/schemas/CostTagDescriptionUpsertRequest"
+ required: true
+ responses:
+ "204":
+ description: No Content
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cloud_cost_management_write
+ summary: Upsert a Cloud Cost Management tag description
+ tags:
+ - Cloud Cost Management
+ "x-permission":
+ operator: OR
+ permissions:
+ - cloud_cost_management_write
+ /api/v2/cost/tag_descriptions/{tag_key}/generate:
+ get:
+ description: Use AI to draft a Cloud Cost Management tag key description based on associated cost data. The generated description is returned in the response and is not persisted by this endpoint; follow up with `UpsertCostTagDescriptionByKey` to save it.
+ operationId: GenerateCostTagDescriptionByKey
+ parameters:
+ - description: The tag key to generate an AI description for.
+ in: path
+ name: tag_key
+ required: true
+ schema:
+ type: string
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ description: AWS account that owns this cost.
+ id: account_id
+ type: cost_generated_tag_description
+ schema:
+ $ref: "#/components/schemas/GenerateCostTagDescriptionResponse"
+ description: OK
+ "400":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Bad Request
+ "403":
+ content:
+ application/json:
+ schema:
+ $ref: "#/components/schemas/APIErrorResponse"
+ description: Forbidden
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - cloud_cost_management_read
+ summary: Generate a Cloud Cost Management tag description
+ tags:
+ - Cloud Cost Management
+ "x-permission":
+ operator: OR
+ permissions:
+ - cloud_cost_management_read
/api/v2/cost/tag_keys:
get:
description: List Cloud Cost Management tag keys.
@@ -119836,6 +123172,199 @@ paths:
operator: OR
permissions:
- logs_read_data
+ /api/v2/maintenance_windows:
+ get:
+ description: Returns all configured maintenance windows for event management cases. Maintenance windows define time periods during which case notifications and automation rules are suppressed for cases matching a given query.
+ operationId: ListMaintenanceWindows
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ - attributes:
+ end_at: "2026-06-01T06:00:00Z"
+ name: Weekly maintenance
+ query: "project:SEC"
+ start_at: "2026-06-01T00:00:00Z"
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ type: maintenance_window
+ schema:
+ $ref: "#/components/schemas/MaintenanceWindowsResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - event_correlation_config_read
+ summary: List maintenance windows
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ post:
+ description: Creates a maintenance window for event management cases with a name, case filter query, and time range (start and end).
+ operationId: CreateMaintenanceWindow
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ end_at: "2026-06-01T06:00:00Z"
+ name: Weekly maintenance
+ query: "project:SEC"
+ start_at: "2026-06-01T00:00:00Z"
+ type: maintenance_window
+ schema:
+ $ref: "#/components/schemas/MaintenanceWindowCreateRequest"
+ description: Maintenance window payload.
+ required: true
+ responses:
+ "201":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ end_at: "2026-06-01T06:00:00Z"
+ name: Weekly maintenance
+ query: "project:SEC"
+ start_at: "2026-06-01T00:00:00Z"
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ type: maintenance_window
+ schema:
+ $ref: "#/components/schemas/MaintenanceWindowResponse"
+ description: Created
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - event_correlation_config_write
+ summary: Create a maintenance window
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ /api/v2/maintenance_windows/{maintenance_window_id}:
+ delete:
+ description: Permanently deletes a maintenance window.
+ operationId: DeleteMaintenanceWindow
+ parameters:
+ - $ref: "#/components/parameters/MaintenanceWindowIDPathParameter"
+ responses:
+ "204":
+ description: No Content
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - event_correlation_config_write
+ summary: Delete a maintenance window
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
+ put:
+ description: Updates the name, query, start time, or end time of an existing maintenance window.
+ operationId: UpdateMaintenanceWindow
+ parameters:
+ - $ref: "#/components/parameters/MaintenanceWindowIDPathParameter"
+ requestBody:
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ end_at: "2026-06-01T06:00:00Z"
+ name: Weekly maintenance
+ query: "project:SEC"
+ start_at: "2026-06-01T00:00:00Z"
+ type: maintenance_window
+ schema:
+ $ref: "#/components/schemas/MaintenanceWindowUpdateRequest"
+ description: Maintenance window payload.
+ required: true
+ responses:
+ "200":
+ content:
+ application/json:
+ examples:
+ default:
+ value:
+ data:
+ attributes:
+ end_at: "2026-06-01T06:00:00Z"
+ name: Weekly maintenance
+ query: "project:SEC"
+ start_at: "2026-06-01T00:00:00Z"
+ id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
+ type: maintenance_window
+ schema:
+ $ref: "#/components/schemas/MaintenanceWindowResponse"
+ description: OK
+ "400":
+ $ref: "#/components/responses/BadRequestResponse"
+ "401":
+ $ref: "#/components/responses/UnauthorizedResponse"
+ "403":
+ $ref: "#/components/responses/ForbiddenResponse"
+ "404":
+ $ref: "#/components/responses/NotFoundResponse"
+ "429":
+ $ref: "#/components/responses/TooManyRequestsResponse"
+ security:
+ - apiKeyAuth: []
+ appKeyAuth: []
+ - AuthZ:
+ - event_correlation_config_write
+ summary: Update a maintenance window
+ tags:
+ - Case Management
+ x-unstable: |-
+ **Note**: This endpoint is in preview and is subject to change.
+ If you have any feedback, contact [Datadog support](https://docs.datadoghq.com/help/).
/api/v2/metrics:
get:
description: |-
diff --git a/examples/v2/case-management-attribute/UpdateCustomAttributeConfig.java b/examples/v2/case-management-attribute/UpdateCustomAttributeConfig.java
new file mode 100644
index 00000000000..d7e1ec64014
--- /dev/null
+++ b/examples/v2/case-management-attribute/UpdateCustomAttributeConfig.java
@@ -0,0 +1,52 @@
+// Update custom attribute config returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementAttributeApi;
+import com.datadog.api.client.v2.model.CustomAttributeConfigResourceType;
+import com.datadog.api.client.v2.model.CustomAttributeConfigResponse;
+import com.datadog.api.client.v2.model.CustomAttributeConfigUpdate;
+import com.datadog.api.client.v2.model.CustomAttributeConfigUpdateAttributes;
+import com.datadog.api.client.v2.model.CustomAttributeConfigUpdateRequest;
+import com.datadog.api.client.v2.model.CustomAttributeSelectOption;
+import com.datadog.api.client.v2.model.CustomAttributeType;
+import com.datadog.api.client.v2.model.CustomAttributeTypeData;
+import java.util.Collections;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.updateCustomAttributeConfig", true);
+ CaseManagementAttributeApi apiInstance = new CaseManagementAttributeApi(defaultClient);
+
+ CustomAttributeConfigUpdateRequest body =
+ new CustomAttributeConfigUpdateRequest()
+ .data(
+ new CustomAttributeConfigUpdate()
+ .attributes(
+ new CustomAttributeConfigUpdateAttributes()
+ .description("Updated description.")
+ .displayName("AWS Region")
+ .type(CustomAttributeType.NUMBER)
+ .typeData(
+ new CustomAttributeTypeData()
+ .options(
+ Collections.singletonList(
+ new CustomAttributeSelectOption().value("us-east-1")))))
+ .type(CustomAttributeConfigResourceType.CUSTOM_ATTRIBUTE));
+
+ try {
+ CustomAttributeConfigResponse result =
+ apiInstance.updateCustomAttributeConfig(
+ "f98a5a5b-e0ff-45d4-b2f5-afe6e74de505", "f98a5a5b-e0ff-45d4-b2f5-afe6e74de505", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling CaseManagementAttributeApi#updateCustomAttributeConfig");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management-type/UpdateCaseType.java b/examples/v2/case-management-type/UpdateCaseType.java
new file mode 100644
index 00000000000..cc15dbfd441
--- /dev/null
+++ b/examples/v2/case-management-type/UpdateCaseType.java
@@ -0,0 +1,41 @@
+// Update a case type returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementTypeApi;
+import com.datadog.api.client.v2.model.CaseTypeResourceAttributes;
+import com.datadog.api.client.v2.model.CaseTypeResourceType;
+import com.datadog.api.client.v2.model.CaseTypeResponse;
+import com.datadog.api.client.v2.model.CaseTypeUpdate;
+import com.datadog.api.client.v2.model.CaseTypeUpdateRequest;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.updateCaseType", true);
+ CaseManagementTypeApi apiInstance = new CaseManagementTypeApi(defaultClient);
+
+ CaseTypeUpdateRequest body =
+ new CaseTypeUpdateRequest()
+ .data(
+ new CaseTypeUpdate()
+ .attributes(
+ new CaseTypeResourceAttributes()
+ .description("Investigations done in case management")
+ .emoji("🕵🏻♂️")
+ .name("Investigation"))
+ .type(CaseTypeResourceType.CASE_TYPE));
+
+ try {
+ CaseTypeResponse result =
+ apiInstance.updateCaseType("f98a5a5b-e0ff-45d4-b2f5-afe6e74de505", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementTypeApi#updateCaseType");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/AddCaseInsights.java b/examples/v2/case-management/AddCaseInsights.java
new file mode 100644
index 00000000000..e6f26f68176
--- /dev/null
+++ b/examples/v2/case-management/AddCaseInsights.java
@@ -0,0 +1,47 @@
+// Add insights to a case returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseInsight;
+import com.datadog.api.client.v2.model.CaseInsightType;
+import com.datadog.api.client.v2.model.CaseInsightsAttributes;
+import com.datadog.api.client.v2.model.CaseInsightsData;
+import com.datadog.api.client.v2.model.CaseInsightsRequest;
+import com.datadog.api.client.v2.model.CaseResourceType;
+import com.datadog.api.client.v2.model.CaseResponse;
+import java.util.Collections;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.addCaseInsights", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ CaseInsightsRequest body =
+ new CaseInsightsRequest()
+ .data(
+ new CaseInsightsData()
+ .attributes(
+ new CaseInsightsAttributes()
+ .insights(
+ Collections.singletonList(
+ new CaseInsight()
+ .ref("/monitors/12345?q=total")
+ .resourceId("12345")
+ .type(CaseInsightType.SECURITY_SIGNAL))))
+ .type(CaseResourceType.CASE));
+
+ try {
+ CaseResponse result =
+ apiInstance.addCaseInsights("f98a5a5b-e0ff-45d4-b2f5-afe6e74de504", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#addCaseInsights");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/AggregateCases.java b/examples/v2/case-management/AggregateCases.java
new file mode 100644
index 00000000000..0836c865807
--- /dev/null
+++ b/examples/v2/case-management/AggregateCases.java
@@ -0,0 +1,44 @@
+// Aggregate cases returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseAggregateGroupBy;
+import com.datadog.api.client.v2.model.CaseAggregateRequest;
+import com.datadog.api.client.v2.model.CaseAggregateRequestAttributes;
+import com.datadog.api.client.v2.model.CaseAggregateRequestData;
+import com.datadog.api.client.v2.model.CaseAggregateResourceType;
+import com.datadog.api.client.v2.model.CaseAggregateResponse;
+import java.util.Collections;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.aggregateCases", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ CaseAggregateRequest body =
+ new CaseAggregateRequest()
+ .data(
+ new CaseAggregateRequestData()
+ .attributes(
+ new CaseAggregateRequestAttributes()
+ .groupBy(
+ new CaseAggregateGroupBy()
+ .groups(Collections.singletonList("status"))
+ .limit(14))
+ .queryFilter("service:case-api"))
+ .type(CaseAggregateResourceType.AGGREGATE));
+
+ try {
+ CaseAggregateResponse result = apiInstance.aggregateCases(body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#aggregateCases");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/BulkUpdateCases.java b/examples/v2/case-management/BulkUpdateCases.java
new file mode 100644
index 00000000000..c034b632d94
--- /dev/null
+++ b/examples/v2/case-management/BulkUpdateCases.java
@@ -0,0 +1,41 @@
+// Bulk update cases returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseBulkActionType;
+import com.datadog.api.client.v2.model.CaseBulkResourceType;
+import com.datadog.api.client.v2.model.CaseBulkUpdateRequest;
+import com.datadog.api.client.v2.model.CaseBulkUpdateRequestAttributes;
+import com.datadog.api.client.v2.model.CaseBulkUpdateRequestData;
+import java.util.Arrays;
+import java.util.Map;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.bulkUpdateCases", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ CaseBulkUpdateRequest body =
+ new CaseBulkUpdateRequest()
+ .data(
+ new CaseBulkUpdateRequestData()
+ .attributes(
+ new CaseBulkUpdateRequestAttributes()
+ .caseIds(Arrays.asList("case-id-1", "case-id-2"))
+ .payload(Map.ofEntries(Map.entry("priority", "P1")))
+ .type(CaseBulkActionType.PRIORITY))
+ .type(CaseBulkResourceType.BULK));
+
+ try {
+ apiInstance.bulkUpdateCases(body);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#bulkUpdateCases");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/CountCases.java b/examples/v2/case-management/CountCases.java
new file mode 100644
index 00000000000..70e1bdd3993
--- /dev/null
+++ b/examples/v2/case-management/CountCases.java
@@ -0,0 +1,25 @@
+// Count cases returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseCountResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.countCases", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ CaseCountResponse result = apiInstance.countCases();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#countCases");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/CreateCaseAutomationRule.java b/examples/v2/case-management/CreateCaseAutomationRule.java
new file mode 100644
index 00000000000..53a056fc923
--- /dev/null
+++ b/examples/v2/case-management/CreateCaseAutomationRule.java
@@ -0,0 +1,57 @@
+// Create an automation rule returns "Created" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.AutomationRuleAction;
+import com.datadog.api.client.v2.model.AutomationRuleActionData;
+import com.datadog.api.client.v2.model.AutomationRuleActionType;
+import com.datadog.api.client.v2.model.AutomationRuleCreate;
+import com.datadog.api.client.v2.model.AutomationRuleCreateAttributes;
+import com.datadog.api.client.v2.model.AutomationRuleCreateRequest;
+import com.datadog.api.client.v2.model.AutomationRuleResponse;
+import com.datadog.api.client.v2.model.AutomationRuleTrigger;
+import com.datadog.api.client.v2.model.AutomationRuleTriggerData;
+import com.datadog.api.client.v2.model.AutomationRuleTriggerType;
+import com.datadog.api.client.v2.model.CaseAutomationRuleResourceType;
+import com.datadog.api.client.v2.model.CaseAutomationRuleState;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.createCaseAutomationRule", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ AutomationRuleCreateRequest body =
+ new AutomationRuleCreateRequest()
+ .data(
+ new AutomationRuleCreate()
+ .attributes(
+ new AutomationRuleCreateAttributes()
+ .action(
+ new AutomationRuleAction()
+ .data(
+ new AutomationRuleActionData()
+ .handle("workflow-handle-123"))
+ .type(AutomationRuleActionType.EXECUTE_WORKFLOW))
+ .name("Auto-assign workflow")
+ .state(CaseAutomationRuleState.ENABLED)
+ .trigger(
+ new AutomationRuleTrigger()
+ .data(new AutomationRuleTriggerData())
+ .type(AutomationRuleTriggerType.CASE_CREATED)))
+ .type(CaseAutomationRuleResourceType.RULE));
+
+ try {
+ AutomationRuleResponse result =
+ apiInstance.createCaseAutomationRule("e555e290-ed65-49bd-ae18-8acbfcf18db7", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#createCaseAutomationRule");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/CreateCaseLink.java b/examples/v2/case-management/CreateCaseLink.java
new file mode 100644
index 00000000000..b4962577b96
--- /dev/null
+++ b/examples/v2/case-management/CreateCaseLink.java
@@ -0,0 +1,42 @@
+// Create a case link returns "Created" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseLinkAttributes;
+import com.datadog.api.client.v2.model.CaseLinkCreate;
+import com.datadog.api.client.v2.model.CaseLinkCreateRequest;
+import com.datadog.api.client.v2.model.CaseLinkResourceType;
+import com.datadog.api.client.v2.model.CaseLinkResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.createCaseLink", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ CaseLinkCreateRequest body =
+ new CaseLinkCreateRequest()
+ .data(
+ new CaseLinkCreate()
+ .attributes(
+ new CaseLinkAttributes()
+ .childEntityId("4417921d-0866-4a38-822c-6f2a0f65f77d")
+ .childEntityType("CASE")
+ .parentEntityId("bf0cbac6-4c16-4cfb-b6bf-ca5e0ec37a4f")
+ .parentEntityType("CASE")
+ .relationship("BLOCKS"))
+ .type(CaseLinkResourceType.LINK));
+
+ try {
+ CaseLinkResponse result = apiInstance.createCaseLink(body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#createCaseLink");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/CreateCaseView.java b/examples/v2/case-management/CreateCaseView.java
new file mode 100644
index 00000000000..0634693048e
--- /dev/null
+++ b/examples/v2/case-management/CreateCaseView.java
@@ -0,0 +1,40 @@
+// Create a case view returns "Created" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseViewCreate;
+import com.datadog.api.client.v2.model.CaseViewCreateAttributes;
+import com.datadog.api.client.v2.model.CaseViewCreateRequest;
+import com.datadog.api.client.v2.model.CaseViewResourceType;
+import com.datadog.api.client.v2.model.CaseViewResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.createCaseView", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ CaseViewCreateRequest body =
+ new CaseViewCreateRequest()
+ .data(
+ new CaseViewCreate()
+ .attributes(
+ new CaseViewCreateAttributes()
+ .name("Open bugs")
+ .projectId("e555e290-ed65-49bd-ae18-8acbfcf18db7")
+ .query("status:open type:bug"))
+ .type(CaseViewResourceType.VIEW));
+
+ try {
+ CaseViewResponse result = apiInstance.createCaseView(body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#createCaseView");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/CreateMaintenanceWindow.java b/examples/v2/case-management/CreateMaintenanceWindow.java
new file mode 100644
index 00000000000..acbc98018f7
--- /dev/null
+++ b/examples/v2/case-management/CreateMaintenanceWindow.java
@@ -0,0 +1,42 @@
+// Create a maintenance window returns "Created" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.MaintenanceWindowCreate;
+import com.datadog.api.client.v2.model.MaintenanceWindowCreateAttributes;
+import com.datadog.api.client.v2.model.MaintenanceWindowCreateRequest;
+import com.datadog.api.client.v2.model.MaintenanceWindowResourceType;
+import com.datadog.api.client.v2.model.MaintenanceWindowResponse;
+import java.time.OffsetDateTime;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.createMaintenanceWindow", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ MaintenanceWindowCreateRequest body =
+ new MaintenanceWindowCreateRequest()
+ .data(
+ new MaintenanceWindowCreate()
+ .attributes(
+ new MaintenanceWindowCreateAttributes()
+ .endAt(OffsetDateTime.parse("2026-06-01T06:00:00Z"))
+ .name("Weekly maintenance")
+ .query("project:SEC")
+ .startAt(OffsetDateTime.parse("2026-06-01T00:00:00Z")))
+ .type(MaintenanceWindowResourceType.MAINTENANCE_WINDOW));
+
+ try {
+ MaintenanceWindowResponse result = apiInstance.createMaintenanceWindow(body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#createMaintenanceWindow");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/DeleteCaseAutomationRule.java b/examples/v2/case-management/DeleteCaseAutomationRule.java
new file mode 100644
index 00000000000..d461dd331e2
--- /dev/null
+++ b/examples/v2/case-management/DeleteCaseAutomationRule.java
@@ -0,0 +1,24 @@
+// Delete an automation rule returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.deleteCaseAutomationRule", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ apiInstance.deleteCaseAutomationRule(
+ "e555e290-ed65-49bd-ae18-8acbfcf18db7", "e6773723-fe58-49ff-9975-dff00f14e28d");
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#deleteCaseAutomationRule");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/DeleteCaseLink.java b/examples/v2/case-management/DeleteCaseLink.java
new file mode 100644
index 00000000000..d52b14425b8
--- /dev/null
+++ b/examples/v2/case-management/DeleteCaseLink.java
@@ -0,0 +1,23 @@
+// Delete a case link returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.deleteCaseLink", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ apiInstance.deleteCaseLink("804cd682-55f6-4541-ab00-b608b282ea7d");
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#deleteCaseLink");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/DeleteCaseView.java b/examples/v2/case-management/DeleteCaseView.java
new file mode 100644
index 00000000000..ed7b96c8d94
--- /dev/null
+++ b/examples/v2/case-management/DeleteCaseView.java
@@ -0,0 +1,23 @@
+// Delete a case view returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.deleteCaseView", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ apiInstance.deleteCaseView("a1b2c3d4-e5f6-7890-abcd-ef1234567890");
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#deleteCaseView");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/DeleteMaintenanceWindow.java b/examples/v2/case-management/DeleteMaintenanceWindow.java
new file mode 100644
index 00000000000..6de1957ba4d
--- /dev/null
+++ b/examples/v2/case-management/DeleteMaintenanceWindow.java
@@ -0,0 +1,23 @@
+// Delete a maintenance window returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.deleteMaintenanceWindow", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ apiInstance.deleteMaintenanceWindow("a1b2c3d4-e5f6-7890-abcd-ef1234567890");
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#deleteMaintenanceWindow");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/DisableCaseAutomationRule.java b/examples/v2/case-management/DisableCaseAutomationRule.java
new file mode 100644
index 00000000000..0351e61689c
--- /dev/null
+++ b/examples/v2/case-management/DisableCaseAutomationRule.java
@@ -0,0 +1,27 @@
+// Disable an automation rule returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.AutomationRuleResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.disableCaseAutomationRule", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ AutomationRuleResponse result =
+ apiInstance.disableCaseAutomationRule(
+ "e555e290-ed65-49bd-ae18-8acbfcf18db7", "e6773723-fe58-49ff-9975-dff00f14e28d");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#disableCaseAutomationRule");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/EnableCaseAutomationRule.java b/examples/v2/case-management/EnableCaseAutomationRule.java
new file mode 100644
index 00000000000..7ebdf811e41
--- /dev/null
+++ b/examples/v2/case-management/EnableCaseAutomationRule.java
@@ -0,0 +1,27 @@
+// Enable an automation rule returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.AutomationRuleResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.enableCaseAutomationRule", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ AutomationRuleResponse result =
+ apiInstance.enableCaseAutomationRule(
+ "e555e290-ed65-49bd-ae18-8acbfcf18db7", "e6773723-fe58-49ff-9975-dff00f14e28d");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#enableCaseAutomationRule");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/FavoriteCaseProject.java b/examples/v2/case-management/FavoriteCaseProject.java
new file mode 100644
index 00000000000..d698738a437
--- /dev/null
+++ b/examples/v2/case-management/FavoriteCaseProject.java
@@ -0,0 +1,23 @@
+// Favorite a project returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.favoriteCaseProject", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ apiInstance.favoriteCaseProject("e555e290-ed65-49bd-ae18-8acbfcf18db7");
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#favoriteCaseProject");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/GetCaseAutomationRule.java b/examples/v2/case-management/GetCaseAutomationRule.java
new file mode 100644
index 00000000000..1c4481ff635
--- /dev/null
+++ b/examples/v2/case-management/GetCaseAutomationRule.java
@@ -0,0 +1,27 @@
+// Get an automation rule returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.AutomationRuleResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.getCaseAutomationRule", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ AutomationRuleResponse result =
+ apiInstance.getCaseAutomationRule(
+ "e555e290-ed65-49bd-ae18-8acbfcf18db7", "e6773723-fe58-49ff-9975-dff00f14e28d");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#getCaseAutomationRule");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/GetCaseView.java b/examples/v2/case-management/GetCaseView.java
new file mode 100644
index 00000000000..ba4f81d56ae
--- /dev/null
+++ b/examples/v2/case-management/GetCaseView.java
@@ -0,0 +1,25 @@
+// Get a case view returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseViewResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.getCaseView", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ CaseViewResponse result = apiInstance.getCaseView("a1b2c3d4-e5f6-7890-abcd-ef1234567890");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#getCaseView");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/ListCaseAutomationRules.java b/examples/v2/case-management/ListCaseAutomationRules.java
new file mode 100644
index 00000000000..4865bb58de4
--- /dev/null
+++ b/examples/v2/case-management/ListCaseAutomationRules.java
@@ -0,0 +1,26 @@
+// List automation rules returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.AutomationRulesResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.listCaseAutomationRules", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ AutomationRulesResponse result =
+ apiInstance.listCaseAutomationRules("e555e290-ed65-49bd-ae18-8acbfcf18db7");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#listCaseAutomationRules");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/ListCaseLinks.java b/examples/v2/case-management/ListCaseLinks.java
new file mode 100644
index 00000000000..aaa6842a5a2
--- /dev/null
+++ b/examples/v2/case-management/ListCaseLinks.java
@@ -0,0 +1,26 @@
+// List case links returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseLinksResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.listCaseLinks", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ CaseLinksResponse result =
+ apiInstance.listCaseLinks("CASE", "bf0cbac6-4c16-4cfb-b6bf-ca5e0ec37a4f");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#listCaseLinks");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/ListCaseTimeline.java b/examples/v2/case-management/ListCaseTimeline.java
new file mode 100644
index 00000000000..e8b61beaef5
--- /dev/null
+++ b/examples/v2/case-management/ListCaseTimeline.java
@@ -0,0 +1,26 @@
+// Get case timeline returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.TimelineResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.listCaseTimeline", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ TimelineResponse result =
+ apiInstance.listCaseTimeline("f98a5a5b-e0ff-45d4-b2f5-afe6e74de504");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#listCaseTimeline");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/ListCaseViews.java b/examples/v2/case-management/ListCaseViews.java
new file mode 100644
index 00000000000..5a6a57c6ec1
--- /dev/null
+++ b/examples/v2/case-management/ListCaseViews.java
@@ -0,0 +1,25 @@
+// List case views returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseViewsResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.listCaseViews", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ CaseViewsResponse result = apiInstance.listCaseViews("e555e290-ed65-49bd-ae18-8acbfcf18db7");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#listCaseViews");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/ListCaseWatchers.java b/examples/v2/case-management/ListCaseWatchers.java
new file mode 100644
index 00000000000..56716c7da57
--- /dev/null
+++ b/examples/v2/case-management/ListCaseWatchers.java
@@ -0,0 +1,26 @@
+// List case watchers returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseWatchersResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.listCaseWatchers", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ CaseWatchersResponse result =
+ apiInstance.listCaseWatchers("f98a5a5b-e0ff-45d4-b2f5-afe6e74de504");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#listCaseWatchers");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/ListMaintenanceWindows.java b/examples/v2/case-management/ListMaintenanceWindows.java
new file mode 100644
index 00000000000..816a250f3dc
--- /dev/null
+++ b/examples/v2/case-management/ListMaintenanceWindows.java
@@ -0,0 +1,25 @@
+// List maintenance windows returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.MaintenanceWindowsResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.listMaintenanceWindows", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ MaintenanceWindowsResponse result = apiInstance.listMaintenanceWindows();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#listMaintenanceWindows");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/ListUserCaseProjectFavorites.java b/examples/v2/case-management/ListUserCaseProjectFavorites.java
new file mode 100644
index 00000000000..801a3cc6bcd
--- /dev/null
+++ b/examples/v2/case-management/ListUserCaseProjectFavorites.java
@@ -0,0 +1,25 @@
+// List project favorites returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.ProjectFavoritesResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.listUserCaseProjectFavorites", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ ProjectFavoritesResponse result = apiInstance.listUserCaseProjectFavorites();
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#listUserCaseProjectFavorites");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/RemoveCaseInsights.java b/examples/v2/case-management/RemoveCaseInsights.java
new file mode 100644
index 00000000000..d0e6fb7ebfb
--- /dev/null
+++ b/examples/v2/case-management/RemoveCaseInsights.java
@@ -0,0 +1,47 @@
+// Remove insights from a case returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseInsight;
+import com.datadog.api.client.v2.model.CaseInsightType;
+import com.datadog.api.client.v2.model.CaseInsightsAttributes;
+import com.datadog.api.client.v2.model.CaseInsightsData;
+import com.datadog.api.client.v2.model.CaseInsightsRequest;
+import com.datadog.api.client.v2.model.CaseResourceType;
+import com.datadog.api.client.v2.model.CaseResponse;
+import java.util.Collections;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.removeCaseInsights", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ CaseInsightsRequest body =
+ new CaseInsightsRequest()
+ .data(
+ new CaseInsightsData()
+ .attributes(
+ new CaseInsightsAttributes()
+ .insights(
+ Collections.singletonList(
+ new CaseInsight()
+ .ref("/monitors/12345?q=total")
+ .resourceId("12345")
+ .type(CaseInsightType.SECURITY_SIGNAL))))
+ .type(CaseResourceType.CASE));
+
+ try {
+ CaseResponse result =
+ apiInstance.removeCaseInsights("f98a5a5b-e0ff-45d4-b2f5-afe6e74de504", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#removeCaseInsights");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/UnfavoriteCaseProject.java b/examples/v2/case-management/UnfavoriteCaseProject.java
new file mode 100644
index 00000000000..8410d476e62
--- /dev/null
+++ b/examples/v2/case-management/UnfavoriteCaseProject.java
@@ -0,0 +1,23 @@
+// Unfavorite a project returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.unfavoriteCaseProject", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ apiInstance.unfavoriteCaseProject("e555e290-ed65-49bd-ae18-8acbfcf18db7");
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#unfavoriteCaseProject");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/UnwatchCase.java b/examples/v2/case-management/UnwatchCase.java
new file mode 100644
index 00000000000..595e61bf4d2
--- /dev/null
+++ b/examples/v2/case-management/UnwatchCase.java
@@ -0,0 +1,24 @@
+// Unwatch a case returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.unwatchCase", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ apiInstance.unwatchCase(
+ "f98a5a5b-e0ff-45d4-b2f5-afe6e74de504", "8146583c-0b5f-11ec-abf8-da7ad0900001");
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#unwatchCase");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/UpdateCaseAutomationRule.java b/examples/v2/case-management/UpdateCaseAutomationRule.java
new file mode 100644
index 00000000000..ae790b716a5
--- /dev/null
+++ b/examples/v2/case-management/UpdateCaseAutomationRule.java
@@ -0,0 +1,58 @@
+// Update an automation rule returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.AutomationRuleAction;
+import com.datadog.api.client.v2.model.AutomationRuleActionData;
+import com.datadog.api.client.v2.model.AutomationRuleActionType;
+import com.datadog.api.client.v2.model.AutomationRuleCreateAttributes;
+import com.datadog.api.client.v2.model.AutomationRuleResponse;
+import com.datadog.api.client.v2.model.AutomationRuleTrigger;
+import com.datadog.api.client.v2.model.AutomationRuleTriggerData;
+import com.datadog.api.client.v2.model.AutomationRuleTriggerType;
+import com.datadog.api.client.v2.model.AutomationRuleUpdate;
+import com.datadog.api.client.v2.model.AutomationRuleUpdateRequest;
+import com.datadog.api.client.v2.model.CaseAutomationRuleResourceType;
+import com.datadog.api.client.v2.model.CaseAutomationRuleState;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.updateCaseAutomationRule", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ AutomationRuleUpdateRequest body =
+ new AutomationRuleUpdateRequest()
+ .data(
+ new AutomationRuleUpdate()
+ .attributes(
+ new AutomationRuleCreateAttributes()
+ .action(
+ new AutomationRuleAction()
+ .data(
+ new AutomationRuleActionData()
+ .handle("workflow-handle-123"))
+ .type(AutomationRuleActionType.EXECUTE_WORKFLOW))
+ .name("Auto-assign workflow")
+ .state(CaseAutomationRuleState.ENABLED)
+ .trigger(
+ new AutomationRuleTrigger()
+ .data(new AutomationRuleTriggerData())
+ .type(AutomationRuleTriggerType.CASE_CREATED)))
+ .type(CaseAutomationRuleResourceType.RULE));
+
+ try {
+ AutomationRuleResponse result =
+ apiInstance.updateCaseAutomationRule(
+ "e555e290-ed65-49bd-ae18-8acbfcf18db7", "e6773723-fe58-49ff-9975-dff00f14e28d", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#updateCaseAutomationRule");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/UpdateCaseComment.java b/examples/v2/case-management/UpdateCaseComment.java
new file mode 100644
index 00000000000..9811185295e
--- /dev/null
+++ b/examples/v2/case-management/UpdateCaseComment.java
@@ -0,0 +1,35 @@
+// Update case comment returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseResourceType;
+import com.datadog.api.client.v2.model.CaseUpdateComment;
+import com.datadog.api.client.v2.model.CaseUpdateCommentAttributes;
+import com.datadog.api.client.v2.model.CaseUpdateCommentRequest;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.updateCaseComment", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ CaseUpdateCommentRequest body =
+ new CaseUpdateCommentRequest()
+ .data(
+ new CaseUpdateComment()
+ .attributes(new CaseUpdateCommentAttributes().comment("Updated comment text"))
+ .type(CaseResourceType.CASE));
+
+ try {
+ apiInstance.updateCaseComment(
+ "f98a5a5b-e0ff-45d4-b2f5-afe6e74de504", "f98a5a5b-e0ff-45d4-b2f5-afe6e74de504", body);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#updateCaseComment");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/UpdateCaseDueDate.java b/examples/v2/case-management/UpdateCaseDueDate.java
new file mode 100644
index 00000000000..c6d4c89ac4a
--- /dev/null
+++ b/examples/v2/case-management/UpdateCaseDueDate.java
@@ -0,0 +1,37 @@
+// Update case due date returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseResourceType;
+import com.datadog.api.client.v2.model.CaseResponse;
+import com.datadog.api.client.v2.model.CaseUpdateDueDate;
+import com.datadog.api.client.v2.model.CaseUpdateDueDateAttributes;
+import com.datadog.api.client.v2.model.CaseUpdateDueDateRequest;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.updateCaseDueDate", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ CaseUpdateDueDateRequest body =
+ new CaseUpdateDueDateRequest()
+ .data(
+ new CaseUpdateDueDate()
+ .attributes(new CaseUpdateDueDateAttributes().dueDate("2026-12-31"))
+ .type(CaseResourceType.CASE));
+
+ try {
+ CaseResponse result =
+ apiInstance.updateCaseDueDate("f98a5a5b-e0ff-45d4-b2f5-afe6e74de504", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#updateCaseDueDate");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/UpdateCaseResolvedReason.java b/examples/v2/case-management/UpdateCaseResolvedReason.java
new file mode 100644
index 00000000000..8a68da05d48
--- /dev/null
+++ b/examples/v2/case-management/UpdateCaseResolvedReason.java
@@ -0,0 +1,39 @@
+// Update case resolved reason returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseResourceType;
+import com.datadog.api.client.v2.model.CaseResponse;
+import com.datadog.api.client.v2.model.CaseUpdateResolvedReason;
+import com.datadog.api.client.v2.model.CaseUpdateResolvedReasonAttributes;
+import com.datadog.api.client.v2.model.CaseUpdateResolvedReasonRequest;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.updateCaseResolvedReason", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ CaseUpdateResolvedReasonRequest body =
+ new CaseUpdateResolvedReasonRequest()
+ .data(
+ new CaseUpdateResolvedReason()
+ .attributes(
+ new CaseUpdateResolvedReasonAttributes()
+ .securityResolvedReason("FALSE_POSITIVE"))
+ .type(CaseResourceType.CASE));
+
+ try {
+ CaseResponse result =
+ apiInstance.updateCaseResolvedReason("f98a5a5b-e0ff-45d4-b2f5-afe6e74de504", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#updateCaseResolvedReason");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/UpdateCaseView.java b/examples/v2/case-management/UpdateCaseView.java
new file mode 100644
index 00000000000..7fd99f732a3
--- /dev/null
+++ b/examples/v2/case-management/UpdateCaseView.java
@@ -0,0 +1,37 @@
+// Update a case view returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.CaseViewResourceType;
+import com.datadog.api.client.v2.model.CaseViewResponse;
+import com.datadog.api.client.v2.model.CaseViewUpdate;
+import com.datadog.api.client.v2.model.CaseViewUpdateAttributes;
+import com.datadog.api.client.v2.model.CaseViewUpdateRequest;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.updateCaseView", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ CaseViewUpdateRequest body =
+ new CaseViewUpdateRequest()
+ .data(
+ new CaseViewUpdate()
+ .attributes(new CaseViewUpdateAttributes())
+ .type(CaseViewResourceType.VIEW));
+
+ try {
+ CaseViewResponse result =
+ apiInstance.updateCaseView("a1b2c3d4-e5f6-7890-abcd-ef1234567890", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#updateCaseView");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/UpdateMaintenanceWindow.java b/examples/v2/case-management/UpdateMaintenanceWindow.java
new file mode 100644
index 00000000000..5f1034c4a0d
--- /dev/null
+++ b/examples/v2/case-management/UpdateMaintenanceWindow.java
@@ -0,0 +1,37 @@
+// Update a maintenance window returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+import com.datadog.api.client.v2.model.MaintenanceWindowResourceType;
+import com.datadog.api.client.v2.model.MaintenanceWindowResponse;
+import com.datadog.api.client.v2.model.MaintenanceWindowUpdate;
+import com.datadog.api.client.v2.model.MaintenanceWindowUpdateAttributes;
+import com.datadog.api.client.v2.model.MaintenanceWindowUpdateRequest;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.updateMaintenanceWindow", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ MaintenanceWindowUpdateRequest body =
+ new MaintenanceWindowUpdateRequest()
+ .data(
+ new MaintenanceWindowUpdate()
+ .attributes(new MaintenanceWindowUpdateAttributes())
+ .type(MaintenanceWindowResourceType.MAINTENANCE_WINDOW));
+
+ try {
+ MaintenanceWindowResponse result =
+ apiInstance.updateMaintenanceWindow("a1b2c3d4-e5f6-7890-abcd-ef1234567890", body);
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#updateMaintenanceWindow");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/case-management/WatchCase.java b/examples/v2/case-management/WatchCase.java
new file mode 100644
index 00000000000..571b44a8d1c
--- /dev/null
+++ b/examples/v2/case-management/WatchCase.java
@@ -0,0 +1,24 @@
+// Watch a case returns "Created" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CaseManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ defaultClient.setUnstableOperationEnabled("v2.watchCase", true);
+ CaseManagementApi apiInstance = new CaseManagementApi(defaultClient);
+
+ try {
+ apiInstance.watchCase(
+ "f98a5a5b-e0ff-45d4-b2f5-afe6e74de504", "8146583c-0b5f-11ec-abf8-da7ad0900001");
+ } catch (ApiException e) {
+ System.err.println("Exception when calling CaseManagementApi#watchCase");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/cloud-cost-management/DeleteCostTagDescriptionByKey.java b/examples/v2/cloud-cost-management/DeleteCostTagDescriptionByKey.java
new file mode 100644
index 00000000000..3d8b97aa170
--- /dev/null
+++ b/examples/v2/cloud-cost-management/DeleteCostTagDescriptionByKey.java
@@ -0,0 +1,23 @@
+// Delete a Cloud Cost Management tag description returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CloudCostManagementApi;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ CloudCostManagementApi apiInstance = new CloudCostManagementApi(defaultClient);
+
+ try {
+ apiInstance.deleteCostTagDescriptionByKey("tag_key");
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling CloudCostManagementApi#deleteCostTagDescriptionByKey");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/cloud-cost-management/GenerateCostTagDescriptionByKey.java b/examples/v2/cloud-cost-management/GenerateCostTagDescriptionByKey.java
new file mode 100644
index 00000000000..b2968547235
--- /dev/null
+++ b/examples/v2/cloud-cost-management/GenerateCostTagDescriptionByKey.java
@@ -0,0 +1,26 @@
+// Generate a Cloud Cost Management tag description returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CloudCostManagementApi;
+import com.datadog.api.client.v2.model.GenerateCostTagDescriptionResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ CloudCostManagementApi apiInstance = new CloudCostManagementApi(defaultClient);
+
+ try {
+ GenerateCostTagDescriptionResponse result =
+ apiInstance.generateCostTagDescriptionByKey("tag_key");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling CloudCostManagementApi#generateCostTagDescriptionByKey");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/cloud-cost-management/GetCostTagDescriptionByKey.java b/examples/v2/cloud-cost-management/GetCostTagDescriptionByKey.java
new file mode 100644
index 00000000000..ebeea18f5de
--- /dev/null
+++ b/examples/v2/cloud-cost-management/GetCostTagDescriptionByKey.java
@@ -0,0 +1,25 @@
+// Get a Cloud Cost Management tag description returns "OK" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CloudCostManagementApi;
+import com.datadog.api.client.v2.model.CostTagDescriptionResponse;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ CloudCostManagementApi apiInstance = new CloudCostManagementApi(defaultClient);
+
+ try {
+ CostTagDescriptionResponse result = apiInstance.getCostTagDescriptionByKey("tag_key");
+ System.out.println(result);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling CloudCostManagementApi#getCostTagDescriptionByKey");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/examples/v2/cloud-cost-management/UpsertCostTagDescriptionByKey.java b/examples/v2/cloud-cost-management/UpsertCostTagDescriptionByKey.java
new file mode 100644
index 00000000000..c2566ee1d00
--- /dev/null
+++ b/examples/v2/cloud-cost-management/UpsertCostTagDescriptionByKey.java
@@ -0,0 +1,38 @@
+// Upsert a Cloud Cost Management tag description returns "No Content" response
+
+import com.datadog.api.client.ApiClient;
+import com.datadog.api.client.ApiException;
+import com.datadog.api.client.v2.api.CloudCostManagementApi;
+import com.datadog.api.client.v2.model.CostTagDescriptionType;
+import com.datadog.api.client.v2.model.CostTagDescriptionUpsertRequest;
+import com.datadog.api.client.v2.model.CostTagDescriptionUpsertRequestData;
+import com.datadog.api.client.v2.model.CostTagDescriptionUpsertRequestDataAttributes;
+
+public class Example {
+ public static void main(String[] args) {
+ ApiClient defaultClient = ApiClient.getDefaultApiClient();
+ CloudCostManagementApi apiInstance = new CloudCostManagementApi(defaultClient);
+
+ CostTagDescriptionUpsertRequest body =
+ new CostTagDescriptionUpsertRequest()
+ .data(
+ new CostTagDescriptionUpsertRequestData()
+ .attributes(
+ new CostTagDescriptionUpsertRequestDataAttributes()
+ .cloud("aws")
+ .description("AWS account that owns this cost."))
+ .id("account_id")
+ .type(CostTagDescriptionType.COST_TAG_DESCRIPTION));
+
+ try {
+ apiInstance.upsertCostTagDescriptionByKey("tag_key", body);
+ } catch (ApiException e) {
+ System.err.println(
+ "Exception when calling CloudCostManagementApi#upsertCostTagDescriptionByKey");
+ System.err.println("Status code: " + e.getCode());
+ System.err.println("Reason: " + e.getResponseBody());
+ System.err.println("Response headers: " + e.getResponseHeaders());
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/src/main/java/com/datadog/api/client/ApiClient.java b/src/main/java/com/datadog/api/client/ApiClient.java
index 2e075b16da1..154df27bdac 100644
--- a/src/main/java/com/datadog/api/client/ApiClient.java
+++ b/src/main/java/com/datadog/api/client/ApiClient.java
@@ -812,13 +812,49 @@ public class ApiClient {
put("v2.getInvestigation", false);
put("v2.listInvestigations", false);
put("v2.triggerInvestigation", false);
+ put("v2.addCaseInsights", false);
+ put("v2.aggregateCases", false);
+ put("v2.bulkUpdateCases", false);
+ put("v2.countCases", false);
+ put("v2.createCaseAutomationRule", false);
put("v2.createCaseJiraIssue", false);
+ put("v2.createCaseLink", false);
put("v2.createCaseNotebook", false);
put("v2.createCaseServiceNowTicket", false);
+ put("v2.createCaseView", false);
+ put("v2.createMaintenanceWindow", false);
+ put("v2.deleteCaseAutomationRule", false);
+ put("v2.deleteCaseLink", false);
+ put("v2.deleteCaseView", false);
+ put("v2.deleteMaintenanceWindow", false);
+ put("v2.disableCaseAutomationRule", false);
+ put("v2.enableCaseAutomationRule", false);
+ put("v2.favoriteCaseProject", false);
+ put("v2.getCaseAutomationRule", false);
+ put("v2.getCaseView", false);
put("v2.linkIncident", false);
put("v2.linkJiraIssueToCase", false);
+ put("v2.listCaseAutomationRules", false);
+ put("v2.listCaseLinks", false);
+ put("v2.listCaseTimeline", false);
+ put("v2.listCaseViews", false);
+ put("v2.listCaseWatchers", false);
+ put("v2.listMaintenanceWindows", false);
+ put("v2.listUserCaseProjectFavorites", false);
put("v2.moveCaseToProject", false);
+ put("v2.removeCaseInsights", false);
+ put("v2.unfavoriteCaseProject", false);
put("v2.unlinkJiraIssue", false);
+ put("v2.unwatchCase", false);
+ put("v2.updateCaseAutomationRule", false);
+ put("v2.updateCaseComment", false);
+ put("v2.updateCaseDueDate", false);
+ put("v2.updateCaseResolvedReason", false);
+ put("v2.updateCaseView", false);
+ put("v2.updateMaintenanceWindow", false);
+ put("v2.watchCase", false);
+ put("v2.updateCaseType", false);
+ put("v2.updateCustomAttributeConfig", false);
put("v2.createChangeRequest", false);
put("v2.createChangeRequestBranch", false);
put("v2.deleteChangeRequestDecision", false);
diff --git a/src/main/java/com/datadog/api/client/v2/api/CaseManagementApi.java b/src/main/java/com/datadog/api/client/v2/api/CaseManagementApi.java
index 73c196b871f..6fc97f9e86a 100644
--- a/src/main/java/com/datadog/api/client/v2/api/CaseManagementApi.java
+++ b/src/main/java/com/datadog/api/client/v2/api/CaseManagementApi.java
@@ -5,11 +5,23 @@
import com.datadog.api.client.ApiResponse;
import com.datadog.api.client.PaginationIterable;
import com.datadog.api.client.Pair;
+import com.datadog.api.client.v2.model.AutomationRuleCreateRequest;
+import com.datadog.api.client.v2.model.AutomationRuleResponse;
+import com.datadog.api.client.v2.model.AutomationRuleUpdateRequest;
+import com.datadog.api.client.v2.model.AutomationRulesResponse;
import com.datadog.api.client.v2.model.Case;
+import com.datadog.api.client.v2.model.CaseAggregateRequest;
+import com.datadog.api.client.v2.model.CaseAggregateResponse;
import com.datadog.api.client.v2.model.CaseAssignRequest;
+import com.datadog.api.client.v2.model.CaseBulkUpdateRequest;
import com.datadog.api.client.v2.model.CaseCommentRequest;
+import com.datadog.api.client.v2.model.CaseCountResponse;
import com.datadog.api.client.v2.model.CaseCreateRequest;
import com.datadog.api.client.v2.model.CaseEmptyRequest;
+import com.datadog.api.client.v2.model.CaseInsightsRequest;
+import com.datadog.api.client.v2.model.CaseLinkCreateRequest;
+import com.datadog.api.client.v2.model.CaseLinkResponse;
+import com.datadog.api.client.v2.model.CaseLinksResponse;
import com.datadog.api.client.v2.model.CaseNotificationRuleCreateRequest;
import com.datadog.api.client.v2.model.CaseNotificationRuleResponse;
import com.datadog.api.client.v2.model.CaseNotificationRuleUpdateRequest;
@@ -17,16 +29,29 @@
import com.datadog.api.client.v2.model.CaseResponse;
import com.datadog.api.client.v2.model.CaseSortableField;
import com.datadog.api.client.v2.model.CaseUpdateAttributesRequest;
+import com.datadog.api.client.v2.model.CaseUpdateCommentRequest;
import com.datadog.api.client.v2.model.CaseUpdateCustomAttributeRequest;
import com.datadog.api.client.v2.model.CaseUpdateDescriptionRequest;
+import com.datadog.api.client.v2.model.CaseUpdateDueDateRequest;
import com.datadog.api.client.v2.model.CaseUpdatePriorityRequest;
+import com.datadog.api.client.v2.model.CaseUpdateResolvedReasonRequest;
import com.datadog.api.client.v2.model.CaseUpdateStatusRequest;
import com.datadog.api.client.v2.model.CaseUpdateTitleRequest;
+import com.datadog.api.client.v2.model.CaseViewCreateRequest;
+import com.datadog.api.client.v2.model.CaseViewResponse;
+import com.datadog.api.client.v2.model.CaseViewUpdateRequest;
+import com.datadog.api.client.v2.model.CaseViewsResponse;
+import com.datadog.api.client.v2.model.CaseWatchersResponse;
import com.datadog.api.client.v2.model.CasesResponse;
import com.datadog.api.client.v2.model.JiraIssueCreateRequest;
import com.datadog.api.client.v2.model.JiraIssueLinkRequest;
+import com.datadog.api.client.v2.model.MaintenanceWindowCreateRequest;
+import com.datadog.api.client.v2.model.MaintenanceWindowResponse;
+import com.datadog.api.client.v2.model.MaintenanceWindowUpdateRequest;
+import com.datadog.api.client.v2.model.MaintenanceWindowsResponse;
import com.datadog.api.client.v2.model.NotebookCreateRequest;
import com.datadog.api.client.v2.model.ProjectCreateRequest;
+import com.datadog.api.client.v2.model.ProjectFavoritesResponse;
import com.datadog.api.client.v2.model.ProjectRelationship;
import com.datadog.api.client.v2.model.ProjectResponse;
import com.datadog.api.client.v2.model.ProjectUpdateRequest;
@@ -75,30 +100,31 @@ public void setApiClient(ApiClient apiClient) {
}
/**
- * Archive case.
+ * Add insights to a case.
*
- *
See {@link #archiveCaseWithHttpInfo}.
+ *
See {@link #addCaseInsightsWithHttpInfo}.
*
* @param caseId Case's UUID or key (required)
- * @param body Archive case payload (required)
+ * @param body Case insights request. (required)
* @return CaseResponse
* @throws ApiException if fails to make API call
*/
- public CaseResponse archiveCase(String caseId, CaseEmptyRequest body) throws ApiException {
- return archiveCaseWithHttpInfo(caseId, body).getData();
+ public CaseResponse addCaseInsights(String caseId, CaseInsightsRequest body) throws ApiException {
+ return addCaseInsightsWithHttpInfo(caseId, body).getData();
}
/**
- * Archive case.
+ * Add insights to a case.
*
- *
See {@link #archiveCaseWithHttpInfoAsync}.
+ *
See {@link #addCaseInsightsWithHttpInfoAsync}.
*
* @param caseId Case's UUID or key (required)
- * @param body Archive case payload (required)
+ * @param body Case insights request. (required)
* @return CompletableFuture<CaseResponse>
*/
- public CompletableFuture archiveCaseAsync(String caseId, CaseEmptyRequest body) {
- return archiveCaseWithHttpInfoAsync(caseId, body)
+ public CompletableFuture addCaseInsightsAsync(
+ String caseId, CaseInsightsRequest body) {
+ return addCaseInsightsWithHttpInfoAsync(caseId, body)
.thenApply(
response -> {
return response.getData();
@@ -106,10 +132,14 @@ public CompletableFuture archiveCaseAsync(String caseId, CaseEmpty
}
/**
- * Archive case
+ * Adds one or more insights to a case. Insights are references to related Datadog resources (such
+ * as monitors, security signals, incidents, or error tracking issues) that provide investigative
+ * context. Up to 100 insights can be added per request. Each insight requires a type (see
+ * CaseInsightType for allowed values), a ref (URL path to the resource), and a
+ * resource_id.
*
* @param caseId Case's UUID or key (required)
- * @param body Archive case payload (required)
+ * @param body Case insights request. (required)
* @return ApiResponse<CaseResponse>
* @throws ApiException if fails to make API call
* @http.response.details
@@ -124,30 +154,38 @@ public CompletableFuture archiveCaseAsync(String caseId, CaseEmpty
* | 429 | Too many requests | - |
*
*/
- public ApiResponse archiveCaseWithHttpInfo(String caseId, CaseEmptyRequest body)
- throws ApiException {
+ public ApiResponse addCaseInsightsWithHttpInfo(
+ String caseId, CaseInsightsRequest body) throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "addCaseInsights";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
Object localVarPostBody = body;
// verify the required parameter 'caseId' is set
if (caseId == null) {
throw new ApiException(
- 400, "Missing the required parameter 'caseId' when calling archiveCase");
+ 400, "Missing the required parameter 'caseId' when calling addCaseInsights");
}
// verify the required parameter 'body' is set
if (body == null) {
- throw new ApiException(400, "Missing the required parameter 'body' when calling archiveCase");
+ throw new ApiException(
+ 400, "Missing the required parameter 'body' when calling addCaseInsights");
}
// create path and map variables
String localVarPath =
- "/api/v2/cases/{case_id}/archive"
+ "/api/v2/cases/{case_id}/insights"
.replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
Map localVarHeaderParams = new HashMap();
Invocation.Builder builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.archiveCase",
+ "v2.CaseManagementApi.addCaseInsights",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -155,7 +193,7 @@ public ApiResponse archiveCaseWithHttpInfo(String caseId, CaseEmpt
new String[] {"application/json"},
new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
return apiClient.invokeAPI(
- "POST",
+ "PUT",
builder,
localVarHeaderParams,
new String[] {"application/json"},
@@ -166,16 +204,26 @@ public ApiResponse archiveCaseWithHttpInfo(String caseId, CaseEmpt
}
/**
- * Archive case.
+ * Add insights to a case.
*
- * See {@link #archiveCaseWithHttpInfo}.
+ *
See {@link #addCaseInsightsWithHttpInfo}.
*
* @param caseId Case's UUID or key (required)
- * @param body Archive case payload (required)
+ * @param body Case insights request. (required)
* @return CompletableFuture<ApiResponse<CaseResponse>>
*/
- public CompletableFuture> archiveCaseWithHttpInfoAsync(
- String caseId, CaseEmptyRequest body) {
+ public CompletableFuture> addCaseInsightsWithHttpInfoAsync(
+ String caseId, CaseInsightsRequest body) {
+ // Check if unstable operation is enabled
+ String operationId = "addCaseInsights";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
Object localVarPostBody = body;
// verify the required parameter 'caseId' is set
@@ -183,7 +231,7 @@ public CompletableFuture> archiveCaseWithHttpInfoAsync
CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
new ApiException(
- 400, "Missing the required parameter 'caseId' when calling archiveCase"));
+ 400, "Missing the required parameter 'caseId' when calling addCaseInsights"));
return result;
}
@@ -191,12 +239,13 @@ public CompletableFuture> archiveCaseWithHttpInfoAsync
if (body == null) {
CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
- new ApiException(400, "Missing the required parameter 'body' when calling archiveCase"));
+ new ApiException(
+ 400, "Missing the required parameter 'body' when calling addCaseInsights"));
return result;
}
// create path and map variables
String localVarPath =
- "/api/v2/cases/{case_id}/archive"
+ "/api/v2/cases/{case_id}/insights"
.replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
Map localVarHeaderParams = new HashMap();
@@ -205,7 +254,7 @@ public CompletableFuture> archiveCaseWithHttpInfoAsync
try {
builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.archiveCase",
+ "v2.CaseManagementApi.addCaseInsights",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -218,7 +267,7 @@ public CompletableFuture> archiveCaseWithHttpInfoAsync
return result;
}
return apiClient.invokeAPIAsync(
- "POST",
+ "PUT",
builder,
localVarHeaderParams,
new String[] {"application/json"},
@@ -229,30 +278,28 @@ public CompletableFuture> archiveCaseWithHttpInfoAsync
}
/**
- * Assign case.
+ * Aggregate cases.
*
- * See {@link #assignCaseWithHttpInfo}.
+ *
See {@link #aggregateCasesWithHttpInfo}.
*
- * @param caseId Case's UUID or key (required)
- * @param body Assign case payload (required)
- * @return CaseResponse
+ * @param body Case aggregate request payload. (required)
+ * @return CaseAggregateResponse
* @throws ApiException if fails to make API call
*/
- public CaseResponse assignCase(String caseId, CaseAssignRequest body) throws ApiException {
- return assignCaseWithHttpInfo(caseId, body).getData();
+ public CaseAggregateResponse aggregateCases(CaseAggregateRequest body) throws ApiException {
+ return aggregateCasesWithHttpInfo(body).getData();
}
/**
- * Assign case.
+ * Aggregate cases.
*
- *
See {@link #assignCaseWithHttpInfoAsync}.
+ *
See {@link #aggregateCasesWithHttpInfoAsync}.
*
- * @param caseId Case's UUID or key (required)
- * @param body Assign case payload (required)
- * @return CompletableFuture<CaseResponse>
+ * @param body Case aggregate request payload. (required)
+ * @return CompletableFuture<CaseAggregateResponse>
*/
- public CompletableFuture assignCaseAsync(String caseId, CaseAssignRequest body) {
- return assignCaseWithHttpInfoAsync(caseId, body)
+ public CompletableFuture aggregateCasesAsync(CaseAggregateRequest body) {
+ return aggregateCasesWithHttpInfoAsync(body)
.thenApply(
response -> {
return response.getData();
@@ -260,11 +307,11 @@ public CompletableFuture assignCaseAsync(String caseId, CaseAssign
}
/**
- * Assign case to a user
+ * Performs an aggregation query over cases, grouping results by specified fields and returning
+ * counts per group along with a total. Useful for dashboards and analytics.
*
- * @param caseId Case's UUID or key (required)
- * @param body Assign case payload (required)
- * @return ApiResponse<CaseResponse>
+ * @param body Case aggregate request payload. (required)
+ * @return ApiResponse<CaseAggregateResponse>
* @throws ApiException if fails to make API call
* @http.response.details
*
@@ -278,30 +325,30 @@ public CompletableFuture assignCaseAsync(String caseId, CaseAssign
* | 429 | Too many requests | - |
*
*/
- public ApiResponse assignCaseWithHttpInfo(String caseId, CaseAssignRequest body)
+ public ApiResponse aggregateCasesWithHttpInfo(CaseAggregateRequest body)
throws ApiException {
- Object localVarPostBody = body;
-
- // verify the required parameter 'caseId' is set
- if (caseId == null) {
- throw new ApiException(
- 400, "Missing the required parameter 'caseId' when calling assignCase");
+ // Check if unstable operation is enabled
+ String operationId = "aggregateCases";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
}
+ Object localVarPostBody = body;
// verify the required parameter 'body' is set
if (body == null) {
- throw new ApiException(400, "Missing the required parameter 'body' when calling assignCase");
+ throw new ApiException(
+ 400, "Missing the required parameter 'body' when calling aggregateCases");
}
// create path and map variables
- String localVarPath =
- "/api/v2/cases/{case_id}/assign"
- .replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
+ String localVarPath = "/api/v2/cases/aggregate";
Map localVarHeaderParams = new HashMap();
Invocation.Builder builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.assignCase",
+ "v2.CaseManagementApi.aggregateCases",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -316,41 +363,41 @@ public ApiResponse assignCaseWithHttpInfo(String caseId, CaseAssig
localVarPostBody,
new HashMap(),
false,
- new GenericType() {});
+ new GenericType() {});
}
/**
- * Assign case.
+ * Aggregate cases.
*
- * See {@link #assignCaseWithHttpInfo}.
+ *
See {@link #aggregateCasesWithHttpInfo}.
*
- * @param caseId Case's UUID or key (required)
- * @param body Assign case payload (required)
- * @return CompletableFuture<ApiResponse<CaseResponse>>
+ * @param body Case aggregate request payload. (required)
+ * @return CompletableFuture<ApiResponse<CaseAggregateResponse>>
*/
- public CompletableFuture> assignCaseWithHttpInfoAsync(
- String caseId, CaseAssignRequest body) {
- Object localVarPostBody = body;
-
- // verify the required parameter 'caseId' is set
- if (caseId == null) {
- CompletableFuture> result = new CompletableFuture<>();
+ public CompletableFuture> aggregateCasesWithHttpInfoAsync(
+ CaseAggregateRequest body) {
+ // Check if unstable operation is enabled
+ String operationId = "aggregateCases";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
- new ApiException(400, "Missing the required parameter 'caseId' when calling assignCase"));
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
return result;
}
+ Object localVarPostBody = body;
// verify the required parameter 'body' is set
if (body == null) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
- new ApiException(400, "Missing the required parameter 'body' when calling assignCase"));
+ new ApiException(
+ 400, "Missing the required parameter 'body' when calling aggregateCases"));
return result;
}
// create path and map variables
- String localVarPath =
- "/api/v2/cases/{case_id}/assign"
- .replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
+ String localVarPath = "/api/v2/cases/aggregate";
Map localVarHeaderParams = new HashMap();
@@ -358,7 +405,7 @@ public CompletableFuture> assignCaseWithHttpInfoAsync(
try {
builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.assignCase",
+ "v2.CaseManagementApi.aggregateCases",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -366,7 +413,7 @@ public CompletableFuture> assignCaseWithHttpInfoAsync(
new String[] {"application/json"},
new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
} catch (ApiException ex) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(ex);
return result;
}
@@ -378,35 +425,34 @@ public CompletableFuture> assignCaseWithHttpInfoAsync(
localVarPostBody,
new HashMap(),
false,
- new GenericType() {});
+ new GenericType() {});
}
/**
- * Comment case.
+ * Archive case.
*
- * See {@link #commentCaseWithHttpInfo}.
+ *
See {@link #archiveCaseWithHttpInfo}.
*
* @param caseId Case's UUID or key (required)
- * @param body Case comment payload (required)
- * @return TimelineResponse
+ * @param body Archive case payload (required)
+ * @return CaseResponse
* @throws ApiException if fails to make API call
*/
- public TimelineResponse commentCase(String caseId, CaseCommentRequest body) throws ApiException {
- return commentCaseWithHttpInfo(caseId, body).getData();
+ public CaseResponse archiveCase(String caseId, CaseEmptyRequest body) throws ApiException {
+ return archiveCaseWithHttpInfo(caseId, body).getData();
}
/**
- * Comment case.
+ * Archive case.
*
- *
See {@link #commentCaseWithHttpInfoAsync}.
+ *
See {@link #archiveCaseWithHttpInfoAsync}.
*
* @param caseId Case's UUID or key (required)
- * @param body Case comment payload (required)
- * @return CompletableFuture<TimelineResponse>
+ * @param body Archive case payload (required)
+ * @return CompletableFuture<CaseResponse>
*/
- public CompletableFuture commentCaseAsync(
- String caseId, CaseCommentRequest body) {
- return commentCaseWithHttpInfoAsync(caseId, body)
+ public CompletableFuture archiveCaseAsync(String caseId, CaseEmptyRequest body) {
+ return archiveCaseWithHttpInfoAsync(caseId, body)
.thenApply(
response -> {
return response.getData();
@@ -414,11 +460,11 @@ public CompletableFuture commentCaseAsync(
}
/**
- * Comment case
+ * Archive case
*
* @param caseId Case's UUID or key (required)
- * @param body Case comment payload (required)
- * @return ApiResponse<TimelineResponse>
+ * @param body Archive case payload (required)
+ * @return ApiResponse<CaseResponse>
* @throws ApiException if fails to make API call
* @http.response.details
*
@@ -432,36 +478,36 @@ public CompletableFuture commentCaseAsync(
* | 429 | Too many requests | - |
*
*/
- public ApiResponse commentCaseWithHttpInfo(
- String caseId, CaseCommentRequest body) throws ApiException {
+ public ApiResponse archiveCaseWithHttpInfo(String caseId, CaseEmptyRequest body)
+ throws ApiException {
Object localVarPostBody = body;
// verify the required parameter 'caseId' is set
if (caseId == null) {
throw new ApiException(
- 400, "Missing the required parameter 'caseId' when calling commentCase");
+ 400, "Missing the required parameter 'caseId' when calling archiveCase");
}
// verify the required parameter 'body' is set
if (body == null) {
- throw new ApiException(400, "Missing the required parameter 'body' when calling commentCase");
+ throw new ApiException(400, "Missing the required parameter 'body' when calling archiveCase");
}
// create path and map variables
String localVarPath =
- "/api/v2/cases/{case_id}/comment"
+ "/api/v2/cases/{case_id}/archive"
.replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
Map localVarHeaderParams = new HashMap();
Invocation.Builder builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.commentCase",
+ "v2.CaseManagementApi.archiveCase",
localVarPath,
new ArrayList(),
localVarHeaderParams,
new HashMap(),
new String[] {"application/json"},
- new String[] {"apiKeyAuth", "appKeyAuth"});
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
return apiClient.invokeAPI(
"POST",
builder,
@@ -470,41 +516,41 @@ public ApiResponse commentCaseWithHttpInfo(
localVarPostBody,
new HashMap(),
false,
- new GenericType() {});
+ new GenericType() {});
}
/**
- * Comment case.
+ * Archive case.
*
- * See {@link #commentCaseWithHttpInfo}.
+ *
See {@link #archiveCaseWithHttpInfo}.
*
* @param caseId Case's UUID or key (required)
- * @param body Case comment payload (required)
- * @return CompletableFuture<ApiResponse<TimelineResponse>>
+ * @param body Archive case payload (required)
+ * @return CompletableFuture<ApiResponse<CaseResponse>>
*/
- public CompletableFuture> commentCaseWithHttpInfoAsync(
- String caseId, CaseCommentRequest body) {
+ public CompletableFuture> archiveCaseWithHttpInfoAsync(
+ String caseId, CaseEmptyRequest body) {
Object localVarPostBody = body;
// verify the required parameter 'caseId' is set
if (caseId == null) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
new ApiException(
- 400, "Missing the required parameter 'caseId' when calling commentCase"));
+ 400, "Missing the required parameter 'caseId' when calling archiveCase"));
return result;
}
// verify the required parameter 'body' is set
if (body == null) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
- new ApiException(400, "Missing the required parameter 'body' when calling commentCase"));
+ new ApiException(400, "Missing the required parameter 'body' when calling archiveCase"));
return result;
}
// create path and map variables
String localVarPath =
- "/api/v2/cases/{case_id}/comment"
+ "/api/v2/cases/{case_id}/archive"
.replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
Map localVarHeaderParams = new HashMap();
@@ -513,15 +559,15 @@ public CompletableFuture> commentCaseWithHttpInfoA
try {
builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.commentCase",
+ "v2.CaseManagementApi.archiveCase",
localVarPath,
new ArrayList(),
localVarHeaderParams,
new HashMap(),
new String[] {"application/json"},
- new String[] {"apiKeyAuth", "appKeyAuth"});
+ new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
} catch (ApiException ex) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(ex);
return result;
}
@@ -533,32 +579,34 @@ public CompletableFuture> commentCaseWithHttpInfoA
localVarPostBody,
new HashMap(),
false,
- new GenericType() {});
+ new GenericType() {});
}
/**
- * Create a case.
+ * Assign case.
*
- * See {@link #createCaseWithHttpInfo}.
+ *
See {@link #assignCaseWithHttpInfo}.
*
- * @param body Case payload (required)
+ * @param caseId Case's UUID or key (required)
+ * @param body Assign case payload (required)
* @return CaseResponse
* @throws ApiException if fails to make API call
*/
- public CaseResponse createCase(CaseCreateRequest body) throws ApiException {
- return createCaseWithHttpInfo(body).getData();
+ public CaseResponse assignCase(String caseId, CaseAssignRequest body) throws ApiException {
+ return assignCaseWithHttpInfo(caseId, body).getData();
}
/**
- * Create a case.
+ * Assign case.
*
- *
See {@link #createCaseWithHttpInfoAsync}.
+ *
See {@link #assignCaseWithHttpInfoAsync}.
*
- * @param body Case payload (required)
+ * @param caseId Case's UUID or key (required)
+ * @param body Assign case payload (required)
* @return CompletableFuture<CaseResponse>
*/
- public CompletableFuture createCaseAsync(CaseCreateRequest body) {
- return createCaseWithHttpInfoAsync(body)
+ public CompletableFuture assignCaseAsync(String caseId, CaseAssignRequest body) {
+ return assignCaseWithHttpInfoAsync(caseId, body)
.thenApply(
response -> {
return response.getData();
@@ -566,16 +614,17 @@ public CompletableFuture createCaseAsync(CaseCreateRequest body) {
}
/**
- * Create a Case
+ * Assign case to a user
*
- * @param body Case payload (required)
+ * @param caseId Case's UUID or key (required)
+ * @param body Assign case payload (required)
* @return ApiResponse<CaseResponse>
* @throws ApiException if fails to make API call
* @http.response.details
*
* Response details
* | Status Code | Description | Response Headers |
- * | 201 | CREATED | - |
+ * | 200 | OK | - |
* | 400 | Bad Request | - |
* | 401 | Unauthorized | - |
* | 403 | Forbidden | - |
@@ -583,22 +632,30 @@ public CompletableFuture createCaseAsync(CaseCreateRequest body) {
* | 429 | Too many requests | - |
*
*/
- public ApiResponse createCaseWithHttpInfo(CaseCreateRequest body)
+ public ApiResponse assignCaseWithHttpInfo(String caseId, CaseAssignRequest body)
throws ApiException {
Object localVarPostBody = body;
+ // verify the required parameter 'caseId' is set
+ if (caseId == null) {
+ throw new ApiException(
+ 400, "Missing the required parameter 'caseId' when calling assignCase");
+ }
+
// verify the required parameter 'body' is set
if (body == null) {
- throw new ApiException(400, "Missing the required parameter 'body' when calling createCase");
+ throw new ApiException(400, "Missing the required parameter 'body' when calling assignCase");
}
// create path and map variables
- String localVarPath = "/api/v2/cases";
+ String localVarPath =
+ "/api/v2/cases/{case_id}/assign"
+ .replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
Map localVarHeaderParams = new HashMap();
Invocation.Builder builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createCase",
+ "v2.CaseManagementApi.assignCase",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -617,34 +674,45 @@ public ApiResponse createCaseWithHttpInfo(CaseCreateRequest body)
}
/**
- * Create a case.
+ * Assign case.
*
- * See {@link #createCaseWithHttpInfo}.
+ *
See {@link #assignCaseWithHttpInfo}.
*
- * @param body Case payload (required)
+ * @param caseId Case's UUID or key (required)
+ * @param body Assign case payload (required)
* @return CompletableFuture<ApiResponse<CaseResponse>>
*/
- public CompletableFuture> createCaseWithHttpInfoAsync(
- CaseCreateRequest body) {
+ public CompletableFuture> assignCaseWithHttpInfoAsync(
+ String caseId, CaseAssignRequest body) {
Object localVarPostBody = body;
- // verify the required parameter 'body' is set
- if (body == null) {
+ // verify the required parameter 'caseId' is set
+ if (caseId == null) {
CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
- new ApiException(400, "Missing the required parameter 'body' when calling createCase"));
+ new ApiException(400, "Missing the required parameter 'caseId' when calling assignCase"));
return result;
}
- // create path and map variables
- String localVarPath = "/api/v2/cases";
- Map localVarHeaderParams = new HashMap();
+ // verify the required parameter 'body' is set
+ if (body == null) {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(400, "Missing the required parameter 'body' when calling assignCase"));
+ return result;
+ }
+ // create path and map variables
+ String localVarPath =
+ "/api/v2/cases/{case_id}/assign"
+ .replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
+
+ Map localVarHeaderParams = new HashMap();
Invocation.Builder builder;
try {
builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createCase",
+ "v2.CaseManagementApi.assignCase",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -668,30 +736,27 @@ public CompletableFuture> createCaseWithHttpInfoAsync(
}
/**
- * Create Jira issue for case.
+ * Bulk update cases.
*
- * See {@link #createCaseJiraIssueWithHttpInfo}.
+ *
See {@link #bulkUpdateCasesWithHttpInfo}.
*
- * @param caseId Case's UUID or key (required)
- * @param body Jira issue creation request (required)
+ * @param body Case bulk update request payload. (required)
* @throws ApiException if fails to make API call
*/
- public void createCaseJiraIssue(String caseId, JiraIssueCreateRequest body) throws ApiException {
- createCaseJiraIssueWithHttpInfo(caseId, body);
+ public void bulkUpdateCases(CaseBulkUpdateRequest body) throws ApiException {
+ bulkUpdateCasesWithHttpInfo(body);
}
/**
- * Create Jira issue for case.
+ * Bulk update cases.
*
- *
See {@link #createCaseJiraIssueWithHttpInfoAsync}.
+ *
See {@link #bulkUpdateCasesWithHttpInfoAsync}.
*
- * @param caseId Case's UUID or key (required)
- * @param body Jira issue creation request (required)
+ * @param body Case bulk update request payload. (required)
* @return CompletableFuture
*/
- public CompletableFuture createCaseJiraIssueAsync(
- String caseId, JiraIssueCreateRequest body) {
- return createCaseJiraIssueWithHttpInfoAsync(caseId, body)
+ public CompletableFuture bulkUpdateCasesAsync(CaseBulkUpdateRequest body) {
+ return bulkUpdateCasesWithHttpInfoAsync(body)
.thenApply(
response -> {
return response.getData();
@@ -699,17 +764,18 @@ public CompletableFuture createCaseJiraIssueAsync(
}
/**
- * Create a new Jira issue and link it to a case
+ * Applies a single action (such as changing priority, status, assignment, or archiving) to
+ * multiple cases at once. The list of case IDs and the action type with its payload are specified
+ * in the request body.
*
- * @param caseId Case's UUID or key (required)
- * @param body Jira issue creation request (required)
+ * @param body Case bulk update request payload. (required)
* @return ApiResponse<Void>
* @throws ApiException if fails to make API call
* @http.response.details
*
* Response details
* | Status Code | Description | Response Headers |
- * | 202 | Accepted | - |
+ * | 200 | OK | - |
* | 400 | Bad Request | - |
* | 401 | Unauthorized | - |
* | 403 | Forbidden | - |
@@ -717,10 +783,10 @@ public CompletableFuture createCaseJiraIssueAsync(
* | 429 | Too many requests | - |
*
*/
- public ApiResponse createCaseJiraIssueWithHttpInfo(
- String caseId, JiraIssueCreateRequest body) throws ApiException {
+ public ApiResponse bulkUpdateCasesWithHttpInfo(CaseBulkUpdateRequest body)
+ throws ApiException {
// Check if unstable operation is enabled
- String operationId = "createCaseJiraIssue";
+ String operationId = "bulkUpdateCases";
if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
} else {
@@ -728,27 +794,19 @@ public ApiResponse createCaseJiraIssueWithHttpInfo(
}
Object localVarPostBody = body;
- // verify the required parameter 'caseId' is set
- if (caseId == null) {
- throw new ApiException(
- 400, "Missing the required parameter 'caseId' when calling createCaseJiraIssue");
- }
-
// verify the required parameter 'body' is set
if (body == null) {
throw new ApiException(
- 400, "Missing the required parameter 'body' when calling createCaseJiraIssue");
+ 400, "Missing the required parameter 'body' when calling bulkUpdateCases");
}
// create path and map variables
- String localVarPath =
- "/api/v2/cases/{case_id}/relationships/jira_issues"
- .replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
+ String localVarPath = "/api/v2/cases/bulk";
Map localVarHeaderParams = new HashMap();
Invocation.Builder builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createCaseJiraIssue",
+ "v2.CaseManagementApi.bulkUpdateCases",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -767,18 +825,17 @@ public ApiResponse createCaseJiraIssueWithHttpInfo(
}
/**
- * Create Jira issue for case.
+ * Bulk update cases.
*
- * See {@link #createCaseJiraIssueWithHttpInfo}.
+ *
See {@link #bulkUpdateCasesWithHttpInfo}.
*
- * @param caseId Case's UUID or key (required)
- * @param body Jira issue creation request (required)
+ * @param body Case bulk update request payload. (required)
* @return CompletableFuture<ApiResponse<Void>>
*/
- public CompletableFuture> createCaseJiraIssueWithHttpInfoAsync(
- String caseId, JiraIssueCreateRequest body) {
+ public CompletableFuture> bulkUpdateCasesWithHttpInfoAsync(
+ CaseBulkUpdateRequest body) {
// Check if unstable operation is enabled
- String operationId = "createCaseJiraIssue";
+ String operationId = "bulkUpdateCases";
if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
} else {
@@ -789,27 +846,16 @@ public CompletableFuture> createCaseJiraIssueWithHttpInfoAsync
}
Object localVarPostBody = body;
- // verify the required parameter 'caseId' is set
- if (caseId == null) {
- CompletableFuture> result = new CompletableFuture<>();
- result.completeExceptionally(
- new ApiException(
- 400, "Missing the required parameter 'caseId' when calling createCaseJiraIssue"));
- return result;
- }
-
// verify the required parameter 'body' is set
if (body == null) {
CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
new ApiException(
- 400, "Missing the required parameter 'body' when calling createCaseJiraIssue"));
+ 400, "Missing the required parameter 'body' when calling bulkUpdateCases"));
return result;
}
// create path and map variables
- String localVarPath =
- "/api/v2/cases/{case_id}/relationships/jira_issues"
- .replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
+ String localVarPath = "/api/v2/cases/bulk";
Map localVarHeaderParams = new HashMap();
@@ -817,7 +863,7 @@ public CompletableFuture> createCaseJiraIssueWithHttpInfoAsync
try {
builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createCaseJiraIssue",
+ "v2.CaseManagementApi.bulkUpdateCases",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -841,30 +887,31 @@ public CompletableFuture> createCaseJiraIssueWithHttpInfoAsync
}
/**
- * Create investigation notebook for case.
+ * Comment case.
*
- * See {@link #createCaseNotebookWithHttpInfo}.
+ *
See {@link #commentCaseWithHttpInfo}.
*
* @param caseId Case's UUID or key (required)
- * @param body Notebook creation request (required)
+ * @param body Case comment payload (required)
+ * @return TimelineResponse
* @throws ApiException if fails to make API call
*/
- public void createCaseNotebook(String caseId, NotebookCreateRequest body) throws ApiException {
- createCaseNotebookWithHttpInfo(caseId, body);
+ public TimelineResponse commentCase(String caseId, CaseCommentRequest body) throws ApiException {
+ return commentCaseWithHttpInfo(caseId, body).getData();
}
/**
- * Create investigation notebook for case.
+ * Comment case.
*
- *
See {@link #createCaseNotebookWithHttpInfoAsync}.
+ *
See {@link #commentCaseWithHttpInfoAsync}.
*
* @param caseId Case's UUID or key (required)
- * @param body Notebook creation request (required)
- * @return CompletableFuture
+ * @param body Case comment payload (required)
+ * @return CompletableFuture<TimelineResponse>
*/
- public CompletableFuture createCaseNotebookAsync(
- String caseId, NotebookCreateRequest body) {
- return createCaseNotebookWithHttpInfoAsync(caseId, body)
+ public CompletableFuture commentCaseAsync(
+ String caseId, CaseCommentRequest body) {
+ return commentCaseWithHttpInfoAsync(caseId, body)
.thenApply(
response -> {
return response.getData();
@@ -872,17 +919,17 @@ public CompletableFuture createCaseNotebookAsync(
}
/**
- * Create a new investigation notebook and link it to a case
+ * Comment case
*
* @param caseId Case's UUID or key (required)
- * @param body Notebook creation request (required)
- * @return ApiResponse<Void>
+ * @param body Case comment payload (required)
+ * @return ApiResponse<TimelineResponse>
* @throws ApiException if fails to make API call
* @http.response.details
*
* Response details
* | Status Code | Description | Response Headers |
- * | 204 | No Content | - |
+ * | 200 | OK | - |
* | 400 | Bad Request | - |
* | 401 | Unauthorized | - |
* | 403 | Forbidden | - |
@@ -890,44 +937,36 @@ public CompletableFuture createCaseNotebookAsync(
* | 429 | Too many requests | - |
*
*/
- public ApiResponse createCaseNotebookWithHttpInfo(String caseId, NotebookCreateRequest body)
- throws ApiException {
- // Check if unstable operation is enabled
- String operationId = "createCaseNotebook";
- if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
- apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
- } else {
- throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
- }
+ public ApiResponse commentCaseWithHttpInfo(
+ String caseId, CaseCommentRequest body) throws ApiException {
Object localVarPostBody = body;
// verify the required parameter 'caseId' is set
if (caseId == null) {
throw new ApiException(
- 400, "Missing the required parameter 'caseId' when calling createCaseNotebook");
+ 400, "Missing the required parameter 'caseId' when calling commentCase");
}
// verify the required parameter 'body' is set
if (body == null) {
- throw new ApiException(
- 400, "Missing the required parameter 'body' when calling createCaseNotebook");
+ throw new ApiException(400, "Missing the required parameter 'body' when calling commentCase");
}
// create path and map variables
String localVarPath =
- "/api/v2/cases/{case_id}/relationships/notebook"
+ "/api/v2/cases/{case_id}/comment"
.replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
Map localVarHeaderParams = new HashMap();
Invocation.Builder builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createCaseNotebook",
+ "v2.CaseManagementApi.commentCase",
localVarPath,
new ArrayList(),
localVarHeaderParams,
new HashMap(),
- new String[] {"*/*"},
- new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth"});
return apiClient.invokeAPI(
"POST",
builder,
@@ -936,52 +975,41 @@ public ApiResponse createCaseNotebookWithHttpInfo(String caseId, NotebookC
localVarPostBody,
new HashMap(),
false,
- null);
+ new GenericType() {});
}
/**
- * Create investigation notebook for case.
+ * Comment case.
*
- * See {@link #createCaseNotebookWithHttpInfo}.
+ *
See {@link #commentCaseWithHttpInfo}.
*
* @param caseId Case's UUID or key (required)
- * @param body Notebook creation request (required)
- * @return CompletableFuture<ApiResponse<Void>>
+ * @param body Case comment payload (required)
+ * @return CompletableFuture<ApiResponse<TimelineResponse>>
*/
- public CompletableFuture> createCaseNotebookWithHttpInfoAsync(
- String caseId, NotebookCreateRequest body) {
- // Check if unstable operation is enabled
- String operationId = "createCaseNotebook";
- if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
- apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
- } else {
- CompletableFuture> result = new CompletableFuture<>();
- result.completeExceptionally(
- new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
- return result;
- }
+ public CompletableFuture> commentCaseWithHttpInfoAsync(
+ String caseId, CaseCommentRequest body) {
Object localVarPostBody = body;
// verify the required parameter 'caseId' is set
if (caseId == null) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
new ApiException(
- 400, "Missing the required parameter 'caseId' when calling createCaseNotebook"));
+ 400, "Missing the required parameter 'caseId' when calling commentCase"));
return result;
}
// verify the required parameter 'body' is set
if (body == null) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
- new ApiException(
- 400, "Missing the required parameter 'body' when calling createCaseNotebook"));
+ new ApiException(400, "Missing the required parameter 'body' when calling commentCase"));
return result;
}
// create path and map variables
String localVarPath =
- "/api/v2/cases/{case_id}/relationships/notebook"
+ "/api/v2/cases/{case_id}/comment"
.replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
Map localVarHeaderParams = new HashMap();
@@ -990,15 +1018,15 @@ public CompletableFuture> createCaseNotebookWithHttpInfoAsync(
try {
builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createCaseNotebook",
+ "v2.CaseManagementApi.commentCase",
localVarPath,
new ArrayList(),
localVarHeaderParams,
new HashMap(),
- new String[] {"*/*"},
- new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
+ new String[] {"application/json"},
+ new String[] {"apiKeyAuth", "appKeyAuth"});
} catch (ApiException ex) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(ex);
return result;
}
@@ -1010,35 +1038,70 @@ public CompletableFuture> createCaseNotebookWithHttpInfoAsync(
localVarPostBody,
new HashMap(),
false,
- null);
+ new GenericType() {});
+ }
+
+ /** Manage optional parameters to countCases. */
+ public static class CountCasesOptionalParameters {
+ private String queryFilter;
+ private String groupBys;
+ private Integer limit;
+
+ /**
+ * Set queryFilter.
+ *
+ * @param queryFilter Filter query for cases. (optional)
+ * @return CountCasesOptionalParameters
+ */
+ public CountCasesOptionalParameters queryFilter(String queryFilter) {
+ this.queryFilter = queryFilter;
+ return this;
+ }
+
+ /**
+ * Set groupBys.
+ *
+ * @param groupBys Comma-separated fields to group by. (optional)
+ * @return CountCasesOptionalParameters
+ */
+ public CountCasesOptionalParameters groupBys(String groupBys) {
+ this.groupBys = groupBys;
+ return this;
+ }
+
+ /**
+ * Set limit.
+ *
+ * @param limit Maximum facet values to return. (optional)
+ * @return CountCasesOptionalParameters
+ */
+ public CountCasesOptionalParameters limit(Integer limit) {
+ this.limit = limit;
+ return this;
+ }
}
/**
- * Create ServiceNow ticket for case.
+ * Count cases.
*
- * See {@link #createCaseServiceNowTicketWithHttpInfo}.
+ *
See {@link #countCasesWithHttpInfo}.
*
- * @param caseId Case's UUID or key (required)
- * @param body ServiceNow ticket creation request (required)
+ * @return CaseCountResponse
* @throws ApiException if fails to make API call
*/
- public void createCaseServiceNowTicket(String caseId, ServiceNowTicketCreateRequest body)
- throws ApiException {
- createCaseServiceNowTicketWithHttpInfo(caseId, body);
+ public CaseCountResponse countCases() throws ApiException {
+ return countCasesWithHttpInfo(new CountCasesOptionalParameters()).getData();
}
/**
- * Create ServiceNow ticket for case.
+ * Count cases.
*
- *
See {@link #createCaseServiceNowTicketWithHttpInfoAsync}.
+ *
See {@link #countCasesWithHttpInfoAsync}.
*
- * @param caseId Case's UUID or key (required)
- * @param body ServiceNow ticket creation request (required)
- * @return CompletableFuture
+ * @return CompletableFuture<CaseCountResponse>
*/
- public CompletableFuture createCaseServiceNowTicketAsync(
- String caseId, ServiceNowTicketCreateRequest body) {
- return createCaseServiceNowTicketWithHttpInfoAsync(caseId, body)
+ public CompletableFuture countCasesAsync() {
+ return countCasesWithHttpInfoAsync(new CountCasesOptionalParameters())
.thenApply(
response -> {
return response.getData();
@@ -1046,17 +1109,47 @@ public CompletableFuture createCaseServiceNowTicketAsync(
}
/**
- * Create a new ServiceNow incident ticket and link it to a case
+ * Count cases.
*
- * @param caseId Case's UUID or key (required)
- * @param body ServiceNow ticket creation request (required)
- * @return ApiResponse<Void>
+ * See {@link #countCasesWithHttpInfo}.
+ *
+ * @param parameters Optional parameters for the request.
+ * @return CaseCountResponse
+ * @throws ApiException if fails to make API call
+ */
+ public CaseCountResponse countCases(CountCasesOptionalParameters parameters) throws ApiException {
+ return countCasesWithHttpInfo(parameters).getData();
+ }
+
+ /**
+ * Count cases.
+ *
+ *
See {@link #countCasesWithHttpInfoAsync}.
+ *
+ * @param parameters Optional parameters for the request.
+ * @return CompletableFuture<CaseCountResponse>
+ */
+ public CompletableFuture countCasesAsync(
+ CountCasesOptionalParameters parameters) {
+ return countCasesWithHttpInfoAsync(parameters)
+ .thenApply(
+ response -> {
+ return response.getData();
+ });
+ }
+
+ /**
+ * Returns case counts, optionally grouped by one or more fields (for example, status, priority).
+ * Supports a query filter to narrow the scope.
+ *
+ * @param parameters Optional parameters for the request.
+ * @return ApiResponse<CaseCountResponse>
* @throws ApiException if fails to make API call
* @http.response.details
*
* Response details
* | Status Code | Description | Response Headers |
- * | 202 | Accepted | - |
+ * | 200 | OK | - |
* | 400 | Bad Request | - |
* | 401 | Unauthorized | - |
* | 403 | Forbidden | - |
@@ -1064,154 +1157,133 @@ public CompletableFuture createCaseServiceNowTicketAsync(
* | 429 | Too many requests | - |
*
*/
- public ApiResponse createCaseServiceNowTicketWithHttpInfo(
- String caseId, ServiceNowTicketCreateRequest body) throws ApiException {
+ public ApiResponse countCasesWithHttpInfo(
+ CountCasesOptionalParameters parameters) throws ApiException {
// Check if unstable operation is enabled
- String operationId = "createCaseServiceNowTicket";
+ String operationId = "countCases";
if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
} else {
throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
}
- Object localVarPostBody = body;
-
- // verify the required parameter 'caseId' is set
- if (caseId == null) {
- throw new ApiException(
- 400, "Missing the required parameter 'caseId' when calling createCaseServiceNowTicket");
- }
-
- // verify the required parameter 'body' is set
- if (body == null) {
- throw new ApiException(
- 400, "Missing the required parameter 'body' when calling createCaseServiceNowTicket");
- }
+ Object localVarPostBody = null;
+ String queryFilter = parameters.queryFilter;
+ String groupBys = parameters.groupBys;
+ Integer limit = parameters.limit;
// create path and map variables
- String localVarPath =
- "/api/v2/cases/{case_id}/relationships/servicenow_tickets"
- .replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
+ String localVarPath = "/api/v2/cases/count";
+ List localVarQueryParams = new ArrayList();
Map localVarHeaderParams = new HashMap();
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "query_filter", queryFilter));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "group_bys", groupBys));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "limit", limit));
+
Invocation.Builder builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createCaseServiceNowTicket",
+ "v2.CaseManagementApi.countCases",
localVarPath,
- new ArrayList(),
+ localVarQueryParams,
localVarHeaderParams,
new HashMap(),
- new String[] {"*/*"},
+ new String[] {"application/json"},
new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
return apiClient.invokeAPI(
- "POST",
+ "GET",
builder,
localVarHeaderParams,
- new String[] {"application/json"},
+ new String[] {},
localVarPostBody,
new HashMap(),
false,
- null);
+ new GenericType() {});
}
/**
- * Create ServiceNow ticket for case.
+ * Count cases.
*
- * See {@link #createCaseServiceNowTicketWithHttpInfo}.
+ *
See {@link #countCasesWithHttpInfo}.
*
- * @param caseId Case's UUID or key (required)
- * @param body ServiceNow ticket creation request (required)
- * @return CompletableFuture<ApiResponse<Void>>
+ * @param parameters Optional parameters for the request.
+ * @return CompletableFuture<ApiResponse<CaseCountResponse>>
*/
- public CompletableFuture> createCaseServiceNowTicketWithHttpInfoAsync(
- String caseId, ServiceNowTicketCreateRequest body) {
+ public CompletableFuture> countCasesWithHttpInfoAsync(
+ CountCasesOptionalParameters parameters) {
// Check if unstable operation is enabled
- String operationId = "createCaseServiceNowTicket";
+ String operationId = "countCases";
if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
} else {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
return result;
}
- Object localVarPostBody = body;
-
- // verify the required parameter 'caseId' is set
- if (caseId == null) {
- CompletableFuture> result = new CompletableFuture<>();
- result.completeExceptionally(
- new ApiException(
- 400,
- "Missing the required parameter 'caseId' when calling createCaseServiceNowTicket"));
- return result;
- }
-
- // verify the required parameter 'body' is set
- if (body == null) {
- CompletableFuture> result = new CompletableFuture<>();
- result.completeExceptionally(
- new ApiException(
- 400,
- "Missing the required parameter 'body' when calling createCaseServiceNowTicket"));
- return result;
- }
+ Object localVarPostBody = null;
+ String queryFilter = parameters.queryFilter;
+ String groupBys = parameters.groupBys;
+ Integer limit = parameters.limit;
// create path and map variables
- String localVarPath =
- "/api/v2/cases/{case_id}/relationships/servicenow_tickets"
- .replaceAll("\\{" + "case_id" + "\\}", apiClient.escapeString(caseId.toString()));
+ String localVarPath = "/api/v2/cases/count";
+ List localVarQueryParams = new ArrayList();
Map localVarHeaderParams = new HashMap();
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "query_filter", queryFilter));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "group_bys", groupBys));
+ localVarQueryParams.addAll(apiClient.parameterToPairs("", "limit", limit));
+
Invocation.Builder builder;
try {
builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createCaseServiceNowTicket",
+ "v2.CaseManagementApi.countCases",
localVarPath,
- new ArrayList(),
+ localVarQueryParams,
localVarHeaderParams,
new HashMap(),
- new String[] {"*/*"},
+ new String[] {"application/json"},
new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
} catch (ApiException ex) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(ex);
return result;
}
return apiClient.invokeAPIAsync(
- "POST",
+ "GET",
builder,
localVarHeaderParams,
- new String[] {"application/json"},
+ new String[] {},
localVarPostBody,
new HashMap(),
false,
- null);
+ new GenericType() {});
}
/**
- * Create a project.
+ * Create a case.
*
- * See {@link #createProjectWithHttpInfo}.
+ *
See {@link #createCaseWithHttpInfo}.
*
- * @param body Project payload. (required)
- * @return ProjectResponse
+ * @param body Case payload (required)
+ * @return CaseResponse
* @throws ApiException if fails to make API call
*/
- public ProjectResponse createProject(ProjectCreateRequest body) throws ApiException {
- return createProjectWithHttpInfo(body).getData();
+ public CaseResponse createCase(CaseCreateRequest body) throws ApiException {
+ return createCaseWithHttpInfo(body).getData();
}
/**
- * Create a project.
+ * Create a case.
*
- *
See {@link #createProjectWithHttpInfoAsync}.
+ *
See {@link #createCaseWithHttpInfoAsync}.
*
- * @param body Project payload. (required)
- * @return CompletableFuture<ProjectResponse>
+ * @param body Case payload (required)
+ * @return CompletableFuture<CaseResponse>
*/
- public CompletableFuture createProjectAsync(ProjectCreateRequest body) {
- return createProjectWithHttpInfoAsync(body)
+ public CompletableFuture createCaseAsync(CaseCreateRequest body) {
+ return createCaseWithHttpInfoAsync(body)
.thenApply(
response -> {
return response.getData();
@@ -1219,10 +1291,10 @@ public CompletableFuture createProjectAsync(ProjectCreateReques
}
/**
- * Create a project.
+ * Create a Case
*
- * @param body Project payload. (required)
- * @return ApiResponse<ProjectResponse>
+ * @param body Case payload (required)
+ * @return ApiResponse<CaseResponse>
* @throws ApiException if fails to make API call
* @http.response.details
*
@@ -1236,23 +1308,22 @@ public CompletableFuture createProjectAsync(ProjectCreateReques
* | 429 | Too many requests | - |
*
*/
- public ApiResponse createProjectWithHttpInfo(ProjectCreateRequest body)
+ public ApiResponse createCaseWithHttpInfo(CaseCreateRequest body)
throws ApiException {
Object localVarPostBody = body;
// verify the required parameter 'body' is set
if (body == null) {
- throw new ApiException(
- 400, "Missing the required parameter 'body' when calling createProject");
+ throw new ApiException(400, "Missing the required parameter 'body' when calling createCase");
}
// create path and map variables
- String localVarPath = "/api/v2/cases/projects";
+ String localVarPath = "/api/v2/cases";
Map localVarHeaderParams = new HashMap();
Invocation.Builder builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createProject",
+ "v2.CaseManagementApi.createCase",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -1267,31 +1338,30 @@ public ApiResponse createProjectWithHttpInfo(ProjectCreateReque
localVarPostBody,
new HashMap(),
false,
- new GenericType() {});
+ new GenericType() {});
}
/**
- * Create a project.
+ * Create a case.
*
- * See {@link #createProjectWithHttpInfo}.
+ *
See {@link #createCaseWithHttpInfo}.
*
- * @param body Project payload. (required)
- * @return CompletableFuture<ApiResponse<ProjectResponse>>
+ * @param body Case payload (required)
+ * @return CompletableFuture<ApiResponse<CaseResponse>>
*/
- public CompletableFuture> createProjectWithHttpInfoAsync(
- ProjectCreateRequest body) {
+ public CompletableFuture> createCaseWithHttpInfoAsync(
+ CaseCreateRequest body) {
Object localVarPostBody = body;
// verify the required parameter 'body' is set
if (body == null) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
- new ApiException(
- 400, "Missing the required parameter 'body' when calling createProject"));
+ new ApiException(400, "Missing the required parameter 'body' when calling createCase"));
return result;
}
// create path and map variables
- String localVarPath = "/api/v2/cases/projects";
+ String localVarPath = "/api/v2/cases";
Map localVarHeaderParams = new HashMap();
@@ -1299,7 +1369,7 @@ public CompletableFuture> createProjectWithHttpInfo
try {
builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createProject",
+ "v2.CaseManagementApi.createCase",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -1307,7 +1377,7 @@ public CompletableFuture> createProjectWithHttpInfo
new String[] {"application/json"},
new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
} catch (ApiException ex) {
- CompletableFuture> result = new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(ex);
return result;
}
@@ -1319,36 +1389,36 @@ public CompletableFuture> createProjectWithHttpInfo
localVarPostBody,
new HashMap(),
false,
- new GenericType() {});
+ new GenericType() {});
}
/**
- * Create a notification rule.
+ * Create an automation rule.
*
- * See {@link #createProjectNotificationRuleWithHttpInfo}.
+ *
See {@link #createCaseAutomationRuleWithHttpInfo}.
*
- * @param projectId Project UUID (required)
- * @param body Notification rule payload (required)
- * @return CaseNotificationRuleResponse
+ * @param projectId The UUID of the project that owns the automation rules. (required)
+ * @param body Automation rule payload. (required)
+ * @return AutomationRuleResponse
* @throws ApiException if fails to make API call
*/
- public CaseNotificationRuleResponse createProjectNotificationRule(
- String projectId, CaseNotificationRuleCreateRequest body) throws ApiException {
- return createProjectNotificationRuleWithHttpInfo(projectId, body).getData();
+ public AutomationRuleResponse createCaseAutomationRule(
+ String projectId, AutomationRuleCreateRequest body) throws ApiException {
+ return createCaseAutomationRuleWithHttpInfo(projectId, body).getData();
}
/**
- * Create a notification rule.
+ * Create an automation rule.
*
- *
See {@link #createProjectNotificationRuleWithHttpInfoAsync}.
+ *
See {@link #createCaseAutomationRuleWithHttpInfoAsync}.
*
- * @param projectId Project UUID (required)
- * @param body Notification rule payload (required)
- * @return CompletableFuture<CaseNotificationRuleResponse>
+ * @param projectId The UUID of the project that owns the automation rules. (required)
+ * @param body Automation rule payload. (required)
+ * @return CompletableFuture<AutomationRuleResponse>
*/
- public CompletableFuture createProjectNotificationRuleAsync(
- String projectId, CaseNotificationRuleCreateRequest body) {
- return createProjectNotificationRuleWithHttpInfoAsync(projectId, body)
+ public CompletableFuture createCaseAutomationRuleAsync(
+ String projectId, AutomationRuleCreateRequest body) {
+ return createCaseAutomationRuleWithHttpInfoAsync(projectId, body)
.thenApply(
response -> {
return response.getData();
@@ -1356,17 +1426,18 @@ public CompletableFuture createProjectNotification
}
/**
- * Create a notification rule for a project.
+ * Creates an automation rule for a project. The rule defines a trigger event (for example, case
+ * created, status transitioned) and an action to execute.
*
- * @param projectId Project UUID (required)
- * @param body Notification rule payload (required)
- * @return ApiResponse<CaseNotificationRuleResponse>
+ * @param projectId The UUID of the project that owns the automation rules. (required)
+ * @param body Automation rule payload. (required)
+ * @return ApiResponse<AutomationRuleResponse>
* @throws ApiException if fails to make API call
* @http.response.details
*
* Response details
* | Status Code | Description | Response Headers |
- * | 201 | CREATED | - |
+ * | 201 | Created | - |
* | 400 | Bad Request | - |
* | 401 | Unauthorized | - |
* | 403 | Forbidden | - |
@@ -1374,32 +1445,38 @@ public CompletableFuture createProjectNotification
* | 429 | Too many requests | - |
*
*/
- public ApiResponse createProjectNotificationRuleWithHttpInfo(
- String projectId, CaseNotificationRuleCreateRequest body) throws ApiException {
+ public ApiResponse createCaseAutomationRuleWithHttpInfo(
+ String projectId, AutomationRuleCreateRequest body) throws ApiException {
+ // Check if unstable operation is enabled
+ String operationId = "createCaseAutomationRule";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ throw new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId));
+ }
Object localVarPostBody = body;
// verify the required parameter 'projectId' is set
if (projectId == null) {
throw new ApiException(
- 400,
- "Missing the required parameter 'projectId' when calling createProjectNotificationRule");
+ 400, "Missing the required parameter 'projectId' when calling createCaseAutomationRule");
}
// verify the required parameter 'body' is set
if (body == null) {
throw new ApiException(
- 400, "Missing the required parameter 'body' when calling createProjectNotificationRule");
+ 400, "Missing the required parameter 'body' when calling createCaseAutomationRule");
}
// create path and map variables
String localVarPath =
- "/api/v2/cases/projects/{project_id}/notification_rules"
+ "/api/v2/cases/projects/{project_id}/rules"
.replaceAll("\\{" + "project_id" + "\\}", apiClient.escapeString(projectId.toString()));
Map localVarHeaderParams = new HashMap();
Invocation.Builder builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createProjectNotificationRule",
+ "v2.CaseManagementApi.createCaseAutomationRule",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -1414,48 +1491,54 @@ public ApiResponse createProjectNotificationRuleWi
localVarPostBody,
new HashMap(),
false,
- new GenericType() {});
+ new GenericType() {});
}
/**
- * Create a notification rule.
+ * Create an automation rule.
*
- * See {@link #createProjectNotificationRuleWithHttpInfo}.
+ *
See {@link #createCaseAutomationRuleWithHttpInfo}.
*
- * @param projectId Project UUID (required)
- * @param body Notification rule payload (required)
- * @return CompletableFuture<ApiResponse<CaseNotificationRuleResponse>>
+ * @param projectId The UUID of the project that owns the automation rules. (required)
+ * @param body Automation rule payload. (required)
+ * @return CompletableFuture<ApiResponse<AutomationRuleResponse>>
*/
- public CompletableFuture>
- createProjectNotificationRuleWithHttpInfoAsync(
- String projectId, CaseNotificationRuleCreateRequest body) {
+ public CompletableFuture>
+ createCaseAutomationRuleWithHttpInfoAsync(
+ String projectId, AutomationRuleCreateRequest body) {
+ // Check if unstable operation is enabled
+ String operationId = "createCaseAutomationRule";
+ if (apiClient.isUnstableOperationEnabled("v2." + operationId)) {
+ apiClient.getLogger().warning(String.format("Using unstable operation '%s'", operationId));
+ } else {
+ CompletableFuture> result = new CompletableFuture<>();
+ result.completeExceptionally(
+ new ApiException(0, String.format("Unstable operation '%s' is disabled", operationId)));
+ return result;
+ }
Object localVarPostBody = body;
// verify the required parameter 'projectId' is set
if (projectId == null) {
- CompletableFuture> result =
- new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
new ApiException(
400,
- "Missing the required parameter 'projectId' when calling"
- + " createProjectNotificationRule"));
+ "Missing the required parameter 'projectId' when calling createCaseAutomationRule"));
return result;
}
// verify the required parameter 'body' is set
if (body == null) {
- CompletableFuture> result =
- new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(
new ApiException(
- 400,
- "Missing the required parameter 'body' when calling createProjectNotificationRule"));
+ 400, "Missing the required parameter 'body' when calling createCaseAutomationRule"));
return result;
}
// create path and map variables
String localVarPath =
- "/api/v2/cases/projects/{project_id}/notification_rules"
+ "/api/v2/cases/projects/{project_id}/rules"
.replaceAll("\\{" + "project_id" + "\\}", apiClient.escapeString(projectId.toString()));
Map localVarHeaderParams = new HashMap();
@@ -1464,7 +1547,7 @@ public ApiResponse createProjectNotificationRuleWi
try {
builder =
apiClient.createBuilder(
- "v2.CaseManagementApi.createProjectNotificationRule",
+ "v2.CaseManagementApi.createCaseAutomationRule",
localVarPath,
new ArrayList(),
localVarHeaderParams,
@@ -1472,8 +1555,7 @@ public ApiResponse createProjectNotificationRuleWi
new String[] {"application/json"},
new String[] {"apiKeyAuth", "appKeyAuth", "AuthZ"});
} catch (ApiException ex) {
- CompletableFuture> result =
- new CompletableFuture<>();
+ CompletableFuture> result = new CompletableFuture<>();
result.completeExceptionally(ex);
return result;
}
@@ -1485,33 +1567,34 @@ public ApiResponse