1+ import requests
2+ from . import utils
3+ from codat .models import operations
4+ from typing import Optional
5+
6+ class Categories :
7+ _client : requests .Session
8+ _security_client : requests .Session
9+ _server_url : str
10+ _language : str
11+ _sdk_version : str
12+ _gen_version : str
13+
14+ def __init__ (self , client : requests .Session , security_client : requests .Session , server_url : str , language : str , sdk_version : str , gen_version : str ) -> None :
15+ self ._client = client
16+ self ._security_client = security_client
17+ self ._server_url = server_url
18+ self ._language = language
19+ self ._sdk_version = sdk_version
20+ self ._gen_version = gen_version
21+
22+
23+ def get_account_category (self , request : operations .GetAccountCategoryRequest ) -> operations .GetAccountCategoryResponse :
24+ r"""Get suggested and/or confirmed category for a specific account
25+ Get category for specific nominal account.
26+ """
27+
28+ base_url = self ._server_url
29+
30+ url = utils .generate_url (base_url , "/data/companies/{companyId}/connections/{connectionId}/assess/accounts/{accountId}/categories" , request .path_params )
31+
32+
33+ client = self ._security_client
34+
35+ r = client .request ("GET" , url )
36+ content_type = r .headers .get ("Content-Type" )
37+
38+ res = operations .GetAccountCategoryResponse (status_code = r .status_code , content_type = content_type )
39+
40+ if r .status_code == 200 :
41+ if utils .match_content_type (content_type , "application/json" ):
42+ out = utils .unmarshal_json (r .text , Optional [operations .GetAccountCategoryCategorisedAccount ])
43+ res .categorised_account = out
44+
45+ return res
46+
47+
48+ def list_accounts_categories (self , request : operations .ListAccountsCategoriesRequest ) -> operations .ListAccountsCategoriesResponse :
49+ r"""List suggested and confirmed account categories
50+ Lists suggested and confirmed chart of account categories for the given company and data connection.
51+ """
52+
53+ base_url = self ._server_url
54+
55+ url = utils .generate_url (base_url , "/data/companies/{companyId}/connections/{connectionId}/assess/accounts/categories" , request .path_params )
56+
57+ query_params = utils .get_query_params (request .query_params )
58+
59+ client = self ._security_client
60+
61+ r = client .request ("GET" , url , params = query_params )
62+ content_type = r .headers .get ("Content-Type" )
63+
64+ res = operations .ListAccountsCategoriesResponse (status_code = r .status_code , content_type = content_type )
65+
66+ if r .status_code == 200 :
67+ if utils .match_content_type (content_type , "application/json" ):
68+ out = utils .unmarshal_json (r .text , Optional [operations .ListAccountsCategoriesLinks ])
69+ res .links = out
70+
71+ return res
72+
73+
74+ def list_available_account_categories (self ) -> operations .ListAvailableAccountCategoriesResponse :
75+ r"""List account categories
76+ Lists available account categories Codat's categorisation engine can provide.
77+ """
78+
79+ base_url = self ._server_url
80+
81+ url = base_url .removesuffix ("/" ) + "/data/assess/accounts/categories"
82+
83+
84+ client = self ._security_client
85+
86+ r = client .request ("GET" , url )
87+ content_type = r .headers .get ("Content-Type" )
88+
89+ res = operations .ListAvailableAccountCategoriesResponse (status_code = r .status_code , content_type = content_type )
90+
91+ if r .status_code == 200 :
92+ if utils .match_content_type (content_type , "application/json" ):
93+ out = utils .unmarshal_json (r .text , Optional [list [operations .ListAvailableAccountCategoriesChartOfAccountCategory ]])
94+ res .list_available_account_categories_chart_of_account_category_all_ofs = out
95+
96+ return res
97+
98+
99+ def update_account_category (self , request : operations .UpdateAccountCategoryRequest ) -> operations .UpdateAccountCategoryResponse :
100+ r"""Patch account categories
101+ Update category for a specific nominal account
102+ """
103+
104+ base_url = self ._server_url
105+
106+ url = utils .generate_url (base_url , "/data/companies/{companyId}/connections/{connectionId}/assess/accounts/{accountId}/categories" , request .path_params )
107+
108+ headers = {}
109+ req_content_type , data , form = utils .serialize_request_body (request )
110+ if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed" :
111+ headers ["content-type" ] = req_content_type
112+
113+ client = self ._security_client
114+
115+ r = client .request ("PATCH" , url , data = data , files = form , headers = headers )
116+ content_type = r .headers .get ("Content-Type" )
117+
118+ res = operations .UpdateAccountCategoryResponse (status_code = r .status_code , content_type = content_type )
119+
120+ if r .status_code == 200 :
121+ if utils .match_content_type (content_type , "application/json" ):
122+ out = utils .unmarshal_json (r .text , Optional [operations .UpdateAccountCategoryCategorisedAccount ])
123+ res .categorised_account = out
124+
125+ return res
126+
127+
128+ def update_accounts_categories (self , request : operations .UpdateAccountsCategoriesRequest ) -> operations .UpdateAccountsCategoriesResponse :
129+ r"""Confirm categories for accounts
130+ Comfirms the categories for all or a batch of accounts for a specific connection.
131+ """
132+
133+ base_url = self ._server_url
134+
135+ url = utils .generate_url (base_url , "/data/companies/{companyId}/connections/{connectionId}/assess/accounts/categories" , request .path_params )
136+
137+ headers = {}
138+ req_content_type , data , form = utils .serialize_request_body (request )
139+ if req_content_type != "multipart/form-data" and req_content_type != "multipart/mixed" :
140+ headers ["content-type" ] = req_content_type
141+
142+ client = self ._security_client
143+
144+ r = client .request ("PATCH" , url , data = data , files = form , headers = headers )
145+ content_type = r .headers .get ("Content-Type" )
146+
147+ res = operations .UpdateAccountsCategoriesResponse (status_code = r .status_code , content_type = content_type )
148+
149+ if r .status_code == 200 :
150+ if utils .match_content_type (content_type , "application/json" ):
151+ out = utils .unmarshal_json (r .text , Optional [list [operations .UpdateAccountsCategoriesCategorisedAccount ]])
152+ res .categorised_accounts = out
153+
154+ return res
155+
156+
0 commit comments