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