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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 48 additions & 1 deletion .generator/schemas/v2/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -65461,6 +65461,7 @@ components:
- $ref: "#/components/schemas/SendSlackMessageAction"
- $ref: "#/components/schemas/SendTeamsMessageAction"
- $ref: "#/components/schemas/TriggerWorkflowAutomationAction"
- $ref: "#/components/schemas/RoutingRuleEscalationPolicyAction"
RoutingRuleAttributes:
description: Defines the configurable attributes of a routing rule, such as actions, query, time restriction, and urgency.
properties:
Expand All @@ -65478,6 +65479,52 @@ components:
urgency:
$ref: "#/components/schemas/Urgency"
type: object
RoutingRuleEscalationPolicyAction:
description: "Triggers an escalation policy."
properties:
ack_timeout_minutes:
description: "The number of minutes before an acknowledged page is re-triggered."
example: 30
format: int64
type: integer
policy_id:
description: "The ID of the escalation policy to route to."
example: "00000000-0000-0000-0000-000000000000"
type: string
support_hours:
$ref: "#/components/schemas/RoutingRuleEscalationPolicyActionSupportHours"
type:
$ref: "#/components/schemas/RoutingRuleEscalationPolicyActionType"
urgency:
$ref: "#/components/schemas/Urgency"
required:
- type
- policy_id
type: object
RoutingRuleEscalationPolicyActionSupportHours:
description: "Support hours during which the escalation policy will be executed. Outside of these hours, the escalation policy will be on hold and triggered once the next support hours window starts. This is mutually exclusive with the top-level `time_restriction` field on the routing rule."
properties:
restrictions:
description: "The list of support hours time windows."
items:
$ref: "#/components/schemas/TimeRestriction"
type: array
time_zone:
description: "The time zone in which the support hours are expressed."
example: ""
type: string
required:
- time_zone
type: object
RoutingRuleEscalationPolicyActionType:
default: escalation_policy
description: "Indicates that the action pages an escalation policy. This action can be set once per routing rule item, and is mutually exclusive with the top-level `policy_id` field on the routing rule."
enum:
- escalation_policy
example: escalation_policy
type: string
x-enum-varnames:
- ESCALATION_POLICY
RoutingRuleRelationships:
description: Specifies relationships for a routing rule, linking to associated policy resources.
properties:
Expand Down Expand Up @@ -85180,7 +85227,7 @@ components:
type: string
type: object
TimeRestrictions:
description: Holds time zone information and a list of time restrictions for a routing rule.
description: Time restrictions during which the routing rule is active. Outside of these hours, the rule does not match and routing continues to subsequent rules. This is mutually exclusive with the action-level `support_hours` field.
properties:
restrictions:
description: Defines the list of time-based restrictions.
Expand Down
Original file line number Diff line number Diff line change
@@ -1 +1 @@
"2025-11-27T14:11:49.966Z"
"2026-05-15T14:39:18.459Z"

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion features/v2/on-call.feature
Original file line number Diff line number Diff line change
Expand Up @@ -401,7 +401,7 @@ Feature: On-Call
And there is a valid "schedule" in the system
And there is a valid "escalation_policy" in the system
And request contains "team_id" parameter from "dd_team.data.id"
And body with value {"data": {"attributes": {"rules": [{"actions": [{"channel": "channel", "type": "send_slack_message", "workspace": "workspace"}], "query": "tags.service:test", "time_restriction": {"time_zone": "Europe/Paris", "restrictions": [{"end_day": "monday", "end_time": "17:00:00", "start_day": "monday", "start_time": "09:00:00"}, {"end_day": "tuesday", "end_time": "17:00:00", "start_day": "tuesday", "start_time": "09:00:00"}]}}, {"policy_id": "{{ escalation_policy.data.id }}", "query": "", "urgency": "low"}]}, "id": "{{ dd_team.data.id }}", "type": "team_routing_rules"}}
And body with value {"data": {"attributes": {"rules": [{"actions": [{"type": "escalation_policy", "policy_id": "{{ escalation_policy.data.id }}", "urgency": "low"}], "query": "tags.service:time_restrictions", "time_restriction": {"time_zone": "Europe/Paris", "restrictions": [{"end_day": "monday", "end_time": "17:00:00", "start_day": "monday", "start_time": "09:00:00"}, {"end_day": "tuesday", "end_time": "17:00:00", "start_day": "tuesday", "start_time": "09:00:00"}]}}, {"actions": [{"type": "escalation_policy", "policy_id": "{{ escalation_policy.data.id }}", "urgency": "low", "ack_timeout_minutes": 30, "support_hours": {"time_zone": "Europe/Paris", "restrictions": [{"end_day": "wednesday", "end_time": "17:00:00", "start_day": "wednesday", "start_time": "09:00:00"}, {"end_day": "thursday", "end_time": "17:00:00", "start_day": "thursday", "start_time": "09:00:00"}]}}], "query": "tags.service:support_hours_and_acknowledgment_timeout"}, {"policy_id": "{{ escalation_policy.data.id }}", "query": "tags.service:legacy_policy_definition", "urgency": "low"}, {"actions": [{"type": "escalation_policy", "policy_id": "{{ escalation_policy.data.id }}", "urgency": "low"}], "query": ""}]}, "id": "{{ dd_team.data.id }}", "type": "team_routing_rules"}}
And request contains "include" parameter with value "rules"
When the request is sent
Then the response status is 200 OK
Expand Down
3 changes: 3 additions & 0 deletions services/on_call/src/v2/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -129,6 +129,9 @@ export { RolesType } from "./models/RolesType";
export { RoutingRule } from "./models/RoutingRule";
export { RoutingRuleAction } from "./models/RoutingRuleAction";
export { RoutingRuleAttributes } from "./models/RoutingRuleAttributes";
export { RoutingRuleEscalationPolicyAction } from "./models/RoutingRuleEscalationPolicyAction";
export { RoutingRuleEscalationPolicyActionSupportHours } from "./models/RoutingRuleEscalationPolicyActionSupportHours";
export { RoutingRuleEscalationPolicyActionType } from "./models/RoutingRuleEscalationPolicyActionType";
export { RoutingRuleRelationships } from "./models/RoutingRuleRelationships";
export { RoutingRuleRelationshipsPolicy } from "./models/RoutingRuleRelationshipsPolicy";
export { RoutingRuleRelationshipsPolicyData } from "./models/RoutingRuleRelationshipsPolicyData";
Expand Down
2 changes: 2 additions & 0 deletions services/on_call/src/v2/models/RoutingRuleAction.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { UnparsedObject } from "@datadog/datadog-api-client";

