@@ -270,33 +270,27 @@ async def all_collections(
270
270
base_url = str (request .base_url )
271
271
272
272
# Get the global limit from environment variable
273
- global_limit = None
274
- env_limit = os .getenv ("STAC_ITEM_LIMIT" )
275
- if env_limit :
276
- try :
277
- global_limit = int ( env_limit )
278
- except ValueError :
279
- # Handle invalid integer in environment variable
280
- pass
281
-
282
- # Apply global limit if it exists
283
- if global_limit is not None :
284
- # If a limit was provided, use the smaller of the two
285
- if limit is not None :
286
- limit = min ( limit , global_limit )
287
- else :
288
- limit = global_limit
273
+ global_max_limit = int ( os . getenv ( "STAC_COLLECTION_GLOBAL_MAX_LIMIT" , 300 ))
274
+ default_limit = int ( os .getenv ("STAC_DEFAULT_COLLECTION_LIMIT" , 100 ) )
275
+ query_limit = request . query_params . get ( "limit" )
276
+
277
+ body_limit = None
278
+ try :
279
+ if request . method == "POST" and request . body ():
280
+ body_data = await request . json ()
281
+ body_limit = body_data . get ( "limit" )
282
+ except Exception :
283
+ pass
284
+
285
+ if body_limit is not None :
286
+ limit = int ( body_limit )
287
+ elif query_limit :
288
+ limit = int ( query_limit )
289
289
else :
290
- # No global limit, use provided limit or default
291
- if limit is None :
292
- query_limit = request .query_params .get ("limit" )
293
- if query_limit :
294
- try :
295
- limit = int (query_limit )
296
- except ValueError :
297
- limit = 10
298
- else :
299
- limit = 10
290
+ limit = default_limit
291
+
292
+ if global_max_limit > 0 :
293
+ limit = min (limit , global_max_limit )
300
294
301
295
token = request .query_params .get ("token" )
302
296
@@ -660,7 +654,17 @@ async def get_search(
660
654
Raises:
661
655
HTTPException: If any error occurs while searching the catalog.
662
656
"""
663
- limit = int (request .query_params .get ("limit" , os .getenv ("STAC_ITEM_LIMIT" , 10 )))
657
+ global_max_limit = int (os .getenv ("STAC_GLOBAL_ITEM_MAX_LIMIT" , 100 ))
658
+ default_limit = int (os .getenv ("STAC_DEFAULT_ITEM_LIMIT" , 10 ))
659
+
660
+ query_limit = request .query_params .get ("limit" )
661
+ if query_limit :
662
+ limit = int (query_limit )
663
+ else :
664
+ limit = default_limit
665
+
666
+ if global_max_limit > 0 :
667
+ limit = min (limit , global_max_limit )
664
668
665
669
base_args = {
666
670
"collections" : collections ,
0 commit comments