@@ -144,10 +144,73 @@ def delete(self, taxonomy_uid: str = None):
144144 return self .client .delete (url , headers = self .client .headers , params = self .params )
145145
146146
147+ def publish (self , data : dict ):
148+ """
149+ Publish one or more taxonomies to the specified environments and locales.
150+ Call on a collection-level instance (no taxonomy_uid set).
151+
152+ :param data: ``{"locales": [...], "environments": [...], "items": [{"uid": "..."}]}``
153+ :return: requests.Response
154+
155+ [Example:]
156+ >>> data = {"locales": ["en-us"], "environments": ["production"], "items": [{"uid": "taxonomy_1"}]}
157+ >>> client.stack('api_key').taxonomy().publish(data).json()
158+ """
159+ url = f"{ self .path } /publish"
160+ return self .client .post (url , headers = self .client .headers , data = json .dumps (data ), params = self .params )
161+
162+ def unpublish (self , data : dict ):
163+ """
164+ Unpublish one or more taxonomies from the specified environments and locales.
165+ Call on a collection-level instance (no taxonomy_uid set).
166+
167+ :param data: ``{"locales": [...], "environments": [...], "items": [{"uid": "..."}]}``
168+ :return: requests.Response
169+
170+ [Example:]
171+ >>> data = {"locales": ["en-us"], "environments": ["production"], "items": [{"uid": "taxonomy_1"}]}
172+ >>> client.stack('api_key').taxonomy().unpublish(data).json()
173+ """
174+ url = f"{ self .path } /unpublish"
175+ return self .client .post (url , headers = self .client .headers , data = json .dumps (data ), params = self .params )
176+
177+ def localize (self , data : dict , locale : str ):
178+ """
179+ Localize a taxonomy into the specified locale.
180+ Requires a taxonomy_uid (instance-level).
181+
182+ :param data: ``{"taxonomy": {"name": "..."}}``
183+ :param locale: Target locale code, e.g. ``"hi-in"``
184+ :return: requests.Response
185+
186+ [Example:]
187+ >>> client.stack('api_key').taxonomy('uid').localize({"taxonomy": {"name": "Hindi"}}, 'hi-in').json()
188+ """
189+ self .validate_taxonomy_uid ()
190+ self .add_param ('locale' , locale )
191+ url = f"{ self .path } /{ self .taxonomy_uid } "
192+ return self .client .post (url , headers = self .client .headers , data = json .dumps (data ), params = self .params )
193+
194+ def unlocalize (self , locale : str ):
195+ """
196+ Remove a locale variant of a taxonomy.
197+ Requires a taxonomy_uid (instance-level).
198+
199+ :param locale: Locale code to remove, e.g. ``"hi-in"``
200+ :return: requests.Response
201+
202+ [Example:]
203+ >>> client.stack('api_key').taxonomy('uid').unlocalize('hi-in').json()
204+ """
205+ self .validate_taxonomy_uid ()
206+ self .add_param ('locale' , locale )
207+ url = f"{ self .path } /{ self .taxonomy_uid } "
208+ return self .client .delete (url , headers = self .client .headers , params = self .params )
209+
147210 def validate_taxonomy_uid (self ):
148211 if self .taxonomy_uid is None or '' :
149212 raise ArgumentException (TAXONOMY_UID_REQUIRED )
150-
213+
151214 def terms (self , terms_uid : str = None ):
152215 self .validate_taxonomy_uid ()
153216 return Terms (self .client , self .taxonomy_uid , terms_uid )
0 commit comments