import { RoutingRuleEscalationPolicyAction } from "./RoutingRuleEscalationPolicyAction";
import { SendSlackMessageAction } from "./SendSlackMessageAction";
import { SendTeamsMessageAction } from "./SendTeamsMessageAction";
import { TriggerWorkflowAutomationAction } from "./TriggerWorkflowAutomationAction";
Expand All @@ -11,4 +12,5 @@ export type RoutingRuleAction =
| SendSlackMessageAction
| SendTeamsMessageAction
| TriggerWorkflowAutomationAction
| RoutingRuleEscalationPolicyAction
| UnparsedObject;
2 changes: 1 addition & 1 deletion services/on_call/src/v2/models/RoutingRuleAttributes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ export class RoutingRuleAttributes {
*/
"query"?: string;
/**
* Holds time zone information and a list of time restrictions for a routing rule.
* Time restrictions during which the routing rule is active. Outside of these hours, the rule does not match and routing continues to subsequent rules. This is mutually exclusive with the action-level `support_hours` field.
*/
"timeRestriction"?: TimeRestrictions;
/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
import { AttributeTypeMap } from "@datadog/datadog-api-client";

import { RoutingRuleEscalationPolicyActionSupportHours } from "./RoutingRuleEscalationPolicyActionSupportHours";
import { RoutingRuleEscalationPolicyActionType } from "./RoutingRuleEscalationPolicyActionType";
import { Urgency } from "./Urgency";

/**
* Triggers an escalation policy.
*/
export class RoutingRuleEscalationPolicyAction {
/**
* The number of minutes before an acknowledged page is re-triggered.
*/
"ackTimeoutMinutes"?: number;
/**
* The ID of the escalation policy to route to.
*/
"policyId": string;
/**
* Support hours during which the escalation policy will be executed. Outside of these hours, the escalation policy will be on hold and triggered once the next support hours window starts. This is mutually exclusive with the top-level `time_restriction` field on the routing rule.
*/
"supportHours"?: RoutingRuleEscalationPolicyActionSupportHours;
/**
* Indicates that the action pages an escalation policy. This action can be set once per routing rule item, and is mutually exclusive with the top-level `policy_id` field on the routing rule.
*/
"type": RoutingRuleEscalationPolicyActionType;
/**
* Specifies the level of urgency for a routing rule (low, high, or dynamic).
*/
"urgency"?: Urgency;
/**
* A container for additional, undeclared properties.
* This is a holder for any undeclared properties as specified with
* the 'additionalProperties' keyword in the OAS document.
*/
"additionalProperties"?: { [key: string]: any };
/**
* @ignore
*/
"_unparsed"?: boolean;

/**
* @ignore
*/
static readonly attributeTypeMap: AttributeTypeMap = {
ackTimeoutMinutes: {
baseName: "ack_timeout_minutes",
type: "number",
format: "int64",
},
policyId: {
baseName: "policy_id",
type: "string",
required: true,
},
supportHours: {
baseName: "support_hours",
type: "RoutingRuleEscalationPolicyActionSupportHours",
},
type: {
baseName: "type",
type: "RoutingRuleEscalationPolicyActionType",
required: true,
},
urgency: {
baseName: "urgency",
type: "Urgency",
},
additionalProperties: {
baseName: "additionalProperties",
type: "{ [key: string]: any; }",
},
};

/**
* @ignore
*/
static getAttributeTypeMap(): AttributeTypeMap {
return RoutingRuleEscalationPolicyAction.attributeTypeMap;
}

public constructor() {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { AttributeTypeMap } from "@datadog/datadog-api-client";

import { TimeRestriction } from "./TimeRestriction";

/**
* Support hours during which the escalation policy will be executed. Outside of these hours, the escalation policy will be on hold and triggered once the next support hours window starts. This is mutually exclusive with the top-level `time_restriction` field on the routing rule.
*/
export class RoutingRuleEscalationPolicyActionSupportHours {
/**
* The list of support hours time windows.
*/
"restrictions"?: Array<TimeRestriction>;
/**
* The time zone in which the support hours are expressed.
*/
"timeZone": string;
/**
* A container for additional, undeclared properties.
* This is a holder for any undeclared properties as specified with
* the 'additionalProperties' keyword in the OAS document.
*/
"additionalProperties"?: { [key: string]: any };
/**
* @ignore
*/
"_unparsed"?: boolean;

/**
* @ignore
*/
static readonly attributeTypeMap: AttributeTypeMap = {
restrictions: {
baseName: "restrictions",
type: "Array<TimeRestriction>",
},
timeZone: {
baseName: "time_zone",
type: "string",
required: true,
},
additionalProperties: {
baseName: "additionalProperties",
type: "{ [key: string]: any; }",
},
};

/**
* @ignore
*/
static getAttributeTypeMap(): AttributeTypeMap {
return RoutingRuleEscalationPolicyActionSupportHours.attributeTypeMap;
}

public constructor() {}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
import { UnparsedObject } from "@datadog/datadog-api-client";

/**
* Indicates that the action pages an escalation policy. This action can be set once per routing rule item, and is mutually exclusive with the top-level `policy_id` field on the routing rule.
*/
export type RoutingRuleEscalationPolicyActionType =
| typeof ESCALATION_POLICY
| UnparsedObject;
export const ESCALATION_POLICY = "escalation_policy";
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ export class TeamRoutingRulesRequestRule {
*/
"query"?: string;
/**
* Holds time zone information and a list of time restrictions for a routing rule.
* Time restrictions during which the routing rule is active. Outside of these hours, the rule does not match and routing continues to subsequent rules. This is mutually exclusive with the action-level `support_hours` field.
*/
"timeRestriction"?: TimeRestrictions;
/**
Expand Down
2 changes: 1 addition & 1 deletion services/on_call/src/v2/models/TimeRestrictions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { AttributeTypeMap } from "@datadog/datadog-api-client";
import { TimeRestriction } from "./TimeRestriction";

/**
* Holds time zone information and a list of time restrictions for a routing rule.
* Time restrictions during which the routing rule is active. Outside of these hours, the rule does not match and routing continues to subsequent rules. This is mutually exclusive with the action-level `support_hours` field.
*/
export class TimeRestrictions {
/**
Expand Down
7 changes: 7 additions & 0 deletions services/on_call/src/v2/models/TypingInfo.ts
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,8 @@ import { RelationshipToUserData } from "./RelationshipToUserData";
import { RelationshipToUsers } from "./RelationshipToUsers";
import { RoutingRule } from "./RoutingRule";
import { RoutingRuleAttributes } from "./RoutingRuleAttributes";
import { RoutingRuleEscalationPolicyAction } from "./RoutingRuleEscalationPolicyAction";
import { RoutingRuleEscalationPolicyActionSupportHours } from "./RoutingRuleEscalationPolicyActionSupportHours";
import { RoutingRuleRelationships } from "./RoutingRuleRelationships";
import { RoutingRuleRelationshipsPolicy } from "./RoutingRuleRelationshipsPolicy";
import { RoutingRuleRelationshipsPolicyData } from "./RoutingRuleRelationshipsPolicyData";
Expand Down Expand Up @@ -167,6 +169,7 @@ export const TypingInfo: ModelTypingInfo = {
OnCallPhoneNotificationRuleMethod: ["sms", "voice"],
OrganizationsType: ["orgs"],
RolesType: ["roles"],
RoutingRuleEscalationPolicyActionType: ["escalation_policy"],
RoutingRuleRelationshipsPolicyDataType: ["policies"],
RoutingRuleType: ["team_routing_rules"],
ScheduleCreateRequestDataType: ["schedules"],
Expand Down Expand Up @@ -238,6 +241,7 @@ export const TypingInfo: ModelTypingInfo = {
"SendSlackMessageAction",
"SendTeamsMessageAction",
"TriggerWorkflowAutomationAction",
"RoutingRuleEscalationPolicyAction",
],
ScheduleDataIncludedItem: [
"TeamReference",
Expand Down Expand Up @@ -341,6 +345,9 @@ export const TypingInfo: ModelTypingInfo = {
RelationshipToUsers: RelationshipToUsers,
RoutingRule: RoutingRule,
RoutingRuleAttributes: RoutingRuleAttributes,
RoutingRuleEscalationPolicyAction: RoutingRuleEscalationPolicyAction,
RoutingRuleEscalationPolicyActionSupportHours:
RoutingRuleEscalationPolicyActionSupportHours,
RoutingRuleRelationships: RoutingRuleRelationships,
RoutingRuleRelationshipsPolicy: RoutingRuleRelationshipsPolicy,
RoutingRuleRelationshipsPolicyData: RoutingRuleRelationshipsPolicyData,
Expand Down
Loading