Canvas · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Canvas LMS REST Feature Flags API

17 actions 17 updates phrasing extends openapi/canvas-feature-flags-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 17 · first 16 shown; the file carries all of them

$.info
$.paths['/v1/courses/{course_id}/features'].get
$.paths['/v1/accounts/{account_id}/features'].get
$.paths['/v1/users/{user_id}/features'].get
$.paths['/v1/courses/{course_id}/features/enabled'].get
$.paths['/v1/accounts/{account_id}/features/enabled'].get
$.paths['/v1/users/{user_id}/features/enabled'].get
$.paths['/v1/features/environment'].get
$.paths['/v1/courses/{course_id}/features/flags/{feature}'].get
$.paths['/v1/courses/{course_id}/features/flags/{feature}'].put
$.paths['/v1/courses/{course_id}/features/flags/{feature}'].delete
$.paths['/v1/accounts/{account_id}/features/flags/{feature}'].get
$.paths['/v1/accounts/{account_id}/features/flags/{feature}'].put
$.paths['/v1/accounts/{account_id}/features/flags/{feature}'].delete
$.paths['/v1/users/{user_id}/features/flags/{feature}'].get
$.paths['/v1/users/{user_id}/features/flags/{feature}'].put

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 Feature Flags API
  version: 1.0.0
