TS props script, notes

This commit is contained in:
Norm Rasmussen
2023-01-05 17:15:12 -05:00
parent 3bf4d6a151
commit 26610f8ae0
12 changed files with 368 additions and 116 deletions

View File

@ -0,0 +1,82 @@
import requests
import pandas as pd
csv = "/Users/normrasmussen/Downloads/ts_id_roles_test.csv"
apiKey = "18Zl2NAzWTE09FHbNEBngNOJO"
baseUrlemail = "https://api.northpass.com/v2/people?filter[email][eq]="
def readcsv(csv, apiKey, baseUrlemail):
emails = []
data = pd.read_csv(csv)
emails.extend(data["email"].tolist())
getfromEmail(emails, baseUrlemail, apiKey, data)
def getfromEmail(emails, baseUrlemail, apiKey, data):
email_ids = {}
errors = []
for email in emails:
url = baseUrlemail + f"{email}"
headers = {
"accept": "*/*",
"x-api-key": apiKey,
"content-type": "application/json",
}
response = requests.get(url, headers=headers)
if response.status_code == 200:
response = response.json()
try:
uuid = response["data"][0]["id"]
print(uuid)
email_ids.update({email: uuid})
except Exception as e:
errors.append(email)
pass
else:
print("Another Error!")
# print(email_ids)
data["uuid"] = data["email"].map(email_ids)
data.dropna(how='any', inplace=True)
# print(data)
# print(errors)
assignProps(data, apiKey)
errorstoCsv(errors)
def errorstoCsv(errors):
errorcsv = pd.DataFrame(errors)
errorcsv.to_csv(
path_or_buf="/Users/normrasmussen/Downloads/Talkspace_Emails_Not_Northpass.csv",
index=False
)
def assignProps(data, apiKey):
for row in data.itertuples():
print(row)
ts_id = row[2]
ts_role = row[3]
uuid = row[4]
url = "https://api.northpass.com/v2/properties/people/bulk"
payload = {
"data": [{
"type": "person_properties",
"attributes": {"properties": {
"user_id": ts_id,
"role_type": ts_role
}},
"id": uuid,
}]}
headers = {
"accept": "application/json",
"content-type": "application/json",
"X-Api-Key": apiKey,
}
response = requests.post(url, json=payload, headers=headers)
print(response)
if __name__ == "__main__":
readcsv(csv, apiKey, baseUrlemail)

View File

@ -0,0 +1,36 @@
import requests
import pandas as pd
# SPS Commerce
apiKey = "VNDXh8K4tLYJ-Nvp78bo6w"
def getEnrollments(apiKey):
course_uuid = input("What is the Course UUID? Enter it here: ")
x = 0
uuid = []
while True:
x += 1
url = f"https://api.northpass.com/v2/courses/{course_uuid}/enrollments"
headers = {
"accept": "application/json",
"X-Api-Key": apiKey
}
response = requests.get(url, headers=headers)
jsonResponse = response.json()
next = jsonResponse["links"]
for id in jsonResponse["data"]:
userid= id["attributes"]["person_id"]
email= id["attributes"]["progress"]
uuid.append(user)
if "next" not in next:
break
# def getCourse():
if __name__ == "__main__":
getEnrollments(apiKey)

View File

