openapi: 3.0.3 info: title: Canvas LMS LTI ExternalTool Lti::IMS::NamesAndRole 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: Lti::IMS::NamesAndRole paths: /api/lti/courses/{course_id}/names_and_roles: get: summary: course_index tags: - Lti::IMS::NamesAndRole parameters: - name: course_id in: path required: true schema: type: integer example: 880160 - name: rlid in: query required: false schema: type: string example: 4301c27b219f264f9dca9566f96a4095 - name: page in: query required: false schema: type: integer example: 2 - name: pass in: query required: false schema: type: string example: thru - name: role in: query required: false schema: type: string example: http://purl.imsglobal.org/vocab/lis/v2/membership#Mentor - name: per_page in: query required: false schema: type: integer example: 2 responses: '200': description: behaves just like a 'normal' NRPS course membership lookup content: application/vnd.ims.lti-nrps.v2.membershipcontainer+json: schema: type: object properties: id: type: string context: type: object properties: id: type: string label: type: string title: type: string required: - id - label - title members: type: array items: type: object properties: status: type: string name: type: string picture: type: string given_name: type: string family_name: type: string user_id: type: string lti11_legacy_user_id: type: string roles: type: array items: type: string message: type: array items: type: object properties: https://purl.imsglobal.org/spec/lti/claim/message_type: type: string locale: type: string https://purl.imsglobal.org/spec/lti/claim/custom: type: object properties: person_name_full: type: string person_name_display: type: string person_name_family: type: string person_name_given: type: string user_image: type: string user_id: type: integer canvas_user_id: type: integer vnd_instructure_user_uuid: type: string canvas_user_globalid: type: integer canvas_user_sissourceid: type: string person_sourced_id: type: string message_locale: type: string vnd_canvas_person_email_sis: type: string person_email_primary: type: string person_address_timezone: type: string user_username: type: string canvas_user_sisintegrationid: type: string canvas_user_loginid: type: string canvas_xapi_url: type: string caliper_url: type: string unsupported_param_1: type: string unsupported_param_2: type: string https://purl.imsglobal.org/spec/lti/claim/lti11_legacy_user_id: type: string https://purl.imsglobal.org/spec/lti/claim/lti1p1: type: object properties: user_id: type: string required: - user_id required: - https://purl.imsglobal.org/spec/lti/claim/message_type - locale - https://purl.imsglobal.org/spec/lti/claim/custom - https://purl.imsglobal.org/spec/lti/claim/lti11_legacy_user_id - https://purl.imsglobal.org/spec/lti/claim/lti1p1 email: type: string lis_person_sourcedid: type: string required: - status - name - picture - given_name - family_name - user_id - lti11_legacy_user_id - roles - message required: - id - context - members example: id: http://test.host/api/lti/courses/880213/names_and_roles?rlid=f282bbe38e6d83524012bb96e0af2f9af9590547 context: id: f282bbe38e6d83524012bb96e0af2f9af9590547 label: Unnamed title: Unnamed Course members: - status: Active name: Marta Perkins picture: http://school.edu/image/url.png given_name: Marta family_name: Perkins email: marta.perkins@school.edu lis_person_sourcedid: user-1-sis-user-id-1 user_id: 27446e34-fd89-42f6-ae6c-bcb32bfa8b9e lti11_legacy_user_id: ea1a3f1f43b49387e308f437b811af5857232c1c roles: - http://purl.imsglobal.org/vocab/lis/v2/membership#Instructor message: - https://purl.imsglobal.org/spec/lti/claim/message_type: LtiResourceLinkRequest locale: de https://purl.imsglobal.org/spec/lti/claim/custom: person_name_full: Marta Perkins person_name_display: Marta Perkins person_name_family: Perkins person_name_given: Marta user_image: http://school.edu/image/url.png user_id: 196739 canvas_user_id: 196739 vnd_instructure_user_uuid: PeD59XLw7mJSXyDSYDdUZrZP2mFljDAQxYqdZnUX canvas_user_globalid: 196739 canvas_user_sissourceid: user-1-sis-user-id-1 person_sourced_id: user-1-sis-user-id-1 message_locale: de vnd_canvas_person_email_sis: sis@example.com person_email_primary: marta.perkins@school.edu person_address_timezone: Europe/Berlin user_username: sis@example.com canvas_user_sisintegrationid: user-1-sis-integration-id-1 canvas_user_loginid: sis@example.com canvas_xapi_url: http://test.host/api/lti/v1/xapi/407087-196739-880184-1702618795-03e11960d048169a-3e3b02fa846a9c5cfdf8ec15c8e4ff52d490b34c caliper_url: http://test.host/api/lti/v1/caliper/407087-196739-880184-1702618795-2d66bc36035c9368-0e14a40cb616910c2d888c1efe4085b3475b1a92 unsupported_param_1: $unsupported.param.1 unsupported_param_2: $unsupported.param.2 https://purl.imsglobal.org/spec/lti/claim/lti11_legacy_user_id: ea1a3f1f43b49387e308f437b811af5857232c1c https://purl.imsglobal.org/spec/lti/claim/lti1p1: user_id: ea1a3f1f43b49387e308f437b811af5857232c1c - status: Active name: User picture: http://localhost/images/messages/avatar-50.png given_name: User family_name: '' user_id: a06077c2-97ad-43e3-b46e-3efa38677e55 lti11_legacy_user_id: 0db0a6bb6567a1305d293e9b456793167fceccbc roles: - http://purl.imsglobal.org/vocab/lis/v2/membership#Learner message: - https://purl.imsglobal.org/spec/lti/claim/message_type: LtiResourceLinkRequest locale: en https://purl.imsglobal.org/spec/lti/claim/custom: {} https://purl.imsglobal.org/spec/lti/claim/lti11_legacy_user_id: 0db0a6bb6567a1305d293e9b456793167fceccbc https://purl.imsglobal.org/spec/lti/claim/lti1p1: user_id: 0db0a6bb6567a1305d293e9b456793167fceccbc '401': description: does not return ims mime_type content: application/json: schema: type: object properties: errors: type: object properties: type: type: string message: type: string required: - type - message required: - errors example: errors: type: unauthorized message: Access Token not linked to a Tool associated with this Context '500': description: returns 500 not found content: application/json: schema: type: object properties: {} required: - errors - error_report_id example: {} '404': description: does not return ims mime_type content: application/json: schema: type: object properties: {} required: - errors example: {} /api/lti/groups/{group_id}/names_and_roles: get: summary: group_index tags: - Lti::IMS::NamesAndRole parameters: - name: group_id in: path required: true schema: type: integer example: 716163 - name: page in: query required: false schema: type: integer example: 2 - name: pass in: query required: false schema: type: string example: thru - name: per_page in: query required: false schema: type: integer example: 2 - name: rlid in: query required: false schema: type: string example: 194bad1fb03db0e9e2e556629a4ca4f7 - name: role in: query required: false schema: type: string example: http://purl.imsglobal.org/vocab/lis/v2/membership#Manager responses: '200': description: returns all group members content: application/vnd.ims.lti-nrps.v2.membershipcontainer+json: schema: type: object properties: id: type: string context: type: object properties: id: type: string title: type: string required: - id - title members: type: array items: type: object properties: status: type: string name: type: string picture: type: string given_name: type: string family_name: type: string user_id: type: string lti11_legacy_user_id: type: string roles: type: array items: type: string message: type: array items: type: object properties: https://purl.imsglobal.org/spec/lti/claim/message_type: type: string locale: type: string https://purl.imsglobal.org/spec/lti/claim/custom: type: object properties: baz: type: string foo: type: string person_name_full: type: string person_name_display: type: string person_name_family: type: string person_name_given: type: string user_image: type: string user_id: type: integer canvas_user_id: type: integer vnd_instructure_user_uuid: type: string canvas_user_globalid: type: integer canvas_user_sissourceid: type: string person_sourced_id: type: string message_locale: type: string vnd_canvas_person_email_sis: type: string person_email_primary: type: string person_address_timezone: type: string user_username: type: string canvas_user_sisintegrationid: type: string canvas_user_loginid: type: string canvas_xapi_url: type: string caliper_url: type: string unsupported_param_1: type: string unsupported_param_2: type: string required: - person_name_full - person_name_display - person_name_family - person_name_given - user_image - user_id - canvas_user_id - vnd_instructure_user_uuid - canvas_user_globalid - canvas_user_sissourceid - person_sourced_id - message_locale - vnd_canvas_person_email_sis - person_email_primary - person_address_timezone - user_username - canvas_user_sisintegrationid - canvas_user_loginid - canvas_xapi_url - caliper_url - unsupported_param_1 - unsupported_param_2 https://purl.imsglobal.org/spec/lti/claim/lti11_legacy_user_id: type: string https://purl.imsglobal.org/spec/lti/claim/lti1p1: type: object properties: user_id: type: string required: - user_id required: - https://purl.imsglobal.org/spec/lti/claim/message_type - locale - https://purl.imsglobal.org/spec/lti/claim/custom - https://purl.imsglobal.org/spec/lti/claim/lti11_legacy_user_id - https://purl.imsglobal.org/spec/lti/claim/lti1p1 email: type: string lis_person_sourcedid: type: string required: - status - name - picture - given_name - family_name - user_id - lti11_legacy_user_id - roles - message - email - lis_person_sourcedid required: - id - context - members example: id: http://test.host/api/lti/groups/716159/names_and_roles?pass=thru&role=http%3A%2F%2Fpurl.imsglobal.org%2Fvocab%2Flis%2Fv2%2Fmembership%23Member context: id: 43849229e5c886f6aafc5bb36fe4c3b33cb3df17 title: 2xUeyCRQz6yjVTWiI2SyNtbOikAZGRX9SzfIvgrR members: - status: Active name: value for name picture: http://localhost/images/messages/avatar-50.png given_name: value for family_name: name user_id: dfd1f6b6-887d-421a-85bb-f553a6922dbc lti11_legacy_user_id: 245a4bb33da4baab24fa34772e633c9bd4b7177f roles: - http://purl.imsglobal.org/vocab/lis/v2/membership#Member - http://purl.imsglobal.org/vocab/lis/v2/membership#Manager - status: Active name: Marta Perkins picture: http://localhost/images/messages/avatar-50.png given_name: Marta family_name: Perkins user_id: 48f6ef9f-8dfb-42ca-9fd4-6bd23b6c0a07 lti11_legacy_user_id: 6d12dd551c852cb1b5039130b4faa255c8cce75d roles: - http://purl.imsglobal.org/vocab/lis/v2/membership#Member message: - https://purl.imsglobal.org/spec/lti/claim/message_type: LtiResourceLinkRequest locale: en https://purl.imsglobal.org/spec/lti/claim/custom: {} https://purl.imsglobal.org/spec/lti/claim/lti11_legacy_user_id: 6d12dd551c852cb1b5039130b4faa255c8cce75d https://purl.imsglobal.org/spec/lti/claim/lti1p1: user_id: 6d12dd551c852cb1b5039130b4faa255c8cce75d - status: Active name: User picture: http://localhost/images/messages/avatar-50.png given_name: User family_name: '' user_id: 46402316-6175-41d3-9022-d2dffd5f9042 lti11_legacy_user_id: d5bca1b80d33ba6599feb3138ec119454f9dd597 roles: - http://purl.imsglobal.org/vocab/lis/v2/membership#Member - http://purl.imsglobal.org/vocab/lis/v2/membership#Manager message: - https://purl.imsglobal.org/spec/lti/claim/message_type: LtiResourceLinkRequest locale: en https://purl.imsglobal.org/spec/lti/claim/custom: {} https://purl.imsglobal.org/spec/lti/claim/lti11_legacy_user_id: d5bca1b80d33ba6599feb3138ec119454f9dd597 https://purl.imsglobal.org/spec/lti/claim/lti1p1: user_id: d5bca1b80d33ba6599feb3138ec119454f9dd597 '401': description: returns 401 unauthorized and complains about missing assertions content: application/json: schema: type: object properties: errors: type: object properties: type: type: string message: type: string required: - type - message required: - errors example: errors: type: unauthorized message: 'Invalid access token field/s: the following assertions are missing: sub,aud,exp,iat,jti,iss' '400': description: returns a 400 bad_request and descriptive error message content: application/json: schema: type: object properties: errors: type: object properties: type: type: string message: type: string required: - type - message required: - errors example: errors: type: bad_request message: Invalid 'rlid' parameter '500': description: returns 500 not found 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 error_report_id: type: integer required: - errors - error_report_id example: errors: - message: An error occurred. error_code: internal_server_error error_report_id: 127858 '404': description: returns 404 not found content: application/json: schema: type: object properties: errors: type: array items: type: object properties: message: type: string required: - message required: - errors example: {} 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)