@@ -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' ,
@@ -253,6 +269,42 @@ def add_line_item(self, project_id, lineitem_data):
253269 )
254270 return response_data
255271
272+ def launch_line_item (self , project_id , line_item_id ):
273+ # Starts traffic to a line item.
274+ self .validator .validate_request (
275+ 'launch_line_item' ,
276+ path_data = {
277+ 'extProjectId' : '{}' .format (project_id ),
278+ 'extLineItemId' : '{}' .format (line_item_id ),
279+ },
280+ )
281+ response_data = self ._api_post ('/projects/{}/lineItems/{}/launch' .format (project_id , line_item_id ), {})
282+ if response_data .get ('status' ).get ('message' ) != 'success' :
283+ raise DemandAPIError (
284+ "Could not close project. Demand API responded with: {}" .format (
285+ response_data
286+ )
287+ )
288+ return response_data
289+
290+ def pause_line_item (self , project_id , line_item_id ):
291+ # Stops traffic to a line item.
292+ self .validator .validate_request (
293+ 'pause_line_item' ,
294+ path_data = {
295+ 'extProjectId' : '{}' .format (project_id ),
296+ 'extLineItemId' : '{}' .format (line_item_id ),
297+ },
298+ )
299+ response_data = self ._api_post ('/projects/{}/lineItems/{}/pause' .format (project_id , line_item_id ), {})
300+ if response_data .get ('status' ).get ('message' ) != 'success' :
301+ raise DemandAPIError (
302+ "Could not close project. Demand API responded with: {}" .format (
303+ response_data
304+ )
305+ )
306+ return response_data
307+
256308 def get_line_item (self , project_id , line_item_id ):
257309 self .validator .validate_request (
258310 'get_line_item' ,
0 commit comments