openapi: 3.0.3 info: title: Canvas LMS LTI ExternalTool 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: ExternalTool paths: /api/lti/courses/{course_id}/jwt_token: get: summary: jwt_token tags: - ExternalTool parameters: - name: course_id in: path required: true schema: type: integer example: 880104 - name: tool_id in: query required: false schema: type: integer example: 407124 - name: tool_launch_url in: query required: false schema: type: string example: http://www.example.com/basic_lti responses: '404': description: sets status code to 404 if the requested tool id does not exist content: application/json: schema: type: object properties: errors: type: array items: type: object properties: message: type: string required: - message required: - errors example: errors: - message: The specified resource does not exist. '200': description: returns the correct JWT token when given using the tool_id param content: application/json: schema: type: object properties: jwt_token: type: string required: - jwt_token example: jwt_token: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJjb250ZXh0X2lkIjoiZjUwZGE2OTA1YWI3MzBkMzUyMzZlYTgxMDBiY2I2NzQzNGNmMzM3MCIsImNvbnRleHRfbGFiZWwiOiJVbm5hbWVkIiwiY29udGV4dF90aXRsZSI6IkNvdXJzZSBOYW1lIiwiY3VzdG9tX2NhbnZhc19hcGlfZG9tYWluIjoibG9jYWxob3N0IiwiY3VzdG9tX2NhbnZhc19jb3Vyc2VfaWQiOiI4ODAxMDQiLCJjdXN0b21fY2FudmFzX2Vucm9sbG1lbnRfc3RhdGUiOiJhY3RpdmUiLCJjdXN0b21fY2FudmFzX3VzZXJfaWQiOiIxOTY0OTAiLCJjdXN0b21fY2FudmFzX3VzZXJfbG9naW5faWQiOiIkQ2FudmFzLnVzZXIubG9naW5JZCIsImN1c3RvbV9jYW52YXNfd29ya2Zsb3dfc3RhdGUiOiJhdmFpbGFibGUiLCJleHRfcm9sZXMiOiJ1cm46bHRpOmluc3Ryb2xlOmltcy9saXMvSW5zdHJ1Y3Rvcix1cm46bHRpOnJvbGU6aW1zL2xpcy9JbnN0cnVjdG9yLHVybjpsdGk6c3lzcm9sZTppbXMvbGlzL1VzZXIiLCJsYXVuY2hfcHJlc2VudGF0aW9uX2RvY3VtZW50X3RhcmdldCI6ImlmcmFtZSIsImxhdW5jaF9wcmVzZW50YXRpb25fbG9jYWxlIjoiZW4iLCJsYXVuY2hfcHJlc2VudGF0aW9uX3JldHVybl91cmwiOiJodHRwOi8vdGVzdC5ob3N0L2NvdXJzZXMvODgwMTA0IiwibGlzX3BlcnNvbl9jb250YWN0X2VtYWlsX3ByaW1hcnkiOm51bGwsImxpc19wZXJzb25fbmFtZV9mYW1pbHkiOm51bGwsImxpc19wZXJzb25fbmFtZV9mdWxsIjoiVXNlciIsImxpc19wZXJzb25fbmFtZV9naXZlbiI6IlVzZXIiLCJsdGlfbWVzc2FnZV90eXBlIjoiYmFzaWMtbHRpLWxhdW5jaC1yZXF1ZXN0IiwibHRpX3ZlcnNpb24iOiJMVEktMXAwIiwicmVzb3VyY2VfbGlua19pZCI6ImY1MGRhNjkwNWFiNzMwZDM1MjM2ZWE4MTAwYmNiNjc0MzRjZjMzNzAiLCJyZXNvdXJjZV9saW5rX3RpdGxlIjoiYm9iIiwicm9sZXMiOiJJbnN0cnVjdG9yIiwidG9vbF9jb25zdW1lcl9pbmZvX3Byb2R1Y3RfZmFtaWx5X2NvZGUiOiJjYW52YXMiLCJ0b29sX2NvbnN1bWVyX2luZm9fdmVyc2lvbiI6ImNsb3VkIiwidG9vbF9jb25zdW1lcl9pbnN0YW5jZV9jb250YWN0X2VtYWlsIjoibm90aWZpY2F0aW9uc0B1bmtub3duZG9tYWluLmV4YW1wbGUuY29tIiwidG9vbF9jb25zdW1lcl9pbnN0YW5jZV9ndWlkIjoicHVmOFVrdjlWOU5yOXVMR2trdUk5VEFNNFB1Z2dzMTNZdE5la0FFQjpjYW52YXMtbG1zIiwidG9vbF9jb25zdW1lcl9pbnN0YW5jZV9uYW1lIjoiRGVmYXVsdCBBY2NvdW50IiwidXNlcl9pZCI6ImFiOTEyNzZjZTEyOWI0YjAyMTEyZmQwNzQ4YjA1M2MxZTRiZDZlYmQiLCJ1c2VyX2ltYWdlIjoiaHR0cDovL2xvY2FsaG9zdC9pbWFnZXMvbWVzc2FnZXMvYXZhdGFyLTUwLnBuZyIsImNvbnN1bWVyX2tleSI6ImJvYiIsImlhdCI6MTcwMjYxODU2N30.DuT4WnFME5owv8totVjlU307cYsW6zohT81lZt38GS0 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)