extends: openapi/canvas-feature-flags-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: 16
- target: $.paths['/v1/courses/{course_id}/features'].get
  update:
    x-apievangelist-phrasing:
      intent: List features for a course
      effect: read
      questions:
      - Which feature options can be toggled for a course?
      - Can I hide features that are already turned on by a parent account?
      instructions:
      - text: List the features available to course {course_id}.
        slots:
          course_id: path.course_id
      - text: 'Show course {course_id} features, hiding inherited enabled ones: {hide_inherited_enabled}.'
        slots:
          course_id: path.course_id
          hide_inherited_enabled: query.hide_inherited_enabled
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/features'].get
  update:
    x-apievangelist-phrasing:
      intent: List features for an account
      effect: read
      questions:
      - What features can an admin enable or disable for an account?
      - Can I see every feature option that applies to a sub-account?
      instructions:
      - text: List the features available to account {account_id}.
        slots:
          account_id: path.account_id
      - text: Show account {account_id} feature options without inherited enabled ones ({hide_inherited_enabled}).
        slots:
          account_id: path.account_id
          hide_inherited_enabled: query.hide_inherited_enabled
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/features'].get
  update:
    x-apievangelist-phrasing:
      intent: List features for a user
      effect: read
      questions:
      - Which user-level feature previews can a person opt into?
      - How do I see the full feature list that applies to one user?
      instructions:
      - text: List the features available to user {user_id}.
        slots:
          user_id: path.user_id
      - text: Show all feature options for user {user_id}.
        slots:
          user_id: path.user_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/features/enabled'].get
  update:
    x-apievangelist-phrasing:
      intent: List features turned on for a course
      effect: read
      questions:
      - Which features are currently switched on in my course?
      - Can I get just the names of enabled course features?
      instructions:
      - text: List enabled features in course {course_id}.
        slots:
          course_id: path.course_id
      - text: Which feature names are active for course {course_id}.
        slots:
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/features/enabled'].get
  update:
    x-apievangelist-phrasing:
      intent: List features turned on for an account
      effect: read
      questions:
      - What features are enabled on our account right now?
      - Is there a quick list of only the active feature names for an account?
      instructions:
      - text: List enabled features in account {account_id}.
        slots:
          account_id: path.account_id
      - text: Which feature names are active for account {account_id}.
        slots:
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/features/enabled'].get
  update:
    x-apievangelist-phrasing:
      intent: List features turned on for a user
      effect: read
      questions:
      - Which feature previews has a user already enabled?
      - Can I get only the enabled feature names for one person?
      instructions:
      - text: List enabled features for user {user_id}.
        slots:
          user_id: path.user_id
      - text: Which feature names are active for user {user_id}.
        slots:
          user_id: path.user_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/features/environment'].get
  update:
    x-apievangelist-phrasing:
      intent: Get global UI feature settings
      effect: read
      questions:
      - What global feature options shape the Canvas user interface?
      - Can I read the same feature hash the web UI receives in its environment?
      instructions:
      - text: Show the environment-wide feature options.
      - text: Get the global UI feature flags for this Canvas instance.
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/features/flags/{feature}'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a feature flag on a course
      effect: read
      questions:
      - Is a feature on or off for a course, and is that inherited from the account?
      - Can I tell where a course's feature flag was set?
      instructions:
      - text: Get the {feature} feature flag for course {course_id}.
        slots:
          feature: path.feature
          course_id: path.course_id
      - text: Check whether {feature} is enabled in course {course_id}.
        slots:
          feature: path.feature
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/features/flags/{feature}'].put
  update:
    x-apievangelist-phrasing:
      intent: Set a feature flag on a course
      effect: write
      questions:
      - Can a teacher turn a feature on for just one course?
      - Why would setting a course feature flag fail?
      instructions:
      - text: Set feature {feature} to {state} in course {course_id}.
        slots:
          feature: path.feature
          state: requestBody.state
          course_id: path.course_id
      - text: Turn on {feature} for course {course_id}.
        slots:
          feature: path.feature
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/features/flags/{feature}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a feature flag from a course
      effect: destructive
      questions:
      - What happens to a course when its own feature flag is removed?
      - Can I make a course go back to inheriting a feature setting?
      instructions:
      - text: Remove the {feature} flag from course {course_id}.
        slots:
          feature: path.feature
          course_id: path.course_id
      - text: Clear course {course_id}'s own setting for {feature} so it inherits again.
        slots:
          feature: path.feature
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/features/flags/{feature}'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a feature flag on an account
      effect: read
      questions:
      - Is a given feature enabled for my account?
      - Does an account feature flag come from a parent account?
      instructions:
      - text: Get the {feature} feature flag for account {account_id}.
        slots:
          feature: path.feature
          account_id: path.account_id
      - text: Check whether {feature} is on for account {account_id}.
        slots:
          feature: path.feature
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/features/flags/{feature}'].put
  update:
    x-apievangelist-phrasing:
      intent: Set a feature flag on an account
      effect: write
      questions:
      - Can an admin lock a feature on for all courses in an account?
      - What states can an account-level feature flag take?
      instructions:
      - text: Set feature {feature} to {state} in account {account_id}.
        slots:
          feature: path.feature
          state: requestBody.state
          account_id: path.account_id
      - text: Enable {feature} across account {account_id}.
        slots:
          feature: path.feature
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/features/flags/{feature}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a feature flag from an account
      effect: destructive
      questions:
      - Can I delete an account's feature flag so it follows the parent again?
      - Must the flag be defined directly on the account to remove it?
      instructions:
      - text: Remove the {feature} flag from account {account_id}.
        slots:
          feature: path.feature
          account_id: path.account_id
      - text: Clear account {account_id}'s own setting for {feature}.
        slots:
          feature: path.feature
          account_id: path.account_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/features/flags/{feature}'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a feature flag on a user
      effect: read
      questions:
      - Has a particular user opted into a feature?
      - Can I see a user's flag for one feature and where it comes from?
      instructions:
      - text: Get the {feature} feature flag for user {user_id}.
        slots:
          feature: path.feature
          user_id: path.user_id
      - text: Check whether {feature} is on for user {user_id}.
        slots:
          feature: path.feature
          user_id: path.user_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/features/flags/{feature}'].put
  update:
    x-apievangelist-phrasing:
      intent: Set a feature flag on a user
      effect: write
      questions:
      - Can I turn a feature preview on for an individual user?
      - Is a user flag blocked if the account already locked the feature?
      instructions:
      - text: Set feature {feature} to {state} for user {user_id}.
        slots:
          feature: path.feature
          state: requestBody.state
          user_id: path.user_id
      - text: Opt user {user_id} into {feature}.
        slots:
          feature: path.feature
          user_id: path.user_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/users/{user_id}/features/flags/{feature}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Remove a feature flag from a user
      effect: destructive
      questions:
      - Can I reset a user's personal feature setting?
      - What does a user fall back to after their feature flag is removed?
      instructions:
      - text: Remove the {feature} flag from user {user_id}.
        slots:
          feature: path.feature
          user_id: path.user_id
      - text: Clear user {user_id}'s personal setting for {feature}.
        slots:
          feature: path.feature
          user_id: path.user_id
      method: generated
      generated: '2026-10-01'