5656
5757BLUEPRINT .config = api_ .config
5858
59+
5960def get_api_type (urlpath ):
6061 """
6162 Decorator to detect API type
@@ -157,8 +158,8 @@ def collections():
157158 return get_response (api_ .collections (dict (request .headers ), request .args ))
158159
159160
160- @BLUEPRINT .route ('/collections/<collection>' , methods = ['GET' , 'PUT' , 'DELETE' ])
161- @BLUEPRINT .route ('/stac/collections/<collection>' , methods = ['GET' , 'PUT' , 'DELETE' ])
161+ @BLUEPRINT .route ('/collections/<collection>' , methods = ['GET' , 'PATCH' , ' PUT' , 'DELETE' ])
162+ @BLUEPRINT .route ('/stac/collections/<collection>' , methods = ['GET' , 'PATCH' , ' PUT' , 'DELETE' ])
162163def collection (collection = 'metadata:main' ):
163164 """
164165 OGC API collection endpoint
@@ -172,12 +173,17 @@ def collection(collection='metadata:main'):
172173 if request .method == 'PUT' :
173174 return get_response (
174175 stacapi .manage_collection_item (
175- dict (request .headers ), 'update ' , collection = collection ,
176+ dict (request .headers ), 'replace ' , collection = collection ,
176177 data = request .get_json (silent = True )))
177178 elif request .method == 'DELETE' :
178179 return get_response (
179180 stacapi .manage_collection_item (dict (request .headers ),
180181 'delete' , collection ))
182+ elif request .method == 'PATCH' :
183+ return get_response (
184+ api_ .manage_collection_item (dict (request .headers ), 'update' ,
185+ collection , item ,
186+ data = request .get_json (silent = True )))
181187 else :
182188 return get_response (stacapi .collection (dict (request .headers ),
183189 request .args , collection ))
@@ -281,9 +287,9 @@ def items(collection='metadata:main'):
281287
282288
283289@BLUEPRINT .route ('/collections/<collection>/items/<path:item>' ,
284- methods = ['GET' , 'PUT' , 'DELETE' ])
290+ methods = ['GET' , 'PATCH' , ' PUT' , 'DELETE' ])
285291@BLUEPRINT .route ('/stac/collections/<collection>/items/<item>' ,
286- methods = ['GET' , 'PUT' , 'DELETE' ])
292+ methods = ['GET' , 'PATCH' , ' PUT' , 'DELETE' ])
287293def item (collection = 'metadata:main' , item = None ):
288294 """
289295 OGC API collection items endpoint
@@ -297,12 +303,17 @@ def item(collection='metadata:main', item=None):
297303 if request .method == 'PUT' :
298304 return get_response (
299305 api_ .manage_collection_item (
300- dict (request .headers ), 'update ' , collection , item ,
306+ dict (request .headers ), 'replace ' , collection , item ,
301307 data = request .get_json (silent = True )))
302308 elif request .method == 'DELETE' :
303309 return get_response (
304310 api_ .manage_collection_item (dict (request .headers ), 'delete' ,
305311 collection , item ))
312+ elif request .method == 'PATCH' :
313+ return get_response (
314+ api_ .manage_collection_item (dict (request .headers ), 'update' ,
315+ collection , item ,
316+ data = request .get_json (silent = True )))
306317 else :
307318 if get_api_type (request .url_rule .rule ) == 'stac-api' :
308319 return get_response (stacapi .item (dict (request .headers ), request .args ,
0 commit comments