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

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions src/gradient_labs/_traffic_group_exclusion_create.py
Original file line number Diff line number Diff line change
@@ -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)
7 changes: 7 additions & 0 deletions src/gradient_labs/_traffic_group_exclusion_delete.py
Original file line number Diff line number Diff line change
@@ -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={})
34 changes: 34 additions & 0 deletions src/gradient_labs/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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,
)
Loading