Canvas · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Canvas LMS REST Ai Conversations API

10 actions 10 updates phrasing extends openapi/canvas-ai-conversations-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 10

$.info
$.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}'].get
$.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}'].delete
$.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations'].get
$.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations'].post
$.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages'].post
$.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/evaluation'].get
$.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/evaluation'].post
$.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages/{message_id}/feedback'].post
$.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages/{message_id}/feedback/{feedback_id}'].delete

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 Ai Conversations API
  version: 1.0.0
extends: openapi/canvas-ai-conversations-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: 9
- target: $.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}'].get
  update:
    x-apievangelist-phrasing:
      intent: View a student's AI conversation
      effect: read
      questions:
      - As a teacher, can I read a specific student's conversation with an AI experience?
      - How do I open one AI conversation by its id?
      instructions:
      - text: Show AI conversation {id} in experience {ai_experience_id} of course {course_id}.
        slots:
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      - text: Open conversation {id} for AI experience {ai_experience_id} in course {course_id}.
        slots:
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: End an AI conversation session
      effect: destructive
      questions:
      - How do I end the current AI conversation session?
      - Can I close out a conversation with an AI experience?
      instructions:
      - text: End AI conversation {id} in experience {ai_experience_id}, course {course_id}.
        slots:
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      - text: Delete conversation {id} from AI experience {ai_experience_id} in course {course_id}.
        slots:
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations'].get
  update:
    x-apievangelist-phrasing:
      intent: Get my active AI conversation
      effect: read
      questions:
      - Do I already have an ongoing conversation with this AI experience?
      - Which AI conversation is currently active for me?
      instructions:
      - text: Get my active conversation for AI experience {ai_experience_id} in course {course_id}.
        slots:
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      - text: Resume my current chat with AI experience {ai_experience_id} in course {course_id}.
        slots:
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations'].post
  update:
    x-apievangelist-phrasing:
      intent: Start a new AI conversation
      effect: write
      questions:
      - How do I start a fresh conversation with a course's AI experience?
      - Can I initialize a new chat session with an AI experience?
      instructions:
      - text: Start a new conversation with AI experience {ai_experience_id} in course {course_id}.
        slots:
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      - text: Open a fresh AI chat for experience {ai_experience_id} in course {course_id}.
        slots:
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages'].post
  update:
    x-apievangelist-phrasing:
      intent: Send a message to an AI conversation
      effect: write
      questions:
      - How do I send a message and get the AI's reply in a conversation?
      - Can I continue an existing AI conversation with a new prompt?
      instructions:
      - text: Send {message} to conversation {id} in AI experience {ai_experience_id}, course {course_id}.
        slots:
          message: requestBody.message
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      - text: Ask the AI {message} in conversation {id} (experience {ai_experience_id}, course {course_id}).
        slots:
          message: requestBody.message
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/evaluation'].get
  update:
    x-apievangelist-phrasing:
      intent: Read a conversation's stored evaluation
      effect: read
      questions:
      - Can I see the latest saved evaluation of an AI conversation without rerunning it?
      - Why would a conversation's evaluation come back empty?
      instructions:
      - text: Get the stored evaluation for conversation {id} in AI experience {ai_experience_id}, course {course_id}.
        slots:
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      - text: Show the last evaluation of conversation {id} (experience {ai_experience_id}, course {course_id}).
        slots:
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/evaluation'].post
  update:
    x-apievangelist-phrasing:
      intent: Generate or reset a conversation's evaluation
      effect: write
      questions:
      - How do I have the LLM re-evaluate a student's AI conversation?
      - Is generating a conversation evaluation rate-limited, and does it replace the old one?
      instructions:
      - text: Generate a new evaluation for conversation {id} in AI experience {ai_experience_id}, course {course_id}.
        slots:
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      - text: Rerun the evaluation of conversation {id} (experience {ai_experience_id}, course {course_id}).
        slots:
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages/{message_id}/feedback'].post
  update:
    x-apievangelist-phrasing:
      intent: Like or dislike an AI reply
      effect: write
      questions:
      - Can I give a thumbs up or down on an AI-generated message?
      - How do I leave written feedback with my vote on an AI reply?
      instructions:
      - text: Vote {vote} on message {message_id} in conversation {id}, experience {ai_experience_id}, course {course_id}.
        slots:
          vote: requestBody.vote
          message_id: path.message_id
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      - text: Rate AI message {message_id} as {vote} with note {feedback_message} (conversation {id}, experience {ai_experience_id}, course {course_id}).
        slots:
          message_id: path.message_id
          vote: requestBody.vote
          feedback_message: requestBody.feedback_message
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/ai_experiences/{ai_experience_id}/conversations/{id}/messages/{message_id}/feedback/{feedback_id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove my vote on an AI reply
      effect: destructive
      questions:
      - How do I take back a like or dislike I gave an AI message?
      - Can I toggle off feedback on an AI reply?
      instructions:
      - text: Remove feedback {feedback_id} from message {message_id} in conversation {id}, experience {ai_experience_id}, course {course_id}.
        slots:
          feedback_id: path.feedback_id
          message_id: path.message_id
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      - text: Undo vote {feedback_id} on AI message {message_id} (conversation {id}, experience {ai_experience_id}, course {course_id}).
        slots:
          feedback_id: path.feedback_id
          message_id: path.message_id
          id: path.id
          ai_experience_id: path.ai_experience_id
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'