@@ -321,8 +321,9 @@ async def upload_container(req: Request):
321321async def fetch_layouts (req : Request ):
322322 data = req .state .body
323323 token = req .state .fmSessionToken
324+ method_body = data .get ("methodBody" , {})
324325 fm_server = data .get ("fmServer" )
325- database = data .get ("database" )
326+ database = method_body .get ("database" )
326327
327328 validate_required_params ({
328329 "fmSessionToken" : token ,
@@ -346,4 +347,38 @@ async def fetch_layouts(req: Request):
346347 }
347348
348349 except requests .HTTPError as e :
349- raise handle_api_error (e ,"An error occurred while fetching the layouts." )
350+ raise handle_api_error (e ,"An error occurred while fetching the layouts." )
351+
352+ async def fetch_layout_metadata (req : Request ):
353+ data = req .state .body
354+ token = req .state .fmSessionToken
355+ fm_server = data .get ("fmServer" )
356+ method_body = data .get ("methodBody" , {})
357+
358+ database = method_body .get ("database" )
359+ layout = method_body .get ("layout" )
360+
361+ validate_required_params ({
362+ "fmSessionToken" : token ,
363+ "fmServer" : fm_server ,
364+ "database" : database ,
365+ "layout" : layout
366+ })
367+
368+ apiUrl = f"https://{ fm_server } /fmi/data/vLatest/databases/{ database } /layouts/{ layout } "
369+
370+ headers = {
371+ "Authorization" : f"Bearer { token } "
372+ }
373+
374+ try :
375+ response = requests .get (apiUrl , headers = headers , verify = False )
376+ response .raise_for_status ()
377+ json_data = response .json ()
378+ return {
379+ "layoutMetadata" : json_data ["response" ]["layout" ],
380+ "session" : token
381+ }
382+
383+ except requests .HTTPError as e :
384+ raise handle_api_error (e ,"An error occurred while fetching the layout metadata." )
0 commit comments