From 37f6311d4b97b4084bc3035ae2139d231e3fca93 Mon Sep 17 00:00:00 2001 From: Normanras <44226464+Normanras@users.noreply.github.com> Date: Mon, 20 Feb 2023 21:35:44 -0500 Subject: [PATCH] Figured out most data points I would like. Need to clean it up and figure out adding it to a database. --- apiscraper/__pycache__/items.cpython-311.pyc | Bin 728 -> 731 bytes apiscraper/items.py | 2 +- .../__pycache__/dev_spider.cpython-311.pyc | Bin 4077 -> 4491 bytes apiscraper/spiders/dev_spider.py | 23 +- apiscraper/spiders/outputtest.json | 202 ------------------ apiscraper/spiders/outputtest3.json | 202 ++++++++++++++++++ 6 files changed, 221 insertions(+), 208 deletions(-) delete mode 100644 apiscraper/spiders/outputtest.json create mode 100644 apiscraper/spiders/outputtest3.json diff --git a/apiscraper/__pycache__/items.cpython-311.pyc b/apiscraper/__pycache__/items.cpython-311.pyc index 1ee7fe6ffacb95a1232708dfdb1966dd47dc623d..e5db0d229ccef334440ba38d6880ddac9a6654c7 100644 GIT binary patch delta 110 zcmcb?dYhGZIWI340}yy${G5DXBX2At7iUpwVSGViQDW}oLdL~>0-_UGC$djrZ}0@c d$x2L(rV<|*SQ*iY2`(Q&qF=B`6$t<>000a39SZ;e delta 107 zcmcc3dV`gBIWI340}$*#^*MR(M&4LPcD91VqQu Zqp9cz23AINVuH&@kmwgIQbhtl(*fuz9P9u9 diff --git a/apiscraper/items.py b/apiscraper/items.py index 1786649..0c367b3 100644 --- a/apiscraper/items.py +++ b/apiscraper/items.py @@ -7,4 +7,4 @@ class EndpointItems(Item): method = Field() endpoint = Field() inclusions = Field() - params = Field() + req_param = Field() diff --git a/apiscraper/spiders/__pycache__/dev_spider.cpython-311.pyc b/apiscraper/spiders/__pycache__/dev_spider.cpython-311.pyc index f61f678c39608977a468aee895fdcb695b12ddb9..ea1d4adfd8b2c940c59b233a63b5073293c21dc4 100644 GIT binary patch delta 1075 zcmZ`#NoX5q6rSIjU0ZA|qu7xwX{5xmErcapVnY__Ar92a0!d4a>nNGAJw}$5(a3d& zQA|!X?M39ZB+wp24z?ko5OPT_?WvR;3NvQFgL|l;w?aWFIXC@foy>RIb3TCO3@ICngu2SKCej5?Q6RbzlqM)Bl zk_IWc;Vv0P9{7Qrgen<>zv%Z0^nIV?Gw5|ffh!%sZLtxXRXaL^Q1&%Yg`!@{K zV!QE8?%%67crEa5A!6n5{H|~Cn$U|&0V$yMMiNp`3T^k{FTi>vOUNKryvN?t@HUCF zSdZkXaLk6cjDR8_u){p3%6Av4CAG8)=h!VY24Aq5aDHB=FKUWbmJe9DB30Lvil(3K zrZ)5QxpL{YT+V6ohBlJXXLGsHxr>T)E?F&U%h@GayP3bFuGOoxLtLoW6=_ypy)CP? zWu;n6&gUd$y{mH*Jrg%QYInfmb?S;LO9zDhNw;-PE2&y7`>CQWkKi#d$bB$Cs&Rag zn&?8T3sIY+c<8fH#N72s! z{MAG}xy3ezEH>%{PdzL?D4OC~D>!8br#eJ}OTH!&K)TPMHjKNIn{9Dy=ltXIW`4mE zZ`tCleQ|M5Tr`)~EU{{f)qQbePu#FX-4^w&ndZlqC*Dqt?-U;w&BCgcs@SQ@eoEa- zsa8s}QyQksS)PO=3_ra0;GTK9ZVBtQu)Z(odxCBWhAkLdGmc*{{h||ywj$BSd(jm>b_FM+(#bUpEmsyPBh&r+tEUkZ}ROE!46G?qK`hb zgK0+`+nuq+Nhh7%U9r?6fX3Ho`3C$p>PU+ zUB;z`@pHf|mXvZ`mDO>0mJq&@^1|N6-cM$bbF) ZB0@tQ;=i#;f8~9Bn0xa-40RBX{~MQ)Dq8>m delta 889 zcmZ{h&1(}u7{+I^+08b)$tLaQqt!OsuCa|Z#H3amE%netdyx878$T!-lbCL-Y1pJ_ zWs8cJq6b4qXhDVGp)FXD;-!fA4|qvr!6hQplOPIP6mNpFX{#;h!@SSTJMVAiU3MOb z-+cB(o6QQauD$)9h%qbn4+QK$Ux-zLohH!=)rj7hSCLNcby<5crI?eZMgy;@L?Wk| zHz>%UPhuIE7nV+RkUB&d z`6<%nvn$kN@YJ*b0eFsMLl7v`-LncTS&TEc6>4XB+EQ?Cp#Ws+w$_TJ;M!UPkmQnF z!Lu!QB%KQ;+y=*n(og{zb}L)1Uohh;jtwn0Y|_UzH)3D}%s~i};7lz7{7{w4jmM{M z$WnT&a48p0r>a&dn;4(WOB30AmCD8C`1L&cO3%P<6s-%mBcq{0>Sm!Ma4|AkrBm5t zZbHfy(10~gn`8m^kz3I#YjFQ9=kQoc$YNA5ZWW}wFf1DnDl>)|-yDE)y)oHlnHJQ} zgdmM#%n?*#TxJ^Yqu0zncn^JMPPR7tX6T}~LN{sr?zy4ap|aRh;iD=a)q%UNZ5_DL zIkp{Y=nmVqM-w|2`=0fcBT_}osAA^5n0+T^D`HL+b2Ed*3l&z-&{5lo%WIrxo>e)2 znG3IZg_1}01~gtM^(-A%#i&l0f^MB4+C625h=*3y}>v_+wX4!Z8I8qmK?R>_tBvr~CUM W+@*tmdy#r%Td&oA{D+X6aQokU65AI5 diff --git a/apiscraper/spiders/dev_spider.py b/apiscraper/spiders/dev_spider.py index 8940968..752d739 100644 --- a/apiscraper/spiders/dev_spider.py +++ b/apiscraper/spiders/dev_spider.py @@ -8,7 +8,7 @@ class ApiSpider(scrapy.Spider): def start_requests(self): urls = [ - "https://developers.northpass.com/reference/get_v2-activities", + "https://developers.northpass.com/reference/get_v2-activities" ] for url in urls: yield scrapy.Request(url=url, meta=dict( @@ -27,13 +27,25 @@ class ApiSpider(scrapy.Spider): end_item = EndpointItems() end_item['inclusions'] = [] - end_item['params'] = [] + end_item['req_param'] = [] for item in response.xpath('//*[@id="Explorer"]'): end_item['title'] = response.xpath('//*[@id="content"]/header[1]/div[1]/h1/text()').get() + end_item['method'] = response.xpath('//*[@id="content"]/header[1]/div[2]/span[1]/text()').get() - end_item['endpoint'] = response.xpath('//*[@id="content"]/header[1]/div[2]/span[2]/text()[2]').get() + + end_item['endpoint'] = response.xpath('//*[@id="content"]/header[1]/div[2]/span[2]').xpath("@title").extract() + + end_item['req_param'] = response.xpath('//*[@id="content"]/header[1]/div[2]/span[2]/label/text()').get() + required = response.xpath('//*[@id="path-getV2GroupsGroup_uuidMemberships"]/div/div[1]/div/div[2]/text()').get() + if required is not None: + if "required" in required: + req_param = end_item['req_param'] + else: + pass + else: + req_param = "" + end_item['inclusions'].append(response.xpath('//*[starts-with(@id,"query")]/div/p/code/span[position() >= 1 and not(position() > 15)]/text()').get()) - #end_item['params'].append(response.xpath('//*[starts-with(@id,"path"]/div/div[1]/div/label/text()').get()) if end_item['inclusions'] is not None: inclusions = end_item['inclusions'] else: @@ -43,6 +55,7 @@ class ApiSpider(scrapy.Spider): end_item['title'] : { 'method' : end_item['method'], 'endpoint' : end_item['endpoint'], + 'req_param' : req_param, 'inclusions' : inclusions } } @@ -53,7 +66,7 @@ class ApiSpider(scrapy.Spider): self.log(northpass_endpoints) next_page = response.xpath('//*[@id="content"]/div[4]/nav/a[2]/@href').get() - self.log(f"The next page is {next_page}") + # self.log(f"The next page is {next_page}") if next_page is not None: nexturl = response.urljoin(next_page) diff --git a/apiscraper/spiders/outputtest.json b/apiscraper/spiders/outputtest.json deleted file mode 100644 index f0331a9..0000000 --- a/apiscraper/spiders/outputtest.json +++ /dev/null @@ -1,202 +0,0 @@ -[ -{"List activities": {"method": "get", "endpoint": "/v2/activities"}}, -{}, -{"Fetch an activity": {"method": "get", "endpoint": "/v2/activities/"}}, -{}, -{"BambooHR configuration": {"method": "get", "endpoint": "/v2/apps/bamboo_hr"}}, -{}, -{"Update BambooHR configuration": {"method": "put", "endpoint": "/v2/apps/bamboo_hr"}}, -{}, -{"Delete BambooHR configuration": {"method": "delete", "endpoint": "/v2/apps/bamboo_hr"}}, -{}, -{"List assignment submissions": {"method": "get", "endpoint": "/v2/assignments/"}}, -{}, -{"Fetch an assignment submission": {"method": "get", "endpoint": "/v2/assignments/"}}, -{}, -{"List all assignments": {"method": "get", "endpoint": "/v2/assignments"}}, -{}, -{"Bulk add courses to groups": {"method": "post", "endpoint": "/v2/bulk/groups/courses"}}, -{}, -{"Bulk create groups for a school": {"method": "post", "endpoint": "/v2/bulk/groups"}}, -{}, -{"Bulk add people to groups": {"method": "post", "endpoint": "/v2/bulk/people/membership"}}, -{}, -{"Bulk enroll people to courses [deprecated]": {"method": "post", "endpoint": "/v2/bulk/enrollments"}}, -{}, -{"Bulk enroll people to courses": {"method": "post", "endpoint": "/v2/bulk/people/course"}}, -{}, -{"Bulk invite people to a school": {"method": "post", "endpoint": "/v2/bulk/people"}}, -{}, -{"Bulk resend school inviation to people": {"method": "post", "endpoint": "/v2/bulk/people/resend_invitation"}}, -{}, -{"List categories": {"method": "get", "endpoint": "/v2/categories"}}, -{}, -{"Create a category": {"method": "post", "endpoint": "/v2/categories"}}, -{}, -{"Fetch a category": {"method": "get", "endpoint": "/v2/categories/"}}, -{}, -{"Update a category": {"method": "put", "endpoint": "/v2/categories/"}}, -{}, -{"Delete a category": {"method": "delete", "endpoint": "/v2/categories/"}}, -{}, -{"Resend communication": {"method": "post", "endpoint": "/v2/communications/deliveries/"}}, -{}, -{"List deliveries": {"method": "get", "endpoint": "/v2/communications/deliveries/"}}, -{}, -{"Update attendance confirmation notification": {"method": "put", "endpoint": "/v2/communications/emails/attendance_confirmation"}}, -{}, -{"Update courses incomplete notification": {"method": "put", "endpoint": "/v2/communications/emails/courses_incomplete_notification"}}, -{}, -{"Update new courses notification": {"method": "put", "endpoint": "/v2/communications/emails/new_courses_notification"}}, -{}, -{"Update training session registration notification": {"method": "put", "endpoint": "/v2/communications/emails/training_session_registration_confirmation"}}, -{}, -{"List activities for a course": {"method": "get", "endpoint": "/v2/courses/"}}, -{}, -{"List groups not yet associated with course": {"method": "get", "endpoint": "/v2/courses/"}}, -{}, -{"List people not yet enrolled with course": {"method": "get", "endpoint": "/v2/courses/"}}, -{}, -{"List enrollments for a course": {"method": "get", "endpoint": "/v2/courses/"}}, -{}, -{"Retake a course": {"method": "post", "endpoint": "/v2/courses/"}}, -{}, -{"List courses": {"method": "get", "endpoint": "/v2/courses"}}, -{}, -{"List credential achievements": {"method": "get", "endpoint": "/v2/credentials/"}}, -{}, -{"List credential courses": {"method": "get", "endpoint": "/v2/credentials/"}}, -{}, -{"Delete course credential": {"method": "delete", "endpoint": "/v2/credentials/"}}, -{}, -{"List credentials": {"method": "get", "endpoint": "/v2/credentials"}}, -{}, -{"Delete a credential": {"method": "delete", "endpoint": "/v2/credentials/"}}, -{}, -{"List custom templates": {"method": "get", "endpoint": "/v2/custom_templates"}}, -{}, -{"Create a custom template": {"method": "post", "endpoint": "/v2/custom_templates"}}, -{}, -{"Delete a custom template": {"method": "delete", "endpoint": "/v2/custom_templates/"}}, -{}, -{"List email senders": {"method": "get", "endpoint": "/v2/email_domains/"}}, -{}, -{"Update an email sender": {"method": "put", "endpoint": "/v2/email_domains/"}}, -{}, -{"Delete an email sender": {"method": "delete", "endpoint": "/v2/email_domains/"}}, -{}, -{"List email domains": {"method": "get", "endpoint": "/v2/email_domains"}}, -{}, -{"Create an email domain": {"method": "post", "endpoint": "/v2/email_domains"}}, -{}, -{"Delete an email domain": {"method": "delete", "endpoint": "/v2/email_domains/"}}, -{}, -{"List events": {"method": "get", "endpoint": "/v2/events"}}, -{}, -{"List group's courses": {"method": "get", "endpoint": "/v2/groups/"}}, -{}, -{"List group's memberships": {"method": "get", "endpoint": "/v2/groups/"}}, -{}, -{"Add courses to a group": {"method": "post", "endpoint": "/v2/groups/"}}, -{}, -{"Add people to a group": {"method": "post", "endpoint": "/v2/groups/"}}, -{}, -{"List groups": {"method": "get", "endpoint": "/v2/groups"}}, -{}, -{"Create a group": {"method": "post", "endpoint": "/v2/groups"}}, -{}, -{"Fetch a group": {"method": "get", "endpoint": "/v2/groups/"}}, -{}, -{"Update a group": {"method": "put", "endpoint": "/v2/groups/"}}, -{}, -{"Delete a group": {"method": "delete", "endpoint": "/v2/groups/"}}, -{}, -{"Deactivate a person": {"method": "post", "endpoint": "/v2/people/"}}, -{}, -{"Reactivate a person": {"method": "delete", "endpoint": "/v2/people/"}}, -{}, -{"Associate a person with a course": {"method": "post", "endpoint": "/v2/people/"}}, -{}, -{"Remove a person from a course": {"method": "delete", "endpoint": "/v2/people/"}}, -{}, -{"Add groups to a person": {"method": "post", "endpoint": "/v2/people/"}}, -{}, -{"Remove a person from a group": {"method": "delete", "endpoint": "/v2/people/"}}, -{}, -{"List people": {"method": "get", "endpoint": "/v2/people"}}, -{}, -{"Create a person": {"method": "post", "endpoint": "/v2/people"}}, -{}, -{"Fetch a person": {"method": "get", "endpoint": "/v2/people/"}}, -{}, -{"Update a person": {"method": "put", "endpoint": "/v2/people/"}}, -{}, -{"Delete a person": {"method": "delete", "endpoint": "/v2/people/"}}, -{}, -{"List question banks": {"method": "get", "endpoint": "/v2/question_banks"}}, -{}, -{"Create a question bank": {"method": "post", "endpoint": "/v2/question_banks"}}, -{}, -{"Fetch a question bank": {"method": "get", "endpoint": "/v2/question_banks/"}}, -{}, -{"List learner quiz answers": {"method": "get", "endpoint": "/v2/quiz_attempts/"}}, -{}, -{"List quizzes": {"method": "get", "endpoint": "/v2/quizzes"}}, -{}, -{"List all assignment submissions": {"method": "get", "endpoint": "/v2/submissions"}}, -{}, -{"List all configured webhook endpoints": {"method": "get", "endpoint": "/v2/webhook_endpoints"}}, -{}, -{"Creates new webhook endpoint": {"method": "post", "endpoint": "/v2/webhook_endpoints"}}, -{}, -{"Updates webhook endpoint": {"method": "put", "endpoint": "/v2/webhook_endpoints/"}}, -{}, -{"Delete a webhook endpoint": {"method": "delete", "endpoint": "/v2/webhook_endpoints/"}}, -{}, -{"List all sent webhooks": {"method": "get", "endpoint": "/v2/webhooks"}}, -{}, -{"Bulk fill courses property values": {"method": "post", "endpoint": "/v2/properties/courses/bulk"}}, -{}, -{"Bulk clear courses property values": {"method": "delete", "endpoint": "/v2/properties/courses/bulk"}}, -{}, -{"Bulk fill people property values": {"method": "post", "endpoint": "/v2/properties/people/bulk"}}, -{}, -{"Bulk clear people property values": {"method": "delete", "endpoint": "/v2/properties/people/bulk"}}, -{}, -{"List properties available for courses": {"method": "get", "endpoint": "/v2/properties/courses/properties"}}, -{}, -{"Get available course properties with values": {"method": "get", "endpoint": "/v2/properties/courses/"}}, -{}, -{"List created property definitions": {"method": "get", "endpoint": "/v2/properties/conditional"}}, -{}, -{"Create conditional property with mapping": {"method": "post", "endpoint": "/v2/properties/conditional"}}, -{}, -{"Delete conditional property": {"method": "delete", "endpoint": "/v2/properties/conditional/"}}, -{}, -{"Update conditional property": {"method": "patch", "endpoint": "/v2/properties/conditional/"}}, -{}, -{"List properties available for people": {"method": "get", "endpoint": "/v2/properties/people/properties"}}, -{}, -{"Get available person properties with values": {"method": "get", "endpoint": "/v2/properties/people/"}}, -{}, -{"List unique values for property": {"method": "get", "endpoint": "/v2/properties/property_definitions/"}}, -{}, -{"List created property definitions": {"method": "get", "endpoint": "/v2/properties/property_definitions"}}, -{}, -{"Create property definition": {"method": "post", "endpoint": "/v2/properties/property_definitions"}}, -{}, -{"Get property definition": {"method": "get", "endpoint": "/v2/properties/property_definitions/"}}, -{}, -{"Delete property definition": {"method": "delete", "endpoint": "/v2/properties/property_definitions/"}}, -{}, -{"Create property definition": {"method": "patch", "endpoint": "/v2/properties/property_definitions/"}}, -{}, -{"List properties available for school": {"method": "get", "endpoint": "/v2/properties/school/properties"}}, -{}, -{"Get available school properties with values": {"method": "get", "endpoint": "/v2/properties/school"}}, -{}, -{"Clear school properties with values": {"method": "delete", "endpoint": "/v2/properties/school"}}, -{}, -{"Fill school properties with values": {"method": "patch", "endpoint": "/v2/properties/school"}}, -{} -] \ No newline at end of file diff --git a/apiscraper/spiders/outputtest3.json b/apiscraper/spiders/outputtest3.json new file mode 100644 index 0000000..f84023c --- /dev/null +++ b/apiscraper/spiders/outputtest3.json @@ -0,0 +1,202 @@ +[ +{"List activities": {"method": "get", "endpoint": ["https://api.northpass.com/v2/activities"], "req_param": "", "inclusions": ["course"]}}, +{}, +{"Fetch an activity": {"method": "get", "endpoint": ["https://api.northpass.com/v2/activities/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"BambooHR configuration": {"method": "get", "endpoint": ["https://api.northpass.com/v2/apps/bamboo_hr"], "req_param": "", "inclusions": [null]}}, +{}, +{"Update BambooHR configuration": {"method": "put", "endpoint": ["https://api.northpass.com/v2/apps/bamboo_hr"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete BambooHR configuration": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/apps/bamboo_hr"], "req_param": "", "inclusions": [null]}}, +{}, +{"List assignment submissions": {"method": "get", "endpoint": ["https://api.northpass.com/v2/assignments/{assignment_uuid}/submissions"], "req_param": "", "inclusions": ["assignment"]}}, +{}, +{"Fetch an assignment submission": {"method": "get", "endpoint": ["https://api.northpass.com/v2/assignments/{assignment_uuid}/submissions/{assignment_submission_uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List all assignments": {"method": "get", "endpoint": ["https://api.northpass.com/v2/assignments"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk add courses to groups": {"method": "post", "endpoint": ["https://api.northpass.com/v2/bulk/groups/courses"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk create groups for a school": {"method": "post", "endpoint": ["https://api.northpass.com/v2/bulk/groups"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk add people to groups": {"method": "post", "endpoint": ["https://api.northpass.com/v2/bulk/people/membership"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk enroll people to courses [deprecated]": {"method": "post", "endpoint": ["https://api.northpass.com/v2/bulk/enrollments"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk enroll people to courses": {"method": "post", "endpoint": ["https://api.northpass.com/v2/bulk/people/course"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk invite people to a school": {"method": "post", "endpoint": ["https://api.northpass.com/v2/bulk/people"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk resend school inviation to people": {"method": "post", "endpoint": ["https://api.northpass.com/v2/bulk/people/resend_invitation"], "req_param": "", "inclusions": [null]}}, +{}, +{"List categories": {"method": "get", "endpoint": ["https://api.northpass.com/v2/categories"], "req_param": "", "inclusions": [null]}}, +{}, +{"Create a category": {"method": "post", "endpoint": ["https://api.northpass.com/v2/categories"], "req_param": "", "inclusions": [null]}}, +{}, +{"Fetch a category": {"method": "get", "endpoint": ["https://api.northpass.com/v2/categories/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Update a category": {"method": "put", "endpoint": ["https://api.northpass.com/v2/categories/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete a category": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/categories/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Resend communication": {"method": "post", "endpoint": ["https://api.northpass.com/v2/communications/deliveries/{delivery_uuid}/resend"], "req_param": "", "inclusions": [null]}}, +{}, +{"List deliveries": {"method": "get", "endpoint": ["https://api.northpass.com/v2/communications/deliveries/"], "req_param": "", "inclusions": ["person"]}}, +{}, +{"Update attendance confirmation notification": {"method": "put", "endpoint": ["https://api.northpass.com/v2/communications/emails/attendance_confirmation"], "req_param": "", "inclusions": [null]}}, +{}, +{"Update courses incomplete notification": {"method": "put", "endpoint": ["https://api.northpass.com/v2/communications/emails/courses_incomplete_notification"], "req_param": "", "inclusions": [null]}}, +{}, +{"Update new courses notification": {"method": "put", "endpoint": ["https://api.northpass.com/v2/communications/emails/new_courses_notification"], "req_param": "", "inclusions": [null]}}, +{}, +{"Update training session registration notification": {"method": "put", "endpoint": ["https://api.northpass.com/v2/communications/emails/training_session_registration_confirmation"], "req_param": "", "inclusions": [null]}}, +{}, +{"List activities for a course": {"method": "get", "endpoint": ["https://api.northpass.com/v2/courses/{course_uuid}/activities"], "req_param": "", "inclusions": ["course"]}}, +{}, +{"List groups not yet associated with course": {"method": "get", "endpoint": ["https://api.northpass.com/v2/courses/{course_uuid}/available_groups"], "req_param": "", "inclusions": [null]}}, +{}, +{"List people not yet enrolled with course": {"method": "get", "endpoint": ["https://api.northpass.com/v2/courses/{course_uuid}/available_people"], "req_param": "", "inclusions": [null]}}, +{}, +{"List enrollments for a course": {"method": "get", "endpoint": ["https://api.northpass.com/v2/courses/{course_uuid}/enrollments"], "req_param": "", "inclusions": ["person"]}}, +{}, +{"Retake a course": {"method": "post", "endpoint": ["https://api.northpass.com/v2/courses/{course_uuid}/people/{person_uuid}/retakes"], "req_param": "", "inclusions": [null]}}, +{}, +{"List courses": {"method": "get", "endpoint": ["https://api.northpass.com/v2/courses"], "req_param": "", "inclusions": ["instructor_partnerships"]}}, +{}, +{"List credential achievements": {"method": "get", "endpoint": ["https://api.northpass.com/v2/credentials/{credential_uuid}/achievements"], "req_param": "", "inclusions": [null]}}, +{}, +{"List credential courses": {"method": "get", "endpoint": ["https://api.northpass.com/v2/credentials/{credential_uuid}/courses"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete course credential": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/credentials/{credential_uuid}/courses/{course_uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List credentials": {"method": "get", "endpoint": ["https://api.northpass.com/v2/credentials"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete a credential": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/credentials/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List custom templates": {"method": "get", "endpoint": ["https://api.northpass.com/v2/custom_templates"], "req_param": "", "inclusions": [null]}}, +{}, +{"Create a custom template": {"method": "post", "endpoint": ["https://api.northpass.com/v2/custom_templates"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete a custom template": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/custom_templates/"], "req_param": "", "inclusions": [null]}}, +{}, +{"List email senders": {"method": "get", "endpoint": ["https://api.northpass.com/v2/email_domains/{email_domain_uuid}/email_senders"], "req_param": "", "inclusions": [null]}}, +{}, +{"Update an email sender": {"method": "put", "endpoint": ["https://api.northpass.com/v2/email_domains/{email_domain_uuid}/email_senders/{email_sender_uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete an email sender": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/email_domains/{email_domain_uuid}/email_senders/{email_sender_uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List email domains": {"method": "get", "endpoint": ["https://api.northpass.com/v2/email_domains"], "req_param": "", "inclusions": ["email_senders"]}}, +{}, +{"Create an email domain": {"method": "post", "endpoint": ["https://api.northpass.com/v2/email_domains"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete an email domain": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/email_domains/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List events": {"method": "get", "endpoint": ["https://api.northpass.com/v2/events"], "req_param": "", "inclusions": [null]}}, +{}, +{"List group's courses": {"method": "get", "endpoint": ["https://api.northpass.com/v2/groups/{group_uuid}/courses"], "req_param": "", "inclusions": [null]}}, +{}, +{"List group's memberships": {"method": "get", "endpoint": ["https://api.northpass.com/v2/groups/{group_uuid}/memberships"], "req_param": "{group_uuid}", "inclusions": [null]}}, +{}, +{"Add courses to a group": {"method": "post", "endpoint": ["https://api.northpass.com/v2/groups/{group_uuid}/relationships/courses"], "req_param": "", "inclusions": [null]}}, +{}, +{"Add people to a group": {"method": "post", "endpoint": ["https://api.northpass.com/v2/groups/{group_uuid}/relationships/people"], "req_param": "", "inclusions": [null]}}, +{}, +{"List groups": {"method": "get", "endpoint": ["https://api.northpass.com/v2/groups"], "req_param": "", "inclusions": [null]}}, +{}, +{"Create a group": {"method": "post", "endpoint": ["https://api.northpass.com/v2/groups"], "req_param": "", "inclusions": [null]}}, +{}, +{"Fetch a group": {"method": "get", "endpoint": ["https://api.northpass.com/v2/groups/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Update a group": {"method": "put", "endpoint": ["https://api.northpass.com/v2/groups/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete a group": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/groups/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Deactivate a person": {"method": "post", "endpoint": ["https://api.northpass.com/v2/people/{person_uuid}/deactivations"], "req_param": "", "inclusions": [null]}}, +{}, +{"Reactivate a person": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/people/{person_uuid}/deactivations"], "req_param": "", "inclusions": [null]}}, +{}, +{"Associate a person with a course": {"method": "post", "endpoint": ["https://api.northpass.com/v2/people/{person_uuid}/relationships/courses"], "req_param": "", "inclusions": [null]}}, +{}, +{"Remove a person from a course": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/people/{person_uuid}/relationships/courses"], "req_param": "", "inclusions": [null]}}, +{}, +{"Add groups to a person": {"method": "post", "endpoint": ["https://api.northpass.com/v2/people/{person_uuid}/relationships/groups"], "req_param": "", "inclusions": [null]}}, +{}, +{"Remove a person from a group": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/people/{person_uuid}/relationships/groups"], "req_param": "", "inclusions": [null]}}, +{}, +{"List people": {"method": "get", "endpoint": ["https://api.northpass.com/v2/people"], "req_param": "", "inclusions": ["school"]}}, +{}, +{"Create a person": {"method": "post", "endpoint": ["https://api.northpass.com/v2/people"], "req_param": "", "inclusions": [null]}}, +{}, +{"Fetch a person": {"method": "get", "endpoint": ["https://api.northpass.com/v2/people/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Update a person": {"method": "put", "endpoint": ["https://api.northpass.com/v2/people/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete a person": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/people/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List question banks": {"method": "get", "endpoint": ["https://api.northpass.com/v2/question_banks"], "req_param": "", "inclusions": ["dynamic_quizzes"]}}, +{}, +{"Create a question bank": {"method": "post", "endpoint": ["https://api.northpass.com/v2/question_banks"], "req_param": "", "inclusions": [null]}}, +{}, +{"Fetch a question bank": {"method": "get", "endpoint": ["https://api.northpass.com/v2/question_banks/{uuid}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List learner quiz answers": {"method": "get", "endpoint": ["https://api.northpass.com/v2/quiz_attempts/{quiz_attempt_uuid}/answers"], "req_param": "", "inclusions": [null]}}, +{}, +{"List quizzes": {"method": "get", "endpoint": ["https://api.northpass.com/v2/quizzes"], "req_param": "", "inclusions": ["activities"]}}, +{}, +{"List all assignment submissions": {"method": "get", "endpoint": ["https://api.northpass.com/v2/submissions"], "req_param": "", "inclusions": ["assignment"]}}, +{}, +{"List all configured webhook endpoints": {"method": "get", "endpoint": ["https://api.northpass.com/v2/webhook_endpoints"], "req_param": "", "inclusions": [null]}}, +{}, +{"Creates new webhook endpoint": {"method": "post", "endpoint": ["https://api.northpass.com/v2/webhook_endpoints"], "req_param": "", "inclusions": [null]}}, +{}, +{"Updates webhook endpoint": {"method": "put", "endpoint": ["https://api.northpass.com/v2/webhook_endpoints/{id}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete a webhook endpoint": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/webhook_endpoints/{id}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List all sent webhooks": {"method": "get", "endpoint": ["https://api.northpass.com/v2/webhooks"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk fill courses property values": {"method": "post", "endpoint": ["https://api.northpass.com/v2/properties/courses/bulk"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk clear courses property values": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/properties/courses/bulk"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk fill people property values": {"method": "post", "endpoint": ["https://api.northpass.com/v2/properties/people/bulk"], "req_param": "", "inclusions": [null]}}, +{}, +{"Bulk clear people property values": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/properties/people/bulk"], "req_param": "", "inclusions": [null]}}, +{}, +{"List properties available for courses": {"method": "get", "endpoint": ["https://api.northpass.com/v2/properties/courses/properties"], "req_param": "", "inclusions": [null]}}, +{}, +{"Get available course properties with values": {"method": "get", "endpoint": ["https://api.northpass.com/v2/properties/courses/{id}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List created property definitions": {"method": "get", "endpoint": ["https://api.northpass.com/v2/properties/conditional"], "req_param": "", "inclusions": [null]}}, +{}, +{"Create conditional property with mapping": {"method": "post", "endpoint": ["https://api.northpass.com/v2/properties/conditional"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete conditional property": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/properties/conditional/{id}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Update conditional property": {"method": "patch", "endpoint": ["https://api.northpass.com/v2/properties/conditional/{id}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List properties available for people": {"method": "get", "endpoint": ["https://api.northpass.com/v2/properties/people/properties"], "req_param": "", "inclusions": [null]}}, +{}, +{"Get available person properties with values": {"method": "get", "endpoint": ["https://api.northpass.com/v2/properties/people/{id}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List unique values for property": {"method": "get", "endpoint": ["https://api.northpass.com/v2/properties/property_definitions/{id}/unique_values"], "req_param": "", "inclusions": [null]}}, +{}, +{"List created property definitions": {"method": "get", "endpoint": ["https://api.northpass.com/v2/properties/property_definitions"], "req_param": "", "inclusions": [null]}}, +{}, +{"Create property definition": {"method": "post", "endpoint": ["https://api.northpass.com/v2/properties/property_definitions"], "req_param": "", "inclusions": [null]}}, +{}, +{"Get property definition": {"method": "get", "endpoint": ["https://api.northpass.com/v2/properties/property_definitions/{id}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Delete property definition": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/properties/property_definitions/{id}"], "req_param": "", "inclusions": [null]}}, +{}, +{"Create property definition": {"method": "patch", "endpoint": ["https://api.northpass.com/v2/properties/property_definitions/{id}"], "req_param": "", "inclusions": [null]}}, +{}, +{"List properties available for school": {"method": "get", "endpoint": ["https://api.northpass.com/v2/properties/school/properties"], "req_param": "", "inclusions": [null]}}, +{}, +{"Get available school properties with values": {"method": "get", "endpoint": ["https://api.northpass.com/v2/properties/school"], "req_param": "", "inclusions": [null]}}, +{}, +{"Clear school properties with values": {"method": "delete", "endpoint": ["https://api.northpass.com/v2/properties/school"], "req_param": "", "inclusions": [null]}}, +{}, +{"Fill school properties with values": {"method": "patch", "endpoint": ["https://api.northpass.com/v2/properties/school"], "req_param": "", "inclusions": [null]}}, +{} +] \ No newline at end of file