TS props script, notes
This commit is contained in:
@ -4,7 +4,7 @@
|
||||
|
||||
[X] Wistia Project, what access do they have?
|
||||
[X] Share button with /app/course within course viewer bright green 52 front
|
||||
[X] EXpert led categories url not working
|
||||
[X] Expert led categories url not working
|
||||
[X] Change Enroll in Course to Watch Video
|
||||
|
||||
## Notes
|
||||
@ -59,8 +59,8 @@ Problems/Opportunities:
|
||||
* They are less concerned with activated/active learners and really want to see individuals and get names and emails.
|
||||
* Can Google Apps allow _any_ google account user to sign up with Omnisend? Is this the same as social login?
|
||||
FEAT: * They want Google Social Login for external users. They also want 2FA for internal users.
|
||||
TODO: Can Google Apps allow social login? Can anyone with a google account have an account in Northpass?
|
||||
TODO: What needs to be done to setup a new instance with Google Apps auth? The documentation is really limited.
|
||||
DONE: Can Google Apps allow social login? Can anyone with a google account have an account in Northpass?
|
||||
DONE: What needs to be done to setup a new instance with Google Apps auth? The documentation is really limited.
|
||||
* What Audrius would prefer is to have public pages, but the actual content must be behind login.
|
||||
* They need to switch to a better acquisition model. The original idea was to be like Youtube, but to be honest, this will never be like Youtube.
|
||||
* Responsiveness with Screens:
|
||||
@ -71,5 +71,33 @@ TODO: What needs to be done to setup a new instance with Google Apps auth? The d
|
||||
DONE: * Submit Ticket to move the Course Image on the overview page all the way to the right of the screen.
|
||||
* Contract:
|
||||
* Doesn't need 3000 learners - wants to slash the price. 1500-2000 learners especially if they switch to Google Auth.
|
||||
TODO: Send Contract information, updating pricing for fewer learners but an additional instance.
|
||||
DONE: Send Contract information, updating pricing for fewer learners but an additional instance.
|
||||
* Audrius is away from 5th of December until the end of the year.* So if we can setup the Google Auth answers this week, it will be helpful so he doesn't have as much work to do while he is gone.
|
||||
|
||||
## 01/04/2023
|
||||
|
||||
### Bernard, Existing Customers
|
||||
|
||||
He runs Omnisend blog.
|
||||
|
||||
86-90k clients. Large volume, small cost.
|
||||
|
||||
They want an academy for existing customers to see new content and go back for a resource
|
||||
Retention and Engagement.
|
||||
Most of their "brands" are free, and then a small portion of paying customers. They have two plans: standard and pro. Both are paid.
|
||||
~$50/month for each plan. This is the main audience.
|
||||
They want to tease free customers to join and become paid customers.
|
||||
|
||||
Main pain point from their customers?
|
||||
|
||||
* Email marketing is weak for these customers, which could be 1-person shops. eCommerce shops are doing everything and are also inundated with emails. This is an alternative to facebook ads. The Omnisend academy would teach them how to better use their product. The Academy would also give them more specific content.
|
||||
|
||||
Content Creation Plan?
|
||||
|
||||
* For the time being, it would fall on Bernard. Blog is mostly SEO content and quite generic/top of funnel. So freelancers can start it and then he adds in specifics. This academy content must be built in house, leveraging agency partnerships.
|
||||
|
||||
Optimal Situation:
|
||||
|
||||
* He wants to see all the content in a catalog with category type. And be able to have users to click the category and show those courses.
|
||||
|
||||
The difficult thing for him is how to chop up the information and categories.
|
||||
|
||||
@ -1,28 +1,33 @@
|
||||
# Pipedrive
|
||||
|
||||
## 11/02/2022
|
||||
### Strategy Session - Implementation
|
||||
|
||||
### Strategy Session - Implementation
|
||||
|
||||
* Priority is indexed pages
|
||||
* What does it take to get someone certified? - James
|
||||
* What does it take to get someone certified? - James
|
||||
* Explanation of certifications administration
|
||||
* Can we trigger badging on watching videos + a quiz?
|
||||
* Segmentation to force that usage for users
|
||||
* Analytics on the front end - Segment is what they use
|
||||
* Segment then pipes into Google Analytics
|
||||
* Can we trigger badging on watching videos + a quiz?
|
||||
* Segmentation to force that usage for users
|
||||
* Analytics on the front end - Segment is what they use
|
||||
* Segment then pipes into Google Analytics
|
||||
* Data Warehouse: via Segment
|
||||
* She will get a team together to work on data together.
|
||||
* She will get a team together to work on data together.
|
||||
* Start with design only for the Courses Page
|
||||
* Tutorials page will also be design - single video tutorials
|
||||
* These are both for logged in and non-logged in users
|
||||
* Kaisa is the main content pusher
|
||||
* All videos are housed in Vidyard - Vidyard has a link and replace feature
|
||||
* Starting with 4-5 courses
|
||||
* Their "courses" are video playlists - they are mostly tutorial videos
|
||||
* Timeline? Mission team needs 7 weeks to complete everything they need to do.
|
||||
* Launch in Q1
|
||||
* Any other questions from Kaisa? Content Sessions - Training on the platform etc.
|
||||
* Patrycja: onboarding can be two phases - design and content. Norm for content and strategy and Patrycja on design and training.
|
||||
* The least experience comes in actual course creation.
|
||||
* Tutorials page will also be design - single video tutorials
|
||||
* These are both for logged in and non-logged in users
|
||||
* Kaisa is the main content pusher
|
||||
* All videos are housed in Vidyard - Vidyard has a link and replace feature
|
||||
* Starting with 4-5 courses
|
||||
* Their "courses" are video playlists - they are mostly tutorial videos
|
||||
* Timeline? Mission team needs 7 weeks to complete everything they need to do.
|
||||
* Launch in Q1
|
||||
* Any other questions from Kaisa? Content Sessions - Training on the platform etc.
|
||||
* Patrycja: onboarding can be two phases - design and content. Norm for content and strategy and Patrycja on design and training.
|
||||
* The least experience comes in actual course creation.
|
||||
|
||||
## 12/1/2022
|
||||
|
||||
### Security Meeting
|
||||
|
||||
*Message sent to Slack Channel from Kaisa:*
|
||||
@ -30,8 +35,9 @@
|
||||
>
|
||||
> @Łukasz Chołodecki
|
||||
> here’s a recap of agendas for the two meetings we have today :slightly_smiling_face:
|
||||
>
|
||||
>
|
||||
> *Security Meeting*
|
||||
>
|
||||
> * Security vulnerabilities and how Northpass security team approaches them in relation to having Northpass platform under Pipedrive domain (learn.pipedrive.com)
|
||||
> * Cookies that should be included in OneTrust, user preference to be respected. We have had a conversation with Norm around this but want to confirm we’re all good
|
||||
> * Deletion of data - how is this working on the Northpass side (for user account created for learn.pipedrive.com). Northpass has already confirmed it’s possible but we need to document how
|
||||
@ -40,52 +46,62 @@
|
||||
> * Find out what data we could bring to Pipedrive DW from Northpass native tracking and how. Things like course stats and other learning XP related items.
|
||||
> * Establish what role information we pass through our SSO plays in data flows.
|
||||
|
||||
During the SSO process, only one company is passed per user.
|
||||
During the SSO process, only one company is passed per user.
|
||||
|
||||
Overview of how they use Segment:
|
||||
|
||||
* On the website:
|
||||
* Similar to Google Analytics
|
||||
* Segment snippet is loaded on the side
|
||||
* Acts as data tracking analytical tool
|
||||
* Two things it will open up: Page & Check/Track
|
||||
* Page event gets sent, which pages they visit, user-agent, device
|
||||
* Track event, sign up button but didn't finish, email gets sent, video progression and stopping (%)
|
||||
* Segment is a JS snippet
|
||||
* This snippet is blocked by the consent OneTrust
|
||||
* Similar to Google Analytics
|
||||
* Segment snippet is loaded on the side
|
||||
* Acts as data tracking analytical tool
|
||||
* Two things it will open up: Page & Check/Track
|
||||
* Page event gets sent, which pages they visit, user-agent, device
|
||||
* Track event, sign up button but didn't finish, email gets sent, video progression and stopping (%)
|
||||
* Segment is a JS snippet
|
||||
* This snippet is blocked by the consent OneTrust
|
||||
|
||||
* In the Data Warehouse:
|
||||
* On website, segment is launched and all the events are pushed into Segment platform.
|
||||
* They can then pipeline all those events and data - sources to targets
|
||||
* Everything is collected
|
||||
* KPI Analytics within the warehouse
|
||||
* It is relying heavily on what is being tracked in the first place
|
||||
* Who landed where, how it was engaged
|
||||
* On website, segment is launched and all the events are pushed into Segment platform.
|
||||
* They can then pipeline all those events and data - sources to targets
|
||||
* Everything is collected
|
||||
* KPI Analytics within the warehouse
|
||||
* It is relying heavily on what is being tracked in the first place
|
||||
* Who landed where, how it was engaged
|
||||
|
||||
Lukasz: we don't have those events, but we can try to build them. Since this is a customized school, events are not being tracked as much. We may be able to pass this information.
|
||||
|
||||
Norm: What is the tracking unique identifier? Session ID? User ID?
|
||||
> Pipedrive will create the unique ID, or passing in a pipedrive owned identifier that can be passed to segment. They will have to define what attributes and data points that they will want in the warehouse. To add, Segment can track when there is no clear user identification. Segment has a mechanism of "anonymous ID" and try to persist it in the cookie. They can use this for non-known users.
|
||||
> Pipedrive will create the unique ID, or passing in a pipedrive owned identifier that can be passed to segment. They will have to define what attributes and data points that they will want in the warehouse. To add, Segment can track when there is no clear user identification. Segment has a mechanism of "anonymous ID" and try to persist it in the cookie. They can use this for non-known users.
|
||||
|
||||
For Northpass, most of the time, users will have identifiers. If they come from Pipedrive - they will have the Pipedrive ID. If from Northpass, our UUID will be passed. We need to ensure that param is passed. This would be ideal instead of trying to rely on the anonymous ID.
|
||||
For Northpass, most of the time, users will have identifiers. If they come from Pipedrive - they will have the Pipedrive ID. If from Northpass, our UUID will be passed. We need to ensure that param is passed. This would be ideal instead of trying to rely on the anonymous ID.
|
||||
|
||||
From Pipedrive's side, will there be a problem with how Identity Resolution gets passed?
|
||||
From Pipedrive's side, will there be a problem with how Identity Resolution gets passed?
|
||||
|
||||
Some clarification from Bjorn: are we discussing a scenario of segment tracking within all Northpass web content? Right now, design is fully under Northpass control. This makes them a little less confident, because they want to make sure it is totally trackable.
|
||||
Some clarification from Bjorn: are we discussing a scenario of segment tracking within all Northpass web content? Right now, design is fully under Northpass control. This makes them a little less confident, because they want to make sure it is totally trackable.
|
||||
|
||||
Third point: There is some native tracking. Is there a point at building everything up via Segment? Such as Course Completion, are these being passed via events? We have some webhooks, but what do they mean by "events"?
|
||||
Third point: There is some native tracking. Is there a point at building everything up via Segment? Such as Course Completion, are these being passed via events? We have some webhooks, but what do they mean by "events"?
|
||||
|
||||
Internal Questions for Pipedrive:
|
||||
* Can OneTrust share consent snippet across pages? Main snippet is from Pipedrive.com, but it would carry over to other sites from the source snippet.
|
||||
* Will we know who _hasn't_ given OneTrust consent? We could create a boolean prop to show who has or hasn't given consent.
|
||||
* Are they/can they tie this into Consent and Privacy Policies as dictated by Pipedrive? Good question (Kaisa) and this will need to be brought up in their meeting next week.
|
||||
* Would it be possible (or are they considering) to extend their Cookie Banner into Northpass? Yes, they are.
|
||||
Internal Questions for Pipedrive:
|
||||
|
||||
* Can OneTrust share consent snippet across pages? Main snippet is from Pipedrive.com, but it would carry over to other sites from the source snippet.
|
||||
* Will we know who *hasn't* given OneTrust consent? We could create a boolean prop to show who has or hasn't given consent.
|
||||
* Are they/can they tie this into Consent and Privacy Policies as dictated by Pipedrive? Good question (Kaisa) and this will need to be brought up in their meeting next week.
|
||||
* Would it be possible (or are they considering) to extend their Cookie Banner into Northpass? Yes, they are.
|
||||
* Do they tie the consent to the Pipedrive ID? No, they don't. This is completely on the user and browser side. No real client information.
|
||||
|
||||
_Umbrella Question from Bjorn:_
|
||||
*Umbrella Question from Bjorn:*
|
||||
Three main questions they want to understand
|
||||
* Acquisition - what are the sources of their arrival?
|
||||
* What are they clicking on?
|
||||
|
||||
* Acquisition - what are the sources of their arrival?
|
||||
* What are they clicking on?
|
||||
* Business Specific data - course completion, etc
|
||||
|
||||
What are the options to get the data out of Northpass and into their warehouse?
|
||||
TODO: Send Bjorn our data schema. Send him our 3-4 options in an email so he can read through the options. The options I provided were: Encrypted Dump into S3 bucket (Flink), Secure Data Transfer, Webhooks (not ideal), and Snowflake/Look for customers who are also on Snowflake or Looker.
|
||||
What are the options to get the data out of Northpass and into their warehouse?
|
||||
|
||||
DONE: Bjorn our data schema. Send him our 3-4 options in an email so he can read through the options. The options I provided were Encrypted Dump into S3 bucket (Flink), Secure Data Transfer, Webhooks (not ideal), and Snowflake/Look for customers who are also on Snowflake or Looker.
|
||||
|
||||
## 01/03/2023
|
||||
|
||||
### Content & Uploading
|
||||
|
||||
Video Promo URL not embedding correctly? Why? iFrame wasn't working, but she was using embed URL not single http:// url.
|
||||
|
||||
@ -89,12 +89,16 @@ Kathleen has some questions and/or bring something to our attention:
|
||||
- Her team is trying to anticipate some changes that are happening in the company, and looking for long-term solutions. 4-Year Plan, repackaging and bundling the products. Potentially, one of the products could have 3 different names. For example:
|
||||
- Currently: Fulfillment
|
||||
- Future: Retail, Warehouse, Vendor/Supplier - three different fulfillment product names
|
||||
- They also want to replace user guides. Putting User Guide content in Northpass. Using text editor/RTE - just copy and pasting it into Northpass.
|
||||
- They also want to replace user guides. Putting User Guide content in Northpass. Using text ed:Titor/RTE - just copy and pasting it into Northpass.
|
||||
|
||||
## 12/21/2022
|
||||
|
||||
### Tables and Content
|
||||
|
||||
They use a lot of tables in their content. They use this to display text and pictures, this is mostly used for formatting. However, they had to go into the HTML to make the borders invisible. Thankfully, they had a designer willing to help them.
|
||||
They use a lot of tables in their content. They use this to display text and pictures, this is mostly used for formatting. However, they had to go into the HTML to make the borders invisible. Thankfully, they had a designer willing to help them.
|
||||
|
||||
Froala doesn't by default allow to hide borders on tables. Can Northpass add it? Or, can I provide some quick html/css to add to any RTE that they don't want borders in.
|
||||
|
||||
## 01/04/2023
|
||||
|
||||
FEAT: Add email filter for SCA report.
|
||||
|
||||
@ -134,3 +134,18 @@ Two other items from Alexa:
|
||||
* Rich Text Editor is not always working. Support blames the additional code, but Alexa says they are only copying and pasting from Google. But then when she tries to add the Wistia
|
||||
* Skuad Skool - notifications for when a person completes 10 courses between 1/1 and 3/31
|
||||
* Skuid Skool - notifications for when someone completes the first two levels - LPs 1-9 and 10-13
|
||||
|
||||
## 01/05/2023
|
||||
|
||||
### Integrating Quizzes
|
||||
|
||||
Survey and Exam Tools are what they are looking at.
|
||||
All SCORM vendors like Captivate/Articulate Rise have hot spot.
|
||||
|
||||
* Hot spot is the main type of question they want.
|
||||
|
||||
They want to ask questions like "which option".
|
||||
She wants to be integrated into Northpass, like passing scores and milestones.
|
||||
|
||||
Pro-profs & Question Pro at the top contenders.
|
||||
Skuid's founder is retiring and joining the board and wants the RTE "beautified". Even the code guy said that.
|
||||
|
||||
@ -232,7 +232,7 @@ Molly met with Mary Potter this morning (she is head of compliance). They are ab
|
||||
|
||||
DONE: -can NP trigger an email after course completion?
|
||||
TODO: -can we see the analytics/details of the email and who it was sent to?
|
||||
TODO: -can we receive an automated report of providers who have been assigned the training but 1) haven’t accessed the training, 2) started but have not yet completed the training.
|
||||
DONE: -can we receive an automated report of providers who have been assigned the training but 1) haven’t accessed the training, 2) started but have not yet completed the training.
|
||||
DONE: Turn on Workflows for 1099 School and create course completion email workflow recipe.
|
||||
|
||||
## 12/16/2022
|
||||
@ -246,7 +246,7 @@ Her Ideas:
|
||||
* Emails to supervisors when someone hasn't completed a course.
|
||||
|
||||
Course to test: Psychiatry Tickets Training
|
||||
c147d36c-3416-49e2-b665-37342d215d9a
|
||||
c147d36c-3416-49e2-b665-37342d215d9a,
|
||||
|
||||
DONE: Add total completion percentage column to Group Reports.
|
||||
|
||||
@ -257,3 +257,14 @@ DONE: Add total completion percentage column to Group Reports.
|
||||
TODO: Delays with Webhooks. Upon course completion webhook, wait 11 months, reset or revoke course progress.
|
||||
Other pressing question: She has a list of selected/approved courses (awaiting feedback from Mary Potter), and wants to make sure all the courses are up to date with the most recent content. She wants to make sure they are setup well.
|
||||
Jenna to send the list of courses that she wants us to check and make sure they are up to date.
|
||||
|
||||
## 01/03/2023
|
||||
|
||||
### Workflows & Reports
|
||||
|
||||
Therapists have 30 days from the date they completed the managed care course.
|
||||
Add when they completed the entire group of training
|
||||
Need to know:
|
||||
* Date Managed Care/Getting Started Course completed (Start Date)
|
||||
* All Compliance Courses Completed (Completion Date)
|
||||
* 30 difference/requirement between those dates.
|
||||
|
||||
@ -245,7 +245,7 @@ Krystal still wants the custom Dashboard
|
||||
|
||||
#### (4.) PDF of Resources When Launched
|
||||
|
||||
TODO: The auto-screen capture app from Rob needs to be ready for end of January for next big push. No OneDrive access yet.
|
||||
DONE: The auto-screen capture app from Rob needs to be ready for end of January for next big push. No OneDrive access yet.
|
||||
|
||||
#### (3.) Resource Descriptions in Search Results
|
||||
|
||||
@ -266,3 +266,14 @@ Two big follow ups:
|
||||
|
||||
* The timestamp links in any activity.
|
||||
* SCORM File Testing
|
||||
|
||||
## 01/04/2023
|
||||
|
||||
### Content Sync
|
||||
|
||||
Feedback mock up:
|
||||
Is it easier to go to legal with visual stuff instead of just ideas.
|
||||
Krystal: Content wise, the big push for new resources is happening right now for the end of the month.
|
||||
Krystal will need Cam's help to great gifs, just like we did last time. Jan 31st. Some screens are already existing, so Northpass was getting an error message.
|
||||
TODO: Give Cam a heads up to look through the drafts.
|
||||
Walmart to create course images.
|
||||
|
||||
82
Scripts/API_Tests/add_learnerprop.py
Normal file
82
Scripts/API_Tests/add_learnerprop.py
Normal 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)
|
||||
36
Scripts/API_Tests/enrollments.py
Normal file
36
Scripts/API_Tests/enrollments.py
Normal 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)
|
||||
@ -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)
|
||||
|
||||
@ -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)
|
||||
|
||||
Binary file not shown.
86
Todos.md
86
Todos.md
@ -1,39 +1,81 @@
|
||||
* [ ] ([KeystoneRV](2022-11-22_keystonerv.md)) [10/27/2022] Are learners enrolled in Learning Paths, enrolled in all courses in the LP? Or just the first one? When does Enrollment start?
|
||||
* [ ] ([KeystoneRV](2022-11-22_keystonerv.md)) [10/27/2022] Are learners enrolled in Learning Paths, enrolled in all courses in the LP? Or just the first one? When does Enrollment start?
|
||||
* [X] (Talkspace) [10/27/2022] Update 2022 to 2023 on the main dashboard page - Update now
|
||||
* [ ] (Talkspace) [10/27/2022] Setup Workflow Notifications
|
||||
* [X] (Talkspace) [10/27/2022] Turn on Workflows for Talkspace BBHR
|
||||
* [ ] (Talkspace) [10/27/2022] Get designs for Learning Path Customization & we can talk about categories
|
||||
* [ ] (Talkspace) [10/27/2022] Password protection for a course when prompted.
|
||||
* [ ] (Talkspace) [10/27/2022] Password protection for a course when prompted.
|
||||
* [X] (Talkspace) [10/27/2022] See if in NPP school we can remove/delete not activated people.
|
||||
* [X] (Talkspace) [10/27/2022] Pull report of all users in NPP with activated/deactived status
|
||||
* [X] (Talkspace) [10/27/2022] Pull report of all users in NPP with activated/deactived status
|
||||
* [X] (Wildhealth) [10/31/2022] Pass PTO information onto Brian so he knows about the support tickets from Baeleigh & WildHealth.
|
||||
* [X] (Wildhealth) [10/31/2022] Update Branding on WPG - Abby to send new logo and Norm to figure out colors/branding for styling.
|
||||
* [X] (Aiim) [11/08/2022] Send DV Accredible Interface with Badging and Certs. Aiim uses accredible.
|
||||
* [ ] (Aiim) [11/08/2022] Create a QBR report for next month's meeting. Analytics, product info. Review usage, etc.
|
||||
* [ ] (Amyris) [11/08/2022] Setup Quarterly Looker Pull of MCA to be sent to Nicole. Year to Date, MCA. Next one in January.
|
||||
* [X] (SwiftMedical) [11/08/2022] Create Tabs & categories on catalog page - deciding on design.
|
||||
* [ ] (Talkspace) [11/08/2022] If a course a is at 100% and is a 1099 course, remove from dashboard
|
||||
* [X] (Wildhealth) [10/31/2022] Update Branding on WPG - Abby to send new logo and Norm to figure out colors/branding for styling.
|
||||
* [X] (Aiim) [11/08/2022] Send DV Accredible Interface with Badging and Certs. Aiim uses accredible.
|
||||
* [ ] (Aiim) [11/08/2022] Create a QBR report for next month's meeting. Analytics, product info. Review usage, etc.
|
||||
* [ ] (Amyris) [11/08/2022] Setup Quarterly Looker Pull of MCA to be sent to Nicole. Year to Date, MCA. Next one in January.
|
||||
* [X] (SwiftMedical) [11/08/2022] Create Tabs & categories on catalog page - deciding on design.
|
||||
* [ ] (Talkspace) [11/08/2022] If a course a is at 100% and is a 1099 course, remove from dashboard
|
||||
* [X] (Talkspace) [11/08/2022] Remove Footer Completely no Dash no LPs
|
||||
* [X] (Talkspace) [11/08/2022] Add Training@talkspace.com to footer
|
||||
* [X] (Talkspace) [11/08/2022] Add Training@talkspace.com to footer
|
||||
* [X] (Northpass) [11/09/2022] Start GrowthPass #6
|
||||
* [X] (Northpass) [11/09/2022] Complete SOC 2 Training in Northpass University for employees.
|
||||
* [X] (PUK) [11/09/2022] Check if we need to amend and re-send the Psychiatry-UK Agreement based on the hold until end of February.
|
||||
* [X] (PUK) [11/09/2022] Check if we need to amend and re-send the Psychiatry-UK Agreement based on the hold until end of February.
|
||||
* [X] (Northpass) [11/09/2022] Talk to prouct about updating the default admin invitation email content with support links, northpass academy, etc
|
||||
* [X] (SPSCommerce) [11/09/2022] Create some HTML design updates for under the normal cards on the training events page.
|
||||
* [X] (Skuid) [11/11/2022] Send Jessica questions about who is the super admin in Hubspot and ask her to setup a private or public app for our integrations.
|
||||
* [X] (SPSCommerce) [11/09/2022] Create some HTML design updates for under the normal cards on the training events page.
|
||||
* [X] (Skuid) [11/11/2022] Send Jessica questions about who is the super admin in Hubspot and ask her to setup a private or public app for our integrations.
|
||||
* [X] (Skuid) [11/11/2022] Send Alexa the WildHealth Style report for each Learning Path as a test.
|
||||
* [X] (Skuid) [11/11/2022] Ask Chris to help with Learning Paths and Skuid Reports.
|
||||
* [ ] (Zenjob) [11/11/2022] Ask if we can do a custom integration with Salesforce to send assignment submission pictures
|
||||
* [X] (Skuid) [11/11/2022] Ask Chris to help with Learning Paths and Skuid Reports.
|
||||
* [ ] (Zenjob) [11/11/2022] Ask if we can do a custom integration with Salesforce to send assignment submission pictures
|
||||
* [ ] (Zenjob) [11/11/2022] Can we pass information INTO a Typeform survey so that a learner doesn't have to enter their name?
|
||||
* [X] (Zenjob) [11/11/2022] Change Back to my courses to the correct german ([see notes](Zenjob.md)) and remove `/app/dashboards` link, it should go to `/app/courses`
|
||||
* [ ] (Zenjob) [11/11/2022] Ask Sophie about Shopify integration details and what they want to accomplish with selling courses.
|
||||
* [ ] (Zenjob) [11/11/2022] Ask Sophie about Shopify integration details and what they want to accomplish with selling courses.
|
||||
* [ ] (Northpass) [11/11/2022] Submit ticket for a custom page creation in Northpass Academy that ONLY shows Admin Onboarding Courses.
|
||||
* [X] (JJSV) [11/14/2022] Contact us should go to a FORM not an email - remove link all together for now make it inactive
|
||||
* [X] (JJSV) [11/14/2022] Opt out for emails - Comms Changes
|
||||
* [X] (JJSV) [11/14/2022] Upload the second video to the properties for us to test for playability.If it works, Melinda can feel confident about future videos.
|
||||
* [X] (JJSV) [11/14/2022] Opt out for emails - Comms Changes
|
||||
* [X] (JJSV) [11/14/2022] Upload the second video to the properties for us to test for playability.If it works, Melinda can feel confident about future videos.
|
||||
* [ ] (JJSV) [11/14/2022] Update Registration Privacy Policy with Vision Pro Legal notice at "jnjvisionpro.com/legal-notice"
|
||||
* [X] (JJSV) [11/14/2022] MAKE SURE YOU UPLOAD THE AUDIO STUFF TODAY! Upload podcasts to AWS and upload the SCORM so she has examples of both.
|
||||
* [X] (JJSV) [11/14/2022] MAKE SURE YOU UPLOAD THE AUDIO STUFF TODAY! Upload podcasts to AWS and upload the SCORM so she has examples of both.
|
||||
* [ ] (TripleSeat) [11/15/2022] Get Brian ChurnZero information
|
||||
* [ ] (TripleSeat) [11/15/2022] Screenshots of AppCues Examples
|
||||
* [X] (TripleSeat) [11/15/2022] Send Holly/Katie details of what needs to be done for embedding.
|
||||
* [X] (Talkspace) [11/15/2022] Create video showing how to setup a Webhook in Fountain for Molly and Taylor to talk to Gracie about. The goal is for a webhook to fire when someone completes a stage in Fountain that attests that they are seeing clients and that would enroll them in their appropriate group and courses.
|
||||
* [ ] (TripleSeat) [11/15/2022] Screenshots of AppCues Examples
|
||||
* [X] (TripleSeat) [11/15/2022] Send Holly/Katie details of what needs to be done for embedding.
|
||||
* [X] (Talkspace) [11/15/2022] Create video showing how to setup a Webhook in Fountain for Molly and Taylor to talk to Gracie about. The goal is for a webhook to fire when someone completes a stage in Fountain that attests that they are seeing clients and that would enroll them in their appropriate group and courses.
|
||||
|
||||
## Meeting with Travis
|
||||
|
||||
Figure out:How to offload implementation, support, and analytics from CSM
|
||||
We should NOT be doing those three things
|
||||
Figure out with Rob how to allow analytics team to create custom dashboards
|
||||
|
||||
Goal for Norm and Travis is to reduce variables and having CSMs create workflows on their own. They should start using a workflow we set out for them.
|
||||
|
||||
Support=0%
|
||||
Implementation = 20% (content and strategy)
|
||||
Analytics = 10% (delivery and showcase only)
|
||||
|
||||
Each CSM should have a visualization tool of their customer's hierarchy and structure
|
||||
DONE: Create skeleton mind map for CSMs to use.
|
||||
DONE: Create structure of daily workflows and how to be efficient at their job
|
||||
|
||||
Golden rules:
|
||||
|
||||
* Maintain a minimum of x points of contact (if you have 2, make 3.)
|
||||
* On demand be able to articulate use case and what their client is trying to accomplish
|
||||
* Short and long term goals for the client
|
||||
* Renewal date and estimated amount
|
||||
* Recent usage and changes over the last 2 months (weekly changes)
|
||||
* Biggest pain point with Northpass
|
||||
* Biggest satisfaction with Northpass
|
||||
|
||||
Travis is going to pull together an account health meeting for the team that looks at:
|
||||
|
||||
* Renewals within 6 months. We will go line-by-line.
|
||||
* Norm and Travis to
|
||||
|
||||
### CSM Assignments and Territories
|
||||
|
||||
Google Slides of each quarter for CSMs to go through.
|
||||
|
||||
## 01/04/2023
|
||||
|
||||
### Safic-Alcan, Urgent Catch up
|
||||
|
||||
Use case: users must login
|
||||
Can one of the fields be a list of groups?
|
||||
|
||||
Reference in New Issue
Block a user