Canvas · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Canvas LMS REST Lti Registrations API

37 actions 37 updates phrasing extends openapi/canvas-lti-registrations-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Canvas's API. It is a proposal applied on top of the contract, not a document Canvas publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 37 · first 16 shown; the file carries all of them

$.info
$.paths['/v1/accounts/{account_id}/lti_registrations'].get
$.paths['/v1/accounts/{account_id}/lti_registrations'].post
$.paths['/v1/accounts/{account_id}/apps'].get
$.paths['/v1/accounts/{account_id}/apps'].post
$.paths['/v1/accounts/{account_id}/lti_registrations/{id}'].get
$.paths['/v1/accounts/{account_id}/lti_registrations/{id}'].put
$.paths['/v1/accounts/{account_id}/lti_registrations/{id}'].delete
$.paths['/v1/accounts/{account_id}/apps/{id}'].get
$.paths['/v1/accounts/{account_id}/apps/{id}'].put
$.paths['/v1/accounts/{account_id}/apps/{id}'].delete
$.paths['/v1/accounts/{account_id}/lti_registration_by_client_id/{client_id}'].get
$.paths['/v1/accounts/{account_id}/app_by_client_id/{client_id}'].get
$.paths['/v1/accounts/{account_id}/lti_registrations/by_utid/{utid}'].get
$.paths['/v1/accounts/{account_id}/apps/by_utid/{utid}'].get
$.paths['/v1/accounts/{account_id}/lti_registrations/install_status/{client_id}'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Canvas LMS REST Lti Registrations API
  version: 1.0.0
extends: openapi/canvas-lti-registrations-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-10-01'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 36
- target: $.paths['/v1/accounts/{account_id}/lti_registrations'].get
  update:
    x-apievangelist-phrasing:
      intent: List LTI registrations in an account
      effect: read
      questions:
      - Which LTI registrations are available in my Canvas account, including ones inherited from Site Admin?
      - Can I sort the list of LTI registrations in an account by name or date?
      instructions:
      - text: List the LTI registrations in account {account_id} using the lti_registrations endpoint.
        slots:
          account_id: path.account_id
      - text: Show LTI registrations for account {account_id} sorted by {sort}.
        slots:
          account_id: path.account_id
          sort: query.sort
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations'].post
  update:
    x-apievangelist-phrasing:
      intent: Create an LTI registration
      effect: write
      questions:
      - How do I manually register a new LTI 1.3 tool with its configuration and developer key?
      - Can I create an LTI registration with an admin nickname and vendor name?
      instructions:
      - text: Create an LTI registration named {name} in account {account_id} via the lti_registrations endpoint.
        slots:
          name: requestBody.name
          account_id: path.account_id
      - text: Register LTI tool {name} from vendor {vendor} in account {account_id} with configuration {configuration}.
        slots:
          name: requestBody.name
          vendor: requestBody.vendor
          account_id: path.account_id
          configuration: requestBody.configuration
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps'].get
  update:
    x-apievangelist-phrasing:
      intent: List LTI apps in an account via the apps alias
      effect: read
      questions:
      - What LTI apps are installed in an account when I call the apps endpoint instead of lti_registrations?
      - Does the apps listing return registrations enabled at the parent root account too?
      instructions:
      - text: List the apps in account {account_id} using the apps alias endpoint.
        slots:
          account_id: path.account_id
      - text: Page through apps in account {account_id}, page {page}, {per_page} per page.
        slots:
          account_id: path.account_id
          page: query.page
          per_page: query.per_page
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps'].post
  update:
    x-apievangelist-phrasing:
      intent: Create an LTI app via the apps alias
      effect: write
      questions:
      - Can I add a new LTI app to an account through the apps endpoint?
      - What do I send to the apps endpoint to create a tool with a developer key and account binding?
      instructions:
      - text: Create a new app named {name} in account {account_id} using the apps alias endpoint.
        slots:
          name: requestBody.name
          account_id: path.account_id
      - text: Add app {name} to account {account_id} through the apps endpoint with overlay {overlay}.
        slots:
          name: requestBody.name
          account_id: path.account_id
          overlay: requestBody.overlay
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Show an LTI registration
      effect: read
      questions:
      - How do I see the configuration and account binding of one LTI registration?
      - Can I fetch a single LTI registration by its id with extra details included?
      instructions:
      - text: Show LTI registration {id} in account {account_id} from the lti_registrations endpoint.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Get LTI registration {id} in account {account_id} including {include}.
        slots:
          id: path.id
          account_id: path.account_id
          include: query.include
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}'].put
  update:
    x-apievangelist-phrasing:
      intent: Update an LTI registration
      effect: write
      questions:
      - Can I rename an LTI registration or change its admin nickname?
      - Why would updating an LTI registration's tool configuration return a 422 error?
      instructions:
      - text: Rename LTI registration {id} in account {account_id} to {name} via the lti_registrations endpoint.
        slots:
          id: path.id
          account_id: path.account_id
          name: requestBody.name
      - text: Set the workflow state of LTI registration {id} in account {account_id} to {workflow_state} with comment {comment}.
        slots:
          id: path.id
          account_id: path.account_id
          workflow_state: requestBody.workflow_state
          comment: requestBody.comment
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an LTI registration
      effect: destructive
      questions:
      - How do I remove an LTI registration I created from my account?
      - What happens when I delete an LTI registration through the lti_registrations endpoint?
      instructions:
      - text: Delete LTI registration {id} from account {account_id} using the lti_registrations endpoint.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Remove the LTI registration {id} owned by account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Show an LTI app via the apps alias
      effect: read
      questions:
      - Can I look up a single app's configuration through the apps endpoint?
      - Which account binding does a specific app have when fetched from the apps path?
      instructions:
      - text: Show app {id} in account {account_id} using the apps alias endpoint.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Fetch app {id} from account {account_id} via apps, including {include}.
        slots:
          id: path.id
          account_id: path.account_id
          include: query.include
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}'].put
  update:
    x-apievangelist-phrasing:
      intent: Update an LTI app via the apps alias
      effect: write
      questions:
      - Can I change an app's name or description through the apps endpoint?
      - Is locking deployments on an app possible when editing it via the apps path?
      instructions:
      - text: Update app {id} in account {account_id} via the apps endpoint to have description {description}.
        slots:
          id: path.id
          account_id: path.account_id
          description: requestBody.description
      - text: Set lock_deploying to {lock_deploying} on app {id} in account {account_id} through the apps alias.
        slots:
          lock_deploying: requestBody.lock_deploying
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete an LTI app via the apps alias
      effect: destructive
      questions:
      - How do I delete an app from an account using the apps endpoint?
      - Does deleting an app through the apps path remove the whole registration?
      instructions:
      - text: Delete app {id} from account {account_id} via the apps alias endpoint.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Remove app {id} in account {account_id} using the apps path.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registration_by_client_id/{client_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Look up an LTI registration by client ID
      effect: read
      questions:
      - How do I find an LTI registration when I only know the developer key's client_id?
      - Can I fetch an LTI registration's configuration from its client ID on the lti_registration_by_client_id path?
      instructions:
      - text: Look up the LTI registration with client ID {client_id} in account {account_id} via lti_registration_by_client_id.
        slots:
          client_id: path.client_id
          account_id: path.account_id
      - text: Find which LTI registration in account {account_id} uses client_id {client_id}.
        slots:
          client_id: path.client_id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/app_by_client_id/{client_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Look up an LTI app by client ID via apps alias
      effect: read
      questions:
      - Can I look up an app by its client_id using the app_by_client_id endpoint?
      - Which app matches a given developer key client ID when using the apps alias?
      instructions:
      - text: Get the app with client ID {client_id} in account {account_id} from the app_by_client_id endpoint.
        slots:
          client_id: path.client_id
          account_id: path.account_id
      - text: Use app_by_client_id to show the app for client {client_id} in account {account_id}.
        slots:
          client_id: path.client_id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/by_utid/{utid}'].get
  update:
    x-apievangelist-phrasing:
      intent: Find an LTI registration by unified tool ID
      effect: read
      questions:
      - How do I look up an LTI registration by its unified tool ID?
      - Does a unified tool ID lookup search both manual configurations and IMS registrations?
      instructions:
      - text: Find the LTI registration with unified tool ID {utid} in account {account_id} via lti_registrations/by_utid.
        slots:
          utid: path.utid
          account_id: path.account_id
      - text: Look up active LTI registration by UTID {utid} accessible from account {account_id}.
        slots:
          utid: path.utid
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/by_utid/{utid}'].get
  update:
    x-apievangelist-phrasing:
      intent: Find an LTI app by unified tool ID via apps alias
      effect: read
      questions:
      - Can I find an app by unified tool ID using the apps/by_utid path?
      - Will the apps by_utid lookup only return apps active in my account?
      instructions:
      - text: Get the app with unified tool ID {utid} in account {account_id} from apps/by_utid.
        slots:
          utid: path.utid
          account_id: path.account_id
      - text: Use the apps alias to find the app whose UTID is {utid} for account {account_id}.
        slots:
          utid: path.utid
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/install_status/{client_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Check if a Site Admin LTI tool is installed locally
      effect: read
      questions:
      - How can I tell whether a Site Admin LTI registration already has a local copy in my account?
      - Is there a way to check the install status of an LTI registration by client ID?
      instructions:
      - text: Check the install status of LTI client {client_id} in account {account_id} via lti_registrations/install_status.
        slots:
          client_id: path.client_id
          account_id: path.account_id
      - text: Tell me whether the Site Admin LTI registration {client_id} is installed in account {account_id}.
        slots:
          client_id: path.client_id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/install_status/{client_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Check app install status via apps alias
      effect: read
      questions:
      - Can I check whether a Site Admin app is installed in my account using the apps install_status path?
      - Does the apps install_status endpoint return the local copy of an app?
      instructions:
      - text: Check app install status for client {client_id} in account {account_id} via apps/install_status.
        slots:
          client_id: path.client_id
          account_id: path.account_id
      - text: Using the apps alias, see if client {client_id} has a local install in account {account_id}.
        slots:
          client_id: path.client_id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}/reset'].put
  update:
    x-apievangelist-phrasing:
      intent: Reset an LTI registration to default settings
      effect: destructive
      questions:
      - How do I undo all account-level customizations on an LTI registration?
      - Does resetting an LTI registration clear its overlay for this account?
      instructions:
      - text: Reset LTI registration {id} in account {account_id} to defaults via the lti_registrations endpoint.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Clear every overlay customization on LTI registration {id} for account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}/reset'].put
  update:
    x-apievangelist-phrasing:
      intent: Reset an LTI app to defaults via apps alias
      effect: destructive
      questions:
      - Can I reset an app to its default settings through the apps reset path?
      - Will resetting an app via the apps alias remove my account's overlay changes?
      instructions:
      - text: Reset app {id} in account {account_id} to defaults using the apps alias endpoint.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Via apps/reset, wipe customizations from app {id} in account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}/bind'].post
  update:
    x-apievangelist-phrasing:
      intent: Enable or disable an LTI registration for a root account
      effect: write
      questions:
      - How do I turn on an inherited Site Admin LTI registration for my root account?
      - Can I switch an LTI registration off for a root account without deleting it?
      instructions:
      - text: Bind LTI registration {id} to root account {account_id} with state {workflow_state} via lti_registrations.
        slots:
          id: path.id
          account_id: path.account_id
          workflow_state: requestBody.workflow_state
      - text: Turn LTI registration {id} {workflow_state} for root account {account_id}.
        slots:
          id: path.id
          workflow_state: requestBody.workflow_state
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}/bind'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove an inherited LTI registration from an account
      effect: destructive
      questions:
      - How do I remove a Site Admin LTI registration that my account inherited?
      - Which feature flag must be on to delete the binding for an inherited LTI registration?
      instructions:
      - text: Remove the inherited LTI registration {id} binding from account {account_id} via lti_registrations.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Delete the account binding for inherited LTI registration {id} in account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}/bind'].post
  update:
    x-apievangelist-phrasing:
      intent: Enable or disable an LTI app for a root account (apps)
      effect: write
      questions:
      - Can I enable an app for my root account through the apps bind endpoint?
      - Is binding an app via the apps path only allowed for root accounts?
      instructions:
      - text: Via apps/bind, set app {id} to {workflow_state} for root account {account_id}.
        slots:
          id: path.id
          workflow_state: requestBody.workflow_state
          account_id: path.account_id
      - text: Using the apps alias, bind app {id} to root account {account_id} as {workflow_state}.
        slots:
          id: path.id
          account_id: path.account_id
          workflow_state: requestBody.workflow_state
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}/bind'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove an inherited LTI app via apps alias
      effect: destructive
      questions:
      - Can I remove an inherited Site Admin app from my account with the apps bind path?
      - Does deleting the apps binding only work for inherited apps?
      instructions:
      - text: Remove inherited app {id} from account {account_id} via the apps/bind endpoint.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Using the apps alias, drop the inherited binding for app {id} in account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}/install_from_template'].post
  update:
    x-apievangelist-phrasing:
      intent: Install an LTI registration from a Site Admin template
      effect: write
      questions:
      - How do I install a local copy of a Site Admin template LTI registration that I can customize?
      - Will customizing a registration installed from a template change the original template?
      instructions:
      - text: Install template LTI registration {id} into account {account_id} via lti_registrations.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Make a local copy of Site Admin LTI template {id} in root account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}/install_from_template'].post
  update:
    x-apievangelist-phrasing:
      intent: Install an LTI app from a template via apps alias
      effect: write
      questions:
      - Can I install an app from a Site Admin template using the apps install_from_template path?
      - Is installing an app from a template through apps restricted to root accounts?
      instructions:
      - text: Install app template {id} into account {account_id} via the apps alias endpoint.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Using apps/install_from_template, copy template app {id} into account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{registration_id}/deployments/{deployment_id}/context_search'].get
  update:
    x-apievangelist-phrasing:
      intent: Search accounts and courses for an LTI deployment
      effect: read
      questions:
      - How do I find courses or sub-accounts by name or SIS id when scoping an LTI deployment?
      - Can I limit an LTI deployment context search to children of one account?
      instructions:
      - text: Search for {search_term} among accounts and courses for deployment {deployment_id} of LTI registration {registration_id} in account {account_id}.
        slots:
          search_term: query.search_term
          deployment_id: path.deployment_id
          registration_id: path.registration_id
          account_id: path.account_id
      - text: Find courses matching {search_term} under account {only_children_of} for LTI deployment {deployment_id}, registration {registration_id}, account {account_id}.
        slots:
          search_term: query.search_term
          only_children_of: query.only_children_of
          deployment_id: path.deployment_id
          registration_id: path.registration_id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{registration_id}/deployments/{deployment_id}/context_search'].get
  update:
    x-apievangelist-phrasing:
      intent: Search accounts and courses for an app deployment
      effect: read
      questions:
      - Can I search accounts and courses for an app deployment using the apps context_search path?
      - Does the apps context search match on course code as well as name?
      instructions:
      - text: Via the apps alias, search {search_term} for deployment {deployment_id} of app {registration_id} in account {account_id}.
        slots:
          search_term: query.search_term
          deployment_id: path.deployment_id
          registration_id: path.registration_id
          account_id: path.account_id
      - text: Using apps context_search, list contexts for app {registration_id} deployment {deployment_id} in account {account_id}.
        slots:
          registration_id: path.registration_id
          deployment_id: path.deployment_id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}/overlay_history'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the overlay history of an LTI registration
      effect: read
      questions:
      - How do I see past overlay customizations made to an LTI registration?
      - Can I limit how many overlay history items I get back for an LTI registration?
      instructions:
      - text: Show the overlay history for LTI registration {id} in account {account_id} via lti_registrations.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Get the last {limit} overlay changes to LTI registration {id} in account {account_id}.
        slots:
          limit: query.limit
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}/overlay_history'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an LTI app's overlay history via apps alias
      effect: read
      questions:
      - Can I read an app's overlay history from the apps overlay_history path?
      - How many overlay history entries does the apps endpoint return for one app?
      instructions:
      - text: Via the apps alias, show overlay history for app {id} in account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Using apps/overlay_history, return {limit} entries for app {id} in account {account_id}.
        slots:
          limit: query.limit
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}/history'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the full change history of an LTI registration
      effect: read
      questions:
      - How do I audit every change made to an LTI registration, including developer key changes?
      - Is there a full change log for an LTI registration's fields and internal configuration?
      instructions:
      - text: Show the complete change history of LTI registration {id} in account {account_id} via lti_registrations.
        slots:
          id: path.id
          account_id: path.account_id
      - text: List all history entries for LTI registration {id} in account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}/history'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an LTI app's full change history via apps alias
      effect: read
      questions:
      - Can I get an app's complete change history through the apps history path?
      - Does the apps history endpoint include developer key changes for the app?
      instructions:
      - text: Via the apps alias, list every change made to app {id} in account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Using apps/history, show the audit trail of app {id} for account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}/update_requests/{update_request_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an LTI registration update request
      effect: read
      questions:
      - How do I view the details of a specific pending update request for an LTI registration?
      - Can I fetch one LTI registration update request by its id?
      instructions:
      - text: Show update request {update_request_id} for LTI registration {id} in account {account_id} via lti_registrations.
        slots:
          update_request_id: path.update_request_id
          id: path.id
          account_id: path.account_id
      - text: Get LTI update request {update_request_id} on registration {id}, account {account_id}, including {include}.
        slots:
          update_request_id: path.update_request_id
          id: path.id
          account_id: path.account_id
          include: query.include
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}/update_requests/{update_request_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an LTI app update request via apps alias
      effect: read
      questions:
      - Can I read a specific app update request through the apps update_requests path?
      - What does one app update request contain when fetched via the apps alias?
      instructions:
      - text: Via the apps alias, show update request {update_request_id} for app {id} in account {account_id}.
        slots:
          update_request_id: path.update_request_id
          id: path.id
          account_id: path.account_id
      - text: Using apps/update_requests, fetch request {update_request_id} for app {id} in account {account_id}.
        slots:
          update_request_id: path.update_request_id
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}/latest_update_request'].get
  update:
    x-apievangelist-phrasing:
      intent: Get the latest update request for an LTI registration
      effect: read
      questions:
      - How do I see the most recent update request for an LTI registration regardless of status?
      - What does Canvas return when an LTI registration has no update requests at all?
      instructions:
      - text: Show the latest update request for LTI registration {id} in account {account_id} via lti_registrations.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Get the newest pending or past update request on LTI registration {id} in account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}/latest_update_request'].get
  update:
    x-apievangelist-phrasing:
      intent: Get an LTI app's latest update request via apps
      effect: read
      questions:
      - Can I get the most recent update request for an app from the apps latest_update_request path?
      - Does the apps latest update request call 404 when nothing has been requested?
      instructions:
      - text: For app {id} in account {account_id}, return only its most recent update request through the apps alias.
        slots:
          id: path.id
          account_id: path.account_id
      - text: Using apps/latest_update_request, get the newest request for app {id} in account {account_id}.
        slots:
          id: path.id
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/lti_registrations/{id}/update_requests/{update_request_id}/apply'].put
  update:
    x-apievangelist-phrasing:
      intent: Accept or reject an LTI registration update request
      effect: write
      questions:
      - How do I accept a tool's update request so it replaces the LTI registration's configuration?
      - Can I reject an LTI registration update request without applying any changes?
      instructions:
      - text: Apply update request {update_request_id} to LTI registration {id} in account {account_id} with accepted {accepted} via lti_registrations.
        slots:
          update_request_id: path.update_request_id
          id: path.id
          account_id: path.account_id
          accepted: requestBody.accepted
      - text: Reject LTI update request {update_request_id} on registration {id} in account {account_id}, accepted {accepted}, noting {comment}.
        slots:
          update_request_id: path.update_request_id
          id: path.id
          account_id: path.account_id
          accepted: requestBody.accepted
          comment: requestBody.comment
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/apps/{id}/update_requests/{update_request_id}/apply'].put
  update:
    x-apievangelist-phrasing:
      intent: Accept or reject an LTI app update request (apps)
      effect: write
      questions:
      - Can I accept an app update request through the apps update_requests apply path?
      - When applying an app update request via apps, can I pass my own overlay?
      instructions:
      - text: Via the apps alias, apply request {update_request_id} to app {id} in account {account_id} with accepted {accepted}.
        slots:
          update_request_id: path.update_request_id
          id: path.id
          account_id: path.account_id
          accepted: requestBody.accepted
      - text: Using apps apply, accept {accepted} request {update_request_id} for app {id} in account {account_id} with overlay {overlay}.
        slots:
          accepted: requestBody.accepted
          update_request_id: path.update_request_id
          id: path.id
          account_id: path.account_id
          overlay: requestBody.overlay
      method: generated
      generated: '2026-10-01'