@@ -102,6 +102,33 @@ async def get_ermittlungsauftraege(self, limit: int = 0, offset: int = 0) -> lis
102
102
)
103
103
return _list_of_ermittlungsauftraege .root
104
104
105
+ async def get_ermittlungsauftraege_by_malo (self , malo_id : str ) -> list [Ermittlungsauftrag ]:
106
+ """
107
+ find ermittlungsauftraege by their marktlokations-id
108
+ """
109
+ if malo_id is None or not isinstance (malo_id , str ) or not malo_id .strip ():
110
+ raise ValueError (f"malo_id must not be empty but was '{ malo_id } '" )
111
+ session = await self ._get_session ()
112
+ # see https://basicsupply.xtk-dev.de/swagger/index.html#operations-Aufgabe-get_api_Aufgabe_ermittlungsauftraege
113
+ request_url = (
114
+ self ._config .server_url
115
+ / "api"
116
+ / "Aufgabe"
117
+ / "ermittlungsauftraege"
118
+ % {"marktlokationid" : malo_id , "includeDetails" : "true" }
119
+ )
120
+ request_uuid = uuid .uuid4 ()
121
+ _logger .debug ("[%s] requesting %s" , str (request_uuid ), request_url )
122
+ async with session .get (request_url ) as response :
123
+ response .raise_for_status () # endpoint returns an empty list but no 404
124
+ _logger .debug ("[%s] response status: %s" , str (request_uuid ), response .status )
125
+ response_json = await response .json ()
126
+ _list_of_ermittlungsauftraege = _ListOfErmittlungsauftraege .model_validate (response_json )
127
+ _logger .debug (
128
+ "Downloaded %i Ermittlungsauftraege for MaLo '%s'" , len (_list_of_ermittlungsauftraege .root ), malo_id
129
+ )
130
+ return _list_of_ermittlungsauftraege .root
131
+
105
132
async def get_aufgabe_stats (self ) -> AufgabeStats :
106
133
"""
107
134
get statistics for all aufgaben types
0 commit comments