From f2efb7635d4187627cfb84d8f1df33447a4b02e9 Mon Sep 17 00:00:00 2001 From: nlathia Date: Wed, 17 Jun 2026 09:19:17 +0100 Subject: [PATCH] add list_ip_addresses: GET /ip-addresses --- src/gradient_labs/__init__.py | 1 + src/gradient_labs/_ip_addresses_list.py | 7 +++++++ src/gradient_labs/client.py | 12 ++++++++++++ src/gradient_labs/ip_addresses.py | 10 ++++++++++ 4 files changed, 30 insertions(+) create mode 100644 src/gradient_labs/_ip_addresses_list.py create mode 100644 src/gradient_labs/ip_addresses.py 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]