# 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 Logins API version: 1.0.0 extends: openapi/canvas-logins-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: 6 - target: $.paths['/v1/accounts/{account_id}/logins'].get update: x-apievangelist-phrasing: intent: List logins in an account effect: read questions: - How do I list the login records for an account in Canvas? - Which logins exist under a given account? instructions: - text: List the user logins in account {account_id}. slots: account_id: path.account_id - text: Show all pseudonyms registered in account {account_id}. slots: account_id: path.account_id method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/logins'].post update: x-apievangelist-phrasing: intent: Create a login for an existing user effect: write questions: - How do I add a second login to an existing user in an account? - Can I create a login tied to an SSO authentication provider? instructions: - text: Create login {unique_id} for user {user_id} in account {account_id}. slots: unique_id: requestBody.login[unique_id] user_id: requestBody.user[id] account_id: path.account_id - text: Add login {unique_id} for user {user_id} in account {account_id} using auth provider {authentication_provider_id}. slots: unique_id: requestBody.login[unique_id] user_id: requestBody.user[id] account_id: path.account_id authentication_provider_id: requestBody.login[authentication_provider_id] method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/logins'].get update: x-apievangelist-phrasing: intent: List a user's logins effect: read questions: - What usernames does a specific user have? - Can I see every login attached to one person? instructions: - text: List the logins for user {user_id}. slots: user_id: path.user_id - text: Show every username belonging to user {user_id}. slots: user_id: path.user_id method: generated generated: '2026-10-01' - target: $.paths['/v1/users/reset_password'].post update: x-apievangelist-phrasing: intent: Start a password recovery email effect: write questions: - How do I send a password reset email to a user? - Can I trigger password recovery from the API? instructions: - text: Kick off the password recovery flow. - text: Send a password reset nonce by email. method: generated generated: '2026-10-01' - target: $.paths['/v1/accounts/{account_id}/logins/{id}'].put update: x-apievangelist-phrasing: intent: Edit a user login effect: write questions: - Can I change a user's username or password? - How do I suspend a login or force a password reset on next sign-in? instructions: - text: Change login {id} in account {account_id} to username {unique_id}. slots: id: path.id account_id: path.account_id unique_id: requestBody.login[unique_id] - text: Set login {id} in account {account_id} to workflow state {workflow_state}. slots: id: path.id account_id: path.account_id workflow_state: requestBody.login[workflow_state] method: generated generated: '2026-10-01' - target: $.paths['/v1/users/{user_id}/logins/{id}'].delete update: x-apievangelist-phrasing: intent: Delete a user login effect: destructive questions: - How do I delete one of a user's logins? - Can I remove an old username from a user without deleting the user? instructions: - text: Delete login {id} from user {user_id}. slots: id: path.id user_id: path.user_id - text: Remove user {user_id}'s login {id}. slots: user_id: path.user_id id: path.id method: generated generated: '2026-10-01'