Canvas · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Canvas LMS REST Group Categories API

17 actions 17 updates phrasing extends openapi/canvas-group-categories-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/accounts/{account_id}/group_categories'].get
$.paths['/v1/accounts/{account_id}/group_categories'].post
$.paths['/v1/courses/{course_id}/group_categories'].get
$.paths['/v1/courses/{course_id}/group_categories'].post
$.paths['/v1/group_categories/{group_category_id}'].get
$.paths['/v1/group_categories/{group_category_id}'].put
$.paths['/v1/group_categories/{group_category_id}'].delete
$.paths['/v1/courses/{course_id}/group_categories/bulk_manage_differentiation_tag'].post
$.paths['/v1/courses/{course_id}/group_categories/differentiation_tag_candidate_count'].get
$.paths['/v1/courses/{course_id}/group_categories/import_tags'].post
$.paths['/v1/group_categories/{group_category_id}/import'].post
$.paths['/v1/group_categories/{group_category_id}/groups'].get
$.paths['/v1/group_categories/{group_category_id}/export'].get
$.paths['/v1/courses/{course_id}/group_categories/export_tags'].get
$.paths['/v1/group_categories/{group_category_id}/users'].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 Group Categories API
  version: 1.0.0
extends: openapi/canvas-group-categories-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/accounts/{account_id}/group_categories'].get
  update:
    x-apievangelist-phrasing:
      intent: List group sets in an account
      effect: read
      questions:
      - What group categories exist at the account level in Canvas?
      - Can I list only the non-collaborative group sets for a sub-account?
      instructions:
      - text: List the group categories in account {account_id}.
        slots:
          account_id: path.account_id
      - text: Show account {account_id} group sets with collaboration state {collaboration_state}.
        slots:
          account_id: path.account_id
          collaboration_state: query.collaboration_state
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/accounts/{account_id}/group_categories'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a group set in an account
      effect: write
      questions:
      - How do I set up a new group category across an entire account?
      - Can an account-wide group set allow self signup or cap group size?
      instructions:
      - text: Create an account group category named {name} in account {account_id}.
        slots:
          name: requestBody.name
          account_id: path.account_id
      - text: Add group set {name} to account {account_id} with a limit of {group_limit} members per group.
        slots:
          name: requestBody.name
          account_id: path.account_id
          group_limit: requestBody.group_limit
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/group_categories'].get
  update:
    x-apievangelist-phrasing:
      intent: List group sets in a course
      effect: read
      questions:
      - Which group sets has my instructor created in this course?
      - Are differentiation tags listed among a course's group categories?
      instructions:
      - text: List group categories for course {course_id}.
        slots:
          course_id: path.course_id
      - text: Show the course {course_id} group sets filtered by {collaboration_state}.
        slots:
          course_id: path.course_id
          collaboration_state: query.collaboration_state
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/group_categories'].post
  update:
    x-apievangelist-phrasing:
      intent: Create a group set in a course
      effect: write
      questions:
      - Can I create project groups for my class and have students split automatically?
      - Is it possible to auto-create a fixed number of groups when making a course group set?
      instructions:
      - text: Create a course group set called {name} in {course_id}.
        slots:
          name: requestBody.name
          course_id: path.course_id
      - text: Make group category {name} in course {course_id} and split students into {split_group_count} groups.
        slots:
          name: requestBody.name
          course_id: path.course_id
          split_group_count: requestBody.split_group_count
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/group_categories/{group_category_id}'].get
  update:
    x-apievangelist-phrasing:
      intent: Get one group set
      effect: read
      questions:
      - Can I look up the settings of a specific group category?
      - Does a group set have self signup or auto leader turned on?
      instructions:
      - text: Get group category {group_category_id}.
        slots:
          group_category_id: path.group_category_id
      - text: Show the configuration of group set {group_category_id}.
        slots:
          group_category_id: path.group_category_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/group_categories/{group_category_id}'].put
  update:
    x-apievangelist-phrasing:
      intent: Edit a group set's settings
      effect: write
      questions:
      - Can I rename a group category or change its member limit later?
      - Is turning on automatic group leaders for an existing set possible?
      instructions:
      - text: Rename group category {group_category_id} to {name}.
        slots:
          group_category_id: path.group_category_id
          name: requestBody.name
      - text: Set auto leader to {auto_leader} on group set {group_category_id}.
        slots:
          auto_leader: requestBody.auto_leader
          group_category_id: path.group_category_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/group_categories/{group_category_id}'].delete
  update:
    x-apievangelist-phrasing:
      intent: Delete a group set and its groups
      effect: destructive
      questions:
      - Does deleting a group category also delete every group inside it?
      - Which group sets are protected from deletion?
      instructions:
      - text: Delete group category {group_category_id} and all its groups.
        slots:
          group_category_id: path.group_category_id
      - text: Remove group set {group_category_id}.
        slots:
          group_category_id: path.group_category_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/group_categories/bulk_manage_differentiation_tag'].post
  update:
    x-apievangelist-phrasing:
      intent: Bulk create, rename or delete differentiation tags
      effect: write
      questions:
      - Can I create, rename and delete several differentiation tags in one request?
      - Do bulk differentiation tag changes roll back if one fails?
      instructions:
      - text: Apply differentiation tag operations {operations} to tag set {group_category} in course {course_id}.
        slots:
          operations: requestBody.operations
          group_category: requestBody.group_category
          course_id: path.course_id
      - text: In course {course_id}, bulk update the differentiation tags under {group_category} with {operations}.
        slots:
          course_id: path.course_id
          group_category: requestBody.group_category
          operations: requestBody.operations
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/group_categories/differentiation_tag_candidate_count'].get
  update:
    x-apievangelist-phrasing:
      intent: Count students eligible for a differentiation tag
      effect: read
      questions:
      - How many students in my course could be added to a differentiation tag?
      - Can I exclude certain users when counting differentiation tag candidates?
      instructions:
      - text: Count students in course {course_id} eligible for differentiation tag {differentiation_tag_id}.
        slots:
          course_id: path.course_id
          differentiation_tag_id: query.differentiation_tag_id
      - text: Tell me how many course {course_id} students with role {enrollment_role_id} could be tagged.
        slots:
          course_id: path.course_id
          enrollment_role_id: query.enrollment_role_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/group_categories/import_tags'].post
  update:
    x-apievangelist-phrasing:
      intent: Import differentiation tags from CSV
      effect: write
      questions:
      - Can I upload a CSV to create differentiation tags for my course?
      - What file format does the differentiation tag import expect?
      instructions:
      - text: Import differentiation tags into course {course_id} from {attachment}.
        slots:
          course_id: path.course_id
          attachment: requestBody.attachment
      - text: Create course {course_id} differentiation tags using the CSV {attachment}.
        slots:
          course_id: path.course_id
          attachment: requestBody.attachment
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/group_categories/{group_category_id}/import'].post
  update:
    x-apievangelist-phrasing:
      intent: Import groups into a group set from CSV
      effect: write
      questions:
      - Can I bulk-create groups inside a group set by uploading a spreadsheet?
      - Is importing group memberships from a CSV supported?
      instructions:
      - text: Import groups into group category {group_category_id} from {attachment}.
        slots:
          group_category_id: path.group_category_id
          attachment: requestBody.attachment
      - text: Load the CSV {attachment} to build groups in set {group_category_id}.
        slots:
          attachment: requestBody.attachment
          group_category_id: path.group_category_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/group_categories/{group_category_id}/groups'].get
  update:
    x-apievangelist-phrasing:
      intent: List the groups in a group set
      effect: read
      questions:
      - Which groups belong to a particular group category?
      - Can I page through all the groups created under one set?
      instructions:
      - text: List the groups in group category {group_category_id}.
        slots:
          group_category_id: path.group_category_id
      - text: Show every group under set {group_category_id}.
        slots:
          group_category_id: path.group_category_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/group_categories/{group_category_id}/export'].get
  update:
    x-apievangelist-phrasing:
      intent: Export a group set's groups and members as CSV
      effect: read
      questions:
      - Can I download a CSV of who is in each group of a group set?
      - Is the group membership export in a format I can re-import?
      instructions:
      - text: Export groups and users in category {group_category_id} to CSV.
        slots:
          group_category_id: path.group_category_id
      - text: Download the membership spreadsheet for group set {group_category_id}.
        slots:
          group_category_id: path.group_category_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/courses/{course_id}/group_categories/export_tags'].get
  update:
    x-apievangelist-phrasing:
      intent: Export a course's differentiation tags and users
      effect: read
      questions:
      - Can I get a CSV of which students carry which differentiation tags in a course?
      - Is there an export of tag assignments ready to re-import?
      instructions:
      - text: Export differentiation tags and their users for course {course_id}.
        slots:
          course_id: path.course_id
      - text: Download the course {course_id} tag membership CSV.
        slots:
          course_id: path.course_id
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/group_categories/{group_category_id}/users'].get
  update:
    x-apievangelist-phrasing:
      intent: List users in a group set
      effect: read
      questions:
      - Which students in a group set haven't been placed in a group yet?
      - Can I search the members of a group category by name?
      instructions:
      - text: List users in group category {group_category_id}.
        slots:
          group_category_id: path.group_category_id
      - text: Show unassigned students in group set {group_category_id}.
        slots:
          group_category_id: path.group_category_id
      - text: Search group set {group_category_id} members for {search_term}.
        slots:
          group_category_id: path.group_category_id
          search_term: query.search_term
      method: generated
      generated: '2026-10-01'
- target: $.paths['/v1/group_categories/{group_category_id}/assign_unassigned_members'].post
  update:
    x-apievangelist-phrasing:
      intent: Spread unassigned students evenly across groups
      effect: write
      questions:
      - Can Canvas automatically place leftover students into existing groups?
      - Does auto-assigning group members run in the background or right away?
      instructions:
      - text: Assign all unassigned members of group category {group_category_id} to groups.
        slots:
          group_category_id: path.group_category_id
      - text: Evenly distribute leftover students in set {group_category_id}, synchronously {sync}.
        slots:
          group_category_id: path.group_category_id
          sync: requestBody.sync
      method: generated
      generated: '2026-10-01'