@ -3,8 +3,9 @@ import requests
baseUrl = "https://api.northpass.com/v2/people/"
baseUrlname = "https://api.northpass.com/v2/people?filter[name][eq]="
baseUrlemail = "https://api.northpass.com/v2/people?filter[email][eq]="
apiKey = "JRDpCGQ7vSRiva6t5OkWDr5eJ" #G2
#apiKey = "6hUfJdAartHTHhHc0WIRZYPWe" #Walmart
apiKey = "JRDpCGQ7vSRiva6t5OkWDr5eJ" # G2
# apiKey = "6hUfJdAartHTHhHc0WIRZYPWe" #Walmart
def getfromName(baseUrlname, apiKey):
name = "Someone else"
@ -20,13 +21,14 @@ def getfromName(baseUrlname, apiKey):
else:
print("Another error! " + response.status_code)
response = response.json()
#print(response)
#uuid = response["data"][0]["id"]
#print("Learner ID:" )
#print(uuid)
# print(response)
# uuid = response["data"][0]["id"]
# print("Learner ID:" )
# print(uuid)
def getfromEmail(baseUrlemail, apiKey):
#email = "norm2test@northpass.com" # The %2B encodes the + sign in the URL. Using the + sign won't work.
# email = "norm2test@northpass.com" # The %2B encodes the + sign in the URL. Using the + sign won't work.
email = " "
url = baseUrlemail + f"{email}"
print(url)
@ -42,10 +44,11 @@ def getfromEmail(baseUrlemail, apiKey):
else:
print("Another Error!")
response = response.json()
#print(response)
# print(response)
uuid = response["data"]
#print("Learner ID:" )
#print(uuid)
# print("Learner ID:" )
# print(uuid)
def getfromUuid(baseUrl, apiKey):
uuid = "57b2b5eb-aa56-4cee-bb32-8c678a2de1b7"
@ -54,12 +57,13 @@ def getfromUuid(baseUrl, apiKey):
"accept": "*/*",
"x-api-key": apiKey,
"content-type": "application/json",
}
}
response = requests.get(url, headers=headers)
print(response.status_code)
print(response.text)
if __name__ == "__main__":
getfromUuid(baseUrl, apiKey)
#getfromEmail(baseUrlemail, apiKey)
#getfromName(baseUrlname, apiKey)
# getfromEmail(baseUrlemail, apiKey)
# getfromName(baseUrlname, apiKey)

View File

@ -7,15 +7,16 @@ apiKey = ""
groupName = sys.argv[1]
peopleCsv = "/path/to/file/peopletogroups.csv"
def createGroup(groupName, apiKey):
#apiKey = input("What is your API Key? ")
# Create a Group endpoint - params: group_uuid
# apiKey = input("What is your API Key? ")
# Create a Group endpoint - params: group_uuid
url = "https://api.northpass.com/v2/groups"
payload = {"data": {"attributes": {"name": f"{groupName}"}}}
headers = {
"accept": "application/json",
"content-type": "application/json",
"X-Api-Key": apiKey
"accept": "application/json",
"content-type": "application/json",
"X-Api-Key": apiKey,
}
groupresponse = requests.post(url, json=payload, headers=headers)
if "already have a group with this name" in groupresponse.text:
@ -25,36 +26,38 @@ def createGroup(groupName, apiKey):
else:
readCSV(apiKey, groupresponse)
def readCSV(apiKey, groupresponse):
people = []
readExport = pd.read_csv(
peopleCsv,
usecols=['UUID'],
skipinitialspace=True,
)
people.extend(readExport['UUID'].tolist())
peopleCsv,
usecols=["UUID"],
skipinitialspace=True,
)
people.extend(readExport["UUID"].tolist())
getgroupId(people, groupresponse, apiKey)
def getgroupId(people, groupresponse, apiKey):
groupresponse = groupresponse.json()
groupID = groupresponse['data']['id']
groupID = groupresponse["data"]["id"]
ppltoGroup(people, groupID, apiKey)
def ppltoGroup(people, groupID, apiKey):
for uuid in people:
payload = {"data": [
{
"type":"people",
"id":uuid
},
]}
payload = {
"data": [
{"type": "people", "id": uuid},
]
}
# Add People to a Group. Params needed: group_uuid
url = f"https://api.northpass.com/v2/groups/{groupID}/relationships/people"
headers = {
"accept": "*/*",
"content-type": "application/json",
"X-Api-Key": apiKey
}
"X-Api-Key": apiKey,
}
response = requests.post(url, json=payload, headers=headers)
if "404" in response.text:
print("Error returned for this user. Collecting names.")
@ -62,12 +65,10 @@ def ppltoGroup(people, groupID, apiKey):
else:
pass
def errorNames(apiKey, uuid):
url = f"https://api.northpass.com/v2/people/{uuid}"
headers = {
"accept": "application/json",
"X-Api-Key": apiKey
}
headers = {"accept": "application/json", "X-Api-Key": apiKey}
response = requests.get(url, headers=headers)
response = response.json()
errorList = []
@ -75,8 +76,10 @@ def errorNames(apiKey, uuid):
errorList.append(names)
fullNames(errorList)
def fullNames(errorList):
print(errorList)
if __name__ == "__main__":
createGroup(groupName, apiKey)