@@ -187,6 +187,22 @@ def create_project(self, project_data):
187187 )
188188 return response_data
189189
190+ def close_project (self , project_id ):
191+ # Closes the requested project. Once a project is closed, all traffic
192+ # is stopped, and the project is automatically sent for invoicing.
193+ self .validator .validate_request (
194+ 'close_project' ,
195+ path_data = {'extProjectId' : '{}' .format (project_id )},
196+ )
197+ response_data = self ._api_post ('/projects/{}/close' .format (project_id ), {})
198+ if response_data .get ('status' ).get ('message' ) != 'success' :
199+ raise DemandAPIError (
200+ "Could not close project. Demand API responded with: {}" .format (
201+ response_data
202+ )
203+ )
204+ return response_data
205+
190206 def get_project (self , project_id ):
191207 self .validator .validate_request (
192208 'get_project' ,
@@ -244,6 +260,24 @@ def launch_line_item(self, project_id, line_item_id):
244260 )
245261 return response_data
246262
263+ def pause_line_item (self , project_id , line_item_id ):
264+ # Stops traffic to a line item.
265+ self .validator .validate_request (
266+ 'pause_line_item' ,
267+ path_data = {
268+ 'extProjectId' : '{}' .format (project_id ),
269+ 'extLineItemId' : '{}' .format (line_item_id ),
270+ },
271+ )
272+ response_data = self ._api_post ('/projects/{}/lineItems/{}/pause' .format (project_id , line_item_id ), {})
273+ if response_data .get ('status' ).get ('message' ) != 'success' :
274+ raise DemandAPIError (
275+ "Could not close project. Demand API responded with: {}" .format (
276+ response_data
277+ )
278+ )
279+ return response_data
280+
247281 def get_line_item (self , project_id , line_item_id ):
248282 self .validator .validate_request (
249283 'get_line_item' ,
0 commit comments