0

I am new to Python and working with the Infusionsoft API and I am hitting a snag here. I am writing a script that retrieves all of the contacts in our system and adds them to a Pandas Data frame if they contain a given string. From what I can tell my code for retrieving the contacts is code and it will even break it down to just the ID number of the contact I want to receive. The issue comes when I try to pass that data into my delete method.

When I first started looking into this I looked into a github posting (see here: https://github.com/GearPlug/infusionsoft-python) And planned to use the method delete_contact = Client.delete_contact('ID') which takes the param 'ID' as a string. I have broken it down in my code so that the Ids will read into an array as a string and my program iterates over them and prints out all of the strings like so:

1

2

3

What has me thrown off is when I try to pass them into the method delete_contact = client.delete_contact('ID') it comes back with

  File "C:\Users\Bryan\OneDrive\Desktop\Python_Scripts\site-packages\NEW_Infusion_Script.py", line 28, in <module>
    delete_contact(infusion_id)
  File "C:\Users\Bryan\OneDrive\Desktop\Python_Scripts\site-packages\NEW_Infusion_Script.py", line 26, in delete_contact
    Client.delete_contact('id')
TypeError: Client.delete_contact() missing 1 required positional argument: 'id'


Here is my code with the obvious API keys removed: 


import pandas as pd
import infusionsoft
from infusionsoft.client import Client
import xmlrpc.client
#Python has built-in support for xml-rpc.  All you need to do is add the
#line above.

#Set up the API server variable
server = xmlrpc.client.ServerProxy("https://productname.infusionsoft.com:443/api/xmlrpc")

key = "#The encrypted API key"
test_rigor = []
var = server.DataService.findByField(key,"Contact",100,0,"Email","%testrigor-mail.com",["LastName","Id",'Email'] )
for result in var:
        server.DataService.update(key,"Contact",result["Id"],{"LastName":" "})
        test_rigor.append
##create a Data Frame from the info pull above
df = pd.DataFrame.from_dict(var)
print("Done")
print(var)
df
##Pull the data and put into a seperate array and feed that into the delete method
infusion_ids = []
for num in df['Id']:
        infusion_ids.append(num)
def delete_contact(x):
        Client.delete_contact('id')
for infusion_id in infusion_ids:
        infusion_id[0]
        delete_contact(infusion_id[0])
        infusion_id.pop(0)
        ##print(df)

Any suggestions or obvious missteps would be greatly appreciated thanks!

0 Answers0