1+ from typing import List , Optional
2+
13from thehive4py .endpoints ._base import EndpointBase
24from thehive4py .query import QueryExpr
35from thehive4py .query .filters import FilterExpr
46from thehive4py .query .page import Paginate
57from thehive4py .query .sort import SortExpr
6- from thehive4py .types .case_template import OutputCaseTemplate , InputCaseTemplate
7- from typing import List , Optional
8+ from thehive4py .types .case_template import InputCaseTemplate , OutputCaseTemplate
9+ from thehive4py . types . page_template import OutputPageTemplate
810
911
1012class CaseTemplateEndpoint (EndpointBase ):
13+ def create (self , case_template : InputCaseTemplate ) -> OutputCaseTemplate :
14+ """Create a case template.
15+
16+ Args:
17+ case_template: The body of the case template.
18+
19+ Returns:
20+ The created case template.
21+ """
22+ return self ._session .make_request (
23+ "POST" , path = "/api/v1/caseTemplate" , json = case_template
24+ )
25+
26+ def get (self , case_template_id : str ) -> OutputCaseTemplate :
27+ """Get a case template by id.
28+
29+ Args:
30+ case_template_id: The id of the case template.
31+
32+ Returns:
33+ The case template specified by the id.
34+ """
35+ return self ._session .make_request (
36+ "GET" , path = f"/api/v1/caseTemplate/{ case_template_id } "
37+ )
38+
39+ def delete (self , case_template_id : str ) -> None :
40+ """Delete a case template.
41+
42+ Args:
43+ case_template_id: The id of the case template.
44+
45+ Returns:
46+ N/A
47+ """
48+ return self ._session .make_request (
49+ "DELETE" , path = f"/api/v1/caseTemplate/{ case_template_id } "
50+ )
51+
52+ def update (self , case_template_id : str , fields : InputCaseTemplate ) -> None :
53+ """Update a case template.
54+
55+ Args:
56+ case_template_id: The id of the case template.
57+ fields: The fields of the case template to update.
58+
59+ Returns:
60+ N/A
61+ """
62+ return self ._session .make_request (
63+ "PATCH" , path = f"/api/v1/caseTemplate/{ case_template_id } " , json = fields
64+ )
65+
66+ def link_page_templates (
67+ self , case_template_id : str , page_template_ids : List [str ]
68+ ) -> None :
69+ """Link page templates to a case template.
70+
71+ Args:
72+ case_template_id: The id or name of the case template.
73+ page_template_ids: The list of page template ids to link.
74+
75+ Returns:
76+ N/A
77+ """
78+ return self ._session .make_request (
79+ "PUT" ,
80+ path = f"/api/v1/caseTemplate/{ case_template_id } /pageTemplate/link" ,
81+ json = {"pageTemplateIds" : page_template_ids },
82+ )
83+
1184 def find (
1285 self ,
1386 filters : Optional [FilterExpr ] = None ,
1487 sortby : Optional [SortExpr ] = None ,
1588 paginate : Optional [Paginate ] = None ,
1689 ) -> List [OutputCaseTemplate ]:
90+ """Find multiple case templates.
91+
92+ Args:
93+ filters: The filter expressions to apply in the query.
94+ sortby: The sort expressions to apply in the query.
95+ paginate: The pagination expression to apply in the query.
96+
97+ Returns:
98+ The list of case templates matched by the query or an empty list.
99+ """
17100 query : QueryExpr = [
18101 {"_name" : "listCaseTemplate" },
19102 * self ._build_subquery (filters = filters , sortby = sortby , paginate = paginate ),
@@ -26,22 +109,33 @@ def find(
26109 params = {"name" : "caseTemplate" },
27110 )
28111
29- def get (self , case_template_id : str ) -> OutputCaseTemplate :
30- return self ._session .make_request (
31- "GET" , path = f"/api/v1/caseTemplate/{ case_template_id } "
32- )
112+ def find_page_templates (
113+ self ,
114+ case_template_id : str ,
115+ filters : Optional [FilterExpr ] = None ,
116+ sortby : Optional [SortExpr ] = None ,
117+ paginate : Optional [Paginate ] = None ,
118+ ) -> List [OutputPageTemplate ]:
119+ """Find page templates related to a case template.
33120
34- def create (self , case_template : InputCaseTemplate ) -> OutputCaseTemplate :
35- return self ._session .make_request (
36- "POST" , path = "/api/v1/caseTemplate" , json = case_template
37- )
121+ Args:
122+ case_template_id: The case template id.
123+ filters: The filter expressions to apply in the query.
124+ sortby: The sort expressions to apply in the query.
125+ paginate: The pagination expression to apply in the query.
38126
39- def delete (self , case_template_id : str ) -> None :
40- return self ._session .make_request (
41- "DELETE" , path = f"/api/v1/caseTemplate/{ case_template_id } "
42- )
127+ Returns:
128+ The list of page templates matched by the query or an empty list.
129+ """
130+ query : QueryExpr = [
131+ {"_name" : "getCaseTemplate" , "idOrName" : case_template_id },
132+ * self ._build_subquery (filters = filters , sortby = sortby , paginate = paginate ),
133+ {"_name" : "pageTemplates" },
134+ ]
43135
44- def update (self , case_template_id : str , fields : InputCaseTemplate ) -> None :
45136 return self ._session .make_request (
46- "PATCH" , path = f"/api/v1/caseTemplate/{ case_template_id } " , json = fields
137+ "POST" ,
138+ path = "/api/v1/query" ,
139+ json = {"query" : query },
140+ params = {"name" : "pageTemplate" },
47141 )
0 commit comments