# Table of Contents - [Introduction | Instructure Developer Documentation Portal](#introduction-instructure-developer-documentation-portal) - [Canvas LMS | Instructure Developer Documentation Portal](#canvas-lms-instructure-developer-documentation-portal) - [Services | Instructure Developer Documentation Portal](#services-instructure-developer-documentation-portal) - [New Quizzes | Instructure Developer Documentation Portal](#new-quizzes-instructure-developer-documentation-portal) - [Data Access Platform | Instructure Developer Documentation Portal](#data-access-platform-instructure-developer-documentation-portal) - [Get Started | Instructure Developer Documentation Portal](#get-started-instructure-developer-documentation-portal) - [Commons | Instructure Developer Documentation Portal](#commons-instructure-developer-documentation-portal) - [Catalog | Instructure Developer Documentation Portal](#catalog-instructure-developer-documentation-portal) - [Parchment Digital Badges | Instructure Developer Documentation Portal](#parchment-digital-badges-instructure-developer-documentation-portal) - [Public Product | Instructure Developer Documentation Portal](#public-product-instructure-developer-documentation-portal) - [Studio | Instructure Developer Documentation Portal](#studio-instructure-developer-documentation-portal) - [Data Sync | Instructure Developer Documentation Portal](#data-sync-instructure-developer-documentation-portal) - [Introduction | Instructure Developer Documentation Portal](#introduction-instructure-developer-documentation-portal) - [Elevate Standards Alignment - AB Connect | Instructure Developer Documentation Portal](#elevate-standards-alignment-ab-connect-instructure-developer-documentation-portal) - [Introduction | Instructure Developer Documentation Portal](#introduction-instructure-developer-documentation-portal) - [Addressing Object Properties | Instructure Developer Documentation Portal](#addressing-object-properties-instructure-developer-documentation-portal) - [Sorting | Instructure Developer Documentation Portal](#sorting-instructure-developer-documentation-portal) - [Paging Data | Instructure Developer Documentation Portal](#paging-data-instructure-developer-documentation-portal) - [Requesting Additional Properties in the Response | Instructure Developer Documentation Portal](#requesting-additional-properties-in-the-response-instructure-developer-documentation-portal) - [Facets | Instructure Developer Documentation Portal](#facets-instructure-developer-documentation-portal) - [Filtering Using ODATA Like Statements | Instructure Developer Documentation Portal](#filtering-using-odata-like-statements-instructure-developer-documentation-portal) - [Authentication | Instructure Developer Documentation Portal](#authentication-instructure-developer-documentation-portal) - [Error Responses | Instructure Developer Documentation Portal](#error-responses-instructure-developer-documentation-portal) - [Licensing Considerations | Instructure Developer Documentation Portal](#licensing-considerations-instructure-developer-documentation-portal) - [Character Set Support | Instructure Developer Documentation Portal](#character-set-support-instructure-developer-documentation-portal) - [Call Throttling | Instructure Developer Documentation Portal](#call-throttling-instructure-developer-documentation-portal) - [Reference | Instructure Developer Documentation Portal](#reference-instructure-developer-documentation-portal) - [Examples | Instructure Developer Documentation Portal](#examples-instructure-developer-documentation-portal) - [OAuth2 | Instructure Developer Documentation Portal](#oauth2-instructure-developer-documentation-portal) - [Basics | Instructure Developer Documentation Portal](#basics-instructure-developer-documentation-portal) - [API Change Log | Instructure Developer Documentation Portal](#api-change-log-instructure-developer-documentation-portal) - [Pagination | Instructure Developer Documentation Portal](#pagination-instructure-developer-documentation-portal) - [Throttling | Instructure Developer Documentation Portal](#throttling-instructure-developer-documentation-portal) - [Compound Documents | Instructure Developer Documentation Portal](#compound-documents-instructure-developer-documentation-portal) - [Working with Related Object | Instructure Developer Documentation Portal](#working-with-related-object-instructure-developer-documentation-portal) - [API Endpoint Attributes | Instructure Developer Documentation Portal](#api-endpoint-attributes-instructure-developer-documentation-portal) - [GraphQL | Instructure Developer Documentation Portal](#graphql-instructure-developer-documentation-portal) - [Providers | Instructure Developer Documentation Portal](#providers-instructure-developer-documentation-portal) - [Masquerading | Instructure Developer Documentation Portal](#masquerading-instructure-developer-documentation-portal) - [Asset Definitions | Instructure Developer Documentation Portal](#asset-definitions-instructure-developer-documentation-portal) - [Developer Keys | Instructure Developer Documentation Portal](#developer-keys-instructure-developer-documentation-portal) - [File Uploads | Instructure Developer Documentation Portal](#file-uploads-instructure-developer-documentation-portal) - [Concepts | Instructure Developer Documentation Portal](#concepts-instructure-developer-documentation-portal) - [SIS IDs | Instructure Developer Documentation Portal](#sis-ids-instructure-developer-documentation-portal) - [OAuth2 Endpoints | Instructure Developer Documentation Portal](#oauth2-endpoints-instructure-developer-documentation-portal) - [Asset Collections | Instructure Developer Documentation Portal](#asset-collections-instructure-developer-documentation-portal) - [Events | Instructure Developer Documentation Portal](#events-instructure-developer-documentation-portal) - [Standard Collections | Instructure Developer Documentation Portal](#standard-collections-instructure-developer-documentation-portal) - [Topics | Instructure Developer Documentation Portal](#topics-instructure-developer-documentation-portal) - [OAuth2 Overview | Instructure Developer Documentation Portal](#oauth2-overview-instructure-developer-documentation-portal) - [Assets | Instructure Developer Documentation Portal](#assets-instructure-developer-documentation-portal) - [How To Articles, Recommendations and Suggestions | Instructure Developer Documentation Portal](#how-to-articles-recommendations-and-suggestions-instructure-developer-documentation-portal) - [Standards | Instructure Developer Documentation Portal](#standards-instructure-developer-documentation-portal) - [Group Categories | Instructure Developer Documentation Portal](#group-categories-instructure-developer-documentation-portal) - [Using AB Connect's Embeddable Widgets | Instructure Developer Documentation Portal](#using-ab-connect-s-embeddable-widgets-instructure-developer-documentation-portal) - [Outcomes | Instructure Developer Documentation Portal](#outcomes-instructure-developer-documentation-portal) - [SIS | Instructure Developer Documentation Portal](#sis-instructure-developer-documentation-portal) - [Permissions | Instructure Developer Documentation Portal](#permissions-instructure-developer-documentation-portal) - [External Tools | Instructure Developer Documentation Portal](#external-tools-instructure-developer-documentation-portal) - [Data Services | Instructure Developer Documentation Portal](#data-services-instructure-developer-documentation-portal) - [Group Categories CSV Format | Instructure Developer Documentation Portal](#group-categories-csv-format-instructure-developer-documentation-portal) - [Live Events | Instructure Developer Documentation Portal](#live-events-instructure-developer-documentation-portal) - [Overview | Instructure Developer Documentation Portal](#overview-instructure-developer-documentation-portal) - [Differentiation Tags CSV Format | Instructure Developer Documentation Portal](#differentiation-tags-csv-format-instructure-developer-documentation-portal) - [Outcomes CSV Format | Instructure Developer Documentation Portal](#outcomes-csv-format-instructure-developer-documentation-portal) - [Event Format | Instructure Developer Documentation Portal](#event-format-instructure-developer-documentation-portal) - [Placements | Instructure Developer Documentation Portal](#placements-instructure-developer-documentation-portal) - [Plagiarism Detection Platform Users | Instructure Developer Documentation Portal](#plagiarism-detection-platform-users-instructure-developer-documentation-portal) - [Developer Keys - manage | Instructure Developer Documentation Portal](#developer-keys-manage-instructure-developer-documentation-portal) - [Data Services - manage | Instructure Developer Documentation Portal](#data-services-manage-instructure-developer-documentation-portal) - [Differentiation Tags - manage | Instructure Developer Documentation Portal](#differentiation-tags-manage-instructure-developer-documentation-portal) - [Differentiation Tags - add | Instructure Developer Documentation Portal](#differentiation-tags-add-instructure-developer-documentation-portal) - [Discussions - create | Instructure Developer Documentation Portal](#discussions-create-instructure-developer-documentation-portal) - [Discussions - moderate | Instructure Developer Documentation Portal](#discussions-moderate-instructure-developer-documentation-portal) - [Discussions - post | Instructure Developer Documentation Portal](#discussions-post-instructure-developer-documentation-portal) - [Discussions - view | Instructure Developer Documentation Portal](#discussions-view-instructure-developer-documentation-portal) - [Developer Keys - modify Site Admin developer keys | Instructure Developer Documentation Portal](#developer-keys-modify-site-admin-developer-keys-instructure-developer-documentation-portal) - [Differentiation Tags - delete | Instructure Developer Documentation Portal](#differentiation-tags-delete-instructure-developer-documentation-portal) - [Feature Options - enable / disable | Instructure Developer Documentation Portal](#feature-options-enable-disable-instructure-developer-documentation-portal) - [Feature Options - view | Instructure Developer Documentation Portal](#feature-options-view-instructure-developer-documentation-portal) - [Global Announcements - add / edit / delete | Instructure Developer Documentation Portal](#global-announcements-add-edit-delete-instructure-developer-documentation-portal) - [Grades - view audit trail | Instructure Developer Documentation Portal](#grades-view-audit-trail-instructure-developer-documentation-portal) - [Grades - select final grade for moderation | Instructure Developer Documentation Portal](#grades-select-final-grade-for-moderation-instructure-developer-documentation-portal) - [Impact - Manage | Instructure Developer Documentation Portal](#impact-manage-instructure-developer-documentation-portal) - [Groups - view all student groups | Instructure Developer Documentation Portal](#groups-view-all-student-groups-instructure-developer-documentation-portal) - [Reports - manage | Instructure Developer Documentation Portal](#reports-manage-instructure-developer-documentation-portal) - [Grades - edit | Instructure Developer Documentation Portal](#grades-edit-instructure-developer-documentation-portal) - [Learning Outcomes - add / edit / delete | Instructure Developer Documentation Portal](#learning-outcomes-add-edit-delete-instructure-developer-documentation-portal) - [IgniteAI Agent - Admins | Instructure Developer Documentation Portal](#igniteai-agent-admins-instructure-developer-documentation-portal) - [Manage Account Calendars | Instructure Developer Documentation Portal](#manage-account-calendars-instructure-developer-documentation-portal) - [New Quizzes - view multi session information | Instructure Developer Documentation Portal](#new-quizzes-view-multi-session-information-instructure-developer-documentation-portal) - [Grades - view all grades | Instructure Developer Documentation Portal](#grades-view-all-grades-instructure-developer-documentation-portal) - [Permissions - manage | Instructure Developer Documentation Portal](#permissions-manage-instructure-developer-documentation-portal) - [Manage Course Templates | Instructure Developer Documentation Portal](#manage-course-templates-instructure-developer-documentation-portal) - [Manage Groups | Instructure Developer Documentation Portal](#manage-groups-instructure-developer-documentation-portal) - [Statistics - view | Instructure Developer Documentation Portal](#statistics-view-instructure-developer-documentation-portal) - [Manage Differentiation Tags | Instructure Developer Documentation Portal](#manage-differentiation-tags-instructure-developer-documentation-portal) - [Question banks - view and link | Instructure Developer Documentation Portal](#question-banks-view-and-link-instructure-developer-documentation-portal) - [Users - Temporary Enrollments | Instructure Developer Documentation Portal](#users-temporary-enrollments-instructure-developer-documentation-portal) - [Users - Observers | Instructure Developer Documentation Portal](#users-observers-instructure-developer-documentation-portal) - [Grades - view change logs | Instructure Developer Documentation Portal](#grades-view-change-logs-instructure-developer-documentation-portal) - [LTI Registrations - Manage | Instructure Developer Documentation Portal](#lti-registrations-manage-instructure-developer-documentation-portal) - [SIS Data - read | Instructure Developer Documentation Portal](#sis-data-read-instructure-developer-documentation-portal) - [Manage Course Files | Instructure Developer Documentation Portal](#manage-course-files-instructure-developer-documentation-portal) - [Users - Designers | Instructure Developer Documentation Portal](#users-designers-instructure-developer-documentation-portal) - [Users - moderate content | Instructure Developer Documentation Portal](#users-moderate-content-instructure-developer-documentation-portal) - [Users - generate observer pairing codes for students | Instructure Developer Documentation Portal](#users-generate-observer-pairing-codes-for-students-instructure-developer-documentation-portal) - [Manage Assignments and Quizzes | Instructure Developer Documentation Portal](#manage-assignments-and-quizzes-instructure-developer-documentation-portal) - [Outcome Mastery Scales - add / edit | Instructure Developer Documentation Portal](#outcome-mastery-scales-add-edit-instructure-developer-documentation-portal) - [Site Admin - Rate Limiting | Instructure Developer Documentation Portal](#site-admin-rate-limiting-instructure-developer-documentation-portal) - [Title IV Financial Aid Report | Instructure Developer Documentation Portal](#title-iv-financial-aid-report-instructure-developer-documentation-portal) - [Regular and Substantive Interaction | Instructure Developer Documentation Portal](#regular-and-substantive-interaction-instructure-developer-documentation-portal) - [Manage Course Sections | Instructure Developer Documentation Portal](#manage-course-sections-instructure-developer-documentation-portal) - [Users - act as | Instructure Developer Documentation Portal](#users-act-as-instructure-developer-documentation-portal) - [Users - view login IDs | Instructure Developer Documentation Portal](#users-view-login-ids-instructure-developer-documentation-portal) - [Submission - Submit on behalf of student | Instructure Developer Documentation Portal](#submission-submit-on-behalf-of-student-instructure-developer-documentation-portal) - [Pinboards - view | Instructure Developer Documentation Portal](#pinboards-view-instructure-developer-documentation-portal) - [Users - create DSR export | Instructure Developer Documentation Portal](#users-create-dsr-export-instructure-developer-documentation-portal) - [Storage Quotas - manage | Instructure Developer Documentation Portal](#storage-quotas-manage-instructure-developer-documentation-portal) - [Users - view primary email address | Instructure Developer Documentation Portal](#users-view-primary-email-address-instructure-developer-documentation-portal) - [Web Conferences - create | Instructure Developer Documentation Portal](#web-conferences-create-instructure-developer-documentation-portal) - [Quizzes - view submission log | Instructure Developer Documentation Portal](#quizzes-view-submission-log-instructure-developer-documentation-portal) - [Manage Course Content | Instructure Developer Documentation Portal](#manage-course-content-instructure-developer-documentation-portal) - [Manage Pages | Instructure Developer Documentation Portal](#manage-pages-instructure-developer-documentation-portal) - [Users - manage login details | Instructure Developer Documentation Portal](#users-manage-login-details-instructure-developer-documentation-portal) - [Users - Students | Instructure Developer Documentation Portal](#users-students-instructure-developer-documentation-portal) - [SIS Data - manage | Instructure Developer Documentation Portal](#sis-data-manage-instructure-developer-documentation-portal) - [Users - manage students in courses | Instructure Developer Documentation Portal](#users-manage-students-in-courses-instructure-developer-documentation-portal) - [Students in Need of Attention | Instructure Developer Documentation Portal](#students-in-need-of-attention-instructure-developer-documentation-portal) - [Manage LTI | Instructure Developer Documentation Portal](#manage-lti-instructure-developer-documentation-portal) - [New Quizzes - view IP address | Instructure Developer Documentation Portal](#new-quizzes-view-ip-address-instructure-developer-documentation-portal) - [Manually Generated Access Tokens - view | Instructure Developer Documentation Portal](#manually-generated-access-tokens-view-instructure-developer-documentation-portal) - [Users - Teachers | Instructure Developer Documentation Portal](#users-teachers-instructure-developer-documentation-portal) - [Users - view list | Instructure Developer Documentation Portal](#users-view-list-instructure-developer-documentation-portal) - [Users - TAs | Instructure Developer Documentation Portal](#users-tas-instructure-developer-documentation-portal) - [SIS Data - import | Instructure Developer Documentation Portal](#sis-data-import-instructure-developer-documentation-portal) - [Item Banks - share with subaccounts | Instructure Developer Documentation Portal](#item-banks-share-with-subaccounts-instructure-developer-documentation-portal) --- # Introduction | Instructure Developer Documentation Portal Instructure's Developer Portal is your gateway to integrating our learning management system with other tools, automating workflows, and building custom applications. Designed for flexibility and ease of use, our APIs and resources empower developers to create dynamic, efficient learning solutions. Start exploring and bring your ideas to life with the support of our comprehensive documentation and tools. ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-9759355a5815750bb8c2822a70ba25698b253beb%252FCover%2520-%2520Services.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=f5a37075&sv=2) **Services** * [Canvas LMS](https://developerdocs.instructure.com/services/canvas) * [Catalog](https://developerdocs.instructure.com/services/catalog) * Certify * [Commons](https://developerdocs.instructure.com/services/commons) * [Data Access Platform](https://developerdocs.instructure.com/services/dap) * [Data Hubarrow-up-right](https://api.ed-fi.org/) * Mastery Connect * [New Quizzes](https://developerdocs.instructure.com/services/new-quizzes) * [Parchment Digital Badges](https://developerdocs.instructure.com/services/parchment-digital-badges) * [Public Product](https://developerdocs.instructure.com/services/public-product-api) * [Studio](https://developerdocs.instructure.com/services/studio) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-a37e28da0f673be11562e3774ab660eee2da746e%252FCover%2520-%2520LTI.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=e0f5d470&sv=2) **LTI** * [Canvas LTI documentation](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_intro) * [LTI v1.3 Specificationarrow-up-right](https://www.imsglobal.org/spec/lti/v1p3/) * [1EdTech Security Frameworkarrow-up-right](https://www.imsglobal.org/spec/security/v1p0/) * [Deep Linkingarrow-up-right](https://www.imsglobal.org/spec/lti-dl/v2p0) * [Names and Roles Provisioning Servicearrow-up-right](https://www.imsglobal.org/spec/lti-nrps/v2p0) * [Assignment and Grades Servicearrow-up-right](https://www.imsglobal.org/spec/lti-ags/v2p0/) * [LTI Advantage Implementation Guidearrow-up-right](https://www.imsglobal.org/spec/lti/v1p3/impl/) * [LTI Migration Guidearrow-up-right](https://www.imsglobal.org/spec/lti/v1p3/migr) * [1EdTech LTI Boot Camp Resourcesarrow-up-right](https://github.com/imsglobal/ltibootcamp) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-63d023863a327ba9e212b685120539b2b4300bfc%252FCover%2520-%2520Partner%2520Services.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=8518ba55&sv=2) **Partner Facing Services** * [Data Sync](https://developerdocs.instructure.com/services/datasync) * [Elevate Standards Alignment](https://developerdocs.instructure.com/services/ab-connect) ### [hashtag](https://developerdocs.instructure.com/#alternatively-consider-the-following-choices) Alternatively, consider the following choices [](https://developerdocs.instructure.com/services) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-c7073ce327d4f2cf9535122ae5edd71ea285ba28%252FCover%2520-%2520Docs.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=43ed1f3a&sv=2) **Detailed Docs** Explore comprehensive, easy-to-use API documentation to unlock the full potential of our ecosystem. [](https://developerdocs.instructure.com/?q=) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-0fb51aa085736c1be04881b7480c0ee35fb35253%252FCover%2520-%2520Search.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=ca82b062&sv=2) **Simple search** Find API endpoints, guides, and developer tools all in one convenient location. [](https://app.learnplatform.com/) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-4ee9705277a2e7a0d04369d3525af527e6d6b9c3%252FCover%2520-%2520LearnPlatform.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=648b72f&sv=2) **Partner Portal** Manage your products and connect directly with educational institutions via the Partner Portal. Last updated 2 days ago Was this helpful? This site uses cookies to deliver its service and to analyze traffic. By browsing this site, you accept the [privacy policy](https://www.instructure.com/policies/marketing-privacy) . close AcceptReject --- # Canvas LMS | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas#welcome-to-the-canvas-lms-api-documentation) Welcome to the Canvas LMS API Documentation ------------------------------------------------------------------------------------------------------------------------------------------------------------- Canvas LMS includes a REST API for accessing and modifying data externally from the main application, in your own programs and scripts. This documentation describes the resources that make up the API. To get started, you'll want to review the general basics, including the information below and the page on [Authentication using OAuth2](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth) . ### [hashtag](https://developerdocs.instructure.com/services/canvas#api-changes) API Changes For API resources, such as the API Change Log for additions, changes, deprecations, and removals, view the [Canvas API pagearrow-up-right](https://community.canvaslms.com/t5/Change-Log/tkb-p/changelog) in the Canvas Community. ### [hashtag](https://developerdocs.instructure.com/services/canvas#api-policy) API Policy Please carefully review [the Canvas API Policyarrow-up-right](https://www.instructure.com/policies/api-policy) before using the API. ### [hashtag](https://developerdocs.instructure.com/services/canvas#schema) Schema All API access is over HTTPS, against your normal Canvas domain. All API responses are in [JSON formatarrow-up-right](http://www.json.org/) . All integer ids in Canvas are 64 bit integers. String ids are also used in Canvas. To force all ids to strings add the request header `Accept: application/json+canvas-string-ids` This will cause Canvas to return even integer IDs as strings, preventing problems with languages (particularly JavaScript) that can't properly process large integers. All boolean parameters can be passed as true/false, t/f, yes/no, y/n, on/off, or 1/0. When using JSON format, a literal true/false is preferred, rather than as a string. For POST and PUT requests, parameters are sent using standard [HTML form encodingarrow-up-right](http://www.w3.org/TR/html4/interact/forms.html#h-17.13.4) (the application/x-www-form-urlencoded content type). POST and PUT requests may also optionally be sent in [JSON formatarrow-up-right](http://www.json.org/) format. The content-type of the request must be set to application/json in this case. There is currently no way to upload a file as part of a JSON POST, the multipart form type must be used. As an example, this HTML form request: Copy name=test+name&file_ids[]=1&file_ids[]=2&sub[name]=foo&sub[message]=bar&flag=y would translate into this JSON request: Copy { "name": "test name", "file_ids": [1,2], "sub": { "name": "foo", "message": "bar" }, "flag": true } With either encoding, all timestamps are sent and returned in ISO 8601 format (UTC time zone): Copy YYYY-MM-DDTHH:MM:SSZ ### [hashtag](https://developerdocs.instructure.com/services/canvas#authentication) Authentication API authentication is done with OAuth2. If possible, using the HTTP Authorization header is recommended. Sending the access token in the query string or POST parameters is also supported. OAuth2 Token sent in header: Copy curl -H "Authorization: Bearer " "https://canvas.instructure.com/api/v1/courses" OAuth2 Token sent in query string: Copy curl "https://canvas.instructure.com/api/v1/courses?access_token=" Read more about [OAuth2 and how to get access tokens.](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth) ### [hashtag](https://developerdocs.instructure.com/services/canvas#ssl) SSL Note that if you make an API call using HTTP instead of HTTPS, you will be redirected to HTTPS. However, at that point, the credentials have already been sent in clear over the internet. Please make sure that you are using HTTPS. ### [hashtag](https://developerdocs.instructure.com/services/canvas#canvas-experiences) Canvas Experiences Canvas LMS supports several experiences including Canvas Career and Canvas for Elementary. The vast majority of these API resources are shared, though some are applicable only to certain experiences. ### [hashtag](https://developerdocs.instructure.com/services/canvas#about-this-documentation) About this Documentation This documentation is generated directly from the Canvas LMS code. You can generate this documentation yourself if you've set up a local Canvas environment following the instructions on [Githubarrow-up-right](https://www.github.com/instructure/canvas-lms/wiki) . Run the following command from your Canvas directory: Copy bundle exec rake doc:api #### [hashtag](https://developerdocs.instructure.com/services/canvas#openapi-3.0-specification) OpenAPI 3.0 Specification Canvas also provides an OpenAPI 3.0 specification that can be generated from the same YARD documentation. This modern format is compatible with tools like Swagger UI, Postman, and various code generators. To generate the OpenAPI 3.0 specification: Copy bundle exec rake doc:openapi This will create `public/doc/openapi/canvas.openapi.yaml` containing the OpenAPI 3.0 specification for the Canvas API. The OpenAPI spec includes: * All API endpoints with their HTTP methods and paths * Request parameters (path, query, and body) * Response schemas * Authentication requirements * Server configuration You can view and interact with the generated OpenAPI spec using: * [Swagger Editorarrow-up-right](https://editor.swagger.io/) - Import the YAML file * [Swagger UIarrow-up-right](https://swagger.io/tools/swagger-ui/) - Interactive API documentation * [Postmanarrow-up-right](https://www.postman.com/) - Import as a collection * Code generators like [OpenAPI Generatorarrow-up-right](https://openapi-generator.tech/) * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousProviderschevron-left](https://developerdocs.instructure.com/services/ab-connect/reference/providers) [NextBasicschevron-right](https://developerdocs.instructure.com/services/canvas/basics) Last updated 3 months ago Was this helpful? --- # Services | Instructure Developer Documentation Portal Explore Instructure's portfolio of services, including the Elevate Standards Alignment API, Catalog, Canvas LMS, and more! Below you can find a comprehensive overview of tools and platforms designed to enhance educational experiences and administrative functionalities. [](https://developerdocs.instructure.com/services/ab-connect) [Elevate Standards Alignment](https://developerdocs.instructure.com/services/ab-connect) [Catalog](https://developerdocs.instructure.com/services/catalog) [](https://developerdocs.instructure.com/services/canvas) [Canvas LMS](https://developerdocs.instructure.com/services/canvas) Certify [Commons](https://developerdocs.instructure.com/services/commons) [](https://developerdocs.instructure.com/services/dap) [Data Access Platform](https://developerdocs.instructure.com/services/dap) [Data Hubarrow-up-right](https://api.ed-fi.org/) [](https://developerdocs.instructure.com/services/datasync) [Data Sync](https://developerdocs.instructure.com/services/datasync) Mastery Connect [](https://developerdocs.instructure.com/services/new-quizzes) [New Quizzes](https://developerdocs.instructure.com/services/new-quizzes) [Parchment Digital Badges](https://developerdocs.instructure.com/services/parchment-digital-badges) [Portfoliumarrow-up-right](https://github.com/portfolium/api/tree/master/application/views/swagger) [](https://developerdocs.instructure.com/services/public-product-api) [Public Product](https://developerdocs.instructure.com/services/public-product-api) [](https://developerdocs.instructure.com/services/studio) [Studio](https://developerdocs.instructure.com/services/studio) Last updated 2 days ago Was this helpful? --- # New Quizzes | Instructure Developer Documentation Portal [Quiz LTI public endpointschevron-right](https://developerdocs.instructure.com/services/new-quizzes/public) [PreviousUserchevron-left](https://developerdocs.instructure.com/services/studio/api-reference/user) [NextQuiz LTI public endpointschevron-right](https://developerdocs.instructure.com/services/new-quizzes/public) Last updated 1 month ago Was this helpful? --- # Data Access Platform | Instructure Developer Documentation Portal Whether you're just starting, progressing through development, or preparing for release, DAP’s documentation and tools make building efficient and straightforward. [hashtag](https://developerdocs.instructure.com/services/dap#explore-the-platform) Explore the Platform ------------------------------------------------------------------------------------------------------------ [](https://developerdocs.instructure.com/services/dap/key-concepts) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-5a470fdbaa6f99f7eec12f266622790ff3d24b85%252FCover%2520-%2520Concepts.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=26d1dd3c&sv=2) **Key Concepts** Learn how DAP’s entities and tools function and interact. [](https://developerdocs.instructure.com/services/dap/dataset) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-7e002404a0cafc3b604cc3d236858cf5e15f4487%252FCover%2520-%2520Datasets.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=3050e910&sv=2) **Datasets** Find details about namespaces, tables, and schemas. [](https://data-access-platform-api.s3.amazonaws.com/erd/index.html) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-744d76f9bc75ba0f605af27bbace3d95fbea3fc0%252FCover%2520-%2520ERD.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=97bf8822&sv=2) **Entity Relationship Diagram** Visualize DAP’s tables and their relationships. [hashtag](https://developerdocs.instructure.com/services/dap#create-your-solution) Create Your Solution ------------------------------------------------------------------------------------------------------------ [](https://developerdocs.instructure.com/services/dap/query-api) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-a844b4740938c31a6e2b954ea04da0d8add5048e%252FCover%2520-%2520API.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=6fa6fe50&sv=2) **Query API** Create powerful integrations with external tools and services. [](https://developerdocs.instructure.com/services/dap/dap-cli-readme) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-9d1d59cdf344239b0226ebe80ec4fe5f8b4a6999%252FCover%2520-%2520CLI.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=5151cb93&sv=2) **Command Line** Manage and automate data imports into local databases from command line. [](https://developerdocs.instructure.com/services/dap/lib-index) ![Cover](https://developerdocs.instructure.com/~gitbook/image?url=https%3A%2F%2F3935729257-files.gitbook.io%2F%7E%2Ffiles%2Fv0%2Fb%2Fgitbook-x-prod.appspot.com%2Fo%2Fspaces%252FB0qnrcLHZo7GMoCVWI3W%252Fuploads%252Fgit-blob-922691cede07fb417bedfd502f5fafe3fa941fb1%252FCover%2520-%2520Lib.svg%3Falt%3Dmedia&width=490&dpr=3&quality=100&sign=db7b6985&sv=2) **Client Library** Develop custom solutions with Python library providing a simple interface. [hashtag](https://developerdocs.instructure.com/services/dap#additional-resources) Additional Resources ------------------------------------------------------------------------------------------------------------ [](https://community.canvaslms.com/t5/Canvas-Change-Log/2024-API-and-CLI-Change-Log/ta-p/591713) **Release Notes** Find the latest updates on the DAP ecosystem. [](https://status.instructure.com/) **Status** Check the platform’s availability and status. [](https://community.canvaslms.com/t5/Data-and-Analytics-Group/gh-p/data) Community Access Q&A and expert advice from the community. [PreviousUserschevron-left](https://developerdocs.instructure.com/services/commons/apis/users) [NextKey Conceptschevron-right](https://developerdocs.instructure.com/services/dap/key-concepts) Last updated 9 months ago Was this helpful? --- # Get Started | Instructure Developer Documentation Portal Hello! Welcome to Instructure's Developer Documentation portal. This portal contains API documentation for all Instructure products. Below are some examples of things you can do using Instructure product APIs: ### [hashtag](https://developerdocs.instructure.com/get_started#integrate-canvas-lms-into-your-applications) Integrate Canvas LMS into Your Applications * Integrate Canvas LMS into your applications. * For example, automate course creation * Synchronize student data between Canvas and your SIS or CRM * Retrieve [grades](https://developerdocs.instructure.com/services/canvas/resources/grade_change_log) and assessment results with API ### [hashtag](https://developerdocs.instructure.com/get_started#access-rich-educational-data-with-data-access-platform-dap) Access Rich Educational Data with Data Access Platform (DAP) * Access rich educational data with Data Access Platform (DAP) * For example, get detailed analytics about your student performance * Create institutional reports * Or integrate Canvas data into your business intelligence tools ### [hashtag](https://developerdocs.instructure.com/get_started#improve-your-assessments-with-quizzes) Improve Your Assessments with Quizzes * Improve your assessments with quizzes * You can quickly create and share quizzes * You can get quiz results for analysis * Save time by [managing quiz schedules and settings](https://developerdocs.instructure.com/services/canvas/resources/quiz_assignment_overrides) ### [hashtag](https://developerdocs.instructure.com/get_started#improve-your-classes) Improve Your Classes * Improve your classes * With personalized course information for the students * [Notify students](https://developerdocs.instructure.com/services/canvas/resources/account_notifications) about important events or milestones * Give instant feedback on assignments and quizzes ### [hashtag](https://developerdocs.instructure.com/get_started#llm-integration) LLM Integration * If you would like to use the page with LLMs, you can feed the LLM this url: [https://developerdocs.instructure.com/llms-full.txtarrow-up-right](https://developerdocs.instructure.com/llms-full.txt) [hashtag](https://developerdocs.instructure.com/get_started#quickstart-guide) Quickstart Guide --------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/get_started#id-1.-get-your-access-key) 1\. Get Your Access Key To access API endpoints for most of our services you need to get an Access Key. The way of getting these Access keys may be different for each service. Go into the subsection of the service you would like to use and look for a subpage called Authentication, OAuth, Developer Keys. **Examples:** * For Canvas LMS, find the Get started guide [here for OAuth](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth) and [here for Developer Keys](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys) * For Data Access Platform, [here is the info about Authentication](https://developerdocs.instructure.com/services/dap/query-api/oauth_login) * For Elevate Standards Alignment, [here is the Authentication setup](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication) ### [hashtag](https://developerdocs.instructure.com/get_started#id-2.-make-your-first-request) 2\. Make Your First Request! 1. Take your authentication key or secret you got in the previous step. 2. Find an API you would like to try. 3. If there is a "Test it" button, you can click on it and test it on the spot. 4. Otherwise, use Postman or Terminal with curl for testing it. ### [hashtag](https://developerdocs.instructure.com/get_started#id-3.-understand-the-responses) 3\. Understand the Responses When you make an API call, you'll typically get a response in JSON format. Here's how to quickly understand and use these responses: #### [hashtag](https://developerdocs.instructure.com/get_started#successful-response-with-status-200-or-201) ✅ Successful Response (with status 200 or 201): A successful response usually looks something like this (this is just an example): Copy { "id": 123, "name": "Introduction to Biology", "course_code": "BIO101" } Each response includes data fields (like `id`, `name`, and `course_code`) clearly describing what you've requested. You can use these fields directly in your applications. #### [hashtag](https://developerdocs.instructure.com/get_started#error-response-status-4xx) ⚠️ Error Response (status 4xx): If something goes wrong, you'll get an error response, for example: Copy { "errors": [\ {\ "message": "Invalid access token."\ }\ ] } Errors come with clear messages indicating the problem. Common issues include authentication errors, incorrect parameters, or permission issues. #### [hashtag](https://developerdocs.instructure.com/get_started#pagination-and-large-data) 📑 Pagination and Large Data: Some services, for example Canvas LMS, split API calls into multiple pages when you request a lot of data (like a long list of courses or users): * Check for a Link header in the response, which provides URLs for the next or previous page of results. * Example header: Copy Link: ; rel="next" You can follow these links to fetch all the data. Find more info about [Canvas pagination here](https://developerdocs.instructure.com/services/canvas/basics/file.pagination) . ### [hashtag](https://developerdocs.instructure.com/get_started#helpful-tips) 🛠️ Helpful Tips: * Use tools like [Postmanarrow-up-right](https://www.postman.com/) or browser extensions (like JSONView) to visualize responses clearly. * Always refer to the specific API's documentation page for detailed descriptions of each data field. [PreviousIntroductionchevron-left](https://developerdocs.instructure.com/) [NextServiceschevron-right](https://developerdocs.instructure.com/services) Last updated 9 months ago Was this helpful? --- # Commons | Instructure Developer Documentation Portal Canvas Commons includes a REST API for accessing and modifying data externally from the main application, in your own programs and scripts. This documentation describes the resources that make up the API. Most API requests require a valid session. To create a session, see the Create a Session Documentation under the the Sessions section. API requests are limited at a rate of 2500 requests per hour per user. The endpoints have regional hosts, pick yours from the list below based on you region. * US/LATAM: * https://lor.instructure.com/api * https://lor-beta.instructure.com/api * EMEA (hosted in Germany): * https://commons.eu-central.canvaslms.com/api * https://commons-fra-beta.instructure.com/api * Canada: * https://commons.ca-central.canvaslms.com/api * https://commons-yul-beta.instructure.com/api * Australia/NZ (hosted in Australia): * https://commons.sydney.canvaslms.com/api * https://commons-syd-beta.instructure.com/api * Asia Pacific (hosted in Singapore): * https://commons.singapore.canvaslms.com/api * https://commons-sin-beta.instructure.com/api [PreviousWaitlist Applicantschevron-left](https://developerdocs.instructure.com/services/catalog/openapi/waitlist_applicants) [NextAPIschevron-right](https://developerdocs.instructure.com/services/commons/apis) Last updated 9 months ago Was this helpful? --- # Catalog | Instructure Developer Documentation Portal So, you want to develop some tooling around the Catalog API - perhaps some custom reports? Great! This API gives you everything that Catalog has to offer. [hashtag](https://developerdocs.instructure.com/services/catalog#authentication) Authentication ---------------------------------------------------------------------------------------------------- Visit Catalog Admin API page to create an API key. Once you've received your key, **treat it like a password**. Use SSL for all requests to the API. Non-SSL requests will result in redirects, and your API key will be sent in the clear. To authenticate, send the API key as a request header. Here's an example using cURL: Copy curl https://[URL]/api/v1/products -H 'Authorization: Token token="my-api-key"' [hashtag](https://developerdocs.instructure.com/services/catalog#pagination) Pagination -------------------------------------------------------------------------------------------- All index endpoints support pagination. Specifically, we implement [RFC5988arrow-up-right](http://tools.ietf.org/html/rfc5988) . #### [hashtag](https://developerdocs.instructure.com/services/catalog#pagination-options) Pagination Options You can use `?page=` to set the page of data you want to retrieve. If no items exist for that page, the response will be a root key with an empty array. Copy curl https://[URL]/api/v1/courses?page=2 { "courses": [] } To change the number of items returned for each page, you can use `?per_page=`. This defaults to 20 and has a max of 100. Copy curl https://[URL]/api/v1/courses?per_page=40&page=2 #### [hashtag](https://developerdocs.instructure.com/services/catalog#link-headers) Link Headers Information about pagination is provided in the Link header. Here is an example of what the header could look like Copy curl -I https://[URL]/api/v1/courses?page=3 Link: ; rel="next", ; rel="last", ; rel="first", ; rel="prev" Let's talk about what each link means. `rel="next"` lets us know that the next page of data is `page=4`. This make sense given that we requested page 3. `rel="prev"` lets us know that the page previous to the one we requested is `page=2`. `rel="next"` indicates the next page of data to request. `rel="last"` tells us the last and total number of pages of data that currently exist. Not all `rel=` links will exist on every response. For instance, the response for the first page of data will not have `rel="first"` or `rel="prev"`. The same is true for the last page of data. This means that you can programmatically traverse all pages of data by requesting the first page and continuing to request the `rel="next"` until the response does not contain a `rel="next"`. It's important to note that altering the `per_page=` will change the total number of pages. #### [hashtag](https://developerdocs.instructure.com/services/catalog#listing-image) Listing Image If you are uploading a product image in SVG format. You will need to specify the file type. Copy curl https://[URL]/api/v1/products -F "course[listing_image]=@somefile.svg;type=image/svg+xml"' [PreviousWeb Conferences - createchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_conferences) [NextAPIschevron-right](https://developerdocs.instructure.com/services/catalog/openapi) Last updated 9 months ago Was this helpful? --- # Parchment Digital Badges | Instructure Developer Documentation Portal [hashtag](https://developerdocs.instructure.com/services/parchment-digital-badges#introduction) Introduction ----------------------------------------------------------------------------------------------------------------- Parchment Digital Badges is a comprehensive digital badging platform designed to facilitate the issuance, management, and tracking of digital credentials. Our API allows you to programmatically organize your backpack, manage your issuers, create digital badges and many more, enabling you to recognize and validate achievements within your own applications and platforms. [hashtag](https://developerdocs.instructure.com/services/parchment-digital-badges#environments) Environments ----------------------------------------------------------------------------------------------------------------- Environment API base URL US https://api.badges.parchment.com EU https://api.badges.parchment.eu AU https://api.badges.parchment.au CA https://api.badges.parchment.ca SG https://api.badges.parchment.sg Demo https://api.demo.badges.parchment.com Test https://api.test.badges.parchment.com [PreviousUnified Tool Idchevron-left](https://developerdocs.instructure.com/services/new-quizzes/public/api-endpoints/unified_tool_id) [NextGetting Startedchevron-right](https://developerdocs.instructure.com/services/parchment-digital-badges/getting-started) Last updated 5 months ago Was this helpful? --- # Public Product | Instructure Developer Documentation Portal [Public Product Endpointschevron-right](https://developerdocs.instructure.com/services/public-product-api/swagger) [PreviousUserschevron-left](https://developerdocs.instructure.com/services/parchment-digital-badges/openapi/users) [NextPublic Product Endpointschevron-right](https://developerdocs.instructure.com/services/public-product-api/swagger) Last updated 9 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Studio | Instructure Developer Documentation Portal [API Referencechevron-right](https://developerdocs.instructure.com/services/studio/api-reference) [PreviousPlatform APIchevron-left](https://developerdocs.instructure.com/services/datasync/platform-oas) [NextAPI Referencechevron-right](https://developerdocs.instructure.com/services/studio/api-reference) Last updated 8 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Data Sync | Instructure Developer Documentation Portal [Interop APIchevron-right](https://developerdocs.instructure.com/services/datasync/interop-oas) [Interop Data APIchevron-right](https://developerdocs.instructure.com/services/datasync/interop-data-oas) [Grades Exchange APIchevron-right](https://developerdocs.instructure.com/services/datasync/grades-oas) [OneRoster APIchevron-right](https://developerdocs.instructure.com/services/datasync/oneroster-v1p1-oas) [Platform APIchevron-right](https://developerdocs.instructure.com/services/datasync/platform-oas) [PreviousReferencechevron-left](https://developerdocs.instructure.com/services/dap/lib-index/lib-reference) [NextInterop APIchevron-right](https://developerdocs.instructure.com/services/datasync/interop-oas) Last updated 9 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Introduction | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_intro#external-tools-introduction) External Tools Introduction ----------------------------------------------------------------------------------------------------------------------------------------------------------------- Canvas, like many LMSs, supports loading external resources inline using the [IMS LTI standardarrow-up-right](http://www.imsglobal.org/lti/) . These tools can be deployed on a course or account level. Once configured, tools can be surfaced [as links in course modules](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.link_selection_placement) or used to [deliver custom assignment experiences](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.assignment_selection_placement) . Canvas supports some additional integration points using LTI (see the "Placements" dropdown in the left hand navigation here) to offer a more integrated experience and to allow for more customization of the Canvas product. This is accomplished by [configuring additional settings](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.lti_dev_key_config) on external tools used inside of Canvas and by leveraging [LTI Advantage servicesarrow-up-right](https://www.imsglobal.org/lti-advantage-overview) . Because tools can be deployed at any level in the system hierarchy, they can be as general or specific as needed. The Chemistry Department can add chemistry-specific tools without those tools cluttering everyone else's interfaces. Or, a single teacher who is trying out some new web service can do so without needing the tool to be set up at the account level. ### [hashtag](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_intro#types-of-tool-integrations) Types of Tool Integrations Canvas currently supports the following types of tool placements. **External tool** [**assignments integrations**](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.assignment_tools) **:** This type of integration is part of the [LTI 1.1 Outcomes Servicearrow-up-right](http://www.imsglobal.org/LTI/v1p1/ltiIMGv1p1.html) or [LTI 1.3 Assignment and Grade Servicesarrow-up-right](http://www.imsglobal.org/spec/lti-ags/v2p0/) and allows external services to synchronize grades, and other assignment details. Example use cases might include: * Administering a timed, auto-graded coding project * Evaluating a student's ability to correctly draw notes at different musical intervals * Giving students credit for participating in an interactive lesson on the Civil War **Adding a link/tab to the** [**course navigation**](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.navigation_tools#course_navigation) **:** Example use cases might include: * Building a specialized attendance/seating chart tool * Adding an "ebooks" link with course required reading * Connecting to study room scheduling tool * Linking to campus communication hub * Displaying a course-level dashboard (ex: analytics, student engagement, risk assessment, etc.) **Adding a link/tab to the** [**account navigation**](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.navigation_tools#account_navigation) **:** Example use cases might include: * Including outside reports in the Canvas UI * Building helper libraries for campus-specific customizations * Leveraging single sign-on for access to other systems, like SIS **Adding a link/tab to the** [**user profile navigation**](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.navigation_tools#user_navigation) **:** Example use cases might include: * Leveraging single sign-on to student portal from within Canvas * Linking to an external user profile **Selecting content to add to a variety of locations as** [**LTI deep links**](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.content_item) **:** Example use cases might include: * adding a button to [embed content to the Rich Content Editor](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.editor_button_placement) : * Embedding resources from campus video/image repository * Inserting custom-designed chemistry diagrams into quiz question text * Building integrations with new or subject-area-specialized web authoring services * [selecting links for modules](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.link_selection_placement) * Building and then linking to a remixed version of an online Physics textbook * Selecting from a list of pre-built, interactive quizzes on blood vessels * Choosing a specific chapter from an e-textbook to add to a module * [creating custom assignments for Canvas](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.assignment_tools) * Creating a Canvas assignment that launches the student to a custom assessment that can be automatically graded by the tool and synced with the Canvas Gradebook * Launching the student to an assessment with interactive videos. Once complete, the tool returns an LTI launch url that allows the teacher to see the submission without leaving Canvas. * [allowing a student to submit attachments to assignments](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.homework_submission_placement) * A student launches a custom video recording tool and submits the recording to Canvas * A student chooses an item from a portfolio tool and submits the item to Canvas **Subscribing to notifications with** [**Platform Notification Service**](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.pns) **:** Platform Notification Service (PNS) enables server-to-server communication by allowing the Platform to send messages, known as Notices, to Tools outside the scope of an active user session. Tools can register a "webhook" or handler endpoint using PNS to receive specific types of Notices, facilitating seamless integration and automation. ### [hashtag](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_intro#how-to-configure-import-integrated-tools) How to Configure/Import Integrated Tools #### [hashtag](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_intro#lti-1.1) LTI 1.1 Tool's placements can be configured using [LTI configuration XML](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_xml) as specified in the IMS Common Cartridge specification, or using the [external tools API](https://developerdocs.instructure.com/services/canvas/resources/external_tools) . Configuration XML contains all non-account-specific settings (except the consumer key and shared secret, which must always be entered manually). The user can [configure the tool by a tool-provided URLarrow-up-right](https://community.canvaslms.com/t5/Instructor-Guide/How-do-I-configure-an-external-app-for-a-course-using-a-URL/ta-p/884) (recommended), or [paste in the XMLarrow-up-right](https://community.canvaslms.com/t5/Admin-Guide/How-do-I-configure-an-external-app-for-an-account-using-XML/ta-p/221) that the tool provides. For information on how to programmatically configure external tools, so users don't have to copy and paste URLs or XML, please see the Canvas [external tools API](https://developerdocs.instructure.com/services/canvas/resources/external_tools) . #### [hashtag](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_intro#lti-1.3) LTI 1.3 Similar to LTI 1.1, tools built on the [LTI 1.3 specificationarrow-up-right](https://www.imsglobal.org/spec/lti/v1p3/) can be configured by either supplying clients with a JSON block or URL that hosts the JSON. This JSON is used to determine the behavior of the tool within Canvas by [configuring an LTI Developer Keyarrow-up-right](https://community.canvaslms.com/t5/Admin-Guide/How-do-I-configure-an-LTI-key-for-an-account/ta-p/140) . Once the developer key is created and turned on, users with sufficient permissions can [install the tool using the developer key's client IDarrow-up-right](https://community.canvaslms.com/t5/Admin-Guide/How-do-I-configure-an-external-app-for-an-account-using-a-client/ta-p/202) . **LTI Advantage Services permissions** When setting up Developer Keys, the section “LTI Advantage Services” allows you to enable or disable permissions for access via that developer key. Below is the list of permissions available: Permission name What it does IMS / Canvas scope **Can create and view assignment data in the gradebook associated with the tool** Allows use of all functionality of the [LTI LineItems API](https://developerdocs.instructure.com/services/canvas/resources/line_items) https://purl.imsglobal.org/spec/lti-ags/scope/lineitem **Can view assignment data in the gradebook associated with the tool** Allows use of the “show” and “list” endpoints of the [LTI LineItems API](https://developerdocs.instructure.com/services/canvas/resources/line_items) https://purl.imsglobal.org/spec/lti-ags/scope/lineitem.readonly **Can view submission data for assignments associated with the tool.** Allows use of the [LTI Advantage Result API](https://developerdocs.instructure.com/services/canvas/resources/result) https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly **Can create and update submission results for assignments associated with the tool** Allows use of the [LTI Advantage Score API](https://developerdocs.instructure.com/services/canvas/resources/score) https://purl.imsglobal.org/spec/lti-ags/scope/score **Can view Progress records associated with the context the tool is installed in** Allows use of the [Canvas LTI Progress API](https://developerdocs.instructure.com/services/canvas/resources/progress) , which is used during Score creation with an associated file https://canvas.instructure.com/lti-ags/progress/scope/show **Can retrieve user data associated with the context the tool is installed in** Allows use of the [LTI Advantage Names and Roles Provisioning Service](https://developerdocs.instructure.com/services/canvas/resources/names_and_role) https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly **Can register to receive asynchronous notifications from Canvas** Allows use of the 1EdTech Platform Notification Service. https://purl.imsglobal.org/spec/lti/scope/noticehandlers **Can retrieve submissions from Document Processor Assignments (experimental)** Allows use of the Asset Service (part of the 1EdTech Asset Processor specification). _Under development and not available yet for general use._ https://purl.imsglobal.org/spec/lti/scope/asset.readonly **Can send reports for Document Processor Assignments (experimental)** Allows use of the Asset Report Service (part of the 1EdTech Asset Processor specification). _Under development and not available yet for general use._ https://purl.imsglobal.org/spec/lti/scope/report **Can track if EULA has been accepted (experimental)** Allows use of the EULA Acceptance Service (part of the 1EdTech Asset Processor specification). _Under development and not available yet for general use._ https://purl.imsglobal.org/spec/lti/scope/eula/user **Can reset EULA acceptance status (experimental)** Allows use of the EULA Deployment Service (part of the 1EdTech Asset Processor specification). _Under development and not available yet for general use._ https://purl.imsglobal.org/spec/lti/scope/eula/deployment **Can update public jwk for LTI services** Allows use of the [LTI Public JWK API](https://developerdocs.instructure.com/services/canvas/resources/public_jwk) to update the tool's developer key's public JWK https://canvas.instructure.com/lti/public\_jwk/scope/update **Can lookup Account information** Allows use of the [Canvas LTI Account API](https://developerdocs.instructure.com/services/canvas/resources/accounts_-lti) (read only) https://canvas.instructure.com/lti/account\_lookup/scope/show **Can view the content of a page the tool is launched from** Allows use of the [lti.getPageContent](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.lti_window_post_message#lti-getpagecontent) postMessage https://canvas.instructure.com/lti/page\_content/show **Can view LTI registrations associated with the tool** Allows readonly access to the tool's own registration https://purl.imsglobal.org/spec/lti-reg/scope/registration.readonly **Can send automatic updates to be approved by an Administrator** Allows the tool to view and push update requests to it's own registration https://purl.imsglobal.org/spec/lti-reg/scope/registration NOTE: scopes with `https://canvas.instructure.com` are Canvas specific while others are LTI specifications * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousLTIchevron-left](https://developerdocs.instructure.com/services/canvas/external-tools/lti) [NextRegistrationchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.registration) Last updated 4 months ago Was this helpful? * [External Tools Introduction](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_intro#external-tools-introduction) * [Types of Tool Integrations](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_intro#types-of-tool-integrations) * [How to Configure/Import Integrated Tools](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_intro#how-to-configure-import-integrated-tools) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Elevate Standards Alignment - AB Connect | Instructure Developer Documentation Portal [hashtag](https://developerdocs.instructure.com/services/ab-connect#welcome) Welcome ----------------------------------------------------------------------------------------- Welcome to the AB Connect interactive documentation. The documentation and related API were developed to help you integrate AB Connect data and decision support services into your system to power the discovery of your content as well as its relationships to academic standards (e.g. alignments) and other content. AB Connect is built upon the most comprehensive collection of connected K-12 standards metadata, machine learning algorithms and subject matter expert validation available. If you find your users asking questions like the following, AB Connect has a solution for you. * I have a standard from Texas, is there a similar standard statement in Arizona? * I have a very useful lesson plan that is aligned to a Florida standard, but I'm teaching in California. What California standard might this lesson plan help me fulfill? * I have a very useful lesson plan aligned to a Nevada standard. Are there other similar lesson plans aligned to other state standards that I might use? * I want to create a lesson around the topic of equivalent numbers. Is there instructional material related to this topic that I can use to build my lesson? * I have an assessment item covering mass and energy equivalence. Is there any instructional material I could use to reinforce this concept? * I started tagging my assessment items with a few main concepts. What other concepts within standards may be related to these main concepts? * I have a lesson plan that is covering divisibility rules. What standards across 50 states cover this concept? What other materials cover this concept? * I have lessons aligned to Ohio's 2011 Science standards and they've just released the 2018 standards. How can I remap my alignments quickly? This documentation describes the AB Connect API in great detail offering examples and an interactive [Reference section](https://developerdocs.instructure.com/services/ab-connect/reference/standards) to get you started right away. We invite you to learn more about AB Connect or take a test drive. [Check out the examples section](https://developerdocs.instructure.com/services/ab-connect/introduction/examples) to see working examples built using AB Connect. _© 2024 Instructure, Inc. All rights reserved._ [hashtag](https://developerdocs.instructure.com/services/ab-connect#technical-overview) Technical Overview --------------------------------------------------------------------------------------------------------------- Version 4.1 of AB Connect is [RESTfularrow-up-right](https://en.wikipedia.org/wiki/Representational_state_transfer) and is structurally compliant with [JSON APIarrow-up-right](http://jsonapi.org/) . Since JSON API does not explicitly state syntax of filter statements, Academic Benchmarks adopted a simple filtering syntax based on [ODATAarrow-up-right](http://www.odata.org/) 's query $filter. Note that ODATA's syntax is not directly compatible with JSON API but [this discussion threadarrow-up-right](http://discuss.jsonapi.org/t/share-propose-a-filtering-strategy/257) was the inspiration for our solution. [hashtag](https://developerdocs.instructure.com/services/ab-connect#getting-started) Getting Started --------------------------------------------------------------------------------------------------------- When you send data through the interactive endpoints in the [Reference section](https://developerdocs.instructure.com/services/ab-connect/reference/standards) , you must authenticate in order to make the call and the responses are handled by a production Academic Benchmarks server so the functionality is real and complete. If you are already a licensed customer and don't know your credentials or would like to inquire about purchasing a license, please reach out to [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#c2a3a0b1b7b2b2adb0b682abacb1b6b0b7a1b6b7b0a7eca1adaffdb1b7a0a8a7a1b6ff8380e7f0f281adacaca7a1b6e7f0f293b7a7b1b6abadace7f0f2adb0e7f0f281adafafa7acb6e7f0f2e7f0fab4f6ecf3e7f0f283928be7f0fb) at Instructure. If you are not a customer but would like to become familiar with the API, you can request a sandbox account [herearrow-up-right](https://community.canvaslms.com/plugins/custom/instructure/instructure/custom.ab-form) . [PreviousServiceschevron-left](https://developerdocs.instructure.com/services) [NextIntroductionchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction) Last updated 6 months ago Was this helpful? * [Welcome](https://developerdocs.instructure.com/services/ab-connect#welcome) * [Technical Overview](https://developerdocs.instructure.com/services/ab-connect#technical-overview) * [Getting Started](https://developerdocs.instructure.com/services/ab-connect#getting-started) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Introduction | Instructure Developer Documentation Portal [Authenticationchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication) [Addressing Object Propertieschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/addressing-object-properties) [Requesting Additional Properties in the Responsechevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/requesting-additional-properties) [Filtering Using ODATA Like Statementschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) [Sortingchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/sorting) [Facetschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/facets) [Paging Datachevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/paging) [Call Throttlingchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/throttling) [Working with Related Objectchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects) [Error Responseschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/error-responses) [Character Set Supportchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/character-set) [Licensing Considerationschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/licensing) [How To Articles, Recommendations and Suggestionschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to) [Exampleschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/examples) [Using AB Connect's Embeddable Widgetschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets) [PreviousElevate Standards Alignment - AB Connectchevron-left](https://developerdocs.instructure.com/services/ab-connect) [NextAuthenticationchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Addressing Object Properties | Instructure Developer Documentation Portal There are several URL Parameters where you will need to name specific properties of an object (like filter and fields). Generally speaking, see the endpoint's Response Attributes section for the properties that are available. Here are a few rules to keep in mind when constructing the property names. * The name of a property on an object is addressed using dot notation like `object.property`. E.g. `disciplines.grades` * JSON constructs in AB Connect responses that are inserted simply to adhere to JSON API requirements are not included in the property naming. E.g. if you want to address the `standard_type` of a `standard` object, the name is simply `standard_type` - not `data.attributes.standard_type`. Generally speaking, JSON API keywords can be left out of the names - things like attributes, relationships and data. Note that meta properties on relationships are the acception. We include the `meta` part of the property path to eliminate conflicts between object and relationship property names. [PreviousAuthenticationchevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication) [NextRequesting Additional Properties in the Responsechevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/requesting-additional-properties) Last updated 6 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Sorting | Instructure Developer Documentation Portal By default, list results are returned in order of decreasing relevance. However, you can specify a sort field using the `sort` argument in the URL query string. The format of the requests is: Copy `sort[object of sort]=` E.g. Copy `sort[standards]=number.enhanced` You can specify multiple criteria to ensure that items that may have duplicate values in one property have a secondary sort to guarantee order. E.g. Copy `sort[standards]=number.enhanced,statement.descr` The default behavior is to sort in ascending order by the specified property. However, if you'd like descending order, prepend the property name with a hyphen/minus (U+002D) "-". E.g. Copy `sort[standards]=-number.enhanced` [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/sorting#notes) Notes: ----------------------------------------------------------------------------------------------------------- * Custom attributes can be defined as text or numbers. If you aren't sure of the types for your custom attributes, contact [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#86e7e4f5f3f6f6e9f4f2c6efe8f5f2f4f3e5f2f3f4e3a8e5e9ebb9f5f3e4ece3e5f2bbc7c4a3b4b6c5e9e8e8e3e5f2a3b4b6d7f3e3f5f2efe9e8a3b4b6e9f4a3b4b6c5e9ebebe3e8f2a3b4b6a3b4bef0b2a8b7a3b4b6c7d6cfa3b4bf) for guidance. * It is possible to create custom attributes with the same name and different data types in different asset types (or when searching across multiple owners). If you sort on custom attributes of different types, ascending sorts put number attribute values above text attribute values. Descending sorts reverse the order. Note that within a given type, numbers are sorted numerically and text attributes are sorted alphabetically. [PreviousFiltering Using ODATA Like Statementschevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) [NextFacetschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/facets) Last updated 6 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Paging Data | Instructure Developer Documentation Portal All AB Connect v4.1 endpoints deal with lists of data. Unless you are requesting a single element using its GUID (or ID), the response will contain a list - even if there is just a single element in the list. For efficiency reasons, AB Connect breaks the list up into pages. The default page size is 10 elements except for the Clarifier which returns 5 Concepts and 5 Standards by default. The `limit` and `offset` arguments help your application manage the list of data by setting the page size and enabling the application to walk through the pages of the list. This way, you can strike the proper balance between efficiency and performance. Note that in order to maintain server stability, page sizes are capped at 100 objects per page to prevent resource depletion on the server. This section illustrates the general use of limit and offset but doesn't go into the details of any given particular endpoint. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/paging#walking-the-list) Walking the List ------------------------------------------------------------------------------------------------------------------------------- As mentioned above, AB Connect limits the size of a response to 10 elements by default. This limit only applies to the primary list of elements for the endpoint. E.g. the Standards endpoint will break the Standards list into pages. However, if you request the Standards endpoint to include related Concepts, all Concepts related to each Standard will be returned in the single call regardless of length of the Concepts list. When responding with a list, AB Connect supplies paging URLs in the links section of the response can use the `next` and `previous` links to walk the response list. Copy { "links": { "last": "https://api.abconnect.instructure.com/rest/v4.1/?offset=248960", "next": "https://api.abconnect.instructure.com/rest/v4.1/?offset=10", "self": "https://api.abconnect.instructure.com/rest/v4.1/" } } The first page of data includes `next` and `last` links. The `next` link supplies the URL to retrieve the next set of data based on your current page size (which is specified by the `limit` argument and defaults to 10). Note the use of the `offset` argument above to support the paging. Offset indicates how far into the list you'd like AB Connect to dive when responding to the request. One of the middle pages of data should include not just `next` and `last` but also `first` and `previous` links to support bidirectional paging. Copy { "links": { "last": "https://api.abconnect.instructure.com/rest/v4.1/?offset=248960", "next": "https://api.abconnect.instructure.com/rest/v4.1/?offset=20", "first": "https://api.abconnect.instructure.com/rest/v4.1/", "self": "https://api.abconnect.instructure.com/rest/v4.1/?offset=10", "prev": "https://api.abconnect.instructure.com/rest/v4.1/" } } If you'd like to make the page responses larger or smaller, you can use the limit parameter. E.g. In which case, the number of elements from the list that you receive for each request changes. This is also reflected in the links you get in response in order to enable the system to properly track page size as you navigate the list. Between these two parameters, you should be able to control how your system receives responses and tune it for optimum performance. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/paging#no-limits) No Limits ----------------------------------------------------------------------------------------------------------------- When would you ever want your response to contain 0 elements? In addition to the object data contained in the response, most endpoints can return data in the `meta` object (like facets). If you want to explore the meta object without inducing the overhead of processing data elements in the list, set the `limit` to 0. E.g. Will return something similar to the following: [PreviousFacetschevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/facets) [NextCall Throttlingchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/throttling) Last updated 6 months ago Was this helpful? * [Walking the List](https://developerdocs.instructure.com/services/ab-connect/introduction/paging#walking-the-list) * [No Limits](https://developerdocs.instructure.com/services/ab-connect/introduction/paging#no-limits) Was this helpful? sun-brightdesktopmoon Copy `https://api.abconnect.instructure.com/rest/v4.1/?...&limit=25` Copy { "links": { "last": "https://api.abconnect.instructure.com/rest/v4.1/?limit=25&offset=248950", "next": "https://api.abconnect.instructure.com/rest/v4.1/?limit=25&offset=25", "self": "https://api.abconnect.instructure.com/rest/v4.1/?limit=25" } } Copy `https://api.abconnect.instructure.com/rest/v4.1/standards?limit=0&facet_summary=*` Copy { "links": { "self": "https://api.abconnect.instructure.com/rest/v4.1/standards?limit=0" }, "data": [ ], "meta": { "offset": 0, "limit": 0, "took": 232, "count": 248969, "facets": [\ {\ "facet": "document.publication.authorities",\ "count": 54\ ...\ },\ ...\ ] }, ... } sun-brightdesktopmoon --- # Requesting Additional Properties in the Response | Instructure Developer Documentation Portal By default, if the fields argument is not included in the request, AB Connect responds with the object ID and type. In order to request that AB Connect return additional properties in its response, use the `fields` URL parameter. The form is `fields[]=`. To illustrate the usage, let's take a look at the properties of a Standard and how use of the `fields` parameter affects the system response. Let's begin with the default response. Copy `GET https://api.abconnect.instructure.com/rest/v4.1/standards/1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22` { "links": { "self": "https://api.abconnect.instructure.com/rest/v4.1/standards/1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22" }, "data": { "type": "standards", "id": "1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22" }, "meta": { "took": 66 } } As you can see, the response does not include much useful information. Let's make the call again asking just for the main text of the Standard, its number and the AB `standard_type`. Copy `GET https://api.abconnect.instructure.com/rest/v4.1/standards/1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22?fields[standards]=statement.descr,standard_type,number.enhanced` { "links": { "self": "https://api.abconnect.instructure.com/rest/v4.1/standards/1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22?fields[standards]=statement.descr,standard_type,number.enhanced" }, "data": { "attributes": { "number": { "enhanced": "CCSS.Math.Content.HSN-VM.A.1" }, "standard_type": "objective", "statement": { "descr": "Recognize vector quantities as having both magnitude and direction. Represent vector quantities by directed line segments, and use appropriate symbols for vectors and their magnitudes (e.g., ?, |?|, ||?||, ?)." } }, "type": "standards", "id": "1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22" }, "meta": { "took": 156 } } Conversely, if you really want it ALL, you can use an asterisk to indicate that you want the system to give you EVERYTHING! Note that this can have an impact on system performance so we strongly recommend you use the asterisk only for discovery when you are learning the API. To ensure the use of wildcards with the `fields` parameter does not impact overall system performance, such calls are throttled to 2 per second. For brevity, we've removed some details in this example as the payload is quite large. See the section on [Addressing Object Properties](https://developerdocs.instructure.com/services/ab-connect/introduction/addressing-object-properties) for insight into property names. [PreviousAddressing Object Propertieschevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/addressing-object-properties) [NextFiltering Using ODATA Like Statementschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) Last updated 6 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon Copy `GET https://api.abconnect.instructure.com/rest/v4.1/standards/1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22?fields[standards]=*` { "links": { "self": "https://api.abconnect.instructure.com/rest/v4.1/standards/1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22?fields[standards]=%2A" }, "data": { "type": "standards", "id": "1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22", "attributes": { "statement": { "addendums": [], "combined_descr": "Recognize vector quantities as having both magnitude and direction. Represent vector quantities by directed line segments, and use appropriate symbols for vectors and their magnitudes (e.g., 𝙫, |𝙫|, ||𝙫||, 𝘷).", "descr": "Recognize vector quantities as having both magnitude and direction. Represent vector quantities by directed line segments, and use appropriate symbols for vectors and their magnitudes (e.g., 𝙫, |𝙫|, ||𝙫||, 𝘷)." }, "label": "Standard", "education_levels": { "grades": [\ {\ "code": "9",\ "descr": "9th Grade",\ "guid": "F1FA7154-3B53-11E0-B042-495E9DFF4B22",\ "seq": 110\ },\ {\ "seq": 120,\ "guid": "F1FA7E92-3B53-11E0-B042-495E9DFF4B22",\ "descr": "10th Grade",\ "code": "10"\ },\ {\ "code": "11",\ "guid": "F1FA8BD0-3B53-11E0-B042-495E9DFF4B22",\ "descr": "11th Grade",\ "seq": 130\ },\ {\ "guid": "F1FA9904-3B53-11E0-B042-495E9DFF4B22",\ "descr": "12th Grade",\ "seq": 140,\ "code": "12"\ }\ ], "ece_ages": [] }, "number": { "raw": "1.", "prefix_enhanced": "CCSS.Math.Content.HSN-VM.A.1", "enhanced": "CCSS.Math.Content.HSN-VM.A.1" }, "utilizations": [\ {\ "guid": "3A6BCD99-F093-4782-9708-5E65F2DEC3F2",\ "type": "alignable"\ }\ ], "in_list": "N", "status": "active", "captured_by": "AB", "deepest" : "Y", "disciplines": { "subjects": [\ {\ "guid": "F1FB2F2C-3B53-11E0-B042-495E9DFF4B22",\ "descr": "Mathematics",\ "code": "MATH"\ }\ ], "_content_connections": [], "strands": [\ {\ "guid": "81C28CFA-046C-11E0-9AE1-661C9DFF4B22",\ "descr": "Patterns, Functions, and Algebra"\ }\ ], "genres": [], "ece_domains": [] }, "key_ideas": [\ {\ "concepts": [\ {\ "guid": "0AADCE68-3BA2-11E1-A29D-011A9DFF4B22",\ "descr": "Vectors"\ },\ {\ "descr": "Mathematical Notation",\ "guid": "0CB810D8-3BA2-11E1-A29D-011A9DFF4B22"\ }\ ],\ "guid": "75757524-D232-11DE-8EF1-B44B9DFF4B22"\ },\ {\ "guid": "982B3456-D236-11DE-B34E-394D9DFF4B22",\ "concepts": [\ {\ "descr": "Vectors",\ "guid": "0AADCE68-3BA2-11E1-A29D-011A9DFF4B22"\ },\ {\ "guid": "0BE351EA-3BA2-11E1-A29D-011A9DFF4B22",\ "descr": "Vector Direction"\ }\ ]\ },\ {\ "concepts": [\ {\ "descr": "Vectors",\ "guid": "0AADCE68-3BA2-11E1-A29D-011A9DFF4B22"\ },\ {\ "guid": "0BE36E64-3BA2-11E1-A29D-011A9DFF4B22",\ "descr": "Vector Magnitude"\ }\ ],\ "guid": "982B4BE4-D236-11DE-B34E-394D9DFF4B22"\ }\ ], "document": { "assessment_year": null, "disciplines": { "primary_subject": { "code": "MATH", "guid": "F1FB2F2C-3B53-11E0-B042-495E9DFF4B22", "descr": "Mathematics" } }, "adopt_year": "2010", "source_url": "http://www.corestandards.org/Math/", "revision_year": "2010", "guid": "6C2635F0-6EC0-11DF-AB2D-366B9DFF4B22", "date_modified_utc": "2018-02-13 16:26:49", "descr": "Mathematics", "obsolete_year": null, "implementation_year": null, "publication": { "guid": "964E0FEE-AD71-11DE-9BF2-C9169DFF4B22", "regions": [\ {\ "code": "US",\ "guid": "91273AE8-F1B9-11E5-862E-0938DC287387",\ "descr": "United States of America",\ "type": "country"\ },\ {\ "type": "other",\ "guid": "A83297F2-901A-11DF-A622-0C319DFF4B22",\ "descr": "CCSS",\ "code": "CC"\ }\ ], "descr": "Common Core State Standards", "authorities": [\ {\ "acronym": "CC",\ "descr": "NGA Center/CCSSO",\ "guid": "A83297F2-901A-11DF-A622-0C319DFF4B22"\ }\ ], "acronym": null, "source_url": "http://www.corestandards.org/the-standards" } }, "topic_organizer": null, "has_list": "N", "date_deleted_utc": null, "section": { "_id": 21003, "date_modified_utc": "2018-02-13 16:26:49", "guid": "25EC8E56-7053-11DF-8EBF-BE719DFF4B22", "descr": "High School - Number and Quantity", "obsolete_year": null, "seq": 2410, "assessment_year": null, "disciplines": { "primary_subject": { "code": "MATH", "descr": "Mathematics", "guid": "F1FB2F2C-3B53-11E0-B042-495E9DFF4B22" } }, "adopt_year": "2010", "implementation_year": null, "label": "Conceptual Category", "number": null }, "alt_identifiers": [\ {\ "type": "GUID",\ "id": "05BAE0DE74104B1AADC31E85AA1A6128",\ "source": "canonical"\ },\ {\ "source": "canonical",\ "id": "http://corestandards.org/Math/Content/HSN-VM/A/1",\ "type": "URI"\ }\ ], "level": 3, "date_modified_utc": "2014-06-19 16:36:44", "guid": "1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22", "seq": 30, "extensions": [], "uri": "https://api.abconnect.instructure.com/rest/v4.1/standards/1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22", "legends": [\ {\ "symbol_position": "before",\ "descr": "Additional mathematics that students should learn in order to take advanced courses",\ "symbol": "+"\ }\ ], "standard_type": "objective" }, "relationships": { "concepts": { "data": [...] }, "derivatives": { "data": [...] }, "peers": { "data": [...] }, "contexts": { "data": [\ {\ "type": "standards",\ "id": "1F9A411A-7053-11DF-8EBF-BE719DFF4B22"\ }\ ] }, "topics": { "data": [\ {\ "type": "topics",\ "id": "9E783750-4445-11E0-9271-67D4D51F4EFC"\ }\ ] }, "origins": { "data": [] }, "parent": { "data": { "id": "1F9BE786-7053-11DF-8EBF-BE719DFF4B22", "type": "standards" } }, "ancestors": { "data": [\ {\ "type": "standards",\ "id": "1F9A411A-7053-11DF-8EBF-BE719DFF4B22"\ },\ {\ "id": "1F9BE786-7053-11DF-8EBF-BE719DFF4B22",\ "type": "standards"\ }\ ] }, "peer_derivatives": { "data": [] }, "children": { "data": [] } } }, "meta": { "took": 152 } } sun-brightdesktopmoon --- # Facets | Instructure Developer Documentation Portal Facets are common filter criteria that will help you present useful filter options to your end users. To request a list of facets for your license and filter criteria, use the facet argument in the GET query. The results are returned in the meta section of the response. The form of the request is: `facet=` Calculating the facet summaries returned in the `meta.facet` section of the response does incur some calculation overhead. It is negligible in most circumstances but you have control over how much faceting the server performs. The URL query parameter `facet_summary` allows you to specify which data fields are processed with the call. A few useful examples: * `facet_summary=*` - Return all of the facets available for the endpoint. See [Using Facets as an Entry Point for Browsing Assets](https://developerdocs.instructure.com/services/ab-connect/introduction/facets#using-facets-as-an-entry-point-for-browsing-assets) . Note that using an asterisk can have an impact on system performance so we strongly recommend you use the asterisk only for discovery when you are learning the API. To ensure the use of wildcards with the `facet_summary` parameter does not impact overall system performance, such calls are throttled to 2 per second. * `facet_summary=` - Return the summaries of the listed facets. The facets that are available vary by endpoint and licensing. While some facets values offer additional properties, all of them have at least a `guid` and `descr` property. Note that Topic facets also offer information about their parents so a calling application can easily assemble the required tree without the added overhead of calls to the Topics endpoint. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/facets#using-facets-as-an-entry-point-for-browsing-standards) Using Facets as an Entry Point for Browsing Standards --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- By way of example, let's examine the facet capability of the Standards endpoint. This can be used as a convenient starting point for users browsing for Standards. It can also be used as a means for examining "categories" of Standards in your license. To get started, if you call the endpoint requesting all facet summaries without any filtering, the system will respond with the types of facets available and the number of elements in each facet. For convenience, we'll set the `limit` to 0 here so the system doesn't bother to respond with any actual Standards because at this point, we are only interested in the facets themselves which come back via the meta portion of the response. Copy `GET https://api.abconnect.instructure.com/rest/v4.1/standards?limit=0&facet_summary=*` { "links": { "self": "https://api.abconnect.instructure.com/rest/v4.1/standards?limit=0&facet_summary=*" }, "data": [], "meta": { "count": 378522, "facets": [\ {\ "count": 14,\ "facet": "education_levels.grades"\ },\ {\ "facet": "education_levels.ece_ages",\ "count": 8\ },\ {\ "count": 54,\ "facet": "document.publication.authorities"\ },\ {\ "facet": "disciplines.strands",\ "count": 111\ },\ {\ "facet": "disciplines.subjects",\ "count": 17\ },\ {\ "count": 440,\ "facet": "document"\ },\ {\ "facet": "document.publication.regions",\ "count": 54\ },\ {\ "count": 5542,\ "facet": "section"\ },\ {\ "facet": "disciplines.ece_domains",\ "count": 6\ },\ {\ "facet": "document.publication",\ "count": 163\ }\ ], "limit": 0, "took": 336, "offset": 0 } } The facet counts respect both your license limitations and the current filter. In this case, we are not specifying a filter, so the counts reflect our licensing. If you wanted to build a user interface that offers the user control over each facet in filtering the Standards, you could request the elements for each facet and populate lists with the results. You may find that offering 10 facets is overwhelming for your users so you may want to select a few key facets. Perhaps we start by allowing the users to select an authority and subject. Let's retrieve the details of those two facets. The facet "names" are the values of the `facet` properties - in this case, `document.publication.authorities` and `disciplines.subjects`. Note that you can see in the response above that there are 17 subjects and 54 authorities in this license (although yours will vary). The example response below has been simplified to improve readability. Once a user has selected an authority (Georgia DOE) and subject (Science), you may want to offer them a list of relevant strands. Note that there are 111 strands in this sample license. Let's limit the scope to Georgia DOE and Science and get the list of relevant strands to offer the user. Now you see that there are only 7 relevant strands. One thing to note: the `detail.count` property is the number of Standards that match the associated criteria. For example, there are 28 Space Science related Standards in Georgia. You can continue this approach to help the user narrow the Standards down to a manageable count and then present them to the user for selection. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/facets#using-facets-as-an-entry-point-for-browsing-assets) Using Facets as an Entry Point for Browsing Assets --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Using faceting on Assets is similar to that of Standards with one major exception. Asset faceting can include custom attributes. E.g. if your Assets represent assessment items and you have an `item_type` field that may contain values like "Multiple Choice", "Essay", etc. you can request the facet summary by explicitly requesting `facet_summary=custom_attributes.item_type` and/or retrieve the details with `facet=custom_attributes.item_type`. The custom attributes may contain unique values (like a URL or external ID) and calculating the facets can impact performance. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/facets#notes) Notes --------------------------------------------------------------------------------------------------------- * Although this section focused on the Standards endpoint as an example, all endpoints except Clarifier support faceting. * The facet results appear in the meta section of the JSON API response. * Facet summaries that have high counts (counts in the thousands) may not be exact - they are approximate for performance reasons. If you need an exact count, you must request the facet. The count returned with the facet is accurate as are the counts returned with each facet value. * If you do not supply a `facet_summary` parameter, the system does not return any facet information. * If the `facet` or `facet_summary` arguments are combined with filter criteria, the results respect the filter requirements. * AB Connect does not support paging of facet data. * When requesting facets with a large number of values (count > 10,000) only the first 10,000 entries are returned. In general faceting on a large number of values has performance implications and should be avoided. * A quick way to retrieve facet information without cluttering the response with actual Standards data is to use the `limit` argument and set the `limit` to `0`. For example: * `https://api.abconnect.instructure.com/rest/v4.1/standards?limit=0&facet_summary=*` returns a minimal set of data including the facets and counts for your license. You can use this as a starting point if you are dynamically building a UI to allow users to select facet criteria. * `https://api.abconnect.instructure.com/rest/v4.1/standards?limit=0&filter[standards]=(document.publication.authorities.descr%20eq%20%27Kentucky%20DOE%27)&facet_summary=*` returns the facets and counts for Kentucky DOE Standards. [PreviousSortingchevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/sorting) [NextPaging Datachevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/paging) Last updated 6 months ago Was this helpful? * [Using Facets as an Entry Point for Browsing Standards](https://developerdocs.instructure.com/services/ab-connect/introduction/facets#using-facets-as-an-entry-point-for-browsing-standards) * [Using Facets as an Entry Point for Browsing Assets](https://developerdocs.instructure.com/services/ab-connect/introduction/facets#using-facets-as-an-entry-point-for-browsing-assets) * [Notes](https://developerdocs.instructure.com/services/ab-connect/introduction/facets#notes) Was this helpful? sun-brightdesktopmoon Copy `GET https://api.abconnect.instructure.com/rest/v4.1/standards?facet=document.publication.authorities,disciplines.subjects&limit=0` { "links": { "self": "https://api.abconnect.instructure.com/rest/v4.1/standards?facet=document.publication.authorities,disciplines.subjects&limit=0" }, "data": [], "meta": { "count": 378522, "facets": [\ {\ "facet": "disciplines.subjects",\ "details": [\ {\ "data": {\ "descr": "Language Arts",\ "guid": "F1FAC302-3B53-11E0-B042-495E9DFF4B22",\ "code": "LANG"\ },\ "count": 120749\ },\ {\ "count": 88449,\ "data": {\ "descr": "Science",\ "guid": "F1FB3DD2-3B53-11E0-B042-495E9DFF4B22",\ "code": "SCI"\ }\ },\ {\ "count": 85870,\ "data": {\ "code": "MATH",\ "guid": "F1FB2F2C-3B53-11E0-B042-495E9DFF4B22",\ "descr": "Mathematics"\ }\ },\ {\ "data": {\ "code": "SOC",\ "guid": "F1FB4B38-3B53-11E0-B042-495E9DFF4B22",\ "descr": "Social Studies"\ },\ "count": 83445\ },\ {\ "data": {\ "code": "SCIT",\ "descr": "Science and Technology",\ "guid": "F1FC8A52-3B53-11E0-B042-495E9DFF4B22"\ },\ "count": 6638\ },\ ...\ ],\ "count": 17\ },\ {\ "details": [\ {\ "data": {\ "acronym": null,\ "descr": "Virginia DOE",\ "guid": "912F0480-F1B9-11E5-862E-0938DC287387"\ },\ "count": 20833\ },\ {\ "data": {\ "guid": "9129D578-F1B9-11E5-862E-0938DC287387",\ "acronym": null,\ "descr": "Maryland DOE"\ },\ "count": 17919\ },\ {\ "data": {\ "descr": "Pennsylvania DOE",\ "acronym": null,\ "guid": "912DF40A-F1B9-11E5-862E-0938DC287387"\ },\ "count": 15428\ },\ {\ "data": {\ "guid": "9127D390-F1B9-11E5-862E-0938DC287387",\ "descr": "New York DOE",\ "acronym": null\ },\ "count": 14565\ },\ {\ "data": {\ "acronym": null,\ "descr": "Georgia DOE",\ "guid": "91296E80-F1B9-11E5-862E-0938DC287387"\ },\ "count": 13192\ },\ ...\ ],\ "facet": "document.publication.authorities",\ "count": 54\ }\ ], "limit": 0, "took": 459, "offset": 0 } } Copy `GET https://api.abconnect.instructure.com/rest/v4.1/standards?facet=disciplines.strands&filter[standards]=(document.publication.authorities.guid eq '91296E80-F1B9-11E5-862E-0938DC287387' and disciplines.subjects.code eq 'SCI')&limit=0` { "links": { "self": "https://api.abconnect.instructure.com/rest/v4.1/standards?facet=disciplines.strands&filter[standards]=(document.publication.authorities.guid%20eq%20%2791296E80-F1B9-11E5-862E-0938DC287387%27%20and%20disciplines.subjects.code%20eq%20%27SCI%27)&limit=0" }, "data": [], "meta": { "took": 119, "facets": [\ {\ "facet": "disciplines.strands",\ "details": [\ {\ "count": 1416,\ "data": {\ "descr": "Nature of Science",\ "guid": "81C5F6E2-046C-11E0-9AE1-661C9DFF4B22"\ }\ },\ {\ "data": {\ "guid": "81C4A2BA-046C-11E0-9AE1-661C9DFF4B22",\ "descr": "Life Science"\ },\ "count": 353\ },\ {\ "data": {\ "guid": "81C51DF8-046C-11E0-9AE1-661C9DFF4B22",\ "descr": "Physical Science"\ },\ "count": 296\ },\ {\ "data": {\ "descr": "Scientific Inquiry",\ "guid": "81C58A0E-046C-11E0-9AE1-661C9DFF4B22"\ },\ "count": 276\ },\ {\ "data": {\ "guid": "81C62CFC-046C-11E0-9AE1-661C9DFF4B22",\ "descr": "Earth Science"\ },\ "count": 240\ },\ {\ "data": {\ "guid": "81C5544E-046C-11E0-9AE1-661C9DFF4B22",\ "descr": "Environmental Science"\ },\ "count": 65\ },\ {\ "count": 28,\ "data": {\ "descr": "Space Science",\ "guid": "81C63AA8-046C-11E0-9AE1-661C9DFF4B22"\ }\ }\ ],\ "count": 7\ }\ ], "limit": 0, "count": 2690, "offset": 0 } } sun-brightdesktopmoon --- # Filtering Using ODATA Like Statements | Instructure Developer Documentation Portal The main directive for filtering entities in AB Connect is the inclusion of the `filter` parameter in the URL query. This document outlines how to use filtering with AB Connect. Examples are given with different endpoints and objects but the general principles are independent of the object type or endpoint. In any case, the filter limits the results that are returned or updated by the request. At its simplest, the filtering utilizes the following syntax: Copy `?filter[]=` E.g. the following URL retrieves alignable 5th grade math Standards from Kentucky. Copy `https://api.abconnect.instructure.com/rest/v4.1/standards?filter[standards]=(disciplines.subjects.code%20eq%20%27MATH%27%20and%20education_levels.grades.code%20eq%20%275%27%20and%20document.publication.authorities.descr%20eq%20%27Kentucky%20DOE%27%20and%20utilizations.type%20eq%20%27alignable%27)` That's a bit messy so let's break it down. The first part is the primary resource endpoint. Copy `https://api.abconnect.instructure.com/rest/v4.1/standards` The next bit is the filter parameter. The square brackets contain the type of object being filtered. In this case, we are limiting the Standards being returned. Copy `filter[standards]` The value of the filter argument is the URL encoded filter string. Copy `(disciplines.subjects.code%20eq%20%27MATH%27%20and%20education_levels.grades.code%20eq%20%275%27%20and%20document.publication.authorities.descr%20eq%20%27Kentucky%20DOE%27%20and%20utilizations.type%20eq%20%27alignable%27)` Let's decode it to make it readable: Copy `(disciplines.subjects.code eq 'MATH' and education_levels.grades.code eq '5' and document.publication.authorities.descr eq 'Kentucky DOE' and utilizations.type eq 'alignable')` That makes it a little more readable and clarifies the intent. The specifics of the field names aren't critical here. See the endpoint specific documentation for an explanation of each field. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#constructing-the-filter-statement) Constructing the Filter Statement ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- At an atomic level, the most common filter statement appears like ` ''` but some functions are also supported (e.g. `isempty()`). A `` would be any attribute of the object being filtered. Examples of a property for a Standard would be `level` or `status`. Alternatively, a property can be the attribute of a complex property. E.g. for a Standard, `` could also be `number.raw` or `disciplines.subjects.code`. A `` could be any value appropriate for the property in question. Values are delimited with single quotes. Together, various operators, properties and values combine to build a logical statements. The following operators are supported by AB Connect in order of decreasing precedence by group. Group Operation Description Grouping `( )` Precedence grouping Primary `func()` Function call. E.g. `isempty(concepts)` or `query('triangle pythagorean theorem')` - see below for details) Unary `not` Logical negation. E.g. `not propertyX in ('a', 'b, 'c')` Comparator `eq` Equals. E.g. `propertyX eq 'apple'` `ne` Not equals. E.g. `propertyX ne 'fruit'` `gt` Greater than. E.g. `propertyX gt 5` `ge` Greater than or equal to. E.g. `propertyX ge 5` `lt` Less than. E.g. `propertyX lt 5` `le` Less than or equal to. E.g. `propertyX le 5` `in` The value of the specified property is in the supplied list of values. E.g. `propertyX in ('value1', 'value2', 'value3')` Conditional `and` Combine two conditions and return true if both are true, otherwise false. E.g. `propertyX eq 5 and propertyY ne 'A'` `or` Combine two conditions and return true if either are true, otherwise false. E.g. `propertyX eq 5 or propertyY ne 'A'` ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#notes) Notes: * Inequality operators can be used with date, number and text attributes but the results vary by attribute type. Date attributes filter chronologically. Number attributes filter numerically. Text attributes filter alphabetically. * Custom attributes can be defined as text or numbers. If you aren't sure of the types for your custom attributes, contact [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#046566777174746b7670446d6a7770767167707176612a676b693b7771666e616770394546213634476b6a6a61677021363455716177706d6b6a2136346b76213634476b6969616a7021363421363c72302a3521363445544d21363d) for guidance. * It is possible to create custom attributes with the same name and different data types in different asset types (or when searching across multiple owners). The treatment of inequalities filtering across multiple data types is deterministic but relatively complex and isn't covered here. Where possible, we recommend you avoid this situation by ensuring your custom attributes don't have name conflicts across data types where possible. For details on the way AB Connect handles filtering across mixed types, contact [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#234241505653534c5157634a4d5057515640575651460d404c4e1c505641494640571e6261061113604c4d4d46405706111372564650574a4c4d0611134c51061113604c4e4e464d5706111306111b55170d1206111362736a06111a) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#building-complex-statements) Building Complex Statements ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- AB Connect also supports Boolean operations to combine atomic filter statements into complex statements. You can also use parentheses to group statements together. * `disciplines.subjects.code eq 'MATH' and education_levels.grades.code eq '5'` 5th grade math * `document.publication.authorities.descr eq 'Kentucky DOE' and not disciplines.subjects.code eq 'MATH'` Standards from Kentucky not related to math * `(disciplines.subjects.code eq 'MATH' and education_levels.grades.code eq '5') or (disciplines.subjects.code eq 'ELA' and education_levels.grades.code eq '7')` 5th grade math and 7th grade language arts Standards [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#text-filters) Text Filters ---------------------------------------------------------------------------------------------------------------------------------------------- One of the major improvements in AB Connect is the text filtering. The text filter is robust, will return results ordered by relevance and includes soft matches like partial matches. The format for text filtering is unique and utilizes a function style notation. There are two formats. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#filtering-a-specific-field) Filtering a Specific Field When filtering a particular field, include the field name as well as the value you are filtering for: `query(, )`. For example, to filter for Standards that contain the words "adding" and "fractions" in their statement, the filter would look like: Note that the text filter is a very soft filter and will often return more Standards than you would expect. The results will be ordered by relevance so the top responses are usually the most important. For example, in the query statement above, the system would return Standards that contain the words "adding fractions" first, followed by Standards that contain "adding" or "fractions". It will also return Standards that contain "add", "addition", etc. To be more specific, break phrases up into separate statements and be explicit about the Boolean operations to join the queries. The following will only return Standards if they contain both "fractions" and some form of derivation of the word "adding". ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#filtering-across-multiple-text-fields) Filtering Across Multiple Text Fields To retrieve Standards that have the keywords in any general text field, remove the field name from the query statement: `query()`. E.g. When using this approach, the system will search any fields it considers to be a text field. The specific fields vary by endpoint: * Standards: * `statement.descr` * `statement.combined_descr` * `statement.addendums.descr` * `extensions.descr` * `legends.descr` * Text properties on related entities as described in [Filtering Resources by Properties on Related Resources](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-resources-by-properties-on-related-resources) * Assets: * `title` * Any custom attributes * Text properties on related entities as described in [Filtering Resources by Properties on Related Resources](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-resources-by-properties-on-related-resources) * Topics: * `descr` * `section.descr` * Concepts: * `descr` * `context` [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#filtering-by-number-in-standards) Filtering by Number in Standards -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- In Standards documents, numbers are often separated, delimited or decorated with symbols (e.g. "24.B (i)"). Trying to ensure users are typing the numbers EXACTLY as they are entered in the Standards document is difficult. For this reason, AB Connect supports a soft match on the Standards' `number.raw`, `number.enhanced`, `number.prefix_enhanced`, `number.alternate` and `number.root_enhanced` fields when the query function is used. It treats any separator between alphanumeric values as a break between numbers and looks for Standards that match numbers returning results by how closely they match the results. In the example listed earlier, it will return Standards that have numbers that contain 24, B AND i first without regards to the separators used in the filter. It will follow that with Standards that contain two of the three, then Standards that contain any one of the numbers. Filtering for "24.B.i" will return the same results in the same order as filtering for "24-b-i" and "24.B (i)". [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#escaping-single-quotes) Escaping Single Quotes ------------------------------------------------------------------------------------------------------------------------------------------------------------------ In ODATA, literal strings are quoted using single quotes ('). To include a single quote in a string literal in the filter, use a backslash to escape it ('). For example, to search for the word "don't" in Standards, you would use the following filter: [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#checking-for-empty-properties) Checking for Empty Properties -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Sometimes it is handy to search for properties that are empty. What "empty" means depends on the property type so AB Connect has an `isempty` function that will match true on objects with no properties, arrays with no elements and scalar properties with null values. For example, the following filter will return all assets that are missing a subject. [PreviousRequesting Additional Properties in the Responsechevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/requesting-additional-properties) [NextSortingchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/sorting) Last updated 6 months ago Was this helpful? * [Constructing the Filter Statement](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#constructing-the-filter-statement) * [Notes:](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#notes) * [Building Complex Statements](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#building-complex-statements) * [Text Filters](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#text-filters) * [Filtering a Specific Field](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#filtering-a-specific-field) * [Filtering Across Multiple Text Fields](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#filtering-across-multiple-text-fields) * [Filtering by Number in Standards](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#filtering-by-number-in-standards) * [Escaping Single Quotes](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#escaping-single-quotes) * [Checking for Empty Properties](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters#checking-for-empty-properties) Was this helpful? sun-brightdesktopmoon Copy `filter[standards]=(query(statement.descr, 'adding fractions'))` Copy `filter[standards]=(query(statement.descr, 'fractions') and query(statement.descr, 'adding'))` Copy `filter[standards]=(query('adding fractions'))` Copy `filter[standards]=(query('don\'t'))` Copy `filter[assets]=isempty(disciplines.subjects)` sun-brightdesktopmoon --- # Authentication | Instructure Developer Documentation Portal In order to use the interactive [Reference section](https://developerdocs.instructure.com/services/ab-connect/reference/standards) , you will need to properly authenticate. If you do not have credentials, you can [request a sandbox accountarrow-up-right](https://community.canvaslms.com/plugins/custom/instructure/instructure/custom.ab-form) . Alternatively, you can inquire about purchasing a license, or request access for your company's account, via [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#bfdeddcccacfcfd0cdcbffd6d1cccbcdcadccbcacdda91dcd0d280cccaddd5dadccb82fefd9a8d8ffcd0d1d1dadccb9a8d8feecadacccbd6d0d19a8d8fd0cd9a8d8ffcd0d2d2dad1cb9a8d8f9a8d87c98b918e9a8d8ffeeff69a8d86) . Once you have your partner ID and key, you can create signatures and start to make calls to the production version of AB Connect. From a high level, the signature is an HMAC SHA-256 hash of a message constructed in a specific format. Use the partner key that is given to you by AB Support for the hash key. The message has one required field (expires - expressed in seconds since epoch) and three optional values: user, method and resource. The delimiter between the fields is a bare newline character (no carriage return) typically denoted as "\\n". The generalized form of the message is: `[\nuser][\nmethod][\nresource]` Here are some example messages and their interpretation: * `1508419888` - Access expires on October 19th 2017 at 1:31:28 PM ET. Note that expirations are expressed in Eastern time in the US. * `1508419888\nbmarley` - Same expiration time but the signature is only valid for Bob Marley's account. Note that if you supply a user, the user.id field must include the same value in the URL parameters. * `1508419888\n\nGET` - This signature can only be used for GET HTTP requests. Notice that the method is uppercase. This is a good approach when using AB Connect from public (or customer) facing web clients. It ensures that a hacker can't manipulate your Assets. * `1508419888\n\nGET\nstandards` - This signature can only be used for GET requests to standards. Notice that the resource is lowercase. If you have a web client that allows users to browse standards but you want to keep your Asset metadata profiles private, this will limit the scope accordingly. NOTES: * Each field can have only one value, so you can't mix methods or support multiple endpoints. E.g. if you want to allow read access to both Standards and Topics, you'll need to create two signatures and use the appropriate signature for each call. * While the expires (`auth.expires`), signature (`auth.signature`) and optionally the user (`user.id`) are included in the URL parameters, the method and resource values are inferred from the actual call being made so there is no need to pass those as URL parameters. * If you specify a resource, you must specify a method. Allowing "all methods" on one endpoint is not currently supported. So, for example, your message can not look like `1508419888\n\n\nassets`. Once you have calculated the signature, include the authentication parameters in the URL of your call to AB Connect. The general form of the parameters is: `&partner.id=&auth.signature=&auth.expires=` or if you are including a user ID: `&partner.id=&auth.signature=&auth.expires=&user.id=` So if your partner ID is `test_account` and your key is `ajk84Hjk93h59skaAJ8732` and you want to generate a read-only signature that expires on Wed Dec 06 2017 09:20:29 GMT-0500 (Eastern Standard Time)... * Your message would be: `1512570029\n\nGET` * Your signature would be a base64 encoding of the HMAC SHA-256 hash of the message: `Sdcfa9xgRAUzQnlLik5nKj1ntqdB85jFYyFCkNxwD/M=` * URL encoding each parameter value and assembling the parameters together, the authentication portion of the URL would be: `&partner.id=test_account&auth.signature=Sdcfa9xgRAUzQnlLik5nKj1ntqdB85jFYyFCkNxwD%2FM%3D&auth.expires=1512570029` You can use the following code examples as a starting point for constructing an authentication signature for use when calling AB Connect. Note that these examples do not necessarily follow coding best-practices - e.g. they do not have proper error handling in place. They are intended to be simple examples to show the concepts necessary to perform API authentication. Also note that these examples don't include any method or resource limiters in the signature. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#best-practices-for-web-clients) Best Practices for Web Clients ------------------------------------------------------------------------------------------------------------------------------------------------------------------- Due to the nature of web clients, anything available to the client application can be accessed by the user. The user can view the source and use Inspect/Developer mode to access variable values, etc. For this reason, you need to be particularly careful with security measures. If you are accessing AB Connect directly from a web client, consider the following when creating your signatures: * Keep your partner key secret. Don't send it to the web client for any reason. If someone malicious gets a hold of your partner key, they can create any signature they want at any time they want and do damage to your Asset profiles. If you suspect your partner key has been compromised, contact AB Support and ask to have a new partner key issued. * Keeping your partner key secure means you need to generate the signature on the server side and embed the signature in the page as it is served to the client. Alternatively, you can create a service that generates signatures on request for your web clients. However, if you do that, you'll need to layer your own security model on top of that to ensure the web client making the request has permissions to access the AB Connect signature. * Make the life of the signature reasonably short. What is reasonable for your situation is up to you. Perhaps limit read capabilities to an hour and update (POST, PATCH, DELETE) to a few minutes. One thing to consider what is the user experience with the signature expires. Does the page force a re-load to gain a new token? Does it make an authenticated call to your server via AJAX to renew the signature? Does the user need to re-authenticate or do you trust a session cookie? * Limit the method to the minimum required capabilities. Most web clients will only need read access (e.g. if you are offering the user a Standards or Asset browser). If you need to change permissions, consider creating a separate, short-lived signature for those situations. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#c) C# ---------------------------------------------------------------------------------------------------------- See also the C# example project in the authentication folder of our [github repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#perl) Perl --------------------------------------------------------------------------------------------------------------- See also the Perl example project in the authentication folder of our [github repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#php) PHP ------------------------------------------------------------------------------------------------------------- See also the PHP example project in the authentication folder of our [github repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#python2-2.5-or-higher) Python2 (2.5 or Higher) --------------------------------------------------------------------------------------------------------------------------------------------------- See also the Python2 example project in the authentication folder of our [github repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#python-3) Python 3 ----------------------------------------------------------------------------------------------------------------------- See also the Python3 example project in the authentication folder of our [github repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#vb.net) VB.Net ------------------------------------------------------------------------------------------------------------------- See also the VB example project in the authentication folder of our [github repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#java) Java --------------------------------------------------------------------------------------------------------------- See also the Java example project in the authentication folder of our [github repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#node.js) node.js --------------------------------------------------------------------------------------------------------------------- See also the NodeJS example project in the authentication folder of our [github repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [PreviousIntroductionchevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction) [NextAddressing Object Propertieschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/addressing-object-properties) Last updated 6 months ago Was this helpful? * [Best Practices for Web Clients](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#best-practices-for-web-clients) * [C#](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#c) * [Perl](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#perl) * [PHP](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#php) * [Python2 (2.5 or Higher)](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#python2-2.5-or-higher) * [Python 3](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#python-3) * [VB.Net](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#vb.net) * [Java](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#java) * [node.js](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication#node.js) Was this helpful? sun-brightdesktopmoon Copy using System; using System.IO; using System.Net; using System.Security.Cryptography; using System.Text; class Program { static void Main(string[] args) { var partnerID = "public"; // ID provided by AB. var partnerKey = "2jfaWErgt2+o48gsk302kd"; // Key provided by AB. var userID = "Bob"; // Optional. Partner defined string. Provides access only for queries with this `user.id`. // Seconds since epoch. Example is 24 hours. var expires = (long)Math.Floor( (DateTime.UtcNow.AddHours(24) - new DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds ); var message = string.Format("{0}\n{1}", expires, userID); var keyBytes = Encoding.UTF8.GetBytes(partnerKey); var messageBytes = Encoding.UTF8.GetBytes(message); string signature; using (var hmac = new HMACSHA256(keyBytes)) { signature = Convert.ToBase64String(hmac.ComputeHash(messageBytes)); } var requestBuilder = new UriBuilder("https://api.abconnect.instructure.com/rest/v4.1/standards"); // user.id is optional requestBuilder.Query = string.Format( "partner.id={0}&auth.signature={1}&auth.expires={2}&user.id={3}", WebUtility.UrlEncode(partnerID), WebUtility.UrlEncode(signature), expires, WebUtility.UrlEncode(userID) ); var request = WebRequest.Create(requestBuilder.Uri); Console.WriteLine(new StreamReader(request.GetResponse().GetResponseStream()).ReadToEnd()); } } Copy #!/usr/bin/perl use strict; use Digest::SHA qw(hmac_sha256_base64); use LWP::UserAgent; my $partner_id = 'public'; # ID provided by AB. my $partner_key = '2jfaWErgt2+o48gsk302kd'; # Key provided by AB. my $expires = time() + 86400; # Seconds since epoch. Example is 24 hours. my $user_id = 'Bob'; # Optional. Partner defined string. Provides access only for queries with this `user.id`. my $message = "$expires\n$user_id"; my $signature = hmac_sha256_base64($message, $partner_key); my $uri = URI->new(); $uri->scheme('https'); $uri->host('api.abconnect.instructure.com'); $uri->port(443); $uri->path('rest/v4.1/standards'); # user.id is optional $uri->query_form( 'partner.id' => $partner_id, 'auth.signature' => $signature, 'auth.expires' => $expires, 'user.id' => $user_id ); my $req = HTTP::Request->new(GET => $uri); my $ua = LWP::UserAgent->new(); my $response = $ua->request($req); print 'response code = '.$response->{_rc}."\n"; if ($response->{_rc} && ($response->{_rc} == 200)) { if ($response->{_content}) { print $response->{_content}; } } Copy Generated Request URL'; print '

' . $url . '


'; $response = file_get_contents($url); print '

JSON Response

'; print '

' . $response . '

'; ?> Copy import time import hashlib import hmac import base64 import urllib partner_id = 'public' # ID provided by AB. partner_key = '2jfaWErgt2+o48gsk302kd' # Key provided by AB. expires = str(int(time.time() + 86400)) # Seconds since epoch. Example expires in 24 hours. user_id = 'Bob' # Optional. Partner defined string. Provides access only for queries with this `user.id`. message = expires + "\n" + user_id digest = hmac.new(partner_key.encode(), message.encode(), digestmod=hashlib.sha256).digest() signature = base64.b64encode(digest).decode() encoded_sig = urllib.quote_plus(signature) # user.id is optional parms = 'partner.id=' + partner_id + \ '&auth.signature=' + encoded_sig + \ '&auth.expires=' + expires + \ '&user.id=' + user_id result = urllib.urlopen('https://api.abconnect.instructure.com/rest/v4.1/standards?' + parms).read() print result Copy import time import hashlib import hmac import base64 import urllib.request partner_id = 'public' # ID provided by AB. partner_key = '2jfaWErgt2+o48gsk302kd' # Key provided by AB. expires = str(int(time.time() + 86400)) # Seconds since epoch. Example expires in 24 hours. user_id = 'Bob' # Optional. Partner defined string. Provides access only for queries with this `user.id`. message = expires + "\n" + user_id digest = hmac.new(partner_key.encode(), message.encode(), digestmod=hashlib.sha256).digest() signature = base64.b64encode(digest).decode() encoded_sig = urllib.parse.quote_plus(signature) # user.id is optional parms = 'partner.id=' + partner_id + \ '&auth.signature=' + encoded_sig + \ '&auth.expires=' + expires + \ '&user.id=' + user_id result = urllib.request.urlopen('https://api.abconnect.instructure.com/rest/v4.1/standards?' + parms).read() print (result) Copy Imports System.Security.Cryptography Imports System.Text Imports System.Net Imports System.IO Module AuthModule Sub Main() Dim PartnerId As String = "public" ' ID provided by AB. Dim PartnerKey As String = "2jfaWErgt2+o48gsk302kd" ' Key provided by AB. Dim UserId As String = "Bob" ' Optional. Partner defined string. Provides access only for queries with this `user.id`. ' Seconds since epoch. Example is 24 hours. Dim Expires = Math.Floor( (DateTime.UtcNow.AddHours(24) - New DateTime(1970, 1, 1, 0, 0, 0)).TotalSeconds ) Dim Message = Expires & vbLf & UserId Dim KeyBytes() As Byte = Encoding.UTF8.GetBytes(PartnerKey) Dim MessageBytes() As Byte = Encoding.UTF8.GetBytes(Message) Dim Signature As String Using myHMACSHA256 As New HMACSHA256(KeyBytes) Signature = Convert.ToBase64String(myHMACSHA256.ComputeHash(MessageBytes)) End Using Dim RequestBuilder As New UriBuilder("https://api.abconnect.instructure.com/rest/v4.1/standards") ' user.id is optional RequestBuilder.Query = String.Format( "partner.id={0}&auth.signature={1}&auth.expires={2}&user.id={3}", WebUtility.UrlEncode(PartnerId), WebUtility.UrlEncode(Signature), Expires, WebUtility.UrlEncode(UserId) ) Dim Request = WebRequest.Create(RequestBuilder.Uri) Dim Response As WebResponse = Request.GetResponse() Dim ReceiveStream As Stream = Response.GetResponseStream() Dim Encode As Encoding = Encoding.GetEncoding("utf-8") Dim ReadStream As New StreamReader(ReceiveStream, Encode) Dim ReadBuffer(256) As [Char] Dim Count As Integer = ReadStream.Read(ReadBuffer, 0, 256) While Count > 0 Dim StringData As New [String](ReadBuffer, 0, Count) Console.Write(StringData) Count = ReadStream.Read(ReadBuffer, 0, 256) End While Console.WriteLine("") End Sub End Module Copy package AuthExample; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; import java.net.URL; import java.net.URLEncoder; import java.util.Base64; import java.util.Calendar; import java.util.TimeZone; import javax.crypto.Mac; import javax.crypto.spec.SecretKeySpec; import javax.net.ssl.HttpsURLConnection; public class program { public static void main(String[] args) { String partnerID = "public"; // ID provided by AB. String partnerKey = "2jfaWErgt2+o48gsk302kd"; // Key provided by AB. String userID = "Bob"; // Optional. Partner defined string. Provides access only for queries with this `user.id`. // Seconds since epoch. Example is 24 hours. Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("GMT")); long expires = (long)Math.floor(cal.getTimeInMillis() / 1000) + 60*60*24; String message = String.format("%d\n%s", expires, userID); // format message for signature HttpsURLConnection connection = null; try { // // generate signature and base64 encode it // Mac sha256_HMAC = Mac.getInstance("HmacSHA256"); SecretKeySpec secret_key = new SecretKeySpec(partnerKey.getBytes("UTF-8"), "HmacSHA256"); sha256_HMAC.init(secret_key); byte[] hmacBytes = sha256_HMAC.doFinal(message.getBytes("UTF8")); String signature = Base64.getEncoder().encodeToString(hmacBytes); // // pack the signature and other auth parameters in URL // String targetURL = String.format( "https://api.abconnect.instructure.com/rest/v4.1/standards?partner.id=%s&auth.signature=%s&auth.expires=%d&user.id=%s", URLEncoder.encode(partnerID, "UTF-8"), URLEncoder.encode(signature, "UTF-8"), expires, URLEncoder.encode(userID, "UTF-8") ); // //Create connection // URL url = new URL(targetURL); connection = (HttpsURLConnection) url.openConnection(); // // Get Response // InputStream is = connection.getInputStream(); BufferedReader rd = new BufferedReader(new InputStreamReader(is)); String line; while ((line = rd.readLine()) != null) { System.out.println(line); } rd.close(); } catch (Exception e) { e.printStackTrace(); System.exit(-1); } finally { if (connection != null) { connection.disconnect(); } } } } Copy #!/usr/bin/env node var partner_id = 'public' // ID provided by AB. var partner_key = '2jfaWErgt2+o48gsk302kd' // Key provided by AB. var expires = Math.floor(Date.now() / 1000) + 86400; // Seconds since epoch. Example expires in 24 hours. var user_id = 'Bob' // Optional. Partner defined string. Provides access only for queries with this `user.id`. // // Build the signature // var message = '' + expires; if (user_id) { message += "\n" + user_id; } var crypto = require('crypto'); var signature = crypto.createHmac('SHA256', partner_key).update(message).digest('base64') // // package the signature, expiration, etc. into a URL encoded query string fragment // var queryString = '&partner.id=' + encodeURIComponent(partner_id) + '&auth.signature=' + encodeURIComponent(signature) + '&auth.expires=' + encodeURIComponent(expires); if (user_id) { queryString += '&user.id=' + encodeURIComponent(user_id); } console.log("Authentication parameters: " + queryString); var requester = require('sync-request'); var response; var body; try { response = requester('GET', 'https://api.abconnect.instructure.com/rest/v4.1/standards?' + queryString); body = response.getBody('utf-8'); } catch (e) { console.log('' + e); } if (response) console.log("Response code: " + response.statusCode); if (body) console.log("Response body:\n" + body); sun-brightdesktopmoon --- # Error Responses | Instructure Developer Documentation Portal Errors are returned as HTTP codes in the 4XX range. All errors are accompanied by a JSON response that provides the details of the error so corrective action can be taken. Copy { "errors": [\ {\ "source": {\ "pointer": "a JSON Pointer RFC6901 to the associated entity in the request document E.g. \"/data\" for a primary data object, or \"/data/attributes/title\" for a specific attribute.",\ "parameter": "a string indicating which URI query parameter caused the error."\ },\ "detail": "",\ "status": "",\ "title": ""\ },\ ...\ ] } See the documentation for the individual endpoint for the specifics of the errors that apply to that endpoint. [PreviousWorking with Related Objectchevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects) [NextCharacter Set Supportchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/character-set) Last updated 6 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Licensing Considerations | Instructure Developer Documentation Portal Access to the Academic Benchmarks data and services is licensed by breadth of coverage (authority and subject area) as well as depth of metadata and functionality. If you attempt to access a feature or piece of data and receive a 401 error, check your credentials and the details of the error message body. It may be that your current license does not support the call you are making. In some instances, you'll get a valid response, but the data related to one of these features will simply not be included in the response. E.g. if you are licensed for Standards, but not Topics, when you retrieve a Standard the `topics` relationship will not exist. To clarify or discuss your licensing, contact [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#d2b3b0a1a7a2a2bda0a692bbbca1a6a0a7b1a6a7a0b7fcb1bdbfeda1a7b0b8b7b1a6ef9390f7e0e291bdbcbcb7b1a6f7e0e283a7b7a1a6bbbdbcf7e0e2bda0f7e0e291bdbfbfb7bca6f7e0e2f7e0eaa4e6fce3f7e0e293829bf7e0eb) at Instructure or your sales representative. [PreviousCharacter Set Supportchevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/character-set) [NextHow To Articles, Recommendations and Suggestionschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to) Last updated 6 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Character Set Support | Instructure Developer Documentation Portal ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/character-set#licensing-considerations) Licensing Considerations Access to the Academic Benchmarks data and services is licensed by breadth of coverage (authority and subject area) as well as depth of metadata and functionality. If you attempt to access a feature or piece of data and receive a 401 error, check your credentials and the details of the error message body. It may be that your current license does not support the call you are making. In some instances, you'll get a valid response, but the data related to one of these features will simply not be included in the response. E.g. if you are licensed for Standards, but not Topics, when you retrieve a Standard the `topics` relationship will not exist. To clarify or discuss your licensing, contact [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#b9d8dbcaccc9c9d6cbcdf9d0d7cacdcbccdacdcccbdc97dad6d486caccdbd3dcdacd84f8fb9c8b89fad6d7d7dcdacd9c8b89e8ccdccacdd0d6d79c8b89d6cb9c8b89fad6d4d4dcd7cd9c8b899c8b81cf8d97889c8b89f8e9f09c8b80) at Instructure or your sales representative. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/character-set#character-set-support) Character Set Support UTF-8 is the recommended character set for transmitting data using AB Connect - AB Connect stores data in UTF-8 and it is the most common character set on the web. However, as adoption for Unicode and UTF-8 has evolved over the life of Academic Benchmarks, we've built support for a few other character sets to support legacy situations. AB Connect supports RESPONSES in UTF-8, latin1, ISO-8859-1 or Windows-1252 character sets. **Note that at this time AB Connect does not support REQUESTS in any character set other than UTF-8.** To request a specific character set response, include the `Accept-Charset` HTTP header in your request and supply one of the supported values: * utf-8 * iso-8859-1 * latin1 * windows-1252 In the case that utf-8 is desired, there is no need to actually include the `Accept-Charset` header as utf-8 is the default. The AB Connect response includes a `Content-Type` header indicating the data type (application/json) as well as the character set of the response. E.g. Copy `Content-Type: application/json; charset=utf-8` [PreviousError Responseschevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/error-responses) [NextLicensing Considerationschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/licensing) Last updated 6 months ago Was this helpful? * [Licensing Considerations](https://developerdocs.instructure.com/services/ab-connect/introduction/character-set#licensing-considerations) * [Character Set Support](https://developerdocs.instructure.com/services/ab-connect/introduction/character-set#character-set-support) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Call Throttling | Instructure Developer Documentation Portal As adoption of AB Connect increases, We need to ensure all partners have an optimal integration experience. In order to achieve this goal, API controls limit call frequency and payload sizes. Payload sizes have been constrained with a cap on the `limit` for a page (see [Paging Data](https://developerdocs.instructure.com/services/ab-connect/introduction/paging) for details on payload constraints). The remainder of this section describes call throttling also known as rate limiting. To ensure one client can not adversely affect another client's system performance rate limiting has been implemented on a per account basis. The rate limiting uses a [token bucket model backed by Amazon's API Gatewayarrow-up-right](https://aws.amazon.com/blogs/aws/new-usage-plans-for-amazon-api-gateway/) . In summary, each account has a bucket. The system adds 5 tokens to an account's bucket every second and the bucket can hold up to 25 tokens. Each API call an account makes removes one token from the bucket. If you have not made any calls for a period of time and your bucket is full, you can make a burst of up to 25 calls. However, once your bucket is empty, you'll need to wait before making another call or you'll receive an HTTP 429 response. Some accounts may have different limits and it is possible that these thresholds change over time, so it is recommended that implementation of a client-side throttling solution that is either self-adjusting or is easy to adjust manually. Depending on the client side architecture and implementation language, there may be client side throttling frameworks available that handle the complexity for your system. If you have a particular need for a larger bucket size or bucket fill rate, contact [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#b4d5d6c7c1c4c4dbc6c0f4dddac7c0c6c1d7c0c1c6d19ad7dbd98bc7c1d6ded1d7c089f5f6918684f7dbdadad1d7c0918684e0dbdfd1da918684f6c1d7dfd1c0) for additional plans. [PreviousPaging Datachevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/paging) [NextWorking with Related Objectchevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects) Last updated 6 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Reference | Instructure Developer Documentation Portal [Standardschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/standards) [Standard Collectionschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections) [Eventschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/events) [Topicschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/topics) [Conceptschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/concepts) [Assetschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/assets) [Asset Definitionschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions) [Asset Collectionschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections) [Managing and Predicting Relationshipschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/relationships) [Providerschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/providers) [PreviousUsing AB Connect's Embeddable Widgetschevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets) [NextStandardschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/standards) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Examples | Instructure Developer Documentation Portal One of the challenges with adopting a new integration is coming up to speed on the basics of interacting with the partner system. To lower the slope of the learning curve, Academic Benchmarks has documented examples and developed apps. We are sharing the source to give developer's working examples of how to integrate with AB Connect. Below are brief descriptions of efficient means for implementing solutions and useful examples apps with links to the [Instructure Github repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) where they can be downloaded. All samples and apps are offered as-is with no warranty. Although they are often usable as is, the main purpose is to illustrate how to interact with the AB Connect API. If any particular app doesn't do what you need, feel free to download a copy and modify it to meet your needs. This repository is not meant to host solutions for non-technical users nor is it a location to submit requests for changes or additions to the API or the samples listed here. Be sure to read the ReadMe for each app for details. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#standards-relationships-browser) Standards Relationships Browser --------------------------------------------------------------------------------------------------------------------------------------------------------------- Among other things, AB Connect exposes the relationships between Standards. This app is a web page client that allows the user to browse Standards in their license, view the metadata profile of the Standard and find related Standards in other documents. The user is allowed to select from a set of relationships types when navigating across relationships. The types of relationships that are available is based on the licensing of the account used. If the account is not licensed for relationships, the app falls back to a simple Standards browser. This app is also an example of an integration with the embeddable Standards Browser widget (see [Using AB Connect's Embeddable Widgets](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets) ). You can find the source in the relationships-browser folder of our [public repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . You can find a [working version of the app herearrow-up-right](https://widgets.academicbenchmarks.com/ABConnect/v4/relationships-browser/RelationshipBrowser.html) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#simple-standards-browser) Simple Standards Browser ------------------------------------------------------------------------------------------------------------------------------------------------- This is a very simple example app that does little more than illustrate a minimal integration with the embeddable Standards Browser widget. This app is a web page client that allows the user to browse Standards in their license and view the metadata profile of the Standard. See [Using AB Connect's Embeddable Widgets](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets) below for more information. You can find the source in the standards-browser-min folder of our [public repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . You can find a [working version of the app herearrow-up-right](https://widgets.academicbenchmarks.com/ABConnect/v4/standards-browser-min/StandardsBrowser.html) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#browse-standards-by-topic) Browse Standards by Topic --------------------------------------------------------------------------------------------------------------------------------------------------- AB Connect includes a few taxonomies that can aid in the navigation of Standards and searchability of Assets. The Topics Browser is a basic example of how one could use topics to locate relevant Standards. You can find the source in the topicsBrowser folder of our [public repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . You can find a [working version of the app herearrow-up-right](https://widgets.academicbenchmarks.com/ABConnect/v4/topicsBrowser/topicsBrowser.html) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#show-alignments-on-your-content-page) Show Alignments On Your Content Page ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- This example app is designed to give you a quick leg up on showing alignments on your web site. This small sample allows the user to search for content by `client_id` (usually your internal ID for the content), AB Asset GUID or general text search. It then shows the alignments for the first Asset it finds in AB Connect that matches the search criteria. The user can narrow the scope of the authorities to show only alignments in one state (for example). You can find the source in the display-alignments folder of our [public repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#content-browser) Content Browser ------------------------------------------------------------------------------------------------------------------------------- This is a web page client that allows the user to use faceting to search their Asset repository on AB Connect. Note that the app requires that the account already has a set of Assets and at least a minimal configuration that should take a couple of minutes to get it up and running in a demo mode. You can find the source in the asset-browser folder of our [public repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#standards-relationships-report) Standards Relationships Report ------------------------------------------------------------------------------------------------------------------------------------------------------------- This example is similar to the browser app but is a node.js based and generates a report with a mapping of a set of Standards from one document to another. The input and output are done through Excel files. There is a template supplied as part of the repository. You'll need to use another means for gathering the input which is a set of Standard GUIDs. One quick way to build the list is to use something like Postman to gather the Standards of interest. You can find the source in the relationships-report folder of our [public repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#standards-browser-widget-source) Standards Browser Widget Source --------------------------------------------------------------------------------------------------------------------------------------------------------------- The source for the Standards Browser Widget documented in [Using AB Connect's Embeddable Widgets](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets) is accessable as well. This is a more complex example that spends more effort on the quality of the look and user experience. Where the other examples are good for accelerating API ramp up, the widget source code is best suited to situations where the widget itself is close to meeting your organization's needs but you need to add or modify some features. In that case, start with the existing widget and extend it to meet your needs. You can download the latest [source herearrow-up-right](https://widgets.academicbenchmarks.com/ABConnect/v4/dist/widgets-src.zip) . Here are basic instructions for building the supplied source for distribution. All commands must be executed in the directory where you've unzipped the source. 1. Download the [source from herearrow-up-right](https://widgets.academicbenchmarks.com/ABConnect/v4/dist/widgets-src.zip) . 2. Unzip the file into a folder on your system. 3. Run the following commands in the folder where you placed the unzipped source. 4. `npm install` 5. `npm run build` 6. Use dist/widgets.js and dist/widgets.js.map To obtain a production widgets bundle, follow these steps: 1. For a bash shell: 1. `NODE_ENV=production npm run build` 2. For Windows cmd.exe: 1. `set NODE_ENV=production` 2. `npm run build` 3. Use dist/widgets.js [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#postman-collections) Postman Collections --------------------------------------------------------------------------------------------------------------------------------------- The illustrative-postman-collections folder in our [public repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) hosts a set of Postman collections that can help get you started with API calls for various scenarios. The ReadMe file gives the details of the available collections. [PreviousHow To Articles, Recommendations and Suggestionschevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to) [NextUsing AB Connect's Embeddable Widgetschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets) Last updated 6 months ago Was this helpful? * [Standards Relationships Browser](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#standards-relationships-browser) * [Simple Standards Browser](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#simple-standards-browser) * [Browse Standards by Topic](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#browse-standards-by-topic) * [Show Alignments On Your Content Page](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#show-alignments-on-your-content-page) * [Content Browser](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#content-browser) * [Standards Relationships Report](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#standards-relationships-report) * [Standards Browser Widget Source](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#standards-browser-widget-source) * [Postman Collections](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#postman-collections) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # OAuth2 | Instructure Developer Documentation Portal [OAuth2 Overviewchevron-right](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth) [OAuth2 Endpointschevron-right](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints) [Developer Keyschevron-right](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys) [PreviousMasqueradingchevron-left](https://developerdocs.instructure.com/services/canvas/basics/file.masquerading) [NextOAuth2 Overviewchevron-right](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Basics | Instructure Developer Documentation Portal [GraphQLchevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.graphql) [API Change Logchevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.changelog) [SIS IDschevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.object_ids) [Paginationchevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.pagination) [Throttlingchevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.throttling) [Compound Documentschevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.compound_documents) [File Uploadschevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads) [API Endpoint Attributeschevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.endpoint_attributes) [Masqueradingchevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.masquerading) [PreviousCanvas LMSchevron-left](https://developerdocs.instructure.com/services/canvas) [NextGraphQLchevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.graphql) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # API Change Log | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.changelog#api-change-log) API Change Log ------------------------------------------------------------------------------------------------------------------------- For API resources, such as the API Change Log for additions, changes, deprecations, and removals, view the [Canvas API pagearrow-up-right](https://community.canvaslms.com/t5/Change-Log/tkb-p/changelog) in the Canvas Community. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousGraphQLchevron-left](https://developerdocs.instructure.com/services/canvas/basics/file.graphql) [NextSIS IDschevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.object_ids) Last updated 9 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Pagination | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.pagination#pagination) Pagination ------------------------------------------------------------------------------------------------------------------ Requests that return multiple items will be paginated to 10 items by default. You can set a custom per-page amount with the `?per_page` parameter. There is an unspecified limit to how big you can set `per_page` to, so be sure to always check for the `Link` header. To retrieve additional pages, the returned `Link` headers should be used. These links should be treated as opaque. They will be absolute urls that include all parameters necessary to retrieve the desired current, next, previous, first, or last page. The one exception is that if an access\_token parameter is sent for authentication, it will not be included in the returned links, and must be re-appended. Pagination information is provided in the [Link headerarrow-up-right](http://www.w3.org/Protocols/9707-link-header.html) : Copy Link: /api/v1/courses/:id/discussion_topics.json?opaqueA>; rel="current", /api/v1/courses/:id/discussion_topics.json?opaqueB>; rel="next", /api/v1/courses/:id/discussion_topics.json?opaqueC>; rel="first", /api/v1/courses/:id/discussion_topics.json?opaqueD>; rel="last" The possible `rel` values are: * current - link to the current page of results. * next - link to the next page of results. * prev - link to the previous page of results. * first - link to the first page of results. * last - link to the last page of results. These will only be included if they are relevant. For example, the first page of results will not contain a rel="prev" link. rel="last" may also be excluded if the total count is too expensive to compute on each request. **NOTE**: Because HTTP header names are [case-insensitivearrow-up-right](https://datatracker.ietf.org/doc/html/rfc9110#section-5.1-3) , please be sure you are not parsing the `Link` header in a case-sensitive way. The capitalization of the header name is not guaranteed. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousSIS IDschevron-left](https://developerdocs.instructure.com/services/canvas/basics/file.object_ids) [NextThrottlingchevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.throttling) Last updated 9 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Throttling | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.throttling#throttling) Throttling ------------------------------------------------------------------------------------------------------------------ Canvas includes a built in dynamic throttling mechanism to prevent a single user from abusing the system and causing adverse effects for others. It works by having a rate limit, and a cost for every request. Each request subtracts from your quota, and the quota is automatically replenished over time. In the event that your API request is throttled, you will receive a `429 Forbidden (Rate Limit Exceeded)` response. Your application should be prepared for this error, and retry the request at a later time. To assist applications with planning, every request will return a `X-Request-Cost` header that is a floating point number of the amount that request deducted from your remaining quota. If throttling is applicable to this request, there will also be a `X-Rate-Limit-Remaining` header of your remaining quota. Since the cost of a request is roughly based on the amount of time it takes to process, and the quota (by default) replenishes at a rate faster than real-time, any API client that makes no more than one simultaneous request is unlikely to be throttled. Parallel requests are subject to an additional pre-flight penalty to prevent a large number of incoming requests being able to bring the system down before their cost is counted against their quota. As soon as each request finishes, the pre-flight penalty is credited back to the quota, and only the actual cost of the request is counted. For applications that go through the OAuth flow and obtain an access token for each user, each access token has its own quota, and the developer need not be concerned with requests from one user causing another user to be throttled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousPaginationchevron-left](https://developerdocs.instructure.com/services/canvas/basics/file.pagination) [NextCompound Documentschevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.compound_documents) Last updated 4 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Compound Documents | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.compound_documents#compound-documents) Compound Documents ------------------------------------------------------------------------------------------------------------------------------------------ Compound documents contain multiple collections to allow for side-loading of related objects. Side-loading is desirable when nested representation of related objects would result in potentially expensive repetition. For example, given a list of 50 comments by only 3 authors, a nested representation would include 50 author objects where a side-loaded representation would contain only 3 author objects. A compound document is a JSON object with two reserved properties ("meta" and "links"). The "meta" property is required and is described below; the "links" property is currently unused but reserved. All other properties of the compound document's root object should be interpreted as collections of model objects. A compound document will always contain at least one collection. The "meta" property is a JSON object with one recognized property ("primaryCollection"). If present, the "meta.primaryCollection" property will contain the property name of one of the collections in the compound document. The primary collection contains the data most directly associated with the request. Any pagination indicated through a Link header accompanying a compound document applies to the primary collection. Any remaining collections in a compound document are secondary collections and will contain objects related (perhaps indirectly, through other secondary objects) to those in the primary collection. Secondary collections should never be considered as ordered or complete. Example: Copy { "meta": {"primaryCollection": "comments"}, "comments": [...], "authors": [...] } * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousThrottlingchevron-left](https://developerdocs.instructure.com/services/canvas/basics/file.throttling) [NextFile Uploadschevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads) Last updated 9 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Working with Related Object | Instructure Developer Documentation Portal While the definition of a Standard or Topic can be helpful in adding value to your system, there is a lot of power in the relationships available in AB Connect. E.g. The Topics covered by a Standard are represented by a relationship between the Standard and one or more Topics. Assets are related to Standards when they are aligned. Standards are related to other Standards (like Peers). AB Connect exposes these relationships via the `data.relationships` property. This section explains how to access the power of these relationships. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#addressing-meta-properties-on-relationships) Addressing Meta Properties on Relationships ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Some relationships in AB Connect have properties. E.g. Relationships between Assets and Standards have a disposition, prediction score, dates, etc. These properties are represented in the JSON as meta properties on the relationship. AB Connect allows you to address the relationship meta properties for use in either [fields statements](https://developerdocs.instructure.com/services/ab-connect/introduction/requesting-additional-properties) or [filter statements](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) . When referencing these properties, include `meta.` as part of the property path. E.g. `fields[assets]=alignments.meta.date_created_utc` [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#paging-related-objects) Paging Related Objects ---------------------------------------------------------------------------------------------------------------------------------------------------- Resources can have many related objects - sometimes thousands. In order to maintain system performance, AB Connect limits the number of related objects that are returned when requesting a resource. Use paging on the relationship endpoint to retrieve more (or all) of the related objects. Some relationships have limited cardinality. E.g. a Standard can have zero or one "parent". Other relationships are not limited but commonly have a small set of related entities. E.g. a Standard typically has a handful of Concepts, however in some extreme situations a Standard may have 50 Concepts. To optimize transmissions, AB Connect will return up to the first 25 related objects but if there are more than 25 related objects, AB Connect returns the first 10 relationships with paging URLs. Note that neither the page size (`limit`) nor the `offset` can be changed at this point - but can be changed on the relationship endpoint. Here is an example of a response showing a Standard's related Peers and the paging URLs to retrieve more peer data. To get this data, you might make a call like: Copy `https://api.abconnect.instructure.com/rest/v4.1/standards?fields[standards]=peers,statement,number&filter[standards]=not isempty(peers) and utilizations.type eq alignable&include=peers` Copy ... { "id": "00003506-B001-11DA-93BA-9A7258581090", "type": "standards", "relationships": { "peers": { "data": [\ {\ "type": "standards",\ "id": "665CDF54-29E7-11D8-9805-987DA0705AD0"\ },\ {\ "id": "BA13F3EA-29EB-11D8-9212-963E918BB192",\ "type": "standards"\ },\ ...\ {\ "type": "standards",\ "id": "6573F63E-D88E-11D9-8407-9AE6FB2C8371"\ }\ ], "links": { "related": "https://api.abconnect.instructure.com/rest/v4.1/standards/00003506-B001-11DA-93BA-9A7258581090/peers", "next": "https://api.abconnect.instructure.com/rest/v4.1/standards/00003506-B001-11DA-93BA-9A7258581090/peers?offset=10", "last": "https://api.abconnect.instructure.com/rest/v4.1/standards/00003506-B001-11DA-93BA-9A7258581090/peers?offset=80" } } } }, ... To load the next page of Peers related to the Standard (00003506-B001-11DA-93BA-9A7258581090), follow the `next` URL: `https://api.abconnect.instructure.com/rest/v4.1/standards/00003506-B001-11DA-93BA-9A7258581090/peers?offset=10&fields[standards]=statement,number` ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#notes) Notes * The data available on the relationship endpoints is a conflation between the related object (attributes and relationships) and the relationship properties (meta). * Objects returned on the relationship endpoint do not support accessing _their_ relationships nor including the further related data. For example, when viewing an Asset, you can see the alignments for that Asset, include related aligned Standards and page through the alignments at the relationship endpoint (assets/GUID/alignments). However, when you are viewing the properties of the aligned Standards on the alignment endpoint (assets/GUID/alignments), you can not include peers to those alignments nor can you page the peer standards. If you need to dig deeper into the aligned standards, you must request the data via the Standards endpoint. * See [the sections on relationships](https://developerdocs.instructure.com/services/ab-connect/reference/relationships) for details on working with the relationship endpoints. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#including-related-resource-properties) Including Related Resource Properties ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- The JSON API standard supports an `include` argument in the query string. The value of the `include` argument is a comma separated list of relationships on the specified endpoint. If the `include` statement appears in the query string, the resources returned in the `relationships` section and named in the statement are included in the response. This helps the caller avoid a second set of calls to retrieve the object details. Note that it is important that you specify the **relationship** name in the `include` statement rather than the object type. For example, when retrieving Standards there are a number of relationships that are available: `parent`, `ancestors`, `children`, `derivatives`, `origins`, etc. Most of them are relationships to other Standards. If you asked the system to include "standards", it would not know which set you are actually requesting. You must explicitly request `children` (for example). The generic form of the statement is: For example: Will return the details of the Standards related to the requested Topic. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#notes-1) Notes: * If you include a relationship that does not appear in the request as a "relationship" by being included through the fields argument then the include block will be left out of the response. * E.g. `https://api.abconnect.instructure.com/rest/v4.1/standards/1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22?include=ancestors` will **NOT** return the `ancestors` resources because that relationship is not delivered. * E.g. `https://api.abconnect.instructure.com/rest/v4.1/standards/1F9D5A8A-7053-11DF-8EBF-BE719DFF4B22?fields[standards]=ancestors&include=ancestors` will have the `ancestors` listed in the relationships and their details in the `included` block [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-related-objects) Filtering Related Objects ---------------------------------------------------------------------------------------------------------------------------------------------------------- Sometimes it is convenient to filter the objects that are returned in the relationship. Meta properties on the relationship can always be used in filtering related objects. However, there are some scenarios where it is helpful to filter the related objects on key properties. E.g. one may only be interested in California Standards aligned to an Asset. To implement filtering related objects on all properties presents architectural challenges so to strike a balance and facilitate common use cases, AB Connect allows the caller to filter related object on specific properties on certain relationships. When filtering on related objects, use the _relationship_ name in the filter statement. E.g. Will return math Assets and the `alignments` relationship for each Asset will only include Texas Standards aligned after March 12th 2020. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-objects-related-to-assets) Filtering Objects Related to Assets This section describes properties that can be be used when filtering objects related to the Asset. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#aligned-standards) Aligned Standards When filtering aligned Standards, use the _relationship_ name in the filter statement. E.g. Supported properties include: * `ancestors.id` * `concepts.context` * `concepts.descr` * `disciplines.subjects.descr` * `disciplines.subjects.guid` * `document.descr` * `document.guid` * `document.publication.descr` * `document.publication.guid` * `document.publication.authorities.descr` * `document.publication.authorities.guid` * `document.publication.regions.descr` * `document.publication.regions.guid` * `education_levels.grades.descr` * `education_levels.grades.guid` * `number.raw` * `number.enhanced` * `number.prefix_enhanced` * `section.guid` * `section.descr` * `status` * `statement.descr` * `topics.descr` Notes: * `deleted_alignments` are filterable in a similar fashion as `alignments`. * You can use any of the "meta" properties on the relationship in the filtering - e.g. `meta.score`, `meta.tags`, etc. See the relationship definition for a complete list of meta properties. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#topics) Topics Only data associated with accepted and predicted Topics are filterable. Filtering on Topics properties will not return any rejected Topics. The only supported property is the Topic description. Note that the relationship and type of Topics is the same in this instance: #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#concepts) Concepts Only data associated with central and relevant Concepts are filterable. Filtering on Concept properties will not return any not\_applicable or avoid Concepts. The only supported properties are the Concept description and context. Note that the relationship and type of Concepts is the same in this instance: ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-concepts-related-to-standards) Filtering Concepts Related to Standards When retrieving Concepts related to a Standard, you can filter the list on context and description. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-resources-by-properties-on-related-resources) Filtering Resources by Properties on Related Resources -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- One common need is to search across object relationships - for example, search for Assets based on properties of related Standards. Since this is a common need, AB Connect supports searching Assets based on key properties of related entities. E.g. This will return Assets aligned to Standards in California. This can be combined with other properties on the Asset or related entities. E.g. to find Assets related to California Standards on a particular Topic And combining that with Asset properties... The text fields on the related entities are also indexed with the Asset full text search. This strengthens the Asset full text search in two ways. 1. When searching Assets for a key word or phrase, the engine will respond with Assets that are associated with that word or phrase through relationships and not just with the Asset properties. 2. Full text search results include the text of related entities when ranking results. E.g. If an Asset is related to multiple Concepts, Topics or Standards that contain the word "triangle" it will appear higher in the search results than an Asset that only mentions the word in a text field or has a few related entities that contain "triangle". The following list shows related entity properties that can be included in an Asset search: * Standards * `alignments.ancestors.id` * `alignments.concepts.context` - this field is also included in full text searches once for each Standard that has this Concept in a Key Idea * `alignments.concepts.descr` - this field is also included in full text searches once for each Standard that has this Concept in a Key Idea * `alignments.document.disciplines.subjects.descr` * `alignments.document.disciplines.subjects.guid` * `alignments.document.descr` - this field is also included in full text searches * `alignments.document.guid` * `alignments.document.publication.descr` - this field is also included in full text searches * `alignments.document.publication.guid` * `alignments.document.publication.authorities.descr` * `alignments.document.publication.authorities.guid` * `alignments.document.publication.regions.descr` * `alignments.document.publication.regions.guid` * `alignments.education_levels.grades.descr` * `alignments.education_levels.grades.guid` * `alignments.number.raw` * `alignments.number.enhanced` * `alignments.number.prefix_enhanced` * `alignments.section.guid` * `alignments.section.descr` - this field is also included in full text searches * `alignments.status` * `alignments.statement.descr` - this field is also included in full text searches * `alignments.topics.descr` - this field is also included in full text searches once for each Standard that covers this Topic * Topics - Only data associated with accepted and predicted Topics are searchable on the Asset * `topics.descr` - this field is also included in full text searches * Concepts - Only data associated with central and relevant Concepts are searchable on the Asset * `concepts.context` - this field is also included in full text searches * `concepts.descr` - this field is also included in full text searches Notes: * Assets can be filtered by `deleted_alignments` properties in a similar fashion as `alignments`, however, no `deleted_alignments` properties are included in an Asset's full text search. * The Academic Benchmarks Topics and Concepts are licensed separately. See the section on [Licensing Considerations](https://developerdocs.instructure.com/services/ab-connect/introduction/licensing) for a discussion on the licensing required for access to those taxonomies. It is also possible to search on the properties of the relationship between Assets and entities with simple relationships to Assets (Standards, Topics, Concepts, etc.). In order to do that, address the relationship properties as if they were properties on the related entity itself. E.g. you can filter on accepted Standards with `alignments.meta.disposition eq 'accepted'`. To search for Assets that have accepted relationships with a specific standard, your filter statement will look like: Note that you can use any of the "meta" properties on the relationship in the filtering - e.g. `alignments.meta.score`, `alignments.meta.tags`, etc. See the relationship definition for a complete list of meta properties. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-standards-and-relationships) Filtering Standards and Relationships Like Assets, Standards can also be filtered by some key properties on related entities. The following list shows related entity properties that can be included in a Standard search: * Concepts * `concepts.context` - this field is also included in full text searches * `concepts.descr` - this field is also included in full text searches ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-by-other-properties-and-relationships-to-other-resources) Filtering by Other Properties and Relationships to Other Resources To search for resources by properties on related entities other than those listed above, use the search capability to locate the related entities of interest, build a list of related entities and then search the resource by the related entity IDs. For example, if you'd like to find Standards in Virginia that cover Exponents in the 8th grade, first search for the Topic. Topics are grade banded so you'll want to include the grade in your filter to ensure you are getting the correct Topic for the grade. The result is Topic `06EA4018-32ED-11E0-8DE3-079AD51F4EFC`. Then search the Standards for items in Virginia related to this Topic. If the result of the first search resulted in multiple related Topics (say you also wanted to include Standards related to "Problem Solving"), you can include them all in the Standards filter using the "IN" clause. E.g. Although we use Standards and their relationships to Topics in this example, the same approach can be taken for searching for any objects based on their relationship to other objects. E.g. * Locating Standards related to Concepts or other Standards * Locating Topics related to Standards or other Topics * Locating Assets related to other Assets or to properties of Standards, Topics or Concepts not listed above. When searching across relationships and specifying the filter criteria, the filter property name is based on the relationship rather than the related object type. For example, `standards` is a resource type and the Standards endpoint has relationships with other Standards. However, those relationships are named `parent`, `ancestors`, `origins`, `derivatives`, `children`, `peers`, etc. If the filter referenced the _type_ instead of the relationship _name_, the filter would read `filter[standards]=(standards.id eq 'F97EA8C2-D9AE-11E2-8230-99ABD51F4EFC')` and the system would have no way to know which relationship you were filtering on. Instead, if you were looking for Standards that were under a given Standard (i.e. Standards that had a certain Standard as an `ancestor`) the proper filter notation would be `filter[standards]=(ancestors.id eq 'CB411CD4-D90D-11E2-8BD3-EF629DFF4B22')`. [PreviousCall Throttlingchevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/throttling) [NextError Responseschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/error-responses) Last updated 6 months ago Was this helpful? * [Addressing Meta Properties on Relationships](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#addressing-meta-properties-on-relationships) * [Paging Related Objects](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#paging-related-objects) * [Notes](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#notes) * [Including Related Resource Properties](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#including-related-resource-properties) * [Notes:](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#notes-1) * [Filtering Related Objects](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-related-objects) * [Filtering Objects Related to Assets](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-objects-related-to-assets) * [Filtering Concepts Related to Standards](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-concepts-related-to-standards) * [Filtering Resources by Properties on Related Resources](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-resources-by-properties-on-related-resources) * [Filtering Standards and Relationships](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-standards-and-relationships) * [Filtering by Other Properties and Relationships to Other Resources](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-by-other-properties-and-relationships-to-other-resources) Was this helpful? sun-brightdesktopmoon Copy `?include=` Copy `https://api.abconnect.instructure.com/rest/v4.1/topics/2CED2B98-4FD7-11E0-964D-6C069DFF4B22?fields[topics]=standards&include=standards` Copy https://api.abconnect.instructure.com/rest/v4.1/assets?filter[assets]=disciplines.subjects.code eq 'MATH'&filter[alignments]=document.publication.authorities.guid eq '912830F6-F1B9-11E5-862E-0938DC287387' AND meta.date_created_utc gt '2020-03-12' Copy ...&filter[alignments]=document.publication.authorities.guid eq '912830F6-F1B9-11E5-862E-0938DC287387'&... Copy ...&filter[topics]=query(descr,'square')&... Copy ...&filter[concepts]=query(descr,'square') AND query(context,'exponents')&... Copy ...&filter[concepts]=query(descr,'square') AND query(context,'exponents')&... Copy `filter[assets]=(alignments.document.publication.authorities.descr eq 'California DOE')` Copy `filter[assets]=(alignments.document.publication.authorities.descr eq 'California DOE' and alignments.topics.descr eq 'Exponents and Roots')` Copy `filter[assets]=(alignments.document.publication.authorities.descr eq 'California DOE' and alignments.topics.descr eq 'Exponents and Roots' and education_levels.grades.code eq '8')` Copy `filter[assets]=(alignments.id eq '0029A5C3-3C0C-4127-9766-C44E5E255C26' and alignments.meta.disposition eq 'accepted')` Copy `filter[topics]=(query(descr, 'exponents') and education_levels.grades.code eq '8')` Copy `filter[standards]=(document.publication.authorities.descr eq 'Virginia DOE' and education_levels.grades.code eq '8' and topics.id eq '06EA4018-32ED-11E0-8DE3-079AD51F4EFC')` Copy `filter[standards]=(document.publication.authorities.descr eq 'Virginia DOE' and education_levels.grades.code eq '8' and topics.id in ('06EA4018-32ED-11E0-8DE3-079AD51F4EFC','067C7C8E-EBE5-11E5-AE48-F5189AAB8BA3'))` sun-brightdesktopmoon --- # API Endpoint Attributes | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.endpoint_attributes#api-endpoint-attributes) API Endpoint Attributes ----------------------------------------------------------------------------------------------------------------------------------------------------- Canvas adds attributes to links in returned HTML snippets to make it easier for API consumers to digest the referenced resources. These attributes are as follows: * `data-api-endpoint` - A URL where the linked object can be accessed via the API * `data-api-returntype` - The type of data returned For example, consider an assignment description containing a link to a wiki page in the same course. The description returned by the Get Assignment API might look like this: Copy More information here The currently supported `data-api-returntype` values are: * `Assignment` * `Discussion` * `Page` * `File` * `Folder` * `Quiz` * `Module` * `SessionlessLaunchUrl` If the API returns a list of objects instead of a single object, the `data-api-returntype` will be wrapped in square brackets, e.g. `[Assignment]`. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousFile Uploadschevron-left](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads) [NextMasqueradingchevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.masquerading) Last updated 9 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # GraphQL | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#graphql-api) GraphQL API ----------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#graphql-introduction) GraphQL Introduction GraphQL is a query API language that executes queries by using a type system based on defined input data. GraphQL provides more specific inquiries with faster results and populate multiple inputs into one query. Note: GraphQL endpoint permissions mirror permissions for the REST API. A user is only granted access to view grades based on that user’s permissions. For instance, a student cannot view grades for another student, but an instructor can view grades for any student in a course. [Learn more about GraphQLarrow-up-right](https://graphql.org/learn/) . ### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#using-graphql) Using GraphQL Canvas has included the tool [GraphiQLarrow-up-right](https://github.com/graphql/graphiql) , an in-browser graphical interface for interacting with GraphQL endpoints. The GraphiQL interface can be viewed by adding /graphiql to the end of your Canvas production URL (e.g. your-institution.instructure.com/graphiql). The /graphiql access can also be added to a test or beta environment URL. Requests from the selected environment will always return that environment’s data. The Explorer sidebar displays all available queries and mutations. Any selected items display in the GraphiQL window. Once a query or mutation is selected, any values displayed in purple text identify the value as an input argument. #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#rest-vs-graphql) REST vs GraphQL The Canvas REST API will continue to be available. Fields are being added to the GraphQL API on an as-needed basis. The GraphQL API does not include everything that is currently in the REST API. Feel free to submit pull requests on github to add additional features or talk about it in the `#canvas-lms` channel on libera.chat. ### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#graphql-endpoint) GraphQL Endpoint #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#post-api-graphql) POST /api/graphql All GraphQL queries are posted to this endpoint. **Request Parameters** Parameter Type Description query string the GraphQL query to execute variables Hash variable values as required by the supplied query **Example Request:** **Example Response** ### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#graphql-in-canvas) GraphQL in Canvas #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#id-vs-_id-and-the-node-field) `id` vs `_id` and the `node` field The Canvas LMS GraphQL API follows the [Relay Object Identification specarrow-up-right](https://relay.dev/graphql/objectidentification.htm) . Querying for an object's `id` will return a global identifier instead of the numeric ids that are used in the REST API. The traditional ids can be queried by requesting the `_id` field. Most objects can be fetched by passing their GraphQL `id` to the `node` field: A `legacyNode` field is also available to fetch objects via the REST-style ids: For commonly accessed object types, type-specific fields are provided: #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#pagination) Pagination Canvas follows the [Relay Connection Specarrow-up-right](https://facebook.github.io/relay/graphql/connections.htm) for paginating collections. Request reasonable page sizes to avoid being limited. **Total Count in Connections** Some connection types support a `totalCount` field in `pageInfo` that provides the total number of items in the connection, regardless of pagination limits. This is useful for displaying "Page X of Y" pagination interfaces. **Note:** `totalCount` is only available on connections that have been explicitly configured for it. Not all connection types support this field. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousBasicschevron-left](https://developerdocs.instructure.com/services/canvas/basics) [NextAPI Change Logchevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.changelog) Last updated 3 months ago Was this helpful? * [GraphQL API](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#graphql-api) * [GraphQL Introduction](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#graphql-introduction) * [Using GraphQL](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#using-graphql) * [GraphQL Endpoint](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#graphql-endpoint) * [GraphQL in Canvas](https://developerdocs.instructure.com/services/canvas/basics/file.graphql#graphql-in-canvas) Was this helpful? sun-brightdesktopmoon Copy curl https:///api/graphql \ -H 'Authorization: Bearer ' \ -d query='query courseInfo($courseId: ID!) { course(id: $courseId) { id _id name } }' \ -d variables[courseId]=1 Copy { "data": { "course": { "id": "Q291cnNlLTE=", "_id": "1", "name": "Mr. Ratburn's Class" } } } Copy { node(id: "Q291cnNlLTE=") { ... on Course { _id # traditional ids (e.g. "1") name term { name } } } } Copy { # object type must be specified when using legacyNode legacyNode(type: Course, _id: "1") { ... on Course { _id name } } } Copy { # NOTE: id arguments will always take either GraphQL or rest-style ids c1: course(id: "1") { _id name } c2: course(id: "Q291cnNlLTE=") { _id name } } Copy { course(id: "1") { assignmentsConnection( first: 10, # page size after: "XYZ" # `endCursor` from previous page ) { nodes { id name } pageInfo { endCursor # this is your `after` value for the next request hasNextPage } } } } Copy { assignment(id: "1") { submissionsConnection(first: 10) { nodes { id state } pageInfo { hasNextPage totalCount # total number of submissions (ignoring pagination) } } } } sun-brightdesktopmoon --- # Providers | Instructure Developer Documentation Portal The Providers resource can be used to retrieve information about your Provider account as well as Providers that have shared all or some of their Assets with your organization and Providers with whom you have shared Assets. You can list all of the Providers related to you, filter the list of related Providers or lookup a specific Provider. The response contains the name of the related Provider as well as the Provider's unique GUID and a list of AB taxonomies they have licensed. In the special circumstance where your own Provider object shows up in the response, you will also see relationships listing Providers that are sharing Assets with you (Owners) as well as Providers with whom you are sharing assets (Consumers). To locate your own Provider object, user the filter parameter and request Providers with ID `_me`. That is a special constant that matches yourself. While not terribly helpful with the Providers endpoint, you can also use `_all` as a match on Provider fields to indicate that you want to match on all Providers. This can be used with the `owner.id` property on the Assets resource where the default behavior is to only list Assets owned by you. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/providers#single-provider) Single Provider ----------------------------------------------------------------------------------------------------------------------------- In its simplest form, you are able to retrieve the details of a specific Provider by appending the AB GUID to the path portion of the URL. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/providers#fetching-a-provider) Fetching a Provider get https://api.abconnect.instructure.com/rest/v4.1/providers/{guid} Path parameters guidstringRequired guid of specified asset Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[providers\]stringOptional comma separated list of field names includestringOptional A comma separated list of resource names that will be returned in the response. Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobjectOptional Show propertiesplus includedobject\[\]Optional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json chevron-right 404 Entity not found application/json get /providers/{guid} HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/providers#searching-for-providers) Searching for Providers --------------------------------------------------------------------------------------------------------------------------------------------- Using filtering and facets, it is possible to retrieve sets of Providers that match specific criteria. These Providers are returned in an array of Provider objects. See the Introduction for an explanation on [filtering](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) and the use of [facets](https://developerdocs.instructure.com/services/ab-connect/introduction/facets) . This section covers the specifics of using these parameters with the Providers resource. Note that by default, the endpoint returns your Provider object and the objects of all Providers related to you. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/providers#finding-sets-of-providers) Finding Sets of Providers get https://api.abconnect.instructure.com/rest/v4.1/providers Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[providers\]stringOptional comma separated list of field names filter\[providers\]stringOptional an ODATA-like query string used to filter sort\[providers\]stringOptional a comma separated list of property names specifying the sort order of the returned results includestringOptional A comma separated list of resource names that will be returned in the response. limitnumberOptional The page size for the response dataset. limit must be 100 or less. offsetnumberOptional How far into the dataset you are paging Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobject\[\]Optional Show propertiesplus includedobject\[\]Optional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json get /providers HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [PreviousManaging and Predicting Relationshipschevron-left](https://developerdocs.instructure.com/services/ab-connect/reference/relationships) [NextCanvas LMSchevron-right](https://developerdocs.instructure.com/services/canvas) Last updated 9 months ago Was this helpful? * [Single Provider](https://developerdocs.instructure.com/services/ab-connect/reference/providers#single-provider) * [Fetching a Provider](https://developerdocs.instructure.com/services/ab-connect/reference/providers#fetching-a-provider) * [GET/providers/{guid}](https://developerdocs.instructure.com/services/ab-connect/reference/providers#get-providers-guid) * [Searching for Providers](https://developerdocs.instructure.com/services/ab-connect/reference/providers#searching-for-providers) * [Finding Sets of Providers](https://developerdocs.instructure.com/services/ab-connect/reference/providers#finding-sets-of-providers) * [GET/providers](https://developerdocs.instructure.com/services/ab-connect/reference/providers#get-providers) Was this helpful? sun-brightdesktopmoon Copy GET /rest/v4.1/providers/{guid}?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text" }, "meta": { "took": 1 }, "data": { "type": "providers", "id": "text", "attributes": { "guid": "text", "descr": "text", "taxonomies": [\ "concepts"\ ] }, "relationships": { "owners": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "consumers": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } } } }, "included": [\ {\ "type": "providers",\ "id": "text",\ "attributes": {\ "guid": "text",\ "descr": "text",\ "taxonomies": [\ "concepts"\ ]\ },\ "relationships": {\ "owners": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "consumers": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ }\ }\ ] } Copy GET /rest/v4.1/providers?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text", "first": "text", "last": "text", "next": "text", "prev": "text" }, "meta": { "took": 1, "limit": 1, "count": 1, "offset": 1 }, "data": [\ {\ "type": "providers",\ "id": "text",\ "attributes": {\ "guid": "text",\ "descr": "text",\ "taxonomies": [\ "concepts"\ ]\ },\ "relationships": {\ "owners": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "consumers": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ }\ }\ ], "included": [\ {\ "type": "providers",\ "id": "text",\ "attributes": {\ "guid": "text",\ "descr": "text",\ "taxonomies": [\ "concepts"\ ]\ },\ "relationships": {\ "owners": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "consumers": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ }\ }\ ] } sun-brightdesktopmoon --- # Masquerading | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.masquerading#masquerading) Masquerading ------------------------------------------------------------------------------------------------------------------------ Masquerading is making an API call on behalf of another user. It will behave as if the target user had made the API call with their own access token (even if they don't have one), including permission checks, enrollments, etc. In order to masquerade via the API, the calling user must have the "Become other users" permission. If the target user is also an admin, the calling user must additionally have every permission that the target user has. For auditing purposes, all calls log both the calling user and the target user. To masquerade, add an as\_user\_id parameter to any request. It can be either a Canvas user ID, or an SIS user ID (as described in [SIS IDs](https://developerdocs.instructure.com/services/canvas/basics/file.object_ids) ): Copy curl 'https:///api/v1/users/self/activity_stream?as_user_id=sis_user_id:brian' \ -H "Authorization: Bearer " Masquerading could be useful in a number of use cases: * For developing an admin tool * For accessing APIs that can only be called on self (i.e. the activity stream as shown above) * For a portal type application that's already tightly integrated with an SIS and is managed by the school, to avoid going through the OAuth flow for every student * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousAPI Endpoint Attributeschevron-left](https://developerdocs.instructure.com/services/canvas/basics/file.endpoint_attributes) [NextOAuth2chevron-right](https://developerdocs.instructure.com/services/canvas/oauth2) Last updated 9 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Asset Definitions | Instructure Developer Documentation Portal The Asset Definition endpoint provides direct access to the properties on Assets. Asset type is an attribute on an Asset. The Asset Definitions resource can be used to access different asset types for setting up a browse and filter experience on the Asset resource. See the documentation on the [Asset endpoint](https://developerdocs.instructure.com/services/ab-connect/reference/assets) for details. All calls against the Asset Definitions resource must be implemented as HTTP GET requests, and must include proper [Partner Authentication Credentials](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions#retrieving-asset-definitions) Retrieving Asset Definitions --------------------------------------------------------------------------------------------------------------------------------------------------------------- In its simplest form, you are able to retrieve the details of a specific Asset Definitions resource by appending the AB GUID to the path portion of the URL. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions#asset-definitions-fetching) Asset Definitions Fetching get https://api.abconnect.instructure.com/rest/v4.1/asset\_definitions/{guid} Path parameters guidstringRequired guid of specified asset definition Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[asset\_definitions\]stringOptional comma separated list of field names Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobjectOptional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json chevron-right 404 Entity not found application/json get /asset\_definitions/{guid} HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions#searching-for-asset-definitions) Searching for Asset Definitions --------------------------------------------------------------------------------------------------------------------------------------------------------------------- Using filterings, it is possible to retrieve sets of Asset Definitions that match specific criteria. These Asset Definitions are returned in an array of Asset Definitions objects. See the Introduction for an explanation on [filtering](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) . ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions#finding-sets-of-assets-definitions) Finding Sets of Assets Definitions get https://api.abconnect.instructure.com/rest/v4.1/asset\_definitions Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[asset\_definitions\]stringOptional comma separated list of field names filter\[asset\_definitions\]stringOptional an ODATA-like query string used to filter sort\[asset\_definitions\]stringOptional a comma separated list of property names specifying the sort order of the returned results limitnumberOptional The page size for the response dataset. limit must be 100 or less. offsetnumberOptional How far into the dataset you are paging Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobject\[\]Optional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json get /asset\_definitions HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [PreviousAssetschevron-left](https://developerdocs.instructure.com/services/ab-connect/reference/assets) [NextAsset Collectionschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections) Last updated 6 months ago Was this helpful? * [Retrieving Asset Definitions](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions#retrieving-asset-definitions) * [Asset Definitions Fetching](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions#asset-definitions-fetching) * [GET/asset\_definitions/{guid}](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions#get-asset_definitions-guid) * [Searching for Asset Definitions](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions#searching-for-asset-definitions) * [Finding Sets of Assets Definitions](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions#finding-sets-of-assets-definitions) * [GET/asset\_definitions](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions#get-asset_definitions) Was this helpful? sun-brightdesktopmoon Copy GET /rest/v4.1/asset_definitions/{guid}?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text" }, "meta": { "took": 1 }, "data": { "id": "text", "type": "asset_definitions", "attributes": { "type": "text", "asset_type": "text", "properties": [\ {\ "filterable": "text",\ "seq": 1,\ "label": "text",\ "field": {\ "id": "text",\ "name": "text"\ },\ "facet": {\ "id": "text",\ "name": "text"\ }\ }\ ], "guid": "text" } } } Copy GET /rest/v4.1/asset_definitions?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text", "first": "text", "last": "text", "next": "text", "prev": "text" }, "meta": { "took": 1, "limit": 1, "count": 1, "offset": 1 }, "data": [\ {\ "id": "text",\ "type": "asset_definitions",\ "attributes": {\ "type": "text",\ "asset_type": "text",\ "properties": [\ {\ "filterable": "text",\ "seq": 1,\ "label": "text",\ "field": {\ "id": "text",\ "name": "text"\ },\ "facet": {\ "id": "text",\ "name": "text"\ }\ }\ ],\ "guid": "text"\ }\ }\ ] } sun-brightdesktopmoon --- # Developer Keys | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#developer-keys) Developer Keys ------------------------------------------------------------------------------------------------------------------------------ Developer keys are OAuth2 client ID and secret pairs stored in Canvas that allow third-party applications to request access to Canvas API endpoints via the [OAuth2 flow](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth) . Access is granted after a user authorizes an app and Canvas creates an API access token that’s returned in the final request of the OAuth2 flow. Developer keys created in a root account, by root account administrators or Instructure employees, are only functional for the account they are created in and its sub-accounts. Developer keys created globally, by an Instructure employee, are functional in any Canvas account where they are enabled. By scoping the tokens, Canvas allows root account administrators to manage the specific API endpoints that tokens issued from a developer key have access to. ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#developer-key-scopes) Developer Key Scopes Developer key scopes allow root account administrators to restrict the tokens issued from developer keys to a subset of Canvas API endpoints in their account. Developer keys may be scoped or unscoped. Unscoped keys will have access to all Canvas resources available to the authorizing user. The following applies to scoped developer keys only: #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#what-are-developer-key-scopes-in-canvas) What are developer key scopes in Canvas? Each Canvas API endpoint has an associated scope. Canvas developer key scopes can only be enabled/disabled by a root account administrator or an Instructure employee. Scopes take the following form: Copy url:| For example, the corresponding scope for the `GET /api/v1/courses/:course_id/rubrics` API endpoint would be Copy url:GET|/api/v1/courses/:course_id/rubrics #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#how-do-developer-key-scopes-function) How do developer key scopes function? When requesting an access token, third-party applications should specify a `scope` parameter (see the [oauth endpoints documentation](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-oauth2-auth) ). The requested scopes must be a subset of the scopes set for the developer key. When a client makes any API request, Canvas will verify the requested endpoint's scope has been granted by the account administrator to the developer key of the request's access token. If the requested endpoint's scope has not been granted Canvas will respond with `401 Unauthorized`. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#who-can-grant-or-revoke-scopes-for-a-developer-key) Who can grant or revoke scopes for a developer key? For developer keys created in a specific root account, administrators for that account may grant or revoke scopes. When requesting a developer key, application owners should communicate with administrators which scopes their integrations require. For global developer keys, an Instructure employee may grant or revoke scopes. _Note:_ If a scope is removed from a developer key, all access tokens derived from that key will be invalidated. In this case, clients should request a new access token. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#where-can-i-see-what-scopes-are-available) Where can I see what scopes are available? View the complete list of [token scopes](https://developerdocs.instructure.com/services/canvas/resources/api_token_scopes) . Scopes may also be found beneath their corresponding endpoints in the "resources" documentation pages. ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#developer-key-management) Developer Key Management Developer key management features allow root account administrators to turn global developer keys "on" and "off" for only their account. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#what-management-features-are-available) What management features are available? Root account administrators may enable or disable global developer keys for their specific account. This means that vendors who wish to have integrations that work in any Canvas account may request a global developer key from Instructure allowing account administrators enable the key for their account. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#how-do-management-features-function) How do management features function? When a client uses the [OAuth2 Auth endpoint](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-oauth2-auth) as part of the flow to retrieve an access token canvas will check the developer key associated with the `client_id`. If the developer key is not enabled in the requested account, Canvas will respond with `unauthorized_client`. When a client makes any API request, Canvas will check the developer key associated with the access token used in the request. If the developer key is not enabled for the requested account, Canvas will respond with `401 Unauthorized`. ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#other-considerations) Other Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#maximum-number-of-scopes) Maximum number of scopes When clients request an access token they may specify what scopes the token needs (see the [oauth endpoints documentation](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-oauth2-auth) ). Because the client sends the scopes they require in a GET request, the maximum number of scopes one access token can specify is limited by the maximum HTTP header size Canvas allows (8000 chars). On average, an access token may use up to 110 scopes. This number will vary depending on the actual length of the scopes used and any other headers sent in the [login oauth2 request](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-oauth2-auth) along with the scopes. If the number of scopes required by the client exceeds this limitation, a second access token with the remaining scopes should be requested. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#canvas-api-includes) Canvas API Includes Several Canvas APIs allow specifying an `include` parameter. This parameter allows nesting resources in JSON responses. For example, a request to the [assignment index endpoint](https://developerdocs.instructure.com/services/canvas/resources/assignments#method.assignments_api.index) could be made to include the submission objects for each assignment. Responses to requests made with a scoped access token only support this functionality when the 'Allow Include Parameters' option is also enabled. When this option is disabled, a request is made with a scoped token Canvas will ignore `include` and `includes` parameters. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#developer-key-scope-changes) Developer Key Scope Changes During the lifetime of a developer key, scopes may be added or removed by account administrators. Below is a description of possible changes and how each will affect access tokens: **New scopes are added to a developer key** Access tokens issued prior to the addition of the new scope will continue to function. These access tokens will not, however, be usable with the new scope. To access the newly added resources clients should request a new access token with scopes. The requested scopes must be a subset of the scopes on the developer key. **Scopes are removed from a developer key** Access tokens issued prior to the removal of the scope(s) will _not_ continue to function. Clients should request a new access token with scopes. The requested scopes must be a subset of the scopes on the developer key. **An unscoped developer key becomes scoped** Access tokens issued prior to the change will _not_ continue to function. Clients should request a new access token with scopes. The requested scopes must be a subset of the scopes on the developer key. If the client attempts to request a new access token without specifying scopes Canvas will respond with an error. For details on unscoped vs scoped developer key see `Developer Key Scopes` above. **A scoped developer key becomes unscoped** Access tokens issued prior to the change will continue to function _and_ have access to all resources of the authorizing user. Clients may continue to request scoped access tokens, but these tokens will be functional for all resources available to the authorizing user. For details on unscoped vs scoped developer key see `Developer Key Scopes` above. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousOAuth2 Endpointschevron-left](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints) [NextResourceschevron-right](https://developerdocs.instructure.com/services/canvas/resources) Last updated 9 months ago Was this helpful? * [Developer Keys](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#developer-keys) * [Developer Key Scopes](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#developer-key-scopes) * [Developer Key Management](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#developer-key-management) * [Other Considerations](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys#other-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # File Uploads | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#uploading-files) Uploading Files ------------------------------------------------------------------------------------------------------------------------------ There are two ways to upload a file to Canvas: either by sending the file data in a POST request, or by sending Canvas a publicly accessible HTTP or HTTPS URL to the file. ### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#uploading-via-post) [Uploading via POST](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#method.file_uploads.post) There are three steps to uploading a file directly via POST: 1. Notify Canvas that you are uploading a file with a POST to the file creation endpoint. This POST will include the file name and file size, along with information about what context the file is being created in. 2. Upload the file using the information returned in the first POST request. 3. On successful upload, the API will respond with a redirect. This redirect needs to be followed to complete the upload, or the file may not appear. #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#step-1-telling-canvas-about-the-file-upload-and-getting-a-token) Step 1: Telling Canvas about the file upload and getting a token The first step is to POST to the relevant API endpoint, depending on where you want to create the file. For example, to [add a file to a course](https://developerdocs.instructure.com/services/canvas/resources/courses) , you'd POST to `/api/v1/courses/:course_id/files`. Or to [upload a file as part of a student homework submission](https://developerdocs.instructure.com/services/canvas/resources/submissions) , as the student you'd POST to `/api/v1/courses/:course_id/assignments/:assignment_id/submissions/self/files` or `/api/v1/courses/:course_id/assignments/:assignment_id/submissions/comments/self/files` for submission comments. Note\* The endpoint you choose to post files to will change the permissions set on the file. i.e. only files posted to the submissions comments endpoint can be attached to a submissions comment. Arguments: * name The filename of the file. Any UTF-8 name is allowed. Path components such as \`/\` and \`\\\` will be treated as part of the filename, not a path to a sub-folder. * size The size of the file, in bytes. This field is recommended, as it will let you find out if there's a quota issue before uploading the raw file. * content\_type The content type of the file. If not given, it will be guessed based on the file extension. * parent\_folder\_id The id of the folder to store the file in. An error will be returned if this does not correspond to an existing folder. If this and parent\_folder\_path are sent an error will be returned. If neither is given, a default folder will be used. * parent\_folder\_path The path of the folder to store the file in. The path separator is the forward slash \`/\`, never a back slash. The folder will be created if it does not already exist. This parameter only applies to file uploads in a context that has folders, such as a user, a course, or a group. If this and parent\_folder\_id are sent an error will be returned. If neither is given, a default folder will be used. * folder \[deprecated\] Use parent\_folder\_path instead. * on\_duplicate How to handle duplicate filenames. If \`overwrite\`, then this file upload will overwrite any other file in the folder with the same name. If \`rename\`, then this file will be renamed if another file in the folder exists with the given name. If no parameter is given, the default is \`overwrite\`. This doesn't apply to file uploads in a context that doesn't have folders. * success\_include\[\] An array of additional information to include in the upload success response. See Files API for more information. Example Request: Example Response: At this point, the file object has been created in Canvas in a "pending" state, with no content. It will not appear in any listings in the UI until the next two steps are completed. The returned Signature is valid for 30 minutes. #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#step-2-upload-the-file-data-to-the-url-given-in-the-previous-response) Step 2: Upload the file data to the URL given in the previous response Using the data in the JSON response from Step 1, the application can now upload the actual file data, by POSTing a specially formulated request to the URL given in the `upload_url` field of the response. Depending on how Canvas is configured, this upload URL might be another URL in the same domain, or a Amazon S3 bucket, or some other URL. In order to work with all Canvas installations, applications should be very careful to follow this documentation and not make any undocumented assumptions about the upload workflow. This second request must be POSTed as a multipart/form-data request to accomodate the file data. The parameters POSTed with this request come directly from the `upload_params` part of the JSON response in Step 1. The only addition is the `file` parameter which _must_ be posted as the last parameter following all the others. Example Request: The access token is not sent with this request. Example Response: IMPORTANT: The request is signed, and will be denied if any parameters from the `upload_params` response are added, removed or modified. The parameters in `upload_params` may vary over time, and between Canvas installs. It's important for the application to copy over all of the parameters, and not rely on the names or values of the params for any functionality. This example assumes there is a file called `my_local_file.jpg` in the current directory. #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#step-3-confirm-the-uploads-success) Step 3: Confirm the upload's success If Step 2 is successful, the response will be either a 3XX redirect or 201 Created with a Location header set as normal. In the case of a 3XX redirect, the application needs to perform a GET to this location in order to complete the upload, otherwise the new file may not be marked as available. (Note: While a POST would be truer to REST semantics, a GET is required for forwards compatibility with the 201 Created response described below.) This request is back against Canvas again, and needs to be authenticated using the normal API access token authentication. In the case of a 201 Created, the upload has been complete and the Canvas JSON representation of the file can be retrieved with a GET from the provided Location. Example Request: Example Response: ### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#uploading-via-url) [Uploading via URL](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#method.file_uploads.url) Instead of uploading a file directly, you can also provide Canvas a public HTTP or HTTPS URL from which to retrieve the file. #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#step-1a-posting-the-file-url-to-canvas) Step 1a: Posting the file URL to Canvas The first step is the same as with the "Uploading via POST" flow above, with the addition of a few new parameters: * url The full URL to the file to be uploaded. This URL must be publicly accessible. * submit\_assignment A boolean to indicate whether or not to automatically submit the assignment the file is associated with if it is associated with an assignment. Defaults to true. Example Request: Example Response: #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#step-1b-understanding-the-response) Step 1b: Understanding the response Canvas' file management is in a moment of transition. For the duration of this transition, there are two possible behaviors. The newer behavior includes additional fields in the response to the first request and expects an additional action from the application. In the deprecated behavior, Canvas will initiate a "cloning" of the provided URL by downloading it via Canvas servers. The initial POST was sufficient to start this and no other action is necessary from the application. In the newer behavior, Canvas delegates the cloning of the URL to the same service that accepts direct uploads. The cloning is kicked off by a POST by the application to the provided `upload_url` with the provided `upload_params`, in parallel with a direct upload. The service then informs Canvas directly when it is complete. In either case, the cloning of the URL will be performed in the background, and the file will not necessarily be immediately available when the API calls complete. Instead, a `progress` object is provided which can be periodically polled to check the status of the upload. You can distinguish the new behavior (and expected follow up) from the old behavior precisely by the presence or absence of the `upload_url` key. #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#step-2-post-to-the-url-given-in-the-previous-response) Step 2: POST to the URL given in the previous response If the response to the initial POST includes an `upload_url`, you must POST to it with the `upload_params` just as if you were performing a direct upload. The only exception is that the `file` parameter is omitted. The `Content-Type` is still expected to be multipart/form-data. Example Request: Example Response: This step is not necessary with the old behavior. #### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#step-3-check-to-see-when-the-upload-is-complete) Step 3: Check to see when the upload is complete If the application needs to know the outcome of the upload, it can use the {api:ProgressController#Show Progress endpoint} to query the status. On success, the created attachment's id will be returned in the results of the Progress object as `id`. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousCompound Documentschevron-left](https://developerdocs.instructure.com/services/canvas/basics/file.compound_documents) [NextAPI Endpoint Attributeschevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.endpoint_attributes) Last updated 4 days ago Was this helpful? * [Uploading Files](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#uploading-files) * [Uploading via POST](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#uploading-via-post) * [Uploading via URL](https://developerdocs.instructure.com/services/canvas/basics/file.file_uploads#uploading-via-url) Was this helpful? sun-brightdesktopmoon Copy curl 'https:///api/v1/users/self/files' \ -F 'name=profile_pic.jpg' \ -F 'size=302185' \ -F 'content_type=image/jpeg' \ -F 'parent_folder_path=my_files/section1' \ -H "Authorization: Bearer " Copy { "upload_url": "https://some-bucket.s3.amazonaws.com/", "upload_params": { "key": "/users/1234/files/profile_pic.jpg", } } Copy curl '' \ -F 'key=/users/1234/files/profile_pic.jpg' \ -F 'file=@my_local_file.jpg' Copy HTTP/1.1 301 Moved Permanently Location: https:///api/v1/files/1234/create_success?uuid=ABCDE Copy curl -X POST '' \ -H 'Content-Length: 0' \ -H "Authorization: Bearer " Copy { "id": 1234, "url": "...url to download the file...", "content-type": "image/jpeg", "display_name": "profile_pic.jpg", "size": 302185 } Copy curl 'https:///api/v1/users/self/files' \ -F 'url=http://example.com/my_pic.jpg' \ -F 'name=profile_pic.jpg' \ -F 'size=302185' \ -F 'content_type=image/jpeg' \ -F 'parent_folder_path=my_files/section1' \ -H "Authorization: Bearer " Copy { "upload_url": "https://file-service.url/opaque", "upload_params": { /* unspecified parameters; contents should be treated as opaque */ }, "progress": { /* amongst other tags, see the Progress API... */ "url": "https://canvas.example.edu/api/v1/progress/1" "workflow_state": "running" } } Copy curl '' \ -F 'target_url=http://example.com/my_pic.jpg' \ Copy HTTP/1.1 201 Created sun-brightdesktopmoon --- # Concepts | Instructure Developer Documentation Portal Academic Benchmarks includes a controlled vocabulary of Concepts that has been used for over 15 years to aid in building relationships between content or assessment items (together referred to as Assets) and Standards. AB Connect Content Enrichment tools (Clarifier and prediction engine) are built on top of the Concepts. Each Concept represents a unique notion that a Standard or Asset covers. Academic Benchmarks unpacks Standards into groups of Concepts called `key_ideas` which can be retrieved via the Standards endpoint. Similarly, Assets can be related to Concepts which can act as an intermediary between Assets and Standards. Topics are a similar intermediary controlled vocabulary but while Topics are comparatively broad or higher level than Standards, Concepts are very granular and operate at the unpacked Standard level. The Concepts resource can be used to access the Academic Benchmarks Concepts and related metadata. Use of the API ensures the most current Concepts data is available to your application. At this point in time, the Concepts endpoint is relatively simple as the expectation is that partners will use Standards or Topics as a starting point for building an Asset's metadata profile and then refine it using the Clarifier. However, this endpoint does allow the caller to retrieve `context` of the Concept which can clarify ambiguous terms. The relationship between Concepts and other objects are tracked and reported via the other objects. For example, to understand what Concepts a Standard encompasses, retrieve the `concepts` list via the Standard endpoint (or see the `key_ideas` field). Similarly, the Asset endpoint can be used to associate Assets with Concepts and retrieve the current relationship. See also the Clarifier endpoint to further explore potential relationships between Concepts, Standards and Assets. All calls against the Concepts resource must be implemented as HTTP GET requests, and must include proper [Partner Authentication Credentials](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication) . Note that access to AB Concepts is licensed separately. If your credentials are correct and you are still receiving a 401 error (or no results), check with [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#b7d6d5c4c2c7c7d8c5c3f7ded9c4c3c5c2d4c3c2c5d299d4d8da88c4c2d5ddd2d4c38af6f5928587f4d8d9d9d2d4c3928587e6c2d2c4c3ded8d9928587d8c5928587f4d8dadad2d9c392858792858fc1839986928587f6e7fe92858e) to ensure you are licensed for Concepts. See the section on [Licensing Considerations](https://developerdocs.instructure.com/services/ab-connect/introduction/licensing) for a discussion on the licensing required for access to Key Ideas and Concepts. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/concepts#single-concept) Single Concept -------------------------------------------------------------------------------------------------------------------------- In its simplest form, you are able to retrieve the details of a specific Concept by appending the AB GUID to the path portion of the URL. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/concepts#fetching-a-concept) Fetching a Concept get https://api.abconnect.instructure.com/rest/v4.1/concepts/{guid} Path parameters guidstringRequired guid of specified concept Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[concepts\]stringOptional comma separated list of field names Responses chevron-right 200 Successful operation application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobjectOptional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json chevron-right 404 Entity not found application/json get /concepts/{guid} HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 Successful operation chevron-down [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/concepts#searching-for-concepts) Searching for Concepts ------------------------------------------------------------------------------------------------------------------------------------------ Using filtering and facets, it is possible to retrieve sets of Concepts that match specific criteria. These Concepts are returned in an array of Concept objects. See the Introduction for an explanation on [filtering](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) and the use of [facets](https://developerdocs.instructure.com/services/ab-connect/introduction/facets) . This section covers the specifics of using these parameters with the Concepts resource. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/concepts#finding-sets-of-concepts) Finding Sets of Concepts get https://api.abconnect.instructure.com/rest/v4.1/concepts Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[concepts\]stringOptional comma separated list of field names filter\[concepts\]stringOptional an ODATA-like query string used to filter sort\[concepts\]stringOptional a comma separated list of property names specifying the sort order of the returned results facetstringOptional A comma separated list of facet names that you are requesting the options on. facet\_summarystringOptional A comma separated list of facet names for which you are requesting summary information. limitnumberOptional The page size for the response dataset. limit must be 100 or less. offsetnumberOptional How far into the dataset you are paging Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobject\[\]Optional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json get /concepts HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [PreviousTopicschevron-left](https://developerdocs.instructure.com/services/ab-connect/reference/topics) [NextAssetschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/assets) Last updated 6 months ago Was this helpful? * [Single Concept](https://developerdocs.instructure.com/services/ab-connect/reference/concepts#single-concept) * [Fetching a Concept](https://developerdocs.instructure.com/services/ab-connect/reference/concepts#fetching-a-concept) * [GET/concepts/{guid}](https://developerdocs.instructure.com/services/ab-connect/reference/concepts#get-concepts-guid) * [Searching for Concepts](https://developerdocs.instructure.com/services/ab-connect/reference/concepts#searching-for-concepts) * [Finding Sets of Concepts](https://developerdocs.instructure.com/services/ab-connect/reference/concepts#finding-sets-of-concepts) * [GET/concepts](https://developerdocs.instructure.com/services/ab-connect/reference/concepts#get-concepts) Was this helpful? sun-brightdesktopmoon Copy GET /rest/v4.1/concepts/{guid}?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text" }, "meta": { "took": 1 }, "data": { "attributes": { "descr": "text", "disciplines": { "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ] }, "guid": "text", "context": "text" }, "id": "text", "type": "text" } } Copy GET /rest/v4.1/concepts?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text", "first": "text", "last": "text", "next": "text", "prev": "text" }, "meta": { "took": 1, "limit": 1, "count": 1, "offset": 1, "facets": [\ {\ "count": 1,\ "facet": "text",\ "details": [\ {\ "data": {\ "descr": "text",\ "code": "text",\ "guid": "text"\ },\ "count": 1\ }\ ]\ }\ ] }, "data": [\ {\ "attributes": {\ "descr": "text",\ "disciplines": {\ "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ]\ },\ "guid": "text",\ "context": "text"\ },\ "id": "text",\ "type": "text"\ }\ ] } sun-brightdesktopmoon --- # SIS IDs | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.object_ids#object-ids-sis-ids-and-special-ids) Object IDs, SIS IDs, and special IDs -------------------------------------------------------------------------------------------------------------------------------------------------------------------- Throughout the API, objects are referenced by internal IDs. You can also reference objects by SIS ID, by prepending the SIS ID with the name of the SIS field, like `sis_course_id:`. For instance, to retrieve the list of assignments for a course with SIS ID of `A1234`: Copy /api/v1/courses/sis_course_id:A1234/assignments The following objects support SIS IDs in the API: * `sis_account_id` * `sis_course_id` * `sis_group_id` * `sis_group_category_id` * `sis_integration_id` (for users and courses) * `sis_login_id` * `sis_section_id` * `sis_term_id` * `sis_user_id` Some objects support LTI IDs: * `lti_context_id` (for accounts, assignments, courses, groups, and users) * `lti_1_1_id` (for users, an alias of `lti_context_id`, which is sent in LTI 1.1 launches as `user_id`) * `lti_1_3_id` (for users, a separate value from `lti_context_id`, sent in LTI 1.3 launches as `sub`) Additionally, some objects support special IDs: * Users support `self` to mean the current user. * Accounts support `self` to mean the root account for the current domain, `default` to mean the Default account, and `site_admin` to mean the Site Admin account. * Terms support `default` to mean the default term, and `current` to mean the term that is currently active according to term dates. A term must have a start date or an end date to be considered the current term. If there is more than one term that's active, `current` will not be found. ### [hashtag](https://developerdocs.instructure.com/services/canvas/basics/file.object_ids#encoding-and-escaping) Encoding and Escaping SIS IDs should be encoded as UTF-8, and then escaped normally for inclusion in a URI. For instance the SIS ID `CS/101.11é` is encoded and escaped as `CS%2F101%2E11%C3%A9`. Note that some web servers have difficulties with escaped characters, particularly forward slashes. They may require special configuration to properly pass encoded slashes to Rails. For Apache and Passenger, the following settings should be set: * [`AllowEncodedSlashes`arrow-up-right](http://httpd.apache.org/docs/2.2/mod/core.html#allowencodedslashes) `NoDecode` * [`PassengerAllowEncodedSlashes`arrow-up-right](http://www.modrails.com/documentation/Users%20guide%20Apache.html#_passengerallowencodedslashes_lt_on_off_gt) `on` Also beware that if you use [`ProxyPass`arrow-up-right](http://httpd.apache.org/docs/2.2/mod/mod_proxy.html#proxypass) , you should enable the `nocanon` option. Similarly, [`RewriteRule`arrow-up-right](https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewriterule) should use the [`NE`arrow-up-right](https://httpd.apache.org/docs/2.2/rewrite/flags.html#flag_ne) , or `noescape` flag. Other modules may also need additional configuration to prevent double-escaping of `%2f` (/) as `%252f`. Prior versions of this API documentation described using a hex encoding to circumvent these issues, since the proper Apache/Passenger configuration was not known at the time. This format is deprecated, and will no longer be described, but will continue to be handled by the server for backwards compatibility. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousAPI Change Logchevron-left](https://developerdocs.instructure.com/services/canvas/basics/file.changelog) [NextPaginationchevron-right](https://developerdocs.instructure.com/services/canvas/basics/file.pagination) Last updated 9 months ago Was this helpful? * [Object IDs, SIS IDs, and special IDs](https://developerdocs.instructure.com/services/canvas/basics/file.object_ids#object-ids-sis-ids-and-special-ids) * [Encoding and Escaping](https://developerdocs.instructure.com/services/canvas/basics/file.object_ids#encoding-and-escaping) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # OAuth2 Endpoints | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#oauth2-endpoints) OAuth2 Endpoints ----------------------------------------------------------------------------------------------------------------------------------- circle-exclamation Developer keys issued after Oct 2015 generate tokens with a 1 hour expiration. Applications must use [refresh tokens](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#using-refresh-tokens) to generate new access tokens. * [GET login/oauth2/auth](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-oauth2-auth) * [POST login/oauth2/token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#post-login-oauth2-token) * [DELETE login/oauth2/token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#delete-login-oauth2-token) * [GET login/session\_token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-session-token) ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-oauth2-auth) GET login/oauth2/auth #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-https-less-than-canvas-install-url-greater-than-login-oauth2-auth-client_id-xxx-and-response_typ) GET https:///login/oauth2/auth?client\_id=XXX&response\_type=code&redirect\_uri=https://example.com/oauth\_complete&state=YYY&scope=%20%20 **Parameters** Parameter Required Description client\_id Required The client id for your registered application. response\_type Required The type of OAuth2 response requested. The only currently supported value is `code`. redirect\_uri Required The URL where the user will be redirected after authorization. The domain of this URL must match the domain of the redirect\_uri stored on the developer key, or it must be a subdomain of that domain. For native applications, currently the only supported value is `urn:ietf:wg:oauth:2.0:oob`, signifying that the credentials will be retrieved out-of-band using an embedded browser or other functionality. state Optional Your application can pass Canvas an arbitrary piece of state in this parameter, which will be passed back to your application in Step 2. It's strongly encouraged that your application pass a unique identifier in the state parameter, and then verify in Step 2 that the state you receive back from Canvas is the same expected value. Failing to do this opens your application to the possibility of logging the wrong person in, as [described herearrow-up-right](http://homakov.blogspot.com/2012/07/saferweb-most-common-oauth2.html) . scope Optional This can be used to specify what information the Canvas API access token will provide access to. Canvas API scopes may be found beneath their corresponding endpoints in the "resources" documentation pages. If the developer key does not require scopes and no scope parameter is specified, the access token will have access to all scopes. If the developer key does require scopes and no scope parameter is specified, Canvas will respond with "invalid\_scope." To successfully pass multiple scope values, the scope parameter is included once, with multiple values separated by spaces. Passing multiple scope parameters, as is common in other areas of Canvas, causes only the last value to be applied to the generated token. purpose Optional This can be used to help the user identify which instance of an application this token is for. For example, a mobile device application could provide the name of the device. force\_login Optional Set to '1' if you want to force the user to enter their credentials, even if they're already logged into Canvas. By default, if a user already has an active Canvas web session, they will not be asked to re-enter their credentials. unique\_id Optional Set to the user's username to be populated in the login form in the event that the user must authenticate. prompt Optional If set to `none`, Canvas will immediately redirect to the `redirect_uri`. If the caller has a valid session with a "remember me" token or a token from a trusted Developer Key, the redirect will contain a `code=XYZ` param. If the caller has no session, the redirect will contain an `error=login_required` param. If the caller has a session, but no "remember me" or trusted token, the redirect will contain an `error=interaction_required` param. ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#post-login-oauth2-token) POST login/oauth2/token See [Section 4.1.3arrow-up-right](http://tools.ietf.org/html/rfc6749#section-4.1.3) of the OAuth2 RFC for more information about this process. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#post-login-oauth2-token-1) POST /login/oauth2/token **Parameters** Parameter Required Description grant\_type Required Values currently supported: "authorization\_code", "refresh\_token", and "client\_credentials". client\_id Required for grant\_types: authorization\_code, refresh\_token The client id for your registered application. client\_secret Required for grant\_types: authorization\_code, refresh\_token The client secret for your registered application. redirect\_uri Required for grant\_types: authorization\_code, refresh\_token If a redirect\_uri was passed to the initial request in step 1, the same redirect\_uri must be given here. code Required for grant\_type: authorization\_code Required if grant\_type is authorization\_code. The code you received in a redirect response. refresh\_token Required for grant\_type: refresh\_token Required if grant\_type is refresh\_token. The refresh\_token you received in a redirect response. client\_assertion\_type Required for grant\_type: client\_credentials Currently the only supported value for this field is \`urn:ietf:params:oauth:client-assertion-type:jwt-bearer\`. client\_assertion Required for grant\_type: client\_credentials The signed jwt used to request an access token. Includes the value of Developer Key id as the sub claim of the jwt body. Should be signed by the private key of the stored public key on the DeveloperKey. scope Required for grant\_type: client\_credentials A list of scopes to be granted to the token. Currently only IMS defined scopes may be used. **Canvas API example responses** For grant\_type of code or refresh\_token: Parameter Description access\_token The OAuth2 Canvas API access token. token\_type The type of token that is returned. user A JSON object of canvas user id and user name. refresh\_token The OAuth2 refresh token. expires\_in Seconds until the access token expires. canvas\_region For hosted Canvas, the AWS region (e.g. us-east-1) in which the institution that provided this token resides. For local or open source Canvas, this will have a value of "unknown". This field is safe to ignore. When using grant\_type=code (ex: for Canvas API access): When using grant\_type=refresh\_token, the response will not contain a new refresh token since the same refresh token can be used multiple times: If scope=/auth/userinfo was specified in the [GET login/oauth2/auth](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-oauth2-auth) request (ex: when using Canvas as an authentication service) then the response that results from [POST login/oauth2/token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#post-login-oauth2-token) would be: **Examples using client\_credentials** When using grant\_type=client\_credentials (ex: [to access LTI Advantage Services](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-lti-advantage-services) ): **Example request** This request must be signed by an RSA256 private key with a public key that is configured on the developer key as described in [Step 1: Developer Key Setup](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#developer-key-setup) . Below is an example of the decoded client\_assertion JWT in the above request: NOTE: * the value of the sub claim should match the client\_id of the developer key in Canvas. * the value of the aud claim should contain either the domain of the Canvas account where the desired data resides, or the domain of the LTI 1.3 OIDC Auth endpoint, as described [here](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.lti_launch_overview#step-2) . * if the public key defined on the developer key is a JWK set (specified by an URL) the kid (key ID) value in the signed JWT header must match one of the public keys returned by the public key URL. **Example Response** Parameter Description access\_token The OAuth2 client\_credentials access token. token\_type The type of token that is returned. expires\_in Seconds until the access token expires. scope The scope or space delimited list of scopes granted for the access token. ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#delete-login-oauth2-token) DELETE login/oauth2/token If your application supports logout functionality, you can revoke your own access token. This is useful for security reasons, as well as removing your application from the list of tokens on the user's profile page. Simply make an authenticated request to the following endpoint by including an Authorization header or providing the access\_token as a request parameter. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#delete-login-oauth2-token-1) DELETE /login/oauth2/token **Parameters** Parameter Required Description expire\_sessions Optional Set this to '1' if you want to end all of the user's Canvas web sessions. Without this argument, the endpoint will leave web sessions intact. Additionally, if the user logged in to Canvas via a delegated authentication provider, and the provider supports Single Log Out functionality, the response will contain a forward\_url key. If you are still in control of the user's browsing session, it is recommended to then redirect them to this URL, in order to also log them out from where their session originated. Beware that it is unlikely that control will be returned to your application after this redirect. **Example responses** ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-session-token) GET login/session\_token If your application needs to begin a normal web session in order to access features not supported via API (such as quiz taking), you can use your API access token in order to get a time-limited URL that can be fed to a browser or web view to begin a new web session. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-session_token) GET /login/session\_token **Parameters** Parameter Required Description return\_to Optional An optional URL to begin the web session at. Otherwise the user will be sent to the dashboard. **Example responses** * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousOAuth2 Overviewchevron-left](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth) [NextDeveloper Keyschevron-right](https://developerdocs.instructure.com/services/canvas/oauth2/file.developer_keys) Last updated 4 months ago Was this helpful? * [OAuth2 Endpoints](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#oauth2-endpoints) * [GET login/oauth2/auth](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-oauth2-auth) * [POST login/oauth2/token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#post-login-oauth2-token) * [DELETE login/oauth2/token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#delete-login-oauth2-token) * [GET login/session\_token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-session-token) Was this helpful? sun-brightdesktopmoon Copy { "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "token_type": "Bearer", "user": {"id":42, "name": "Jimi Hendrix"}, "refresh_token": "tIh2YBWGiC0GgGRglT9Ylwv2MnTvy8csfGyfK2PqZmkFYYqYZ0wui4tzI7uBwnN2", "expires_in": 3600, "canvas_region": "us-east-1" } Copy { "access_token": "1/fFAGRNJru1FTz70BzhT3Zg", "token_type": "Bearer", "user": {"id":42, "name": "Jimi Hendrix"}, "expires_in": 3600 } Copy { "access_token": null, "token_type": "Bearer", "user":{"id": 42, "name": "Jimi Hendrix"} } Copy { "grant_type": "client_credentials", "client_assertion_type": "urn:ietf:params:oauth:client-assertion-type:jwt-bearer", "client_assertion": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjIwMTktMDYtMjFUMTQ6NTk6MzBaIn0.eyJpc3MiOiJodHRwczovL3d3dy5teS10b29sLmNvbSIsInN1YiI6Ilx1MDAzY2NsaWVudF9pZFx1MDAzZSIsImF1ZCI6Imh0dHA6Ly9cdTAwM2NjYW52YXNfZG9tYWluXHUwMDNlL2xvZ2luL29hdXRoMi90b2tlbiIsImlhdCI6MTU2MTc1MDAzMSwiZXhwIjoxNTYxNzUwNjMxLCJqdGkiOiJkZmZkYmRjZS1hOWYxLTQyN2ItOGZjYS02MDQxODIxOTg3ODMifQ.lUHCwDqx2ukKQ2vwoz_824IVcyq-rNdJKVpGUiJea5-Ybk_VfyKW5v0ky-4XTJrGHkDcj0T9J8qKfYbikqyetK44yXx1YGo-2Pn2GEZ26bZxCnuDUDhbqN8OZf4T8DnZsYP4OyhOseHERsHCzKF-SD2_Pk6ES5-Z8J55_aMyS3w3tl4nJtwsMm6FbMDp_FhSGE4xTwkBZ2KNM4JqkCwHGX_9KcpsPsHRFQjn9ysTeg-Qf7H2QFgFMFjsfQX-iSL_bQoC2npSz7rQ8awKMhCEYdMYZk2vVhQ7XQ8ysAyf3m1vlLbHjASpztcAB0lz_DJysT0Ep-Rh311Qf_vXHexjVA", "scope": "https://purl.imsglobal.org/spec/lti-ags/lineitem https://purl.imsglobal.org/spec/lti-ags/result/read" } Copy //Header { "typ": "JWT", "alg": "RS256", "kid": "2019-06-21T14:59:30Z" } //Payload { "iss": "https://www.my-tool.com", "sub": "", "aud": "https:///login/oauth2/token", "iat": 1561750031, "exp": 1561750631, "jti": "dffdbdce-a9f1-427b-8fca-604182198783" } Copy { "access_token" : "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ3d3cuZXhhbXBsZS5jb20iLCJpYXQiOiIxNDg1OTA3MjAwIiwiZXhwIjoiMTQ4NTkwNzUwMCIsImltc2dsb2JhbC5vcmcuc2VjdXJpdHkuc2NvcGUiOiJMdGlMaW5rU2V0dGluZ3MgU2NvcmUuaXRlbS5QVVQifQ.UWCuoD05KDYVQHEcciTV88YYtWWMwgb3sTbrjwxGBZA", "token_type" : "Bearer", "expires_in" : 3600, "scope" : "https://purl.imsglobal.org/spec/lti-ags/lineitem https://purl.imsglobal.org/spec/lti-ags/result/read" } Copy { "forward_url": "https://idp.school.edu/opaque_url" } Copy { "session_url": "https://canvas.instructure.com/opaque_url" } sun-brightdesktopmoon --- # Asset Collections | Instructure Developer Documentation Portal When there is a need to quickly identify and refer to a filtered collection of assets, the "Asset Collection" is what provides a solution. Asset Collection stores the `filters` object with a `name` and a `guid` as reference. * The "filters" is a JSON object that stores "assetType" and "facets". Searching filters are generated from this object to narrow down the result set the client wants to use. * The "name" identifies the asset collection in human readable format. * The "guid" identifies the asset collection in machine readable format. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#the-filters-object) The "filters" object --------------------------------------------------------------------------------------------------------------------------------------------- The "filters" object stores the filtering expression for the asset collection. This stores facets and asset types which helps to filter to only the desired assets. Here is a formal description about the `filters` object. For a practical explanation see the example below. * `filters` (object, required) - JSON API object for `filters` object containing various fields like: `assetType` and `facets`. * `assetType` (string) - The Asset type defines the Asset's structure and is setup by in Academic Benchmarks an Administrative User. * `facets` (array) - List of facets derived from the Asset Definition. * (object) * `label` (string) - Name of the facet. Derived from Asset Definition: `data[n].attributes.properties[m].label` * `id` (string) - Same as `label`. * `field` (object) - The field object for the property. Derived from Asset Definition: `data[n].attributes.properties[m].field`. * `name` (string) - The API-recognized name for the entity you are filtering by. This is the property you would use when asking for facets. * `id` (string) - API identifier for the field which uniquely identifies the entity being filtered by. This is the property you would use when constructing your filter statement as the key field. * `facet` (object) - The facets object for the property. Derived from Asset Definition: `data.[n].attributes.properties.[m].facet` * `name` (string) - The API Identifier for the human-readable property in the facets response. * `id` (GUID) - The API Identifier for the entity-unique property in the facets response. This is the property you would use when constructing your filter statement and thus must correspond with the values in this entity’s `field.id`. * `selectedFilters` (array) - The list of selected values for the queries. * (object) - This objects holds the elements to which the `facid.id` refers. * `data` (object) - The object details for this facet item. See the definition of the object for the specific facet for details, but they all have at least the `descr` and `guid`. * `descr` (string) - Facet value text. * `guid` (GUID) - Facet value GUID. * `code` (string) - Facet value code name. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#asset-filtering-expression) Asset filtering expression ----------------------------------------------------------------------------------------------------------------------------------------------------------- Filtering an asset query by a "field" and different "values" in AB API looks like this: With multiple fields it look like this: Similar filters are created from the `filters` object. The left side of the query is the same. On the right side the expressions divided by the `and` are generated from the `filters.facets` list elements. The `field_1` and `field_2` are defined by `field.id`. The "values" are those items in the `selectedFilters` object which have the object-path defined in the `facet.id`. If `facet.id == "a.b"` then the values will be `selectedFilters[i].a.b`. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#example-to-build-a-filter-expression-from-the-filters-object) Example to build a "filter expression" from the "filters" object ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Here is a `filters` object. Let's see how filter expression can be generated from it step-by-step: The left side of the expression starts with `filter[asset] =`. There are two elements in the `filters.facets` array, so there will be two expressions on the right side. For example expressions `expr_1` and `expr_2`. These are the basis of the filtering. The `expr_1` is built up from `filters.facets[0]` and the `expr_2` is built up from `filters.facets[1]`. Expressions are built up from a "field" and set of "values". The filter will give back those assets which have given the "values" on the given "field". Let's find the "field" values. In the JSON object the "field" is defined by `field.id`. Substitute these as "fields" into the filter expression. Let's find the "values". The variables' names that are holding the "values" are defined by the `facet.id`. The "values" are those items in the `selectedFilters` object which have the object-path defined in the `facet.id`. The variable for "values\_1" is `facet.id = "data.guid"`. Let's gather the values from `selectedFilters.data.guid` and generate the "values\_1". The variable for "values\_2" is `facet.id = "data.guid"`. Let's gather the values from `selectedFilters.data.guid` and generate the "values\_2". Finally substitute the "values" into the filter expression: This example will filter only those assets which are in the grade: "Kindergarten" or "9th Grade" and are in the subject: "Mathematics". [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#asset-collection) Asset Collection --------------------------------------------------------------------------------------------------------------------------------------- When there is a need to quickly identify and refer to a filtered collection of assets, the "Asset Collection" is what provides a solution. Asset Collection stores the `filters` object with a `name` and a `guid` as reference. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#list-all-asset-collections) List All Asset Collections * To **list** Asset Collections the partner has access to, send a GET to the endpoint. * To **find** an Asset Collection by exact name, send a GET to the endpoint with the `collection_name` parameter. This gives back only the case sensitive exact match if there is any. * To **search** Asset Collections by name, send a GET to the endpoint with the `search_collection_name` parameter. This search uses case insensitive partial matching. get https://api.abconnect.instructure.com/rest/v4.1/asset\_collections Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[asset\_collections\]stringOptional comma separated list of field names filter\[asset\_collections\]stringOptional an ODATA-like query string used to filter sort\[asset\_collections\]stringOptional a comma separated list of property names specifying the sort order of the returned results limitnumberOptional The page size for the response dataset. limit must be 100 or less. offsetnumberOptional How far into the dataset you are paging Responses chevron-right 200 OK application/json chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json get /asset\_collections HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#create-a-new-asset-collection) Create a new Asset Collection To create an Asset Collection within the AB Connects system, you send a POST request to the endpoint. The body of the POST contains the Asset Collection definition in JSON format. The response will be the same as a GET by GUID request for the created Asset Collection. See in the "Retrieving the Details of an Asset Collection". post https://api.abconnect.instructure.com/rest/v4.1/asset\_collections Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. Body application/jsonchevron-down application/json dataobjectRequired Show propertiesplus Responses chevron-right 201 Created application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobjectOptional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json chevron-right 409 Conflict application/json chevron-right 422 Unprocessable content application/json post /asset\_collections HTTPchevron-down HTTPcURLJavaScriptPython Test it 201 Created chevron-down [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#working-with-assets-collection) Working with Assets Collection ------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#retrieving-the-details-of-an-asset-collection) Retrieving the Details of an Asset Collection To get the Asset Collections you've created, call the endpoint with a GET while supplying the AB GUID for the Asset Collection. To retrieve the GUID, use the list and search functionality. get https://api.abconnect.instructure.com/rest/v4.1/asset\_collections/{guid} Path parameters guidstringRequired guid of specified asset collection Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[asset\_collections\]stringOptional comma separated list of field names Responses chevron-right 200 OK application/json chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json chevron-right 404 Entity not found application/json get /asset\_collections/{guid} HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#modifying-an-asset-collection) Modifying an Asset Collection To update an Asset Collection, send a PATCH to the Asset Collection URL (with GUID) sending JSON in the body similar to that in the create statement. The JSON body only needs to contain the attributes that need to be updated. You can update the `name`, `filters` or `advanced_search` fields for the Asset Collection. You can update only one of these or all. The response will contain the modified Asset Collection just as it would be in a GET by GUID request for the created Asset Collection. See in the "Retrieving Assets Collection". ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#deleting-an-asset-collection) Deleting an Asset Collection To delete an Asset Collection you've created, send a DELETE the endpoint while supplying the AB GUID for the Asset Collection. If you have the name for the Asset Collection but not the AB GUID, see the section on searching for Asset Collections. [PreviousAsset Definitionschevron-left](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions) [NextManaging and Predicting Relationshipschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/relationships) Last updated 6 months ago Was this helpful? * [The "filters" object](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#the-filters-object) * [Asset filtering expression](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#asset-filtering-expression) * [Example to build a "filter expression" from the "filters" object](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#example-to-build-a-filter-expression-from-the-filters-object) * [Asset Collection](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#asset-collection) * [List All Asset Collections](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#list-all-asset-collections) * [GET/asset\_collections](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#get-asset_collections) * [Create a new Asset Collection](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#create-a-new-asset-collection) * [POST/asset\_collections](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#post-asset_collections) * [Working with Assets Collection](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#working-with-assets-collection) * [Retrieving the Details of an Asset Collection](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#retrieving-the-details-of-an-asset-collection) * [GET/asset\_collections/{guid}](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#get-asset_collections-guid) * [Modifying an Asset Collection](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#modifying-an-asset-collection) * [Deleting an Asset Collection](https://developerdocs.instructure.com/services/ab-connect/reference/asset-collections#deleting-an-asset-collection) Was this helpful? sun-brightdesktopmoon Copy filter[asset] = field_1 in (value_A, value_B) Copy filter[asset] = field_1 in (value_A, value_B) and field_2 in (value_C, value_D) Copy "filters": { "assetType": "NLP_MHE", "facets": [\ {\ "label": "Grade",\ "id": "Grade",\ \ "field": {\ "name": "education_levels.grades",\ "id": "education_levels.grades.guid"\ },\ "facet": {\ "name": "data.descr",\ "id": "data.guid"\ },\ "selectedFilters": [\ {\ "data": {\ "descr": "Kindergarten",\ "guid": "F1F9FA12-3B53-11E0-A421-F4B24952E9DF",\ "code": "K",\ "seq": 20\ }\ },\ {\ "data": {\ "descr": "9th Grade",\ "guid": "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22",\ "code": "9",\ "seq": 20,\ }\ },\ ],\ },\ {\ "id": "Subject",\ "label": "Subject",\ "field": {\ "name": "disciplines.subjects",\ "id": "disciplines.subjects.ids"\ },\ "facet": {\ "name": "data.descr",\ "id": "data.guid"\ },\ "selectedFilters": [\ {\ "data": {\ "descr": "Mathematics",\ "guid": "495E9DFF-3B53-11E0-B042-C4B222F1FB2F",\ "code": "MATH"\ },\ "count": 2488\ }\ ]\ }\ ] } Copy filter[asset] = expr_1 and expr_2 Copy expr: field in (values) Copy facets[0].field.id = "education_levels.grades.guid"` facets[1].field.id = "disciplines.subjects.ids" Copy filter[asset] = education_levels.grades.guid in (values_1) and disciplines.subjects.ids in (values_2) Copy selectedFilters[0].data.guid = "F1F9FA12-3B53-11E0-A421-F4B24952E9DF" selectedFilters[1].data.guid = "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22" ==> values_1 = "F1F9FA12-3B53-11E0-A421-F4B24952E9DF", "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22" Copy selectedFilters[0].data.guid = "495E9DFF-3B53-11E0-B042-C4B222F1FB2F" ==> values_2 = "495E9DFF-3B53-11E0-B042-C4B222F1FB2F" Copy filter[asset] = education_levels.grades in ("F1F9FA12-3B53-11E0-A421-F4B24952E9DF", "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22") and disciplines.subjects.ids in ("495E9DFF-3B53-11E0-B042-C4B222F1FB2F") Copy GET /rest/v4.1/asset_collections?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text", "first": "text", "last": "text", "next": "text", "prev": "text" }, "meta": { "took": 1, "limit": 1, "count": 1, "offset": 1 }, "data": [\ {\ "guid": "text",\ "name": "text",\ "filters": {\ "ANY_ADDITIONAL_PROPERTY": "anything"\ },\ "advanced_search": {\ "ANY_ADDITIONAL_PROPERTY": "anything"\ }\ }\ ] } Copy POST /rest/v4.1/asset_collections?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Content-Type: application/json Accept: */* Content-Length: 58 { "data": { "name": "text", "filters": {}, "advanced_search": {} } } Copy { "links": { "self": "text" }, "meta": { "took": 1 }, "data": { "guid": "text", "name": "text", "filters": { "ANY_ADDITIONAL_PROPERTY": "anything" }, "advanced_search": { "ANY_ADDITIONAL_PROPERTY": "anything" } } } Copy GET /rest/v4.1/asset_collections/{guid}?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text" }, "meta": { "took": 1 }, "data": { "guid": "text", "name": "text", "filters": { "ANY_ADDITIONAL_PROPERTY": "anything" }, "advanced_search": { "ANY_ADDITIONAL_PROPERTY": "anything" } } } sun-brightdesktopmoon --- # Events | Instructure Developer Documentation Portal Standards evolve over time. An authority may make a major update to their Standards document. In this case, an authority re-issues an updated document that totally replaces the Standards of the past. This results in a new document being added to your license. Alternately, an authority may modify, remove or add individual Standards within the current document. If your organization is caching Standards data, it is important that you keep your cache fresh. While it is possible to purge your cache and retrieve the entire set of Standards periodically, that is inefficient and does not support the maintenance of alignments and other related data. It is more efficient and useful to request differential updates. With AB Connect, you do this using the `events` endpoint. In addition to changes to Standards themselves, the `events` endpoint exposes changes to your access to Standards. Your access can change due to licensing changes or configuration of which Standards you have opted to have delivered. For the context of this documentation, we will refer to Standards as "deliverable" regardless of whether the changes were due to license or configuration changes because Events do not treat the various sources of the change differently. For information on changing your licensing or delivery, contact [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#cdacafbeb8bdbda2bfb98da4a3beb9bfb8aeb9b8bfa8e3aea2a0f2beb8afa7a8aeb9f08c8fe8fffd8ea2a3a3a8aeb9e8fffd9cb8a8beb9a4a2a3e8fffda2bfe8fffd8ea2a0a0a8a3b9e8fffde8fff5bbf9e3fce8fffd8c9d84e8fff4) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/events#delivery-related-events-and-the-interaction-between-deliverability-and-change-events) Delivery Related Events And the Interaction Between Deliverability And Change Events -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- When a document is added to your delivery, you will receive an Event with `target` set to `document` and `change_type` set to `added`. This Event indicates that you should request and download the Standards related to the specified document. E.g. you may receive an Event that looks something like: Copy ... "data": { "id": "0ae17409-38fd-4e26-809d-03a309139be2", "type": "events", "attributes": { "seq": 12354, "date_utc": "2017-11-12 00:00:00", "change_type": "added", "target": "document", "section_guid": "721CFFCC-9BDD-11E6-ABFB-8C24CDC8CA83", "document_guid": "351CFFCC-9BDD-11E6-ABFB-8C24CDC8CA83", "affected_properties": [] }, "relationships": { "standard": { "data": { } }, "nondeliverable_standard": { "data": { } }, "deleted_standard": { "data": { } } } } ... That would initiate a process that requests Standards related to that document: Similarly, if you receive an Event with `change_type` set to `removed`, your license requires that you purge the related document and references from your system. Notes: * Delivery Events can occur on sections as well as documents. * Events that occur on Standards that are not delivered to you are not visible to you. The filtering of Events by deliverability is time sensitive so you will not receive Events that occurred on Standards that were not deliverable to you at the time of the Event, even if the Standard is deliverable at the time of the call. * Since Standards changes are delivered based on the status at the time of the Event, it is possible for you to receive Events on Standards that you no longer have access to. So if you receive a change Event for a Standard and your change management process tries to look up the details of the Standard but doesn't have access, silently skip the process because a `removed` Event is somewhere later in the queue. For example: 1. You are licensed to Standard A. 2. You sync up all changes. 3. Standard A changes so an Event is created and you have access to it. 4. You remove Standard A from your delivery. 5. You sync up changes. 6. You get a change Event for Standard A but you no longer have access to it. 7. You get a change Event to remove Standard A. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/events#accurate-syncing) Accurate Syncing ---------------------------------------------------------------------------------------------------------------------------- You can request individual Events but more commonly you would request Events that have occurred since your last sync. In previous versions, the filter for requesting updates focused the filter on the date. However, this can be problematic due to concurrency and race conditions. Now, AB Connect gives each Event a sequence number to ensure no Events are missed. After each refresh, store the sequence number of the last Event you received. Future requests should request Events with sequence numbers greater than the last one you received. E.g. if the last Event you received had a sequence number of 28974, the request may look like: A couple of important notes about the sequence number: * Sequence numbers will not appear incremental. Each Event in the system gets a unique number and since the Events include partner specific Events (like changes in license and Standards delivery settings), Events received by any individual partner will not have incremental numbers. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/events#using-events-as-a-new-partner) Using Events As A New Partner ------------------------------------------------------------------------------------------------------------------------------------------------------ New partners can use `seq GT 0` to start. Since you will not receive Events that occur before your license was active, you won't be flooded with historical data. The first Events you will see will be Events to add documents (and possibly sections). You can use this approach to do the initial download of the Standards into your cache. However, if you've already downloaded all of the Standards you have access to, you will want to skip this first set of Events. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/events#developing-a-workflow) Developing a Workflow -------------------------------------------------------------------------------------------------------------------------------------- One of the advantages of using Events is that you can build a workflow around them. You may want to consider caching Events before acting on them in your system. That will allow you to put the changes into an editorial workflow so you can make decisions for accurately updating alignments and other relationships. For example, if you receive an Event indicating a Standard has been deleted, you may want to flag content aligned to that Standard as being in need of an alignment review. Unlike Standard change Events, deliverability Events should be acted upon immediately to ensure your system is in line with license agreements. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/events#retrieving-events) Retrieving Events ------------------------------------------------------------------------------------------------------------------------------ Using filtering, it is possible to retrieve sets of Events. These Events are returned in an array of Events objects. See the Introduction for an explanation on [filtering](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) . This section covers the specifics of using these parameters with the Events resource. A note on filtering Events. Events can be filtered on the properties of the Event object AND on the same subset of properties of the Standards that are listed in the section on [Filtering Resources by Properties on Related Resources](https://developerdocs.instructure.com/services/ab-connect/introduction/related-objects#filtering-resources-by-properties-on-related-resources) . The exceptions are the Event `affected_properties.new_value` and `affected_properties.previous_value` fields since those are of variant types. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/events#finding-series-of-events) Finding Series of Events get https://api.abconnect.instructure.com/rest/v4.1/events Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[events\]stringOptional comma separated list of field names filter\[events\]stringOptional an ODATA-like query string used to filter sort\[events\]stringOptional a comma separated list of property names specifying the sort order of the returned results facetstringOptional A comma separated list of facet names that you are requesting the options on. facet\_summarystringOptional A comma separated list of facet names for which you are requesting summary information. includestringOptional A comma separated list of resource names that will be returned in the response. limitnumberOptional The page size for the response dataset. limit must be 100 or less. offsetnumberOptional How far into the dataset you are paging Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobject\[\]Optional Show propertiesplus includedobject\[\]Optional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json get /events HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [PreviousStandard Collectionschevron-left](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections) [NextTopicschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/topics) Last updated 6 months ago Was this helpful? * [Delivery Related Events And the Interaction Between Deliverability And Change Events](https://developerdocs.instructure.com/services/ab-connect/reference/events#delivery-related-events-and-the-interaction-between-deliverability-and-change-events) * [Accurate Syncing](https://developerdocs.instructure.com/services/ab-connect/reference/events#accurate-syncing) * [Using Events As A New Partner](https://developerdocs.instructure.com/services/ab-connect/reference/events#using-events-as-a-new-partner) * [Developing a Workflow](https://developerdocs.instructure.com/services/ab-connect/reference/events#developing-a-workflow) * [Retrieving Events](https://developerdocs.instructure.com/services/ab-connect/reference/events#retrieving-events) * [Finding Series of Events](https://developerdocs.instructure.com/services/ab-connect/reference/events#finding-series-of-events) * [GET/events](https://developerdocs.instructure.com/services/ab-connect/reference/events#get-events) Was this helpful? sun-brightdesktopmoon Copy `https://api.abconnect.instructure.com/rest/v4.1/standards?filter[standards]=document.id EQ '351CFFCC-9BDD-11E6-ABFB-8C24CDC8CA83'` Copy `https://api.abconnect.instructure.com/rest/v4.1/events?filter[events]=seq GT 28974&sort[events]=seq` Copy GET /rest/v4.1/events?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text", "first": "text", "last": "text", "next": "text", "prev": "text" }, "meta": { "took": 1, "limit": 1, "count": 1, "offset": 1, "facets": [\ {\ "count": 1,\ "facet": "text",\ "details": [\ {\ "data": {\ "descr": "text",\ "code": "text",\ "guid": "text"\ },\ "count": 1\ }\ ]\ }\ ] }, "data": [\ {\ "attributes": {\ "document_guid": "text",\ "guid": "text",\ "date_utc": "text",\ "affected_properties": [\ {\ "name": "text",\ "previous_value": "text",\ "new_value": "text"\ }\ ],\ "section_guid": "text",\ "seq": 1,\ "target": "standard",\ "change_type": "text"\ },\ "type": "text",\ "id": "text",\ "relationships": {\ "standard": {\ "data": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ },\ "deleted_standard": {\ "data": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ },\ "nondeliverable_standard": {\ "data": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ }\ }\ }\ ], "included": [\ {\ "type": "text",\ "relationships": {\ "related_courses": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakout_origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "ancestors": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "topics": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peers": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakouts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "crosswalks": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaced_by": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaces": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "children": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "concepts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peer_derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "parent": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "course_standards": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "contexts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "associations": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ },\ "attributes": {\ "seq": 1,\ "captured_by": "text",\ "utilizations": [\ {\ "type": "alignable",\ "guid": "text"\ }\ ],\ "uri": "text",\ "statement": {\ "addendums": [\ {\ "seq": 1,\ "add_context": "Y",\ "descr": "text",\ "position": "before"\ }\ ],\ "combined_descr": "text",\ "descr": "text"\ },\ "level": 1,\ "date_modified_utc": "text",\ "status": "active",\ "legends": [\ {\ "symbol_position": "before",\ "symbol": "text",\ "descr": "text"\ }\ ],\ "standard_type": "organizational",\ "label": "text",\ "disciplines": {\ "strands": [\ {\ "descr": "text",\ "guid": "text"\ }\ ],\ "ece_domains": [\ {\ "guid": "text",\ "code": "text",\ "descr": "text"\ }\ ],\ "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ],\ "genres": [\ {\ "code": "text",\ "guid": "text",\ "descr": "text"\ }\ ]\ },\ "alt_identifiers": [\ {\ "type": "GUID",\ "source": "canonical",\ "id": "text"\ }\ ],\ "date_deleted_utc": "text",\ "in_list": "Y",\ "guid": "text",\ "key_ideas": [\ {\ "guid": "text",\ "concepts": [\ {\ "descr": "text",\ "guid": "text"\ }\ ]\ }\ ],\ "document": {\ "implementation_year": "text",\ "descr": "text",\ "date_modified_utc": "text",\ "source_url": "text",\ "assessment_year": "text",\ "publication": {\ "descr": "text",\ "source_url": "text",\ "extended_descr": "text",\ "regions": [\ {\ "guid": "text",\ "descr": "text",\ "type": "country",\ "code": "text"\ }\ ],\ "authorities": [\ {\ "guid": "text",\ "descr": "text",\ "acronym": "text"\ }\ ],\ "acronym": "text",\ "publication_type": "standard",\ "guid": "text"\ },\ "guid": "text",\ "obsolete_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ },\ "adopt_year": "text",\ "revision_year": "text"\ },\ "deepest": "Y",\ "number": {\ "root_enhanced": "text",\ "enhanced": "text",\ "prefix_enhanced": "text",\ "raw": "text",\ "alternate": "text"\ },\ "education_levels": {\ "ece_ages": [\ {\ "guid": "text",\ "descr": "text",\ "seq": 1\ }\ ],\ "grades": [\ {\ "guid": "text",\ "descr": "text",\ "code": "text",\ "seq": 1\ }\ ]\ },\ "section": {\ "guid": "text",\ "seq": 1,\ "date_modified_utc": "text",\ "descr": "text",\ "implementation_year": "text",\ "number": "text",\ "assessment_year": "text",\ "revision_year": "text",\ "label": "text",\ "obsolete_year": "text",\ "adopt_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ }\ },\ "extensions": [\ {\ "type": "reference",\ "guid": "text",\ "descr": "text"\ }\ ],\ "has_list": "text",\ "topic_organizer": "text"\ },\ "id": "text"\ }\ ] } sun-brightdesktopmoon --- # Standard Collections | Instructure Developer Documentation Portal When there is a need to quickly identify and refer to a filtered collection of standards, the "Standard Collection" is what provides a solution. Standard Collection stores the `filters` object with a `name` and a `guid` as reference. * The "filters" is a JSON object that stores "filters (standard hierarchy)", "globalFilters". Searching filters are generated from this object to narrow down the result set the client wants to use. * The "name" identifies the standard collection in human readable format. * The "guid" identifies the standard collection in machine readable format. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#the-filters-object) The "filters" object ------------------------------------------------------------------------------------------------------------------------------------------------ The "filters" object stores the filtering expression for the standard collection. This stores standard hierarchy and global filters which helps to filter to only the desired standards. Here is a formal description about the `filters` object. For a practical explanation see the example below. * `filters` (object, required) - JSON API object for `filters` object containing various fields like: "filters (standard hierarchy)", "globalFilters" * `filters` (object) - Standard hierarchy * `key` (string) - Standard hierarchy element ID (guid or "root") * `value` (object) - Standard hierarchy element parameters * `collections` (array) - Array of GUIDs for the elements which are one level below in the hierarchy. * `id` (GUID) - GUID of the element in the hierarchy. (Same as the `key`.) * `parentId` (GUID) - GUID for the element which is one level above in the hierarchy. * `state` (string) - State is saying if the item element in the hierarchy is selected or not. Values can be: "checked" `[+]`, "indeterminate" `[-]`, "unchecked" `[ ]` * `type` (string) - Type of position in the hierarchy. Values in hierarchical order: "region" > "publication" > "document" > "section" > "standard". * `globalFilters` (object) - Standard global filters: filtering by standard facets * `key` (string) - Standard facet description. (Eg: `"document.publication.regions":`) * `value` (object) - Standard facet parameters * `guid` (GUID) - GUID of the element in the hierarchy. (Eg.: `"A832862C-901A-11DF-A622-0C319DFF4B22"`) * `name` (text) - Value of the facet parameter. (Eg.: `"California"`) [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#example-to-build-a-filter-expression-from-the-filters-object) Example to build a "filter expression" from the "filters" object -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Here is a `filters` object. Let's see how filter expression can be generated from it step-by-step: The left side of the expression starts with `filter[asset] =`. There are two elements in the `filters.facets` array, so there will be two expressions on the right side. For example expressions `expr_1` and `expr_2`. These are the basis of the filtering. The `expr_1` is built up from `filters.facets[0]` and the `expr_2` is built up from `filters.facets[1]`. Expressions are built up from a "field" and set of "values". The filter will give back those assets which have given the "values" on the given "field". Let's find the "field" values. In the JSON object the "field" is defined by `field.id`. Substitute these as "fields" into the filter expression. Let's find the "values". The variables' names that are holding the "values" are defined by the `facet.id`. The "values" are those items in the `selectedFilters` object which have the object-path defined in the `facet.id`. The variable for "values\_1" is `facet.id = "data.guid"`. Let's gather the values from `selectedFilters.data.guid` and generate the "values\_1". The variable for "values\_2" is `facet.id = "data.guid"`. Let's gather the values from `selectedFilters.data.guid` and generate the "values\_2". Finally substitute the "values" into the filter expression: This example will filter only those assets which are in the grade: "Kindergarten" or "9th Grade" and are in the subject: "Mathematics". To get the available facets for standards check the `facet_summary` at [facets](https://developerdocs.instructure.com/services/ab-connect/introduction/facets) for details. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#standard-collection) Standard Collection ------------------------------------------------------------------------------------------------------------------------------------------------ When there is a need to quickly identify and refer to a filtered collection of standards, the "Standard Collection" is what provides a solution. Standard Collection stores the `filters` object `name` and a `guid` as reference. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#list-all-standard-collections) List All Standard Collections * To **list** Standard Collections the partner has access to, send a GET to the endpoint. * To **find** a Standard Collection by exact name, send a GET to the endpoint with the `collection_name` parameter. This gives back only the case sensitive exact match if there is any. * To **search** Standard Collections by name, send a GET to the endpoint with the `search_collection_name` parameter. This search uses case insensitive partial matching. get https://api.abconnect.instructure.com/rest/v4.1/standard\_collections Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[standard\_collections\]stringOptional comma separated list of field names filter\[standard\_collections\]stringOptional an ODATA-like query string used to filter sort\[standard\_collections\]stringOptional a comma separated list of property names specifying the sort order of the returned results limitnumberOptional The page size for the response dataset. limit must be 100 or less. offsetnumberOptional How far into the dataset you are paging Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobject\[\]Optional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json chevron-right 404 Entity not found application/json get /standard\_collections HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#create-a-new-standard-collection) Create a new Standard Collection To create a Standard Collection within the AB Connects system, you send a POST request to the endpoint. The body of the POST contains the Standard Collection definition in JSON format. The response will be the same as a GET by GUID request for the created Standard Collection. post https://api.abconnect.instructure.com/rest/v4.1/standard\_collections Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. Body application/jsonchevron-down application/json dataobjectRequired Show propertiesplus Responses chevron-right 201 Created application/json post /standard\_collections HTTPchevron-down HTTPcURLJavaScriptPython Test it 201 Created [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#working-with-standards-collection) Working with Standards Collection ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#retrieving-the-details-of-a-standard-collection) Retrieving the Details of a Standard Collection To get the Standard Collections you've created, call the endpoint with a GET while supplying the AB GUID for the Standard Collection. To retrieve the GUID, use the list and search functionality. get https://api.abconnect.instructure.com/rest/v4.1/standard\_collections/{guid} Path parameters guidstringRequired guid of specified standard collection Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[standard\_collections\]stringOptional comma separated list of field names Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobjectOptional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json chevron-right 409 Conflict application/json chevron-right 422 Unprocessable content application/json get /standard\_collections/{guid} HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#modifying-a-standard-collection) Modifying a Standard Collection To update a Standard Collection, send a PATCH to the Standard Collection URL (with GUID) sending JSON in the body similar to that in the create statement. The JSON body only needs to contain the attributes that need to be updated. You can update the `name` or `filters` fields for the Standard Collection. You can update only one of these or all. The response will contain the modified Standard Collection just as it would be in a GET by GUID request for the created Standard Collection. patch https://api.abconnect.instructure.com/rest/v4.1/standard\_collections/{guid} Path parameters guidstringRequired guid of specified standard collection Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. Body application/jsonchevron-down application/json dataany ofRequired Show propertiesplus Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobjectOptional Show propertiesplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json chevron-right 404 Entity not found application/json chevron-right 422 Unprocessable content application/json patch /standard\_collections/{guid} HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#deleting-a-standard-collection) Deleting a Standard Collection To delete a Standard Collection you've created, send a DELETE the endpoint while supplying the AB GUID for the Standard Collection. If you have the name for the Standard Collection but not the AB GUID, see the section on searching for Standard Collections. delete https://api.abconnect.instructure.com/rest/v4.1/standard\_collections/{guid} Path parameters guidstringRequired guid of specified standard collection Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. Responses chevron-right 200 OK application/json metaobjectOptional Show propertiesplus chevron-right 401 Authentication Error application/json chevron-right 403 Unauthorized application/json chevron-right 404 Entity not found application/json delete /standard\_collections/{guid} HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [PreviousStandardschevron-left](https://developerdocs.instructure.com/services/ab-connect/reference/standards) [NextEventschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/events) Last updated 6 months ago Was this helpful? * [The "filters" object](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#the-filters-object) * [Example to build a "filter expression" from the "filters" object](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#example-to-build-a-filter-expression-from-the-filters-object) * [Standard Collection](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#standard-collection) * [List All Standard Collections](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#list-all-standard-collections) * [GET/standard\_collections](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#get-standard_collections) * [Create a new Standard Collection](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#create-a-new-standard-collection) * [POST/standard\_collections](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#post-standard_collections) * [Working with Standards Collection](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#working-with-standards-collection) * [Retrieving the Details of a Standard Collection](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#retrieving-the-details-of-a-standard-collection) * [GET/standard\_collections/{guid}](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#get-standard_collections-guid) * [Modifying a Standard Collection](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#modifying-a-standard-collection) * [PATCH/standard\_collections/{guid}](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#patch-standard_collections-guid) * [Deleting a Standard Collection](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#deleting-a-standard-collection) * [DELETE/standard\_collections/{guid}](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections#delete-standard_collections-guid) Was this helpful? sun-brightdesktopmoon Copy "filters": { "assetType": "NLP_MHE", "facets": [\ {\ "label": "Grade",\ "id": "Grade",\ \ "field": {\ "name": "education_levels.grades",\ "id": "education_levels.grades.guid"\ },\ "facet": {\ "name": "data.descr",\ "id": "data.guid"\ },\ "selectedFilters": [\ {\ "data": {\ "descr": "Kindergarten",\ "guid": "F1F9FA12-3B53-11E0-A421-F4B24952E9DF",\ "code": "K",\ "seq": 20\ }\ },\ {\ "data": {\ "descr": "9th Grade",\ "guid": "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22",\ "code": "9",\ "seq": 20,\ }\ },\ ],\ },\ {\ "id": "Subject",\ "label": "Subject",\ "field": {\ "name": "disciplines.subjects",\ "id": "disciplines.subjects.ids"\ },\ "facet": {\ "name": "data.descr",\ "id": "data.guid"\ },\ "selectedFilters": [\ {\ "data": {\ "descr": "Mathematics",\ "guid": "495E9DFF-3B53-11E0-B042-C4B222F1FB2F",\ "code": "MATH"\ },\ "count": 2488\ }\ ]\ }\ ] } Copy filter[asset] = expr_1 and expr_2 Copy expr: field in (values) Copy facets[0].field.id = "education_levels.grades.guid"` facets[1].field.id = "disciplines.subjects.ids" Copy filter[asset] = education_levels.grades.guid in (values_1) and disciplines.subjects.ids in (values_2) Copy selectedFilters[0].data.guid = "F1F9FA12-3B53-11E0-A421-F4B24952E9DF" selectedFilters[1].data.guid = "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22" ==> values_1 = "F1F9FA12-3B53-11E0-A421-F4B24952E9DF", "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22" Copy selectedFilters[0].data.guid = "495E9DFF-3B53-11E0-B042-C4B222F1FB2F" ==> values_2 = "495E9DFF-3B53-11E0-B042-C4B222F1FB2F" Copy filter[asset] = education_levels.grades in ("F1F9FA12-3B53-11E0-A421-F4B24952E9DF", "ABBAABBA-ACDC-ACDC-B042-495E9DFF4B22") and disciplines.subjects.ids in ("495E9DFF-3B53-11E0-B042-C4B222F1FB2F") Copy GET /rest/v4.1/standard_collections?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text", "first": "text", "last": "text", "next": "text", "prev": "text" }, "meta": { "took": 1, "limit": 1, "count": 1, "offset": 1 }, "data": [\ {\ "guid": "text",\ "name": "text",\ "filters": {\ "ANY_ADDITIONAL_PROPERTY": "anything"\ },\ "advanced_search": {\ "ANY_ADDITIONAL_PROPERTY": "anything"\ }\ }\ ] } Copy POST /rest/v4.1/standard_collections?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Content-Type: application/json Accept: */* Content-Length: 58 { "data": { "name": "text", "filters": {}, "advanced_search": {} } } Copy { "links": { "self": "text" }, "meta": { "took": 1 }, "data": { "guid": "text", "name": "text", "filters": { "ANY_ADDITIONAL_PROPERTY": "anything" }, "advanced_search": { "ANY_ADDITIONAL_PROPERTY": "anything" } } } Copy GET /rest/v4.1/standard_collections/{guid}?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text" }, "meta": { "took": 1 }, "data": { "guid": "text", "name": "text", "filters": { "ANY_ADDITIONAL_PROPERTY": "anything" }, "advanced_search": { "ANY_ADDITIONAL_PROPERTY": "anything" } } } Copy PATCH /rest/v4.1/standard_collections/{guid}?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Content-Type: application/json Accept: */* Content-Length: 72 { "data": { "guid": "text", "name": "text", "filters": {}, "advanced_search": {} } } Copy { "links": { "self": "text" }, "meta": { "took": 1 }, "data": { "guid": "text", "name": "text", "filters": { "ANY_ADDITIONAL_PROPERTY": "anything" }, "advanced_search": { "ANY_ADDITIONAL_PROPERTY": "anything" } } } Copy DELETE /rest/v4.1/standard_collections/{guid}?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "meta": { "took": 1 } } sun-brightdesktopmoon --- # Topics | Instructure Developer Documentation Portal The Topics resource can be used to access the Academic Benchmarks Topic Taxonomy and related metadata. The API provides a simple integration point, eliminates the need to maintain a copy of the taxonomy locally and provides the foundation for additional connected metadata. Use of the API ensures the most current taxonomy is available to your application. One of the benefits of AB Connect is the ability to navigate relationships between Topics and Standards. Topics can also be related to other Topics by the nature of their position in the hierarchy of the Topic Taxonomy (parent/child). Retrieving related Standards and Topics is done in a similar fashion as attributes, but they are contained in the JSON API relationships response. Note that due to the JSON API standard, only the type and ID are returned in the relationship data. Keep in mind that the JSON API ID is the same as the AB GUID for these entities. If you'd like to retrieve the data of the related Standards or Topics, use the `include` parameter. Topics can also be related to Assets. Note that if a Topic is related to an Asset, Standards related to that same Topic automatically become related to the Asset as "predicted" (and vice versa). Relationships between Topics and Assets are managed through the Asset endpoint. See the documentation on the [Asset endpoint](https://developerdocs.instructure.com/services/ab-connect/reference/assets) for details. All calls against the Topics resource must be implemented as HTTP GET requests, and must include proper [Partner Authentication Credentials](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication) . Note that the Academic Benchmarks Topic Taxonomy is licensed separately. If your credentials are correct and you are still receiving a 401 error (or no results), check with [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#87e6e5f4f2f7f7e8f5f3c7eee9f4f3f5f2e4f3f2f5e2a9e4e8eab8f4f2e5ede2e4f3bac6c5a2b5b7c4e8e9e9e2e4f3a2b5b7d6f2e2f4f3eee8e9a2b5b7e8f5a2b5b7c4e8eaeae2e9f3a2b5b7a2b5bff1b3a9b6a2b5b7c6d7cea2b5be) to ensure you are licensed for Topics. [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/topics#single-topic) Single Topic -------------------------------------------------------------------------------------------------------------------- In its simplest form, you are able to retrieve the details of a specific Topic by appending the AB GUID to the path portion of the URL. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/topics#fetching-a-topic) Fetching a Topic get https://api.abconnect.instructure.com/rest/v4.1/topics/{guid} Path parameters guidstringRequired guid of specified topic Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[topics\]stringOptional comma separated list of field names includestringOptional A comma separated list of resource names that will be returned in the response. Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobjectOptional Show propertiesplus includedone of\[\]Optional Show available itemsplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json chevron-right 404 Entity not found application/json get /topics/{guid} HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/topics#searching-for-topics) Searching for Topics ------------------------------------------------------------------------------------------------------------------------------------ Using filtering and facets, it is possible to retrieve sets of Topics that match specific criteria. These Topics are returned in an array of Topics objects. See the Introduction for an explanation on [filtering](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) and the use of [facets](https://developerdocs.instructure.com/services/ab-connect/introduction/facets) . This section covers the specifics of using these parameters with the Topics resource. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/topics#finding-sets-of-topics) Finding Sets of Topics get https://api.abconnect.instructure.com/rest/v4.1/topics Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[topics\]stringOptional comma separated list of field names filter\[topics\]stringOptional an ODATA-like query string used to filter sort\[topics\]stringOptional a comma separated list of property names specifying the sort order of the returned results facetstringOptional A comma separated list of facet names that you are requesting the options on. facet\_summarystringOptional A comma separated list of facet names for which you are requesting summary information. includestringOptional A comma separated list of resource names that will be returned in the response. limitnumberOptional The page size for the response dataset. limit must be 100 or less. offsetnumberOptional How far into the dataset you are paging Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobject\[\]Optional Show propertiesplus includedone of\[\]Optional Show available itemsplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json get /topics HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [PreviousEventschevron-left](https://developerdocs.instructure.com/services/ab-connect/reference/events) [NextConceptschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/concepts) Last updated 6 months ago Was this helpful? * [Single Topic](https://developerdocs.instructure.com/services/ab-connect/reference/topics#single-topic) * [Fetching a Topic](https://developerdocs.instructure.com/services/ab-connect/reference/topics#fetching-a-topic) * [GET/topics/{guid}](https://developerdocs.instructure.com/services/ab-connect/reference/topics#get-topics-guid) * [Searching for Topics](https://developerdocs.instructure.com/services/ab-connect/reference/topics#searching-for-topics) * [Finding Sets of Topics](https://developerdocs.instructure.com/services/ab-connect/reference/topics#finding-sets-of-topics) * [GET/topics](https://developerdocs.instructure.com/services/ab-connect/reference/topics#get-topics) Was this helpful? sun-brightdesktopmoon Copy GET /rest/v4.1/topics/{guid}?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text" }, "meta": { "took": 1 }, "data": { "type": "text", "id": "text", "relationships": { "parent": { "data": { "id": "text", "type": "text" }, "links": { "related": "text" } }, "children": { "data": [\ {\ "data": {\ "id": "text",\ "type": "text"\ }\ }\ ], "links": { "related": "text" } }, "standards": { "links": { "last": "text", "related": "text", "next": "text" }, "data": [\ {\ "id": "text",\ "type": "text"\ }\ ] } }, "attributes": { "date_modified_utc": "text", "disciplines": { "subjects": [\ {\ "descr": "text",\ "code": "text",\ "guid": "text"\ }\ ] }, "status": "active", "guid": "text", "document": { "date_modified_utc": "text", "guid": "text", "revision_year": "text", "adopt_year": "text", "descr": "text" }, "seq": 1, "level": 1, "section": { "descr": "text", "date_modified_utc": "text", "seq": 1, "guid": "text" }, "uri": "text", "descr": "text", "education_levels": { "grades": [\ {\ "descr": "text",\ "guid": "text",\ "code": "text",\ "seq": 1\ }\ ] } } }, "included": [\ {\ "type": "text",\ "relationships": {\ "related_courses": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakout_origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "ancestors": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "topics": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peers": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakouts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "crosswalks": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaced_by": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaces": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "children": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "concepts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peer_derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "parent": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "course_standards": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "contexts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "associations": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ },\ "attributes": {\ "seq": 1,\ "captured_by": "text",\ "utilizations": [\ {\ "type": "alignable",\ "guid": "text"\ }\ ],\ "uri": "text",\ "statement": {\ "addendums": [\ {\ "seq": 1,\ "add_context": "Y",\ "descr": "text",\ "position": "before"\ }\ ],\ "combined_descr": "text",\ "descr": "text"\ },\ "level": 1,\ "date_modified_utc": "text",\ "status": "active",\ "legends": [\ {\ "symbol_position": "before",\ "symbol": "text",\ "descr": "text"\ }\ ],\ "standard_type": "organizational",\ "label": "text",\ "disciplines": {\ "strands": [\ {\ "descr": "text",\ "guid": "text"\ }\ ],\ "ece_domains": [\ {\ "guid": "text",\ "code": "text",\ "descr": "text"\ }\ ],\ "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ],\ "genres": [\ {\ "code": "text",\ "guid": "text",\ "descr": "text"\ }\ ]\ },\ "alt_identifiers": [\ {\ "type": "GUID",\ "source": "canonical",\ "id": "text"\ }\ ],\ "date_deleted_utc": "text",\ "in_list": "Y",\ "guid": "text",\ "key_ideas": [\ {\ "guid": "text",\ "concepts": [\ {\ "descr": "text",\ "guid": "text"\ }\ ]\ }\ ],\ "document": {\ "implementation_year": "text",\ "descr": "text",\ "date_modified_utc": "text",\ "source_url": "text",\ "assessment_year": "text",\ "publication": {\ "descr": "text",\ "source_url": "text",\ "extended_descr": "text",\ "regions": [\ {\ "guid": "text",\ "descr": "text",\ "type": "country",\ "code": "text"\ }\ ],\ "authorities": [\ {\ "guid": "text",\ "descr": "text",\ "acronym": "text"\ }\ ],\ "acronym": "text",\ "publication_type": "standard",\ "guid": "text"\ },\ "guid": "text",\ "obsolete_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ },\ "adopt_year": "text",\ "revision_year": "text"\ },\ "deepest": "Y",\ "number": {\ "root_enhanced": "text",\ "enhanced": "text",\ "prefix_enhanced": "text",\ "raw": "text",\ "alternate": "text"\ },\ "education_levels": {\ "ece_ages": [\ {\ "guid": "text",\ "descr": "text",\ "seq": 1\ }\ ],\ "grades": [\ {\ "guid": "text",\ "descr": "text",\ "code": "text",\ "seq": 1\ }\ ]\ },\ "section": {\ "guid": "text",\ "seq": 1,\ "date_modified_utc": "text",\ "descr": "text",\ "implementation_year": "text",\ "number": "text",\ "assessment_year": "text",\ "revision_year": "text",\ "label": "text",\ "obsolete_year": "text",\ "adopt_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ }\ },\ "extensions": [\ {\ "type": "reference",\ "guid": "text",\ "descr": "text"\ }\ ],\ "has_list": "text",\ "topic_organizer": "text"\ },\ "id": "text"\ }\ ] } Copy GET /rest/v4.1/topics?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text", "first": "text", "last": "text", "next": "text", "prev": "text" }, "meta": { "took": 1, "limit": 1, "count": 1, "offset": 1, "facets": [\ {\ "count": 1,\ "facet": "text",\ "details": [\ {\ "data": {\ "descr": "text",\ "code": "text",\ "guid": "text"\ },\ "count": 1\ }\ ]\ }\ ] }, "data": [\ {\ "type": "text",\ "id": "text",\ "relationships": {\ "parent": {\ "data": {\ "id": "text",\ "type": "text"\ },\ "links": {\ "related": "text"\ }\ },\ "children": {\ "data": [\ {\ "data": {\ "id": "text",\ "type": "text"\ }\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "standards": {\ "links": {\ "last": "text",\ "related": "text",\ "next": "text"\ },\ "data": [\ {\ "id": "text",\ "type": "text"\ }\ ]\ }\ },\ "attributes": {\ "date_modified_utc": "text",\ "disciplines": {\ "subjects": [\ {\ "descr": "text",\ "code": "text",\ "guid": "text"\ }\ ]\ },\ "status": "active",\ "guid": "text",\ "document": {\ "date_modified_utc": "text",\ "guid": "text",\ "revision_year": "text",\ "adopt_year": "text",\ "descr": "text"\ },\ "seq": 1,\ "level": 1,\ "section": {\ "descr": "text",\ "date_modified_utc": "text",\ "seq": 1,\ "guid": "text"\ },\ "uri": "text",\ "descr": "text",\ "education_levels": {\ "grades": [\ {\ "descr": "text",\ "guid": "text",\ "code": "text",\ "seq": 1\ }\ ]\ }\ }\ }\ ], "included": [\ {\ "type": "text",\ "relationships": {\ "related_courses": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakout_origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "ancestors": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "topics": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peers": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakouts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "crosswalks": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaced_by": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaces": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "children": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "concepts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peer_derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "parent": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "course_standards": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "contexts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "associations": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ },\ "attributes": {\ "seq": 1,\ "captured_by": "text",\ "utilizations": [\ {\ "type": "alignable",\ "guid": "text"\ }\ ],\ "uri": "text",\ "statement": {\ "addendums": [\ {\ "seq": 1,\ "add_context": "Y",\ "descr": "text",\ "position": "before"\ }\ ],\ "combined_descr": "text",\ "descr": "text"\ },\ "level": 1,\ "date_modified_utc": "text",\ "status": "active",\ "legends": [\ {\ "symbol_position": "before",\ "symbol": "text",\ "descr": "text"\ }\ ],\ "standard_type": "organizational",\ "label": "text",\ "disciplines": {\ "strands": [\ {\ "descr": "text",\ "guid": "text"\ }\ ],\ "ece_domains": [\ {\ "guid": "text",\ "code": "text",\ "descr": "text"\ }\ ],\ "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ],\ "genres": [\ {\ "code": "text",\ "guid": "text",\ "descr": "text"\ }\ ]\ },\ "alt_identifiers": [\ {\ "type": "GUID",\ "source": "canonical",\ "id": "text"\ }\ ],\ "date_deleted_utc": "text",\ "in_list": "Y",\ "guid": "text",\ "key_ideas": [\ {\ "guid": "text",\ "concepts": [\ {\ "descr": "text",\ "guid": "text"\ }\ ]\ }\ ],\ "document": {\ "implementation_year": "text",\ "descr": "text",\ "date_modified_utc": "text",\ "source_url": "text",\ "assessment_year": "text",\ "publication": {\ "descr": "text",\ "source_url": "text",\ "extended_descr": "text",\ "regions": [\ {\ "guid": "text",\ "descr": "text",\ "type": "country",\ "code": "text"\ }\ ],\ "authorities": [\ {\ "guid": "text",\ "descr": "text",\ "acronym": "text"\ }\ ],\ "acronym": "text",\ "publication_type": "standard",\ "guid": "text"\ },\ "guid": "text",\ "obsolete_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ },\ "adopt_year": "text",\ "revision_year": "text"\ },\ "deepest": "Y",\ "number": {\ "root_enhanced": "text",\ "enhanced": "text",\ "prefix_enhanced": "text",\ "raw": "text",\ "alternate": "text"\ },\ "education_levels": {\ "ece_ages": [\ {\ "guid": "text",\ "descr": "text",\ "seq": 1\ }\ ],\ "grades": [\ {\ "guid": "text",\ "descr": "text",\ "code": "text",\ "seq": 1\ }\ ]\ },\ "section": {\ "guid": "text",\ "seq": 1,\ "date_modified_utc": "text",\ "descr": "text",\ "implementation_year": "text",\ "number": "text",\ "assessment_year": "text",\ "revision_year": "text",\ "label": "text",\ "obsolete_year": "text",\ "adopt_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ }\ },\ "extensions": [\ {\ "type": "reference",\ "guid": "text",\ "descr": "text"\ }\ ],\ "has_list": "text",\ "topic_organizer": "text"\ },\ "id": "text"\ }\ ] } sun-brightdesktopmoon --- # OAuth2 Overview | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2) OAuth2 ----------------------------------------------------------------------------------------------------- circle-exclamation Developer keys issued after Oct 2015 generate tokens with a 1 hour expiration. Applications must use [refresh tokens](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#using-refresh-tokens) to generate new access tokens. [OAuth2arrow-up-right](http://oauth.net/2) is a protocol designed to let third-party applications authenticate to perform actions as a user, without getting the user's password. Canvas uses OAuth2 (specifically [RFC-6749arrow-up-right](http://tools.ietf.org/html/rfc6749) ) for authentication and authorization of the Canvas API. Additionally, Canvas uses OAuth2 for [LTI Advantagearrow-up-right](https://www.imsglobal.org/activity/learning-tools-interoperability) service authentication (as described in the [IMS Security Frameworkarrow-up-right](https://www.imsglobal.org/spec/security/v1p0/) ). #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-the-canvas-api) [Accessing the Canvas API](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-canvas-api) * [Storing Tokens](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#storing-access-tokens) * [Manual Token Generation](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#manual-token-generation) * [Oauth2 Flow](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow) * [Getting OAuth2 Client ID/Secret](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-0) * [Step 1: Redirect users to request Canvas access](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-1) * [Step 2: Redirect back to the request\_uri, or out-of-band redirect](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-2) * [Note for native apps](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-2.1) * [Step 3: Exchange the code for the final access token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-3) * [Using an Access Token to authenticate requests](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#using-access-tokens) * [Using a Refresh Token to get a new Access Token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#using-refresh-tokens) * [Logging Out](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#delete-login-oauth2-token) * [Endpoints](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints) * [GET login/oauth2/auth](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-oauth2-auth) * [POST login/oauth2/token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#post-login-oauth2-token) * [DELETE login/oauth2/token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#delete-login-oauth2-token) * [GET login/session\_token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-session-token) #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-lti-advantage-services) [Accessing LTI Advantage Services](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-lti-advantage-services-link) * [Step 1: Developer Key Setup](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#developer-key-setup) * [Step 2: Request an Access Token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#request-access-token) * [Step 3: Use the access token to access LTI services](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#use-access-token) [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-canvas-api) [Accessing the Canvas API](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-canvas-api) -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#storing-access-tokens) [Storing Tokens](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#storing-access-tokens) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) When appropriate, applications should store the token locally, rather than requesting a new token for the same user each time the user uses the application. If the token is deleted or expires, the application will get a 401 Unauthorized error from the API, in which case the application should perform the OAuth flow again to receive a new token. You can differentiate this 401 Unauthorized from other cases where the user simply does not have permission to access the resource by checking that the WWW-Authenticate header is set. Storing a token is in many ways equivalent to storing the user's password, so tokens should be stored and used in a secure manner, including but not limited to: * Don't embed tokens in web pages. * Don't pass tokens or session IDs around in URLs. * Properly secure the database or other data store containing the tokens. * For web applications, practice proper techniques to avoid session attacks such as cross-site scripting, request forgery, replay attacks, etc. * For native applications, take advantage of user keychain stores and other operating system functionality for securely storing passwords. ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#manual-token-generation) [Manual Token Generation](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#manual-token-generation) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) For testing your application before you've implemented OAuth, the simplest option is to generate an access token on your user's profile page. Note that asking any other user to manually generate a token and enter it into your application is a violation of [Canvas' API Policyarrow-up-right](https://www.instructure.com/policies/api-policy) . Applications in use by multiple users MUST use OAuth to obtain tokens. To manually generate a token for testing: 1. Click the "profile" link in the top right menu bar, or navigate to `/profile` 2. Under the "Approved Integrations" section, click the button to generate a new access token. 3. Once the token is generated, you cannot view it again, and you'll have to generate a new token if you forget it. Remember that access tokens are password equivalent, so keep it secret. ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow) [Oauth2 Flow](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) Your application can rely on canvas for a user's identity. During step 1 of the web application flow below, specify the optional scope parameter as scope=/auth/userinfo. When the user is asked to grant your application access in step 2 of the web application flow, they will also be given an option to remember their authorization. If they grant access and remember the authorization, Canvas will skip step 2 of the request flow for future requests. Canvas will not give a token back as part of a userinfo request. It will only provide the current user's name and id. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-0) [Getting OAuth2 Client ID/Secret](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-0) If your application will be used by others, you will need to implement the full OAuth2 token request workflow, so that you can request an access token for each user of your application. Performing the OAuth2 token request flow requires an application client ID and client secret. To obtain these application credentials, you will need to register your application. The client secret should never be shared. For Canvas Cloud (hosted by Instructure), developer keys are [issued by the admin of the institutionarrow-up-right](https://community.canvaslms.com/t5/Admin-Guide/How-do-I-manage-developer-keys-for-an-account/ta-p/249) . NOTE for LTI providers: Since developer keys are scoped to the institution they are issued from, tool providers that serve multiple institutions should store and look up the correct developer key based on the launch parameters (eg. custom\_canvas\_api\_domain) sent during the LTI launch. For [open source Canvas usersarrow-up-right](https://github.com/instructure/canvas-lms/wiki) , you can [generate a client IDarrow-up-right](https://community.canvaslms.com/t5/Admin-Guide/How-do-I-manage-developer-keys-for-an-account/ta-p/249) and secret in the Site Admin account of your Canvas install. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-1) [Step 1: Redirect users to request Canvas access](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-1) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) A basic request looks like: #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#get-https-less-than-canvas-install-url-greater-than-login-oauth2-auth-client_id-xxx-and-response_typ) GET https:///login/oauth2/auth?client\_id=XXX&response\_type=code&state=YYY&redirect\_uri=https://example.com/oauth2response See [GET login/oauth2/auth](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#get-login-oauth2-auth) for details. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-2) [Step 2: Redirect back to the request\_uri, or out-of-band redirect](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-2) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) If the user accepts your request, Canvas redirects back to your request\_uri with a specific query string, containing the OAuth2 response: #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#http-www.example.com-oauth2response-code-xxx-and-state-yyy) http://www.example.com/oauth2response?code=XXX&state=YYY The app can then extract the code, and use it along with the client\_id and client\_secret to obtain the final access\_key. If your application passed a state parameter in step 1, it will be returned here in step 2 so that your app can tie the request and response together, whether the response was successful or an error occurred. If the user doesn't accept the request for access, or if another error occurs, Canvas redirects back to your request\_uri with an `error` parameter, rather than a `code` parameter, in the query string. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#http-www.example.com-oauth2response-error-access_denied-and-error_description-a_description-and-stat) http://www.example.com/oauth2response?error=access\_denied&error\_description=a\_description&state=YYY A list of possible error codes is found in the [RFC-7649 specarrow-up-right](https://datatracker.ietf.org/doc/html/rfc6749#section-4.2.2.1) . #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-2.1) [Note for native apps](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-2.1) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) Canvas redirects to a page on canvas with a specific query string, containing parameters from the OAuth2 response: #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#login-oauth2-auth-code-less-than-code-greater-than) /login/oauth2/auth?code= At this point the app should notice that the URL of the webview has changed to contain `code=` somewhere in the query string. The app can then extract the code, and use it along with the client\_id and client\_secret to obtain the final access\_key. #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-3) [Step 3: Exchange the code for the final access token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow-3) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) To get a new access token and refresh token, send a [POST request to login/oauth2/token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#post-login-oauth2-token) with the following parameters: **Parameters** Parameter Value grant\_type authorization\_code client\_id Your client\_id client\_secret Your client\_secret redirect\_uri If a redirect\_uri was passed to the initial request in step 1, the same redirect\_uri must be given here. code code from canvas replace\_tokens (optional) If this option is set to \`1\`, existing access tokens issued for this developer key/secret will be destroyed and replaced with the new token that is returned from this request Note that the once the code issued in step 2 is used in a POST request to this endpoint, it is invalidated and further requests for tokens with the same code will fail. ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#using-access-tokens) [Using an Access Token to authenticate requests](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#using-access-tokens) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) Once you have an OAuth access token, you can use it to make API requests. If possible, using the HTTP Authorization header is recommended. OAuth2 Token sent in header: Sending the access token in the query string or POST parameters is also supported, but discouraged as it increases the chances of the token being logged or leaked in transit. OAuth2 Token sent in query string: ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#using-refresh-tokens) [Using a Refresh Token to get a new Access Token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#using-refresh-tokens) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) Access tokens have a 1 hour lifespan. When the refresh flow is taken, Canvas will update the access token to a new value, reset the expiration timer, and return the new access token as part of the response. When refreshing tokens the user will not be asked to authorize the application again. To refresh the access token, send a [POST request to login/oauth2/token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#post-login-oauth2-token) with the following parameters: **Parameters** Parameter Value grant\_type refresh\_token client\_id Your client\_id client\_secret Your client\_secret refresh\_token refresh\_token from initial access\_token request The response to this request will not contain a new refresh token; the same refresh token is to be reused. ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#logging-out) [Logging Out](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#delete-login-oauth2-token) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) To logout, simply send a [DELETE request to login/oauth2/token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#delete-login-oauth2-token) [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-lti-advantage-services-link) [Accessing LTI Advantage Services](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-lti-advantage-services) --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) LTI Advantage services, such as [Names and Role Provisioning Servicesarrow-up-right](https://www.imsglobal.org/spec/lti-nrps/v2p0) and [Assignment and Grade Servicesarrow-up-right](https://www.imsglobal.org/spec/lti-ags/v2p0/) , require use of a client credentials grant flow for request authentication. This workflow is best summarized on the IMS Security Framework (specifically [Section 4arrow-up-right](https://www.imsglobal.org/spec/security/v1p0/#using-oauth-2-0-client-credentials-grant) ). Our goal here is to highlight some nuances that might help you access these services in Canvas, rather than describing the specification in detail. ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#developer-key-setup) [Step 1: Developer Key Setup](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#developer-key-setup) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) Before the client\_credentials grant flow can be achieved, an [LTI developer key must be createdarrow-up-right](https://community.canvaslms.com/t5/Admin-Guide/How-do-I-configure-an-LTI-key-for-an-account/ta-p/140) . During developer key configuration, a public JWK can either be configured statically or can be dynamically rotated by providing JWKs by a URL that Canvas can reach. Tools may also use a previously issued client\_credentials token to [retroactively rotate the public JWK via an API request](https://developerdocs.instructure.com/services/canvas/resources/public_jwk) . The JWK must include an alg and use. **Example JWK** ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#request-access-token) [Step 2: Request an access token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#request-access-token) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) Once the developer key is configured and turned on, your tool can [request an LTI access token using the client\_credentials grant](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints#post-login-oauth2-token) . This request must be signed by an RSA256 private key with a public key that is configured on the developer key as described in [Step 1: Developer Key Setup](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#developer-key-setup) . ### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#use-access-token) [Step 3: Use the access token to access LTI services](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#use-access-token) [Back to Top](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#top) Once you have an access token, you can use it to make LTI service requests. The access token must be included as a Bearer token in the Authorization header: Access tokens only work in the context of where a tool has been deployed. Tools can only access line items that are associated with their tool. The following endpoints are currently supported: #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#names-and-role-provisioning-services) Names and Role Provisioning Services * [Names and Role API](https://developerdocs.instructure.com/services/canvas/resources/names_and_role) #### [hashtag](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#assignment-and-grade-services) Assignment and Grade Services * [Line Items](https://developerdocs.instructure.com/services/canvas/resources/line_items) * [Score](https://developerdocs.instructure.com/services/canvas/resources/score) * [Result](https://developerdocs.instructure.com/services/canvas/resources/result) * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousOAuth2chevron-left](https://developerdocs.instructure.com/services/canvas/oauth2) [NextOAuth2 Endpointschevron-right](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth_endpoints) Last updated 4 months ago Was this helpful? * [OAuth2](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2) * [Accessing the Canvas API](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-canvas-api) * [Storing Tokens](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#storing-access-tokens) * [Manual Token Generation](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#manual-token-generation) * [Oauth2 Flow](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#oauth2-flow) * [Using an Access Token to authenticate requests](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#using-access-tokens) * [Using a Refresh Token to get a new Access Token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#using-refresh-tokens) * [Logging Out](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#logging-out) * [Accessing LTI Advantage Services](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#accessing-lti-advantage-services-link) * [Step 1: Developer Key Setup](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#developer-key-setup) * [Step 2: Request an access token](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#request-access-token) * [Step 3: Use the access token to access LTI services](https://developerdocs.instructure.com/services/canvas/oauth2/file.oauth#use-access-token) Was this helpful? sun-brightdesktopmoon Copy /login/oauth2/auth?code= Copy curl -H "Authorization: Bearer " "https://canvas.instructure.com/api/v1/courses" Copy curl "https://canvas.instructure.com/api/v1/courses?access_token=" Copy "public_jwk": { "kty":"RSA", "alg":"RS256", "e":"AQAB", "kid":"8f796179-7ac4-48a3-a202-fc4f3d814fcd", "n":"nZA7QWcIwj-3N_RZ1qJjX6CdibU87y2l02yMay4KunambalP9g0fU9yILwLX9WYJINcXZDUf6QeZ-SSbblET-h8Q4OvfSQ7iuu0WqcvBGy8M0qoZ7I-NiChw8dyybMJHgpiP_AyxpCQnp3bQ6829kb3fopbb4cAkOilwVRBYPhRLboXma0cwcllJHPLvMp1oGa7Ad8osmmJhXhN9qdFFASg_OCQdPnYVzp8gOFeOGwlXfSFEgt5vgeU25E-ycUOREcnP7BnMUk7wpwYqlE537LWGOV5z_1Dqcqc9LmN-z4HmNV7b23QZW4_mzKIOY4IqjmnUGgLU9ycFj5YGDCts7Q", "use":"sig" } Copy curl -H "Authorization: Bearer " "https:///api/lti/courses/:course_id/names_and_roles" sun-brightdesktopmoon --- # Assets | Instructure Developer Documentation Portal Academic Benchmarks refers to partner content and assessment items as Assets. In AB Connect, an Asset is the metadata that describes the content - not the actual content itself. The Assets resource can be used to perform a host of operations on partner Assets to allow you to manage and relate your Assets. You can create, modify and delete Assets. You can also build a metadata profile for your Assets which allow you to take advantage of the power of the AB Connect prediction engine to establish and maintain relationships between your Asset, Standards and other Assets. See the section on [Licensing Considerations](https://developerdocs.instructure.com/services/ab-connect/introduction/licensing) for a discussion on the licensing required for access to Assets. In addition to the attributes and relationships built into AB Connect to support Content Enrichment and predictions, AB Connect allows you to define your own attributes to support needs such as advanced searching. These customer defined attributes are referred to as descriptors or custom attributes. They can be configured per Asset type either by you (if you have web access enabled for your account) or by [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#345556474144445b4640745d5a4740464157404146511a575b590b4741565e515740096751404144110604574147405b5911060444465b445146405d5147) . Custom attributes are represented in the API in two ways: through the `descriptors` array or by direct named properties of the custom\_attributes object property. The name of the property is defined in the Asset setup screens. The `descriptors` array was the initial implementation and has been kept for backwards compatibility but the direct named attributes are easier to work with (particularly when filtering) and are the recommended approach. To illustrate the payload for custom attributes, if the Asset type has a property named "Color", it will be represented in the `descriptors` array as an anonymous name/value pair like: Copy "descriptors": [\ {\ "name": "Color",\ "value": "blue"\ }\ ], However, it will also be represented as a named attribute like: Copy "custom_attributes": { "color": ["blue"] }, A couple of key points: * When custom attributes are exchanged in JSON as named attributes, they are converted to lower case and any spaces or special characters are replaced by underscores. Multiple underscores in a row are collapsed into a single underscore. You won't need to think too much about this because the Asset type setup screen shows both the full property name and the JSON API attribute property name. * It is the responsibility of the client application to control the values of the custom attributes, so if you have single-valued properties or controlled vocabularies in your use case, ensure they are handled properly before sending the data to AB Connect. * The named attribute is an array. This is because custom attributes are multi-valued in AB Connect. In the `descriptors` array, this is represented by multiple anonymous objects with the same "name" and different "values". For example, if your Asset type is college logos, the University of Michigan Asset may have Color values of blue and yellow. The Color property would appear in the JSON as: Copy "descriptors": [\ {\ "name": "Color",\ "value": "blue"\ },\ {\ "name": "Color",\ "value": "yellow"\ }\ ], And: Finally, all calls against the Asset resource must be implemented as HTTP GET, POST, DELETE or PATCH requests, and must include proper [Partner Authentication Credentials](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#creating-an-asset) Creating an Asset ------------------------------------------------------------------------------------------------------------------------------ To create an Asset within the AB Connects system, you send a POST to the endpoint. The body of the POST contains the Asset definition in JSON format. The only required fields are `client_id` and `asset_type`. You can define your `asset_type` using the Academic Benchmarks web interface or have support set it up for you. If you do not know your `asset_type` or need to have one setup for you, contact [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#5c3d3e2f292c2c332e281c35322f282e293f28292e39723f3331632f293e36393f28611d1e796e6c1f333232393f28796e6c0d29392f28353332796e6c332e796e6c1f333131393228796e6c796e642a68726d796e6c1d0c15796e65) for details. Note: The Asset endpoint allows you to manipulate basic attributes of the Asset. To manage relationships, see the section on [Managing and Predicting Relationships](https://developerdocs.instructure.com/services/ab-connect/reference/relationships#managing-relationships-between-assets-and-standards#creating-relationships) . ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#creating-an-asset-1) Creating an Asset {% swagger src="../openapi.yml" path="/assets" method="post" %} openapi.yml {% endswagger %} [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#retrieving-assets) Retrieving Assets ------------------------------------------------------------------------------------------------------------------------------ To work with an Asset, you've created, call the endpoint with a GET while supplying the AB GUID for the Asset. If you have your organization's ID for the Asset but not the AB GUID, see the section on [finding Assets](https://developerdocs.instructure.com/services/ab-connect/reference/assets#searching-for-assets) and search on `client_id` to retrieve the AB GUID. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#retrieving-the-details-of-an-asset) Retrieving the Details of an Asset {% swagger src="../openapi.yml" path="/assets/{guid}" method="get" %} openapi.yml {% endswagger %} [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#working-with-assets) Working with Assets ---------------------------------------------------------------------------------------------------------------------------------- To work with an Asset you've created, call the endpoint while supplying the AB GUID for the Asset. If you have your organization's ID for the Asset but not the AB GUID, see the section on [finding Assets](https://developerdocs.instructure.com/services/ab-connect/reference/assets#searching-for-assets) and search on `client_id` to retrieve the AB GUID. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#modifying-an-asset) Modifying an Asset To update an Asset, PATCH the Asset URL (with GUID) sending JSON in the body similar to that in the create statement. The JSON body only needs to contain the attributes that need to be updated. You cannot update the `client_id` or `asset_type` once the Asset is created. If one of those needs to change, you will need to delete the old Asset and create a new one. Notes on PATCHing Assets: 1. You do not need to include every field in a PATCH body. However, any field you include will replace the current value of that field on the Asset. For simple fields like `title`, that's not surprising. However, if you PATCH an object or array, you need to send the final state of that array or object - not just a single element. E.g. if the Asset has a `descriptor` with 5 name/value pairs on it and you send a PATCH to change 1 name/value pair, be sure to have copies of the other 4 name/value pairs in the `descriptor` array or the resulting Asset will only have one `descriptor` name/value pair. 2. If you are doing a bulk update of Assets where you are requesting a large number of Assets, paging through the list and PATCHing the Assets as you page, be sure to sort the list on a field you are not modifying - preferably on a unique fields like the GUID. If you leave the sort order to the default (relevance) or sort on a field you are changing, you will likely get duplicate and skipped Assets as you page through the list. 3. To create and update relationships on assets, see the section on [Managing and Predicting Relationships](https://developerdocs.instructure.com/services/ab-connect/reference/relationships#managing-relationships-between-assets-and-standards#creating-relationships) . {% swagger src="../openapi.yml" path="/assets/{guid}" method="patch" %} openapi.yml {% endswagger %} [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#deleting-assets) Deleting Assets -------------------------------------------------------------------------------------------------------------------------- To delete an Asset you've created, call the endpoint while supplying the AB GUID for the Asset. If you have your organization's ID for the Asset but not the AB GUID, see the section on [finding Assets](https://developerdocs.instructure.com/services/ab-connect/reference/assets#searching-for-assets) and search on `client_id` to retrieve the AB GUID. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#deleting-an-asset) Deleting an Asset Assets can be deleted by sending a DELETE to their "self" URL. {% swagger src="../openapi.yml" path="/assets" method="delete" %} openapi.yml {% endswagger %} [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#searching-for-assets) Searching for Assets ------------------------------------------------------------------------------------------------------------------------------------ Using filtering it is possible to retrieve sets of Assets that match specific criteria. These Assets are returned in an array of Asset objects. See the Introduction for an explanation on [filtering](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) and [faceting](https://developerdocs.instructure.com/services/ab-connect/introduction/facets#using-facets-as-an-entry-point-for-browsing-assets) . This section covers the specifics of using filtering with the Assets resource. To find Assets related to Standards, search based on the Standard GUID in the \` alignments.id\` field. E.g. A similar approach can be applied to Topics and Concepts. If you have your organization's identifier for the Asset, but not the AB GUID for it, you can retrieve the GUID by doing a search on `client_id` to locate the Asset. E.g. `filter[assets]=(client_id eq 'AJIH-45679')` ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#searching-for-assets-owned-by-another-provider) Searching for Assets Owned by Another Provider With AB Connect, it is possible to share your Assets with other AB Connect customers (Providers) to facilitate application interoperability. You can allow other Providers (the Consumer) to search sets of your Assets and retrieve the metadata profile describing your content. See the section on the [Providers](https://developerdocs.instructure.com/services/ab-connect/reference/providers) endpoint for an overview. Assets include an `owner` relationship that references the object of the Provider to which the Asset belongs. By default, the Assets endpoint only searches the Assets you own. To search the Assets of other Providers, include `owner.id` in your filter criteria. You can get the IDs of the Owners to which you have access using the Providers endpoint. Alternatively, you can use the special keyword `_all` to search across all repositories to which you have access. E.g. `filter[assets]=owner.id eq _all`. You can also use the keyword `_me` to limit the search to just the Assets you own, but this is redundant with the approach of not specifying the `owner.id` at all. Note that if you are including other Owners in your request, you can not include `custom_attributes`. Cross-owner searches can only operate on built-in properties. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#executing-the-search) Executing the Search ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/assets#finding-sets-of-assets) Finding Sets of Assets get https://api.abconnect.instructure.com/rest/v4.1/assets Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[assets\]stringOptional comma separated list of field names filter\[assets\]stringOptional an ODATA-like query string used to filter filter\[alignments\]stringOptional an ODATA-like query string used to filter sort\[assets\]stringOptional a comma separated list of property names specifying the sort order of the returned results facetstringOptional A comma separated list of facet names that you are requesting the options on. facet\_summarystringOptional A comma separated list of facet names for which you are requesting summary information. includestringOptional A comma separated list of resource names that will be returned in the response. limitnumberOptional The page size for the response dataset. limit must be 100 or less. offsetnumberOptional How far into the dataset you are paging Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobject\[\]Optional Show propertiesplus includedone of\[\]Optional Show available itemsplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json get /assets HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [PreviousConceptschevron-left](https://developerdocs.instructure.com/services/ab-connect/reference/concepts) [NextAsset Definitionschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/asset-definitions) Last updated 6 months ago Was this helpful? * [Creating an Asset](https://developerdocs.instructure.com/services/ab-connect/reference/assets#creating-an-asset) * [Creating an Asset](https://developerdocs.instructure.com/services/ab-connect/reference/assets#creating-an-asset-1) * [Retrieving Assets](https://developerdocs.instructure.com/services/ab-connect/reference/assets#retrieving-assets) * [Retrieving the Details of an Asset](https://developerdocs.instructure.com/services/ab-connect/reference/assets#retrieving-the-details-of-an-asset) * [Working with Assets](https://developerdocs.instructure.com/services/ab-connect/reference/assets#working-with-assets) * [Modifying an Asset](https://developerdocs.instructure.com/services/ab-connect/reference/assets#modifying-an-asset) * [Deleting Assets](https://developerdocs.instructure.com/services/ab-connect/reference/assets#deleting-assets) * [Deleting an Asset](https://developerdocs.instructure.com/services/ab-connect/reference/assets#deleting-an-asset) * [Searching for Assets](https://developerdocs.instructure.com/services/ab-connect/reference/assets#searching-for-assets) * [Searching for Assets Owned by Another Provider](https://developerdocs.instructure.com/services/ab-connect/reference/assets#searching-for-assets-owned-by-another-provider) * [Executing the Search](https://developerdocs.instructure.com/services/ab-connect/reference/assets#executing-the-search) * [Finding Sets of Assets](https://developerdocs.instructure.com/services/ab-connect/reference/assets#finding-sets-of-assets) * [GET/assets](https://developerdocs.instructure.com/services/ab-connect/reference/assets#get-assets) Was this helpful? sun-brightdesktopmoon Copy "custom_attributes": { "color": ["blue","yellow"] }, Copy filter[assets]=(alignments.id eq '6B29DCD6-29EB-11D8-9C6E-A97B3BAEC73A') filter[assets]=(alignments.id in ('6B29DCD6-29EB-11D8-9C6E-A97B3BAEC73A','6DF95514-36D9-11E6-B844-14D399AB8BA3')) Copy GET /rest/v4.1/assets?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text", "first": "text", "last": "text", "next": "text", "prev": "text" }, "meta": { "took": 1, "limit": 1, "count": 1, "offset": 1, "facets": [\ {\ "count": 1,\ "facet": "text",\ "details": [\ {\ "data": {\ "descr": "text",\ "code": "text",\ "guid": "text"\ },\ "count": 1\ }\ ]\ }\ ] }, "data": [\ {\ "relationships": {\ "alignment_donors": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "concepts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "owner": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "deleted_alignments": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "parent": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "topics": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "alignments": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "concept_donors": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ },\ "id": "text",\ "attributes": {\ "prediction_algorithm": 1,\ "date_modified_utc": "text",\ "client_id": "text",\ "guid": "text",\ "custom_attributes": {\ "ANY_ADDITIONAL_PROPERTY": [\ "text"\ ]\ },\ "education_levels": {\ "grades": [\ {\ "guid": "text",\ "descr": "text",\ "code": "text",\ "seq": 1\ }\ ]\ },\ "descriptors": [\ {\ "value": "text",\ "name": "text"\ }\ ],\ "title": "text",\ "date_alignments_modified_utc": "text",\ "disciplines": {\ "genres": [\ {\ "code": "text",\ "guid": "text",\ "descr": "text"\ }\ ],\ "ece_domains": [\ {\ "guid": "text",\ "code": "text",\ "descr": "text"\ }\ ],\ "strands": [\ {\ "descr": "text",\ "guid": "text"\ }\ ],\ "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ]\ },\ "asset_type": "text"\ },\ "type": "assets"\ }\ ], "included": [\ {\ "type": "text",\ "relationships": {\ "related_courses": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakout_origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "ancestors": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "topics": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peers": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakouts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "crosswalks": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaced_by": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaces": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "children": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "concepts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peer_derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "parent": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "course_standards": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "contexts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "associations": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ },\ "attributes": {\ "seq": 1,\ "captured_by": "text",\ "utilizations": [\ {\ "type": "alignable",\ "guid": "text"\ }\ ],\ "uri": "text",\ "statement": {\ "addendums": [\ {\ "seq": 1,\ "add_context": "Y",\ "descr": "text",\ "position": "before"\ }\ ],\ "combined_descr": "text",\ "descr": "text"\ },\ "level": 1,\ "date_modified_utc": "text",\ "status": "active",\ "legends": [\ {\ "symbol_position": "before",\ "symbol": "text",\ "descr": "text"\ }\ ],\ "standard_type": "organizational",\ "label": "text",\ "disciplines": {\ "strands": [\ {\ "descr": "text",\ "guid": "text"\ }\ ],\ "ece_domains": [\ {\ "guid": "text",\ "code": "text",\ "descr": "text"\ }\ ],\ "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ],\ "genres": [\ {\ "code": "text",\ "guid": "text",\ "descr": "text"\ }\ ]\ },\ "alt_identifiers": [\ {\ "type": "GUID",\ "source": "canonical",\ "id": "text"\ }\ ],\ "date_deleted_utc": "text",\ "in_list": "Y",\ "guid": "text",\ "key_ideas": [\ {\ "guid": "text",\ "concepts": [\ {\ "descr": "text",\ "guid": "text"\ }\ ]\ }\ ],\ "document": {\ "implementation_year": "text",\ "descr": "text",\ "date_modified_utc": "text",\ "source_url": "text",\ "assessment_year": "text",\ "publication": {\ "descr": "text",\ "source_url": "text",\ "extended_descr": "text",\ "regions": [\ {\ "guid": "text",\ "descr": "text",\ "type": "country",\ "code": "text"\ }\ ],\ "authorities": [\ {\ "guid": "text",\ "descr": "text",\ "acronym": "text"\ }\ ],\ "acronym": "text",\ "publication_type": "standard",\ "guid": "text"\ },\ "guid": "text",\ "obsolete_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ },\ "adopt_year": "text",\ "revision_year": "text"\ },\ "deepest": "Y",\ "number": {\ "root_enhanced": "text",\ "enhanced": "text",\ "prefix_enhanced": "text",\ "raw": "text",\ "alternate": "text"\ },\ "education_levels": {\ "ece_ages": [\ {\ "guid": "text",\ "descr": "text",\ "seq": 1\ }\ ],\ "grades": [\ {\ "guid": "text",\ "descr": "text",\ "code": "text",\ "seq": 1\ }\ ]\ },\ "section": {\ "guid": "text",\ "seq": 1,\ "date_modified_utc": "text",\ "descr": "text",\ "implementation_year": "text",\ "number": "text",\ "assessment_year": "text",\ "revision_year": "text",\ "label": "text",\ "obsolete_year": "text",\ "adopt_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ }\ },\ "extensions": [\ {\ "type": "reference",\ "guid": "text",\ "descr": "text"\ }\ ],\ "has_list": "text",\ "topic_organizer": "text"\ },\ "id": "text"\ }\ ] } sun-brightdesktopmoon --- # How To Articles, Recommendations and Suggestions | Instructure Developer Documentation Portal [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-navigate-the-standards-organizational-structure) How to Navigate the Standards Organizational Structure ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Standards are organized hierarchically under _authorities_. An authority is an organization that has defined a set of academic Standards (e.g. Alabama DOE or NGA Center/CCSSO). Authorities have groups of Standards that we refer to as _publications_. Publications typically cover multiple subject areas. An example of a publication is New York's Next Generation Learning Standards. It covers both math and ELA. Within a publication, we organize Standards into _documents_ based on subject and adoption year. So within New York's Next Generation Learning Standards, one of the documents is Mathematics 2017. Each document is organized into _sections_. A section is a group in the document that covers the Standards for a particular set - typically a grade (e.g. 2nd Grade) or course (e.g. Algebra II). Once you've gotten to the section level, the rest of the data is organized into a hierarchical structure of the Standards by level and are related by parent/child relationships. Let's walk through an example: First, to retrieve a list of authorities in your license, use faceting and list the authorities (`document.publication.authorities`). E.g.: Copy `https://api.abconnect.instructure.com/rest/v4.1/standards?facet=document.publication.authorities&limit=0&filter[standards]=status EQ 'active'` The results from that call will include a set of authority facets in the `meta.facet` part of the JSON. For this example, let's look at the New York Standards. Copy ... { "data": { "guid": "9127D390-F1B9-11E5-862E-0938DC287387", "acronym": null, "descr": "New York DOE" }, "count": 20047 }, .... Now that you have the GUID for the New York DOE authority, you can use that to narrow your focus to NY and request publications. Copy `https://api.abconnect.instructure.com/rest/v4.1/standards?filter[standards]=(document.publication.authorities.guid EQ '9127D390-F1B9-11E5-862E-0938DC287387' AND status EQ 'active')&facet=document.publication&limit=0` We'll pick the Next Generation Learning Standards and look at the documents. Let's take that publication GUID and look for related documents. Let's focus on the math document. With the math document GUID, you can list the related sections. Let's look at the Algebra II section. Now we are ready to start to navigate the Standards. To start that process, look for Standards in the Algebra II section. The Standards are organized in a hierarchy but are not necessarily returned in that order so limit the response to the top level of the hierarchy and sort by the sequence so you are reproducing the section as a user would expect to see it. If you are using these calls to build a tree in a UI, you may want to request the `children` property be included in the response so your front-end code can decide whether or not to add an icon to allow the browser to expand this Standard to show its children. I'll leave it out of this example so I don't clutter the data response, but you could include that information using a fields parameter in the URL like: `fields[standards]=seq,number,statement,children`. We'll ignore data paging here and assume that you can manage that part. Looking at the results, there are only a couple of branches at this level. We've simplified the data here to make it easier to read: Now that we have the top level of Standards, we need to look at the children Standards. We'll start with the Operations and Algebraic Thinking branch and look for its children by searching for Standards that have this particular Standard as a parent. Again, we are sorting by the sequence order. The results look something like the data below (again simplifying the response for clarity). Now you can repeat that process for each Standard in this list - searching for Standards that have each of these as parents - until you reach the bottom of the hierarchy. As you do this, there are a few things to keep in mind: * Most documents are not consistent in the number of levels they have. The bottom level is often the level that represents a single learning objective but sometimes the bottom is an example and the level above is the objective. * Check the `utilization.type` of a Standard to validate its usage. `alignable` Standards are the learning objectives. These typically have Key Ideas, Topics and Concepts associated with them. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#special-considerations-when-rendering-standards-in-user-interfaces) Special Considerations When Rendering Standards In User Interfaces ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#representing-standards-as-chips) Representing Standards As Chips A common modern user interface element in selection scenarios is the "chip". A chip is a compact element that typically represents a more complex object in a tight space. If you are not familiar with chips, you can see examples on the [Material Design sitearrow-up-right](https://material.io/design/components/chips.html#input-chips) . The dominant attribute of chips is compactness. For this reason, the representation of a Standard as a chip is challenging. We find that using the enhanced (or pre-fix enhanced) number is the best representation of a standard on a chip combined with hover text or an info icon to allow the user to easily find a more complete definition of the Standard. Be aware that numbers are not guaranteed to be unique and some Standards do not have numbers. When working with Standards that aren't numbered, you may want to fallback to showing the first 10-15 characters of the text. While that is not likely to be too informative, when you combine it with the ability to see more details about the standard, it should be enough for a user to understand its usage. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#handling-standards-that-have-lists-and-addenda) Handling Standards That Have Lists and Addenda Standards with addenda with `position` set to `after` that have `has_list` set to `Y` are very rare, but they do occur periodically, and the rendering requires special treatment. In this case, addenda with `position` set to `after` should be displayed after the list of items. The final rendering is determined by your application, but here is an example and two likely renderings. * Statement: Determine the equation of a linear relation, given: * Before Addendum: It is expected that students will: * After Addendum: to solve problems. * Child List Standards: * a graph * a point and the slope * two points * a point and the equation of a parallel or perpendicular line [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#working-with-deleted-standards) Working With Deleted Standards ----------------------------------------------------------------------------------------------------------------------------------------------------------- Standards are occasionally deleted when the authority makes changes that impact the intent of the Standard. When this happens, the Standard is deleted and the related GUID is "retired" so the integrity of related alignments is not tarnished by a change in the intent of the Standard. You can still access these Standards via AB Connect but there are a couple of things to keep in mind: * When looking up a standard by GUID (`https://api.abconnect.instructure.com/rest/v4.1/standards/`), the system will respond with the standard regardless of whether it is deleted or not. * When filtering Standards, deleted Standards are excluded from filter results unless the filter criteria explicitly includes Standards with `deleted` status. E.g. `status EQ 'deleted'` or `status IN ('active','deleted')` * AB Connect tracks deleted Standards back to January 2008. Due to the evolution of the AB Connect data model, the amount of metadata available on deleted standards varies over time. Standards deleted in January 2008 have less metadata than modern standards. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-populate-your-local-cache-with-ab-connect-data) How To Populate Your Local Cache With AB Connect Data --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Many AB Connect customers cache the data locally to support analytics and other operations that require performant combination of AB Connect data with local data. This article discusses the options for downloading that initial cache. The first consideration is when your v4.1API access was enabled vs. when you became an Academic Benchmarks partner. If you are a new partner, the easiest approach is to implement use of the Events endpoint and start with `seq GT 0`. This will download all events as each document is added to your license and you can use these events to populate your local cache. See Using Events As A New Partner in the [Events documentation](https://developerdocs.instructure.com/services/ab-connect/reference/events) for more details. However, if you were a partner before v4.1was enabled for your account (or you became a customer before November 2018), the initial events to add documents to your license don't exist. In that case, a common approach is to have your system [Navigate the Standards Organizational Structure](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-navigate-the-standards-organizational-structure) and cache the Standards as the system walks the structure. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-efficiently-update-your-local-cache-with-the-latest-ab-connect-data) How To Efficiently Update Your Local Cache With The Latest AB Connect Data --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Many Academic Benchmarks partners opt to take advantage of AB Connect's fast search architecture to directly power their system search, standards and alignment activities while others prefer to cache the data locally. If you cache data, AB Connect has solutions that make updates and workflows like alignment maintenance efficient. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#standards-updates) Standards Updates Standards evolve over time. Authorities frequently make minor changes to individual standards and periodically adopt new documents that replace existing standards. When a new document is adopted, it may be added to your standards delivery. Either way, it is important that you keep your cache fresh. While it is possible to purge your cache and retrieve the entire set of Standards periodically, that is inefficient and does not support the maintenance of alignments and other related data. It is more efficient and useful to request differential updates. With AB Connect, you do this using the `events` endpoint. You can read more about Events and keeping your cache current in the section on the [Events endpoint](https://developerdocs.instructure.com/services/ab-connect/reference/events) . ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#alignment-updates) Alignment Updates As standards evolve and your content library changes and expands, you will need to update your local storage of alignments. See the paragraph titled "Locating Recent Changes to Relationships Between Assets and Standards" in the [Managing and Predicting Relationships](https://developerdocs.instructure.com/services/ab-connect/reference/relationships#managing-relationships-between-assets-and-standards#creating-relationships) section for information on retrieving alignment changes. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#asset-updates) Asset Updates If AB Connect is the system of truth for your content's metadata profiles, you can update your cache by locating and retrieving modified Assets. The following filter returns assets updated since September 2018. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-map-alignments-from-one-document-to-another) How To Map Alignments From One Document To Another --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Content publishers often partner with Academic Benchmarks as they expand their offerings by bringing content to new market segments and geographies through alignment to new standards. With such expansion, many publishers experience the challenge of aligning content and maintaining alignments across multiple states and authorities. AB Connect offers a wide array of metadata and functionality to assist. There are a couple of approaches you can take using AB Connect to address this challenge. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#relationships) Relationships AB Connect includes standards relationships, which allow publishers to leverage existing standards alignments and expedite alignment of content from one authority to another, or across multiple states and markets segments. The advantage of this approach is a degree of automation that can drastically reduce the number of correlations that need to be hand reviewed. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#crosswalks) Crosswalks Some standards documents have direct relationships to other documents - either historical (2021 document replaces the 2017 document) or from other authorities (a state derives its standards from the Common Core). For documents without a data relationship or a state published relationship to other standards, Academic Benchmarks subject matter experts curate a crosswalk relationship. E.g. Texas standards are not related to the Common Core. Academic Benchmarks curates relationships between various documents and captures the relationships in the Crosswalks field. Standards related as Crosswalks share at least one skill. Crosswalks are based on close relationships where they are established by the authority and hand curation where they are not. Not all documents are directly crosswalked to every other document. At the time of the writing of this documentation, math, science and ELA in the US should all be mapped to at least one common document but the scope of coverage in subjects and regions will continue to expand. You can use the `predictions` endpoint to help get Crosswalks between documents that are not directly connected. See [Generating Predictions](https://developerdocs.instructure.com/services/ab-connect/reference/relationships#generating-predictions) for details. Note that Crosswalks are not available on all accounts. See the section on [Licensing Considerations](https://developerdocs.instructure.com/services/ab-connect/introduction/licensing) for a discussion on the licensing required for access to Crosswalks. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#derivatives) Derivatives If your content is aligned to a national document, you can use the Derivatives Relationship on the national standards to locate standards in a derived document - E.g. Common Core Math to California Common Core Content Standards. Derivatives carry two key pieces of metadata to assist with automation: "same text" and "same Concepts." The former is true ("Y" in the API data model) if the standard in the national document is character for character the same as the standard in the derived document. The latter is true if the standard in the national document covers the same concepts. Derivatives with the same text and concepts can typically be automatically mapped to content. Most organizations automatically map derivatives with same concepts as well, but we recommend making that decision in coordination with your editorial team. Notes: * In many cases, an authority will clearly state that their Standards are derived from a national document but in cases where they disclaim derivation but are very closely modeled after the national document, AB Connect still exposes derivative relationships. * While a Standard will often have a 1:1 mapping with a Standard in a derived state, it is possible that there are multiple Standards derived from the single national Standard. This typically happens when a state breaks out a compound Standard into multiple, more specific Standards. * There are relationships where the Standards have the same text but same Concepts is N. This occurs when a state has limited or otherwise changed the intent of the Standard through verbiage found in the hierarchical parentage of the Standard. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#origins) Origins If your content is aligned to a derived document and you want to map to the national document, the Origins Relationship helps you do that - E.g. Georgia Standards of Excellence ELA to Common Core ELA. It is the inverse of the derivatives relationship. The approach and metadata are the same as that described above in the Derivatives section. Note that just as there may be multiple standards derived from one national standard, it is possible that a derived standard is a combination of multiple origin standards. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#peer-derivatives) Peer Derivatives If your content is aligned to a derived document and you want to map to another state document derived from the same origin, you can use the Peer Derivatives Relationship. Peer derivatives are related through a common Origin Standard. An example of this relationship includes two states that have adopted the Common Core State Standards. The approach and metadata are largely the same as that of origins and derivatives but there is one caveat: the "same text" and "same concepts" metadata on the peer derivatives is with respect to the origin - not the standard you are starting from. In order to be confident that the existing alignment equates with an alignment to the new destination, both the origin AND the peer derivative same text (and/or same concepts) flags should be true. If the origin same text is Y but the peer derivative is N, then the text of the Standard you are starting with is not the same as the text of the peer derivative. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#peers) Peers Derivatives, origins and peer derivatives are great where they exist, but how do you handle mapping alignments to non-derived authorities (e.g. Common Core to Texas) or where there is no derivative, origin or peer derivative in the destination document? Two additional relationships are provided between these documents: Peers and Crosswalks. This section gives an overview of Peers. See the above section for more details on Crosswalks. Peers are standards that are related through alignments to common educational resources. These standards are crowd sourced from curated, targeted, resources. Due to the nature of peers, editorial staff typically review the system suggestions for applicability for their specific use case. Note that peer relationships are strongest with math and ELA. They also offer relatively good coverage for science (grades 3-12) and some limited coverage for social studies (grades 6-12). #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#topics) Topics Where no other relationships yield good results, use Topics to casts a broad net and identify standards covering the same general topic in the desired document. This is a two-step process where you get the list of Topics a standard is related to and then look for standards in the destination state related to one or more of those Topics. Topics cover multiple grades, so you may want to add grade filtering when looking for similar standards. Topics offer the loosest of the relationships and is good for identifying Standards that editorial staff may want to consider when other relationships don't provide more specific suggestions. Topics are available for the core 4 subject areas. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#resources) Resources Academic Benchmarks has developed example application that can help accelerate the integration of relationships into your system and processes. See the [Standards Relationship Browser](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#standards-relationships-browser) and [Standards Relationship Report generator](https://developerdocs.instructure.com/services/ab-connect/introduction/examples#standards-relationships-report) in our [Examples](https://developerdocs.instructure.com/services/ab-connect/introduction/examples) section. They include code samples that can be downloaded from the AB Connect repository and used as a starting point for your implementation. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#limitations) Limitations 1. In many instances the Standard in question does not have an exact match in the destination state. Since using relationships does not take the specifics of the content under consideration, your degree of automation is limited. Where there aren't exact matches, editorial staff will need to review system suggestions. With fewer and fewer states adhering to the Common Core, you may find that this isn't the most efficient approach for your team. 2. Content alignment is not a once and done situation. Standards are constantly evolving. Sometimes Standards within an existing document change. Other times the entire document is replaced by a new version. A one-time mapping using relationships doesn't address the maintenance of alignments over time. 3. Relationships tend to be strongest and most prevalent with ELA, math and science. Topics have good coverage of social studies. 4. Peer relationships are limited to authorities in the US. 5. Crosswalk relationships are currently focused on authorities in the US with limited support in other regions. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#tagging-content-and-recommending-relationships) Tagging Content and Recommending Relationships While using relationships to move from one document to another is relatively easy and efficient, at the end of the process you only have one more document's worth of alignments. As you expand your perspective to additional documents, as well as changes over time, you'll need to repeat this process. As you approach alignments across many authorities at one time, however, our robust machine-learning powered recommendation engine that uses your previous decisions to inform predictions can set you up to handle changes over time with a more holistic approach to alignment. To assist, Academic Benchmarks created a recommendation engine that uses metadata descriptions of content to recommend alignments. In AB Connect, the content is represented by an Asset object and the metadata description is often referred to as an Asset profile. Using either the API with a user interface in your system or AB Connect's alignment web solution, aligners describe content by tagging it with standards and education search terms. The recommendation engine uses the profile to make recommendations for additional standards. While this approach takes more upfront effort from aligners to describe the content, it has several distinct advantages: 1. It works across all authorities and most subjects. 2. The engine updates recommendations as Standards are changed and new Standards become available easing long term maintenance. 3. Recommendations are made in the context of the specific content. The process of using relationships ignores the subtlety of the content description and errors can drift into alignments. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-offer-your-partners-advanced-discovery-of-your-assets) How To Offer Your Partners Advanced Discovery Of Your Assets ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- AB Connect can be a powerful solution for interoperability challenges between systems exchanging content. It is possible to share Assets with other AB Connect customers (referred to as Providers). The Provider who owns the Assets is referred to as the Owner. Providers that can search and read the Asset metadata profile are referred to as Consumers. When access is shared, the Consumer can use AB Connect to include the Owner's Assets in their search results and retrieve the Asset descriptions to power activities like displaying alignment information and finding related content. For example, if you are a Learning Management System (LMS) and have purchased lesson plans from one Provider and assessment questions from another, you can use AB Connect to search the lesson repository, retrieve the description of the plan and look for related questions in the assessment repository (Assets that cover the same Standards and Concepts as the lesson). This capability is facilitated using the Providers resource as well as the Owner property on the Assets. To share your Assets with other Providers, contact [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#442526373134342b3630042d2a3730363127303136216a272b297b3731262e212730790506617674072b2a2a2127306176740537372130617674172c25362d2a23) . We can configure the sharing for you. When using AB Connect for interoperability, you don't need to be concerned about the AB license status of your partners. AB Connect automatically handles the Consumer's licensing and only shares data with them that they have been licensed for. This is true for reading the Asset data as well as searching. E.g. if you are using Concepts in your Asset description, a Consumer that is only licensed for Standards will not be able to include Concepts in their search criteria. Similarly, if you are only licensed for Standards, Consumers of your Assets will not be able to find them using Concepts (or Topics) because your Asset descriptions will not include Concepts (or Topics). See the `owner` property in the section on [Assets](https://developerdocs.instructure.com/services/ab-connect/reference/assets#searching-for-assets) for details on searching by owner. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#exchanging-alignment-data-with-partners) Exchanging Alignment Data With Partners ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- A common need in the industry is to exchange alignment and taxonomic metadata with partners to support reporting and discoverability. E.g. a school district purchases lessons from a provider. An administrator at the district imports the lesson into their LMS. While the lesson data is enough to run the lesson, alignment and taxonomies are required in order to support full discovery of the plans and analytics of the lesson usage. What's the best way to share the content metadata with your partners? ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#recommendation-ab-connects-owner-consumer-capability) Recommendation: AB Connect's Owner/Consumer Capability AB Connect allows you (the Owner) to share your content's description (Asset metadata profile) with your partners (Consumers). The Consumers can retrieve your Asset's metadata directly from AB Connect using the AB Asset GUID. This approach has several advantages: 1. It is concise. One GUID is exchanged with your payload and it conveys the complete Asset metadata profile. 2. Alignments and other descriptive metadata change over time. New Standards documents are published. Alignments are adjusted. Standards are deleted. Concepts and Topics are added to the description. Exchanging the Asset GUID allows the Consumer to refresh the Asset profile dynamically. 3. Your AB Connect license is likely not the same as your partner's license. If you send them AB GUIDs that are not in their license, it is a violation of the license agreement and confusing for the recipient since they won't have matching data on their end. If you exchange data using the Asset profile, AB Connect filters the Consumer's view of the Asset to match their license. 4. Using this approach also enables your partners to search your Assets via AB Connect using the full Asset metadata profile. See the [section above on Advanced Discovery](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-share-alignments-with-your-partners-and-offer-them-advanced-discovery-of-your-assets) for more information on this advantage. To setup your account to share your Asset descriptions with your partners, contact [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#c8a9aabbbdb8b8a7babc88a1a6bbbcbabdabbcbdbaade6aba7a5f7bbbdaaa2adabbcf5898aedfaf88ba7a6a6adabbcedfaf899bdadbbbca1a7a6edfaf8a7baedfaf88ba7a5a5ada6bcedfaf8edfaf0befce6f9edfaf8899881edfaf1) . #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#exchanging-the-asset-guid-via-the-common-cartridge-thin-common-cartridge-lti-or-qti) Exchanging The Asset GUID Via The Common Cartridge, Thin Common Cartridge, LTI or QTI The taxonomic classification property in the LOM section of the manifest is a convenient place to pass the AB Asset GUID. As you can see in the example below, the GUID can be exchanged as a taxonomy entry using the source name `AcademicBenchmarksAssetGUID`. For example: ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#alternative-approach) Alternative Approach While using the Asset GUID to exchange metadata with your partners is a better approach, there may be situations where you are limited to passing Standard GUIDs to a partner. The following sections outline how to include AB GUIDs in your payload. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#exchanging-ab-standards-guids-via-learnosity) Exchanging AB Standards GUIDs Via Learnosity Learnosity has integrated directly with AB Connect. [This section of their documentationarrow-up-right](https://help.learnosity.com/hc/en-us/sections/360001598818-Academic-Benchmarks) describes their implementation and how to configure Learnosity to work with AB for your content. While you can use custom tags in Learnosity to store your AB GUIDs with any tag name you'd like, to maximize compatibility with Learnosity's integration with AB Connect, we recommend you use the tag name `lrn_ab_aligned`. Following the Learnosity API documentation on setting tags, the tags portion of the payload might look like: **References** * [Learnosity integration with Academic Benchmarks standards using Tagsarrow-up-right](https://help.learnosity.com/hc/en-us/articles/360006017517-Learnosity-integration-with-Academic-Benchmarks-standards-using-Tags) * [Configuring Academic Benchmarks standards integrationarrow-up-right](https://help.learnosity.com/hc/en-us/articles/360005458497-Configuring-Academic-Benchmarks-standards-integration) * [Intro to Tagging and Using it on the Authoring Sitearrow-up-right](https://authorguide.learnosity.com/hc/en-us/articles/360000581278-What-is-Tagging-) * [Setting Up Tagsarrow-up-right](https://authorguide.learnosity.com/hc/en-us/articles/360000434818-Creating-Tag-Types-and-Tags-Using-the-Tag-Manager) * [Tagging Using the Embeddable APIarrow-up-right](https://demos.learnosity.com/authoring/item-list.php) * [Setting Tags via the Data APIarrow-up-right](https://reference.learnosity.com/data-api/endpoints/itembank_endpoints#setTags) #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#exchanging-ab-standard-guids-via-ed-fi) Exchanging AB Standard GUIDs Via Ed-Fi The Ed-Fi data model supports the tagging of assessment items with AB Standards GUIDs. In the Ed-Fi model, they are referred to as `LearningStandards` and the AB GUID is stored as the `LearningStandardId`. Note that the Ed-Fi ODS will typically only house standards for the given education agency and any related origin standards that they are derived from. You will be unable to add alignments to standards in other states/districts. **References** * Ed-Fi Data Standard v3.0 * [Assessment Model Overviewarrow-up-right](https://techdocs.ed-fi.org/display/EFDS30/Assessment+-+UDM+v3.0) * [AssessmentItem Documentationarrow-up-right](http://schema.ed-fi.org/datahandbook-v30/Ed-Fi-Handbook-Index.html#/AssessmentItem542) * [LearningStandard Documentationarrow-up-right](http://schema.ed-fi.org/datahandbook-v30/Ed-Fi-Handbook-Index.html#/LearningStandard567) * Ed-Fi Data Standard v2.2 * [Assessment Model Overviewarrow-up-right](https://techdocs.ed-fi.org/display/EFDS22/Assessment+-+UDM+v2.2) * [AssessmentItem Documentationarrow-up-right](http://schema.ed-fi.org/datahandbook-v22/Ed-Fi-UDM-Handbook-Index.html#/AssessmentItem542) * [LearningStandard Documentationarrow-up-right](http://schema.ed-fi.org/datahandbook-v22/Ed-Fi-UDM-Handbook-Index.html#/LearningStandard567) #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#exchanging-ab-standards-guids-via-the-common-cartridge-thin-common-cartridge-lti-or-qti) Exchanging AB Standards GUIDs Via The Common Cartridge, Thin Common Cartridge, LTI or QTI IMS Global has a data element to help support the transmission of related Standards data. There does not appear to be a single page on the IMS site that concisely describes the exchange with explanations and examples, so we'll summarize it here. **Recommended Representation** The `curriculumStandardsMetadata` object has one optional property `providerId`. Per the IMS Global GUID registry the Academic Benchmarks provider ID is "**AB**". The `setOfGUIDs` object has optional properties `region` and `version`. In spite of the inappropriate use of the phrase `region`, it is our recommendation that providers use the authority description (`document.publication.authorities[0].descr`) for this field. We'd recommend supplying the document adoption year (`document.adopt_year`) for the `version` and create a new `setOfGUIDs` for each document for which they are supplying Standards. The `setOfGUIDs` body consists of repeated `labelledGUID` objects. That object consists of an optional `label` element and a required `GUID` element. For example: **References** * [Curriculum Standards Metadata section of the Common Cartridgearrow-up-right](https://www.imsglobal.org/cc/ccv1p3/imscc_Implementation-v1p3.html#toc-48) * [Thin Common Cartridge Curriculum Standards Metadata descriptionarrow-up-right](https://www.imsglobal.org/cc/CCv1p0thin/ims_thinCC_impl-v1p0.html#_Toc419292016) (defers to the Common Cartridge definition) * [Thin Common Cartridge Examplearrow-up-right](https://www.imsglobal.org/cc/CCv1p0thin/ims_thinCC_impl-v1p0.html#_Toc419292024) * [Common Cartridge XSDarrow-up-right](http://www.imsglobal.org/profile/cc/ccv1p3/ccv1p3_imscsmd_v1p0.xsd) * [IMS Global GUID registryarrow-up-right](https://www.imsglobal.org/cc/guidregistry1.cfm) #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#handling-problems-consuming-alignments-from-a-partner) Handling Problems Consuming Alignments From A Partner In some situations, the consumer of alignment data may have difficulties resolving AB GUIDs they receive in a payload. The difficulties arise from two sources: stale partner caches of AB data and license differences. Both of these issues are addressed when using the API and using the Asset GUID as a means to exchange data. However, if you are exchanging individual Standards GUIDs, here are some tips: 1. If you receive a GUID that you don't recognize, it is either because it isn't a valid AB GUID, you aren't licensed for that particular GUID (e.g. it may be in a state or subject you haven't licensed), your cache is out of date or your partner's cache is out of date. 2. If you cache data, try refreshing your cache or call the API to retrieve that specific GUID. If your cache is stale and the GUID is new, the problem should be resolved. One alternative solution is to always use the API directly rather than cache data so you don't have to worry about a stale cache. 3. If your cache is up to date or you use the API dynamically, your partner may have a stale cache. In that case, the GUID they passed you may no longer be active. If you request the Standard by GUID from the API, even deleted Standards will be returned. You can check the Standard's status to confirm that it has been deleted. 4. Regardless of whether you cache data or not, if you aren't licensed for a GUID your partner passed to you, you won't be able to access it. However, you can verify this (and determine which additional units you may want to license) by requesting the Standard by GUID from the API. If it is a valid GUID but you aren't licensed for it, the API will respond with a 403. The error payload will include information that will help you work with [AB Supportenvelope](https://developerdocs.instructure.com/cdn-cgi/l/email-protection#d0b1b2a3a5a0a0bfa2a490b9bea3a4a2a5b3a4a5a2b5feb3bfbdefa3a5b2bab5b3a4ed9192f5e2e093bfbebeb5b3a4f5e2e081a5b5a3a4b9bfbef5e2e0bfa2f5e2e093bfbdbdb5bea4f5e2e0f5e2e8a6e4fee1f5e2e0918099f5e2e9) to add it to your license. 5. If requesting the Standard by GUID from the API doesn't resolve the issue, the GUID your partner passed is not a valid AB GUID. Contact your partner to help resolve the issue. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#interpreting-courses) Interpreting Courses --------------------------------------------------------------------------------------------------------------------------------------- In addition to traditional Standards, some authorities provide course definitions that are groups of Standards defined elsewhere but combined separately into a course. Course definitions are captured into publications where the `publication_type` is set to `course`. Those are special publications where the top level of Standards represent courses. The Standards that must be covered in the course are available in the `course_standards` relationship on the Standard. So, for example, to see the Standards that comprise the Florida CPALMS Language Arts - Kindergarten (#5010041) course, you would use the falling call: The `related_courses` relationship points in the opposite direction, so you can get a list of courses that a Standard is used in by examining the `related_courses` relationship. Since `related_courses` points in the opposite direction of `course_standards`, an alternative call to the one above that returns the same data would be: Or you could use a call like the following to get information on all of the courses that reference a standard: [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#managing-alignments-as-standards-evolve) Managing Alignments as Standards Evolve ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- From time to time, authorities edit their Standards and make minor or major changes. Minor changes are often reflected as change events on Standards but they can also result in the deleting of one Standard and a creation of another. This typically happens when the modification of the Standard is significant enough that it would impact alignments. In this case, the old GUID is retired and a new one to represent the new Standard is created. Major changes come in the form of new documents that replace all of the standards in older documents. AB Connect offers a couple of solutions to help you manage your alignments as changes occur. One approach is to use AB Connect's prediction algorithms which maintain alignments based on the content description rather than fixed relationships with specific standards. This requires little to no extra work as alignments change. Another approach is to use the Standards relationships available in AB Connect. AB Connect supplies maps from outdated Standards to their replacements. We often refer to these as migration maps. These maps are exposed in the `replaces` and `replaced_by` relationships on the Standards. The `replaced_by` relationship points forward from outdated Standards to their replacements. The `replaces` relationship points backwards from the new Standards. If you would like to use the prediction algorithms to maintain alignments, see the section on [Managing and Predicting Relationships](https://developerdocs.instructure.com/services/ab-connect/reference/relationships#managing-relationships-between-assets-and-standards/creating-relationships) . If you would prefer to use the migration maps, the first step in the process would be to identify which workflow will work best for your organization. There are two general approaches that can be taken: starting with Standards or starting with Assets. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#starting-with-standards) Starting with Standards You may want to start with Standards if you have a local cache and use the `events` endpoint to sync the cache. In this case, you would get notifications for Standards that have been deleted or new documents that are available. You may have a different process for determining which new Standards you need to migrate alignments to or which old Standards you need to update. But whatever the approach, you start with a list of either outdated Standards or new Standards and you need to update alignments to ensure they are current. If you are starting with a deleted or outdated Standard, the first step is to locate its replacement(s)(their may be more than one replacement). You can use the `replaces` relationship to search for standards that replace the Standard in question. E.g. You can combine search criteria if you need to narrow the focus. For example, you can add document GUIDs to look for replacements in the same document when an individual Standard has been deleted. The example above returns standard `A34FE67F-9AEB-4A04-B14C-59BAE6A6404C` which is NOT a "same concept" match. In this case, the interpretation of the applicability of the new Standards to the alignment may need to be reviewed by an aligner. If you are only interested in exact concept matches, you can add that as a criteria. E.g. But what about when a new document is added? How do you determine which Standards are being outdated? You can reverse the search direction. E.g. You know South Dakota released their 2018 English Language Arts Standards but you are currently aligned to the 2010 Standards. Where do you start? Grab a Standard from the 2018 document and either look at its `replaces` list or search for Standards in the 2010 document that are replaced by the Standard you are focusing on. We'll do the latter here because it is more interesting. Here you'll get `00000CD0-D9E7-11E2-BBB0-00249DFF4B22`. If you examine the relationship metadata you'll notice that they have the same concepts but not exact same wording. Once you have the Standard that is being replaced and the Standard that is replacing it, the next step is to identify which Assets will need to be re-aligned. To locate Assets aligned to an outdated Standard (e.g. `0011921D-A923-435C-985F-FBB3C810E735`), you can use a call like: How you update the alignments is dependent on your editorial processes. E.g. can you automatically migrate alignments to new Standards as long as they have the same concepts? Or do you require the same text? What if the text is the same but the Standard moved to a new grade? These are questions that the editorial staff has already answered but they will need to be codified and applied to any automation you build. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#starting-with-assets) Starting with Assets Now let's flip that over. Rather than tightly monitor Standards, some organizations prefer a periodic review of their content alignments. In this case, you start with the Assets and look for alignments that need to be updated. It is easy to locate Asset alignments to deleted standards. For a given Asset, you can find alignments to deleted standards using a call like: Here we only search for Standards that are marked as `accepted`. There is no need to update `rejected` alignments and `predicted` alignments are automatically updated on the next snapshot (POST a set of predictions to the Asset). Determining what alignments an Asset should have to new documents isn't possible directly from the Asset itself without using the alignment prediction functionality or examining the Standards (or at least documents) involved. So to add alignments to new documents, either use predictions, combine your asset centric approach with the Standards approach mentioned above or start with something like an alignment gap report. One search you may find helpful is locating all Assets aligned to an older version of a document. So using the example that we used in the Standards centric approach above, the older document is South Dakota's 2010 Language Arts Standards (`E1C9B054-DA22-11E2-95B3-3B359DFF4B22`). To locate Assets that are good candidates for alignment to the 2018 document, use a call similar to: [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#optimizing-use-of-ab-connect) Optimizing Use of AB Connect ------------------------------------------------------------------------------------------------------------------------------------------------------- When working with APIs, it's important to keep performance optimized. There are a few basic practices that can ensure top performance when working with AB Connect. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#faceting) Faceting Calculating facets can be time consuming. Custom attributes on Assets can be particularly challenging as they may have unique values which will significantly impact performance. Only facet properties you need and avoid facetting properties that have unique values. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#sparse-fieldsets) Sparse Fieldsets Another source of processing and network waste is the processing and returning large quantities of unused fields. We recommend using the `fields` parameter to request only the specific fields required for each call. Use `fields[]=*` only for discovery during programming. To ensure the use of wildcards with the `fields` parameter does not impact overall system performance, such calls are throttled to 2 per second. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#request-only-what-you-need-only-when-you-need-it) Request Only What You Need, Only When You Need It Using sparse fieldsets and minimizing facet requests are simple changes that can have significant impact on the response times of calls, but the design of the your system's interaction with the API may have a larger impact. It's tempting to make few calls and pull more data per call because you may need it. While this seems efficient on the surface, it can actually have notable impact on the overall API experience - particularly for user interfaces. In practice, it is typically more efficient and more interactive to make multiple calls and request only enough data to meet the immediate need. Several examples: #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#navigating-standards) Navigating Standards One common mistake is to attempt to load a large set of Standards to populate a tree or set of drop-downs. This could take many seconds depending on whether you are loading a section, document or publication. A best practice is to lazy load the UI and request just enough information to show the user what they requested. The AB Connect Standards browser uses this approach for a very efficient interactive experience. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#searching-for-assets) Searching for Assets Another common scenario is searching for Assets and alignments. It is tempting to show all results or load large pages of Assets but this can result in a slow user experience and users don't typically scroll through large sets of data. It is better to show them a small page of results quickly and allow them to refine their search or page/infinite scroll the results. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#showing-appropriate-amount-of-information) Showing Appropriate Amount Of Information It is tempting to show a lot of data in your search results but not only can this slow API response times but can clutter the user interface making it difficult to digest and navigate. Avoid things like attempting to show large quantities of properties or alignments in Asset search results. It's better to have a list or tiles with a simple title, perhaps a brief description, subject and grade. The user can use faceting to further narrow results and if they need details they drill down into the individual Asset to see things like alignments, concepts, etc. #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#know-your-browser) Know Your Browser Another common source of waste is retrieving and exposing irrelevant data to your users. If your user is an 8th grade math teacher from California, don't force them to select 8th grade math when searching for content. When displaying alignments, limit your queries to 8th grade math Standards in California. This will significantly reduce the data the system is processing and will speed up the response times. [PreviousLicensing Considerationschevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/licensing) [NextExampleschevron-right](https://developerdocs.instructure.com/services/ab-connect/introduction/examples) Last updated 6 months ago Was this helpful? * [How to Navigate the Standards Organizational Structure](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-navigate-the-standards-organizational-structure) * [Special Considerations When Rendering Standards In User Interfaces](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#special-considerations-when-rendering-standards-in-user-interfaces) * [Representing Standards As Chips](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#representing-standards-as-chips) * [Handling Standards That Have Lists and Addenda](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#handling-standards-that-have-lists-and-addenda) * [Working With Deleted Standards](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#working-with-deleted-standards) * [How To Populate Your Local Cache With AB Connect Data](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-populate-your-local-cache-with-ab-connect-data) * [How To Efficiently Update Your Local Cache With The Latest AB Connect Data](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-efficiently-update-your-local-cache-with-the-latest-ab-connect-data) * [Standards Updates](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#standards-updates) * [Alignment Updates](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#alignment-updates) * [Asset Updates](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#asset-updates) * [How To Map Alignments From One Document To Another](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-map-alignments-from-one-document-to-another) * [Relationships](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#relationships) * [Tagging Content and Recommending Relationships](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#tagging-content-and-recommending-relationships) * [How To Offer Your Partners Advanced Discovery Of Your Assets](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#how-to-offer-your-partners-advanced-discovery-of-your-assets) * [Exchanging Alignment Data With Partners](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#exchanging-alignment-data-with-partners) * [Recommendation: AB Connect's Owner/Consumer Capability](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#recommendation-ab-connects-owner-consumer-capability) * [Alternative Approach](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#alternative-approach) * [Interpreting Courses](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#interpreting-courses) * [Managing Alignments as Standards Evolve](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#managing-alignments-as-standards-evolve) * [Starting with Standards](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#starting-with-standards) * [Starting with Assets](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#starting-with-assets) * [Optimizing Use of AB Connect](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#optimizing-use-of-ab-connect) * [Faceting](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#faceting) * [Sparse Fieldsets](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#sparse-fieldsets) * [Request Only What You Need, Only When You Need It](https://developerdocs.instructure.com/services/ab-connect/introduction/how-to#request-only-what-you-need-only-when-you-need-it) Was this helpful? sun-brightdesktopmoon Copy ... { "count": 2650, "data": { "title": "Next Generation Learning Standards", "acronym": null, "guid": "4D7B5584-9C82-11E7-8A3F-4EABBF03DF2F", "descr": "Next Generation Learning Standards" } }, ... Copy `https://api.abconnect.instructure.com/rest/v4.1/standards?filter[standards]=(document.publication.guid EQ '4D7B5584-9C82-11E7-8A3F-4EABBF03DF2F' AND status EQ 'active')&facet=document&limit=0` Copy ... { "count": 1300, "data": { "descr": "Mathematics", "adopt_year": "2017", "guid": "49C1ACA6-9CC6-11E7-8E55-D1F6CCC8CA83" } } ... Copy `https://api.abconnect.instructure.com/rest/v4.1/standards?filter[standards]=(document.guid EQ '49C1ACA6-9CC6-11E7-8E55-D1F6CCC8CA83')&facet=section&limit=0` Copy ... { "count": 149, "data": { "guid": "48382382-9CC7-11E7-BC16-0295BF03DF2F", "descr": "Algebra II", "seq": 2430 } }, ... Copy `https://api.abconnect.instructure.com/rest/v4.1/standards?filter[standards]=(section.guid eq '6C23310C-6EC0-11DF-AB2D-366B9DFF4B22' and level eq 1)&sort[standards]=seq&fields[standards]=seq,number,statement,children` Copy ... { "attributes": { "number": { "raw": "5.OA", "enhanced": "CCSS.Math.Content.5.OA", "prefix_enhanced": "CCSS.Math.Content.5.OA", "alternate": "5.OA" }, "statement": { "addendums": [], "descr": "Operations and Algebraic Thinking", "combined_descr": "Operations and Algebraic Thinking" } }, "id": "1D9D7C1A-7053-11DF-8EBF-BE719DFF4B22", "type": "standards" }, { "type": "standards", "id": "1DACEABA-7053-11DF-8EBF-BE719DFF4B22", "attributes": { "statement": { "combined_descr": "Number and Operations in Base Ten", "descr": "Number and Operations in Base Ten", "addendums": [] }, "number": { "raw": "5.NBT", "enhanced": "CCSS.Math.Content.5.NBT", "prefix_enhanced": "CCSS.Math.Content.5.NBT", "alternate": "5.NBT" } } } ... Copy `https://api.abconnect.instructure.com/rest/v4.1/standards?filter[standards]=(parent.id eq '1D9D7C1A-7053-11DF-8EBF-BE719DFF4B22')&sort[standards]=seq&fields[standards]=seq,number,statement,children` Copy ... { "attributes": { "number": { "raw": null, "prefix_enhanced": "CCSS.Math.Content.5.OA.A", "enhanced": "CCSS.Math.Content.5.OA.A", "alternate": "5.OA.A" }, "statement": { "combined_descr": "Write and interpret numerical expressions.", "addendums": [], "descr": "Write and interpret numerical expressions." } }, "id": "1D9F7E02-7053-11DF-8EBF-BE719DFF4B22", "type": "standards" }, { "attributes": { "number": { "prefix_enhanced": "CCSS.Math.Content.5.OA.B", "enhanced": "CCSS.Math.Content.5.OA.B", "raw": null, "alternate": "5.OA.B" }, "statement": { "descr": "Analyze patterns and relationships.", "addendums": [], "combined_descr": "Analyze patterns and relationships." } }, "id": "1DA6C82E-7053-11DF-8EBF-BE719DFF4B22", "type": "standards" } ... Copy /assets?filter[assets]=(date_modified_utc gt '2018-09-12 12:00:00') Copy ... ... ... LOMv1.0 discipline AcademicBenchmarksAssetGUID 7E80697A-7440-11DF-93FA-01FD9CFF4B22 ... ... ... ... Copy ... { "tags": [\ {\ "type": "lrn_ab_aligned",\ "name": "000DD508-29E9-11D8-8162-F2F2B6C137B9"\ },\ {\ "type": "lrn_ab_aligned",\ "name": "000b4dc7-adfc-46be-b72a-7a0ed91601fa"\ },\ {\ "type": "lrn_ab_aligned",\ "name": "00109D60-29E9-11D8-A8C1-FD5D7E873ABE"\ }\ ] } ... Copy ... 7E80697A-7440-11DF-93FA-01FD9CFF4B22 7E7EF798-7440-11DF-93FA-01FD9CFF4B22 ... Copy /rest/v4.1/standards/2FADED92-647D-4183-89C1-17F28CF065ED?fields[standards]=statement,number,section,course_standards&include=course_standards Copy /rest/v4.1/standards?filter[standards]=related_courses.id eq '2FADED92-647D-4183-89C1-17F28CF065ED&fields[standards]=number,statement,section' Copy /rest/v4.1/standards/C3B5C384-E1BF-11DC-A10B-B5479DFF4B22?fields[standards]=statement,number,section,related_courses&include=related_courses Copy /rest/v4.1/standards?filter[standards]=replaces.id eq '0011921D-A923-435C-985F-FBB3C810E735' Copy /rest/v4.1/standards?filter[standards]=replaces.id eq '00CAA27E-AF8B-4385-AC22-285B911685B5' and replaces.same_concepts eq Y Copy /rest/v4.1/standards?filter[standards]=replaced_by.id eq '8CB54468-0F56-4767-95DE-6D684CC9244F' and document.guid eq 'E1C9B054-DA22-11E2-95B3-3B359DFF4B22' Copy /rest/v4.1/assets?filter[assets]=alignments.id eq '00000CD0-D9E7-11E2-BBB0-00249DFF4B22' Copy /rest/v4.1/assets/02213D12-0A8A-11E8-AA1B-EB8924FEA1B3/alignments?filter[alignments]=status eq 'deleted' and meta.disposition eq 'accepted' Copy /rest/v4.1/assets?filter[assets]=standards.document.guid eq 'E1C9B054-DA22-11E2-95B3-3B359DFF4B22' sun-brightdesktopmoon --- # Standards | Instructure Developer Documentation Portal The Standards resource can be used to access academic Standards and related metadata. The API provides a simple integration point, eliminates the need to manage Standards data in your organization and system, and provides the foundation for additional connected metadata. Use of the API ensures the most current Standards data is available to your application. One of the greatest benefits of AB Connect is the ability to navigate relationships between Standards, other Standards and Topics. Retrieving the related Standards and Topics is done in a similar fashion as attributes, but they are contained in the JSON API relationships response. Note that due to the JSON API standard, only the type and ID are returned in the relationship data. Keep in mind that the JSON API ID is the same as the AB GUID for these entities. If you'd like to retrieve the data of the related resources, use the `include` parameter. Standards can also be related to Assets. Note that if a Standard is related to an Asset, Topics related to that same Standard automatically become related to Asset as "predicted" relationships when you are licensed for the Academic Benchmarks Topic Taxonomy. Note that this implied relationship is bidirectional, so relating a Topic to an Asset directly also generates predicted Standards relationships. Relationships between Standards and Assets are managed through the Asset endpoint. See the documentation on the [Asset endpoint](https://developerdocs.instructure.com/services/ab-connect/reference/assets) for details. All calls against the Standards resource must be implemented as HTTP GET requests, and must include proper [Partner Authentication Credentials](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication) . [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standards#single-standard) Single Standard ----------------------------------------------------------------------------------------------------------------------------- In its simplest form, you are able to retrieve the details of a specific Standard by appending the AB GUID to the path portion of the URL. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standards#fetching-a-standard) Fetching a Standard get https://api.abconnect.instructure.com/rest/v4.1/standards/{guid} Path parameters guidstringRequired guid of specified standard Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[standards\]stringOptional comma separated list of field names includestringOptional A comma separated list of resource names that will be returned in the response. Standards have relationships with other resources (e.g. other Standards, Topics and Concepts). By default, those related resources are returned as references to other endpoints and only their IDs are included in the response. If you list the related resources by their relationship name in the include statement, the properties of the related resources are included as well. Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobjectOptional Show propertiesplus includedone of\[\]Optional Show available itemsplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json chevron-right 404 Entity not found application/json get /standards/{guid} HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standards#searching-for-standards) Searching for Standards --------------------------------------------------------------------------------------------------------------------------------------------- Using filtering and facets, it is possible to retrieve sets of Standards that match specific criteria. These Standards are returned in an array of Standard objects. See the Introduction for an explanation on [filtering](https://developerdocs.instructure.com/services/ab-connect/introduction/introduction-to-odata-filters) and the use of [facets](https://developerdocs.instructure.com/services/ab-connect/introduction/facets) . This section covers the specifics of using these parameters with the Standards resource. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/reference/standards#finding-sets-of-standards) Finding Sets of Standards get https://api.abconnect.instructure.com/rest/v4.1/standards Query parameters partner.idstringRequired Your partner ID - you should have gotten them from AB Support or when you signed up for a sandbox account. auth.signaturestringRequired Signature for the request authorization. auth.expiresstringRequired Expiration timestamp for the authorization. fields\[standards\]stringOptional comma separated list of field names filter\[standards\]stringOptional an ODATA-like query string used to filter sort\[standards\]stringOptional a comma separated list of property names specifying the sort order of the returned results facetstringOptional A comma separated list of facet names that you are requesting the options on. facet\_summarystringOptional A comma separated list of facet names for which you are requesting summary information. includestringOptional A comma separated list of resource names that will be returned in the response. limitnumberOptional The page size for the response dataset. limit must be 100 or less. offsetnumberOptional How far into the dataset you are paging Responses chevron-right 200 OK application/json linksobjectOptional Show propertiesplus metaobjectOptional Show propertiesplus dataobject\[\]Optional Show propertiesplus includedone of\[\]Optional Show available itemsplus chevron-right 400 Bad Request application/json chevron-right 401 Authentication Error application/json get /standards HTTPchevron-down HTTPcURLJavaScriptPython Test it 200 OK chevron-down [PreviousReferencechevron-left](https://developerdocs.instructure.com/services/ab-connect/reference) [NextStandard Collectionschevron-right](https://developerdocs.instructure.com/services/ab-connect/reference/standard-collections) Last updated 6 months ago Was this helpful? * [Single Standard](https://developerdocs.instructure.com/services/ab-connect/reference/standards#single-standard) * [Fetching a Standard](https://developerdocs.instructure.com/services/ab-connect/reference/standards#fetching-a-standard) * [GET/standards/{guid}](https://developerdocs.instructure.com/services/ab-connect/reference/standards#get-standards-guid) * [Searching for Standards](https://developerdocs.instructure.com/services/ab-connect/reference/standards#searching-for-standards) * [Finding Sets of Standards](https://developerdocs.instructure.com/services/ab-connect/reference/standards#finding-sets-of-standards) * [GET/standards](https://developerdocs.instructure.com/services/ab-connect/reference/standards#get-standards) Was this helpful? sun-brightdesktopmoon Copy GET /rest/v4.1/standards/{guid}?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text" }, "meta": { "took": 1 }, "data": { "type": "text", "relationships": { "related_courses": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "breakout_origins": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "ancestors": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "topics": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "peers": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "breakouts": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "crosswalks": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "replaced_by": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "replaces": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "children": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "concepts": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "derivatives": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "origins": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "peer_derivatives": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "parent": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "course_standards": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "contexts": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } }, "associations": { "data": [\ {\ "type": "text",\ "id": "text"\ }\ ], "links": { "related": "text" } } }, "attributes": { "seq": 1, "captured_by": "text", "utilizations": [\ {\ "type": "alignable",\ "guid": "text"\ }\ ], "uri": "text", "statement": { "addendums": [\ {\ "seq": 1,\ "add_context": "Y",\ "descr": "text",\ "position": "before"\ }\ ], "combined_descr": "text", "descr": "text" }, "level": 1, "date_modified_utc": "text", "status": "active", "legends": [\ {\ "symbol_position": "before",\ "symbol": "text",\ "descr": "text"\ }\ ], "standard_type": "organizational", "label": "text", "disciplines": { "strands": [\ {\ "descr": "text",\ "guid": "text"\ }\ ], "ece_domains": [\ {\ "guid": "text",\ "code": "text",\ "descr": "text"\ }\ ], "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ], "genres": [\ {\ "code": "text",\ "guid": "text",\ "descr": "text"\ }\ ] }, "alt_identifiers": [\ {\ "type": "GUID",\ "source": "canonical",\ "id": "text"\ }\ ], "date_deleted_utc": "text", "in_list": "Y", "guid": "text", "key_ideas": [\ {\ "guid": "text",\ "concepts": [\ {\ "descr": "text",\ "guid": "text"\ }\ ]\ }\ ], "document": { "implementation_year": "text", "descr": "text", "date_modified_utc": "text", "source_url": "text", "assessment_year": "text", "publication": { "descr": "text", "source_url": "text", "extended_descr": "text", "regions": [\ {\ "guid": "text",\ "descr": "text",\ "type": "country",\ "code": "text"\ }\ ], "authorities": [\ {\ "guid": "text",\ "descr": "text",\ "acronym": "text"\ }\ ], "acronym": "text", "publication_type": "standard", "guid": "text" }, "guid": "text", "obsolete_year": "text", "disciplines": { "primary_subject": { "code": "text", "descr": "text", "guid": "text" } }, "adopt_year": "text", "revision_year": "text" }, "deepest": "Y", "number": { "root_enhanced": "text", "enhanced": "text", "prefix_enhanced": "text", "raw": "text", "alternate": "text" }, "education_levels": { "ece_ages": [\ {\ "guid": "text",\ "descr": "text",\ "seq": 1\ }\ ], "grades": [\ {\ "guid": "text",\ "descr": "text",\ "code": "text",\ "seq": 1\ }\ ] }, "section": { "guid": "text", "seq": 1, "date_modified_utc": "text", "descr": "text", "implementation_year": "text", "number": "text", "assessment_year": "text", "revision_year": "text", "label": "text", "obsolete_year": "text", "adopt_year": "text", "disciplines": { "primary_subject": { "code": "text", "descr": "text", "guid": "text" } } }, "extensions": [\ {\ "type": "reference",\ "guid": "text",\ "descr": "text"\ }\ ], "has_list": "text", "topic_organizer": "text" }, "id": "text" }, "included": [\ {\ "type": "text",\ "relationships": {\ "related_courses": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakout_origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "ancestors": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "topics": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peers": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakouts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "crosswalks": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaced_by": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaces": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "children": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "concepts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peer_derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "parent": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "course_standards": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "contexts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "associations": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ },\ "attributes": {\ "seq": 1,\ "captured_by": "text",\ "utilizations": [\ {\ "type": "alignable",\ "guid": "text"\ }\ ],\ "uri": "text",\ "statement": {\ "addendums": [\ {\ "seq": 1,\ "add_context": "Y",\ "descr": "text",\ "position": "before"\ }\ ],\ "combined_descr": "text",\ "descr": "text"\ },\ "level": 1,\ "date_modified_utc": "text",\ "status": "active",\ "legends": [\ {\ "symbol_position": "before",\ "symbol": "text",\ "descr": "text"\ }\ ],\ "standard_type": "organizational",\ "label": "text",\ "disciplines": {\ "strands": [\ {\ "descr": "text",\ "guid": "text"\ }\ ],\ "ece_domains": [\ {\ "guid": "text",\ "code": "text",\ "descr": "text"\ }\ ],\ "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ],\ "genres": [\ {\ "code": "text",\ "guid": "text",\ "descr": "text"\ }\ ]\ },\ "alt_identifiers": [\ {\ "type": "GUID",\ "source": "canonical",\ "id": "text"\ }\ ],\ "date_deleted_utc": "text",\ "in_list": "Y",\ "guid": "text",\ "key_ideas": [\ {\ "guid": "text",\ "concepts": [\ {\ "descr": "text",\ "guid": "text"\ }\ ]\ }\ ],\ "document": {\ "implementation_year": "text",\ "descr": "text",\ "date_modified_utc": "text",\ "source_url": "text",\ "assessment_year": "text",\ "publication": {\ "descr": "text",\ "source_url": "text",\ "extended_descr": "text",\ "regions": [\ {\ "guid": "text",\ "descr": "text",\ "type": "country",\ "code": "text"\ }\ ],\ "authorities": [\ {\ "guid": "text",\ "descr": "text",\ "acronym": "text"\ }\ ],\ "acronym": "text",\ "publication_type": "standard",\ "guid": "text"\ },\ "guid": "text",\ "obsolete_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ },\ "adopt_year": "text",\ "revision_year": "text"\ },\ "deepest": "Y",\ "number": {\ "root_enhanced": "text",\ "enhanced": "text",\ "prefix_enhanced": "text",\ "raw": "text",\ "alternate": "text"\ },\ "education_levels": {\ "ece_ages": [\ {\ "guid": "text",\ "descr": "text",\ "seq": 1\ }\ ],\ "grades": [\ {\ "guid": "text",\ "descr": "text",\ "code": "text",\ "seq": 1\ }\ ]\ },\ "section": {\ "guid": "text",\ "seq": 1,\ "date_modified_utc": "text",\ "descr": "text",\ "implementation_year": "text",\ "number": "text",\ "assessment_year": "text",\ "revision_year": "text",\ "label": "text",\ "obsolete_year": "text",\ "adopt_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ }\ },\ "extensions": [\ {\ "type": "reference",\ "guid": "text",\ "descr": "text"\ }\ ],\ "has_list": "text",\ "topic_organizer": "text"\ },\ "id": "text"\ }\ ] } Copy GET /rest/v4.1/standards?partner.id=text&auth.signature=text&auth.expires=text HTTP/1.1 Host: api.abconnect.instructure.com Accept: */* Copy { "links": { "self": "text", "first": "text", "last": "text", "next": "text", "prev": "text" }, "meta": { "took": 1, "limit": 1, "count": 1, "offset": 1, "facets": [\ {\ "count": 1,\ "facet": "text",\ "details": [\ {\ "data": {\ "descr": "text",\ "code": "text",\ "guid": "text"\ },\ "count": 1\ }\ ]\ }\ ] }, "data": [\ {\ "type": "text",\ "relationships": {\ "related_courses": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakout_origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "ancestors": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "topics": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peers": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakouts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "crosswalks": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaced_by": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaces": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "children": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "concepts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peer_derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "parent": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "course_standards": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "contexts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "associations": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ },\ "attributes": {\ "seq": 1,\ "captured_by": "text",\ "utilizations": [\ {\ "type": "alignable",\ "guid": "text"\ }\ ],\ "uri": "text",\ "statement": {\ "addendums": [\ {\ "seq": 1,\ "add_context": "Y",\ "descr": "text",\ "position": "before"\ }\ ],\ "combined_descr": "text",\ "descr": "text"\ },\ "level": 1,\ "date_modified_utc": "text",\ "status": "active",\ "legends": [\ {\ "symbol_position": "before",\ "symbol": "text",\ "descr": "text"\ }\ ],\ "standard_type": "organizational",\ "label": "text",\ "disciplines": {\ "strands": [\ {\ "descr": "text",\ "guid": "text"\ }\ ],\ "ece_domains": [\ {\ "guid": "text",\ "code": "text",\ "descr": "text"\ }\ ],\ "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ],\ "genres": [\ {\ "code": "text",\ "guid": "text",\ "descr": "text"\ }\ ]\ },\ "alt_identifiers": [\ {\ "type": "GUID",\ "source": "canonical",\ "id": "text"\ }\ ],\ "date_deleted_utc": "text",\ "in_list": "Y",\ "guid": "text",\ "key_ideas": [\ {\ "guid": "text",\ "concepts": [\ {\ "descr": "text",\ "guid": "text"\ }\ ]\ }\ ],\ "document": {\ "implementation_year": "text",\ "descr": "text",\ "date_modified_utc": "text",\ "source_url": "text",\ "assessment_year": "text",\ "publication": {\ "descr": "text",\ "source_url": "text",\ "extended_descr": "text",\ "regions": [\ {\ "guid": "text",\ "descr": "text",\ "type": "country",\ "code": "text"\ }\ ],\ "authorities": [\ {\ "guid": "text",\ "descr": "text",\ "acronym": "text"\ }\ ],\ "acronym": "text",\ "publication_type": "standard",\ "guid": "text"\ },\ "guid": "text",\ "obsolete_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ },\ "adopt_year": "text",\ "revision_year": "text"\ },\ "deepest": "Y",\ "number": {\ "root_enhanced": "text",\ "enhanced": "text",\ "prefix_enhanced": "text",\ "raw": "text",\ "alternate": "text"\ },\ "education_levels": {\ "ece_ages": [\ {\ "guid": "text",\ "descr": "text",\ "seq": 1\ }\ ],\ "grades": [\ {\ "guid": "text",\ "descr": "text",\ "code": "text",\ "seq": 1\ }\ ]\ },\ "section": {\ "guid": "text",\ "seq": 1,\ "date_modified_utc": "text",\ "descr": "text",\ "implementation_year": "text",\ "number": "text",\ "assessment_year": "text",\ "revision_year": "text",\ "label": "text",\ "obsolete_year": "text",\ "adopt_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ }\ },\ "extensions": [\ {\ "type": "reference",\ "guid": "text",\ "descr": "text"\ }\ ],\ "has_list": "text",\ "topic_organizer": "text"\ },\ "id": "text"\ }\ ], "included": [\ {\ "type": "text",\ "relationships": {\ "related_courses": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakout_origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "ancestors": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "topics": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peers": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "breakouts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "crosswalks": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaced_by": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "replaces": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "children": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "concepts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "origins": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "peer_derivatives": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "parent": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "course_standards": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "contexts": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ },\ "associations": {\ "data": [\ {\ "type": "text",\ "id": "text"\ }\ ],\ "links": {\ "related": "text"\ }\ }\ },\ "attributes": {\ "seq": 1,\ "captured_by": "text",\ "utilizations": [\ {\ "type": "alignable",\ "guid": "text"\ }\ ],\ "uri": "text",\ "statement": {\ "addendums": [\ {\ "seq": 1,\ "add_context": "Y",\ "descr": "text",\ "position": "before"\ }\ ],\ "combined_descr": "text",\ "descr": "text"\ },\ "level": 1,\ "date_modified_utc": "text",\ "status": "active",\ "legends": [\ {\ "symbol_position": "before",\ "symbol": "text",\ "descr": "text"\ }\ ],\ "standard_type": "organizational",\ "label": "text",\ "disciplines": {\ "strands": [\ {\ "descr": "text",\ "guid": "text"\ }\ ],\ "ece_domains": [\ {\ "guid": "text",\ "code": "text",\ "descr": "text"\ }\ ],\ "subjects": [\ {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ ],\ "genres": [\ {\ "code": "text",\ "guid": "text",\ "descr": "text"\ }\ ]\ },\ "alt_identifiers": [\ {\ "type": "GUID",\ "source": "canonical",\ "id": "text"\ }\ ],\ "date_deleted_utc": "text",\ "in_list": "Y",\ "guid": "text",\ "key_ideas": [\ {\ "guid": "text",\ "concepts": [\ {\ "descr": "text",\ "guid": "text"\ }\ ]\ }\ ],\ "document": {\ "implementation_year": "text",\ "descr": "text",\ "date_modified_utc": "text",\ "source_url": "text",\ "assessment_year": "text",\ "publication": {\ "descr": "text",\ "source_url": "text",\ "extended_descr": "text",\ "regions": [\ {\ "guid": "text",\ "descr": "text",\ "type": "country",\ "code": "text"\ }\ ],\ "authorities": [\ {\ "guid": "text",\ "descr": "text",\ "acronym": "text"\ }\ ],\ "acronym": "text",\ "publication_type": "standard",\ "guid": "text"\ },\ "guid": "text",\ "obsolete_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ },\ "adopt_year": "text",\ "revision_year": "text"\ },\ "deepest": "Y",\ "number": {\ "root_enhanced": "text",\ "enhanced": "text",\ "prefix_enhanced": "text",\ "raw": "text",\ "alternate": "text"\ },\ "education_levels": {\ "ece_ages": [\ {\ "guid": "text",\ "descr": "text",\ "seq": 1\ }\ ],\ "grades": [\ {\ "guid": "text",\ "descr": "text",\ "code": "text",\ "seq": 1\ }\ ]\ },\ "section": {\ "guid": "text",\ "seq": 1,\ "date_modified_utc": "text",\ "descr": "text",\ "implementation_year": "text",\ "number": "text",\ "assessment_year": "text",\ "revision_year": "text",\ "label": "text",\ "obsolete_year": "text",\ "adopt_year": "text",\ "disciplines": {\ "primary_subject": {\ "code": "text",\ "descr": "text",\ "guid": "text"\ }\ }\ },\ "extensions": [\ {\ "type": "reference",\ "guid": "text",\ "descr": "text"\ }\ ],\ "has_list": "text",\ "topic_organizer": "text"\ },\ "id": "text"\ }\ ] } sun-brightdesktopmoon --- # Group Categories | Instructure Developer Documentation Portal [Group Categories CSV Formatchevron-right](https://developerdocs.instructure.com/services/canvas/group-categories/file.group_category_csv) [Differentiation Tags CSV Formatchevron-right](https://developerdocs.instructure.com/services/canvas/group-categories/file.differentiation_tags_csv) [PreviousOutcomes CSV Formatchevron-left](https://developerdocs.instructure.com/services/canvas/outcomes/file.outcomes_csv) [NextGroup Categories CSV Formatchevron-right](https://developerdocs.instructure.com/services/canvas/group-categories/file.group_category_csv) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Using AB Connect's Embeddable Widgets | Instructure Developer Documentation Portal [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#overview) Overview ---------------------------------------------------------------------------------------------------------------- In continuing efforts to make the process of working with academic Standards easy and efficient, we have begun to create plug-able widgets that can be used directly in apps created by our partners. The widgets are designed to enable our partners to offer capabilities within their apps with only a few lines of code. We will continue to expand the capabilities of the widgets as well as add to the list of supported widgets over time. Our initial offering is a widget that enables the end user to browse for and select Standards. We will continue to expand the capabilities to support faceted and full text search as well as search-by-number. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#supporting-infrastructure) Supporting Infrastructure -------------------------------------------------------------------------------------------------------------------------------------------------- Instructure's Academic Benchmarks widgets are hosted on Amazon's Content Delivery Network (CDN) to ensure high availability and responsiveness. [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#standards-browser-integration) Standards Browser Integration ---------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#integration) Integration The app is built on jQuery and completely embeds all requirements directly within the one package to ensure smooth integration. To plug the widget into your app, start by including the script into your HTML file: `` ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#dependencies) Dependencies The required version of jQuery is encapsulated within the widget JavaScript to avoid version dependency issues but the order in which your app loads the various libraries matters. If you use jQuery, you should always load jQuery before the AB Connect widgets. We've bundled a version of jQuery in such a way as not to interfere with other versions that may be included on the page. To ensure the smoothest integration possible, the widget will handle the encapsulated jQuery in the following manor: 1. If jQuery was loaded into the page before the widgets, then the widgets will be installed into it but the widgets will use the encapsulated version of jQuery internally. 2. If jQuery is not loaded at all, then the encapsulated version of jQuery (and widgets) will be installed into the page. (version 2.2.4) 3. If jQuery is loaded **after** the widgets, then the version of jQuery (and widgets) installed by AB Connect will be rendered inaccessible. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#adding-the-widget-to-your-page) Adding the Widget to Your Page Once the script is included, create a div to hold the widget. Note that the widget was designed for a minimum size of 800 x 600 px. If it is given more space than that, it will expand to take advantage of it. You can give the div any name/class/tag you like. `
` Initializing the browser is as simple as: `$('.standardsBrowser').standardsBrowser(config);` The `config` object can be used to define the behavior of the widget as well as how it interacts with your app. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#configuration) Configuration The configuration object you include in the widget initiation can help control the behavior of the widget. This section describes the properties of the configuration object and how they are used to control the widget. * `uiEntityState` - This is an object property that defines the initial values of elements in the UI as well as their visibility. Each property of the uiEntityState object contains an optional flag (named "show") indicating whether that element is visible and a value property indicating the initial value(s) of the element. If the "show" property is left out, the default is true. If the value property is left out, no initial selection is made. If the element property is not included, the element is visible with no initial selection. Properties: * `authority` - Indicates the drop-down listing the authorities available for browsing. The value property is the GUID of the initial authority selection. * `publication` - Indicates the drop-down listing the publications available for browsing. The value property is the GUID of the initial publication selection. * `document` - Indicates the drop-down listing the documents available for browsing. The value property is the GUID of the initial document selection. E.g.: would pre-select the Common Core Math Standards and hide the lists so the user couldn't change the selection. * `selectMode` - This is a property indicating whether the browser is in single select mode (single - the default) or multiple select mode (multiple). If false, the user can select multiple Standards at a time. Note that the selection is cleared when the user changes facet filtering, does a search or changes document. It is the responsibility of the parent app to offer a mechanism to build and manage a persistent list of Standards if appropriate for the app. * `enableDoubleClick` - This is a Boolean property indicating whether the browser supports double clicks (true). Default: false. * `showAssetCount` - This is a Boolean property indicating whether the browser should show a badge indicating the number of Assets that are related to the Standard. This can be used in situations where the parent app is using the Standards Browser as a first step in helping the user search for related Assets. Note that this capability requires that your organization stores your content metadata profile as Assets in AB Connect. The default is false. * `assetCountFilter` - This is a string property that is added to the AB Connect query that is used to retrieve the Asset count when the showAssetCount is true. By default, the widget counts any Assets that are owned by your account and are related to the Standard in question. However, you can pass a query string that is then appended to the query with an AND operator to further limit the query. E.g. you may want to further limit the results to a particular type of Asset or Assets of a particular media type. This property is optional and only used if showAssetCount is true. * `authCredentials` - This is an object property containing the authorization credentials. See the AB Connect [documentation on authentication](https://developerdocs.instructure.com/services/ab-connect/introduction/authentication) for details. * `ID` - Your partner ID * `signature` -signature generated from your partner key and the expires value * `expires` -expiration date of the signature * `user` - optional parameter for an ID specific to this user * `onStandardSelect` - An event handler defined by your app to handle selection events for Standards. The signature of the function must be function (event, GUID). The GUID of the Standard that was selected is the second parameter. This property is optional. Alternatively, you can register your event handlers directly via jQuery. * `onStandardDoubleClick` - An event handler defined by your app to handle double-click events for Standards. The signature of the function must be function (event, GUID). The GUID of the Standard that was clicked is the second parameter. This property is optional. * `onStandardDeselect` - An event handler defined by your app to handle deselection events for Standards. The signature of the function must be function (event, GUID). The GUID of the Standard that was deselected is the second parameter. Note that this event will fire multiple times in the event of multiple deselects (e.g. when multiple Standards are selected and the document or filter criteria changes). This property is optional. * `onError` - An event handler defined by your app to handle error events. In the event of warnings or soft error situations, the widget will do it's best to recover and restore normal working behavior while logging the issue in the console. However, error conditions that are unrecoverable (e.g. authentication errors) will be surfaced to the parent app. The signature of the function must be function (event, message). Message is a human readable message describing the error that occurred. While this parameter is technically optional so the developer can alternatively choose to register this handler directly with jQuery, the developer MUST create a handler using one method or another or there will be no user feedback on error conditions. Here is an example configuration object for an app that uses the browser for the selection of a single Standard. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#events) Events The Standards Browser fires or forwards events to the parent app. Registering for most of the events is optional but the app **must** register for error events because the widget does not handle errors itself. Instead, it forwards them to the parent app so it can display the error using the same approach it displays errors from other elements of the UI. The following events may be fired during the operation of the widget: * `standardSelect` - A Standard has been selected. The GUID of the Standard is forwarded with the event. The parent app may choose to ignore such events or it may take some action like enable buttons that allow the user to take action (like add the Standard to a list or close the selection card or dialog). * `standardDoubleClick` - A Standard has been double clicked. The GUID of the Standard is forwarded with the event. The parent app may choose to ignore such events or it may take some action like add the Standard to a list or close the selection card or dialog. Note that due to the way double clicks are handled in browsers, a double click action will actually create a select event for the Standard being clicked, followed by deselect events for ALL selected Standards followed by a double click event for the Standard being clicked. * `standardDeselect` - A Standard has been deselected. The GUID of the Standard is forwarded with the event. The parent app may choose to ignore such events or it may take some action like disable buttons. Note that if the user has multiple Standards selected and does something like change the search criteria or publication, the parent app will receive multiple "standardDeselect" events rapidly - one for each selected Standard. * `error` - An error has occurred and the widget is unable to self recover in a meaningful way. ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#methods) Methods The Standards Browser supports the following methods to help the parent app interact with it. * `getConfiguration` - Returns the uiEntityState object containing the current configuration. This will help the parent app re-launch the widget in the same state as it was when the user closed it. E.g. `var state = $('.standardsBrowser').standardsBrowser('getConfiguration');` * `getSelection` - Returns an array of GUIDs listing every Standard that is currently selected in the UI. E.g. `var listGuids = $('.standardsBrowser').standardsBrowser('getSelection');` ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#examples) Examples See the [Instructure Github repositoryarrow-up-right](https://github.com/instructure/abconnect-samples) for examples illustrating how to embed the Standards Browser into your app. * **Minimum Standards Browser** - This is a minimum app that hosts the Standards Browser. Beyond illustrating the basics of using embeddable widgets in an app, this example shows the basic JSON body of the currently selected Standard. You can see the [browser in action herearrow-up-right](https://widgets.academicbenchmarks.com/ABConnect/v4/standards-browser-min/StandardsBrowser.html) . * **Integrated Relationship Browser** - This is a version of the Relationship Browser app that uses the Standards Browser rather in place of the home-grown browser from the original Relationship Browser app. You can [see it in action herearrow-up-right](https://widgets.academicbenchmarks.com/ABConnect/v4/relationships-browser/RelationshipBrowser.html) . ### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#common-integration-scenarios) Common Integration Scenarios #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#simple-single-selector-pop-up) Simple Single Selector Pop-Up One common situation is having the user select a single Standard. You may want to do this when prompting a teacher to select a Standard related to a test item or starting the process of searching for items by alignment. The integration may look something like this: 1. Create a pop-up window (or div) that contains the Standards Browser widget in single select mode and buttons for "OK" and "Close". 2. Disable the "OK" button by default. 3. Listen for onStandardSelect events. When you receive one, enable the OK button. 4. Listen for onStandardDeselect events. When you receive one, disable the OK button. 5. Listen for onStandardDoubleClick events. When you receive one, record the GUID, close the dialog and return control to the parent app. 6. If the user selects OK: 1. Call getSelection to retrieve the selected Standard, record the GUID 2. Optionally call getConfiguration on the StandardsBrowser to grab the user selections for restoration later 3. Close the dialog and return control to the parent app #### [hashtag](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#multiple-selector-with-a-managed-list-of-standards) Multiple Selector with a Managed List of Standards Another common situation is having the user manage a list of Standards. This may come up when you want to allow a teacher to search for materials related to curriculum for the next quarter. The integration may look something like this: 1. Create an area on the page that contains the Standards Browser widget in multiselect mode as well as a separate list (we'll call this standardsList) and arrow buttons to allow user to add Standards to the standardsList and remove Standards from the list (perhaps ">>" and "<<" or "Add" and "Remove" buttons). You may also want some sort of Action button. 2. Disable the "Add" button by default. 3. Listen for onStandardSelect events. When you receive one, enable the "Add" button. 4. Listen for onStandardDeselect events. When you receive one, check getSelection to see if there are any Standards still selected. If not, disable the "Add" button. 5. Listen for onStandardDoubleClick events. When you receive one, add the Standard related to the GUID to the list. 6. Listen for click events on the "Add" button. When you receive one, add the Standard related to the GUID to the list. 7. Listen for selection events on the standardsList. When you receive one, enable the "Remove" button. 8. Listen for deselection events on the standardsList. When you receive one, check to see if there are any Standards selected in the standardsList. If not, disable the "Remove" button. 9. Listen for click events on the "Remove" button. When you receive one, remove the selected Standard from the standardsList. 10. Listen for click events on the "Action" button. When you receive one: 1. Gather the list of Standards from standardsList 2. Optionally call getConfiguration on the StandardsBrowser to grab the user selections for restoration later 3. Pass control to the parent app. You may want to remove or hide the StandardsBrowser at this point depending on the needs of your app. [PreviousExampleschevron-left](https://developerdocs.instructure.com/services/ab-connect/introduction/examples) [NextReferencechevron-right](https://developerdocs.instructure.com/services/ab-connect/reference) Last updated 6 months ago Was this helpful? * [Overview](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#overview) * [Supporting Infrastructure](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#supporting-infrastructure) * [Standards Browser Integration](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#standards-browser-integration) * [Integration](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#integration) * [Dependencies](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#dependencies) * [Adding the Widget to Your Page](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#adding-the-widget-to-your-page) * [Configuration](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#configuration) * [Events](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#events) * [Methods](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#methods) * [Examples](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#examples) * [Common Integration Scenarios](https://developerdocs.instructure.com/services/ab-connect/introduction/widgets#common-integration-scenarios) Was this helpful? sun-brightdesktopmoon Copy uiEntityState: { authority: { show: false, value: "A83297F2-901A-11DF-A622-0C319DFF4B22" }, publication: { show: false, value: "964E0FEE-AD71-11DE-9BF2-C9169DFF4B22" }, document: { show: false, value: "6C2635F0-6EC0-11DF-AB2D-366B9DFF4B22" } } Copy var config = { selectMode: 'single', enableDoubleClick: false, authCredentials: { ID: gPartnerID, signature: gSignature, expires: gAuthExpires }, onStandardSelect: function(event, GUID){ standardSelected(GUID); }, onStandardDeselect: function(event, GUID){ noStandardSelected(); }, onError: function(event, message){ alert(message); } }; sun-brightdesktopmoon --- # Outcomes | Instructure Developer Documentation Portal [Outcomes CSV Formatchevron-right](https://developerdocs.instructure.com/services/canvas/outcomes/file.outcomes_csv) [PreviousWhat If Gradeschevron-left](https://developerdocs.instructure.com/services/canvas/resources/what_if_grades) [NextOutcomes CSV Formatchevron-right](https://developerdocs.instructure.com/services/canvas/outcomes/file.outcomes_csv) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # SIS | Instructure Developer Documentation Portal [SIS CSV Formatchevron-right](https://developerdocs.instructure.com/services/canvas/sis/file.sis_csv) [PreviousDifferentiation Tags CSV Formatchevron-left](https://developerdocs.instructure.com/services/canvas/group-categories/file.differentiation_tags_csv) [NextSIS CSV Formatchevron-right](https://developerdocs.instructure.com/services/canvas/sis/file.sis_csv) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Permissions | Instructure Developer Documentation Portal [List of Permissionschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/file.permissions) [Detailschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details) [PreviousSessionchevron-left](https://developerdocs.instructure.com/services/canvas/data-services/live-events/event-format/caliper-ims-1.1/file.data_service_caliper_session) [NextList of Permissionschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/file.permissions) Last updated 6 months ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # External Tools | Instructure Developer Documentation Portal [LTIchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti) [xAPIchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/file.xapi) [Canvas Roleschevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/file.canvas_roles) [Plagiarism Detection Platformchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform) [PreviousSIS CSV Formatchevron-left](https://developerdocs.instructure.com/services/canvas/sis/file.sis_csv) [NextLTIchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Data Services | Instructure Developer Documentation Portal [Live Eventschevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events) [PreviousJWT Access Tokenschevron-left](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/file.jwt_access_tokens) [NextLive Eventschevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Group Categories CSV Format | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/group-categories/file.group_category_csv#group-category-import-format-documentation) Group Category Import Format Documentation ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Group categories can be updated in bulk by using the Group Categories Import API. Each row in a CSV file represents a user to be added to a group in the group category. Groups that don't exist in the UI will be created. Groups that are created will only use the group\_name column for creation. User columns in the file are used to identify the user to be added to the group. Users names are available in the group\_category export, but not used or updated in the import process. Standard CSV rules apply (including adherence to the CSV RFC 4180 format): * The first row will be interpreted as a header defining the ordering of your columns. This header row is mandatory. * Fields that contain a comma must be surrounded by double-quotes. * Fields that contain double-quotes must also be surrounded by double-quotes, with the internal double-quotes doubled. Example: Chevy "The Man" Chase would be included in the CSV as "Chevy ""The Man"" Chase". All text should be UTF-8 encoded. [hashtag](https://developerdocs.instructure.com/services/canvas/group-categories/file.group_category_csv#group-category-data-format) Group Category Data Format -------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/group-categories/file.group_category_csv#group_category.csv) group\_category.csv Field Name Data Type Required Description canvas\_user\_id text ✓\* The canvas id for a user, required to identify a user. user\_id text ✓\* A unique identifier used to reference users in the enrollments table. This identifier must not change for the user, and must be globally unique. In the user interface, this is called the SIS ID. login\_id text ✓\* The name that a user will use to login to Instructure. If you have an authentication service configured (like LDAP), this will be their username from the remote system. group\_name text ✓\* The name of the group. canvas\_group\_id text ✓\* The canvas id for a group. group\_id text ✓\* A unique identifier used to reference groups in the group\_users data. This identifier must not change for the group, and must be globally unique. This column is for identification and does not populate new groups with sis\_ids \* canvas\_user\_id, user\_id, or login\_id is required and group\_name, canvas\_group\_id or group\_id is required. Sample: * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousGroup Categorieschevron-left](https://developerdocs.instructure.com/services/canvas/group-categories) [NextDifferentiation Tags CSV Formatchevron-right](https://developerdocs.instructure.com/services/canvas/group-categories/file.differentiation_tags_csv) Last updated 9 months ago Was this helpful? * [Group Category Import Format Documentation](https://developerdocs.instructure.com/services/canvas/group-categories/file.group_category_csv#group-category-import-format-documentation) * [Group Category Data Format](https://developerdocs.instructure.com/services/canvas/group-categories/file.group_category_csv#group-category-data-format) * [group\_category.csv](https://developerdocs.instructure.com/services/canvas/group-categories/file.group_category_csv#group_category.csv) Was this helpful? sun-brightdesktopmoon Copy canvas_user_id,user_id,login_id,group_name,canvas_group_id,group_id 92,,,Awesome Group,, ,13aa3,,,45, ,,mlemon,,,g125 Copy canvas_user_id,user_id,login_id,group_name 92,,,Awesome Group ,13aa3,,Other Group ,,mlemon,Awesome Group sun-brightdesktopmoon --- # Live Events | Instructure Developer Documentation Portal [Overviewchevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/overview) [Event Formatchevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/event-format) [PreviousData Serviceschevron-left](https://developerdocs.instructure.com/services/canvas/data-services) [NextOverviewchevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/overview) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Overview | Instructure Developer Documentation Portal [Introductionchevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/overview/file.data_service_introduction) [Setupchevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/overview/file.data_service_setup) [Caliperchevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/overview/file.data_service_caliper_structure) [Metadatachevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/overview/file.data_service_canvas_event_metadata) [PreviousLive Eventschevron-left](https://developerdocs.instructure.com/services/canvas/data-services/live-events) [NextIntroductionchevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/overview/file.data_service_introduction) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Differentiation Tags CSV Format | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/group-categories/file.differentiation_tags_csv#differentiation-tags-import-format-documentation) Differentiation Tags Import Format Documentation ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Differentiation Tags can be updated in bulk by using the Differentiation Tags Import API. Each row in a CSV file represents a user to be added to a tag, where a tag set can be specified. Tags and tag sets that don't exist in the UI will be created. Tags that are created will only use the tag\_name column for creation. User columns in the file are used to identify the user to be added to the tag. Users names are available in the Differentiation Tags export, but not used or updated in the import process. If a tag set is provided, tags that don't exist in the UI will be created under that set and existing tags will be moved (along with their memberships) to that tag set. Standard CSV rules apply (including adherence to the CSV RFC 4180 format): * The first row will be interpreted as a header defining the ordering of your columns. This header row is mandatory. * Fields that contain a comma must be surrounded by double-quotes. * Fields that contain double-quotes must also be surrounded by double-quotes, with the internal double-quotes doubled. Example: Chevy "The Man" Chase would be included in the CSV as "Chevy ""The Man"" Chase". All text should be UTF-8 encoded. [hashtag](https://developerdocs.instructure.com/services/canvas/group-categories/file.differentiation_tags_csv#differentiation-tag-data-format) Differentiation Tag Data Format ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/group-categories/file.differentiation_tags_csv#differentiation_tag.csv) differentiation\_tag.csv Field Name Data Type Required Description canvas\_user\_id text ✓\* The canvas id for a user, required to identify a user. user\_id text ✓\* A unique identifier used to reference users in the enrollments table. This identifier must not change for the user, and must be globally unique. In the user interface, this is called the SIS ID. login\_id text ✓\* The name that a user will use to login to Instructure. If you have an authentication service configured (like LDAP), this will be their username from the remote system. tag\_name text ✓\* The name of the differentiation tag. canvas\_tag\_id text ✓\* The canvas id for a differentiation tag. tag\_id text ✓\* A unique identifier used to reference tags. This identifier must not change for the tag, and must be globally unique. This column is for identification and does not populate new tags with sis\_ids tag\_set\_name text \* The name of the differentiation tag set. canvas\_tag\_set\_id text \* The canvas id for a differentiation tag set. tag\_set\_id text \* A unique identifier used to reference tag sets. This identifier must not change for the tag, and must be globally unique. This column is for identification and does not populate new tag sets with sis\_ids \* canvas\_user\_id, user\_id, or login\_id is required and tag\_name, canvas\_tag\_id or tag\_id is required. If you would like to specify a tag set, tag\_set\_name, canvas\_tag\_set\_id or tag\_set\_id is required. Sample: * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousGroup Categories CSV Formatchevron-left](https://developerdocs.instructure.com/services/canvas/group-categories/file.group_category_csv) [NextSISchevron-right](https://developerdocs.instructure.com/services/canvas/sis) Last updated 8 months ago Was this helpful? * [Differentiation Tags Import Format Documentation](https://developerdocs.instructure.com/services/canvas/group-categories/file.differentiation_tags_csv#differentiation-tags-import-format-documentation) * [Differentiation Tag Data Format](https://developerdocs.instructure.com/services/canvas/group-categories/file.differentiation_tags_csv#differentiation-tag-data-format) * [differentiation\_tag.csv](https://developerdocs.instructure.com/services/canvas/group-categories/file.differentiation_tags_csv#differentiation_tag.csv) Was this helpful? sun-brightdesktopmoon Copy canvas_user_id,user_id,login_id,tag_name,canvas_tag_id,tag_id,tag_set_name,canvas_tag_set_id,tag_set_id 92,,,Awesome Tag,,,Awesome Tag Set,, ,13aa3,,,45,,,, ,,mlemon,,,g125,,, Copy canvas_user_id,user_id,login_id,tag_name 92,,,Awesome Tag ,13aa3,,Other Tag ,,mlemon,Awesome Tag sun-brightdesktopmoon --- # Outcomes CSV Format | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/outcomes/file.outcomes_csv#outcomes-import-format-documentation) Outcomes Import Format Documentation -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Learning outcomes can be updated in bulk by using the Outcomes Import API. Each row in a CSV file represents either a learning outcome or a learning outcome group to create or update. Standard CSV rules apply (including adherence to the CSV RFC 4180 format): * The first row will be interpreted as a header defining the ordering of your columns. This header row is mandatory. * Fields that contain a comma must be surrounded by double-quotes. * Fields that contain double-quotes must also be surrounded by double-quotes, with the internal double-quotes doubled. Example: Chevy "The Man" Chase would be included in the CSV as "Chevy ""The Man"" Chase". All text should be UTF-8 encoded. All timestamps are sent and returned in ISO 8601 format. All timestamps default to UTC time zone unless specified. Copy YYYY-MM-DDTHH:MM:SSZ [hashtag](https://developerdocs.instructure.com/services/canvas/outcomes/file.outcomes_csv#outcomes-data-format) Outcomes Data Format ------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/outcomes/file.outcomes_csv#outcomes.csv) outcomes.csv Field Name Data Type Required Description vendor\_guid text ✓ A value that uniquely identifies this learning outcome or learning outcome group. For learning outcome groups, this value can be referenced by other learning outcomes or learning outcome groups in the parent\_guids field below, to indicate that this group contains an outcome or group. This value cannot contain spaces. If outcomes have been exported from an account with no vendor\_guid values set, canvas will auto-assign vendor\_guid values from internal identifiers. These ids will have the prefix "canvas\_outcome:" and "canvas\_outcome\_group:" for outcomes and groups respectively. We recommend that you \*do not\* change these values once they have been assigned. If you want to set your own vendor\_guid values for existing outcomes, you should do that using the Canvas API prior to exporting outcomes from an account. In addition, these prefixes are reserved; newly created outcomes and groups may not have vendor\_guid fields with these prefixes. object\_type text ✓ A value of "outcome" indicates this is a learning outcome. A value of "group" indicates this is a learning outcome group course\_id number May only be given for rows where object\_type="group". If given, the generated learning outcome group will belong to the course with the given ID instead of to the account from which the import was initiated. Referenced course must belong to the initiating account or one of its sub-accounts. Can not be used in course-level imports. title text ✓ The title of the learning outcome or learning outcome group. description text The description of the learning outcome or learning outcome group (optional, defaults to blank). friendly\_description text Learning outcome display description in "friendly" language for students and parents (optional, defaults to blank). This value must be less than 255 characters in length. display\_name text The display name (or friendly name) of the learning outcome. This value does not apply to learning outcome groups. calculation\_method text Must be one of "decaying\_average", "n\_mastery", "highest", "latest", "average" or blank. This field must be blank for learning outcome groups. If not provided and this is a learning outcome, then the calculation method defaults to "decaying\_average". If the Account and Course Level Outcome Mastery Scales flag is enabled, the calculation\_method field does not need to be defined in the imported .csv. The calculation\_method field will be determined by the account and course settings. If Outcomes New Decaying Average Calculation Method feature flag is enabled then we will have one more calculation method "weighted\_average" and it would be the default calculation method. calculation\_int integer Valid values depend on the "calculation\_method". For "decaying\_average", the value must be between 1 and 99, inclusive. For "n\_mastery", the value must be between 1 and 10, inclusive. For "highest", "latest" and "average", this field must be blank. If the Account and Course Level Outcome Mastery Scales flag is enabled, the calculation\_int field does not need to be defined in the imported .csv. The calculation\_int field will be determined by the account and course settings. If Outcomes New Decaying Average Calculation Method feature flag is enabled then For "weighted\_average", the value must be between 1 and 99, inclusive. For "standard\_decaying\_average", the value must be between 50 and 99, inclusive. parent\_guids text A space-separated list of vendor\_guid values of parent learning outcome groups for this learning outcome or learning outcome group. All of these vendor\_guid values must refer to previous rows, and all of these previous rows must represent learning outcome groups. If no value is provided, then this outcome or group will be added to the context's root outcome group. workflow\_state text Must be either "active" or "deleted". If not present, we assume the learning outcome or learning outcome group is "active". mastery\_points number The number of points that define mastery for this learning outcome. Must be blank for learning outcome groups. If the Account and Course Level Outcome Mastery Scales flag is enabled, the mastery\_points field does not need to be defined in the imported .csv. The mastery\_points field will be determined by the account and course settings. ratings number/text (multiple columns) These columns must be the final columns of each row, and contain the scoring tiers for the given outcome. The columns alternate in decreasing point order: first, number of points for the tier, then tier description. This alternating pattern continues until there are no more scoring tiers for this outcome. These columns must be blank for learning outcome groups. See sample below. If the Account and Course Level Outcome Mastery Scales flag is enabled, the ratings field does not need to be defined in the imported .csv. The ratings field will be determined by the account and course settings. Sample: * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousOutcomeschevron-left](https://developerdocs.instructure.com/services/canvas/outcomes) [NextGroup Categorieschevron-right](https://developerdocs.instructure.com/services/canvas/group-categories) Last updated 9 months ago Was this helpful? * [Outcomes Import Format Documentation](https://developerdocs.instructure.com/services/canvas/outcomes/file.outcomes_csv#outcomes-import-format-documentation) * [Outcomes Data Format](https://developerdocs.instructure.com/services/canvas/outcomes/file.outcomes_csv#outcomes-data-format) * [outcomes.csv](https://developerdocs.instructure.com/services/canvas/outcomes/file.outcomes_csv#outcomes.csv) Was this helpful? sun-brightdesktopmoon Copy vendor_guid,object_type,title,description,display_name,calculation_method,calculation_int,workflow_state,parent_guids,ratings,,,,,,, a,group,Parent group,parent group description,G-1,,,active,,,,,,,,, b,group,Child group,child group description,G-1.1,,,active,a,,,,,,,, c,outcome,Learning Standard,outcome description,LS-100,decaying_average,40,active,a b,3,Excellent,2,Better,1,Good,, sun-brightdesktopmoon --- # Event Format | Instructure Developer Documentation Portal [Canvaschevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/event-format/canvas) [Caliper IMS 1.1chevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/event-format/caliper-ims-1.1) [PreviousMetadatachevron-left](https://developerdocs.instructure.com/services/canvas/data-services/live-events/overview/file.data_service_canvas_event_metadata) [NextCanvaschevron-right](https://developerdocs.instructure.com/services/canvas/data-services/live-events/event-format/canvas) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Placements | Instructure Developer Documentation Portal [Placements Overviewchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.placements_overview) [Navigationchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.navigation_tools) [Homework Submissionchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.homework_submission_placement) [Editor Buttonchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.editor_button_placement) [Migration Selectionchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.migration_selection_placement) [Link Selection (Modules)chevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.link_selection_placement) [Assignment Selectionchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.assignment_selection_placement) [Collaborationschevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.collaborations_placement) [PreviousLegacy 1.1 Configurationchevron-left](https://developerdocs.instructure.com/services/canvas/external-tools/lti/file.tools_xml) [NextPlacements Overviewchevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/lti/placements/file.placements_overview) Last updated 1 year ago Was this helpful? Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Plagiarism Detection Platform Users | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/plagiarism_detection_platform_users#plagiarism-detection-platform-users-api) Plagiarism Detection Platform Users API -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- **Plagiarism Detection Platform API for Users (Must use** [**JWT access tokens**](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/file.jwt_access_tokens) **with this API).** ### [hashtag](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/plagiarism_detection_platform_users#method.lti-users_api.show) [Get a single user (lti)](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/plagiarism_detection_platform_users#method.lti/users_api.show) [Lti::UsersApiController#showarrow-up-right](https://github.com/instructure/canvas-lms/blob/master/app/controllers/lti/users_api_controller.rb) `**GET /api/lti/users/:id**` **Scope:** `url:GET|/api/lti/users/:id` Get a single Canvas user by Canvas id or LTI id. Tool providers may only access users that have been assigned an assignment associated with their tool. Returns an [User](https://developerdocs.instructure.com/services/canvas/resources/users#user) object. ### [hashtag](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/plagiarism_detection_platform_users#method.lti-users_api.group_index) [Get all users in a group (lti)](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/plagiarism_detection_platform_users#method.lti/users_api.group_index) [Lti::UsersApiController#group\_indexarrow-up-right](https://github.com/instructure/canvas-lms/blob/master/app/controllers/lti/users_api_controller.rb) `**GET /api/lti/groups/:group_id/users**` **Scope:** `url:GET|/api/lti/groups/:group_id/users` Get all Canvas users in a group. Tool providers may only access groups that belong to the context the tool is installed in. Returns a list of [User](https://developerdocs.instructure.com/services/canvas/resources/users#user) objects. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousPlagiarism Detection Platform Assignmentschevron-left](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/plagiarism_detection_platform_assignments) [NextPlagiarism Detection Submissionschevron-right](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/plagiarism_detection_submissions) Last updated 4 days ago Was this helpful? * [Plagiarism Detection Platform Users API](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/plagiarism_detection_platform_users#plagiarism-detection-platform-users-api) * [Get a single user (lti)](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/plagiarism_detection_platform_users#method.lti-users_api.show) * [Get all users in a group (lti)](https://developerdocs.instructure.com/services/canvas/external-tools/plagiarism-detection-platform/plagiarism_detection_platform_users#method.lti-users_api.group_index) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Developer Keys - manage | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys#developer-keys-manage) Developer Keys - manage ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys#developer-keys) Developer Keys Allows user to create developer keys for accounts. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys#developer-keys-1) Developer Keys Required fields include key name, owner email, tool ID, redirect URL, and icon URL. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys#subaccounts) Subaccounts Not available at the subaccount level. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousData Services - managechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_data_services) [NextDeveloper Keys - modify Site Admin developer keyschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys) Last updated 6 months ago Was this helpful? * [Developer Keys - manage](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys#developer-keys-manage) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Data Services - manage | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_data_services#data-services-manage) Data Services - manage --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_data_services#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_data_services#data-services) Data Services Allows user to access and manage Canvas Data Services. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousCustom Links - managechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_nav_menu_links) [NextDeveloper Keys - managechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys) Last updated 6 months ago Was this helpful? * [Data Services - manage](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_data_services#data-services-manage) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_data_services#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Differentiation Tags - manage | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_manage#differentiation-tags-manage) Differentiation Tags - manage --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_manage#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_manage#what-it-allows) What it allows This permission controls the ability to: Edit differentiation tag names, variants, and members Remove users from differentiation tags Add users to differentiation tags #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_manage#warning) Warning A user with this permission has the ability to remove users from an assignment by removing tag variants that are assigned to an assignment * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousDifferentiation Tags - deletechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_delete) [NextDiscussions - createchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum) Last updated 6 months ago Was this helpful? * [Differentiation Tags - manage](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_manage#differentiation-tags-manage) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_manage#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Differentiation Tags - add | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_add#differentiation-tags-add) Differentiation Tags - add ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_add#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_add#allows) Allows This permission controls the ability to: Create new differentiation tags Add users to differentiation tags #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_add#warning) Warning This permission does not allow a user to edit a differentiation tag after it has been created. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousDeveloper Keys - modify Site Admin developer keyschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys) [NextDifferentiation Tags - deletechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_delete) Last updated 6 months ago Was this helpful? * [Differentiation Tags - add](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_add#differentiation-tags-add) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_add#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Discussions - create | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum#discussions-create) Discussions - create --------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum#discussions) Discussions Allows user to add discussions in the Discussions page. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum#announcements) Announcements To create announcements, Discussions - moderate must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum#discussions-1) Discussions To view discussions in a course, Discussions - view must be enabled. Both Discussions - create and Discussions - moderate allow the user to create a discussion in the Discussions page. To manage discussions, Discussions - moderate must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousDifferentiation Tags - managechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_manage) [NextDiscussions - moderatechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum) Last updated 6 months ago Was this helpful? * [Discussions - create](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum#discussions-create) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Discussions - moderate | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#discussions-moderate) Discussions - moderate --------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#announcements) Announcements Allows user to view the New Announcement button in the Home page. Allows user to add announcements in the Announcements page. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#blueprint-courses) Blueprint Courses Allows user to edit Blueprint lock settings on the Discussions index page in a Blueprint master course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#discussions) Discussions Allows user to add discussions in the Discussions page. Allows user to close for comments, move, pin/unpin, edit, and delete discussion topics in the Discussions page. Allows user to edit discussion topics. Allows user to view all replies within a discussion topic. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#announcements-1) Announcements To view announcements, Announcements - view must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#blueprint-courses-1) Blueprint Courses To edit lock settings on the Discussions index page, Courses - manage and Discussions - view must also be enabled. If the additional permissions are enabled, but this permission is not enabled, lock settings can be edited on individual discussions. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#discussions-1) Discussions Both Discussions - create and Discussions - moderate allow the user to create a discussion in the Discussions page. If this permission is enabled, Discussions - create is not required. To view discussions in a course, Discussions - view must be enabled. To reply to a discussion, Discussions - post must be enabled. To edit a discussion, Discussions - moderate must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousDiscussions - createchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_forum) [NextDiscussions - postchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_post_to_forum) Last updated 6 months ago Was this helpful? * [Discussions - moderate](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#discussions-moderate) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Discussions - post | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_post_to_forum#discussions-post) Discussions - post ------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_post_to_forum#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_post_to_forum#discussions) Discussions Allows user to reply to a discussion post. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_post_to_forum#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_post_to_forum#discussions-1) Discussions To view discussions in a course, Discussions - view must also be enabled. If the option requiring users to post before seeing replies is selected in a discussion, users must post a reply to view all posts unless Discussions - moderate is also enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousDiscussions - moderatechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_forum) [NextDiscussions - viewchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum) Last updated 6 months ago Was this helpful? * [Discussions - post](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_post_to_forum#discussions-post) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_post_to_forum#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_post_to_forum#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Discussions - view | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#discussions-view) Discussions - view --------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#blueprint-courses) Blueprint Courses Allows user to edit Blueprint content lock settings on individual discussions. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#discussions) Discussions Allows user to view the Discussions link in Course Navigation. Allows user to view course discussions and all replies within the discussion topics. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#blueprint-courses-1) Blueprint Courses To edit lock settings from the Discussions index page, Blueprint Courses - add / edit / associate / delete and Courses - manage must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#commons) Commons To share a discussion to Commons, Courses - manage must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#discussions-1) Discussions To manage discussions, Discussions - moderate must also be enabled. To reply to a discussion, Discussions - post must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousDiscussions - postchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_post_to_forum) [NextFeature Options - enable / disablechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_feature_flags) Last updated 6 months ago Was this helpful? * [Discussions - view](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#discussions-view) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Developer Keys - modify Site Admin developer keys | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys#developer-keys-modify-site-admin-developer-keys) Developer Keys - modify Site Admin developer keys --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys#developer-keys) Developer Keys Allows user to create, modify, and delete global (Site Admin) developer keys and LTI configurations. This permission controls access to Site Admin developer keys that are inherited by all accounts. Root Account-level keys are unaffected. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys#developer-keys-1) Developer Keys Developer Keys - manage must also be enabled to access the Developer Keys page. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys#site-admin) Site Admin This permission is only available in Site Admin and controls access to global developer keys. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousDeveloper Keys - managechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_developer_keys) [NextDifferentiation Tags - addchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_add) Last updated 2 months ago Was this helpful? * [Developer Keys - modify Site Admin developer keys](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys#developer-keys-modify-site-admin-developer-keys) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_modify_site_admin_developer_keys#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Differentiation Tags - delete | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_delete#differentiation-tags-delete) Differentiation Tags - delete --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_delete#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_delete#what-it-allows) What it allows This permission controls the ability to: Delete differentiation tags Remove users from differentiation tags #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_delete#warning) Warning A user who can delete differentiation tags has the ability to remove users from an assignment by deleting the tags assigned to an assignment. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousDifferentiation Tags - addchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_add) [NextDifferentiation Tags - managechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_manage) Last updated 6 months ago Was this helpful? * [Differentiation Tags - delete](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_delete#differentiation-tags-delete) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_tags_delete#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Feature Options - enable / disable | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_feature_flags#feature-options-enable-disable) Feature Options - enable / disable ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_feature_flags#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_feature_flags#feature-options-account-settings) Feature Options (Account Settings) Allows user to manage Feature Options in Account Settings. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_feature_flags#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_feature_flags#feature-options-account-settings-1) Feature Options (Account Settings) To view Feature Options for an account, Feature Options - enable / disable must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousDiscussions - viewchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_forum) [NextFeature Options - viewchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_feature_flags) Last updated 6 months ago Was this helpful? * [Feature Options - enable / disable](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_feature_flags#feature-options-enable-disable) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_feature_flags#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_feature_flags#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Feature Options - view | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_feature_flags#feature-options-view) Feature Options - view ------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_feature_flags#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_feature_flags#feature-options-account-settings) Feature Options (Account Settings) Allows user to view Feature Options in Account Settings. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_feature_flags#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_feature_flags#feature-options-account-settings-1) Feature Options (Account Settings) To manage Feature Options for an account, Feature Options - enable / disable must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousFeature Options - enable / disablechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_feature_flags) [NextGlobal Announcements - add / edit / deletechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_alerts) Last updated 6 months ago Was this helpful? * [Feature Options - view](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_feature_flags#feature-options-view) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_feature_flags#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_feature_flags#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Global Announcements - add / edit / delete | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_alerts#global-announcements-add-edit-delete) Global Announcements - add / edit / delete -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_alerts#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_alerts#announcements-account) Announcements (Account) Allows user to add, edit, and delete global announcements. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousFeature Options - viewchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_feature_flags) [NextGrades - editchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades) Last updated 6 months ago Was this helpful? * [Global Announcements - add / edit / delete](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_alerts#global-announcements-add-edit-delete) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_alerts#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Grades - view audit trail | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_audit_trail#grades-view-audit-trail) Grades - view audit trail ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_audit_trail#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_audit_trail#grades) Grades Allows user to review an audit trail in assignments, both moderated and anonymous. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_audit_trail#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_audit_trail#grades-1) Grades To moderate grades, Grades - Select final grade for moderation must also be enabled. To post or hide grades for an assignment, Grades - edit must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousGrades - view all gradeschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades) [NextGrades - view change logschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_grade_changes) Last updated 6 months ago Was this helpful? * [Grades - view audit trail](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_audit_trail#grades-view-audit-trail) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_audit_trail#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_audit_trail#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Grades - select final grade for moderation | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade#grades-select-final-grade-for-moderation) Grades - select final grade for moderation ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade#grades) Grades Allows user to select final grade for moderated assignments. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade#assignments) Assignments To add students to a moderation set, Grades - view all grades must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade#grades-1) Grades To publish final grades for a moderated assignment, Grades - edit must also be enabled. To post or hide grades for a moderated assignment, Grades - edit must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade#speedgrader) SpeedGrader To review a moderated assignment in SpeedGrader, Grades - edit must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousGrades - editchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades) [NextGrades - view all gradeschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades) Last updated 6 months ago Was this helpful? * [Grades - select final grade for moderation](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade#grades-select-final-grade-for-moderation) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Impact - Manage | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_impact#impact-manage) Impact - Manage ------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_impact#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_impact#impact-manage-1) Impact - Manage Allows an account administrator to manage the Impact service integration. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_impact#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_impact#impact) Impact Impact is an add-on to Canvas LMS. Contact your CSM if interested. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousIgniteAI Agent - Faculty & Supportchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak_teacher) [NextItem Banks - manage accountchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_banks) Last updated 6 months ago Was this helpful? * [Impact - Manage](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_impact#impact-manage) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_impact#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_impact#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Groups - view all student groups | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_group_pages#groups-view-all-student-groups) Groups - view all student groups ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_group_pages#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_group_pages#groups) Groups Allows user to view the group home pages of all student groups. Allows students to access other student groups within a group set with a direct link. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_group_pages#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_group_pages#groups-1) Groups By default students are able to create groups; to restrict students from creating groups, do not select the Let students organize their own groups checkbox in Course Settings. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousGrades - view change logschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_grade_changes) [NextIgniteAI Agent - Adminschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak) Last updated 6 months ago Was this helpful? * [Groups - view all student groups](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_group_pages#groups-view-all-student-groups) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_group_pages#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_group_pages#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Reports - manage | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_reports#reports-manage) Reports - manage ------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_reports#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_reports#reports) Reports Allows user to view and configure reports in Account Settings. Allows user to view Access Reports. Allows user to view last activity and total activity information on the People page. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_reports#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_reports#people-course) People (Course) To view Last Activity and Total Activity information on the Course People page, Users - view list must also be enabled. To access a Course People page, Users - view list must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_reports#reports-course) Reports (Course) To access the Student Interactions report, Grades - view all grades must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousRegular and Substantive Interactionchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report) [NextRubrics - add / edit / deletechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rubrics) Last updated 6 months ago Was this helpful? * [Reports - manage](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_reports#reports-manage) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_reports#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_reports#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Grades - edit | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#grades-edit) Grades - edit -------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#admin-tools-logging-tab) Admin Tools (Logging tab) Allows user to search by course ID or assignment ID in grade change logs in Admin Tools (not available at the subaccount level.) #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#analytics) Analytics Allows user to view student-specific data in Analytics. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#course-settings) Course Settings Allows user to view the course grading scheme. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#discussions) Discussions Allows user to like discussion posts when the Only Graders Can Like checkbox is selected. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#gradebook) Gradebook Allows user to add, edit, and update grades in the Gradebook. Allows user to access Gradebook History. Allows user to access the Learning Mastery Gradebook (if enabled). #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#grading-schemes) Grading Schemes Allows user to create and modify grading schemes. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#quizzes) Quizzes Allows user to moderate a quiz and view the quiz statistics page. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#speedgrader) SpeedGrader Allows user to edit grades and add comments in SpeedGrader. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#admin-tools-logging-tab-1) Admin Tools (Logging tab) To search grade change logs, Grades - view change logs must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#analytics-1) Analytics To view student analytics in course analytics, Analytics - view must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#course-settings-1) Course Settings To edit course grading schemes, Courses - manage must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#gradebook-speedgrader) Gradebook, SpeedGrader Gradebook and SpeedGrader will be inaccessible if both Grades - edit and Grades - view all grades are disabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#people-course) People (Course) To view student analytics, Users - view list and Analytics - view must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#quizzes-1) Quizzes To moderate a quiz, Assignments and Quizzes - manage / edit must also be enabled. To view the user SIS ID column in the Quiz Item Analysis CSV file, SIS Data - read must also be enabled. To view the submission log, Quizzes - view submission log must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#reports) Reports To access the Student Interactions report, Reports - manage must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousGlobal Announcements - add / edit / deletechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_alerts) [NextGrades - select final grade for moderationchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade) Last updated 6 months ago Was this helpful? * [Grades - edit](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#grades-edit) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_grades#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Learning Outcomes - add / edit / delete | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_outcomes#learning-outcomes-add-edit-delete) Learning Outcomes - add / edit / delete ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_outcomes#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_outcomes#outcomes) Outcomes Determines visibility and management of the Outcomes link in Account Navigation. Allows user to view the Outcomes Manage tab at the account and course levels. Allows user to create, edit, and delete outcomes and outcome groups at the account and course levels. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_outcomes#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_outcomes#feature-option) Feature Option If the Account and Course Level Outcome Mastery Scales feature option is enabled, the Manage tab displays an updated interface. Additionally, the Outcomes page will display two additional tabs that decouple mastery scales and proficiency calculations from outcomes management. Access to these tabs requires the Outcome Proficiency Calculations - add / edit and Outcome Mastery Scales - add / edit permissions. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_outcomes#outcomes-1) Outcomes To allow the Outcomes page as read-only, this permission can be disabled but Course Content - view must be enabled. To import learning outcomes, Learning Outcomes - import must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousLTI Registrations - Managechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti_registrations) [NextLearning Outcomes - importchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_outcomes) Last updated 6 months ago Was this helpful? * [Learning Outcomes - add / edit / delete](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_outcomes#learning-outcomes-add-edit-delete) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_outcomes#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_outcomes#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # IgniteAI Agent - Admins | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak#igniteai-agent-admins) IgniteAI Agent - Admins ------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak#igniteai-agent-admins-1) IgniteAI Agent - Admins Allows user to access the IgniteAI Agent for Canvas LMS. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak#igniteai-agent-admins-2) IgniteAI Agent - Admins The IgniteAI Agent feature flag must be enabled for the account to assign this permission. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousGroups - view all student groupschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_group_pages) [NextIgniteAI Agent - Faculty & Supportchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak_teacher) Last updated 1 month ago Was this helpful? * [IgniteAI Agent - Admins](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak#igniteai-agent-admins) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_access_oak#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manage Account Calendars | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_calendar#manage-account-calendars) Manage Account Calendars ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_calendar#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_calendar#account-calendars-add-edit-delete-events) Account Calendars - add / edit / delete events Allows user to add, edit, and delete events in account calendars. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_calendar#account-calendars-change-visibility) Account Calendars - change visibility Allows user to change visibility of account calendars. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_calendar#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_calendar#account-calendars) Account Calendars Even with the Account Calendars - add / edit / delete events permission enabled, events can only be created in account calendars that are visible. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousLearning Outcomes - importchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_outcomes) [NextManage Assignments and Quizzeschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes) Last updated 6 months ago Was this helpful? * [Manage Account Calendars](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_calendar#manage-account-calendars) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_calendar#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_calendar#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # New Quizzes - view multi session information | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_multiple_session_detection#new-quizzes-view-multi-session-information) New Quizzes - view multi session information ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_multiple_session_detection#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_multiple_session_detection#new-quizzes) New Quizzes This permission allows users to view multi-session activity information on the activity log and the moderate page. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_multiple_session_detection#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_multiple_session_detection#quiz-settings) Quiz settings Educators can enable the Detect Multiple Sessions setting on their quizzes to collect multi-session information on student submissions. This permission determines who can view this data in the activity log and moderate page. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousNew Quizzes - view IP addresschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_view_ip_address) [NextNotifications - viewchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_notifications) Last updated 6 months ago Was this helpful? * [New Quizzes - view multi session information](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_multiple_session_detection#new-quizzes-view-multi-session-information) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_multiple_session_detection#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_multiple_session_detection#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Grades - view all grades | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#grades-view-all-grades) Grades - view all grades -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#admin-tools-logging-tab) Admin Tools (Logging tab) Allows user to search by assignment ID in grade change logs. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#analytics) Analytics Allows user to view student-specific data in Analytics. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#assignments-speedgrader) Assignments, SpeedGrader Allows user to view a link to SpeedGrader from assignments. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#gradebook) Gradebook Allows user to export the Gradebook to a comma separated values (CSV) file. Allows user to access the Learning Mastery Gradebook (if enabled). #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#grades) Grades Allows user to view student Grades pages. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#modules) Modules Allows user to access the Student Progress page. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#people-course) People (Course) Allows user to view analytics link in the user settings menu. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#quizzes) Quizzes Allows user to view student results, view quiz statistics, and access a quiz in SpeedGrader. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#rubrics-speedgrader) Rubrics, SpeedGrader Allows user to view grader comments on a rubric in SpeedGrader. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#student-context-card) Student Context Card Adds analytics to a student’s context card. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#admin-tools-grade-change-logs) Admin Tools (Grade Change Logs) To search grade change logs, Grades - view change logs must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#analytics-1) Analytics To view student analytics, Analytics - view must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#gradebook-1) Gradebook To view the Gradebook, Course Content - view must also be enabled. If both Grades - edit and Grades - view all grades are disabled, Gradebook will be hidden from Course Navigation. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#grades-1) Grades To post or hide grades, Grades - edit must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#modules-1) Modules To view module progression, Grades - view all grades must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#reports) Reports To access the Student Interactions report, Reports - manage must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#student-context-card-1) Student Context Card Student Context Cards must be enabled for an account by an admin. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousGrades - select final grade for moderationchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_select_final_grade) [NextGrades - view audit trailchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_audit_trail) Last updated 1 month ago Was this helpful? * [Grades - view all grades](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#grades-view-all-grades) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_all_grades#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Permissions - manage | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_role_overrides#permissions-manage) Permissions - manage ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_role_overrides#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_role_overrides#permissions) Permissions Allows user to view and manage permissions. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousOutcome Proficiency Calculations - add / editchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_calculations) [NextPinboards - viewchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_ask_questions_pinboards) Last updated 6 months ago Was this helpful? * [Permissions - manage](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_role_overrides#permissions-manage) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_role_overrides#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manage Course Templates | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#manage-course-templates) Manage Course Templates ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#course-templates-create) Course Templates - create Allows user to set a template for an account. Allows user to select a course as a course template in Course Settings. Allows user to view names of course templates in the root account. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#course-templates-delete) Course Templates - delete Allows user to remove a course as a course template in Course Settings. Allows user to set an account to not use a template. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#course-templates-edit) Course Templates - edit Allows user to change the template being used by an account. Allows user to view names of course templates in the root account. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#account-settings) Account Settings To access the Account Settings tab, Account-level settings - manage must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#courses) Courses To create a new course to use as a course template, Courses - add must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManage Course Sectionschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections) [NextManage Courseschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_courses) Last updated 6 months ago Was this helpful? * [Manage Course Templates](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#manage-course-templates) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manage Groups | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#manage-groups) Manage Groups ---------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#groups-add) Groups - add Allows user to create account or course groups. Allows user to add group members to account or course groups. Allows user to add a group for a group assignment in a course. Allows user to create course groups created by students. Allows users to import groups in a course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#groups-delete) Groups - delete Allows user to delete account or course groups. Allows user to remove students from account or course groups. Allows user to move group members to another group in an account or course. Allows user to assign a student group leader in an account or course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#groups-manage) Groups - manage Allows user to edit account and course groups. Allows user to view the Clone Group Set button for an account or course group. Allows user to randomly assign users to an account or course group. Allows user to add users to an account or course group. Allows user to move group members to another group in an account or course. Allows user to assign a student group leader in an account or course. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#groups-add-1) Groups - add To add account level groups via CSV, SIS Data - import must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#groups) Groups If this permission is disabled, at the account level, the user cannot view any existing account groups. At the course level, the user can view, but not access, any existing groups, including groups created by students. To view account-level groups, Users - view list must also be enabled. To view all student groups in a course, Groups - view all student groups must also be enabled. By default, students can always create groups in a course. To restrict students from creating groups, Courses - manage must be enabled, and the Let students organize their own groups checkbox in Course Settings must not be selected. To access the People page and view course groups, Users - view list must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManage Differentiation Tagschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_differentiation_tags) [NextManage LTIchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti) Last updated 6 months ago Was this helpful? * [Manage Groups](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#manage-groups) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Statistics - view | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#statistics-view) Statistics - view ------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#account-statistics) Account Statistics Allows admin user to view account statistics. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#admin-tools-logging-tab) Admin Tools (Logging tab) Allows user to generate login/logout activity report in Admin Tools. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#admin-tools-logging-tab-1) Admin Tools (Logging tab) If Statistics - view or Users - manage login details is enabled, the user will be able to generate login/logout activity in Admin Tools. To hide the login/logout activity option in Admin Tools, both of these permissions need to be disabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#people-account) People (Account) To view user page views, Users - view list must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#subaccounts) Subaccounts Not available at the subaccount level. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousSite Admin - Rate Limitingchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting) [NextStorage Quotas - managechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_storage_quotas) Last updated 6 months ago Was this helpful? * [Statistics - view](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#statistics-view) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manage Differentiation Tags | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_differentiation_tags#manage-differentiation-tags) Manage Differentiation Tags ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_differentiation_tags#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_differentiation_tags#overview) Overview These permissions control the ability to create, edit, and delete differentiation tags. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_differentiation_tags#warning) Warning If any of these permissions are granted to a user role, that role will be able to view and access data about differentiation tags. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManage Courseschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_courses) [NextManage Groupschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups) Last updated 6 months ago Was this helpful? * [Manage Differentiation Tags](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_differentiation_tags#manage-differentiation-tags) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_differentiation_tags#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Question banks - view and link | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_question_banks#question-banks-view-and-link) Question banks - view and link ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_question_banks#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_question_banks#question-banks) Question Banks Allows user to view and link questions in a quiz to account-level question banks. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_question_banks#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_question_banks#quizzes-and-question-banks) Quizzes and Question Banks To access the Manage Question Banks link in a course Quizzes Index Page, Course content - view and Assignments and Quizzes - manage / edit must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousPinboards - viewchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_ask_questions_pinboards) [NextQuizzes - view submission logchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits) Last updated 6 months ago Was this helpful? * [Question banks - view and link](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_question_banks#question-banks-view-and-link) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_question_banks#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_question_banks#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - Temporary Enrollments | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_temporary_enrollments#users-temporary-enrollments) Users - Temporary Enrollments ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_temporary_enrollments#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_temporary_enrollments#manage-temporary-enrollments) Manage Temporary Enrollments Temporarily enroll a user into a course. This temporary enrollment is paired up with another enrollment within the course. The temporarily enrolled user can only view and participate in a course between the start and end dates that were chosen when making the temporary enrollment. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_temporary_enrollments#temporary-enrollments-add) Temporary Enrollments - add Allows users to add a temporary enrollment with a start date, end date, and role #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_temporary_enrollments#temporary-enrollments-edit) Temporary Enrollments - edit Allows users to edit an existing temporary enrollment #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_temporary_enrollments#temporary-enrollments-delete) Temporary Enrollments - delete Allows users to delete a temporary enrollment * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - Teacherschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments) [NextUsers - act aschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user) Last updated 6 months ago Was this helpful? * [Users - Temporary Enrollments](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_temporary_enrollments#users-temporary-enrollments) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_temporary_enrollments#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - Observers | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments#users-observers) Users - Observers ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments#observers-add) Observers - add Allows user to add observers to a course from the account Courses page. Allows user to add observers to a course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments#observers-remove) Observers - remove Allows user to remove observers from a course. Allows user to deactivate observers in a course. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments#courses-account) Courses (Account) If the Open Registration account setting is enabled, users with this permission can add observers to a course from the Courses page via email address or login ID even if an observer does not already have a Canvas account. To add a user via SIS ID, SIS Data - manage must also be enabled. To access the account Courses page, Courses - view list must be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments#people-course) People (Course) If an enrollment is created via SIS, only admins can remove the enrollment from a course. To remove a user via SIS ID, SIS Data - manage must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - Manage Access Tokenschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_users_manage_access_tokens) [NextUsers - Studentschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments) Last updated 6 months ago Was this helpful? * [Users - Observers](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments#users-observers) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Grades - view change logs | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_grade_changes#grades-view-change-logs) Grades - view change logs ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_grade_changes#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_grade_changes#admin-tools-logging-tab) Admin Tools (Logging tab) Determines visibility of the Grade Change Activity option in the Admin Tools Logging tab. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_grade_changes#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_grade_changes#admin-tools-logging-tab-1) Admin Tools (Logging tab) To search by grader or student ID, Users - view must also be enabled. To search by course ID or assignment ID, Grades - edit must also be enabled. To search by assignment ID only, Grades - view all grades must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousGrades - view audit trailchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_audit_trail) [NextGroups - view all student groupschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_group_pages) Last updated 6 months ago Was this helpful? * [Grades - view change logs](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_grade_changes#grades-view-change-logs) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_grade_changes#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_grade_changes#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # LTI Registrations - Manage | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti_registrations#lti-registrations-manage) LTI Registrations - Manage --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti_registrations#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti_registrations#lti-registrations-manage-1) LTI Registrations - Manage Allows users to view, add, modify, and delete LTI 1.3 tool registrations on the new Apps page. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti_registrations#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti_registrations#additional-requirements) Additional Requirements The Developer Keys - Manage permission must also be enabled for the Apps link to appear. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousItem Banks - share with subaccountschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_share_banks_with_subaccounts) [NextLearning Outcomes - add / edit / deletechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_outcomes) Last updated 6 months ago Was this helpful? * [LTI Registrations - Manage](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti_registrations#lti-registrations-manage) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti_registrations#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti_registrations#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # SIS Data - read | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#sis-data-read) SIS Data - read ------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#course-settings) Course Settings Allows user to view a course’s SIS ID. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#people-account) People (Account) Allows user to view the SIS ID in a user’s login details. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#people-course) People (Course) Allows user to view user SIS IDs in a course People page. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#quizzes) Quizzes Allows user to view the user SIS ID column in the Quiz Item Analysis CSV file. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#sis) SIS Governs account-related SIS IDs (i.e., subaccount SIS ID). ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#account-and-subaccount) Account and Subaccount Users and terms are located at the account, so the SIS endpoint always confirms the user’s permissions according to account. Subaccounts only have ownership of courses and sections; they do not own user data. Subaccount admins are not able to view SIS information unless they are also granted an instructor role in a course. Subaccount admins are not able to view SIS information unless they are also granted an instructor role in a course. Subaccount admins cannot view SIS information without the course association, as the instructor role has permission to read SIS data at the account level. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#people-account-1) People (Account) To view a user’s login details, Users - view list and Modify login details for users must also both be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#people-course-1) People (Course) To add or remove users to a course, the appropriate Users permission must be enabled (e.g. Users - Teachers). #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#sis-import) SIS Import To manage SIS data, SIS Data - manage must be enabled. If SIS Data - manage is enabled and SIS Data - read is disabled, the account permission overrides the course permission. If SIS Data - manage is disabled and SIS Data - read is enabled, users can only view course, user, and subaccount SIS IDs. To disallow users from viewing any SIS IDs at the course level, SIS Data - manage and SIS Data - read must both be disabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousSIS Data - managechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis) [NextSite Admin - Rate Limitingchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting) Last updated 6 months ago Was this helpful? * [SIS Data - read](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#sis-data-read) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manage Course Files | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#manage-course-files) Manage Course Files --------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#course-files-add) Course Files - add Allows user to add course files and folders. Allows user to import a zip file. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#course-files-edit) Course Files - edit Allows user to edit course files and folders. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#course-files-delete) Course Files - delete Allows user to delete course files and folders. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#course-files) Course Files If one or all permissions are disabled, user can still view and download files into a zip file. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#course-settings) Course Settings To import files using the Course Import Tool, Course files - add and Course Content - add / edit / delete must be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#blueprint-courses) Blueprint Courses To edit lock settings for course files, Course files - edit, Blueprint Courses - add / edit / associate / delete, and Courses - manage must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManage Course Contentchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content) [NextManage Course Sectionschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections) Last updated 6 months ago Was this helpful? * [Manage Course Files](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#manage-course-files) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - Designers | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments#users-designers) Users - Designers ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments#designers-add) Designers - add Allows user to add designers to a course from the account Courses page. Allows user to add designers to a course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments#designers-remove) Designers - remove Allows user to remove designers from a course. Allows user to deactivate designers in a course. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments#courses-account) Courses (Account) If the Open Registration account setting is enabled, users with this permission can add designers to a course from the Courses page via email address or login ID even if a designer does not already have a Canvas account. To add a user via SIS ID, SIS Data - manage must also be enabled. To access the account Courses page, Courses - view list must be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments#people-course) People (Course) If an enrollment is created via SIS, only admins can remove the enrollment from a course. To remove a user via SIS ID, SIS Data - manage must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousTitle IV Financial Aid Reportchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report) [NextUsers - Manage Access Tokenschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_users_manage_access_tokens) Last updated 6 months ago Was this helpful? * [Users - Designers](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments#users-designers) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - moderate content | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_user_content#users-moderate-content) Users - moderate content -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_user_content#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_user_content#eportfolios) ePortfolios Allows user to view the ePortfolio Moderation page and manage ePortfolio spam content. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - manage students in courseschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_students) [NextUsers - view listchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster) Last updated 6 months ago Was this helpful? * [Users - moderate content](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_user_content#users-moderate-content) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_user_content#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - generate observer pairing codes for students | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_generate_observer_pairing_code#users-generate-observer-pairing-codes-for-students) Users - generate observer pairing codes for students ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_generate_observer_pairing_code#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_generate_observer_pairing_code#people-course) People (Course) Allows user to generate a pairing code on behalf of a student to share with an observer. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_generate_observer_pairing_code#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_generate_observer_pairing_code#people-course-1) People (Course) To generate a pairing code from a student\`s User Settings page, the User - act as permission must also be enabled. To generate a pairing code from a student\`s User Details page, the Users - allow administrative actions in courses permission must also be enabled. Pairing codes are only supported when self registration is enabled for the account. QR codes are not the same as pairing codes and are only used to help users log into their own accounts via the Canvas mobile apps. To disable QR code logins for all users in your account, please contact your Customer Success Manager. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - create DSR exportchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_dsr_requests) [NextUsers - manage login detailschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins) Last updated 6 months ago Was this helpful? * [Users - generate observer pairing codes for students](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_generate_observer_pairing_code#users-generate-observer-pairing-codes-for-students) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_generate_observer_pairing_code#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_generate_observer_pairing_code#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manage Assignments and Quizzes | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#manage-assignments-and-quizzes) Manage Assignments and Quizzes ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#assignments-and-quizzes-add) Assignments and Quizzes - add Allows user to add assignments in a course. Allows user to add assignment groups in a course. Allows user to duplicate assignments in a course. Allows user to add new assignments to a module. Allows user to add new question banks to a course or account. Allows user to add new questions to new or existing question banks in a course or account. Allows user to add quizzes in a course. Allows user to duplicate quizzes in a course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#assignments-and-quizzes-edit) Assignments and Quizzes - edit Allows user to edit and publish/unpublish assignments. Allows user to manage assignment settings. Allows user to weight assignment groups. Allows user to edit lock settings on the Assignments and Quizzes index pages. Allows user to share an assignment to Commons. Allows user to share a quiz to Commons. Determines visibility and management of the Question Banks link in Account Navigation. Allows user to edit and publish/unpublish quizzes. Allows user to edit question banks in a course or account. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#assignments-and-quizzes-delete) Assignments and Quizzes - delete Allows user to delete assignments in a course. Allows user to delete assignment groups in a course. Allows user to delete quizzes in a course. Allows user to delete question banks in a course or account. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#assignments) Assignments To access the Assignments Index Page, Course Content - view must be enabled. To differentiate assignments to individual students, Users - view list must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#blueprint-courses) Blueprint Courses To edit lock settings from the Assignments index page, Blueprint Courses - add / edit / associate / delete and Courses - manage must also be enabled. If Blueprint Courses - add / edit / associate / delete and Courses - manage are enabled, but Assignments and Quizzes - edit is not enabled, blueprint lock settings for an assignment can be managed from the assignment’s details page. To edit lock settings on an individual quiz, or on the Quizzes index page, Blueprint Courses - add / edit / associate / delete and Courses - manage must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#course-settings) Course Settings To import assignments and quizzes using the Course Import Tool, Course Content - add / edit / delete must be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#discussions) Discussions These permissions do not manage Discussions. Discussions are managed via individual Discussion permissions. To edit assignment details on individual discussions, Discussions - manage must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#grades) Grades To manage moderated grading, Grades - Select final grade for moderation must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#quizzes) Quizzes To access the Quizzes Index Page, Course Content - view must be enabled. To moderate a quiz, Grades - edit must also be enabled. To access item banks for a course or account, Item Banks - manage account must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#rubrics) Rubrics Disabling the Assignments and Quizzes - add permission will override (if enabled) the Rubrics - add / edit / delete permission, preventing user from creating rubrics for an individual assignment. Disabling the Assignments and Quizzes - edit permission will override (if enabled) the Rubrics - add / edit / delete permission, preventing users from editing rubrics from an individual assignment. Disabling the Assignments and Quizzes - delete permission will override (if enabled) the Rubrics - add / edit / delete permission, preventing user from deleting rubrics for an individual assignment. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManage Account Calendarschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_calendar) [NextManage Course Contentchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content) Last updated 6 months ago Was this helpful? * [Manage Assignments and Quizzes](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#manage-assignments-and-quizzes) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Outcome Mastery Scales - add / edit | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_scales#outcome-mastery-scales-add-edit) Outcome Mastery Scales - add / edit -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_scales#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_scales#outcomes) Outcomes Allows user to view the Outcomes Mastery tab and set outcome mastery scales at the account and course levels. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_scales#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_scales#feature-option) Feature Option This permission requires the Account and Course Level Outcome Mastery Scales feature option, which must be enabled by a Customer Success Manager. This feature affects existing data for an entire account. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_scales#outcomes-1) Outcomes If the feature option is enabled, and this permission is enabled, the Outcomes page includes three tabs: Manage, Mastery, and Calculation. To access the Calculation tab, the Outcome Proficiency Calculations - add / edit permission must also be enabled. To access the Manage tab, the Learning Outcomes - add / edit / delete permission must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_scales#rubrics) Rubrics If this permission is enabled, the Learning Mastery tab displays on the Outcomes page instead of the Rubrics page. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousNotifications - viewchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_notifications) [NextOutcome Proficiency Calculations - add / editchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_calculations) Last updated 6 months ago Was this helpful? * [Outcome Mastery Scales - add / edit](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_scales#outcome-mastery-scales-add-edit) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_scales#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_proficiency_scales#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Site Admin - Rate Limiting | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#site-admin-rate-limiting) Site Admin - Rate Limiting ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#rate-limiting-add) Rate Limiting - add Allows user to create new rate limit settings for external tools and integrations. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#rate-limiting-edit) Rate Limiting - edit Allows user to modify existing rate limit settings, including changing rate limit values and comments. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#rate-limiting-delete) Rate Limiting - delete Allows user to remove rate limit settings for external tools and integrations. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#rate-limiting-view) Rate Limiting - view Allows user to view all rate limit settings and their details. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#site-admin-only) Site Admin Only This permission is only available to Site Admin users and requires the api\_rate\_limits feature flag to be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#external-tools) External Tools Rate limiting settings apply to external tools and integrations that use OAuth client configurations with throttling parameters. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#utid-integration) UTID Integration This feature supports UTID (Unified Tool ID) based rate limiting for partner tools and products. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousSIS Data - readchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis) [NextStatistics - viewchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics) Last updated 4 months ago Was this helpful? * [Site Admin - Rate Limiting](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#site-admin-rate-limiting) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rate_limiting#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Title IV Financial Aid Report | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report#title-iv-financial-aid-report) Title IV Financial Aid Report --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report#account-settings) Account Settings Allows an account administrator to access the Title IV Financial Aid Report in Intelligent Insights. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report#subaccounts) Subaccounts Provides scoped access to the Title IV Financial Aid Report. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report#intelligent-insights) Intelligent Insights The Title IV Financial Aid Report is part of the Intelligent Insights upgrade in Canvas. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousSubmission - Submit on behalf of studentchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_proxy_assignment_submission) [NextUsers - Designerschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_designer_enrollments) Last updated 1 month ago Was this helpful? * [Title IV Financial Aid Report](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report#title-iv-financial-aid-report) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Regular and Substantive Interaction | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report#regular-and-substantive-interaction) Regular and Substantive Interaction -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report#account-settings) Account Settings Allows an account administrator to access the Regular and Substantive Interaction Insights feature of Intelligent Insights. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report#subaccounts) Subaccounts Provides scoped access to the Regular and Substantive Interaction Insights feature. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report#intelligent-insights) Intelligent Insights Regular and Substantive Interaction Insights is part of the Intelligent Insights upgrade in Canvas. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousQuizzes - view submission logchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits) [NextReports - managechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_reports) Last updated 1 month ago Was this helpful? * [Regular and Substantive Interaction](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report#regular-and-substantive-interaction) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manage Course Sections | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections#manage-course-sections) Manage Course Sections ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections#course-sections-add) Course Sections - add Allows user to add course sections in Course Settings. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections#course-sections-edit) Course Sections - edit Allows user to rename course sections. Allows user to change start and end dates for course sections. Allows user to cross-list sections. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections#course-sections-delete) Course Sections - delete Allows user to delete course sections. Allows user to delete a user from a course section. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections#cross-listing) Cross-Listing To cross-list sections, Course Sections - edit and Courses - manage must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManage Course Fileschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files) [NextManage Course Templateschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_templates) Last updated 6 months ago Was this helpful? * [Manage Course Sections](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections#manage-course-sections) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sections#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - act as | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#users-act-as) Users - act as -------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#people-account) People (Account) Allows user to act as other users in the account. This permission should only be assigned to users that your institution has authorized to act as other users in your entire Canvas account. Users with this permission may be able to use the Act as feature to manage account settings, view and adjust grades, access user information, etc. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#student-context-card) Student Context Card Allows user to access the Act as User link on student context cards. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#speedgrader) SpeedGrader Allows user to delete a submission file. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#people-course) People (Course) Allows user to view Login IDs in a course People page. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#api) API The Roles API refers to this permission as become\_user. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#people-account-1) People (Account) To view the list of users in an account, Users - view list must be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#student-context-card-1) Student Context Card Student Context Cards must be enabled for an account by an admin. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#subaccounts) Subaccounts Not available at the subaccount level. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - Temporary Enrollmentschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_temporary_enrollments) [NextUsers - allow administrative actions in courseschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_allow_course_admin_actions) Last updated 6 months ago Was this helpful? * [Users - act as](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#users-act-as) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_become_user#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - view login IDs | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_logins#users-view-login-ids) Users - view login IDs ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_logins#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_logins#people-account-course) People (Account, Course) Allows user to search for other users by Login ID in the account People page. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_logins#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_logins#people-account-course-1) People (Account, Course) To access the People page, Users - view list must be enabled. If this permission is enabled, and if Users - view primary email address is disabled, users will see email addresses used as login IDs. To view login IDs, Users - allow administrative actions in courses must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - view listchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster) [NextUsers - view primary email addresschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_email_addresses) Last updated 6 months ago Was this helpful? * [Users - view login IDs](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_logins#users-view-login-ids) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_logins#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_logins#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Submission - Submit on behalf of student | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_proxy_assignment_submission#submission-submit-on-behalf-of-student) Submission - Submit on behalf of student ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_proxy_assignment_submission#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_proxy_assignment_submission#submissions) Submissions Allows instructors to submit file attachments on behalf of a student. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_proxy_assignment_submission#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_proxy_assignment_submission#submissions-1) Submissions Once enabled, this option is visible in gradebook for instructors. Instructors are not bound by attempt limits, but an instructor's submission WILL count as a student's attempt. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousStudents in Need of Attentionchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_students_in_need) [NextTitle IV Financial Aid Reportchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_title_iv_financial_aid_report) Last updated 6 months ago Was this helpful? * [Submission - Submit on behalf of student](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_proxy_assignment_submission#submission-submit-on-behalf-of-student) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_proxy_assignment_submission#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_proxy_assignment_submission#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Pinboards - view | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_ask_questions_pinboards#pinboards-view) Pinboards - view ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_ask_questions_pinboards#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_ask_questions_pinboards#account-settings) Account Settings Allows view access to Ask Your Data's Pinboards feature of Intelligent Insights. Does not include access to Ask Your Data's Chat feature or AI. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_ask_questions_pinboards#subaccounts) Subaccounts Provides a scoped access to the Ask Your Data feature. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousPermissions - managechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_role_overrides) [NextQuestion banks - view and linkchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_question_banks) Last updated 1 month ago Was this helpful? * [Pinboards - view](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_ask_questions_pinboards#pinboards-view) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_ask_questions_pinboards#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - create DSR export | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_dsr_requests#users-create-dsr-export) Users - create DSR export -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_dsr_requests#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_dsr_requests#users-create-dsr-export-1) Users - create DSR export Allows user to create DSR exports. Allows user to download completed DSR exports. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - allow administrative actions in courseschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_allow_course_admin_actions) [NextUsers - generate observer pairing codes for studentschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_generate_observer_pairing_code) Last updated 6 months ago Was this helpful? * [Users - create DSR export](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_dsr_requests#users-create-dsr-export) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_dsr_requests#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Storage Quotas - manage | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_storage_quotas#storage-quotas-manage) Storage Quotas - manage ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_storage_quotas#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_storage_quotas#quotas-account-settings) Quotas (Account Settings) Allows user to view and manage Quotas tab in Account Settings. User can set default course, user, and group storage quotes. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousStatistics - viewchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_statistics) [NextStudent Collaborations - createchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_collaborations) Last updated 6 months ago Was this helpful? * [Storage Quotas - manage](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_storage_quotas#storage-quotas-manage) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_storage_quotas#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - view primary email address | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_email_addresses#users-view-primary-email-address) Users - view primary email address --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_email_addresses#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_email_addresses#people-account) People (Account) Allows user to search for account users via primary email address in the account People page. Allows user to search for other users via primary email address in a course People page. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_email_addresses#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_email_addresses#people-account-1) People (Account) To view the account People page, Users - view list must be enabled. If this permission is disabled, and Users - view login IDs is enabled, users will still see email addresses used as login IDs. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - view login IDschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_logins) [NextWeb Conferences - createchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_conferences) Last updated 6 months ago Was this helpful? * [Users - view primary email address](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_email_addresses#users-view-primary-email-address) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_email_addresses#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_email_addresses#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Web Conferences - create | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_conferences#web-conferences-create) Web Conferences - create ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_conferences#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_conferences#conferences) Conferences Allows user to create new conferences in courses and groups. Allows user to start conferences they created. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_conferences#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_conferences#conferences-1) Conferences To allow full management of conferences created by the user or others, the Course Content permission must also be enabled. To end a long-running conference, the Course Content permission must be enabled. If the Course Content permission enabled and Web Conferences - create is disabled, the user can still manage conferences. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - view primary email addresschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_email_addresses) [NextCatalogchevron-right](https://developerdocs.instructure.com/services/catalog) Last updated 6 months ago Was this helpful? * [Web Conferences - create](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_conferences#web-conferences-create) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_conferences#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_conferences#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Quizzes - view submission log | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits#quizzes-view-submission-log) Quizzes - view submission log -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits#quizzes) Quizzes Allows user to view student quiz logs. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits#grades) Grades Grades - edit must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits#quizzes-1) Quizzes The Quiz Log Auditing feature option must be enabled in Course Settings. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousQuestion banks - view and linkchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_question_banks) [NextRegular and Substantive Interactionchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_rsi_report) Last updated 6 months ago Was this helpful? * [Quizzes - view submission log](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits#quizzes-view-submission-log) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_quiz_answer_audits#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manage Course Content | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#manage-course-content) Manage Course Content ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#course-content-add) Course Content - add Allows user to share course items directly with other users. Allows user to copy individual course items to another course. Allows user to view course copy status. Allows user to create content migrations. Allows user to create blackout dates. Allows user to add events to Calendar List View Dashboard via the Add to Student To-Do checkbox. Allows user to create a course pace via Course Pacing. Allows user to import resources from Commons into a course. Allows user to import content using the Course Import Tool. Allows user to add non-graded discussions to List View Dashboard via the Add to Student To-Do checkbox. Allows user to create, add items, and duplicate modules. Allows user to add pages to List View Dashboard via the Add to Student To-Do checkbox. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#course-content-edit) Course Content - edit Allows user to lock / unlock selected announcements individually or in bulk. Allows user to edit a list of assignment blackout dates. Allows user to share assignments to Commons or edit previously shared content. Allows user to edit to-do date on a course Page that supports it. Allows user to edit Conferences. Allows user to edit title, and description on all collaborations. Allows user to update modules (edit module settings, publish, unpublish, batch edit, assign modules). Allows user to edit content migrations. Allows user to edit and publish a course pace via Course Pacing. Allows user to edit the course syllabus. Allows user to edit course tabs. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#course-content-delete) Course Content - delete Allows user to remove selected announcements individually or in bulk. Allows user to remove assignment blackout dates. Allows user to remove collaborators on all collaborations. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#course-content-add-edit-or-delete) Course Content - add / edit / or delete Allows user to have full section visibility when viewing announcements. Allows user to access the Attendance tool. Allows user to view Course Status, Choose Home Page, and Course Setup Checklist buttons in the Home page. Allows user to access the Chat tool. Allows user to view course Conferences. Allows user to view and list content migrations. Allows user to view a content migration content list by type. Allows user access to LTI sub navigation tool selection for assignment syllabus configuration. Allows user to view or retrieve a list of assignment blackout dates. Allows user to view a content migration notice to an "import in progress". Allows user to view previously created collaborations. Allows user to view and list course paces via Course Pacing. Allows user to view and initiate course link validation. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#attendance) Attendance The Attendance tool must be enabled by your Canvas admin. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#chat) Chat The Chat tool must be enabled by your Canvas admin. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#commons) Commons To share a Discussion to Commons, Discussions - view must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#course-home-page) Course Home Page Teachers, designers, and TAs can select a course home page without the Course content - add / edit / delete permission. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#course-settings) Course Settings The Course Status buttons (unpublished and published) are only displayed until a student submission is received. Courses cannot be unpublished with student submissions. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#modules) Modules Module items cannot be unpublished if there are student submissions. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#course-pacing) Course Pacing Course Pacing feature preview must be enabled in your institution. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManage Assignments and Quizzeschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_assignments_and_quizzes) [NextManage Course Fileschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_files) Last updated 6 months ago Was this helpful? * [Manage Course Content](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#manage-course-content) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_content#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manage Pages | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#manage-pages) Manage Pages ------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#pages-create) Pages - create Allows user to create course pages. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#pages-delete) Pages - delete Allows user to delete course pages. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#pages-update) Pages - update Allows user to edit course pages. Allows user to define users allowed to edit the page. Allows user to add page to student to-do list. Allows user to publish and unpublish pages. Allows user to view page history and set front page. Allows user to edit Blueprint Course lock settings in the Pages index page and for an individual page in a Blueprint master course. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#blueprint-courses) Blueprint Courses Blueprint courses must be enabled for an account by an admin. To edit lock settings on the Pages index page, Pages - update, Blueprint Courses - add / edit / associate / delete, and Courses - manage. However, if these additional permissions are enabled, but the Pages - update permission is not enabled, the user can still adjust content lock settings on individual pages in a Blueprint Master Course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#student-page-history) Student Page History Students can edit and view page history if allowed in the options for an individual page. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManage LTIchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti) [NextManually Generated Access Tokens - viewchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_generated_access_tokens) Last updated 6 months ago Was this helpful? * [Manage Pages](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#manage-pages) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - manage login details | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#users-manage-login-details) Users - manage login details ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#people-account) People (Account) Allows user to create accounts for new users. Allows user to remove and merge users in an account. Allows user to modify user account details. Allows user to view and modify login information for a user. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#admin-tools-logging-tab) Admin Tools (Logging tab) Allows user to generate login/logout activity report in Admin Tools. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#admin-tools-logging-tab-1) Admin Tools (Logging tab) If Users - manage login details or Statistics - view is enabled, the user will be able to generate login/logout activity in Admin Tools. To hide the login/logout activity option in Admin Tools, both of these permissions need to be disabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#people-account-1) People (Account) To view users and user account details, Users - view list must be enabled. To change user passwords, Users - view must also be enabled. To view a user’s SIS ID, SIS Data - manage or SIS Data - read must also be enabled. To view a user’s Integration ID, SIS Data - manage must also be enabled. To merge users, the Self Service User Merge feature option must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#people-course) People (Course) To add or remove users to a course, the appropriate Users permission must be enabled (e.g. Users - Teachers). #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#subaccounts) Subaccounts Not available at the subaccount level. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - generate observer pairing codes for studentschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_generate_observer_pairing_code) [NextUsers - manage observerschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_observers) Last updated 6 months ago Was this helpful? * [Users - manage login details](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#users-manage-login-details) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_logins#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - Students | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments#users-students) Users - Students ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments#students-add) Students - add Allows user to add students to a course from the account Courses page. Allows user to update a student’s section enrollment or role. Allows user to add students to a course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments#students-remove) Students - remove Allows user to remove students from a course. Allows user to remove a student’s section enrollment or role. Allows user to deactivate students in a course. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments#courses-account) Courses (Account) If the Open Registration account setting is enabled, users with this permission can add students to a course from the Courses page via email address or login ID even if a student does not already have a Canvas account. To add a user via SIS ID, SIS Data - manage must also be enabled. To access the account Courses page, Courses - view list must be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments#people-course) People (Course) If an enrollment is created via SIS, only admins can remove the enrollment from a course. To remove a user via SIS ID, SIS Data - manage must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - Observerschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_observer_enrollments) [NextUsers - TAschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments) Last updated 6 months ago Was this helpful? * [Users - Students](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments#users-students) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # SIS Data - manage | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#sis-data-manage) SIS Data - manage ------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#account-navigation) Account Navigation Determines visibility of SIS Import link in Account Navigation. Allows user to view the previous SIS import dates, errors, and imported items. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#course-settings) Course Settings Allows user to edit the course SIS ID. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#people-account) People (Account) Allows user to view and edit the SIS ID and Integration ID in a user’s Login Details. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#people-course) People (Course) Allows user to edit the course SIS ID. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#subaccount-settings) Subaccount Settings Allows user to view and insert data in the SIS ID field. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#course-settings-1) Course Settings To edit course settings, Courses - manage must be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#people-account-1) People (Account) To view or edit a user’s SIS ID or Integration ID, Users - view list and Users - manage login details must also both be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#people-course-1) People (Course) If this permission is enabled, users do not need the SIS Data - read permission enabled. The account permission overrides the course permission. To disallow users from managing SIS IDs at the course level, SIS Data - manage and SIS Data - read must both be disabled. To add or remove users to a course, the appropriate Users permission must be enabled (e.g. Users - Teachers). #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#sis-import) SIS Import To import SIS data, SIS Data - import must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#subaccounts) Subaccounts Not available at the subaccount level. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousSIS Data - importchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis) [NextSIS Data - readchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_sis) Last updated 6 months ago Was this helpful? * [SIS Data - manage](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#sis-data-manage) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - manage students in courses | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_students#users-manage-students-in-courses) Users - manage students in courses ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_students#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_students#people-course) People (Course) Allows user to view login ID information for students. Allows user to view prior enrollments. Allows user to access a user’s settings menu and user details. Allows user to resend course invitations from the Course People page. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_students#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_students#courses-account) Courses (Account) To access the account Courses page, Courses - view list must be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_students#people-course-1) People (Course) To add or remove a student to or from a course, the Users - Student permission must be enabled. To view the list of users in the course, Users - view list must be enabled. To view SIS IDs, SIS Data - read must be enabled. To edit a student’s section, Conversations - send to individual course members must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - manage observerschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_user_observers) [NextUsers - moderate contentchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_user_content) Last updated 6 months ago Was this helpful? * [Users - manage students in courses](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_students#users-manage-students-in-courses) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_students#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_students#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Students in Need of Attention | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_students_in_need#students-in-need-of-attention) Students in Need of Attention -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_students_in_need#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_students_in_need#students-in-need-of-attention-1) Students in Need of Attention Allows an account administrator to access the Students in Need of Attention feature of Intelligent Insights. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_students_in_need#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_students_in_need#intelligent-insights) Intelligent Insights Students in Need of Attention is part of the Intelligent Insights upgrade in Canvas. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousStudent Collaborations - createchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_create_collaborations) [NextSubmission - Submit on behalf of studentchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_proxy_assignment_submission) Last updated 6 months ago Was this helpful? * [Students in Need of Attention](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_students_in_need#students-in-need-of-attention) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_students_in_need#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_students_in_need#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manage LTI | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti#manage-lti) Manage LTI ------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti#lti-add) LTI - add Allows user to manually add an app in Account Settings. Allows user to add external app icons to the Rich Content Editor toolbar. Allows user to manually add an app in Course Settings. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti#lti-delete) LTI - delete Allows user to manually delete an app in Account Settings. Allows user to manually delete an app in Course Settings. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti#lti-edit) LTI - edit Allows user to edit configurations for manually added external apps. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti#external-apps) External Apps If LTI - add is disabled, users can still install approved apps through the Canvas App Center (if enabled for your institution). However, if LTI - delete is not enabled, they cannot delete manually added external apps. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManage Groupschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_groups) [NextManage Pageschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki) Last updated 6 months ago Was this helpful? * [Manage LTI](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti#manage-lti) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # New Quizzes - view IP address | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_view_ip_address#new-quizzes-view-ip-address) New Quizzes - view IP address ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_view_ip_address#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_view_ip_address#new-quizzes) New Quizzes This permission allows users to view IP address information on the activity log. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManually Generated Access Tokens - viewchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_generated_access_tokens) [NextNew Quizzes - view multi session informationchevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_multiple_session_detection) Last updated 6 months ago Was this helpful? * [New Quizzes - view IP address](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_view_ip_address#new-quizzes-view-ip-address) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_view_ip_address#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Manually Generated Access Tokens - view | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_generated_access_tokens#manually-generated-access-tokens-view) Manually Generated Access Tokens - view -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_generated_access_tokens#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_generated_access_tokens#access-tokens) Access Tokens Allows user to view other user's manually generated access tokens. This does not let them read the actual token value itself, just the information about it. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousManage Pageschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_wiki) [NextNew Quizzes - view IP addresschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_new_quizzes_view_ip_address) Last updated 4 days ago Was this helpful? * [Manually Generated Access Tokens - view](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_generated_access_tokens#manually-generated-access-tokens-view) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_generated_access_tokens#what-it-does) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - Teachers | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments#users-teachers) Users - Teachers ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments#teachers-add) Teachers - add Allows user to add teachers to a course from the account Courses page. Allows user to add teachers to a course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments#teachers-remove) Teachers - remove Allows user to remove teachers from a course. Allows user to deactivate teachers in a course. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments#courses-account) Courses (Account) If the Open Registration account setting is enabled, users with this permission can add teachers to a course from the Courses page via email address or login ID even if a teacher does not already have a Canvas account. To add a user via SIS ID, SIS Data - manage must also be enabled. To access the account Courses page, Courses - view list must be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments#people-course) People (Course) If an enrollment is created via SIS, only admins can remove the enrollment from a course. To remove a user via SIS ID, SIS Data - manage must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - TAschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments) [NextUsers - Temporary Enrollmentschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_temporary_enrollments) Last updated 6 months ago Was this helpful? * [Users - Teachers](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments#users-teachers) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - view list | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#users-view-list) Users - view list -------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#account-navigation) Account Navigation Allows user to access the People link in Account Navigation. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#admin-tools-logging-tab) Admin Tools (Logging tab) Allows user to view login/logout activity of users in Admin Tools. Allows user to search grade change logs by grader or student in Admin Tools. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#assignments) Assignments Allows user to differentiate assignments to individual students. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#collaborations) Collaborations Allows user to view and add users in a collaboration. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#conversations) Conversations Allows user to send a message in Conversations without selecting a course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#course-navigation) Course Navigation Allows user to view the People link in Course Navigation. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#groups-course) Groups (Course) Allows user to view groups in a course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#people-account) People (Account) Allows user to view list of users in the account. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#people-course) People (Course) Allows user to view list of users in the course People page. Allows user to view the Prior Enrollments button in the course People page. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#account-groups) Account Groups To view account-level groups, Groups - manage must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#admin-tools-logging-tab-1) Admin Tools (Logging tab) To generate login/logout activity in Admin Tools, Users - manage login details or Statistics - view must also be enabled. To generate grade change logs in Admin Tools, Grades - view change logs must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#courses) Courses To add or remove users to a course, the appropriate Users permission must be enabled (e.g. Users - Teachers). #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#groups) Groups To add groups, Groups - add must also be enabled. To delete groups, Groups - delete must also be enabled. To edit groups, Groups - manage must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#people-account-1) People (Account) To edit user details, modify login details, or change user passwords, Users - manage login details must also be enabled. To view user page views, Statistics - view must also be enabled. To act as other users, Users - act as must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#people-course-1) People (Course) To edit a user’s section, the appropriate Users permission (e.g. Users - Teachers), Users - allow administrative actions in courses, and Conversations - send to individual course members must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - moderate contentchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_moderate_user_content) [NextUsers - view login IDschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_view_user_logins) Last updated 1 month ago Was this helpful? * [Users - view list](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#users-view-list) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_read_roster#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Users - TAs | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments#users-tas) Users - TAs ------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments#tas-add) TAs - add Allows user to add TAs to a course from the account Courses page. Allows user to add TAs in the course. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments#tas-remove) TAs - remove Allows user to remove TAs from a course. Allows user to deactivate TAs in a course. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments#courses-account) Courses (Account) If the Open Registration account setting is enabled, users with this permission can add TAs to a course from the Courses page via email address or login ID even if a TA does not already have a Canvas account. To add a user via SIS ID, SIS Data - manage must also be enabled. To access the account Courses page, Courses - view list must be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments#people-course) People (Course) If an enrollment is created via SIS, only admins can remove the enrollment from a course. To remove a user via SIS ID, SIS Data - manage must also be enabled. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousUsers - Studentschevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_student_enrollments) [NextUsers - Teacherschevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_teacher_enrollments) Last updated 6 months ago Was this helpful? * [Users - TAs](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments#users-tas) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_course_ta_enrollments#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # SIS Data - import | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis#sis-data-import) SIS Data - import ------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis#account-navigation) Account Navigation Determines visibility and management of SIS Import link in Account Navigation. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis#sis-import) SIS Import Allows user to import SIS data. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis#sis-import-1) SIS Import To manage SIS data, SIS Data - manage must also be enabled. #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis#subaccounts) Subaccounts Not available at the subaccount level * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousRubrics - add / edit / deletechevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_rubrics) [NextSIS Data - managechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_sis) Last updated 6 months ago Was this helpful? * [SIS Data - import](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis#sis-data-import) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_import_sis#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon --- # Item Banks - share with subaccounts | Instructure Developer Documentation Portal circle-exclamation **Welcome to Our New API Docs!** This is the new home for all things API (previously at [Canvas LMS REST API Documentationarrow-up-right](https://api.instructure.com/) ). [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_share_banks_with_subaccounts#item-banks-share-with-subaccounts) Item Banks - share with subaccounts ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_share_banks_with_subaccounts#what-it-does) What it Does #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_share_banks_with_subaccounts#item-banks) Item Banks Allows a user to manage sharing of item banks with subaccounts. ### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_share_banks_with_subaccounts#additional-considerations) Additional Considerations #### [hashtag](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_share_banks_with_subaccounts#item-banks-1) Item Banks If this permission is disabled, users cannot share item banks to subaccounts. When a user with an admin role is granted this permission, the user can share item banks to subaccounts they administer. * * * This documentation is generated directly from the Canvas LMS source code, available [on Githubarrow-up-right](https://github.com/instructure/canvas-lms) . [PreviousItem Banks - manage accountchevron-left](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_account_banks) [NextLTI Registrations - Managechevron-right](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_manage_lti_registrations) Last updated 6 months ago Was this helpful? * [Item Banks - share with subaccounts](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_share_banks_with_subaccounts#item-banks-share-with-subaccounts) * [What it Does](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_share_banks_with_subaccounts#what-it-does) * [Additional Considerations](https://developerdocs.instructure.com/services/canvas/permissions/details/file.permissions_share_banks_with_subaccounts#additional-considerations) Was this helpful? sun-brightdesktopmoon sun-brightdesktopmoon ---