diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index ac098a3c305d..27ad049e17c7 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -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: @@ -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: @@ -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. diff --git a/cassettes/v2/On-Call_446749911/Set-On-Call-team-routing-rules-returns-OK-response_1745526811/frozen.json b/cassettes/v2/On-Call_446749911/Set-On-Call-team-routing-rules-returns-OK-response_1745526811/frozen.json index ffff81d4e3d2..764bbd41870a 100644 --- a/cassettes/v2/On-Call_446749911/Set-On-Call-team-routing-rules-returns-OK-response_1745526811/frozen.json +++ b/cassettes/v2/On-Call_446749911/Set-On-Call-team-routing-rules-returns-OK-response_1745526811/frozen.json @@ -1 +1 @@ -"2025-11-27T14:11:49.966Z" +"2026-05-15T14:39:18.459Z" diff --git a/cassettes/v2/On-Call_446749911/Set-On-Call-team-routing-rules-returns-OK-response_1745526811/recording.har b/cassettes/v2/On-Call_446749911/Set-On-Call-team-routing-rules-returns-OK-response_1745526811/recording.har index 0c16fc94a991..47f5744d6fc5 100644 --- a/cassettes/v2/On-Call_446749911/Set-On-Call-team-routing-rules-returns-OK-response_1745526811/recording.har +++ b/cassettes/v2/On-Call_446749911/Set-On-Call-team-routing-rules-returns-OK-response_1745526811/recording.har @@ -8,7 +8,7 @@ }, "entries": [ { - "_id": "07055f7d82b7f7c5900fec8976ba7ab7", + "_id": "a0621bc13c011d49e9a554c307511861", "_order": 0, "cache": {}, "request": { @@ -32,17 +32,17 @@ "postData": { "mimeType": "application/json", "params": [], - "text": "{\"data\":{\"attributes\":{\"email\":\"Test-Set_On_Call_team_routing_rules_returns_OK_response-1764252709@datadoghq.com\",\"title\":\"user title\"},\"type\":\"users\"}}" + "text": "{\"data\":{\"attributes\":{\"email\":\"Test-Set_On_Call_team_routing_rules_returns_OK_response-1778855958@datadoghq.com\",\"title\":\"user title\"},\"type\":\"users\"}}" }, "queryString": [], "url": "https://api.datadoghq.com/api/v2/users" }, "response": { - "bodySize": 728, + "bodySize": 774, "content": { "mimeType": "application/json", - "size": 728, - "text": "{\"data\":{\"type\":\"users\",\"id\":\"0473ca92-cb9b-11f0-85f9-9a82ffe01443\",\"attributes\":{\"name\":null,\"handle\":\"test-set_on_call_team_routing_rules_returns_ok_response-1764252709@datadoghq.com\",\"created_at\":\"2025-11-27T14:11:50.355271+00:00\",\"modified_at\":\"2025-11-27T14:11:50.355271+00:00\",\"email\":\"test-set_on_call_team_routing_rules_returns_ok_response-1764252709@datadoghq.com\",\"icon\":\"https://secure.gravatar.com/avatar/ad92f892fdf302962d879c0d02664d8e?s=48&d=retro\",\"title\":\"user title\",\"verified\":false,\"service_account\":false,\"disabled\":false,\"allowed_login_methods\":[],\"status\":\"Pending\",\"last_login_time\":null},\"relationships\":{\"roles\":{\"data\":[]},\"org\":{\"data\":{\"type\":\"orgs\",\"id\":\"4dee724d-00cc-11ea-a77b-570c9d03c6c5\"}}}}}\n" + "size": 774, + "text": "{\"data\":{\"type\":\"users\",\"id\":\"af4cfd73-8162-49c3-899a-101d0617d500\",\"attributes\":{\"uuid\":\"af4cfd73-8162-49c3-899a-101d0617d500\",\"name\":null,\"handle\":\"test-set_on_call_team_routing_rules_returns_ok_response-1778855958@datadoghq.com\",\"created_at\":\"2026-05-15T14:39:20.154059+00:00\",\"modified_at\":\"2026-05-15T14:39:20.154059+00:00\",\"email\":\"test-set_on_call_team_routing_rules_returns_ok_response-1778855958@datadoghq.com\",\"icon\":\"https://secure.gravatar.com/avatar/c530c1e2f9d5cddf9d34bed00a5e760b?s=48&d=retro\",\"title\":\"user title\",\"verified\":false,\"service_account\":false,\"disabled\":false,\"allowed_login_methods\":[],\"status\":\"Pending\",\"last_login_time\":null},\"relationships\":{\"roles\":{\"data\":[]},\"org\":{\"data\":{\"type\":\"orgs\",\"id\":\"4dee724d-00cc-11ea-a77b-570c9d03c6c5\"}}}}}\n" }, "cookies": [], "headers": [ @@ -57,11 +57,11 @@ "status": 201, "statusText": "Created" }, - "startedDateTime": "2025-11-27T14:11:49.970Z", - "time": 472 + "startedDateTime": "2026-05-15T14:39:19.375Z", + "time": 866 }, { - "_id": "b2cc82267752de843639fd21eea86f85", + "_id": "422de32fa56ec8f64be819f334ba8320", "_order": 0, "cache": {}, "request": { @@ -85,7 +85,7 @@ "postData": { "mimeType": "application/json", "params": [], - "text": "{\"data\":{\"attributes\":{\"handle\":\"test-handle-a7692378c203a880\",\"name\":\"test-name-a7692378c203a880\"},\"type\":\"team\"}}" + "text": "{\"data\":{\"attributes\":{\"handle\":\"test-handle-fc62c73422bed141\",\"name\":\"test-name-fc62c73422bed141\"},\"type\":\"team\"}}" }, "queryString": [], "url": "https://api.datadoghq.com/api/v2/team" @@ -95,7 +95,7 @@ "content": { "mimeType": "application/vnd.api+json", "size": 661, - "text": "{\"data\":{\"id\":\"ba4fe917-0da4-4b40-96da-f9d7306d97d8\",\"type\":\"team\",\"attributes\":{\"avatar\":null,\"banner\":14,\"created_at\":\"2025-11-27T14:11:50.842947+00:00\",\"description\":null,\"handle\":\"test-handle-a7692378c203a880\",\"hidden_modules\":[],\"link_count\":0,\"modified_at\":\"2025-11-27T14:11:50.842947+00:00\",\"name\":\"test-name-a7692378c203a880\",\"summary\":null,\"user_count\":0,\"visible_modules\":[]},\"relationships\":{\"team_links\":{\"data\":[],\"links\":{\"related\":\"/api/v2/team/ba4fe917-0da4-4b40-96da-f9d7306d97d8/links\"}},\"user_team_permissions\":{\"links\":{\"related\":\"/api/v2/team/ba4fe917-0da4-4b40-96da-f9d7306d97d8/permission-settings\"}}}}}" + "text": "{\"data\":{\"id\":\"5f48616e-52b1-4126-a255-0bd9f4820dc1\",\"type\":\"team\",\"attributes\":{\"avatar\":null,\"banner\":11,\"created_at\":\"2026-05-15T14:39:20.573129+00:00\",\"description\":null,\"handle\":\"test-handle-fc62c73422bed141\",\"hidden_modules\":null,\"is_managed\":false,\"link_count\":0,\"modified_at\":\"2026-05-15T14:39:20.573129+00:00\",\"name\":\"test-name-fc62c73422bed141\",\"summary\":null,\"user_count\":0,\"visible_modules\":null},\"relationships\":{\"team_links\":{\"data\":[],\"links\":{\"related\":\"/api/v2/team/5f48616e-52b1-4126-a255-0bd9f4820dc1/links\"}},\"user_team_permissions\":{\"data\":null,\"links\":{\"related\":\"/api/v2/team/5f48616e-52b1-4126-a255-0bd9f4820dc1/permission-settings\"}}}}}" }, "cookies": [], "headers": [ @@ -104,17 +104,17 @@ "value": "application/vnd.api+json" } ], - "headersSize": 700, + "headersSize": 662, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 201, "statusText": "Created" }, - "startedDateTime": "2025-11-27T14:11:50.448Z", - "time": 495 + "startedDateTime": "2026-05-15T14:39:20.249Z", + "time": 403 }, { - "_id": "44fc32335f8b1f37316cd7a745aee094", + "_id": "cfbbfb1074efa688a6ffc257ff9814ce", "_order": 0, "cache": {}, "request": { @@ -138,7 +138,7 @@ "postData": { "mimeType": "application/json", "params": [], - "text": "{\"data\":{\"attributes\":{\"layers\":[{\"effective_date\":\"2025-11-17T14:11:49.966Z\",\"end_date\":\"2025-12-07T14:11:49.966Z\",\"interval\":{\"days\":1},\"members\":[{\"user\":{\"id\":\"0473ca92-cb9b-11f0-85f9-9a82ffe01443\"}}],\"name\":\"Layer 1\",\"restrictions\":[{\"end_day\":\"friday\",\"end_time\":\"17:00:00\",\"start_day\":\"monday\",\"start_time\":\"09:00:00\"}],\"rotation_start\":\"2025-11-22T14:11:49.966Z\"}],\"name\":\"Test-Set_On_Call_team_routing_rules_returns_OK_response-1764252709\",\"time_zone\":\"America/New_York\"},\"relationships\":{\"teams\":{\"data\":[{\"id\":\"65aea9d0-941c-4607-bf8a-14fc0dac2820\",\"type\":\"teams\"}]}},\"type\":\"schedules\"}}" + "text": "{\"data\":{\"attributes\":{\"layers\":[{\"effective_date\":\"2026-05-05T14:39:18.459Z\",\"end_date\":\"2026-05-25T14:39:18.459Z\",\"interval\":{\"days\":1},\"members\":[{\"user\":{\"id\":\"af4cfd73-8162-49c3-899a-101d0617d500\"}}],\"name\":\"Layer 1\",\"restrictions\":[{\"end_day\":\"friday\",\"end_time\":\"17:00:00\",\"start_day\":\"monday\",\"start_time\":\"09:00:00\"}],\"rotation_start\":\"2026-05-10T14:39:18.459Z\"}],\"name\":\"Test-Set_On_Call_team_routing_rules_returns_OK_response-1778855958\",\"time_zone\":\"America/New_York\"},\"relationships\":{\"teams\":{\"data\":[{\"id\":\"65aea9d0-941c-4607-bf8a-14fc0dac2820\",\"type\":\"teams\"}]}},\"type\":\"schedules\"}}" }, "queryString": [], "url": "https://api.datadoghq.com/api/v2/on-call/schedules" @@ -148,7 +148,7 @@ "content": { "mimeType": "application/vnd.api+json", "size": 375, - "text": "{\"data\":{\"id\":\"1f9b0595-17a3-4d95-9b2e-edcea3b6e737\",\"type\":\"schedules\",\"attributes\":{\"name\":\"Test-Set_On_Call_team_routing_rules_returns_OK_response-1764252709\",\"time_zone\":\"America/New_York\"},\"relationships\":{\"layers\":{\"data\":[{\"id\":\"0eecb6fe-83c6-48c9-9e0e-82379498f733\",\"type\":\"layers\"}]},\"teams\":{\"data\":[{\"id\":\"65aea9d0-941c-4607-bf8a-14fc0dac2820\",\"type\":\"teams\"}]}}}}" + "text": "{\"data\":{\"id\":\"6417bbaa-a75e-474d-a45a-9af8e1a3907a\",\"type\":\"schedules\",\"attributes\":{\"name\":\"Test-Set_On_Call_team_routing_rules_returns_OK_response-1778855958\",\"time_zone\":\"America/New_York\"},\"relationships\":{\"layers\":{\"data\":[{\"id\":\"d2139431-973b-42cc-a932-941aeff81783\",\"type\":\"layers\"}]},\"teams\":{\"data\":[{\"id\":\"65aea9d0-941c-4607-bf8a-14fc0dac2820\",\"type\":\"teams\"}]}}}}" }, "cookies": [], "headers": [ @@ -163,11 +163,11 @@ "status": 201, "statusText": "Created" }, - "startedDateTime": "2025-11-27T14:11:50.949Z", - "time": 423 + "startedDateTime": "2026-05-15T14:39:20.659Z", + "time": 386 }, { - "_id": "9b1f112eed9b24a3439d609848b84864", + "_id": "fe5d731915772258320fe1e31c686d06", "_order": 0, "cache": {}, "request": { @@ -185,23 +185,23 @@ "value": "application/json" } ], - "headersSize": 590, + "headersSize": 589, "httpVersion": "HTTP/1.1", "method": "POST", "postData": { "mimeType": "application/json", "params": [], - "text": "{\"data\":{\"attributes\":{\"name\":\"Test-Set_On_Call_team_routing_rules_returns_OK_response-1764252709\",\"resolve_page_on_policy_end\":true,\"retries\":2,\"steps\":[{\"assignment\":\"default\",\"escalate_after_seconds\":3600,\"targets\":[{\"id\":\"ba4fe917-0da4-4b40-96da-f9d7306d97d8\",\"type\":\"teams\"},{\"id\":\"1f9b0595-17a3-4d95-9b2e-edcea3b6e737\",\"type\":\"schedules\"},{\"config\":{\"schedule\":{\"position\":\"previous\"}},\"id\":\"1f9b0595-17a3-4d95-9b2e-edcea3b6e737\",\"type\":\"schedules\"},{\"id\":\"0473ca92-cb9b-11f0-85f9-9a82ffe01443\",\"type\":\"users\"}]},{\"assignment\":\"round-robin\",\"escalate_after_seconds\":3600,\"targets\":[{\"id\":\"ba4fe917-0da4-4b40-96da-f9d7306d97d8\",\"type\":\"teams\"}]}]},\"relationships\":{\"teams\":{\"data\":[{\"id\":\"ba4fe917-0da4-4b40-96da-f9d7306d97d8\",\"type\":\"teams\"}]}},\"type\":\"policies\"}}" + "text": "{\"data\":{\"attributes\":{\"name\":\"Test-Set_On_Call_team_routing_rules_returns_OK_response-1778855958\",\"resolve_page_on_policy_end\":true,\"retries\":2,\"steps\":[{\"assignment\":\"default\",\"escalate_after_seconds\":3600,\"targets\":[{\"id\":\"5f48616e-52b1-4126-a255-0bd9f4820dc1\",\"type\":\"teams\"},{\"id\":\"6417bbaa-a75e-474d-a45a-9af8e1a3907a\",\"type\":\"schedules\"},{\"config\":{\"schedule\":{\"position\":\"previous\"}},\"id\":\"6417bbaa-a75e-474d-a45a-9af8e1a3907a\",\"type\":\"schedules\"},{\"id\":\"af4cfd73-8162-49c3-899a-101d0617d500\",\"type\":\"users\"}]},{\"assignment\":\"round-robin\",\"escalate_after_seconds\":3600,\"targets\":[{\"id\":\"5f48616e-52b1-4126-a255-0bd9f4820dc1\",\"type\":\"teams\"}]}]},\"relationships\":{\"teams\":{\"data\":[{\"id\":\"5f48616e-52b1-4126-a255-0bd9f4820dc1\",\"type\":\"teams\"}]}},\"type\":\"policies\"}}" }, "queryString": [], "url": "https://api.datadoghq.com/api/v2/on-call/escalation-policies" }, "response": { - "bodySize": 448, + "bodySize": 458, "content": { "mimeType": "application/vnd.api+json", - "size": 448, - "text": "{\"data\":{\"id\":\"66f0e922-2834-4d68-aa0b-98cc81fc2a9d\",\"type\":\"policies\",\"attributes\":{\"name\":\"Test-Set_On_Call_team_routing_rules_returns_OK_response-1764252709\",\"resolve_page_on_policy_end\":true,\"retries\":2},\"relationships\":{\"steps\":{\"data\":[{\"id\":\"533f661e-6a1f-4327-8d3f-035add94cff8\",\"type\":\"steps\"},{\"id\":\"b8948730-6aec-4a51-8662-cce4026b94dc\",\"type\":\"steps\"}]},\"teams\":{\"data\":[{\"id\":\"ba4fe917-0da4-4b40-96da-f9d7306d97d8\",\"type\":\"teams\"}]}}}}" + "size": 458, + "text": "{\"data\":{\"id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"type\":\"policies\",\"attributes\":{\"name\":\"Test-Set_On_Call_team_routing_rules_returns_OK_response-1778855958\",\"resolve_page_on_policy_end\":true,\"retries\":2,\"tags\":[]},\"relationships\":{\"steps\":{\"data\":[{\"id\":\"cd41c9ed-3d97-469c-aa8a-9a36c0f45a82\",\"type\":\"steps\"},{\"id\":\"102b0afe-da23-48ca-be15-699891fcbff7\",\"type\":\"steps\"}]},\"teams\":{\"data\":[{\"id\":\"5f48616e-52b1-4126-a255-0bd9f4820dc1\",\"type\":\"teams\"}]}}}}" }, "cookies": [], "headers": [ @@ -216,15 +216,15 @@ "status": 201, "statusText": "Created" }, - "startedDateTime": "2025-11-27T14:11:51.380Z", - "time": 456 + "startedDateTime": "2026-05-15T14:39:21.051Z", + "time": 382 }, { - "_id": "c9970e7e9ed5a6607997ac6316dafd27", + "_id": "510a9227a19ba9ba9f923515488d9c09", "_order": 0, "cache": {}, "request": { - "bodySize": 546, + "bodySize": 1186, "cookies": [], "headers": [ { @@ -238,13 +238,13 @@ "value": "application/json" } ], - "headersSize": 637, + "headersSize": 638, "httpVersion": "HTTP/1.1", "method": "PUT", "postData": { "mimeType": "application/json", "params": [], - "text": "{\"data\":{\"attributes\":{\"rules\":[{\"actions\":[{\"channel\":\"channel\",\"type\":\"send_slack_message\",\"workspace\":\"workspace\"}],\"query\":\"tags.service:test\",\"time_restriction\":{\"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\"}],\"time_zone\":\"Europe/Paris\"}},{\"policy_id\":\"66f0e922-2834-4d68-aa0b-98cc81fc2a9d\",\"query\":\"\",\"urgency\":\"low\"}]},\"id\":\"ba4fe917-0da4-4b40-96da-f9d7306d97d8\",\"type\":\"team_routing_rules\"}}" + "text": "{\"data\":{\"attributes\":{\"rules\":[{\"actions\":[{\"policy_id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"type\":\"escalation_policy\",\"urgency\":\"low\"}],\"query\":\"tags.service:time_restrictions\",\"time_restriction\":{\"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\"}],\"time_zone\":\"Europe/Paris\"}},{\"actions\":[{\"ack_timeout_minutes\":30,\"policy_id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"support_hours\":{\"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\"}],\"time_zone\":\"Europe/Paris\"},\"type\":\"escalation_policy\",\"urgency\":\"low\"}],\"query\":\"tags.service:support_hours_and_acknowledgment_timeout\"},{\"policy_id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"query\":\"tags.service:legacy_policy_definition\",\"urgency\":\"low\"},{\"actions\":[{\"policy_id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"type\":\"escalation_policy\",\"urgency\":\"low\"}],\"query\":\"\"}]},\"id\":\"5f48616e-52b1-4126-a255-0bd9f4820dc1\",\"type\":\"team_routing_rules\"}}" }, "queryString": [ { @@ -252,14 +252,14 @@ "value": "rules" } ], - "url": "https://api.datadoghq.com/api/v2/on-call/teams/ba4fe917-0da4-4b40-96da-f9d7306d97d8/routing-rules?include=rules" + "url": "https://api.datadoghq.com/api/v2/on-call/teams/5f48616e-52b1-4126-a255-0bd9f4820dc1/routing-rules?include=rules" }, "response": { - "bodySize": 1056, + "bodySize": 2360, "content": { "mimeType": "application/vnd.api+json", - "size": 1056, - "text": "{\"data\":{\"id\":\"ba4fe917-0da4-4b40-96da-f9d7306d97d8\",\"type\":\"team_routing_rules\",\"relationships\":{\"rules\":{\"data\":[{\"id\":\"virtual-ba4fe917-0da4-4b40-96da-f9d7306d97d8-rule-0\",\"type\":\"team_routing_rules\"},{\"id\":\"virtual-ba4fe917-0da4-4b40-96da-f9d7306d97d8-rule-1\",\"type\":\"team_routing_rules\"}]}}},\"included\":[{\"id\":\"virtual-ba4fe917-0da4-4b40-96da-f9d7306d97d8-rule-0\",\"type\":\"team_routing_rules\",\"attributes\":{\"actions\":[{\"type\":\"send_slack_message\",\"channel\":\"channel\",\"workspace\":\"workspace\"}],\"query\":\"tags.service:test\",\"time_restriction\":{\"time_zone\":\"Europe/Paris\",\"restrictions\":[{\"start_time\":\"09:00:00\",\"start_day\":\"monday\",\"end_time\":\"17:00:00\",\"end_day\":\"monday\"},{\"start_time\":\"09:00:00\",\"start_day\":\"tuesday\",\"end_time\":\"17:00:00\",\"end_day\":\"tuesday\"}]}},\"relationships\":{\"policy\":{\"data\":null}}},{\"id\":\"virtual-ba4fe917-0da4-4b40-96da-f9d7306d97d8-rule-1\",\"type\":\"team_routing_rules\",\"attributes\":{\"actions\":[],\"query\":\"\",\"urgency\":\"low\"},\"relationships\":{\"policy\":{\"data\":{\"id\":\"66f0e922-2834-4d68-aa0b-98cc81fc2a9d\",\"type\":\"policies\"}}}}]}" + "size": 2360, + "text": "{\"data\":{\"id\":\"5f48616e-52b1-4126-a255-0bd9f4820dc1\",\"type\":\"team_routing_rules\",\"relationships\":{\"rules\":{\"data\":[{\"id\":\"d4a7d064-0b02-4510-9412-24c95fdbef89\",\"type\":\"team_routing_rules\"},{\"id\":\"a1a5fdd6-dd2b-4571-a86c-909a89a21490\",\"type\":\"team_routing_rules\"},{\"id\":\"fdbe9494-e88c-4927-bb7e-407c0df33258\",\"type\":\"team_routing_rules\"},{\"id\":\"8e059ecb-b492-4db6-accd-6eb69b4099b1\",\"type\":\"team_routing_rules\"}]}}},\"included\":[{\"id\":\"d4a7d064-0b02-4510-9412-24c95fdbef89\",\"type\":\"team_routing_rules\",\"attributes\":{\"actions\":[{\"type\":\"escalation_policy\",\"policy_id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"urgency\":\"low\"}],\"query\":\"tags.service:time_restrictions\",\"time_restriction\":{\"time_zone\":\"Europe/Paris\",\"restrictions\":[{\"start_time\":\"09:00:00\",\"start_day\":\"monday\",\"end_time\":\"17:00:00\",\"end_day\":\"monday\"},{\"start_time\":\"09:00:00\",\"start_day\":\"tuesday\",\"end_time\":\"17:00:00\",\"end_day\":\"tuesday\"}]},\"urgency\":\"low\"},\"relationships\":{\"policy\":{\"data\":{\"id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"type\":\"policies\"}}}},{\"id\":\"a1a5fdd6-dd2b-4571-a86c-909a89a21490\",\"type\":\"team_routing_rules\",\"attributes\":{\"actions\":[{\"type\":\"escalation_policy\",\"policy_id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"support_hours\":{\"time_zone\":\"Europe/Paris\",\"restrictions\":[{\"start_time\":\"09:00:00\",\"start_day\":\"wednesday\",\"end_time\":\"17:00:00\",\"end_day\":\"wednesday\"},{\"start_time\":\"09:00:00\",\"start_day\":\"thursday\",\"end_time\":\"17:00:00\",\"end_day\":\"thursday\"}]},\"ack_timeout_minutes\":30,\"urgency\":\"low\"}],\"query\":\"tags.service:support_hours_and_acknowledgment_timeout\",\"urgency\":\"low\"},\"relationships\":{\"policy\":{\"data\":{\"id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"type\":\"policies\"}}}},{\"id\":\"fdbe9494-e88c-4927-bb7e-407c0df33258\",\"type\":\"team_routing_rules\",\"attributes\":{\"actions\":[{\"type\":\"escalation_policy\",\"policy_id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"urgency\":\"low\"}],\"query\":\"tags.service:legacy_policy_definition\",\"urgency\":\"low\"},\"relationships\":{\"policy\":{\"data\":{\"id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"type\":\"policies\"}}}},{\"id\":\"8e059ecb-b492-4db6-accd-6eb69b4099b1\",\"type\":\"team_routing_rules\",\"attributes\":{\"actions\":[{\"type\":\"escalation_policy\",\"policy_id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"urgency\":\"low\"}],\"query\":\"\",\"urgency\":\"low\"},\"relationships\":{\"policy\":{\"data\":{\"id\":\"3321cfa1-8420-4655-ac38-f51ea522834e\",\"type\":\"policies\"}}}}]}" }, "cookies": [], "headers": [ @@ -274,11 +274,11 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2025-11-27T14:11:51.847Z", - "time": 442 + "startedDateTime": "2026-05-15T14:39:21.441Z", + "time": 373 }, { - "_id": "8e16cbe74c6d421444df932c13079e00", + "_id": "6ebcacdb0c746e64ac135c6e46c00839", "_order": 0, "cache": {}, "request": { @@ -296,23 +296,23 @@ "value": "application/json" } ], - "headersSize": 623, + "headersSize": 622, "httpVersion": "HTTP/1.1", "method": "PUT", "postData": { "mimeType": "application/json", "params": [], - "text": "{\"data\":{\"attributes\":{\"rules\":[]},\"id\":\"ba4fe917-0da4-4b40-96da-f9d7306d97d8\",\"type\":\"team_routing_rules\"}}" + "text": "{\"data\":{\"attributes\":{\"rules\":[]},\"id\":\"5f48616e-52b1-4126-a255-0bd9f4820dc1\",\"type\":\"team_routing_rules\"}}" }, "queryString": [], - "url": "https://api.datadoghq.com/api/v2/on-call/teams/ba4fe917-0da4-4b40-96da-f9d7306d97d8/routing-rules" + "url": "https://api.datadoghq.com/api/v2/on-call/teams/5f48616e-52b1-4126-a255-0bd9f4820dc1/routing-rules" }, "response": { "bodySize": 120, "content": { "mimeType": "application/vnd.api+json", "size": 120, - "text": "{\"data\":{\"id\":\"ba4fe917-0da4-4b40-96da-f9d7306d97d8\",\"type\":\"team_routing_rules\",\"relationships\":{\"rules\":{\"data\":[]}}}}" + "text": "{\"data\":{\"id\":\"5f48616e-52b1-4126-a255-0bd9f4820dc1\",\"type\":\"team_routing_rules\",\"relationships\":{\"rules\":{\"data\":[]}}}}" }, "cookies": [], "headers": [ @@ -327,11 +327,11 @@ "status": 200, "statusText": "OK" }, - "startedDateTime": "2025-11-27T14:11:52.295Z", - "time": 444 + "startedDateTime": "2026-05-15T14:39:21.820Z", + "time": 417 }, { - "_id": "c26189d3750889a7a4fd05c9a5d03ce7", + "_id": "c83fe34f56124955ff2975a27c33ffb5", "_order": 0, "cache": {}, "request": { @@ -348,7 +348,7 @@ "httpVersion": "HTTP/1.1", "method": "DELETE", "queryString": [], - "url": "https://api.datadoghq.com/api/v2/on-call/escalation-policies/66f0e922-2834-4d68-aa0b-98cc81fc2a9d" + "url": "https://api.datadoghq.com/api/v2/on-call/escalation-policies/3321cfa1-8420-4655-ac38-f51ea522834e" }, "response": { "bodySize": 0, @@ -364,11 +364,11 @@ "status": 204, "statusText": "No Content" }, - "startedDateTime": "2025-11-27T14:11:52.745Z", - "time": 410 + "startedDateTime": "2026-05-15T14:39:22.240Z", + "time": 360 }, { - "_id": "13fd1a4c62032e806486f8eaa339c28b", + "_id": "524ae06e2641fdbb731be84d07bb8e83", "_order": 0, "cache": {}, "request": { @@ -385,7 +385,7 @@ "httpVersion": "HTTP/1.1", "method": "DELETE", "queryString": [], - "url": "https://api.datadoghq.com/api/v2/on-call/schedules/1f9b0595-17a3-4d95-9b2e-edcea3b6e737" + "url": "https://api.datadoghq.com/api/v2/on-call/schedules/6417bbaa-a75e-474d-a45a-9af8e1a3907a" }, "response": { "bodySize": 0, @@ -401,11 +401,11 @@ "status": 204, "statusText": "No Content" }, - "startedDateTime": "2025-11-27T14:11:53.162Z", - "time": 421 + "startedDateTime": "2026-05-15T14:39:22.604Z", + "time": 376 }, { - "_id": "8c75ecab4d74a2b69dbcdad49c49345c", + "_id": "c6463402e42332f3c2cdc8da3fe3e9da", "_order": 0, "cache": {}, "request": { @@ -422,7 +422,7 @@ "httpVersion": "HTTP/1.1", "method": "DELETE", "queryString": [], - "url": "https://api.datadoghq.com/api/v2/team/ba4fe917-0da4-4b40-96da-f9d7306d97d8" + "url": "https://api.datadoghq.com/api/v2/team/5f48616e-52b1-4126-a255-0bd9f4820dc1" }, "response": { "bodySize": 0, @@ -432,17 +432,17 @@ }, "cookies": [], "headers": [], - "headersSize": 631, + "headersSize": 632, "httpVersion": "HTTP/1.1", "redirectURL": "", "status": 204, "statusText": "No Content" }, - "startedDateTime": "2025-11-27T14:11:53.587Z", - "time": 545 + "startedDateTime": "2026-05-15T14:39:22.982Z", + "time": 471 }, { - "_id": "96fcc6280c00501e78b9d3212c0190a8", + "_id": "bf3c22bad78db8945df5e00aa959145d", "_order": 0, "cache": {}, "request": { @@ -459,7 +459,7 @@ "httpVersion": "HTTP/1.1", "method": "DELETE", "queryString": [], - "url": "https://api.datadoghq.com/api/v2/users/0473ca92-cb9b-11f0-85f9-9a82ffe01443" + "url": "https://api.datadoghq.com/api/v2/users/af4cfd73-8162-49c3-899a-101d0617d500" }, "response": { "bodySize": 0, @@ -475,8 +475,8 @@ "status": 204, "statusText": "No Content" }, - "startedDateTime": "2025-11-27T14:11:54.138Z", - "time": 611 + "startedDateTime": "2026-05-15T14:39:23.456Z", + "time": 607 } ], "pages": [], diff --git a/examples/v2/on-call/SetOnCallTeamRoutingRules.ts b/examples/v2/on-call/SetOnCallTeamRoutingRules.ts index f3d4b80ee037..1f6c0a57b5ac 100644 --- a/examples/v2/on-call/SetOnCallTeamRoutingRules.ts +++ b/examples/v2/on-call/SetOnCallTeamRoutingRules.ts @@ -22,12 +22,12 @@ const params: v2.OnCallApiSetOnCallTeamRoutingRulesRequest = { { actions: [ { - channel: "channel", - type: "send_slack_message", - workspace: "workspace", + type: "escalation_policy", + policyId: ESCALATION_POLICY_DATA_ID, + urgency: "low", }, ], - query: "tags.service:test", + query: "tags.service:time_restrictions", timeRestriction: { timeZone: "Europe/Paris", restrictions: [ @@ -46,11 +46,49 @@ const params: v2.OnCallApiSetOnCallTeamRoutingRulesRequest = { ], }, }, + { + actions: [ + { + type: "escalation_policy", + policyId: ESCALATION_POLICY_DATA_ID, + urgency: "low", + ackTimeoutMinutes: 30, + supportHours: { + timeZone: "Europe/Paris", + restrictions: [ + { + endDay: "wednesday", + endTime: "17:00:00", + startDay: "wednesday", + startTime: "09:00:00", + }, + { + endDay: "thursday", + endTime: "17:00:00", + startDay: "thursday", + startTime: "09:00:00", + }, + ], + }, + }, + ], + query: "tags.service:support_hours_and_acknowledgment_timeout", + }, { policyId: ESCALATION_POLICY_DATA_ID, - query: "", + query: "tags.service:legacy_policy_definition", urgency: "low", }, + { + actions: [ + { + type: "escalation_policy", + policyId: ESCALATION_POLICY_DATA_ID, + urgency: "low", + }, + ], + query: "", + }, ], }, id: DD_TEAM_DATA_ID, diff --git a/features/v2/on-call.feature b/features/v2/on-call.feature index 0f4b2a0e3402..a4ea9a7c4f08 100644 --- a/features/v2/on-call.feature +++ b/features/v2/on-call.feature @@ -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 diff --git a/packages/datadog-api-client-v2/index.ts b/packages/datadog-api-client-v2/index.ts index 97eb60346473..adddf2eef454 100644 --- a/packages/datadog-api-client-v2/index.ts +++ b/packages/datadog-api-client-v2/index.ts @@ -5519,6 +5519,9 @@ export { RolloutStrategy } from "./models/RolloutStrategy"; 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"; diff --git a/packages/datadog-api-client-v2/models/ObjectSerializer.ts b/packages/datadog-api-client-v2/models/ObjectSerializer.ts index 79c9726a4851..1a0931691776 100644 --- a/packages/datadog-api-client-v2/models/ObjectSerializer.ts +++ b/packages/datadog-api-client-v2/models/ObjectSerializer.ts @@ -3142,6 +3142,8 @@ import { RolloutOptions } from "./RolloutOptions"; import { RolloutOptionsRequest } from "./RolloutOptionsRequest"; 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"; @@ -5991,6 +5993,7 @@ const enumsMap: { [key: string]: any[] } = { ], RolesType: ["roles"], RolloutStrategy: ["UNIFORM_INTERVALS", "NO_ROLLOUT"], + RoutingRuleEscalationPolicyActionType: ["escalation_policy"], RoutingRuleRelationshipsPolicyDataType: ["policies"], RoutingRuleType: ["team_routing_rules"], RuleBasedViewRuleCategory: [ @@ -10551,6 +10554,9 @@ const typeMap: { [index: string]: any } = { RolloutOptionsRequest: RolloutOptionsRequest, RoutingRule: RoutingRule, RoutingRuleAttributes: RoutingRuleAttributes, + RoutingRuleEscalationPolicyAction: RoutingRuleEscalationPolicyAction, + RoutingRuleEscalationPolicyActionSupportHours: + RoutingRuleEscalationPolicyActionSupportHours, RoutingRuleRelationships: RoutingRuleRelationships, RoutingRuleRelationshipsPolicy: RoutingRuleRelationshipsPolicy, RoutingRuleRelationshipsPolicyData: RoutingRuleRelationshipsPolicyData, @@ -12503,6 +12509,7 @@ const oneOfMap: { [index: string]: string[] } = { "SendSlackMessageAction", "SendTeamsMessageAction", "TriggerWorkflowAutomationAction", + "RoutingRuleEscalationPolicyAction", ], ScalarColumn: ["GroupScalarColumn", "DataScalarColumn"], ScalarQuery: [ diff --git a/packages/datadog-api-client-v2/models/RoutingRuleAction.ts b/packages/datadog-api-client-v2/models/RoutingRuleAction.ts index 0143bc409953..14d5e94af710 100644 --- a/packages/datadog-api-client-v2/models/RoutingRuleAction.ts +++ b/packages/datadog-api-client-v2/models/RoutingRuleAction.ts @@ -3,6 +3,7 @@ * This product includes software developed at Datadog (https://www.datadoghq.com/). * Copyright 2020-Present Datadog, Inc. */ +import { RoutingRuleEscalationPolicyAction } from "./RoutingRuleEscalationPolicyAction"; import { SendSlackMessageAction } from "./SendSlackMessageAction"; import { SendTeamsMessageAction } from "./SendTeamsMessageAction"; import { TriggerWorkflowAutomationAction } from "./TriggerWorkflowAutomationAction"; @@ -17,4 +18,5 @@ export type RoutingRuleAction = | SendSlackMessageAction | SendTeamsMessageAction | TriggerWorkflowAutomationAction + | RoutingRuleEscalationPolicyAction | UnparsedObject; diff --git a/packages/datadog-api-client-v2/models/RoutingRuleAttributes.ts b/packages/datadog-api-client-v2/models/RoutingRuleAttributes.ts index 880cabb0f838..5d98ad5c8f16 100644 --- a/packages/datadog-api-client-v2/models/RoutingRuleAttributes.ts +++ b/packages/datadog-api-client-v2/models/RoutingRuleAttributes.ts @@ -22,7 +22,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; /** diff --git a/packages/datadog-api-client-v2/models/RoutingRuleEscalationPolicyAction.ts b/packages/datadog-api-client-v2/models/RoutingRuleEscalationPolicyAction.ts new file mode 100644 index 000000000000..0b647196cf8c --- /dev/null +++ b/packages/datadog-api-client-v2/models/RoutingRuleEscalationPolicyAction.ts @@ -0,0 +1,90 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { RoutingRuleEscalationPolicyActionSupportHours } from "./RoutingRuleEscalationPolicyActionSupportHours"; +import { RoutingRuleEscalationPolicyActionType } from "./RoutingRuleEscalationPolicyActionType"; +import { Urgency } from "./Urgency"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * 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() {} +} diff --git a/packages/datadog-api-client-v2/models/RoutingRuleEscalationPolicyActionSupportHours.ts b/packages/datadog-api-client-v2/models/RoutingRuleEscalationPolicyActionSupportHours.ts new file mode 100644 index 000000000000..d356bcfbf97d --- /dev/null +++ b/packages/datadog-api-client-v2/models/RoutingRuleEscalationPolicyActionSupportHours.ts @@ -0,0 +1,62 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ +import { TimeRestriction } from "./TimeRestriction"; + +import { AttributeTypeMap } from "../../datadog-api-client-common/util"; + +/** + * 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; + /** + * 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", + }, + timeZone: { + baseName: "time_zone", + type: "string", + required: true, + }, + additionalProperties: { + baseName: "additionalProperties", + type: "{ [key: string]: any; }", + }, + }; + + /** + * @ignore + */ + static getAttributeTypeMap(): AttributeTypeMap { + return RoutingRuleEscalationPolicyActionSupportHours.attributeTypeMap; + } + + public constructor() {} +} diff --git a/packages/datadog-api-client-v2/models/RoutingRuleEscalationPolicyActionType.ts b/packages/datadog-api-client-v2/models/RoutingRuleEscalationPolicyActionType.ts new file mode 100644 index 000000000000..e6f5e77c66b2 --- /dev/null +++ b/packages/datadog-api-client-v2/models/RoutingRuleEscalationPolicyActionType.ts @@ -0,0 +1,16 @@ +/** + * Unless explicitly stated otherwise all files in this repository are licensed under the Apache-2.0 License. + * This product includes software developed at Datadog (https://www.datadoghq.com/). + * Copyright 2020-Present Datadog, Inc. + */ + +import { UnparsedObject } from "../../datadog-api-client-common/util"; + +/** + * 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"; diff --git a/packages/datadog-api-client-v2/models/TeamRoutingRulesRequestRule.ts b/packages/datadog-api-client-v2/models/TeamRoutingRulesRequestRule.ts index 31aa35d65a8b..5358f1c82e16 100644 --- a/packages/datadog-api-client-v2/models/TeamRoutingRulesRequestRule.ts +++ b/packages/datadog-api-client-v2/models/TeamRoutingRulesRequestRule.ts @@ -26,7 +26,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; /** diff --git a/packages/datadog-api-client-v2/models/TimeRestrictions.ts b/packages/datadog-api-client-v2/models/TimeRestrictions.ts index 60108caba812..babb76fc9a54 100644 --- a/packages/datadog-api-client-v2/models/TimeRestrictions.ts +++ b/packages/datadog-api-client-v2/models/TimeRestrictions.ts @@ -8,7 +8,7 @@ import { TimeRestriction } from "./TimeRestriction"; import { AttributeTypeMap } from "../../datadog-api-client-common/util"; /** - * 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 { /**