diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index 9bdfd074316..4b5678d0bcf 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -74529,9 +74529,13 @@ paths: - apiKeyAuth: [] appKeyAuth: [] - AuthZ: [] - summary: Get the schedule on-call user + summary: Get scheduled on-call user tags: - On-Call + x-permission: + operator: AND + permissions: + - on_call_read /api/v2/on-call/teams/{team_id}/on-call: get: description: Get a team's on-call users at a given time @@ -74574,6 +74578,10 @@ paths: summary: Get team on-call users tags: - On-Call + x-permission: + operator: AND + permissions: + - on_call_read /api/v2/on-call/teams/{team_id}/routing-rules: get: description: Get a team's On-Call routing rules diff --git a/api/datadogV2/api_on_call.go b/api/datadogV2/api_on_call.go index f013983d9ba..9a91c379fee 100644 --- a/api/datadogV2/api_on_call.go +++ b/api/datadogV2/api_on_call.go @@ -709,7 +709,7 @@ func (r *GetScheduleOnCallUserOptionalParameters) WithFilterAtTs(filterAtTs stri return r } -// GetScheduleOnCallUser Get the schedule on-call user. +// GetScheduleOnCallUser Get scheduled on-call user. // Retrieves the user who is on-call for the specified schedule at a given time. func (a *OnCallApi) GetScheduleOnCallUser(ctx _context.Context, scheduleId string, o ...GetScheduleOnCallUserOptionalParameters) (Shift, *_nethttp.Response, error) { var ( diff --git a/examples/v2/on-call/GetScheduleOnCallUser.go b/examples/v2/on-call/GetScheduleOnCallUser.go index f09a5ae6a11..2f35791ef92 100644 --- a/examples/v2/on-call/GetScheduleOnCallUser.go +++ b/examples/v2/on-call/GetScheduleOnCallUser.go @@ -1,4 +1,4 @@ -// Get the schedule on-call user returns "OK" response +// Get scheduled on-call user returns "OK" response package main diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_On-Call/Scenario_Get_the_schedule_on-call_user_returns_OK_response.freeze b/tests/scenarios/cassettes/TestScenarios/v2/Feature_On-Call/Scenario_Get_the_schedule_on-call_user_returns_OK_response.freeze deleted file mode 100644 index baa8f4a5897..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_On-Call/Scenario_Get_the_schedule_on-call_user_returns_OK_response.freeze +++ /dev/null @@ -1 +0,0 @@ -2025-11-27T14:11:47.631Z \ No newline at end of file diff --git a/tests/scenarios/cassettes/TestScenarios/v2/Feature_On-Call/Scenario_Get_the_schedule_on-call_user_returns_OK_response.yaml b/tests/scenarios/cassettes/TestScenarios/v2/Feature_On-Call/Scenario_Get_the_schedule_on-call_user_returns_OK_response.yaml deleted file mode 100644 index 61a50cbfa4c..00000000000 --- a/tests/scenarios/cassettes/TestScenarios/v2/Feature_On-Call/Scenario_Get_the_schedule_on-call_user_returns_OK_response.yaml +++ /dev/null @@ -1,92 +0,0 @@ -interactions: -- request: - body: | - {"data":{"attributes":{"email":"Test-Get_the_schedule_on_call_user_returns_OK_response-1764252707@datadoghq.com","title":"user title"},"type":"users"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 0 - method: POST - url: https://api.datadoghq.com/api/v2/users - response: - body: '{"data":{"type":"users","id":"030e767a-cb9b-11f0-8fcd-5ac0b02adf59","attributes":{"name":null,"handle":"test-get_the_schedule_on_call_user_returns_ok_response-1764252707@datadoghq.com","created_at":"2025-11-27T14:11:48.013486+00:00","modified_at":"2025-11-27T14:11:48.013486+00:00","email":"test-get_the_schedule_on_call_user_returns_ok_response-1764252707@datadoghq.com","icon":"https://secure.gravatar.com/avatar/a9e8940d153698e24c0b29024875d46f?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"}}}}} - - ' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/json - status: 201 Created -- request: - body: | - {"data":{"attributes":{"layers":[{"effective_date":"2025-11-17T14:11:47.631Z","end_date":"2025-12-07T14:11:47.631Z","interval":{"days":1},"members":[{"user":{"id":"030e767a-cb9b-11f0-8fcd-5ac0b02adf59"}}],"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:47.631Z"}],"name":"Test-Get_the_schedule_on_call_user_returns_OK_response-1764252707","time_zone":"America/New_York"},"relationships":{"teams":{"data":[{"id":"65aea9d0-941c-4607-bf8a-14fc0dac2820","type":"teams"}]}},"type":"schedules"}} - form: {} - headers: - Accept: - - application/json - Content-Type: - - application/json - id: 1 - method: POST - url: https://api.datadoghq.com/api/v2/on-call/schedules - response: - body: '{"data":{"id":"93a33505-71dc-4be4-a55d-95eb23b6b400","type":"schedules","attributes":{"name":"Test-Get_the_schedule_on_call_user_returns_OK_response-1764252707","time_zone":"America/New_York"},"relationships":{"layers":{"data":[{"id":"c9addf6a-059c-4b07-aced-a2c287fd969f","type":"layers"}]},"teams":{"data":[{"id":"65aea9d0-941c-4607-bf8a-14fc0dac2820","type":"teams"}]}}}}' - code: 201 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 201 Created -- request: - body: '' - form: {} - headers: - Accept: - - application/json - id: 2 - method: GET - url: https://api.datadoghq.com/api/v2/on-call/schedules/93a33505-71dc-4be4-a55d-95eb23b6b400/on-call - response: - body: '{"data":{"id":"030e767a-cb9b-11f0-8fcd-5ac0b02adf59-2025-11-27T09:11:48-05:00-2025-11-28T09:11:47-05:00","type":"shifts","attributes":{"end":"2025-11-28T09:11:47-05:00","start":"2025-11-27T09:11:48.47496-05:00"},"relationships":{"user":{"data":{"id":"030e767a-cb9b-11f0-8fcd-5ac0b02adf59","type":"users"}}}}}' - code: 200 - duration: 0ms - headers: - Content-Type: - - application/vnd.api+json - status: 200 OK -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 3 - method: DELETE - url: https://api.datadoghq.com/api/v2/on-call/schedules/93a33505-71dc-4be4-a55d-95eb23b6b400 - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -- request: - body: '' - form: {} - headers: - Accept: - - '*/*' - id: 4 - method: DELETE - url: https://api.datadoghq.com/api/v2/users/030e767a-cb9b-11f0-8fcd-5ac0b02adf59 - response: - body: '' - code: 204 - duration: 0ms - headers: {} - status: 204 No Content -version: 2 diff --git a/tests/scenarios/features/v2/on-call.feature b/tests/scenarios/features/v2/on-call.feature index 7bcd1d00e1b..c52e4291fc6 100644 --- a/tests/scenarios/features/v2/on-call.feature +++ b/tests/scenarios/features/v2/on-call.feature @@ -127,52 +127,52 @@ Feature: On-Call Then the response status is 200 OK @generated @skip @team:DataDog/on-call - Scenario: Get team on-call users returns "Bad Request" response - Given new "GetTeamOnCallUsers" request - And request contains "team_id" parameter from "REPLACE.ME" + Scenario: Get scheduled on-call user returns "Bad Request" response + Given new "GetScheduleOnCallUser" request + And request contains "schedule_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request @generated @skip @team:DataDog/on-call - Scenario: Get team on-call users returns "Not Found" response - Given new "GetTeamOnCallUsers" request - And request contains "team_id" parameter from "REPLACE.ME" + Scenario: Get scheduled on-call user returns "Not Found" response + Given new "GetScheduleOnCallUser" request + And request contains "schedule_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found @team:DataDog/on-call - Scenario: Get team on-call users returns "OK" response - Given new "GetTeamOnCallUsers" request + Scenario: Get scheduled on-call user returns "OK" response + Given new "GetScheduleOnCallUser" request And there is a valid "user" in the system - And there is a valid "dd_team" in the system And there is a valid "schedule" in the system - And there is a valid "escalation_policy" in the system - And there are valid "routing_rules" in the system - And request contains "team_id" parameter from "routing_rules.data.id" - And request contains "include" parameter with value "responders,escalations.responders" + And request contains "schedule_id" parameter from "schedule.data.id" When the request is sent Then the response status is 200 OK @generated @skip @team:DataDog/on-call - Scenario: Get the schedule on-call user returns "Bad Request" response - Given new "GetScheduleOnCallUser" request - And request contains "schedule_id" parameter from "REPLACE.ME" + Scenario: Get team on-call users returns "Bad Request" response + Given new "GetTeamOnCallUsers" request + And request contains "team_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 400 Bad Request @generated @skip @team:DataDog/on-call - Scenario: Get the schedule on-call user returns "Not Found" response - Given new "GetScheduleOnCallUser" request - And request contains "schedule_id" parameter from "REPLACE.ME" + Scenario: Get team on-call users returns "Not Found" response + Given new "GetTeamOnCallUsers" request + And request contains "team_id" parameter from "REPLACE.ME" When the request is sent Then the response status is 404 Not Found @team:DataDog/on-call - Scenario: Get the schedule on-call user returns "OK" response - Given new "GetScheduleOnCallUser" request + Scenario: Get team on-call users returns "OK" response + Given new "GetTeamOnCallUsers" request And there is a valid "user" in the system + And there is a valid "dd_team" in the system And there is a valid "schedule" in the system - And request contains "schedule_id" parameter from "schedule.data.id" + And there is a valid "escalation_policy" in the system + And there are valid "routing_rules" in the system + And request contains "team_id" parameter from "routing_rules.data.id" + And request contains "include" parameter with value "responders,escalations.responders" When the request is sent Then the response status is 200 OK