From 465bc85c178fd521ab07d70132827ee12db53222 Mon Sep 17 00:00:00 2001 From: nlathia Date: Wed, 17 Jun 2026 09:18:58 +0100 Subject: [PATCH] add traffic group exclusion endpoints: POST/DELETE /traffic-groups/:id/exclusions --- .../_traffic_group_exclusion_create.py | 26 ++++++++++++++ .../_traffic_group_exclusion_delete.py | 7 ++++ src/gradient_labs/client.py | 34 +++++++++++++++++++ 3 files changed, 67 insertions(+) create mode 100644 src/gradient_labs/_traffic_group_exclusion_create.py create mode 100644 src/gradient_labs/_traffic_group_exclusion_delete.py diff --git a/src/gradient_labs/_traffic_group_exclusion_create.py b/src/gradient_labs/_traffic_group_exclusion_create.py new file mode 100644 index 0000000..a51d231 --- /dev/null +++ b/src/gradient_labs/_traffic_group_exclusion_create.py @@ -0,0 +1,26 @@ +from dataclasses import dataclass +from dataclasses_json import dataclass_json + +from ._http_client import HttpClient +from .traffic_group import TrafficGroupTarget + + +@dataclass_json +@dataclass(frozen=True) +class TrafficGroupExclusionCreateParams: + target_type: str + target_id: str + + +def create_traffic_group_exclusion( + *, + client: HttpClient, + group_id: str, + params: TrafficGroupExclusionCreateParams, +) -> TrafficGroupTarget: + body = { + "target_type": params.target_type, + "target_id": params.target_id, + } + rsp = client.post(path=f"traffic-groups/{group_id}/exclusions", body=body) + return TrafficGroupTarget.from_dict(rsp) diff --git a/src/gradient_labs/_traffic_group_exclusion_delete.py b/src/gradient_labs/_traffic_group_exclusion_delete.py new file mode 100644 index 0000000..cee281d --- /dev/null +++ b/src/gradient_labs/_traffic_group_exclusion_delete.py @@ -0,0 +1,7 @@ +from ._http_client import HttpClient + + +def delete_traffic_group_exclusion( + *, client: HttpClient, group_id: str, target_id: str +) -> None: + client.delete(path=f"traffic-groups/{group_id}/exclusions/{target_id}", body={}) diff --git a/src/gradient_labs/client.py b/src/gradient_labs/client.py index 69a76da..a2ba1bd 100644 --- a/src/gradient_labs/client.py +++ b/src/gradient_labs/client.py @@ -130,6 +130,12 @@ ) from ._terminology_substitution_delete import delete_terminology_substitution +from ._traffic_group_exclusion_create import ( + create_traffic_group_exclusion, + TrafficGroupExclusionCreateParams, +) +from ._traffic_group_exclusion_delete import delete_traffic_group_exclusion + from ._http_client import HttpClient, API_BASE_URL from .tool import * from .note import Note @@ -900,3 +906,31 @@ def delete_terminology_substitution(self, *, substitution_id: str) -> None: client=self.http_client, substitution_id=substitution_id, ) + + # ==================== Traffic Group Exclusions ==================== + + def create_traffic_group_exclusion( + self, + *, + group_id: str, + params: TrafficGroupExclusionCreateParams, + ) -> TrafficGroupTarget: + """create_traffic_group_exclusion prevents a procedure from being selected for + conversations in a traffic group, even when the procedure is unassigned/global. + + Note: requires a `Management` API key.""" + return create_traffic_group_exclusion( + client=self.http_client, + group_id=group_id, + params=params, + ) + + def delete_traffic_group_exclusion(self, *, group_id: str, target_id: str) -> None: + """delete_traffic_group_exclusion removes an exclusion from a traffic group. + + Note: requires a `Management` API key.""" + delete_traffic_group_exclusion( + client=self.http_client, + group_id=group_id, + target_id=target_id, + )