Class ::canvas::API

::canvas::API[i] create ... \
           [ -baseurl baseurl ] \
           [ -client_id client_id ] \
           [ -client_secret client_secret ] \
           [ -token token ] \
           [ -version (default "v1") ]

Basic Canvas API for OAuth calls. For details, see https://canvas.instructure.com/doc/api/
Documented Parameters:
baseurl
starting URL
token
auth token
version
Version of the API
Defined in packages/xooauth/tcl/canvas-procs.tcl

Class Relations

  • class: ::nx::Class[i]
  • superclass: ::xo::REST[i]
::nx::Class create ::canvas::API \
     -superclass ::xo::REST

Methods (to be applied on instances)

  • account admins (scripted, public)

     <instance of canvas::API[i]> account admins [ -page page ] \
        [ -per_page per_page ] [ -max_entries max_entries ] account_id

    Get a paginated list of the admins in the account. Details: https://canvas.instructure.com/doc/api/admins.html

    Switches:
    -page (optional, defaults to "1")
    Return the nth page of the result set
    -per_page (optional, defaults to "10")
    Return this number of entries per page
    -max_entries (optional)
    perform potentially multiple requests until the requested number of entries can be returned.
    Parameters:
    account_id (required, integer)

    Testcases:
    No testcase defined.
    set r [:request -method GET -token ${:token}  -url /accounts/${account_id}/admins]
    return [:paginated_result_list -max_entries $max_entries $r 200]
  • account courses (scripted, public)

     <instance of canvas::API[i]> account courses \
        [ -with_enrollments with_enrollments ] \
        [ -enrollment_type enrollment_type ] [ -published published ] \
        [ -completed completed ] [ -blueprint blueprint ] \
        [ -blueprint_associated blueprint_associated ] \
        [ -by_teachers by_teachers ] [ -by_subaccounts by_subaccounts ] \
        [ -hide_enrollmentless_courses hide_enrollmentless_courses ] \
        [ -state state ] [ -enrollment_term_id enrollment_term_id ] \
        [ -search_term search_term ] [ -include include ] [ -sort sort ] \
        [ -order order ] [ -search_by search_by ] \
        [ -starts_before starts_before ] [ -ends_after ends_after ] \
        [ -homeroom homeroom ] [ -page page ] [ -per_page per_page ] \
        [ -max_entries max_entries ] account_id

    Retrieve a paginated list of courses in this account. Details: https://canvas.instructure.com/doc/api/accounts.html

    Switches:
    -with_enrollments (optional)
    If true, include only courses with at least one enrollment. If false, include only courses with no enrollments. If not present, do not filter on course enrollment status.
    -enrollment_type (optional)
    If set, only return courses that have at least one user enrolled in the course with one of the specified enrollment types. Allowed values: teacher, student, ta, observer, designer
    -published (optional)
    If true, include only published courses. If false, exclude published courses. If not present, do not filter on published status.
    -completed (optional)
    If true, include only completed courses (these may be in state 'completed', or their enrollment term may have ended). If false, exclude completed courses. If not present, do not filter on completed status.
    -blueprint (optional)
    If true, include only blueprint courses. If false, exclude them. If not present, do not filter on this basis.
    -blueprint_associated (optional)
    If true, include only courses that inherit content from a blueprint course. If false, exclude them. If not present, do not filter on this basis.
    -by_teachers (optional)
    List of User IDs of teachers; if supplied, include only courses taught by one of the referenced users.
    -by_subaccounts (optional)
    List of Account IDs; if supplied, include only courses associated with one of the referenced subaccounts.
    -hide_enrollmentless_courses (optional)
    If present, only return courses that have at least one enrollment. Equivalent to 'with_enrollments=true'; retained for compatibility.
    -state (optional)
    If set, only return courses that are in the given state(s). By default, all states but “deleted” are returned. Allowed values: created, claimed, available, completed, deleted, all.
    -enrollment_term_id (optional)
    If set, only includes courses from the specified term.
    -search_term (optional)
    If set, only includes courses from the specified term.
    -include (optional)
    List of extra values to be included. Allowed values: syllabus_body, term, course_progress, storage_quota_used_mb, total_students, teachers, account_name, concluded
    -sort (optional)
    The column to sort results by. Allowed values: course_name, sis_course_id, teacher, account_name
    -order (optional)
    the order to sort the given column by. Allowed values: asc, desc
    -search_by (optional)
    The filter to search by. “course” searches for course names, course codes, and SIS IDs. “teacher” searches for teacher names Allowed values: course, teacher
    -starts_before (optional)
    If set, only return courses that start before the value (inclusive) or their enrollment term starts before the value (inclusive) or both the course's start_at and the enrollment term's start_at are set to null. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.
    -ends_after (optional)
    If set, only return courses that end after the value (inclusive) or their enrollment term ends after the value (inclusive) or both the course's end_at and the enrollment term's end_at are set to null. The value should be formatted as: yyyy-mm-dd or ISO 8601 YYYY-MM-DDTHH:MM:SSZ.
    -homeroom (optional)
    If set, only return homeroom courses.
    -page (optional, defaults to "1")
    Return the nth page of the result set
    -per_page (optional, defaults to "10")
    Return this number of entries per page
    -max_entries (optional)
    perform potentially multiple requests until the requested number of entries can be returned.
    Parameters:
    account_id (required, integer)

    Testcases:
    No testcase defined.
    set r [:request -method GET -token ${:token}  -url /accounts/${account_id}/courses?[:params {page per_page
                   with_enrollments enrollment_type:array
                   published completed blueprint blueprint_associated
                   by_teachers:array by_subaccounts:array
                   hide_enrollmentless_courses state:array
                   enrollment_term_id search_term
                   include:array sort order search_by
                   starts_before ends_after homeroom
                   }]]
    return [:paginated_result_list -max_entries $max_entries $r 200]
  • account get (scripted, public)

     <instance of canvas::API[i]> account get account_id

    Retrieve information on an individual account, given by id or sis sis_account_id. Details: https://canvas.instructure.com/doc/api/accounts.html

    Parameters:
    account_id (required, integer)

    Testcases:
    No testcase defined.
    set r [:request -method GET -token ${:token}  -url /accounts/${account_id}]
    return [:expect_status_code $r 200]
  • account list (scripted, public)

     <instance of canvas::API[i]> account list [ -page page ] \
        [ -per_page per_page ] [ -max_entries max_entries ]

    A paginated list of accounts that the current user can view or manage. Typically, students and even teachers will get an empty list in response, only account admins can view the accounts that they are in. Details: https://canvas.instructure.com/doc/api/accounts.html

    Switches:
    -page (optional, defaults to "1")
    Return the nth page of the result set
    -per_page (optional, defaults to "10")
    Return this number of entries per page
    -max_entries (optional)
    perform potentially multiple requests until the requested number of entries can be returned.

    Testcases:
    No testcase defined.
    set r [:request -method GET -token ${:token}  -url /accounts?[:params {page per_page}]]
    return [:paginated_result_list -max_entries $max_entries $r 200]
  • account permissions (scripted, public)

     <instance of canvas::API[i]> account permissions \
        [ -permissions permissions ] account_id

    Returns permission information for the calling user and the given account. You may use `self` as the account id to check permissions against the domain root account. The caller must have an account role or admin (teacher/TA/designer) enrollment in a course in the account. Details: https://canvas.instructure.com/doc/api/accounts.html

    Switches:
    -permissions (optional)
    Parameters:
    account_id (required, integer)

    Testcases:
    No testcase defined.
    set r [:request -method GET -token ${:token}  -url /accounts/${account_id}/permissions?[:params {permissions:array}]]
    return [:expect_status_code $r 200]
  • account settings (scripted, public)

     <instance of canvas::API[i]> account settings account_id

    Returns all of the settings for the specified account as a JSON object. The caller must be an Account admin with the manage_account_settings permission. Details: https://canvas.instructure.com/doc/api/accounts.html

    Parameters:
    account_id (required, integer)

    Testcases:
    No testcase defined.
    set r [:request -method GET -token ${:token}  -url /accounts/${account_id}/settings]
    return [:expect_status_code $r 200]
  • course activities (scripted, public)

     <instance of canvas::API[i]> course activities [ -page page ] \
        [ -per_page per_page ] [ -max_entries max_entries ] course_id

    Returns the paginated Returns the current user's course-specific activity stream, paginated. Details: https://canvas.instructure.com/doc/api/courses.html

    Switches:
    -page (optional, defaults to "1")
    Return the nth page of the result set
    -per_page (optional, defaults to "10")
    Return this number of entries per page
    -max_entries (optional)
    perform potentially multiple requests until the requested number of entries can be returned.
    Parameters:
    course_id (required, integer)

    Testcases:
    No testcase defined.
    set r [:request -method GET -token ${:token}  -url /courses/${course_id}/activity_stream?[:params {page per_page}]]
    return [:paginated_result_list -max_entries $max_entries $r 200]
  • course todo (scripted, public)

     <instance of canvas::API[i]> course todo [ -page page ] \
        [ -per_page per_page ] [ -max_entries max_entries ] course_id

    Returns a paginated list of the current user's course-specific todo items. Details: https://canvas.instructure.com/doc/api/courses.html

    Switches:
    -page (optional, defaults to "1")
    Return the nth page of the result set
    -per_page (optional, defaults to "10")
    Return this number of entries per page
    -max_entries (optional)
    perform potentially multiple requests until the requested number of entries can be returned.
    Parameters:
    course_id (required, integer)

    Testcases:
    No testcase defined.
    set r [:request -method GET -token ${:token}  -url /courses/${course_id}/todo?[:params {page per_page}]]
    return [:paginated_result_list -max_entries $max_entries $r 200]
  • course users (scripted, public)

     <instance of canvas::API[i]> course users \
        [ -search_term search_term ] [ -sort sort ] \
        [ -enrollment_type enrollment_type ] \
        [ -enrollment_role_id enrollment_role_id ] [ -include include ] \
        [ -user_ids user_ids ] [ -enrollment_state enrollment_state ] \
        [ -page page ] [ -per_page per_page ] [ -max_entries max_entries ] \
        course_id

    Returns the paginated list of users in this course. And optionally the user's enrollments in the course. Details: https://canvas.instructure.com/doc/api/courses.html

    Switches:
    -search_term (optional)
    The partial name or full ID of the users to match and return in the results list.
    -sort (optional)
    When set, sort the results of the search based on the given Allowed values: username, last_login, email, sis_id
    -enrollment_type (optional)
    When set, only return users where the user is enrolled as this type. “student_view” implies include[]=test_student. This argument is ignored if enrollment_role is given. Allowed values: teacher, student, student_view, ta, observer, designer
    -enrollment_role_id (optional)
    When set, only return courses where the user is enrolled with the specified course-level role. This can be a role created with the Add Role API or a built_in role id with type 'StudentEnrollment', 'TeacherEnrollment', 'TaEnrollment', 'ObserverEnrollment', or 'DesignerEnrollment'.
    -include (optional)
    Optionally included content. Allowed values: enrollments, locked, avatar_url, test_student, bio, custom_links, current_grading_period_scores, uuid
    -user_ids (optional)
    If included, the course users set will only include users with IDs specified by the param.
    -enrollment_state (optional)
    When set, only return users where the enrollment workflow state is of one of the given types. “active” and “invited” enrollments are returned by default. Allowed values: active, invited, rejected, completed, inactive
    -page (optional, defaults to "1")
    Return the nth page of the result set
    -per_page (optional, defaults to "10")
    Return this number of entries per page
    -max_entries (optional)
    perform potentially multiple requests until the requested number of entries can be returned.
    Parameters:
    course_id (required, integer)

    Testcases:
    No testcase defined.
    set r [:request -method GET -token ${:token}  -url /courses/${course_id}/users?[:params {page per_page
                   search_term sort enrollment_type:array enrollment_role_id
                   include:array user_ids:array enrollment_state:array
               }]]
    return [:paginated_result_list -max_entries $max_entries $r 200]
  • token (scripted, public)

     <instance of canvas::API[i]> token [ -grant_type grant_type ] \
        [ -scope scope ] [ -assertion assertion ] \
        [ -client_assertion_type client_assertion_type ] \
        [ -requested_token_use requested_token_use ]

    Get bearer token (access token) from the /oauth2/v2.0/token endpoint. https://canvas.instructure.com/doc/api/file.oauth_endpoints.html#post-login-oauth2-token

    Switches:
    -grant_type (optional, defaults to "client_credentials")
    -scope (optional)
    -assertion (optional)
    -client_assertion_type (optional, defaults to "urn:ietf:params:oauth:client-assertion-type:jwt-bearer")
    -requested_token_use (optional)

    Testcases:
    No testcase defined.
    #error "not implemented yet"
    
    #
    # Get the access-token from /token endpoint.
    #
    set r [:request -method POST  -content_type "application/x-www-form-urlencoded"  -vars {
                   {client_secret ${:client_secret}}
                   {client_id ${:client_id}}
                   scope
                   grant_type
                   assertion
                   client_assertion_type
                   requested_token_use
               }  -url ${:baseurl}/login/oauth2/token]
    
    ns_log notice "/token POST Request Answer: $r"
    #
    # Current errors:
    #   assertion method not supported for this grant_type"
    #   <h1>Page Error</h1> <p>Something broke unexpectedly.
    #
    #return $access_token