Instructure Security API

The Security API from Instructure — 2 operation(s) for security.

OpenAPI Specification

instructure-security-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Canvas LMS LTI ExternalTool Security API
  description: Canvas LTI 1.3 API endpoints including Dynamic Registration, IMS Names and Roles, Line Items, Data Services, and Security endpoints.
  version: 1.0.0
  contact:
    name: Instructure Support
    url: https://developerdocs.instructure.com/
    email: support@instructure.com
  license:
    name: AGPL-3.0
    url: https://github.com/instructure/canvas-lms/blob/master/LICENSE
servers:
- url: https://{canvas_domain}
  description: Canvas institution domain
  variables:
    canvas_domain:
      default: canvas.instructure.com
      description: The institution-specific Canvas domain
tags:
- name: Security
paths:
  /api/lti/security/jwks:
    get:
      summary: jwks
      tags:
      - Security
      responses:
        '200':
          description: returns whether each key is from the current month
          content:
            application/json:
              schema:
                type: array
                properties:
                  keys:
                    type: array
                    items:
                      type: object
                      properties:
                        kty:
                          type: string
                        e:
                          type: string
                        n:
                          type: string
                        kid:
                          type: string
                        alg:
                          type: string
                        use:
                          type: string
                      required:
                      - kty
                      - e
                      - n
                      - kid
                      - alg
                      - use
                required:
                - keys
                items:
                  type: string
              example:
              - today is day 15 and key 0 is not from this month
              - today is day 15 and key 1 is from this month
              - today is day 15 and key 2 is not from this month
      parameters:
      - name: rotation_check
        in: query
        required: false
        schema:
          type: integer
        example: 1
  /api/lti/security/openid-configuration:
    get:
      summary: openid_configuration
      tags:
      - Security
      parameters:
      - name: registration_token
        in: query
        required: false
        schema:
          type: string
        example: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJyb290X2FjY291bnRfZ2xvYmFsX2lkIjo4MTI0LCJleHAiOjE3MDI2MTkwMTd9.r67qwILzqa5w14gpAbwZOopmt7ZZuPoJrcVE1vgphp8
      responses:
        '200':
          description: contains the correct information
          content:
            application/json:
              schema:
                type: object
                properties:
                  issuer:
                    type: string
                  authorization_endpoint:
                    type: string
                  registration_endpoint:
                    type: string
                  jwks_uri:
                    type: string
                  token_endpoint:
                    type: string
                  token_endpoint_auth_methods_supported:
                    type: array
                    items:
                      type: string
                  token_endpoint_auth_signing_alg_values_supported:
                    type: array
                    items:
                      type: string
                  scopes_supported:
                    type: array
                    items:
                      type: string
                  response_types_supported:
                    type: array
                    items:
                      type: string
                  id_token_signing_alg_values_supported:
                    type: array
                    items:
                      type: string
                  claims_supported:
                    type: array
                    items:
                      type: string
                  subject_types_supported:
                    type: array
                    items:
                      type: string
                  authorization_server:
                    type: string
                  https://purl.imsglobal.org/spec/lti-platform-configuration:
                    type: object
                    properties:
                      product_family_code:
                        type: string
                      version:
                        type: string
                      messages_supported:
                        type: array
                        items:
                          type: object
                          properties:
                            type:
                              type: string
                            placements:
                              type: array
                              items:
                                type: string
                          required:
                          - type
                          - placements
                      variables:
                        type: array
                        items:
                          type: string
                      https://canvas.instructure.com/lti/account_name:
                        type: string
                      https://canvas.instructure.com/lti/account_lti_guid:
                        type: string
                    required:
                    - product_family_code
                    - version
                    - messages_supported
                    - variables
                    - https://canvas.instructure.com/lti/account_name
                    - https://canvas.instructure.com/lti/account_lti_guid
                required:
                - issuer
                - authorization_endpoint
                - registration_endpoint
                - jwks_uri
                - token_endpoint
                - token_endpoint_auth_methods_supported
                - token_endpoint_auth_signing_alg_values_supported
                - scopes_supported
                - response_types_supported
                - id_token_signing_alg_values_supported
                - claims_supported
                - subject_types_supported
                - authorization_server
                - https://purl.imsglobal.org/spec/lti-platform-configuration
              example:
                issuer: https://canvas.instructure.com
                authorization_endpoint: http://canvas.instructure.com/api/lti/authorize_redirect
                registration_endpoint: http://localhost/api/lti/registrations
                jwks_uri: http://canvas.instructure.com/login/oauth2/jwks
                token_endpoint: http://canvas.instructure.com/login/oauth2/token
                token_endpoint_auth_methods_supported:
                - private_key_jwt
                token_endpoint_auth_signing_alg_values_supported:
                - RS256
                scopes_supported:
                - https://purl.imsglobal.org/spec/lti-ags/scope/lineitem
                - https://purl.imsglobal.org/spec/lti-ags/scope/lineitem.readonly
                - https://purl.imsglobal.org/spec/lti-ags/scope/result.readonly
                - https://purl.imsglobal.org/spec/lti-ags/scope/score
                - https://purl.imsglobal.org/spec/lti/scope/noticehandlers
                - https://purl.imsglobal.org/spec/lti-nrps/scope/contextmembership.readonly
                - https://canvas.instructure.com/lti/public_jwk/scope/update
                - https://canvas.instructure.com/lti/account_lookup/scope/show
                - https://canvas.instructure.com/lti-ags/progress/scope/show
                response_types_supported:
                - id_token
                id_token_signing_alg_values_supported:
                - RS256
                claims_supported:
                - sub
                - picture
                - email
                - name
                - given_name
                - family_name
                - locale
                subject_types_supported:
                - public
                authorization_server: canvas.instructure.com
                https://purl.imsglobal.org/spec/lti-platform-configuration:
                  product_family_code: canvas
                  version: vCloud
                  messages_supported:
                  - type: LtiResourceLinkRequest
                    placements:
                    - account_navigation
                    - assignment_edit
                    - assignment_group_menu
                    - assignment_index_menu
                    - assignment_menu
                    - assignment_selection
                    - assignment_view
                    - collaboration
                    - conference_selection
                    - course_assignments_menu
                    - course_home_sub_navigation
                    - course_navigation
                    - course_settings_sub_navigation
                    - discussion_topic_index_menu
                    - discussion_topic_menu
                    - file_index_menu
                    - file_menu
                    - global_navigation
                    - homework_submission
                    - link_selection
                    - migration_selection
                    - module_group_menu
                    - module_index_menu
                    - module_index_menu_modal
                    - module_menu_modal
                    - module_menu
                    - post_grades
                    - quiz_index_menu
                    - quiz_menu
                    - similarity_detection
                    - student_context_card
                    - submission_type_selection
                    - tool_configuration
                    - user_navigation
                    - wiki_index_menu
                    - wiki_page_menu
                  - type: LtiDeepLinkingRequest
                    placements:
                    - assignment_selection
                    - collaboration
                    - conference_selection
                    - course_assignments_menu
                    - editor_button
                    - homework_submission
                    - link_selection
                    - migration_selection
                    - module_index_menu_modal
                    - module_menu_modal
                    - submission_type_selection
                  variables:
                  - ResourceLink.id
                  - ResourceLink.description
                  - ResourceLink.title
                  - ResourceLink.available.startDateTime
                  - ResourceLink.available.endDateTime
                  - ResourceLink.submission.endDateTime
                  - com.instructure.User.observees
                  - com.instructure.User.sectionNames
                  - com.instructure.RCS.app_host
                  - com.instructure.RCS.service_jwt
                  - com.instructure.instui_nav
                  - com.instructure.Observee.sisIds
                  - Context.title
                  - com.instructure.Editor.contents
                  - com.instructure.Editor.selection
                  - com.instructure.PostMessageToken
                  - com.instructure.Assignment.lti.id
                  - com.instructure.Assignment.description
                  - com.instructure.Assignment.allowedFileExtensions
                  - com.instructure.OriginalityReport.id
                  - com.instructure.Submission.id
                  - com.instructure.File.id
                  - CourseOffering.sourcedId
                  - Context.id
                  - com.instructure.Context.globalId
                  - Context.sourcedId
                  - Context.id.history
                  - Message.documentTarget
                  - Message.locale
                  - ToolConsumerInstance.guid
                  - Canvas.api.domain
                  - Canvas.api.collaborationMembers.url
                  - Canvas.api.baseUrl
                  - ToolProxyBinding.memberships.url
                  - Canvas.account.id
                  - Canvas.account.name
                  - Canvas.account.sisSourceId
                  - Canvas.rootAccount.id
                  - Canvas.rootAccount.sisSourceId
                  - Canvas.externalTool.global_id
                  - Canvas.externalTool.url
                  - com.instructure.brandConfigJSON.url
                  - com.instructure.brandConfigJSON
                  - com.instructure.brandConfigJS.url
                  - Canvas.css.common
                  - Canvas.shard.id
                  - Canvas.root_account.global_id
                  - Canvas.root_account.id
                  - vnd.Canvas.root_account.uuid
                  - Canvas.root_account.sisSourceId
                  - Canvas.course.id
                  - vnd.instructure.Course.uuid
                  - Canvas.course.name
                  - Canvas.course.sisSourceId
                  - com.instructure.Course.integrationId
                  - Canvas.course.startAt
                  - Canvas.course.endAt
                  - Canvas.course.workflowState
                  - Canvas.course.hideDistributionGraphs
                  - Canvas.course.gradePassbackSetting
                  - Canvas.term.startAt
                  - Canvas.term.endAt
                  - Canvas.term.name
                  - CourseSection.sourcedId
                  - Canvas.enrollment.enrollmentState
                  - com.instructure.Assignment.anonymous_grading
                  - com.instructure.Assignment.restrict_quantitative_data
                  - com.instructure.Course.gradingScheme
                  - com.Instructure.membership.roles
                  - Canvas.membership.roles
                  - Canvas.membership.concludedRoles
                  - Canvas.membership.permissions<>
                  - Canvas.course.previousContextIds
                  - Canvas.course.previousContextIds.recursive
                  - Canvas.course.previousCourseIds
                  - Person.name.full
                  - Person.name.display
                  - Person.name.family
                  - Person.name.given
                  - com.instructure.Person.name_sortable
                  - Person.email.primary
                  - com.instructure.Person.pronouns
                  - vnd.Canvas.Person.email.sis
                  - Person.address.timezone
                  - User.image
                  - User.id
                  - Canvas.user.id
                  - vnd.instructure.User.uuid
                  - vnd.instructure.User.current_uuid
                  - Canvas.user.prefersHighContrast
                  - com.instructure.Course.groupIds
                  - Canvas.group.contextIds
                  - Membership.role
                  - Canvas.xuser.allRoles
                  - com.instructure.User.allRoles
                  - Canvas.user.globalId
                  - Canvas.user.isRootAccountAdmin
                  - Canvas.user.adminableAccounts
                  - User.username
                  - Canvas.user.loginId
                  - Canvas.user.sisSourceId
                  - Canvas.user.sisIntegrationId
                  - Person.sourcedId
                  - Canvas.logoutService.url
                  - Canvas.masqueradingUser.id
                  - Canvas.masqueradingUser.userId
                  - Canvas.xapi.url
                  - Caliper.url
                  - Canvas.course.sectionIds
                  - Canvas.course.sectionRestricted
                  - Canvas.course.sectionSisSourceIds
                  - com.instructure.contextLabel
                  - Canvas.module.id
                  - Canvas.moduleItem.id
                  - Canvas.assignment.id
                  - Canvas.assignment.description
                  - com.instructure.Group.id
                  - com.instructure.Group.name
                  - Canvas.assignment.title
                  - Canvas.assignment.pointsPossible
                  - Canvas.assignment.unlockAt
                  - Canvas.assignment.lockAt
                  - Canvas.assignment.dueAt
                  - Canvas.assignment.unlockAt.iso8601
                  - Canvas.assignment.lockAt.iso8601
                  - Canvas.assignment.dueAt.iso8601
                  - Canvas.assignment.earliestEnrollmentDueAt.iso8601
                  - Canvas.assignment.allDueAts.iso8601
                  - Canvas.assignment.published
                  - Canvas.assignment.lockdownEnabled
                  - Canvas.assignment.allowedAttempts
                  - Canvas.assignment.submission.studentAttempts
                  - LtiLink.custom.url
                  - ToolProxyBinding.custom.url
                  - ToolProxy.custom.url
                  - ToolConsumerProfile.url
                  - vnd.Canvas.OriginalityReport.url
                  - vnd.Canvas.submission.url
                  - vnd.Canvas.submission.history.url
                  - Canvas.file.media.id
                  - Canvas.file.media.type
                  - Canvas.file.media.duration
                  - Canvas.file.media.size
                  - Canvas.file.media.title
                  - Canvas.file.usageRights.name
                  - Canvas.file.usageRights.url
                  - Canvas.file.usageRights.copyrightText
                  - com.instructure.Course.accept_canvas_resource_types
                  - com.instructure.Course.canvas_resource_type
                  - com.instructure.Course.allow_canvas_resource_selection
                  - com.instructure.Course.available_canvas_resources
                  - com.instructure.Account.usage_metrics_enabled
                  - Canvas.environment.test
                  https://canvas.instructure.com/lti/account_name: Default Account
                  https://canvas.instructure.com/lti/account_lti_guid: JXBxpVe9M3CG080A1FZNYCpsejKZaZjCS1nMKNx4:canvas-lms
        '401':
          description: rejects timed-out tokens
          content:
            application/json:
              schema:
                type: object
                properties:
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        message:
                          type: string
                        error_code:
                          type: string
                      required:
                      - message
                      - error_code
                required:
                - errors
              example:
                errors:
                - message: An error occurred.
                  error_code: unauthorized
components:
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 authentication
      flows:
        authorizationCode:
          authorizationUrl: https://{canvas_domain}/login/oauth2/auth
          tokenUrl: https://{canvas_domain}/login/oauth2/token
          scopes: {}
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token (access token)