UNPKG

caccl-api

Version:

A class that defines a set of smart Canvas endpoints that actually behave how you'd expect them to.

182 lines (138 loc) 18.9 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>Home - Documentation</title> <script src="scripts/prettify/prettify.js"></script> <script src="scripts/prettify/lang-css.js"></script> <!--[if lt IE 9]> <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script> <![endif]--> <link type="text/css" rel="stylesheet" href="styles/prettify.css"> <link type="text/css" rel="stylesheet" href="styles/jsdoc.css"> <script src="scripts/nav.js" defer></script> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <input type="checkbox" id="nav-trigger" class="nav-trigger" /> <label for="nav-trigger" class="navicon-button x"> <div class="navicon"></div> </label> <label for="nav-trigger" class="overlay"></label> <nav style="border-right: 2px solid #ccc; padding-bottom: 25px;" > <h2><a style="font-size: 30px;" href="index.html">CACCL API</a></h2><h3>Endpoint Functions</h3><ul><li><a href="api.account.html">api.account</a><ul class='methods'><li data-type='method'><a href="api.account.html#get">get</a></li><li data-type='method'><a href="api.account.html#list">list</a></li><li data-type='method'><a href="api.account.html#listAdmins">listAdmins</a></li><li data-type='method'><a href="api.account.html#listCourses">listCourses</a></li></ul></li><li><a href="api.conversation.html">api.conversation</a><ul class='methods'><li data-type='method'><a href="api.conversation.html#create">create</a></li></ul></li><li><a href="api.course.html">api.course</a><ul class='methods'><li data-type='method'><a href="api.course.html#get">get</a></li><li data-type='method'><a href="api.course.html#getUser">getUser</a></li><li data-type='method'><a href="api.course.html#listDesignerEnrollments">listDesignerEnrollments</a></li><li data-type='method'><a href="api.course.html#listDesigners">listDesigners</a></li><li data-type='method'><a href="api.course.html#listEnrollments">listEnrollments</a></li><li data-type='method'><a href="api.course.html#listObserverEnrollments">listObserverEnrollments</a></li><li data-type='method'><a href="api.course.html#listObservers">listObservers</a></li><li data-type='method'><a href="api.course.html#listStudentEnrollments">listStudentEnrollments</a></li><li data-type='method'><a href="api.course.html#listStudents">listStudents</a></li><li data-type='method'><a href="api.course.html#listTAs">listTAs</a></li><li data-type='method'><a href="api.course.html#listTeachers">listTeachers</a></li><li data-type='method'><a href="api.course.html#listTeachingTeamMemberEnrollments">listTeachingTeamMemberEnrollments</a></li><li data-type='method'><a href="api.course.html#listTeachingTeamMembers">listTeachingTeamMembers</a></li><li data-type='method'><a href="api.course.html#listUsers">listUsers</a></li><li data-type='method'><a href="api.course.html#migrateContent">migrateContent</a></li><li data-type='method'><a href="api.course.html#updatePublishState">updatePublishState</a></li></ul></li><li><a href="api.course.analytics.html">api.course.analytics</a><ul class='methods'><li data-type='method'><a href="api.course.analytics.html#getStudentMessagingData">getStudentMessagingData</a></li><li data-type='method'><a href="api.course.analytics.html#getStudentParticipationData">getStudentParticipationData</a></li><li data-type='method'><a href="api.course.analytics.html#getStudentSummary">getStudentSummary</a></li><li data-type='method'><a href="api.course.analytics.html#listAssignmentSummaries">listAssignmentSummaries</a></li><li data-type='method'><a href="api.course.analytics.html#listDailyActivitySummaries">listDailyActivitySummaries</a></li><li data-type='method'><a href="api.course.analytics.html#listStudentSummaries">listStudentSummaries</a></li></ul></li><li><a href="api.course.announcement.html">api.course.announcement</a><ul class='methods'><li data-type='method'><a href="api.course.announcement.html#create">create</a></li><li data-type='method'><a href="api.course.announcement.html#list">list</a></li></ul></li><li><a href="api.course.app.html">api.course.app</a><ul class='methods'><li data-type='method'><a href="api.course.app.html#addByClientId">addByClientId</a></li><li data-type='method'><a href="api.course.app.html#addByXML">addByXML</a></li><li data-type='method'><a href="api.course.app.html#addRedirect">addRedirect</a></li><li data-type='method'><a href="api.course.app.html#get">get</a></li><li data-type='method'><a href="api.course.app.html#getAssignmentLaunchURL">getAssignmentLaunchURL</a></li><li data-type='method'><a href="api.course.app.html#getMetadata">getMetadata</a></li><li data-type='method'><a href="api.course.app.html#getNavLaunchURL">getNavLaunchURL</a></li><li data-type='method'><a href="api.course.app.html#hideFromNav">hideFromNav</a></li><li data-type='method'><a href="api.course.app.html#list">list</a></li><li data-type='method'><a href="api.course.app.html#moveToTopOfNavMenu">moveToTopOfNavMenu</a></li><li data-type='method'><a href="api.course.app.html#remove">remove</a></li><li data-type='method'><a href="api.course.app.html#showInNav">showInNav</a></li><li data-type='method'><a href="api.course.app.html#updateMetadata">updateMetadata</a></li></ul></li><li><a href="api.course.assignment.html">api.course.assignment</a><ul class='methods'><li data-type='method'><a href="api.course.assignment.html#create">create</a></li><li data-type='method'><a href="api.course.assignment.html#createOverride">createOverride</a></li><li data-type='method'><a href="api.course.assignment.html#createSubmissionComment">createSubmissionComment</a></li><li data-type='method'><a href="api.course.assignment.html#createTextSubmission">createTextSubmission</a></li><li data-type='method'><a href="api.course.assignment.html#createURLSubmission">createURLSubmission</a></li><li data-type='method'><a href="api.course.assignment.html#delete">delete</a></li><li data-type='method'><a href="api.course.assignment.html#deleteOverride">deleteOverride</a></li><li data-type='method'><a href="api.course.assignment.html#get">get</a></li><li data-type='method'><a href="api.course.assignment.html#getOverride">getOverride</a></li><li data-type='method'><a href="api.course.assignment.html#getSubmission">getSubmission</a></li><li data-type='method'><a href="api.course.assignment.html#list">list</a></li><li data-type='method'><a href="api.course.assignment.html#listAllSubmissions">listAllSubmissions</a></li><li data-type='method'><a href="api.course.assignment.html#listGradeableStudents">listGradeableStudents</a></li><li data-type='method'><a href="api.course.assignment.html#listOverrides">listOverrides</a></li><li data-type='method'><a href="api.course.assignment.html#listSubmissions">listSubmissions</a></li><li data-type='method'><a href="api.course.assignment.html#update">update</a></li><li data-type='method'><a href="api.course.assignment.html#updateGrade">updateGrade</a></li><li data-type='method'><a href="api.course.assignment.html#updateGrades">updateGrades</a></li><li data-type='method'><a href="api.course.assignment.html#updateOverride">updateOverride</a></li></ul></li><li><a href="api.course.assignmentGroup.html">api.course.assignmentGroup</a><ul class='methods'><li data-type='method'><a href="api.course.assignmentGroup.html#create">create</a></li><li data-type='method'><a href="api.course.assignmentGroup.html#delete">delete</a></li><li data-type='method'><a href="api.course.assignmentGroup.html#get">get</a></li><li data-type='method'><a href="api.course.assignmentGroup.html#list">list</a></li><li data-type='method'><a href="api.course.assignmentGroup.html#update">update</a></li></ul></li><li><a href="api.course.discussionTopic.html">api.course.discussionTopic</a><ul class='methods'><li data-type='method'><a href="api.course.discussionTopic.html#create">create</a></li><li data-type='method'><a href="api.course.discussionTopic.html#delete">delete</a></li><li data-type='method'><a href="api.course.discussionTopic.html#list">list</a></li><li data-type='method'><a href="api.course.discussionTopic.html#listEntries">listEntries</a></li><li data-type='method'><a href="api.course.discussionTopic.html#updatePublishState">updatePublishState</a></li></ul></li><li><a href="api.course.file.html">api.course.file</a><ul class='methods'><li data-type='method'><a href="api.course.file.html#list">list</a></li></ul></li><li><a href="api.course.folder.html">api.course.folder</a><ul class='methods'><li data-type='method'><a href="api.course.folder.html#list">list</a></li></ul></li><li><a href="api.course.gradebookColumn.html">api.course.gradebookColumn</a><ul class='methods'><li data-type='method'><a href="api.course.gradebookColumn.html#create">create</a></li><li data-type='method'><a href="api.course.gradebookColumn.html#delete">delete</a></li><li data-type='method'><a href="api.course.gradebookColumn.html#get">get</a></li><li data-type='method'><a href="api.course.gradebookColumn.html#list">list</a></li><li data-type='method'><a href="api.course.gradebookColumn.html#listEntries">listEntries</a></li><li data-type='method'><a href="api.course.gradebookColumn.html#update">update</a></li><li data-type='method'><a href="api.course.gradebookColumn.html#updateEntries">updateEntries</a></li><li data-type='method'><a href="api.course.gradebookColumn.html#updateEntry">updateEntry</a></li></ul></li><li><a href="api.course.group.html">api.course.group</a><ul class='methods'><li data-type='method'><a href="api.course.group.html#create">create</a></li><li data-type='method'><a href="api.course.group.html#delete">delete</a></li><li data-type='method'><a href="api.course.group.html#get">get</a></li><li data-type='method'><a href="api.course.group.html#listUsers">listUsers</a></li><li data-type='method'><a href="api.course.group.html#updateMembers">updateMembers</a></li></ul></li><li><a href="api.course.groupSet.html">api.course.groupSet</a><ul class='methods'><li data-type='method'><a href="api.course.groupSet.html#create">create</a></li><li data-type='method'><a href="api.course.groupSet.html#delete">delete</a></li><li data-type='method'><a href="api.course.groupSet.html#get">get</a></li><li data-type='method'><a href="api.course.groupSet.html#list">list</a></li><li data-type='method'><a href="api.course.groupSet.html#listGroups">listGroups</a></li></ul></li><li><a href="api.course.module.html">api.course.module</a><ul class='methods'><li data-type='method'><a href="api.course.module.html#list">list</a></li></ul></li><li><a href="api.course.navMenuItem.html">api.course.navMenuItem</a><ul class='methods'><li data-type='method'><a href="api.course.navMenuItem.html#list">list</a></li><li data-type='method'><a href="api.course.navMenuItem.html#update">update</a></li></ul></li><li><a href="api.course.page.html">api.course.page</a><ul class='methods'><li data-type='method'><a href="api.course.page.html#create">create</a></li><li data-type='method'><a href="api.course.page.html#delete">delete</a></li><li data-type='method'><a href="api.course.page.html#get">get</a></li><li data-type='method'><a href="api.course.page.html#list">list</a></li><li data-type='method'><a href="api.course.page.html#update">update</a></li></ul></li><li><a href="api.course.quiz.html">api.course.quiz</a><ul class='methods'><li data-type='method'><a href="api.course.quiz.html#create">create</a></li><li data-type='method'><a href="api.course.quiz.html#createEssayQuestion">createEssayQuestion</a></li><li data-type='method'><a href="api.course.quiz.html#createMultipleChoiceQuestion">createMultipleChoiceQuestion</a></li><li data-type='method'><a href="api.course.quiz.html#createShortAnswerQuestion">createShortAnswerQuestion</a></li><li data-type='method'><a href="api.course.quiz.html#createSubmission">createSubmission</a></li><li data-type='method'><a href="api.course.quiz.html#delete">delete</a></li><li data-type='method'><a href="api.course.quiz.html#get">get</a></li><li data-type='method'><a href="api.course.quiz.html#getQuizStudentReport">getQuizStudentReport</a></li><li data-type='method'><a href="api.course.quiz.html#getSubmission">getSubmission</a></li><li data-type='method'><a href="api.course.quiz.html#list">list</a></li><li data-type='method'><a href="api.course.quiz.html#listQuestions">listQuestions</a></li><li data-type='method'><a href="api.course.quiz.html#listSubmissions">listSubmissions</a></li><li data-type='method'><a href="api.course.quiz.html#update">update</a></li><li data-type='method'><a href="api.course.quiz.html#updateQuestionGrades">updateQuestionGrades</a></li></ul></li><li><a href="api.course.rubric.html">api.course.rubric</a><ul class='methods'><li data-type='method'><a href="api.course.rubric.html#createFreeFormGradingRubricInAssignment">createFreeFormGradingRubricInAssignment</a></li><li data-type='method'><a href="api.course.rubric.html#get">get</a></li><li data-type='method'><a href="api.course.rubric.html#list">list</a></li></ul></li><li><a href="api.course.section.html">api.course.section</a><ul class='methods'><li data-type='method'><a href="api.course.section.html#get">get</a></li><li data-type='method'><a href="api.course.section.html#list">list</a></li></ul></li><li><a href="api.enrollmentTerm.html">api.enrollmentTerm</a></li><li><a href="api.other.html">api.other</a><ul class='methods'><li data-type='method'><a href="api.other.html#endpoint">endpoint</a></li></ul></li><li><a href="api.user.html">api.user</a><ul class='methods'><li data-type='method'><a href="api.user.html#listCourses">listCourses</a></li><li data-type='method'><a href="api.user.html#listEmails">listEmails</a></li><li data-type='method'><a href="api.user.html#search">search</a></li></ul></li><li><a href="api.user.self.html">api.user.self</a><ul class='methods'><li data-type='method'><a href="api.user.self.html#getProfile">getProfile</a></li><li data-type='method'><a href="api.user.self.html#listCourses">listCourses</a></li></ul></li></ul><h3>Global</h3><ul><li><a href="global.html#DateHandlingType">DateHandlingType</a></li><li><a href="global.html#dayOfWeekToNumber">dayOfWeekToNumber</a></li></ul> </nav> <div id="main"> <section class="package"> <h3> </h3> </section> <section class="readme usertext"> <article><h1>The Canvas API, but simpler and more powerful</h1> <p>This project is designed <em>by</em> educators <em>for</em> educators. Each endpoint is a black box that just works. We don't have full API coverage, but we add functions as they are requested.</p> <h1 style="display: flex; align-items: center;"> <div style="flex-grow: 1; height: 1px; background: #ccc; margin-right: 10px;"> </div> <div> Quickstart </div> <div style="flex-grow: 1; height: 1px; background: #ccc; margin-left: 10px;"> </div> </h1> <h2>1. Get an <code>api</code> instance</h2> <p>In your CACCL project, you should have access to an <code>api</code> instance (via <code>getAPI</code>, for example). Read through the <a href="http://bit.ly/caccl">CACCL docs</a> to learn more.</p> <h2>2. Call an endpoint function</h2> <p>All endpoint functions are asynchronous, so we recommend using async/await syntax:</p> <pre class="prettyprint source lang-ts"><code>const submissions = await api.course.listStudents(); </code></pre> <h1 style="display: flex; align-items: center;"> <div style="flex-grow: 1; height: 1px; background: #ccc; margin-right: 10px;"> </div> <div> API Config </div> <div style="flex-grow: 1; height: 1px; background: #ccc; margin-left: 10px;"> </div> </h1> <p>Every endpoint function can take a second argument that overwrites default settings:</p> <table> <thead> <tr> <th style="text-align:left">Argument</th> <th style="text-align:left">Type</th> <th style="text-align:left">Description</th> </tr> </thead> <tbody> <tr> <td style="text-align:left">onNewPage</td> <td style="text-align:left">function</td> <td style="text-align:left">this function is called when each page is received from Canvas</td> </tr> <tr> <td style="text-align:left">maxPages</td> <td style="text-align:left">number</td> <td style="text-align:left">maximum number of pages to fetch</td> </tr> <tr> <td style="text-align:left">itemsPerPage</td> <td style="text-align:left">number</td> <td style="text-align:left">number of items to request in each page</td> </tr> <tr> <td style="text-align:left">numRetries</td> <td style="text-align:left">number</td> <td style="text-align:left">number of times to retry failed network requests</td> </tr> <tr> <td style="text-align:left">canvasHost</td> <td style="text-align:left">string</td> <td style="text-align:left">hostname for Canvas</td> </tr> <tr> <td style="text-align:left">accessToken</td> <td style="text-align:left">string</td> <td style="text-align:left">access token to use for authentication</td> </tr> <tr> <td style="text-align:left">authenticityToken</td> <td style="text-align:left">string</td> <td style="text-align:left">Canvas authenticity token (we recommend that you use accessToken instead)</td> </tr> </tbody> </table> <p>In most cases, you will not need to include any of these parameters because the defaults will suffice.</p> <h1 style="display: flex; align-items: center;"> <div style="flex-grow: 1; height: 1px; background: #ccc; margin-right: 10px;"> </div> <div> Tips and Tricks </div> <div style="flex-grow: 1; height: 1px; background: #ccc; margin-left: 10px;"> </div> </h1> <p><strong>For giant requests, process data as it arrives:</strong></p> <p>Instead of waiting until the endpoint function returns with all the pages of data, process it page by page using <code>onNewPage</code>.</p> <pre class="prettyprint source lang-js"><code>const allCourses = await api.account.listCourses({ accountId: 29, onNewPage: (batchOfCourses) => { // Increment the number of courses that have been downloaded this.incrementNumberOfCourses(batchOfCourses.length); // Add the new batch of courses to the table shown to the user this.addCoursesToTable(batchOfCourses); }, }); </code></pre> <p><strong>Hit <em>any</em> endpoint, even ones that aren't listed in our docs:</strong></p> <p>Use <code>api.other.endpoint(...)</code> to hit any endpoint in Canvas.</p> <p>If you find that you're using other endpoints frequently, please request that those endpoints be added to CACCL API as an official function.</p></article> </section> </div> <br class="clear"> <footer> We use <a href="https://github.com/jsdoc3/jsdoc">JSDoc</a> and the <a href="https://github.com/clenemt/docdash">docdash</a> theme to generate our docs. </footer> <script>prettyPrint();</script> <script src="scripts/polyfill.js"></script> <script src="scripts/linenumber.js"></script> </body> </html>