openapi: 3.0.1 info: title: umd.io bus courses API description: 'Welcome to umd.io, the open-source API for University of Maryland data. If you are building a University data-focused app, hack, or project, you’re in the right place. This site will walk you through basic API use and document all supported API calls. umd.io is a GETful API. It follows RESTful conventions, but for now, you can only get data – you can’t create, update, or destroy. We''re now in version 1! We might add new endpoints or more data to existing responses, but we won''t remove anything without a major version change. If you''re looking for the v0 docs, you can find them at https://docs.umd.io/. Please note that v0 is deprecated. It will continue to be supported until at least 2021, but will get no further feature updates, and will eventually be discontinued. We are actively looking for contributors! Tweet, email, or otherwise get in touch with us.' contact: email: hi@umd.io license: name: MIT url: https://github.com/umdio/umdio/blob/master/LICENSE version: 1.0.0 Beta servers: - url: https://api.umd.io/v1 tags: - name: courses description: This set of endpoints lets you get data about university courses and their sections. You can get one course or section at a time, several courses or sections at a time, or a list of all the courses. All the data is scraped from Testudo. paths: /courses: get: tags: - courses summary: List of courses description: Returns paginated list of courses operationId: getCourses parameters: - $ref: '#/components/parameters/sortParam' - $ref: '#/components/parameters/pageParam' - $ref: '#/components/parameters/perPageParam' - $ref: '#/components/parameters/semesterParam' - $ref: '#/components/parameters/creditsParam' - $ref: '#/components/parameters/deptIdParam' - $ref: '#/components/parameters/genEdParam' responses: '200': description: Successful Operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Course' /courses/list: get: tags: - courses summary: List of minified courses description: Returns list of all course codes and names operationId: getCourseList parameters: - $ref: '#/components/parameters/sortParam' - $ref: '#/components/parameters/pageParam' - $ref: '#/components/parameters/perPageParam' - $ref: '#/components/parameters/semesterParam' responses: '200': description: Successful Operation content: application/json: schema: type: array items: type: object properties: course_id: type: string name: type: string /courses/sections: get: tags: - courses summary: List of sections description: Returns paginated list of sections operationId: getSections parameters: - $ref: '#/components/parameters/sortParam' - $ref: '#/components/parameters/pageParam' - $ref: '#/components/parameters/perPageParam' - $ref: '#/components/parameters/courseIdParam' - $ref: '#/components/parameters/seatsParam' - $ref: '#/components/parameters/openSeatsParam' - $ref: '#/components/parameters/waitlistParam' - $ref: '#/components/parameters/semesterParam' responses: '200': description: Successful Operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Section' /courses/sections/{section_ids}: get: tags: - courses summary: View specific sections description: Returns paginated list of sections operationId: getSectionsByIds parameters: - $ref: '#/components/parameters/sectionIdsParam' - $ref: '#/components/parameters/semesterParam' responses: '200': description: Successful Operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Section' '400': description: Malformed section id content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Unknown section id content: application/json: schema: $ref: '#/components/schemas/Error' /courses/{course_ids}: get: tags: - courses summary: View specific courses description: Returns info about one or more courses operationId: getCoursesById parameters: - $ref: '#/components/parameters/courseIdsParam' - $ref: '#/components/parameters/semesterParam' responses: '200': description: Successful Operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Course' '400': description: Malformed course id content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Unknown course id content: application/json: schema: $ref: '#/components/schemas/Error' /courses/{course_ids}/sections: get: tags: - courses summary: View sections for a course description: Returns info about one or more courses operationId: getSectionsForCourse parameters: - $ref: '#/components/parameters/courseIdsParam' - $ref: '#/components/parameters/semesterParam' responses: '200': description: Successful Operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Section' '400': description: Malformed course id content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Unknown course id content: application/json: schema: $ref: '#/components/schemas/Error' /courses/{course_ids}/sections/{section_ids}: get: tags: - courses summary: View specific sections for a course description: Returns info about one or more courses operationId: getCourseSectionsById parameters: - $ref: '#/components/parameters/courseIdsParam' - $ref: '#/components/parameters/sectionIdsParam' - $ref: '#/components/parameters/semesterParam' responses: '200': description: Successful Operation content: application/json: schema: type: array items: $ref: '#/components/schemas/Section' '400': description: Malformed course id or section id content: application/json: schema: $ref: '#/components/schemas/Error' '404': description: Unknown course id or section id content: application/json: schema: $ref: '#/components/schemas/Error' /courses/semesters: get: tags: - courses summary: List semesters description: Returns list of all available semesters, each in format YYYYMM operationId: getSemesters responses: '200': description: Successful Operation content: application/json: schema: type: array items: type: string example: - '201901' - '201905' - '201908' /courses/departments: get: tags: - courses summary: List departments description: Returns list of all available departments operationId: getDepartments responses: '200': description: Successful Operation content: application/json: schema: type: array items: type: string example: - AAST - CMSC - MATH components: parameters: creditsParam: in: query name: credits schema: type: string description: The number of credits to watch, with optional comparator, separated by a pipe. Valid comparators are eq, leq, lt, gt, geq, neq. example: 3|leq sectionIdsParam: in: path name: section_ids required: true schema: type: array items: type: string description: One or more comma separated section ids, of format DEPTNNN-XXXX. explode: true example: - ENGL101-0101 - MATH140-0201 deptIdParam: in: query name: dept_id schema: type: string description: 4 Letter department code to search. example: CMSC pageParam: in: query name: page schema: type: number description: For paginated responses, the page to view. 1-indexed. Defaults to 1 if omitted. example: 3 sortParam: in: query name: sort schema: type: string description: a comma-separated list of course properties. Defaults to ASCENDING order, use a - (minus) prefix for DESCENDING order. For example, ?sort=course_id,-credits sorts the results ASCENDING by course_id and DESCENDING by credits. example: course_id,-credits courseIdParam: in: query name: course_id schema: type: string description: 7 or 8 digit course id. See the course object for more info. example: CMSC216 courseIdsParam: in: path name: course_ids required: true schema: type: array items: type: string description: One or more comma separated course ids, in format DEPTNNN with up to 2 trailing characters. explode: true example: - ENGL101 - MATH140 - CMSC388F openSeatsParam: in: query name: open_seats schema: type: string description: Number of open seats in a section, with optional comparator, separated by a pipe. Valid comparators are eq, leq, lt, gt, geq, neq. example: 5 perPageParam: in: query name: per_page schema: type: number description: Endpoints that return a large amount of items are paginated to 30 items by default. You can use this parameter to set a page size up to 100. example: 3 genEdParam: in: query name: gen_ed schema: type: string description: Gened requirement to search. example: DSNS seatsParam: in: query name: seats schema: type: string description: Number of total seats in a section, with optional comparator, separated by a pipe. Valid comparators are eq, leq, lt, gt, geq, neq. example: 200 waitlistParam: in: query name: waitlist schema: type: string description: Number of people on the waitlist for a class, with optional comparator, separated by a pipe. Valid comparators are eq, leq, lt, gt, geq, neq. example: 10 semesterParam: in: query name: semester schema: type: string description: 6-digit semester ID to search, with optional comparator, separated by a pipe. Valid comparators are eq, leq, lt, gt, geq, neq. example: 202008|leq schemas: Meeting: type: object description: A Meeting for a section of a course properties: days: type: string description: The days of the week that a course meets. Will be some combination of M, Tu, W, Th, F in that order. room: type: string description: The room number the meeting is in. building: type: string description: The building the meeting is in. classtype: type: string description: Lecutre, Discussion, Lab, etc. start_time: type: string description: The time the meeting starts, in format (x)y:zw[a|p]m (e.g. 10:45am, or 6:30pm) end_time: type: string description: The time the meeting ends, in format (x)y:zw[a|p]m (e.g. 10:45am, or 6:30pm) Section: type: object description: Represents a single section of a course. properties: course: type: string example: ENGL101 description: The associated course id section_id: type: string example: ENGL101-0101 description: A unique section identifier, always the course_id with a four-digit section number appended to it. semester: type: number example: 201501 description: Numeric representation of the semester, in format YYYYMM number: type: string description: The other half of section_id seats: type: string description: The number of seats for the section. meetings: type: array items: $ref: '#/components/schemas/Meeting' description: Array of section meetings. open_seats: type: string description: The number of open seats for the section. waitlist: type: string description: The number of people on the waitlist. instructors: type: array description: An array of professor names for the section items: type: string Course: type: object description: Represents a course on Testudo properties: course_id: type: string example: MATH140 description: A unique string ID with a four-letter dept_id followed by a three digit course number and an optional letter. semester: type: number example: 202001 description: Numeric representation of the semester, in format YYYYMM name: type: string example: Calculus I description: String name of the course. dept_id: type: string example: MATH description: Four letter department code department: type: string example: Mathematics description: Full name of the department that offers the course. credits: type: string example: '4' description: The number of credits the course is worth. description: type: string example: Introduction to calculus, including functions, limits, continuity, derivatives and applications of the derivative, sketching of graphs of functions, definite and indefinite integrals, and calculation of area. The course is especially recommended for science, engineering and mathematics majors. description: String description of the course, as it appears on Testudo. grading_method: type: array items: type: string example: - Regular - Pass-Fail - Audit description: Array of string grading options available. The possible options are “Regular”, “Pass-Fail”, “Audit”, and “Sat-Fail” gen_ed: type: array items: type: array items: type: string example: - - FSAR - FSMA description: Strings representing the General Education requirements the course fulfills. Note that this is an array of arrays of strings. The outmost "layer" represents "or", while the inner one represents an and relationship. Additionally, if a gened credit is granted only when taken with another class, this will be represented using a pipe (|) with that class name. For instance, "X, Y or Z (if taken with C)" on Testudo will be returned as [[X, Y], [Z|C]] here. core: type: array items: type: string example: - MS description: Array of strings of CORE requirements filled by a course. relationships: type: object properties: coreqs: type: string nullable: true example: null description: courses that must be taken with this one. prereqs: type: string nullable: true example: Minimum grade of C- in MATH115. description: Requirements for taking this course. formerly: type: string nullable: true example: null description: Previous course codes that were the same course. restrictions: type: string nullable: true example: null description: Additional restrictions/requirements for taking the course. additional_info: type: string nullable: true example: Or must have math eligibility of MATH140 or higher; and math eligibility is based on the Math Placement Test. All sections will require the use of a TI graphics calculator. Instructor will use a TI-83, TI-83+, or TI-86 calculator. If purchasing used books additional software may be required. description: Any additional information listed on Testudo also_offered_as: type: string nullable: true example: null description: Other course codes representing the same course, like in the case of cross-listing credit_granted_for: type: string nullable: true example: MATH120, MATH130, MATH136, MATH140 or MATH220. description: Courses that are equivalent in credit. sections: type: array items: oneOf: - type: string - $ref: '#/components/schemas/Section' example: - MATH140-0111 - MATH140-0121 - MATH140-0131 - MATH140-0141 - MATH140-0211 - MATH140-0221 - MATH140-0231 - MATH140-0241 - MATH140-0311 - MATH140-0321 - MATH140-0112 - MATH140-0113 - MATH140-0122 - MATH140-0123 - MATH140-0132 - MATH140-0142 description: The sections of this course. Error: type: object description: Represents an HTTP error properties: error_code: type: number message: type: string docs: type: string externalDocs: description: Github url: https://github.com/umdio/umdio