@@ -43,6 +43,17 @@ class IndicatorSearchRequest(BaseModel):
4343 page : int = 0
4444
4545
46+ class IndicatorMultipleGetRequest (BaseModel ):
47+ model_config = ConfigDict (extra = "forbid" )
48+
49+ names : list [str ] = []
50+ type : IndicatorType | None = None
51+ sorting : list [tuple [str , bool ]] = []
52+ filter_aliases : list [tuple [str , str ]] = []
53+ count : int = 50
54+ page : int = 0
55+
56+
4657class IndicatorSearchResponse (BaseModel ):
4758 model_config = ConfigDict (extra = "forbid" )
4859
@@ -237,6 +248,25 @@ def search(
237248 return IndicatorSearchResponse (indicators = indicators , total = total )
238249
239250
251+ @router .post ("/get/multiple" )
252+ def get_multiple (
253+ httpreq : Request , request : IndicatorMultipleGetRequest
254+ ) -> IndicatorSearchResponse :
255+ """Gets multiple indicators by name."""
256+ query = {"name__in" : request .names }
257+ if request .type :
258+ query ["type" ] = request .type
259+ indicators , total = Indicator .filter (
260+ query_args = query ,
261+ offset = request .page * request .count ,
262+ count = request .count ,
263+ sorting = request .sorting ,
264+ aliases = request .filter_aliases ,
265+ user = httpreq .state .user ,
266+ )
267+ return IndicatorSearchResponse (indicators = indicators , total = total )
268+
269+
240270@router .post ("/tag" )
241271@rbac .permission_on_ids (roles .Permission .WRITE )
242272def tag (httpreq : Request , request : IndicatorTagRequest ) -> IndicatorTagResponse :
0 commit comments