Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Student Web Service (SWS) Section API
description: Student Web Service (SWS) provides a RESTful API to access and update central student data. Subscribe to http://mailman.u.washington.edu/mailman/listinfo/sws-client-app-dev to get notifications about planned outages, support and the announcement of new features.
contact:
name: Enterprise Web Services & Events Team
url: https://itconnect.uw.edu/service/enterprise-web-services-and-events/
email: sws-support@uw.edu
version: v5
termsOfService: https://www.washington.edu/online/terms/
servers:
- url: https://ws.admin.washington.edu/student
description: UW-IT Enterprise Web Services production host for the Student Web Service
externalDocs:
description: UW-IT Enterprise Web Services registry
url: https://webservices.washington.edu/sws/
tags:
- name: Section
x-operator: institution
x-provenance:
method: derived
source: openapi/_original/university-of-washington-student-web-service.yaml
generated: '2026-08-30'
note: Re-based by the university pipeline on 2026-08-30. refine-openapis had welded the IdCard Web Service title/contact/base onto outputs split from the Student Web Service original; identity restored from the true parent named above and the relative base resolved to the production host published on the EWS registry.
paths:
/v5/course/{year},{quarter},{curriculum_abbreviation},{course_number}/{section_id}:
get:
tags:
- Section
summary: Get a course section offered in the year/quarter
description: "<pre>\n { \n \"DisplayTitle\" : \"Section\",\n \"ews_guid\" : \"17D4611C-D94A-478C-95CD-EAB4B7E37FAE\",\n \"LongDescription\" : \"A resource to retrieve a specific course section of a course offered in the year/quarter \n for the specified curriculum\",\n \"ShortDescription\" : \"Get a specific course section\",\n \"OriginatingSchema\" : [ { \"source\":\"swssdb\" }, { \"source\":\"uweo\" }, { \"source\":\"irws\" } ],\n \"Notes\" : \"This resource requires any of the following ASTRA roles:\n - sws:Support\n - sws:GradeSubmitter\n - sws:UnitReader\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID\n - AccessToken \",\n \"Links\" : [\"https://metadata.uw.edu/Catalog/ViewItem/Term/studentdata.coursesection\"],\n \"Synonyms\" : []\n }\n </pre>"
operationId: GetSection
parameters:
- name: year
in: path
description: 'The 4 digit year. For example: 2025'
required: true
schema:
type: string
- name: quarter
in: path
description: 'The 1 digit quarter. For example: 0=Default, 1=winter, 2=spring, 3=summer, 4=autumn'
required: true
schema:
type: string
- name: curriculum_abbreviation
in: path
description: ''
required: true
schema:
type: string
- name: course_number
in: path
description: ''
required: true
schema:
type: string
- name: section_id
in: path
description: ''
required: true
schema:
maxLength: 2
minLength: 1
type: string
responses:
'400':
description: 'Invalid arg: year | Invalid arg: quarter | Invalid arg: curriculum abbreviation | Invalid arg: course number | Invalid arg: section ID'
'404':
description: No section found.
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/SectionViewModel'
application/xml:
schema:
$ref: '#/components/schemas/SectionViewModel'
text/xml:
schema:
$ref: '#/components/schemas/SectionViewModel'
text/plain:
schema:
$ref: '#/components/schemas/SectionViewModel'
application/json:
schema:
$ref: '#/components/schemas/SectionViewModel'
text/json:
schema:
$ref: '#/components/schemas/SectionViewModel'
'202':
description: Accepted
'301':
description: MovedPermanently
'302':
description: Found
'304':
description: NotModified
'401':
description: Identity '{identity}' is not authorized to access this resource.
'405':
description: MethodNotAllowed
'500':
description: InternalServerError
'503':
description: ServiceUnavailable
/v5/section:
get:
tags:
- Section
summary: Search for course sections that match the supplied parameters
description: "<pre>\n { \n \"DisplayTitle\" : \"Section Search\",\n \"ews_guid\" : \"A5877849-AE6E-409C-BDCE-EA4AAFADD0AC\",\n \"LongDescription\" : \"Search for course sections that match the supplied parameters\",\n \"ShortDescription\" : \"Get a list of course sections\",\n \"OriginatingSchema\" : [ { \"source\":\"swssdb\" }, { \"source\":\"uweo\" }, { \"source\":\"irws\" } ],\n \"Notes\" : \" This resource requires any of the following ASTRA roles:\n - sws:Support\n - sws:GradeSubmitter\n - sws:UnitReader\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID\n - AccessToken\n For the Section_Search resource, the query string parameters can be configured in different ways, \n depending on the desired results.\n To return a full listing of all the courses and sections in the curriculum, enter the year, quarter, \n and curriculum abbreviation parameters.\n To return list of sections for a specified course, enter the year, quarter, curriculum abbreviation, \n and the course number parameters.\n To return a list of all the sections that an instructor is teaching across multiple curricula, \n enter the year, quarter and (instructor) regID parameters.\n To return a list of all the sections that an instructor is teaching in the specified curriculum, \n enter the year, quarter, curriculum abbreviation and (instructor) regID parameters.\n To return a list of all the sections that a course has been offered at UW, enter the starting year \n in the year field, leave quarter empty, specify the curriculum abbreviation and course number parameters.\n To return a list of all the sections that a course has been offered at UW but filter them for a specific \n set of Delete Flag values, enter the starting year in the year field, leave quarter empty, specify \n the curriculum abbreviation, course number and desired delete flag values.\n To return a list of all the sections that a course has but exclude courses that do not have sections, \n use the exclude_courses_without_sections flag. To use this mode, you may not also search for future terms \n at the same time.\",\n \"Links\" : [\"https://metadata.uw.edu/Catalog/ViewItem/Term/studentdata.coursesection\"],\n \"Synonyms\" : []\n }\n </pre>"
operationId: SectionSearch
parameters:
- name: year
in: query
description: 'The 4 digit year. For example: 2025'
schema:
type: string
default: ''
- name: quarter
in: query
description: 'The 1 digit quarter. For example: 0=Default, 1=winter, 2=spring, 3=summer, 4=autumn'
schema:
type: string
default: ''
- name: future_terms
in: query
description: Choose from 0 - 400
schema:
type: integer
format: int32
default: 0
- name: curriculum_abbreviation
in: query
description: ''
schema:
type: string
default: ''
- name: course_number
in: query
description: ''
schema:
type: string
default: ''
- name: reg_id
in: query
description: RegIDs are the authoritative unique IDs guaranteed to identify a UW person permanently. RegIDs are assigned to a person by the Identity Registration Service, the authoritative source for person data reconciled from several data sources which may represent multiple records and accounts for a single person. A given RegID will always refer to the same person, regardless of name, status or affiliation changes.
schema:
type: string
default: ''
- name: search_by
in: query
description: Choose instructor or gradesubmissiondelegate
schema:
type: string
default: ''
- name: include_secondaries
in: query
description: Choose on or true or false.
schema:
type: string
default: ''
- name: delete_flag
in: query
description: Any combination of active, suspended or withdrawn separated by ,.
schema:
type: string
default: ''
- name: changed_since_date
in: query
description: If you have a value in ChangedSinceDate all other input fields will be ignored and will return all data that has changed since the date entered. This is used for applications that only need the changes since they last checked without having to know specific details to search by.
schema:
type: string
default: ''
- name: transcriptable_course
in: query
description: "Choose yes, no, or all. If yes then results will include any course that can be creditable such that it can be shown on a transcript. This would include certain classes that also fall under the Educational Outreach (EO). Yes is also the default value chosen for this search criteria if none is specified.\n If no then only classes from EO will be returned.\n If all, both transcriptable and non-transcriptable courses will be returned.\n All will return every course regardless of whether it can be included in a transcript or not."
schema:
type: string
default: 'yes'
- name: page_size
in: query
description: ''
schema:
type: string
default: ''
- name: page_start
in: query
description: ''
schema:
type: string
default: ''
- name: facility_code
in: query
description: ''
schema:
type: string
default: ''
- name: room_number
in: query
description: ''
schema:
type: string
default: ''
- name: sln
in: query
description: ''
schema:
type: string
default: ''
responses:
'400':
description: 'Invalid Search for changed since date value | Invalid year | Invalid quarter | Invalid number of future terms | Invalid reg id | Invalid search by | Invalid curriculum | Invalid course number | Invalid include secondaries | Invalid delete_flag: should be any comma-separated combination of ''active'', ''suspended'', or ''withdrawn'' | Year and quarter is required when searching by SLN | Invalid input: no secondary sections when filtering by delete_flag | year required | Invalid input: either instructor, curriculum, facility code or sln required | Invalid input: no secondary sections when filtering by delete_flag | Year and quarter is required when searching by facility code | Page start must be an integer greater than 0. | Page size must be an integer between 1 and 500, inclusive.'
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/SectionSearchViewModel'
application/xml:
schema:
$ref: '#/components/schemas/SectionSearchViewModel'
text/xml:
schema:
$ref: '#/components/schemas/SectionSearchViewModel'
text/plain:
schema:
$ref: '#/components/schemas/SectionSearchViewModel'
application/json:
schema:
$ref: '#/components/schemas/SectionSearchViewModel'
text/json:
schema:
$ref: '#/components/schemas/SectionSearchViewModel'
'202':
description: Accepted
'301':
description: MovedPermanently
'302':
description: Found
'304':
description: NotModified
'401':
description: Identity '{identity}' is not authorized to access this resource.
'405':
description: MethodNotAllowed
'500':
description: InternalServerError
'503':
description: ServiceUnavailable
/v5/section/{year},{quarter}:
get:
tags:
- Section
summary: Get course sections offered in the year/quarter
description: "<pre>\n { \n \"DisplayTitle\" : \"Section Search by Term\",\n \"ews_guid\" : \"EC0A49F3-5969-4020-81CA-924BCA67E7AB\",\n \"LongDescription\" : \"A resource to retrieve a list of course sections offered in the year/quarter.\",\n \"ShortDescription\" : \"Search for all course sections by term\",\n \"OriginatingSchema\" : [ { \"source\":\"swssdb\" } ],\n \"Notes\" : \"This resource requires any of the following ASTRA roles:\n - sws:Support\n - sws:GradeSubmitter\n - sws:UnitReader\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID\n - AccessToken \",\n \"Links\" : [\"https://metadata.uw.edu/Catalog/ViewItem/Term/studentdata.coursesection\"],\n \"Synonyms\" : []\n }\n </pre>"
operationId: SectionTermSearch
parameters:
- name: year
in: path
description: 'The 4 digit year. For example: 2025'
required: true
schema:
maxLength: 4
minLength: 4
type: string
default: ''
- name: quarter
in: path
description: 'The 1 digit quarter. For example: 0=Default, 1=winter, 2=spring, 3=summer, 4=autumn'
required: true
schema:
maxLength: 6
minLength: 6
type: string
default: ''
- name: page_size
in: query
description: ''
schema:
type: string
default: '1000'
- name: page_start
in: query
description: ''
schema:
type: string
default: ''
responses:
'400':
description: Section Term search does not support paging of less then 500 sections per request.
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/SectionTermSearchViewModel'
application/xml:
schema:
$ref: '#/components/schemas/SectionTermSearchViewModel'
text/xml:
schema:
$ref: '#/components/schemas/SectionTermSearchViewModel'
text/plain:
schema:
$ref: '#/components/schemas/SectionTermSearchViewModel'
application/json:
schema:
$ref: '#/components/schemas/SectionTermSearchViewModel'
text/json:
schema:
$ref: '#/components/schemas/SectionTermSearchViewModel'
'202':
description: Accepted
'301':
description: MovedPermanently
'302':
description: Found
'304':
description: NotModified
'401':
description: Identity '{identity}' is not authorized to access this resource.
'405':
description: MethodNotAllowed
'500':
description: InternalServerError
'503':
description: ServiceUnavailable
/v5/course/{year},{quarter},{curriculum_abbreviation},{course_number}/{section_id}/status:
get:
tags:
- Section
summary: Get the status of a course section
description: "<pre>\n {\n \"DisplayTitle\" : \"Section Status\",\n \"ews_guid\" : \"0FE09C52-834E-4F65-A35D-23D7D890C727\",\n \"LongDescription\" : \"Get the status of a course section including how many spots are open and whether \n students can register for the section.\",\n \"ShortDescription\" : \"Get the status of a course section\",\n \"OriginatingSchema\" : [ { \"source\":\"swssdb\" }, { \"source\":\"uweo\" }, { \"source\":\"irws\" } ],\n \"Notes\" : \"This resource requires any of the following ASTRA roles:\n - sws:Support\n - sws:GradeSubmitter\n - sws:SectionStatusReader\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID \",\n \"Links\" : [ \"https://metadata.uw.edu/Catalog/ViewItem/Term/studentdata.coursesection\" ],\n \"Synonyms\" : []\n }\n </pre>"
operationId: GetSectionStatus
parameters:
- name: year
in: path
description: 'The 4 digit year. For example: 2025'
required: true
schema:
type: string
- name: quarter
in: path
description: 'The 1 digit quarter. For example: 0=Default, 1=winter, 2=spring, 3=summer, 4=autumn'
required: true
schema:
type: string
- name: curriculum_abbreviation
in: path
description: ''
required: true
schema:
type: string
- name: course_number
in: path
description: ''
required: true
schema:
type: string
- name: section_id
in: path
description: ''
required: true
schema:
type: string
responses:
'404':
description: No section status found.
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/SectionStatusViewModel'
application/xml:
schema:
$ref: '#/components/schemas/SectionStatusViewModel'
text/xml:
schema:
$ref: '#/components/schemas/SectionStatusViewModel'
text/plain:
schema:
$ref: '#/components/schemas/SectionStatusViewModel'
application/json:
schema:
$ref: '#/components/schemas/SectionStatusViewModel'
text/json:
schema:
$ref: '#/components/schemas/SectionStatusViewModel'
'202':
description: Accepted
'301':
description: MovedPermanently
'302':
description: Found
'304':
description: NotModified
'401':
description: Identity '{identity}' is not authorized to access this resource.
'405':
description: MethodNotAllowed
'500':
description: InternalServerError
'503':
description: ServiceUnavailable
/v5/course/{year},{quarter},{curriculum_abbreviation},{course_number}/status:
get:
tags:
- Section
summary: Get the status of a course
description: "<pre>\n {\n \"DisplayTitle\" : \"Section Status List\",\n \"ews_guid\" : \"135BD797-FC81-42C3-954D-EF67D7869B41\",\n \"LongDescription\" : \"Get the information about a specific course's section statuses, searching by \n the associated course\",\n \"ShortDescription\" : \"Get the status of a course's sections\",\n \"OriginatingSchema\" : [ { \"source\":\"swssdb\" }, { \"source\":\"uweo\" }, { \"source\":\"irws\" } ],\n \"Notes\" : \"This resource requires any of the following ASTRA roles:\n - sws:Support\n - sws:GradeSubmitter\n - sws:SectionStatusReader\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID \",\n \"Links\" : [ \"https://metadata.uw.edu/Catalog/ViewItem/Term/studentdata.coursesection\" ],\n \"Synonyms\" : []\n }\n </pre>"
operationId: GetSectionStatusByCourse
parameters:
- name: year
in: path
description: 'The 4 digit year. For example: 2025'
required: true
schema:
type: string
- name: quarter
in: path
description: 'The 1 digit quarter. For example: 0=Default, 1=winter, 2=spring, 3=summer, 4=autumn'
required: true
schema:
type: string
- name: curriculum_abbreviation
in: path
description: ''
required: true
schema:
type: string
- name: course_number
in: path
description: ''
required: true
schema:
type: string
responses:
'404':
description: No section status found.
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/SectionStatusListViewModel'
application/xml:
schema:
$ref: '#/components/schemas/SectionStatusListViewModel'
text/xml:
schema:
$ref: '#/components/schemas/SectionStatusListViewModel'
text/plain:
schema:
$ref: '#/components/schemas/SectionStatusListViewModel'
application/json:
schema:
$ref: '#/components/schemas/SectionStatusListViewModel'
text/json:
schema:
$ref: '#/components/schemas/SectionStatusListViewModel'
'202':
description: Accepted
'301':
description: MovedPermanently
'302':
description: Found
'304':
description: NotModified
'401':
description: Identity '{identity}' is not authorized to access this resource.
'405':
description: MethodNotAllowed
'500':
description: InternalServerError
'503':
description: ServiceUnavailable
components:
schemas:
Line:
type: object
properties:
Text:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.tscom\" },\n { \"source\":\"UWEO.selSWSCourseSections.SectionComments\"}\n ],\n \"TechnicalDescription\": \"Time schedule generated comments\"\n }\n </pre>"
additionalProperties: false
description: "{\n \"DisplayTitle\" : \"Comment Line\"\n}"
SectionViewModel:
type: object
properties:
Term:
$ref: '#/components/schemas/TermResourceUri'
CourseCampus:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SWSSDB.sr_course_titles.course_branch\" },\n { \"source\":\"UWEO.selSWSCourse.CourseCampus\" }\n ],\n \"TechnicalDescription\": \"Campus that section is offered\"\n }\n </pre>"
CreditControl:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.crcl\" }\n ],\n \"TechnicalDescription\": \"Credit Control\"\n }\n </pre>"
RoomCapacity:
type: integer
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.rcap\" }\n ],\n \"TechnicalDescription\": \"Room capacity\"\n }\n </pre>"
format: int32
SummerTerm:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.sumt\" }\n ],\n \"TechnicalDescription\": \"Summer term\"\n }\n </pre>"
Course:
$ref: '#/components/schemas/CourseResourceUri'
SectionID:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.csid\" },\n { \"source\":\"UWEO.selSWSCourseSections.SectionID\"}\n ],\n \"TechnicalDescription\": \"Section ID\"\n }\n </pre>"
CourseTitle:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SWSSDB.sr_course_titles.course_title\" },\n { \"source\":\"UWEO.selSWSCourseSections.CourseTitle\"}\n ],\n \"TechnicalDescription\": \"Course title\"\n }\n </pre>"
CourseTitleLong:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SWSSDB.sr_course_titles.long_course_title\" },\n { \"source\":\"UWEO.selSWSCourseSections.CourseTitle\"}\n ],\n \"TechnicalDescription\": \"Course title long\"\n }\n </pre>"
CourseDescription:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SWSSDB.course.course_dscr\" }\n ],\n \"TechnicalDescription\": \"Course description\"\n }\n </pre>"
ClassWebsiteUrl:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.csurl\" },\n { \"source\":\"UWEO.selSWSCourseSections.ClassWebsiteUrl\"}\n ],\n \"TechnicalDescription\": \"Class website\"\n }\n </pre>"
Curriculum:
$ref: '#/components/schemas/CurriculumTimeScheduleUrlViewModel'
ResponsibleCourseNumber:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SWSSDB.sr_course_titles.resp_course_no\" }\n ],\n \"TechnicalDescription\": \"Responsible Course Number\"\n }\n </pre>"
ResponsibleCurriculumAbbreviation:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SWSSDB.sr_course_titles.resp_curric_abbr\" }\n ],\n \"TechnicalDescription\": \"Responsible Curriculum Abbreviation\"\n }\n </pre>"
FeeAmount:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.feeamt\" }\n ],\n \"TechnicalDescription\": \"Fee amount\"\n }\n </pre>"
FeeBudget:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.feebgt\" }\n ],\n \"TechnicalDescription\": \"Fee budget\"\n }\n </pre>"
FeeWorktag:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.feetag\" }\n ],\n \"TechnicalDescription\": \"Fee Worktag\"\n }\n </pre>"
FeeType:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.feetp\" }\n ],\n \"TechnicalDescription\": \"Fee Type\"\n }\n </pre>"
AddCodeRequired:
type: boolean
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.addreq\" }\n ],\n \"TechnicalDescription\": \"Add code required\"\n }\n </pre>"
EnrollmentRestrictions:
type: boolean
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.rqexind\" }\n ],\n \"TechnicalDescription\": \"Enrollment restrictions\"\n }\n </pre>"
FinancialAidEligible:
type: boolean
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.faelig\" }\n ],\n \"TechnicalDescription\": \"This field is DEPRECATED/INCORRECT. Please use FinancialAidEligibleDisplay.\"\n }\n </pre>"
FinancialAidEligibleDisplay:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SDB.SWI202.sect.faelig\" }\n ],\n \"TechnicalDescription\": \"Financial aid eligible display\"\n }\n </pre>"
Ind
# --- truncated at 32 KB (100 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/university-of-washington/refs/heads/main/openapi/university-of-washington-section-api-openapi.yml