Student Web Service (SWS) Enrollment Major API

Student Web Service (SWS) Enrollment Major API — a resource of the UW-IT Student Web Service, split out per resource by the API Evangelist refine step from the institution-published SWS v5 OpenAPI. Specification public; data gated by UW NetID / X.509 client certificate and named ASTRA roles.

Operations 2

GET /v5/enrollment/{year},{quarter},{regid}/major Get the enrolled major for a specific student #
PUT /v5/enrollment/{year},{quarter},{regid}/major Update the enrollment majors for a specific student #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/university-of-washington-enrollmentmajor-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

university-of-washington-enrollmentmajor-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Student Web Service (SWS) Enrollment Major 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: EnrollmentMajor
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/enrollment/{year},{quarter},{regid}/major:
    get:
      tags:
      - EnrollmentMajor
      summary: Get the enrolled major for a specific student
      description: "<pre>\n                {\n                    \"DisplayTitle\" : \"Enrollment Major Search\",\n                    \"ews_guid\" : \"5B4A9CC8-2744-4FCB-9977-495798098EE5\",\n                    \"LongDescription\" : \"Display the enrolled major for the specified year, quarter and regid\",\n                    \"ShortDescription\" : \"Get a specific enrolled major\",\n                    \"OriginatingSchema\" : [ { \"source\":\"swssdb\" }, { \"source\":\"uweo\" }, { \"source\":\"sdb\" }, { \"source\":\"irws\" } ],\n                    \"Notes\" : \"This resource requires any of the following ASTRA roles:\n                                 - sws:Support\n                                 - sws:MajorUpdater\n                               This resource supports the following authentication types:\n                                 - X.509 Certificate\n                                 - NetID \",\n                    \"Links\" : [ \"https://metadata.uw.edu/Catalog/ViewItem/Term/studentdata.major\" ],\n                    \"Synonyms\" : []\n                }\n                </pre>"
      operationId: GetEnrollmentMajor
      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: regid
        in: path
        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.
        required: true
        schema:
          type: string
      responses:
        '400':
          description: 'Invalid arg: year | Invalid arg: quarter | Invalid arg: regid ID | No student found for RegID | not a graduate student in requested year / quarter | one or more params are missing'
        '404':
          description: No major found.
        '200':
          description: OK
          content:
            text/html:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
            application/xml:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
            text/xml:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
            text/plain:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
            application/json:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
            text/json:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
        '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
    put:
      tags:
      - EnrollmentMajor
      summary: Update the enrollment majors for a specific student
      description: "<pre>\n                {\n                    \"DisplayTitle\" : \"Enrollment Major\",\n                    \"ews_guid\" : \"9F380A08-D597-44AD-87BE-A2B2B1B4F328\",\n                    \"LongDescription\" : \"Update the list of enrollment majors for a specific student\",\n                    \"ShortDescription\" : \"Update enrollment majors\",\n                    \"OriginatingSchema\" : [ { \"source\":\"swssdb\" }, { \"source\":\"sdb\" }, { \"source\":\"irws\" } ],\n                    \"Notes\" : \"This resource requires any of the following ASTRA roles:\n                                 - sws:Support\n                                 - sws:MajorUpdater\n                               This resource supports the following authentication types:\n                                 - X.509 Certificate\n                                 - NetID\n                               The put request allows you to make a change to an existing major in the returned results of the get request.\n                               You must PUT back the full set of majors, even if you are only changing one.\n                               The count of majors in the PUT must match the count of majors from the GET.\n                               Required/validated request header fields are x-uw-act-as (netid) and if-match(etag). \n                               You must include the ETag from the GET in the PUT. This ensures that you are working with the current representation.\n                               Required/validated fields in the payload for person is Student name.\n                               Required/validated fields in the payload for each major are Abbreviation, DegreeLevel, DegreeType, \n                               and Pathway. All other fields are ignored in the PUT.\",\n                    \"Links\" : [ \"https://metadata.uw.edu/Catalog/ViewItem/Term/studentdata.major\" ],\n                    \"Synonyms\" : []\n                }\n                </pre>"
      operationId: UpdateEnrollmentMajor
      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: regid
        in: path
        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.
        required: true
        schema:
          type: string
      requestBody:
        description: The information about the desired majors is in this targetViewModel
        content:
          application/json-patch+json:
            schema:
              $ref: '#/components/schemas/EnrollmentMajorListViewUpdateModel'
          application/json:
            schema:
              $ref: '#/components/schemas/EnrollmentMajorListViewUpdateModel'
          text/json:
            schema:
              $ref: '#/components/schemas/EnrollmentMajorListViewUpdateModel'
          application/*+json:
            schema:
              $ref: '#/components/schemas/EnrollmentMajorListViewUpdateModel'
        required: true
      responses:
        '201':
          description: Updated
          content:
            text/html:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
            application/xml:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
            text/xml:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
            text/plain:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
            application/json:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
            text/json:
              schema:
                $ref: '#/components/schemas/EnrollmentMajorListViewModel'
        '304':
          description: No changes detected in request.
        '400':
          description: 'Invalid arg: year | Invalid arg: quarter | invalid year/quarter (past quarter) | invalid year/quarter (transcript posted) | invalid year/quarter (not active reg quarter) | invalid year/quarter (no autumn changes prior to last day summer) | year/quarter must be after admit year/quarter | student not currently enrolled  | not a graduate student  in requested year/quarter | no changes specified | invalid current majors | current major not found | duplicate new major inputs | requested new major/pathway is invalid | requested new major/pathway/deglvl/type is invalie | new major already present | inputs result in duplicate majors | HTTP if-match header is empty; it is required for a PUT request. | Invalid arg: direct caller ID | x-uw-act-as is required. | No student found for RegID | Number of majors from the GET does not match number of majors in the PUT | major cannot be in a different position in the list'
        '404':
          description: Term not found
        '412':
          description: if-match ETag does not match current Etag
        '202':
          description: Accepted
        '301':
          description: MovedPermanently
        '302':
          description: Found
        '401':
          description: Identity '{identity}' is not authorized to access this resource.
        '405':
          description: MethodNotAllowed
        '500':
          description: InternalServerError
        '503':
          description: ServiceUnavailable
components:
  schemas:
    PersonResourceUri:
      type: object
      properties:
        Name:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"IRWS.identity.uwPersonPrefferredName\" },\n                    { \"source\":\"IRWS.identity.uwPersonRegisteredName\" }\n                ],\n                \"TechnicalDescription\": \"This field is resource specific\"\n            }\n            </pre>"
        RegID:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"IRWS.identity.regid\" }\n                ],\n                \"TechnicalDescription\": \"UW Registration ID. This field is resource specific\"\n            }\n            </pre>"
        Pronouns:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"IRWS.identity.uwPersonPronoun\" }\n                ],\n                \"TechnicalDescription\": \"\"\n            }\n            </pre>"
        Href:
          type:
          - string
          - 'null'
      additionalProperties: false
      description: "{\n    \"DisplayTitle\" : \"Person Resource URI\",\n    \"TargetSchema\" : [{\"target\" : \"SWS.Person\"}],\n    \"TargetOperationId\" : [\"GetPerson\"]\n}"
    MajorViewModelRetro:
      type: object
      properties:
        Abbreviation:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.sr_major_code.major_abbr\" }\n                ],\n                \"TechnicalDescription\": \"Abbreviation\"\n            }\n            </pre>"
        Campus:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.sys_tbl_25_campus.branch_name\" }\n                ],\n                \"TechnicalDescription\": \"Campus name\"\n            }\n            </pre>"
        DegreeLevel:
          type: integer
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.student_1_college_major.deg_level\" },\n                    { \"source\":\"SWSSDB.registration_regis_col_major.regis_deg_level\" },\n                    { \"source\":\"SWSSDB.transcript_tran_col_major.tran_deg_level\" }\n                ],\n                \"TechnicalDescription\": \"Degree level\"\n            }\n            </pre>"
          format: int32
        DegreeName:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.sr_degree.deg_title\" }\n                ],\n                \"TechnicalDescription\": \"Degree name\"\n            }\n            </pre>"
        DegreeType:
          type: integer
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.student_1_college_major.deg_type\" },\n                    { \"source\":\"SWSSDB.registration_regis_col_major.regis_deg_type\" },\n                    { \"source\":\"SWSSDB.transcript_tran_col_major.tran_deg_type\" }\n                ],\n                \"TechnicalDescription\": \"Degree type\"\n            }\n            </pre>"
          format: int32
        FullName:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.sr_major_code.major_full_nm\" }\n                ],\n                \"TechnicalDescription\": \"Major full name\"\n            }\n            </pre>"
        MajorName:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.sr_major_code.major_name\" }\n                ],\n                \"TechnicalDescription\": \"Major name\"\n            }\n            </pre>"
        Pathway:
          type: integer
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.registration_regis_col_major.regis_pathway\" },\n                    { \"source\":\"SWSSDB.student_1_college_major.pathway\"},\n                    { \"source\":\"SWSSDB.transcript_tran_col_major.tran_pathway\" }\n                ],\n                \"TechnicalDescription\": \"Major pathway\"\n            }\n            </pre>"
          format: int32
        ShortName:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.sr_major_code.major_short_nm\" }\n                ],\n                \"TechnicalDescription\": \"Major short name\"\n            }\n            </pre>"
      additionalProperties: false
      description: "{\n    \"DisplayTitle\" : \"Major Model\",\n    \"TargetSchema\" : [{\"target\" : \"SWS.Enrollment\"}]\n}"
    TermResourceUri:
      type: object
      properties:
        Href:
          type:
          - string
          - 'null'
        Year:
          type: integer
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.sr_major_code.major_last_yr\" },\n                    { \"source\":\"SWSSDB.sr_major_code.major_first_yr\" },\n                    { \"source\":\"SWSSDB.sys_tbl_39_calendar.table_key\" },\n                    { \"source\":\"SWSSDB.student_1.last_yr_enrolled\" },\n                    { \"source\":\"SDB.SWI610.trm/yr\" },\n                    { \"source\":\"SWSSDB.sr_course_titles.first_eff_yr\" },\n                    { \"source\":\"UWEO.selSWSRegistrations.FirstEffectiveTerm/Year\"}\n                ],\n                \"TechnicalDescription\": \"Year for the given term\"\n            }\n            </pre>"
          format: int32
        Quarter:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SWSSDB.sr_major_code.major_last_qtr\" },\n                    { \"source\":\"SWSSDB.sr_major_code.major_first_qtr\" },\n                    { \"source\":\"SWSSDB.sys_tbl_39_calendar.table_key\" },\n                    { \"source\":\"SWSSDB.student_1.last_qtr_enrolled\" },\n                    { \"source\":\"SDB.SWI610.trm/qtr\" },\n                    { \"source\":\"SWSSDB.sr_course_titles.first_eff_qtr\" },\n                    { \"source\":\"UWEO.selSWSRegistrations.FirstEffectiveTerm/Quarter\"}\n                ],\n                \"TechnicalDescription\": \"Quarter for the given term\"\n            }\n            </pre>"
      additionalProperties: false
      description: "{\n    \"DisplayTitle\" : \"Term Resource URI\",\n    \"TargetSchema\" : [{\"target\" : \"SWS.Term\"}],\n    \"TargetOperationId\" : [\"GetTerm\"]\n}"
    EnrollmentMajorListViewUpdateModel:
      type: object
      properties:
        StudentName:
          type:
          - string
          - 'null'
        Person:
          $ref: '#/components/schemas/PersonResourceUri'
        Majors:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/MajorViewModelRetro'
        StudentSystemKey:
          type:
          - string
          - 'null'
        RegID:
          type:
          - string
          - 'null'
        Term:
          $ref: '#/components/schemas/TermResourceUri'
      additionalProperties: false
    EnrollmentMajorListViewModel:
      type: object
      properties:
        StudentName:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SDB.SWI610.trm/mjr.nm\" }\n                ],\n                \"TechnicalDescription\": \"Student Name\"\n            }\n            </pre>"
        Person:
          $ref: '#/components/schemas/PersonResourceUri'
        Majors:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/MajorViewModelRetro'
        StudentSystemKey:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"SDB.SWI610.trm/mjr.sysk\" }\n                ],\n                \"TechnicalDescription\": \"Student System Key\"\n            }\n            </pre>"
        RegID:
          type:
          - string
          - 'null'
          description: "<pre>\n            {\n                \"OriginatingSchema\" : [\n                    { \"source\":\"IRWS.identity.regid\" }\n                ],\n                \"TechnicalDescription\": \"UW Registration ID\"\n            }\n            </pre>"
        Term:
          $ref: '#/components/schemas/TermResourceUri'
      additionalProperties: false
      description: "{\n    \"DisplayTitle\" : \"Enrollment Major List Model\",\n    \"TargetSchema\" : [{\"target\" : \"SWS.Enrollment\"}]\n}"