4040from stac_pydantic .api .extensions .sort import SortDirections , SortExtension
4141from stac_pydantic .api .version import STAC_API_VERSION
4242from stac_pydantic .item import ItemProperties
43- from stac_pydantic .shared import Provider
43+ from stac_pydantic .shared import Asset , Provider
4444from typing_extensions import Self
4545
4646from eodag .api .product ._product import EOProduct
@@ -300,8 +300,7 @@ def create_stac_item(
300300 ):
301301 for k , v in product .assets .items ():
302302 # TODO: download extension with origin link (make it optional ?)
303- asset_model = model .model_validate (v )
304- stac_extensions .update (asset_model .get_conformance_classes ())
303+ asset_model = Asset .model_validate (v )
305304 feature ["assets" ][k ] = asset_model .model_dump (exclude_none = True )
306305
307306 if asset_proxy_url :
@@ -342,7 +341,12 @@ def create_stac_item(
342341 },
343342 }
344343
345- feature_model = model .model_validate ({** product .properties , ** {"federation:backends" : [product .provider ]}})
344+ feature_model = model .model_validate (
345+ {
346+ ** product .properties ,
347+ ** {"federation:backends" : [product .provider ], "storage:tier" : product .properties .get ("order:status" )},
348+ }
349+ )
346350 stac_extensions .update (feature_model .get_conformance_classes ())
347351
348352 # filter properties we do not want to expose
@@ -351,10 +355,6 @@ def create_stac_item(
351355 }
352356 feature ["properties" ].pop ("qs" , None )
353357
354- # append order:status property as it was replaced in feature with storage:tier
355- if order_status := product .properties .get ("order:status" ):
356- feature ["properties" ]["order:status" ] = order_status
357-
358358 feature ["stac_extensions" ] = list (stac_extensions )
359359
360360 if extension_names and product .provider not in auto_order_whitelist :
@@ -390,8 +390,14 @@ def _get_conformance_classes(self) -> list[str]:
390390 """Extract list of conformance classes from set fields metadata"""
391391 conformance_classes : set [str ] = set ()
392392
393+ model_fields_by_alias = {
394+ field_info .serialization_alias : field_info
395+ for name , field_info in self .model_fields .items ()
396+ if field_info .serialization_alias
397+ }
398+
393399 for f in self .model_fields_set :
394- mf = self .model_fields .get (f )
400+ mf = model_fields_by_alias . get ( f ) or self .model_fields .get (f )
395401 if not mf or not isinstance (mf , FieldInfo ) or not mf .metadata :
396402 continue
397403 extension = next (
0 commit comments