openapi: 3.2.0 info: title: Canvas LMS REST Custom Gradebook Columns API version: v1 summary: The complete Canvas LMS REST API, converted from the Swagger 1.2 documents Instructure publishes under https://canvas.instructure.com/doc/api/. description: The Canvas LMS REST API covers courses, assignments, quizzes, grades, users, enrollments, accounts, files, modules, rubrics, submissions, SIS imports, LTI, analytics and account administration. contact: name: Instructure Canvas url: https://canvas.instructure.com/doc/api/ license: name: AGPL-3.0 url: https://github.com/instructure/canvas-lms/blob/master/LICENSE servers: - url: https://canvas.instructure.com/api description: Instructure-hosted Canvas (canvas.instructure.com) - url: https://{canvas_host}/api description: Any Canvas instance; Canvas is multi-tenant and self-hostable, so the host is the institution's Canvas domain. variables: canvas_host: default: canvas.instructure.com description: Your institution's Canvas hostname, e.g. school.instructure.com security: - bearerAuth: [] - oauth2: [] tags: - name: Custom Gradebook Columns x-resource: custom_gradebook_columns externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html paths: /v1/courses/{course_id}/custom_gradebook_columns: get: tags: - Custom Gradebook Columns operationId: list_custom_gradebook_columns summary: List custom gradebook columns description: A paginated list of all custom gradebook columns for a course parameters: - name: course_id in: path schema: type: string required: true description: ID - name: include_hidden in: query schema: type: boolean required: false description: Include hidden parameters (defaults to false) responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/CustomColumn' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html post: tags: - Custom Gradebook Columns operationId: create_custom_gradebook_column summary: Create a custom gradebook column parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: column[title]: type: string description: no description column[position]: type: integer format: int64 description: The position of the column relative to other custom columns column[hidden]: type: boolean description: Hidden columns are not displayed in the gradebook column[teacher_notes]: type: boolean description: 'Set this if the column is created by a teacher. The gradebook only supports one teacher_notes column.' column[read_only]: type: boolean description: Set this to prevent the column from being editable in the gradebook ui required: - column[title] application/x-www-form-urlencoded: schema: type: object properties: column[title]: type: string description: no description column[position]: type: integer format: int64 description: The position of the column relative to other custom columns column[hidden]: type: boolean description: Hidden columns are not displayed in the gradebook column[teacher_notes]: type: boolean description: 'Set this if the column is created by a teacher. The gradebook only supports one teacher_notes column.' column[read_only]: type: boolean description: Set this to prevent the column from being editable in the gradebook ui required: - column[title] responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CustomColumn' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/courses/{course_id}/custom_gradebook_columns/{id}: put: tags: - Custom Gradebook Columns operationId: update_custom_gradebook_column summary: Update a custom gradebook column description: Accepts the same parameters as custom gradebook column creation parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CustomColumn' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html delete: tags: - Custom Gradebook Columns operationId: delete_custom_gradebook_column summary: Delete a custom gradebook column description: Permanently deletes a custom column and its associated data parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/CustomColumn' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/courses/{course_id}/custom_gradebook_columns/reorder: post: tags: - Custom Gradebook Columns operationId: reorder_custom_columns summary: Reorder custom columns description: 'Puts the given columns in the specified order 200 OK is returned if successful' parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: order: type: array items: type: integer description: no description required: - order application/x-www-form-urlencoded: schema: type: object properties: order: type: array items: type: integer description: no description required: - order responses: '200': description: Success, no content returned externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/courses/{course_id}/custom_gradebook_columns/{id}/data: get: tags: - Custom Gradebook Columns operationId: list_entries_for_column summary: List entries for a column description: This does not list entries for students without associated data. parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: include_hidden in: query schema: type: boolean required: false description: 'If true, hidden columns will be included in the result. If false or absent, only visible columns will be returned.' responses: '200': description: Success content: application/json: schema: type: array items: $ref: '#/components/schemas/ColumnDatum' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/courses/{course_id}/custom_gradebook_columns/{id}/data/{user_id}: put: tags: - Custom Gradebook Columns operationId: update_column_data summary: Update column data description: Set the content of a custom column parameters: - name: course_id in: path schema: type: string required: true description: ID - name: id in: path schema: type: string required: true description: ID - name: user_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: column_data[content]: type: string description: Column content. Setting this to blank will delete the datum object. required: - column_data[content] application/x-www-form-urlencoded: schema: type: object properties: column_data[content]: type: string description: Column content. Setting this to blank will delete the datum object. required: - column_data[content] responses: '200': description: Success content: application/json: schema: $ref: '#/components/schemas/ColumnDatum' externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html /v1/courses/{course_id}/custom_gradebook_column_data: put: tags: - Custom Gradebook Columns operationId: bulk_update_column_data summary: Bulk update column data description: 'Set the content of custom columns { "column_data": [ { "column_id": example_column_id, "user_id": example_student_id, "content": example_content }, { "column_id": example_column_id, "user_id": example_student_id, "content: example_content } ] }' parameters: - name: course_id in: path schema: type: string required: true description: ID requestBody: required: false content: application/json: schema: type: object properties: column_data: type: array items: type: array items: {} description: Column content. Setting this to an empty string will delete the data object. required: - column_data application/x-www-form-urlencoded: schema: type: object properties: column_data: type: array items: type: array items: {} description: Column content. Setting this to an empty string will delete the data object. required: - column_data responses: '200': description: Success content: application/json: schema: type: string x-canvas-declared-type: Progress externalDocs: url: https://canvas.instructure.com/doc/api/custom_gradebook_columns.html components: schemas: ColumnDatum: type: object properties: content: type: string example: Nut allergy user_id: type: integer example: 2 description: ColumnDatum objects contain the entry for a column for each user. CustomColumn: type: object properties: id: type: integer example: 2 description: The ID of the custom gradebook column teacher_notes: type: boolean example: false description: When true, this column's visibility will be toggled in the Gradebook when a user selects to show or hide notes title: type: string example: Stuff description: header text position: type: integer example: 1 description: column order hidden: type: boolean example: false description: won't be displayed if hidden is true read_only: type: boolean example: true description: won't be editable in the gradebook UI securitySchemes: bearerAuth: type: http scheme: bearer description: 'Canvas OAuth2 access token sent as "Authorization: Bearer ". See https://canvas.instructure.com/doc/api/file.oauth.html' oauth2: type: oauth2 description: Canvas OAuth2. See https://canvas.instructure.com/doc/api/file.oauth.html and https://canvas.instructure.com/doc/api/file.oauth_endpoints.html flows: authorizationCode: authorizationUrl: https://canvas.instructure.com/login/oauth2/auth tokenUrl: https://canvas.instructure.com/login/oauth2/token refreshUrl: https://canvas.instructure.com/login/oauth2/token scopes: {} externalDocs: description: Canvas LMS REST API Documentation url: https://canvas.instructure.com/doc/api/ x-generated-from: https://canvas.instructure.com/doc/api/api-docs.json x-provenance: method: derived derived_by: API Evangelist enrichment pipeline (Swagger 1.2 -> OpenAPI 3.1 conversion) source: openapi/_original/swagger-1.2/*.json (144 verbatim first-party Swagger 1.2 documents) source_url: https://canvas.instructure.com/doc/api/api-docs.json fetched: '2026-09-05' http_status: 200