Canvas LMS · Arazzo Workflow

Canvas LMS Copy Assignment to Another Course

Version 1.0.0

Read an assignment from a source course and recreate it in a target course.

1 workflow 1 source API 1 provider
View Spec View on GitHub Learning ManagementEducationEdTechLMSLTIHigher EducationK-12Open-SourceAGPLCanvasArazzoWorkflows

Provider

canvas-lms

Workflows

copy-assignment-to-course
Duplicate an assignment from one course into another.
Reads the source assignment, creates a copy in the target course from its fields, and reads the copy back to confirm it persisted.
3 steps inputs: sourceAssignmentId, sourceCourseId, targetCourseId outputs: name, newAssignmentId
1
readSource
Read the source assignment to capture its name, description, points, and submission types.
2
createCopy
Create the copied assignment in the target course using the source assignment's fields.
3
confirmCopy
Read the copied assignment back from the target course to confirm it was created.

Source API Descriptions

Arazzo Workflow Specification

Raw ↑
arazzo: 1.0.1
info:
  title: Canvas LMS Copy Assignment to Another Course
  summary: Read an assignment from a source course and recreate it in a target course.
  description: >-
    A cross-course reuse flow for Canvas. The workflow reads an existing
    assignment from a source course, then recreates it in a target course using
    the source assignment's name, description, point value, and submission types,
    and finally reads the new assignment back to confirm the copy. Every step
    spells out its request inline so the flow can be read and executed without
    opening the underlying OpenAPI description.
  version: 1.0.0
sourceDescriptions:
- name: assignmentsApi
  url: ../openapi/canvas-lms-assignments-api-openapi.yml
  type: openapi
workflows:
- workflowId: copy-assignment-to-course
  summary: Duplicate an assignment from one course into another.
  description: >-
    Reads the source assignment, creates a copy in the target course from its
    fields, and reads the copy back to confirm it persisted.
  inputs:
    type: object
    required:
    - sourceCourseId
    - sourceAssignmentId
    - targetCourseId
    properties:
      sourceCourseId:
        type: string
        description: The Canvas course id to copy the assignment from.
      sourceAssignmentId:
        type: string
        description: The Canvas assignment id to copy.
      targetCourseId:
        type: string
        description: The Canvas course id to copy the assignment into.
  steps:
  - stepId: readSource
    description: >-
      Read the source assignment to capture its name, description, points, and
      submission types.
    operationId: getAssignment
    parameters:
    - name: course_id
      in: path
      value: $inputs.sourceCourseId
    - name: assignment_id
      in: path
      value: $inputs.sourceAssignmentId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      name: $response.body#/name
      description: $response.body#/description
      pointsPossible: $response.body#/points_possible
      submissionTypes: $response.body#/submission_types
      gradingType: $response.body#/grading_type
  - stepId: createCopy
    description: >-
      Create the copied assignment in the target course using the source
      assignment's fields.
    operationId: createAssignment
    parameters:
    - name: course_id
      in: path
      value: $inputs.targetCourseId
    requestBody:
      contentType: application/json
      payload:
        assignment:
          name: $steps.readSource.outputs.name
          description: $steps.readSource.outputs.description
          points_possible: $steps.readSource.outputs.pointsPossible
          submission_types: $steps.readSource.outputs.submissionTypes
          grading_type: $steps.readSource.outputs.gradingType
          published: false
    successCriteria:
    - condition: $statusCode == 201
    outputs:
      newAssignmentId: $response.body#/id
  - stepId: confirmCopy
    description: >-
      Read the copied assignment back from the target course to confirm it was
      created.
    operationId: getAssignment
    parameters:
    - name: course_id
      in: path
      value: $inputs.targetCourseId
    - name: assignment_id
      in: path
      value: $steps.createCopy.outputs.newAssignmentId
    successCriteria:
    - condition: $statusCode == 200
    outputs:
      newAssignmentId: $response.body#/id
      name: $response.body#/name
  outputs:
    newAssignmentId: $steps.confirmCopy.outputs.newAssignmentId
    name: $steps.confirmCopy.outputs.name

Work with this as data

Every workflow here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for arazzo workflows

4 MCP tools reach this
  • find_arazzoBrowse and filter every workflow in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This workflow
curl "https://apis.io/api/v1/arazzo/canvas-lms-copy-assignment-to-course-workflow"
All arazzo workflows
curl "https://apis.io/api/v1/arazzo?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.