@@ -370,6 +370,7 @@ class ListTablesResponse(IcebergBaseModel):
370370
371371class ListViewsResponse (IcebergBaseModel ):
372372 identifiers : list [ListViewResponseEntry ] = Field ()
373+ next_page_token : str | None = Field (default = None , alias = "next-page-token" )
373374
374375
375376_PLANNING_RESPONSE_ADAPTER = TypeAdapter (PlanningResponse )
@@ -1102,12 +1103,31 @@ def list_views(self, namespace: str | Identifier) -> list[Identifier]:
11021103 return []
11031104 namespace_tuple = self ._check_valid_namespace_identifier (namespace )
11041105 namespace_concat = self ._encode_namespace_path (namespace_tuple )
1105- response = self ._session .get (self .url (Endpoints .list_views , namespace = namespace_concat ))
1106- try :
1107- response .raise_for_status ()
1108- except HTTPError as exc :
1109- _handle_non_200_response (exc , {404 : NoSuchNamespaceError })
1110- return [(* view .namespace , view .name ) for view in ListViewsResponse .model_validate_json (response .text ).identifiers ]
1106+
1107+ all_identifiers : list [Identifier ] = []
1108+ page_token : str | None = None
1109+
1110+ while True :
1111+ # Build URL with pagination params
1112+ url = self .url (Endpoints .list_views , namespace = namespace_concat )
1113+ if page_token :
1114+ url = f"{ url } ?pageToken={ page_token } "
1115+
1116+ response = self ._session .get (url )
1117+ try :
1118+ response .raise_for_status ()
1119+ except HTTPError as exc :
1120+ _handle_non_200_response (exc , {404 : NoSuchNamespaceError })
1121+
1122+ parsed = ListViewsResponse .model_validate_json (response .text )
1123+ all_identifiers .extend ([(* view .namespace , view .name ) for view in parsed .identifiers ])
1124+
1125+ # Check if more pages exist
1126+ if not parsed .next_page_token :
1127+ break
1128+ page_token = parsed .next_page_token
1129+
1130+ return all_identifiers
11111131
11121132 @retry (** _RETRY_ARGS )
11131133 def commit_table (
0 commit comments