University of Waterloo Courses API

The Courses API from University of Waterloo — 5 operation(s) for courses.

Documentation

Specifications

Schemas & Data

Other Resources

OpenAPI Specification

university-of-waterloo-courses-api-openapi.yml Raw ↑
openapi: 3.0.4
info:
  title: Waterloo OpenData AcademicOrganizations Courses API
  version: v3
servers:
- url: https://openapi.data.uwaterloo.ca
  description: University of Waterloo OpenData API v3
security:
- apiKey: []
tags:
- name: Courses
paths:
  /v3/Courses/{termCode}:
    get:
      tags:
      - Courses
      summary: Get all Course data for a Term
      parameters:
      - name: termCode
        in: path
        required: true
        schema:
          maxLength: 4
          minLength: 4
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Course'
  /v3/Courses/{termCode}/{courseId}:
    get:
      tags:
      - Courses
      summary: Get Course catalog data filtered by Term and Course ID, multiple Courses are usually cross listed
      parameters:
      - name: termCode
        in: path
        description: Term code to filter on
        required: true
        schema:
          maxLength: 4
          minLength: 4
          type: string
      - name: courseId
        in: path
        description: Course ID to filter on
        required: true
        schema:
          type: integer
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Course'
  /v3/Courses/{termCode}/{courseId}/{offerNumber}:
    get:
      tags:
      - Courses
      summary: Get Course catalog data filtered by Term, Course ID, and offer number
      parameters:
      - name: termCode
        in: path
        description: Term code to filter on
        required: true
        schema:
          maxLength: 4
          minLength: 4
          type: string
      - name: courseId
        in: path
        description: Course ID to filter on
        required: true
        schema:
          type: integer
      - name: offerNumber
        in: path
        description: Offer number to filter on
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Course'
  /v3/Courses/{termCode}/{subject}:
    get:
      tags:
      - Courses
      summary: Get Course catalog data filtered by Term and Subject code
      parameters:
      - name: termCode
        in: path
        description: Term code to filter on
        required: true
        schema:
          maxLength: 4
          minLength: 4
          type: string
      - name: subject
        in: path
        description: Academic Subject code to filter on
        required: true
        schema:
          pattern: ^[A-Za-z]*$
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Course'
  /v3/Courses/{termCode}/{subject}/{catalogNumber}:
    get:
      tags:
      - Courses
      summary: Get Course catalog data filtered by Term, Subject, and catalog number
      parameters:
      - name: termCode
        in: path
        description: Term code to filter on
        required: true
        schema:
          maxLength: 4
          minLength: 4
          type: string
      - name: subject
        in: path
        description: Academic Subject code to filter on
        required: true
        schema:
          pattern: ^[A-Za-z]*$
          type: string
      - name: catalogNumber
        in: path
        description: 'Course catalog number to filter on, ie: 101, 111W, 239'
        required: true
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Course'
components:
  schemas:
    Course:
      type: object
      properties:
        courseId:
          type: string
          description: Course Id that identifies this Course, not unique across terms
          nullable: true
        courseOfferNumber:
          type: integer
          description: Course Offer Number identifies cross-listed and similar Courses that shared a Course Id in a Term
          format: int32
        termCode:
          type: string
          description: Waterloo Term code for which this Course data applies
          nullable: true
        termName:
          type: string
          description: Waterloo Term name for which this Course data applies
          nullable: true
        associatedAcademicCareer:
          type: string
          description: Academic Career code associated with Course
          nullable: true
        associatedAcademicGroupCode:
          type: string
          description: The Academic Group code that is assocaited to this Course
          nullable: true
        associatedAcademicOrgCode:
          type: string
          description: The Academic Organization code that is associated to this Course
          nullable: true
        subjectCode:
          type: string
          description: The Subject code for this Course
          nullable: true
        catalogNumber:
          type: string
          description: The Catalog Number for this Course
          nullable: true
        title:
          type: string
          description: Course title, full name of course
          nullable: true
        descriptionAbbreviated:
          type: string
          description: Short description of the course, often an abbreviation of the title
          nullable: true
        description:
          type: string
          description: Description of the Course content and topics
          nullable: true
        gradingBasis:
          type: string
          description: Code to describe the grading basis for this course, can be overriden at Class level
          nullable: true
        courseComponentCode:
          type: string
          description: Course Component Code that describes if the course is a lecture, tutorial, etc.
          nullable: true
        enrollConsentCode:
          type: string
          description: Code describing whether No, Instructor, or Department consent to enroll is required. Can be overwridden at Class level.
          nullable: true
        enrollConsentDescription:
          type: string
          description: Description of the enroll requirement. Can be overwridden at Class level.
          nullable: true
          readOnly: true
        dropConsentCode:
          type: string
          description: Code describing whether No, Instructor, or Department consent to drop is required. Can be overwridden at Class level.
          nullable: true
        dropConsentDescription:
          type: string
          description: Description of the drop requirement. Can be overwridden at Class level.
          nullable: true
          readOnly: true
        requirementsDescription:
          type: string
          description: Description of the Course requirements, such as pre-requisites, anti-requisites, and co-requisites
          nullable: true
      additionalProperties: false
      description: An academic Course at Waterloo, a Course can be scheduled to become a Class
  securitySchemes:
    apiKey:
      type: apiKey
      description: Custom API key authentication
      name: x-api-key
      in: header