diff --git a/src/gradient_labs/__init__.py b/src/gradient_labs/__init__.py index ab06873..66e0326 100644 --- a/src/gradient_labs/__init__.py +++ b/src/gradient_labs/__init__.py @@ -15,3 +15,4 @@ from .tool import * from .topic import * from .terminology_substitution import * +from .ip_addresses import * diff --git a/src/gradient_labs/_ip_addresses_list.py b/src/gradient_labs/_ip_addresses_list.py new file mode 100644 index 0000000..9775127 --- /dev/null +++ b/src/gradient_labs/_ip_addresses_list.py @@ -0,0 +1,7 @@ +from ._http_client import HttpClient +from .ip_addresses import IPAddresses + + +def list_ip_addresses(*, client: HttpClient) -> IPAddresses: + rsp = client.get(path="ip-addresses", body={}) + return IPAddresses.from_dict(rsp) diff --git a/src/gradient_labs/client.py b/src/gradient_labs/client.py index a2ba1bd..52d81a8 100644 --- a/src/gradient_labs/client.py +++ b/src/gradient_labs/client.py @@ -136,6 +136,9 @@ ) from ._traffic_group_exclusion_delete import delete_traffic_group_exclusion +from .ip_addresses import IPAddresses +from ._ip_addresses_list import list_ip_addresses + from ._http_client import HttpClient, API_BASE_URL from .tool import * from .note import Note @@ -934,3 +937,12 @@ def delete_traffic_group_exclusion(self, *, group_id: str, target_id: str) -> No group_id=group_id, target_id=target_id, ) + + # ==================== IP Addresses ==================== + + def list_ip_addresses(self) -> IPAddresses: + """list_ip_addresses returns the CIDR ranges used by the API and the egress IP. + + Useful for customers who need to whitelist Gradient Labs IPs in their firewall + or security-group rules.""" + return list_ip_addresses(client=self.http_client) diff --git a/src/gradient_labs/ip_addresses.py b/src/gradient_labs/ip_addresses.py new file mode 100644 index 0000000..87ae25c --- /dev/null +++ b/src/gradient_labs/ip_addresses.py @@ -0,0 +1,10 @@ +from typing import List +from dataclasses import dataclass +from dataclasses_json import dataclass_json + + +@dataclass_json +@dataclass(frozen=True) +class IPAddresses: + api: List[str] + egress: List[str]