Fetch all pages in get_plans pagination loop 🟩

This commit is contained in:
Daniel Roth 2026-05-12 14:52:46 +00:00
parent 6dfca082f8
commit 0d324f99b2

View file

@ -11,9 +11,17 @@ class MagicPlanClient:
self._session.headers.update({"customer": customer_id, "key": api_key}) self._session.headers.update({"customer": customer_id, "key": api_key})
def get_plans(self) -> list[PlanSummary]: def get_plans(self) -> list[PlanSummary]:
r = self._session.get(f"{_BASE_URL}/workgroups/plans", params={"page": 1}) all_plans: list[PlanSummary] = []
r.raise_for_status() page = 1
return PlansListResponse.model_validate(r.json()["data"]).plans while True:
r = self._session.get(f"{_BASE_URL}/workgroups/plans", params={"page": page})
r.raise_for_status()
response = PlansListResponse.model_validate(r.json()["data"])
all_plans.extend(response.plans)
if not response.paging.next_page:
break
page += 1
return all_plans
def get_plan(self, plan_id: str) -> MagicPlanPlan: def get_plan(self, plan_id: str) -> MagicPlanPlan:
return MagicPlanPlan.model_validate(self._fetch_plan(plan_id).json()["data"]) return MagicPlanPlan.model_validate(self._fetch_plan(plan_id).json()["data"])