def post(self, data): self.authenticate() args = {'access_token': self.token} data = HttpLib().post("https://" + self.host + "/rest/v1/leads.json", args, data) if not data['success']: raise MarketoException(data['errors'][0]) return data['result'][0]['status']
def get_activity_types(self): self.authenticate() args = {'access_token': self.token} data = HttpLib().get( "https://" + self.host + "/rest/v1/activities/types.json", args) if data is None: raise Exception("Empty Response") if not data['success']: raise MarketoException(data['errors'][0]) return data['result']
def get_paging_token(self, sinceDatetime): self.authenticate() args = {'access_token': self.token, 'sinceDatetime': sinceDatetime} data = HttpLib().get( "https://" + self.host + "/rest/v1/activities/pagingtoken.json", args) if data is None: raise Exception("Empty Response") if not data['success']: raise MarketoException(data['errors'][0]) return data['nextPageToken']
def get_email_content_by_id(self, id): self.authenticate() if id is None: raise ValueError("Invalid argument: required argument id is none.") args = { 'access_token' : self.token } data = HttpLib().get("https://" + self.host + "/rest/asset/v1/email/" + str(id) + "/content", args) if data is None: raise Exception("Empty Response") self.last_request_id = data['requestId'] if not data['success'] : raise MarketoException(data['errors'][0]) return data['result']
def get_leads(self, filtr, values = [], fields = []): self.authenticate() values = values.split() if type(values) is str else values args = { 'access_token' : self.token, 'filterType' : str(filtr), 'filterValues' : (',').join(values) } if len(fields) > 0: args['fields'] = ",".join(fields) data = HttpLib().get("https://" + self.host + "/rest/v1/leads.json", args) if data is None: raise Exception("Empty Response") self.last_request_id = data['requestId'] if not data['success'] : raise MarketoException(data['errors'][0]) return data['result']
def get_email_templates(self, offset, maxreturn, status=None): self.authenticate() if id is None: raise ValueError("Invalid argument: required argument id is none.") args = { 'access_token' : self.token, 'offset' : offset, 'maxreturn' : maxreturn } if status is not None: args['status'] = status data = HttpLib().get("https://" + self.host + "/rest/asset/v1/emailTemplates.json", args) if data is None: raise Exception("Empty Response") self.last_request_id = data['requestId'] if not data['success'] : raise MarketoException(data['errors'][0]) return data['result']
def authenticate(self): if self.valid_until is not None and\ self.valid_until > time.time(): return args = { 'grant_type' : 'client_credentials', 'client_id' : self.client_id, 'client_secret' : self.client_secret } data = HttpLib().get("https://" + self.host + "/identity/oauth/token", args) if data is None: raise Exception("Empty Response") self.token = data['access_token'] self.token_type = data['token_type'] self.expires_in = data['expires_in'] self.valid_until = time.time() + data['expires_in'] self.scope = data['scope']
def get_lead_activity_page(self, activityTypeIds, nextPageToken, batchSize = None, listId = None): self.authenticate() activityTypeIds = activityTypeIds.split() if type(activityTypeIds) is str else activityTypeIds args = { 'access_token' : self.token, 'activityTypeIds' : ",".join(activityTypeIds), 'nextPageToken' : nextPageToken } if listId: args['listId'] = listId if batchSize: args['batchSize'] = batchSize data = HttpLib().get("https://" + self.host + "/rest/v1/activities.json", args) if data is None: raise Exception("Empty Response") if not data['success'] : raise MarketoException(data['errors'][0]) return data
def run_request_campaign(self, campaignID, leadsID, values): token_list = [{ 'name': '{{' + k + '}}', 'value': v } for k, v in values.items()] leads_list = [{'id': items} for items in leadsID] data = {'input': {"leads": leads_list, "tokens": token_list}} self.authenticate() args = {'access_token': self.token} x = "https://" + self.host + "/rest/v1/campaigns/" + str( campaignID) + "/trigger.json" result = HttpLib().post( "https://" + self.host + "/rest/v1/campaigns/" + str(campaignID) + "/trigger.json", args, data) if not result['success']: raise MarketoException(result['errors'][0]) return result['success']
def get_leads_by_listId(self, listId=None, batchSize=None, fields=[]): self.authenticate() args = {'access_token': self.token} if len(fields) > 0: args['fields'] = ",".join(fields) if batchSize: args['batchSize'] = batchSize result_list = [] while True: data = HttpLib().get( "https://" + self.host + "/rest/v1/list/" + str(listId) + "/leads.json", args) if data is None: raise Exception("Empty Response") self.last_request_id = data['requestId'] if not data['success']: raise MarketoException(data['errors'][0]) result_list.extend(data['result']) if len(data['result']) == 0 or 'nextPageToken' not in data: break args['nextPageToken'] = data['nextPageToken'] return result_list
def get_multiple_leads_by_filter_type(self, filterType, filterValues, fieldslist): self.authenticate() args = {'access_token': self.token} fieldvalstr = ','.join(filterValues) fields = fieldliststr = None if len(fieldslist) > 0: fieldstr = ','.join(fieldslist) else: fieldstr = 'id,lastName,firstName,updatedAt,createdAt' inputp = { 'access_token': self.token, 'filterType': filterType, 'filterValues': fieldvalstr, 'fields': fieldstr } data = HttpLib().get("https://" + self.host + "/rest/v1/leads.json", inputp) if data is None: raise Exception("Empty Response") if not data['success']: raise MarketoException(data['errors'][0]) return data['result']