diff --git a/.generator/schemas/v2/openapi.yaml b/.generator/schemas/v2/openapi.yaml index c2aa6fb686..186a36cefe 100644 --- a/.generator/schemas/v2/openapi.yaml +++ b/.generator/schemas/v2/openapi.yaml @@ -85180,6 +85180,11 @@ components: description: A short name for the schedule. example: Primary On-Call type: string + tags: + description: A list of tags associated with the schedule. + items: + type: string + type: array time_zone: description: The time zone in which this schedule operates. example: America/New_York @@ -85303,6 +85308,225 @@ components: type: string x-enum-varnames: - MEMBERS + ScheduleOnCallResponderData: + description: Represents one position's (previous, current, or next) group of on-call responder shifts. Positions with no matching shift are omitted entirely from the response. + properties: + attributes: + $ref: "#/components/schemas/EscalationPolicyStepTargetConfigSchedule" + id: + description: Unique identifier of this responder group. + type: string + relationships: + $ref: "#/components/schemas/ScheduleOnCallResponderDataRelationships" + type: + $ref: "#/components/schemas/ScheduleOnCallResponderDataType" + required: + - type + type: object + ScheduleOnCallResponderDataRelationships: + description: Relationships for a single position's (previous, current, or next) responder group. + properties: + shifts: + $ref: "#/components/schemas/ScheduleOnCallResponderDataRelationshipsShifts" + type: object + ScheduleOnCallResponderDataRelationshipsShifts: + description: Defines the list of shifts satisfying this responder group's position. Multiple shifts occur when a schedule has concurrent on-call users at that position (additive schedules). + properties: + data: + description: Array of references to the shifts included in the response. + items: + $ref: "#/components/schemas/ScheduleOnCallResponderDataRelationshipsShiftsDataItems" + type: array + type: object + ScheduleOnCallResponderDataRelationshipsShiftsDataItems: + description: Represents a reference to one of the shifts satisfying this responder group's position. + properties: + id: + description: Unique identifier of the shift. + example: "00000000-0000-0000-0000-000000000000" + type: string + type: + $ref: "#/components/schemas/ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType" + required: + - type + - id + type: object + ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType: + default: shifts + description: "Indicates that the related resource is of type 'shifts'." + enum: + - shifts + example: shifts + type: string + x-enum-varnames: + - SHIFTS + ScheduleOnCallResponderDataType: + default: schedule_oncall_responder + description: Represents the resource type for a single position's (previous, current, or next) group of on-call responder shifts. + enum: + - schedule_oncall_responder + example: schedule_oncall_responder + type: string + x-enum-varnames: + - SCHEDULE_ONCALL_RESPONDER + ScheduleOnCallResponders: + description: Root object representing a schedule's on-call responders, grouped by position (previous, current, next), for a given point in time. + example: + data: + attributes: + scheduled_at: "2024-05-07T02:53:01.000000000Z" + id: "3653d3c6-0c75-11ea-ad28-fb5701eabc7d-1715054400" + relationships: + responders: + data: + - id: "3653d3c6-0c75-11ea-ad28-fb5701eabc7d-1715054400-current" + type: schedule_oncall_responder + schedule: + data: + id: 3653d3c6-0c75-11ea-ad28-fb5701eabc7d + type: schedules + type: schedule_oncall_responders + included: + - attributes: + position: current + id: "3653d3c6-0c75-11ea-ad28-fb5701eabc7d-1715054400-current" + relationships: + shifts: + data: + - id: 00000000-0000-0000-0000-000000000000 + type: shifts + type: schedule_oncall_responder + - attributes: + end: "2024-05-08T02:53:01.000000000Z" + start: "2024-05-07T02:53:01.000000000Z" + id: 00000000-0000-0000-0000-000000000000 + relationships: + user: + data: + id: 00000000-aba1-0000-0000-000000000000 + type: users + type: shifts + - attributes: + email: test@test.com + name: Test User + status: active + id: 00000000-aba1-0000-0000-000000000000 + type: users + properties: + data: + $ref: "#/components/schemas/ScheduleOnCallRespondersData" + included: + description: The `ScheduleOnCallResponders` `included`. + items: + $ref: "#/components/schemas/ScheduleOnCallRespondersIncluded" + type: array + type: object + ScheduleOnCallRespondersData: + description: The main data object representing a schedule's on-call responders lookup, including relationships and metadata. + properties: + attributes: + $ref: "#/components/schemas/ScheduleOnCallRespondersDataAttributes" + id: + description: Unique identifier of this on-call responders lookup. + type: string + relationships: + $ref: "#/components/schemas/ScheduleOnCallRespondersDataRelationships" + type: + $ref: "#/components/schemas/ScheduleOnCallRespondersDataType" + required: + - type + type: object + ScheduleOnCallRespondersDataAttributes: + description: Attributes for a schedule's on-call responders lookup. + properties: + scheduled_at: + description: The timestamp the responders were resolved at. + format: date-time + type: string + type: object + ScheduleOnCallRespondersDataRelationships: + description: Relationships for a schedule's on-call responders lookup, including the schedule and its responder groups. + properties: + responders: + $ref: "#/components/schemas/ScheduleOnCallRespondersDataRelationshipsResponders" + schedule: + $ref: "#/components/schemas/ScheduleOnCallRespondersDataRelationshipsSchedule" + type: object + ScheduleOnCallRespondersDataRelationshipsResponders: + description: Defines the list of per-position (previous, current, next) responder groups for the schedule. + properties: + data: + description: Array of references to the responder groups included in the response. + items: + $ref: "#/components/schemas/ScheduleOnCallRespondersDataRelationshipsRespondersDataItems" + type: array + type: object + ScheduleOnCallRespondersDataRelationshipsRespondersDataItems: + description: Represents a reference to one position's (previous, current, or next) responder group. + properties: + id: + description: Unique identifier of the responder group. + example: "" + type: string + type: + $ref: "#/components/schemas/ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType" + required: + - type + - id + type: object + ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType: + default: schedule_oncall_responder + description: Identifies the resource type for a responder group linked to a schedule's on-call responders lookup. + enum: + - schedule_oncall_responder + example: schedule_oncall_responder + type: string + x-enum-varnames: + - SCHEDULE_ONCALL_RESPONDER + ScheduleOnCallRespondersDataRelationshipsSchedule: + description: Defines the relationship to the schedule this on-call responders lookup was performed for. + properties: + data: + $ref: "#/components/schemas/ScheduleOnCallRespondersDataRelationshipsScheduleData" + type: object + ScheduleOnCallRespondersDataRelationshipsScheduleData: + description: Represents a reference to the schedule this on-call responders lookup was performed for. + properties: + id: + description: Unique identifier of the schedule. + example: "3653d3c6-0c75-11ea-ad28-fb5701eabc7d" + type: string + type: + $ref: "#/components/schemas/ScheduleOnCallRespondersDataRelationshipsScheduleDataType" + required: + - type + - id + type: object + ScheduleOnCallRespondersDataRelationshipsScheduleDataType: + default: schedules + description: Identifies the resource type for the schedule associated with this on-call responders lookup. + enum: + - schedules + example: schedules + type: string + x-enum-varnames: + - SCHEDULES + ScheduleOnCallRespondersDataType: + default: schedule_oncall_responders + description: Represents the resource type for a schedule's grouped on-call responders across the previous, current, and next positions. + enum: + - schedule_oncall_responders + example: schedule_oncall_responders + type: string + x-enum-varnames: + - SCHEDULE_ONCALL_RESPONDERS + ScheduleOnCallRespondersIncluded: + description: Represents a union of related resources included in the response, such as responder groups, shifts, schedules, and users. + oneOf: + - $ref: "#/components/schemas/ScheduleOnCallResponderData" + - $ref: "#/components/schemas/ShiftData" + - $ref: "#/components/schemas/ScheduleData" + - $ref: "#/components/schemas/User" ScheduleRequestDataAttributesLayersItemsMembersItems: description: |- Defines a single member within a schedule layer, including the reference to the underlying user. @@ -160309,6 +160533,100 @@ paths: operator: AND permissions: - on_call_read + /api/v2/on-call/schedules/{schedule_id}/responders: + get: + description: "Retrieves the on-call responders for the specified schedule, grouped by position (previous, current, next), at a given time. Unlike `GetScheduleOnCallUser`, this endpoint supports schedules with multiple concurrent on-call users at a position (additive schedules) by returning a list of shifts per position." + operationId: GetScheduleOnCallResponders + parameters: + - description: "Comma-separated list of included relationships to be returned. Allowed values: `schedule`, `responders`, `responders.shifts`, `responders.shifts.user`." + in: query + name: include + schema: + type: string + - description: The ID of the schedule. + in: path + name: schedule_id + required: true + schema: + example: 3653d3c6-0c75-11ea-ad28-fb5701eabc7d + type: string + - description: "Comma-separated list of positions to retrieve. Allowed values: `previous`, `current`, `next`. Defaults to `current` if omitted." + in: query + name: filter[position] + schema: + example: previous,current,next + type: string + - description: "Retrieves the on-call responders at the given timestamp in RFC3339 format (for example, `2025-05-07T02:53:01Z` or `2025-05-07T02:53:01+00:00`). When using timezone offsets with `+` or `-`, ensure proper URL encoding (`+` should be encoded as `%2B`). Defaults to the current time if omitted." + in: query + name: filter[at_ts] + schema: + example: "2025-05-07T02:53:01Z" + type: string + responses: + "200": + content: + application/json: + examples: + default: + value: + data: + attributes: + scheduled_at: "2024-05-07T02:53:01.000000000Z" + id: "3653d3c6-0c75-11ea-ad28-fb5701eabc7d-1715054400" + relationships: + responders: + data: + - id: "3653d3c6-0c75-11ea-ad28-fb5701eabc7d-1715054400-current" + type: schedule_oncall_responder + schedule: + data: + id: 3653d3c6-0c75-11ea-ad28-fb5701eabc7d + type: schedules + type: schedule_oncall_responders + included: + - attributes: + position: current + id: "3653d3c6-0c75-11ea-ad28-fb5701eabc7d-1715054400-current" + relationships: + shifts: + data: + - id: 00000000-0000-0000-0000-000000000000 + type: shifts + type: schedule_oncall_responder + - attributes: + end: "2024-05-08T02:53:01.000000000Z" + start: "2024-05-07T02:53:01.000000000Z" + id: 00000000-0000-0000-0000-000000000000 + relationships: + user: + data: + id: 00000000-aba1-0000-0000-000000000000 + type: users + type: shifts + schema: + $ref: "#/components/schemas/ScheduleOnCallResponders" + 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: [] + summary: Get on-call responders for a schedule + 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 diff --git a/docs/datadog_api_client.v2.model.rst b/docs/datadog_api_client.v2.model.rst index 2c283062c8..c8fc5b344d 100644 --- a/docs/datadog_api_client.v2.model.rst +++ b/docs/datadog_api_client.v2.model.rst @@ -36355,6 +36355,132 @@ datadog\_api\_client.v2.model.schedule\_member\_type module :members: :show-inheritance: +datadog\_api\_client.v2.model.schedule\_on\_call\_responder\_data module +------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responder_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responder\_data\_relationships module +--------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responder_data_relationships + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responder\_data\_relationships\_shifts module +----------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responder\_data\_relationships\_shifts\_data\_items module +------------------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts_data_items + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responder\_data\_relationships\_shifts\_data\_items\_type module +------------------------------------------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts_data_items_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responder\_data\_type module +------------------------------------------------------------------------------ + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responder_data_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders module +------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_data module +------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_data\_attributes module +------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_data_attributes + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_data\_relationships module +---------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_data_relationships + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_data\_relationships\_responders module +---------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_data\_relationships\_responders\_data\_items module +----------------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders_data_items + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_data\_relationships\_responders\_data\_items\_type module +----------------------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders_data_items_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_data\_relationships\_schedule module +-------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_data\_relationships\_schedule\_data module +-------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule_data + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_data\_relationships\_schedule\_data\_type module +-------------------------------------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule_data_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_data\_type module +------------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_data_type + :members: + :show-inheritance: + +datadog\_api\_client.v2.model.schedule\_on\_call\_responders\_included module +----------------------------------------------------------------------------- + +.. automodule:: datadog_api_client.v2.model.schedule_on_call_responders_included + :members: + :show-inheritance: + datadog\_api\_client.v2.model.schedule\_request\_data\_attributes\_layers\_items\_members\_items module ------------------------------------------------------------------------------------------------------- diff --git a/examples/v2/on-call/GetScheduleOnCallResponders.py b/examples/v2/on-call/GetScheduleOnCallResponders.py new file mode 100644 index 0000000000..74f403162c --- /dev/null +++ b/examples/v2/on-call/GetScheduleOnCallResponders.py @@ -0,0 +1,19 @@ +""" +Get on-call responders for a schedule returns "OK" response +""" + +from os import environ +from datadog_api_client import ApiClient, Configuration +from datadog_api_client.v2.api.on_call_api import OnCallApi + +# there is a valid "schedule" in the system +SCHEDULE_DATA_ID = environ["SCHEDULE_DATA_ID"] + +configuration = Configuration() +with ApiClient(configuration) as api_client: + api_instance = OnCallApi(api_client) + response = api_instance.get_schedule_on_call_responders( + schedule_id=SCHEDULE_DATA_ID, + ) + + print(response) diff --git a/src/datadog_api_client/v2/api/on_call_api.py b/src/datadog_api_client/v2/api/on_call_api.py index c41567de38..b08feeef54 100644 --- a/src/datadog_api_client/v2/api/on_call_api.py +++ b/src/datadog_api_client/v2/api/on_call_api.py @@ -18,6 +18,7 @@ from datadog_api_client.v2.model.schedule_create_request import ScheduleCreateRequest from datadog_api_client.v2.model.schedule_update_request import ScheduleUpdateRequest from datadog_api_client.v2.model.shift import Shift +from datadog_api_client.v2.model.schedule_on_call_responders import ScheduleOnCallResponders from datadog_api_client.v2.model.team_on_call_responders import TeamOnCallResponders from datadog_api_client.v2.model.team_routing_rules import TeamRoutingRules from datadog_api_client.v2.model.team_routing_rules_request import TeamRoutingRulesRequest @@ -331,6 +332,44 @@ def __init__(self, api_client=None): api_client=api_client, ) + self._get_schedule_on_call_responders_endpoint = _Endpoint( + settings={ + "response_type": (ScheduleOnCallResponders,), + "auth": ["apiKeyAuth", "appKeyAuth", "AuthZ"], + "endpoint_path": "/api/v2/on-call/schedules/{schedule_id}/responders", + "operation_id": "get_schedule_on_call_responders", + "http_method": "GET", + "version": "v2", + }, + params_map={ + "include": { + "openapi_types": (str,), + "attribute": "include", + "location": "query", + }, + "schedule_id": { + "required": True, + "openapi_types": (str,), + "attribute": "schedule_id", + "location": "path", + }, + "filter_position": { + "openapi_types": (str,), + "attribute": "filter[position]", + "location": "query", + }, + "filter_at_ts": { + "openapi_types": (str,), + "attribute": "filter[at_ts]", + "location": "query", + }, + }, + headers_map={ + "accept": ["application/json"], + }, + api_client=api_client, + ) + self._get_schedule_on_call_user_endpoint = _Endpoint( settings={ "response_type": (Shift,), @@ -874,6 +913,42 @@ def get_on_call_team_routing_rules( return self._get_on_call_team_routing_rules_endpoint.call_with_http_info(**kwargs) + def get_schedule_on_call_responders( + self, + schedule_id: str, + *, + include: Union[str, UnsetType] = unset, + filter_position: Union[str, UnsetType] = unset, + filter_at_ts: Union[str, UnsetType] = unset, + ) -> ScheduleOnCallResponders: + """Get on-call responders for a schedule. + + Retrieves the on-call responders for the specified schedule, grouped by position (previous, current, next), at a given time. Unlike ``GetScheduleOnCallUser`` , this endpoint supports schedules with multiple concurrent on-call users at a position (additive schedules) by returning a list of shifts per position. + + :param schedule_id: The ID of the schedule. + :type schedule_id: str + :param include: Comma-separated list of included relationships to be returned. Allowed values: ``schedule`` , ``responders`` , ``responders.shifts`` , ``responders.shifts.user``. + :type include: str, optional + :param filter_position: Comma-separated list of positions to retrieve. Allowed values: ``previous`` , ``current`` , ``next``. Defaults to ``current`` if omitted. + :type filter_position: str, optional + :param filter_at_ts: Retrieves the on-call responders at the given timestamp in RFC3339 format (for example, ``2025-05-07T02:53:01Z`` or ``2025-05-07T02:53:01+00:00`` ). When using timezone offsets with ``+`` or ``-`` , ensure proper URL encoding ( ``+`` should be encoded as ``%2B`` ). Defaults to the current time if omitted. + :type filter_at_ts: str, optional + :rtype: ScheduleOnCallResponders + """ + kwargs: Dict[str, Any] = {} + if include is not unset: + kwargs["include"] = include + + kwargs["schedule_id"] = schedule_id + + if filter_position is not unset: + kwargs["filter_position"] = filter_position + + if filter_at_ts is not unset: + kwargs["filter_at_ts"] = filter_at_ts + + return self._get_schedule_on_call_responders_endpoint.call_with_http_info(**kwargs) + def get_schedule_on_call_user( self, schedule_id: str, diff --git a/src/datadog_api_client/v2/model/schedule_data_attributes.py b/src/datadog_api_client/v2/model/schedule_data_attributes.py index 210b97a10b..2824a83d79 100644 --- a/src/datadog_api_client/v2/model/schedule_data_attributes.py +++ b/src/datadog_api_client/v2/model/schedule_data_attributes.py @@ -3,7 +3,7 @@ # Copyright 2019-Present Datadog, Inc. from __future__ import annotations -from typing import Union +from typing import List, Union from datadog_api_client.model_utils import ( ModelNormal, @@ -18,26 +18,39 @@ class ScheduleDataAttributes(ModelNormal): def openapi_types(_): return { "name": (str,), + "tags": ([str],), "time_zone": (str,), } attribute_map = { "name": "name", + "tags": "tags", "time_zone": "time_zone", } - def __init__(self_, name: Union[str, UnsetType] = unset, time_zone: Union[str, UnsetType] = unset, **kwargs): + def __init__( + self_, + name: Union[str, UnsetType] = unset, + tags: Union[List[str], UnsetType] = unset, + time_zone: Union[str, UnsetType] = unset, + **kwargs, + ): """ Provides core properties of a schedule object such as its name and time zone. :param name: A short name for the schedule. :type name: str, optional + :param tags: A list of tags associated with the schedule. + :type tags: [str], optional + :param time_zone: The time zone in which this schedule operates. :type time_zone: str, optional """ if name is not unset: kwargs["name"] = name + if tags is not unset: + kwargs["tags"] = tags if time_zone is not unset: kwargs["time_zone"] = time_zone super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responder_data.py b/src/datadog_api_client/v2/model/schedule_on_call_responder_data.py new file mode 100644 index 0000000000..f101f8e678 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responder_data.py @@ -0,0 +1,82 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.escalation_policy_step_target_config_schedule import ( + EscalationPolicyStepTargetConfigSchedule, + ) + from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships import ( + ScheduleOnCallResponderDataRelationships, + ) + from datadog_api_client.v2.model.schedule_on_call_responder_data_type import ScheduleOnCallResponderDataType + + +class ScheduleOnCallResponderData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.escalation_policy_step_target_config_schedule import ( + EscalationPolicyStepTargetConfigSchedule, + ) + from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships import ( + ScheduleOnCallResponderDataRelationships, + ) + from datadog_api_client.v2.model.schedule_on_call_responder_data_type import ScheduleOnCallResponderDataType + + return { + "attributes": (EscalationPolicyStepTargetConfigSchedule,), + "id": (str,), + "relationships": (ScheduleOnCallResponderDataRelationships,), + "type": (ScheduleOnCallResponderDataType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "relationships": "relationships", + "type": "type", + } + + def __init__( + self_, + type: ScheduleOnCallResponderDataType, + attributes: Union[EscalationPolicyStepTargetConfigSchedule, UnsetType] = unset, + id: Union[str, UnsetType] = unset, + relationships: Union[ScheduleOnCallResponderDataRelationships, UnsetType] = unset, + **kwargs, + ): + """ + Represents one position's (previous, current, or next) group of on-call responder shifts. Positions with no matching shift are omitted entirely from the response. + + :param attributes: Schedule-specific configuration for an escalation target. + :type attributes: EscalationPolicyStepTargetConfigSchedule, optional + + :param id: Unique identifier of this responder group. + :type id: str, optional + + :param relationships: Relationships for a single position's (previous, current, or next) responder group. + :type relationships: ScheduleOnCallResponderDataRelationships, optional + + :param type: Represents the resource type for a single position's (previous, current, or next) group of on-call responder shifts. + :type type: ScheduleOnCallResponderDataType + """ + if attributes is not unset: + kwargs["attributes"] = attributes + if id is not unset: + kwargs["id"] = id + if relationships is not unset: + kwargs["relationships"] = relationships + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships.py b/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships.py new file mode 100644 index 0000000000..31352626e8 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships.py @@ -0,0 +1,46 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts import ( + ScheduleOnCallResponderDataRelationshipsShifts, + ) + + +class ScheduleOnCallResponderDataRelationships(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts import ( + ScheduleOnCallResponderDataRelationshipsShifts, + ) + + return { + "shifts": (ScheduleOnCallResponderDataRelationshipsShifts,), + } + + attribute_map = { + "shifts": "shifts", + } + + def __init__(self_, shifts: Union[ScheduleOnCallResponderDataRelationshipsShifts, UnsetType] = unset, **kwargs): + """ + Relationships for a single position's (previous, current, or next) responder group. + + :param shifts: Defines the list of shifts satisfying this responder group's position. Multiple shifts occur when a schedule has concurrent on-call users at that position (additive schedules). + :type shifts: ScheduleOnCallResponderDataRelationshipsShifts, optional + """ + if shifts is not unset: + kwargs["shifts"] = shifts + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships_shifts.py b/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships_shifts.py new file mode 100644 index 0000000000..77bfe85f5d --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships_shifts.py @@ -0,0 +1,48 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts_data_items import ( + ScheduleOnCallResponderDataRelationshipsShiftsDataItems, + ) + + +class ScheduleOnCallResponderDataRelationshipsShifts(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts_data_items import ( + ScheduleOnCallResponderDataRelationshipsShiftsDataItems, + ) + + return { + "data": ([ScheduleOnCallResponderDataRelationshipsShiftsDataItems],), + } + + attribute_map = { + "data": "data", + } + + def __init__( + self_, data: Union[List[ScheduleOnCallResponderDataRelationshipsShiftsDataItems], UnsetType] = unset, **kwargs + ): + """ + Defines the list of shifts satisfying this responder group's position. Multiple shifts occur when a schedule has concurrent on-call users at that position (additive schedules). + + :param data: Array of references to the shifts included in the response. + :type data: [ScheduleOnCallResponderDataRelationshipsShiftsDataItems], optional + """ + if data is not unset: + kwargs["data"] = data + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships_shifts_data_items.py b/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships_shifts_data_items.py new file mode 100644 index 0000000000..b07e2807c1 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships_shifts_data_items.py @@ -0,0 +1,50 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts_data_items_type import ( + ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType, + ) + + +class ScheduleOnCallResponderDataRelationshipsShiftsDataItems(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts_data_items_type import ( + ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType, + ) + + return { + "id": (str,), + "type": (ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: str, type: ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType, **kwargs): + """ + Represents a reference to one of the shifts satisfying this responder group's position. + + :param id: Unique identifier of the shift. + :type id: str + + :param type: Indicates that the related resource is of type 'shifts'. + :type type: ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships_shifts_data_items_type.py b/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships_shifts_data_items_type.py new file mode 100644 index 0000000000..851b108c4f --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responder_data_relationships_shifts_data_items_type.py @@ -0,0 +1,37 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType(ModelSimple): + """ + Indicates that the related resource is of type 'shifts'. + + :param value: If omitted defaults to "shifts". Must be one of ["shifts"]. + :type value: str + """ + + allowed_values = { + "shifts", + } + SHIFTS: ClassVar["ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType.SHIFTS = ( + ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType("shifts") +) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responder_data_type.py b/src/datadog_api_client/v2/model/schedule_on_call_responder_data_type.py new file mode 100644 index 0000000000..40def86058 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responder_data_type.py @@ -0,0 +1,35 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ScheduleOnCallResponderDataType(ModelSimple): + """ + Represents the resource type for a single position's (previous, current, or next) group of on-call responder shifts. + + :param value: If omitted defaults to "schedule_oncall_responder". Must be one of ["schedule_oncall_responder"]. + :type value: str + """ + + allowed_values = { + "schedule_oncall_responder", + } + SCHEDULE_ONCALL_RESPONDER: ClassVar["ScheduleOnCallResponderDataType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ScheduleOnCallResponderDataType.SCHEDULE_ONCALL_RESPONDER = ScheduleOnCallResponderDataType("schedule_oncall_responder") diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders.py b/src/datadog_api_client/v2/model/schedule_on_call_responders.py new file mode 100644 index 0000000000..3dd991063a --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders.py @@ -0,0 +1,63 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.schedule_on_call_responders_data import ScheduleOnCallRespondersData + from datadog_api_client.v2.model.schedule_on_call_responders_included import ScheduleOnCallRespondersIncluded + from datadog_api_client.v2.model.schedule_on_call_responder_data import ScheduleOnCallResponderData + from datadog_api_client.v2.model.shift_data import ShiftData + from datadog_api_client.v2.model.schedule_data import ScheduleData + from datadog_api_client.v2.model.user import User + + +class ScheduleOnCallResponders(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.schedule_on_call_responders_data import ScheduleOnCallRespondersData + from datadog_api_client.v2.model.schedule_on_call_responders_included import ScheduleOnCallRespondersIncluded + + return { + "data": (ScheduleOnCallRespondersData,), + "included": ([ScheduleOnCallRespondersIncluded],), + } + + attribute_map = { + "data": "data", + "included": "included", + } + + def __init__( + self_, + data: Union[ScheduleOnCallRespondersData, UnsetType] = unset, + included: Union[ + List[Union[ScheduleOnCallRespondersIncluded, ScheduleOnCallResponderData, ShiftData, ScheduleData, User]], + UnsetType, + ] = unset, + **kwargs, + ): + """ + Root object representing a schedule's on-call responders, grouped by position (previous, current, next), for a given point in time. + + :param data: The main data object representing a schedule's on-call responders lookup, including relationships and metadata. + :type data: ScheduleOnCallRespondersData, optional + + :param included: The ``ScheduleOnCallResponders`` ``included``. + :type included: [ScheduleOnCallRespondersIncluded], optional + """ + if data is not unset: + kwargs["data"] = data + if included is not unset: + kwargs["included"] = included + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_data.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_data.py new file mode 100644 index 0000000000..afd65e5150 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_data.py @@ -0,0 +1,82 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.schedule_on_call_responders_data_attributes import ( + ScheduleOnCallRespondersDataAttributes, + ) + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships import ( + ScheduleOnCallRespondersDataRelationships, + ) + from datadog_api_client.v2.model.schedule_on_call_responders_data_type import ScheduleOnCallRespondersDataType + + +class ScheduleOnCallRespondersData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.schedule_on_call_responders_data_attributes import ( + ScheduleOnCallRespondersDataAttributes, + ) + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships import ( + ScheduleOnCallRespondersDataRelationships, + ) + from datadog_api_client.v2.model.schedule_on_call_responders_data_type import ScheduleOnCallRespondersDataType + + return { + "attributes": (ScheduleOnCallRespondersDataAttributes,), + "id": (str,), + "relationships": (ScheduleOnCallRespondersDataRelationships,), + "type": (ScheduleOnCallRespondersDataType,), + } + + attribute_map = { + "attributes": "attributes", + "id": "id", + "relationships": "relationships", + "type": "type", + } + + def __init__( + self_, + type: ScheduleOnCallRespondersDataType, + attributes: Union[ScheduleOnCallRespondersDataAttributes, UnsetType] = unset, + id: Union[str, UnsetType] = unset, + relationships: Union[ScheduleOnCallRespondersDataRelationships, UnsetType] = unset, + **kwargs, + ): + """ + The main data object representing a schedule's on-call responders lookup, including relationships and metadata. + + :param attributes: Attributes for a schedule's on-call responders lookup. + :type attributes: ScheduleOnCallRespondersDataAttributes, optional + + :param id: Unique identifier of this on-call responders lookup. + :type id: str, optional + + :param relationships: Relationships for a schedule's on-call responders lookup, including the schedule and its responder groups. + :type relationships: ScheduleOnCallRespondersDataRelationships, optional + + :param type: Represents the resource type for a schedule's grouped on-call responders across the previous, current, and next positions. + :type type: ScheduleOnCallRespondersDataType + """ + if attributes is not unset: + kwargs["attributes"] = attributes + if id is not unset: + kwargs["id"] = id + if relationships is not unset: + kwargs["relationships"] = relationships + super().__init__(kwargs) + + self_.type = type diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_data_attributes.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_attributes.py new file mode 100644 index 0000000000..886f047c3b --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_attributes.py @@ -0,0 +1,37 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + datetime, + unset, + UnsetType, +) + + +class ScheduleOnCallRespondersDataAttributes(ModelNormal): + @cached_property + def openapi_types(_): + return { + "scheduled_at": (datetime,), + } + + attribute_map = { + "scheduled_at": "scheduled_at", + } + + def __init__(self_, scheduled_at: Union[datetime, UnsetType] = unset, **kwargs): + """ + Attributes for a schedule's on-call responders lookup. + + :param scheduled_at: The timestamp the responders were resolved at. + :type scheduled_at: datetime, optional + """ + if scheduled_at is not unset: + kwargs["scheduled_at"] = scheduled_at + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships.py new file mode 100644 index 0000000000..aa79f44db7 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships.py @@ -0,0 +1,64 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders import ( + ScheduleOnCallRespondersDataRelationshipsResponders, + ) + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule import ( + ScheduleOnCallRespondersDataRelationshipsSchedule, + ) + + +class ScheduleOnCallRespondersDataRelationships(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders import ( + ScheduleOnCallRespondersDataRelationshipsResponders, + ) + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule import ( + ScheduleOnCallRespondersDataRelationshipsSchedule, + ) + + return { + "responders": (ScheduleOnCallRespondersDataRelationshipsResponders,), + "schedule": (ScheduleOnCallRespondersDataRelationshipsSchedule,), + } + + attribute_map = { + "responders": "responders", + "schedule": "schedule", + } + + def __init__( + self_, + responders: Union[ScheduleOnCallRespondersDataRelationshipsResponders, UnsetType] = unset, + schedule: Union[ScheduleOnCallRespondersDataRelationshipsSchedule, UnsetType] = unset, + **kwargs, + ): + """ + Relationships for a schedule's on-call responders lookup, including the schedule and its responder groups. + + :param responders: Defines the list of per-position (previous, current, next) responder groups for the schedule. + :type responders: ScheduleOnCallRespondersDataRelationshipsResponders, optional + + :param schedule: Defines the relationship to the schedule this on-call responders lookup was performed for. + :type schedule: ScheduleOnCallRespondersDataRelationshipsSchedule, optional + """ + if responders is not unset: + kwargs["responders"] = responders + if schedule is not unset: + kwargs["schedule"] = schedule + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_responders.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_responders.py new file mode 100644 index 0000000000..892088df91 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_responders.py @@ -0,0 +1,50 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import List, Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders_data_items import ( + ScheduleOnCallRespondersDataRelationshipsRespondersDataItems, + ) + + +class ScheduleOnCallRespondersDataRelationshipsResponders(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders_data_items import ( + ScheduleOnCallRespondersDataRelationshipsRespondersDataItems, + ) + + return { + "data": ([ScheduleOnCallRespondersDataRelationshipsRespondersDataItems],), + } + + attribute_map = { + "data": "data", + } + + def __init__( + self_, + data: Union[List[ScheduleOnCallRespondersDataRelationshipsRespondersDataItems], UnsetType] = unset, + **kwargs, + ): + """ + Defines the list of per-position (previous, current, next) responder groups for the schedule. + + :param data: Array of references to the responder groups included in the response. + :type data: [ScheduleOnCallRespondersDataRelationshipsRespondersDataItems], optional + """ + if data is not unset: + kwargs["data"] = data + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_responders_data_items.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_responders_data_items.py new file mode 100644 index 0000000000..a8162dca9c --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_responders_data_items.py @@ -0,0 +1,50 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders_data_items_type import ( + ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType, + ) + + +class ScheduleOnCallRespondersDataRelationshipsRespondersDataItems(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders_data_items_type import ( + ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType, + ) + + return { + "id": (str,), + "type": (ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: str, type: ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType, **kwargs): + """ + Represents a reference to one position's (previous, current, or next) responder group. + + :param id: Unique identifier of the responder group. + :type id: str + + :param type: Identifies the resource type for a responder group linked to a schedule's on-call responders lookup. + :type type: ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_responders_data_items_type.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_responders_data_items_type.py new file mode 100644 index 0000000000..07e4f8dd11 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_responders_data_items_type.py @@ -0,0 +1,37 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType(ModelSimple): + """ + Identifies the resource type for a responder group linked to a schedule's on-call responders lookup. + + :param value: If omitted defaults to "schedule_oncall_responder". Must be one of ["schedule_oncall_responder"]. + :type value: str + """ + + allowed_values = { + "schedule_oncall_responder", + } + SCHEDULE_ONCALL_RESPONDER: ClassVar["ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType.SCHEDULE_ONCALL_RESPONDER = ( + ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType("schedule_oncall_responder") +) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_schedule.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_schedule.py new file mode 100644 index 0000000000..f408cfdd13 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_schedule.py @@ -0,0 +1,48 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import Union, TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, + unset, + UnsetType, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule_data import ( + ScheduleOnCallRespondersDataRelationshipsScheduleData, + ) + + +class ScheduleOnCallRespondersDataRelationshipsSchedule(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule_data import ( + ScheduleOnCallRespondersDataRelationshipsScheduleData, + ) + + return { + "data": (ScheduleOnCallRespondersDataRelationshipsScheduleData,), + } + + attribute_map = { + "data": "data", + } + + def __init__( + self_, data: Union[ScheduleOnCallRespondersDataRelationshipsScheduleData, UnsetType] = unset, **kwargs + ): + """ + Defines the relationship to the schedule this on-call responders lookup was performed for. + + :param data: Represents a reference to the schedule this on-call responders lookup was performed for. + :type data: ScheduleOnCallRespondersDataRelationshipsScheduleData, optional + """ + if data is not unset: + kwargs["data"] = data + super().__init__(kwargs) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_schedule_data.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_schedule_data.py new file mode 100644 index 0000000000..f2cfbfe35b --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_schedule_data.py @@ -0,0 +1,50 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + +from typing import TYPE_CHECKING + +from datadog_api_client.model_utils import ( + ModelNormal, + cached_property, +) + + +if TYPE_CHECKING: + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule_data_type import ( + ScheduleOnCallRespondersDataRelationshipsScheduleDataType, + ) + + +class ScheduleOnCallRespondersDataRelationshipsScheduleData(ModelNormal): + @cached_property + def openapi_types(_): + from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule_data_type import ( + ScheduleOnCallRespondersDataRelationshipsScheduleDataType, + ) + + return { + "id": (str,), + "type": (ScheduleOnCallRespondersDataRelationshipsScheduleDataType,), + } + + attribute_map = { + "id": "id", + "type": "type", + } + + def __init__(self_, id: str, type: ScheduleOnCallRespondersDataRelationshipsScheduleDataType, **kwargs): + """ + Represents a reference to the schedule this on-call responders lookup was performed for. + + :param id: Unique identifier of the schedule. + :type id: str + + :param type: Identifies the resource type for the schedule associated with this on-call responders lookup. + :type type: ScheduleOnCallRespondersDataRelationshipsScheduleDataType + """ + super().__init__(kwargs) + + self_.id = id + self_.type = type diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_schedule_data_type.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_schedule_data_type.py new file mode 100644 index 0000000000..c7d797a484 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_relationships_schedule_data_type.py @@ -0,0 +1,37 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ScheduleOnCallRespondersDataRelationshipsScheduleDataType(ModelSimple): + """ + Identifies the resource type for the schedule associated with this on-call responders lookup. + + :param value: If omitted defaults to "schedules". Must be one of ["schedules"]. + :type value: str + """ + + allowed_values = { + "schedules", + } + SCHEDULES: ClassVar["ScheduleOnCallRespondersDataRelationshipsScheduleDataType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ScheduleOnCallRespondersDataRelationshipsScheduleDataType.SCHEDULES = ( + ScheduleOnCallRespondersDataRelationshipsScheduleDataType("schedules") +) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_data_type.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_type.py new file mode 100644 index 0000000000..81ca88d4f0 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_data_type.py @@ -0,0 +1,37 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelSimple, + cached_property, +) + +from typing import ClassVar + + +class ScheduleOnCallRespondersDataType(ModelSimple): + """ + Represents the resource type for a schedule's grouped on-call responders across the previous, current, and next positions. + + :param value: If omitted defaults to "schedule_oncall_responders". Must be one of ["schedule_oncall_responders"]. + :type value: str + """ + + allowed_values = { + "schedule_oncall_responders", + } + SCHEDULE_ONCALL_RESPONDERS: ClassVar["ScheduleOnCallRespondersDataType"] + + @cached_property + def openapi_types(_): + return { + "value": (str,), + } + + +ScheduleOnCallRespondersDataType.SCHEDULE_ONCALL_RESPONDERS = ScheduleOnCallRespondersDataType( + "schedule_oncall_responders" +) diff --git a/src/datadog_api_client/v2/model/schedule_on_call_responders_included.py b/src/datadog_api_client/v2/model/schedule_on_call_responders_included.py new file mode 100644 index 0000000000..da6e92adf6 --- /dev/null +++ b/src/datadog_api_client/v2/model/schedule_on_call_responders_included.py @@ -0,0 +1,53 @@ +# 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 2019-Present Datadog, Inc. +from __future__ import annotations + + +from datadog_api_client.model_utils import ( + ModelComposed, + cached_property, +) + + +class ScheduleOnCallRespondersIncluded(ModelComposed): + def __init__(self, **kwargs): + """ + Represents a union of related resources included in the response, such as responder groups, shifts, schedules, and users. + + :param attributes: Schedule-specific configuration for an escalation target. + :type attributes: EscalationPolicyStepTargetConfigSchedule, optional + + :param id: Unique identifier of this responder group. + :type id: str, optional + + :param relationships: Relationships for a single position's (previous, current, or next) responder group. + :type relationships: ScheduleOnCallResponderDataRelationships, optional + + :param type: Represents the resource type for a single position's (previous, current, or next) group of on-call responder shifts. + :type type: ScheduleOnCallResponderDataType + """ + super().__init__(kwargs) + + @cached_property + def _composed_schemas(_): + # we need this here to make our import statements work + # we must store _composed_schemas in here so the code is only run + # when we invoke this method. If we kept this at the class + # level we would get an error because the class level + # code would be run when this module is imported, and these composed + # classes don't exist yet because their module has not finished + # loading + from datadog_api_client.v2.model.schedule_on_call_responder_data import ScheduleOnCallResponderData + from datadog_api_client.v2.model.shift_data import ShiftData + from datadog_api_client.v2.model.schedule_data import ScheduleData + from datadog_api_client.v2.model.user import User + + return { + "oneOf": [ + ScheduleOnCallResponderData, + ShiftData, + ScheduleData, + User, + ], + } diff --git a/src/datadog_api_client/v2/models/__init__.py b/src/datadog_api_client/v2/models/__init__.py index 07daae87cb..80647101ca 100644 --- a/src/datadog_api_client/v2/models/__init__.py +++ b/src/datadog_api_client/v2/models/__init__.py @@ -7222,6 +7222,48 @@ ScheduleMemberRelationshipsUserDataType, ) from datadog_api_client.v2.model.schedule_member_type import ScheduleMemberType +from datadog_api_client.v2.model.schedule_on_call_responder_data import ScheduleOnCallResponderData +from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships import ( + ScheduleOnCallResponderDataRelationships, +) +from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts import ( + ScheduleOnCallResponderDataRelationshipsShifts, +) +from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts_data_items import ( + ScheduleOnCallResponderDataRelationshipsShiftsDataItems, +) +from datadog_api_client.v2.model.schedule_on_call_responder_data_relationships_shifts_data_items_type import ( + ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType, +) +from datadog_api_client.v2.model.schedule_on_call_responder_data_type import ScheduleOnCallResponderDataType +from datadog_api_client.v2.model.schedule_on_call_responders import ScheduleOnCallResponders +from datadog_api_client.v2.model.schedule_on_call_responders_data import ScheduleOnCallRespondersData +from datadog_api_client.v2.model.schedule_on_call_responders_data_attributes import ( + ScheduleOnCallRespondersDataAttributes, +) +from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships import ( + ScheduleOnCallRespondersDataRelationships, +) +from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders import ( + ScheduleOnCallRespondersDataRelationshipsResponders, +) +from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders_data_items import ( + ScheduleOnCallRespondersDataRelationshipsRespondersDataItems, +) +from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_responders_data_items_type import ( + ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType, +) +from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule import ( + ScheduleOnCallRespondersDataRelationshipsSchedule, +) +from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule_data import ( + ScheduleOnCallRespondersDataRelationshipsScheduleData, +) +from datadog_api_client.v2.model.schedule_on_call_responders_data_relationships_schedule_data_type import ( + ScheduleOnCallRespondersDataRelationshipsScheduleDataType, +) +from datadog_api_client.v2.model.schedule_on_call_responders_data_type import ScheduleOnCallRespondersDataType +from datadog_api_client.v2.model.schedule_on_call_responders_included import ScheduleOnCallRespondersIncluded from datadog_api_client.v2.model.schedule_request_data_attributes_layers_items_members_items import ( ScheduleRequestDataAttributesLayersItemsMembersItems, ) @@ -14880,6 +14922,24 @@ "ScheduleMemberRelationshipsUserData", "ScheduleMemberRelationshipsUserDataType", "ScheduleMemberType", + "ScheduleOnCallResponderData", + "ScheduleOnCallResponderDataRelationships", + "ScheduleOnCallResponderDataRelationshipsShifts", + "ScheduleOnCallResponderDataRelationshipsShiftsDataItems", + "ScheduleOnCallResponderDataRelationshipsShiftsDataItemsType", + "ScheduleOnCallResponderDataType", + "ScheduleOnCallResponders", + "ScheduleOnCallRespondersData", + "ScheduleOnCallRespondersDataAttributes", + "ScheduleOnCallRespondersDataRelationships", + "ScheduleOnCallRespondersDataRelationshipsResponders", + "ScheduleOnCallRespondersDataRelationshipsRespondersDataItems", + "ScheduleOnCallRespondersDataRelationshipsRespondersDataItemsType", + "ScheduleOnCallRespondersDataRelationshipsSchedule", + "ScheduleOnCallRespondersDataRelationshipsScheduleData", + "ScheduleOnCallRespondersDataRelationshipsScheduleDataType", + "ScheduleOnCallRespondersDataType", + "ScheduleOnCallRespondersIncluded", "ScheduleRequestDataAttributesLayersItemsMembersItems", "ScheduleRequestDataAttributesLayersItemsMembersItemsUser", "ScheduleTarget", diff --git a/tests/v2/cassettes/test_scenarios/test_get_oncall_responders_for_a_schedule_returns_ok_response.frozen b/tests/v2/cassettes/test_scenarios/test_get_oncall_responders_for_a_schedule_returns_ok_response.frozen new file mode 100644 index 0000000000..474884360e --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_oncall_responders_for_a_schedule_returns_ok_response.frozen @@ -0,0 +1 @@ +2026-07-10T09:31:37.503Z \ No newline at end of file diff --git a/tests/v2/cassettes/test_scenarios/test_get_oncall_responders_for_a_schedule_returns_ok_response.yaml b/tests/v2/cassettes/test_scenarios/test_get_oncall_responders_for_a_schedule_returns_ok_response.yaml new file mode 100644 index 0000000000..03303de39f --- /dev/null +++ b/tests/v2/cassettes/test_scenarios/test_get_oncall_responders_for_a_schedule_returns_ok_response.yaml @@ -0,0 +1,87 @@ +interactions: +- request: + body: '{"data":{"attributes":{"email":"Test-Get_on_call_responders_for_a_schedule_returns_OK_response-1783675897@datadoghq.com","title":"user + title"},"type":"users"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/users + response: + body: + string: '{"data":{"type":"users","id":"7f1b523e-fe13-4917-8519-6dd314ef17c0","attributes":{"uuid":"7f1b523e-fe13-4917-8519-6dd314ef17c0","name":null,"handle":"test-get_on_call_responders_for_a_schedule_returns_ok_response-1783675897@datadoghq.com","created_at":"2026-07-10T09:31:38.042683+00:00","modified_at":"2026-07-10T09:31:38.042683+00:00","email":"test-get_on_call_responders_for_a_schedule_returns_ok_response-1783675897@datadoghq.com","icon":"https://secure.gravatar.com/avatar/22b76633087bc3ee4427cc67e8466d5e?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"}}}}} + + ' + headers: + content-type: + - application/json + status: + code: 201 + message: Created +- request: + body: '{"data":{"attributes":{"layers":[{"effective_date":"2026-06-30T09:31:37.503Z","end_date":"2026-07-20T09:31:37.503Z","interval":{"days":1},"members":[{"user":{"id":"7f1b523e-fe13-4917-8519-6dd314ef17c0"}}],"name":"Layer + 1","restrictions":[{"end_day":"friday","end_time":"17:00:00","start_day":"monday","start_time":"09:00:00"}],"rotation_start":"2026-07-05T09:31:37.503Z"}],"name":"Test-Get_on_call_responders_for_a_schedule_returns_OK_response-1783675897","time_zone":"America/New_York"},"relationships":{"teams":{"data":[{"id":"65aea9d0-941c-4607-bf8a-14fc0dac2820","type":"teams"}]}},"type":"schedules"}}' + headers: + accept: + - application/json + content-type: + - application/json + method: POST + uri: https://api.datadoghq.com/api/v2/on-call/schedules + response: + body: + string: '{"data":{"id":"23545b48-fa23-4ea9-a331-3a38f81195cd","type":"schedules","attributes":{"name":"Test-Get_on_call_responders_for_a_schedule_returns_OK_response-1783675897","tags":[],"time_zone":"America/New_York"},"relationships":{"layers":{"data":[{"id":"03edf431-b1a6-418a-965e-9df50275dc7e","type":"layers"}]},"teams":{"data":[{"id":"65aea9d0-941c-4607-bf8a-14fc0dac2820","type":"teams"}]}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 201 + message: Created +- request: + body: null + headers: + accept: + - application/json + method: GET + uri: https://api.datadoghq.com/api/v2/on-call/schedules/23545b48-fa23-4ea9-a331-3a38f81195cd/responders + response: + body: + string: '{"data":{"id":"23545b48-fa23-4ea9-a331-3a38f81195cd-1783675898","type":"schedule_oncall_responders","attributes":{"scheduled_at":"2026-07-10T09:31:38.803561233Z"},"relationships":{"responders":{"data":[{"id":"23545b48-fa23-4ea9-a331-3a38f81195cd-1783675898-current","type":"schedule_oncall_responder"}]},"schedule":{"data":{"id":"23545b48-fa23-4ea9-a331-3a38f81195cd","type":"schedules"}}}}}' + headers: + content-type: + - application/vnd.api+json + status: + code: 200 + message: OK +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/on-call/schedules/23545b48-fa23-4ea9-a331-3a38f81195cd + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +- request: + body: null + headers: + accept: + - '*/*' + method: DELETE + uri: https://api.datadoghq.com/api/v2/users/7f1b523e-fe13-4917-8519-6dd314ef17c0 + response: + body: + string: '' + headers: {} + status: + code: 204 + message: No Content +version: 1 diff --git a/tests/v2/features/on-call.feature b/tests/v2/features/on-call.feature index a4ea9a7c4f..208eca3cb9 100644 --- a/tests/v2/features/on-call.feature +++ b/tests/v2/features/on-call.feature @@ -290,6 +290,29 @@ Feature: On-Call And the response "data.attributes.category" is equal to "high_urgency" And the response "included" has length 1 + @generated @skip @team:DataDog/on-call + Scenario: Get on-call responders for a schedule returns "Bad Request" response + Given new "GetScheduleOnCallResponders" 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 on-call responders for a schedule returns "Not Found" response + Given new "GetScheduleOnCallResponders" 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 on-call responders for a schedule returns "OK" response + Given new "GetScheduleOnCallResponders" request + And there is a valid "user" in the system + And there is a valid "schedule" in the system + 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 scheduled on-call user returns "Bad Request" response Given new "GetScheduleOnCallUser" request diff --git a/tests/v2/features/undo.json b/tests/v2/features/undo.json index 1eaba52ee9..85b5782787 100644 --- a/tests/v2/features/undo.json +++ b/tests/v2/features/undo.json @@ -5600,6 +5600,12 @@ "type": "safe" } }, + "GetScheduleOnCallResponders": { + "tag": "On-Call", + "undo": { + "type": "safe" + } + }, "GetTeamOnCallUsers": { "tag": "On-Call", "undo": {