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) Person 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: Person
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/person/{reg_id}/registrationblock:
get:
tags:
- Person
summary: Get a student's registration blocks
description: "<pre>\n {\n \"DisplayTitle\" : \"Registration Blocks\",\n \"ews_guid\" : \"2dc0dda5-6ddb-4794-8a59-765214234fd6\",\n \"LongDescription\" : \"Get a student's registration blocks by their reg_id\",\n \"ShortDescription\" : \"Get a student's registration blocks by their reg_id\",\n \"OriginatingSchema\" : [ { \"source\":\"sdb\" },\n \"Notes\" : \"This resource requires any of the following ASTRA roles:\n - sws:Support\n - sws:RegistrationBlockerReader\n - sws:RegistrationBlockerWriter\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID \",\n \"Links\" : [],\n \"Synonyms\" : []\n }\n </pre>"
operationId: GetRegistrationBlocks
parameters:
- name: reg_id
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: reg_id'
'404':
description: Student system key not found for uwregid
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
application/xml:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
text/xml:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
text/plain:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
application/json:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
text/json:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
'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:
- Person
summary: Update a student's registration blocks
description: "<pre>\n {\n \"DisplayTitle\" : \"Update Registration Blocks\",\n \"ews_guid\" : \"316f881d-1ad4-49ce-8489-56f640a69d4e\",\n \"LongDescription\" : \"Update a student's registration blocks by their reg_id\",\n \"ShortDescription\" : \"Update a student's registration blocks by their reg_id\",\n \"OriginatingSchema\" : [ { \"source\":\"sdb\" },\n \"Notes\" : \"This resource requires any of the following ASTRA roles:\n - sws:Support\n - sws:RegistrationBlockerWriter\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID \",\n \"Links\" : [],\n \"Synonyms\" : []\n }\n </pre>"
operationId: PutRegistrationBlocks
parameters:
- name: reg_id
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: ''
content:
application/json-patch+json:
schema:
$ref: '#/components/schemas/RegistrationBlockViewUpdateModel'
application/json:
schema:
$ref: '#/components/schemas/RegistrationBlockViewUpdateModel'
text/json:
schema:
$ref: '#/components/schemas/RegistrationBlockViewUpdateModel'
application/*+json:
schema:
$ref: '#/components/schemas/RegistrationBlockViewUpdateModel'
required: true
responses:
'400':
description: No StudentSystemKey found for RegID
'412':
description: if-match ETag does not match current Etag
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
application/xml:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
text/xml:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
text/plain:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
application/json:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
text/json:
schema:
$ref: '#/components/schemas/RegistrationBlockViewModel'
'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/person/{reg_id}/degree:
get:
tags:
- Person
summary: Search for a student's earned degrees
description: "<pre>\n {\n \"DisplayTitle\" : \"Degrees Earned\",\n \"ews_guid\" : \"3d62835e-53c7-4b18-9311-6a819f7a5f9d\",\n \"LongDescription\" : \"Search for a student's earned degrees by their reg_id\",\n \"ShortDescription\" : \"Search for a student's earned degrees s by their reg_id\",\n \"OriginatingSchema\" : [ { \"source\":\"swssdb\" }, { \"source\":\"irws\" } ],\n \"Notes\" : \"This resource requires any of the following ASTRA roles:\n - sws:Support\n - sws:GradeSubmitter\n - sws:UnitReader\n - sws:StudentRestrictedReader\n - sws:StudentDisabilityReader\n - sws:StudentEthnicityReader\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID \",\n \"Links\" : [],\n \"Synonyms\" : []\n }\n </pre>"
operationId: GetEarnedDegrees
parameters:
- name: reg_id
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
- name: deg_status
in: query
description: ''
schema:
type: string
default: '9'
responses:
'400':
description: 'Invalid arg: reg_id'
'404':
description: No earned degrees found for reg ID
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/EarnedDegreeListViewModel'
application/xml:
schema:
$ref: '#/components/schemas/EarnedDegreeListViewModel'
text/xml:
schema:
$ref: '#/components/schemas/EarnedDegreeListViewModel'
text/plain:
schema:
$ref: '#/components/schemas/EarnedDegreeListViewModel'
application/json:
schema:
$ref: '#/components/schemas/EarnedDegreeListViewModel'
text/json:
schema:
$ref: '#/components/schemas/EarnedDegreeListViewModel'
'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/person/{reg_id}/advisers:
get:
tags:
- Person
summary: Search for a student's academic advisers
description: "<pre>\n {\n \"DisplayTitle\" : \"Academic Advisers\",\n \"ews_guid\" : \"A27E0900-CA26-4722-B192-529E21170E39\",\n \"LongDescription\" : \"Search for a student's academic advisers by their reg_id\",\n \"ShortDescription\" : \"Search for a student's academic advisers by their reg_id\",\n \"OriginatingSchema\" : [ { \"source\":\"aadb\" }, { \"source\":\"irws\" } ],\n \"Notes\" : \"This resource requires any of the following ASTRA roles:\n - sws:Support\n - sws:GradeSubmitter\n - sws:UnitReader\n - sws:StudentRestrictedReader\n - sws:StudentDisabilityReader\n - sws:StudentEthnicityReader\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID\n The academic adviser resource describes the academic advisers for a student. If the person is a not student \n then there will be no records found. Adviser data can come various sources such as programs (Undergraduate Advising, Honors,\n Office of Minority Affairs, etc.) as well as specific departments (Engineering, Arts, etc.).\",\n \"Links\" : [],\n \"Synonyms\" : []\n }\n </pre>"
operationId: GetAcademicAdvisers
parameters:
- name: reg_id
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: reg_id'
'404':
description: No academic advisers found for reg ID
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/AcademicAdvisersListViewModel'
application/xml:
schema:
$ref: '#/components/schemas/AcademicAdvisersListViewModel'
text/xml:
schema:
$ref: '#/components/schemas/AcademicAdvisersListViewModel'
text/plain:
schema:
$ref: '#/components/schemas/AcademicAdvisersListViewModel'
application/json:
schema:
$ref: '#/components/schemas/AcademicAdvisersListViewModel'
text/json:
schema:
$ref: '#/components/schemas/AcademicAdvisersListViewModel'
'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/person/{reg_id}:
get:
tags:
- Person
summary: Search for a person by their reg_id
description: "<pre>\n {\n \"DisplayTitle\" : \"Person\",\n \"ews_guid\" : \"A27E0900-CA26-4722-B192-529E21170E39\",\n \"LongDescription\" : \"Search for a person by their reg_id\",\n \"ShortDescription\" : \"Search for a person by their reg_id\",\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 - sws:StudentRestrictedReader\n - sws:StudentDisabilityReader\n - sws:StudentEthnicityReader\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID.\n The person resource describes a UW person in an academic-centric way. If the person is a student \n the person's name will be the name from the Student System. If the person is a faculty\n that name will be provided by the HR system.\",\n \"Links\" : [ \"https://metadata.uw.edu/Catalog/ViewItem/Term/studentdata.uwstudent\" ],\n \"Synonyms\" : []\n }\n </pre>"
operationId: GetPerson
parameters:
- name: reg_id
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:
maxLength: 32
minLength: 32
type: string
responses:
'400':
description: 'Invalid arg: reg_id'
'404':
description: No person with reg ID found.
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/PersonViewModel'
application/xml:
schema:
$ref: '#/components/schemas/PersonViewModel'
text/xml:
schema:
$ref: '#/components/schemas/PersonViewModel'
text/plain:
schema:
$ref: '#/components/schemas/PersonViewModel'
application/json:
schema:
$ref: '#/components/schemas/PersonViewModel'
text/json:
schema:
$ref: '#/components/schemas/PersonViewModel'
'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/person:
get:
tags:
- Person
summary: Search for people that match the supplied parameters
description: "<pre>\n {\n \"DisplayTitle\" : \"Person Search\",\n \"ews_guid\" : \"FEA18F19-6500-4890-9F1D-B0A096E9FE72\",\n \"LongDescription\" : \"Search for a person record by an identifier such as reg_id, net_id, student_number, employee_id, \n or student system key\",\n \"ShortDescription\" : \"Search for a person record by an identifier\",\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 - sws:StudentRestrictedReader\n - sws:StudentDisabilityReader\n - sws:StudentEthnicityReader\n This resource supports the following authentication types:\n - X.509 Certificate\n - NetID\n One and only one of the parameters needs to be supplied.\",\n \"Links\" : [ \"https://metadata.uw.edu/Catalog/ViewItem/Term/studentdata.uwstudent\" ],\n \"Synonyms\" : []\n }\n </pre>"
operationId: PersonSearch
parameters:
- 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: net_id
in: query
description: ''
schema:
type: string
default: ''
- name: student_number
in: query
description: ''
schema:
type: string
default: ''
- name: employee_id
in: query
description: ''
schema:
type: string
default: ''
- name: student_system_key
in: query
description: ''
schema:
type: string
default: ''
- name: changed_since_date
in: query
description: ''
schema:
type: string
default: ''
- name: verbose
in: query
description: Choose on or true to enable. Otherwise off or false.
schema:
type: string
default: ''
- name: page_size
in: query
description: ''
schema:
type: string
default: ''
- name: page_start
in: query
description: ''
schema:
type: string
default: ''
responses:
'400':
description: 'Invalid arg: reg ID | Invalid arg: net ID | Invalid arg: student number | Invalid arg: employee ID | Invalid arg: student system key | Only one search criteria may be provided. | You must enter at least one characters for first_name. | You must enter at least two characters for last_name. | You cannot search by only birth_date. Searching by that field requires either last_name and/or first_name. | If you enter a value for birth_date, you may not enter a value for reg_id, net_id, student_number, employee_id and/or student_system_key. | The request has exceeded the maximum amount of results allowed. Please refine your search. | Error in search criteria'
'500':
description: Error in search criteria | InternalServerError
'200':
description: OK
content:
text/html:
schema:
$ref: '#/components/schemas/PersonSearchViewModel'
application/xml:
schema:
$ref: '#/components/schemas/PersonSearchViewModel'
text/xml:
schema:
$ref: '#/components/schemas/PersonSearchViewModel'
text/plain:
schema:
$ref: '#/components/schemas/PersonSearchViewModel'
application/json:
schema:
$ref: '#/components/schemas/PersonSearchViewModel'
text/json:
schema:
$ref: '#/components/schemas/PersonSearchViewModel'
'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
'503':
description: ServiceUnavailable
components:
schemas:
PersonFinancialResourceUri:
type: object
properties:
RegID:
type:
- string
- 'null'
Href:
type:
- string
- 'null'
additionalProperties: false
description: "{\n \"DisplayTitle\" : \"Person Financial Resource URI\",\n \"TargetSchema\" : [{\"target\" : \"SWS.PersonFinancial\"}],\n \"TargetOperationId\" : [\"GetPersonalFinancial\"]\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}"
TestScoreResourceUri:
type: object
properties:
RegID:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"IRWS.identity.regid\" }\n ],\n \"TechnicalDescription\": \"UW Registration ID\"\n }\n </pre>"
Href:
type:
- string
- 'null'
additionalProperties: false
description: "{\n \"DisplayTitle\" : \"Test Score Resource URI\",\n \"TargetSchema\" : [{\"target\" : \"SWS.Test\"}],\n \"TargetOperationId\" : [\"GetTestScore\"]\n}"
PersonDegreeResourceUri:
type: object
properties:
RegID:
type:
- string
- 'null'
Href:
type:
- string
- 'null'
additionalProperties: false
description: "{\n \"DisplayTitle\" : \"Person Degree Resource URI\",\n \"TargetSchema\" : [{\"target\" : \"SWS.PersonDegree\"}],\n \"TargetOperationId\" : [\"GetEarnedDegrees\"]\n}"
PersonViewModelBase:
type: object
additionalProperties: false
description: "{\n \"DisplayTitle\" : \"Person Model\",\n \"RuntimeTypes\" : [\"PersonViewModel\"]\n}"
EthnicCodeDescriptionViewModel:
type: object
properties:
Code:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"SWSSDB.student_1_ethnic.ethnic\" }\n ],\n \"TechnicalDescription\": \"Code\"\n }\n </pre>"
Description:
type:
- string
- 'null'
additionalProperties: false
description: "{\n \"DisplayTitle\" : \"Ethnic Code Description Model\"\n}"
AcademicAdviserViewModel:
type: object
properties:
AdvisingFullName:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"IRWS.identity.displayName\" }\n ],\n \"TechnicalDescription\": \"Advising full name\"\n }\n </pre>"
AdvisingPronouns:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"IRWS.identity.uwPersonPronoun\" }\n ],\n \"TechnicalDescription\": \"\"\n }\n </pre>"
AdvisingEmailAddress:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"IRWS.identity.UWEWPEmail\" },\n { \"source\":\"AADB.advisers.override_email\" }\n ],\n \"TechnicalDescription\": \"Advising email address\"\n }\n </pre>"
AdvisingPhoneNumber:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"IRWS.identity.UWEWPPhone\" },\n { \"source\":\"AADB.advisers.override_phone\" }\n ],\n \"TechnicalDescription\": \"Advising phone number\"\n }\n </pre>"
AdvisingUWNetID:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"IRWS.identity.uwNetID\" },\n { \"source\":\"AADB.assigned_advisers.adviser_netid\" }\n ],\n \"TechnicalDescription\": \"Advising UWNetID\"\n }\n </pre>"
AdvisingRegID:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"IRWS.identity.regid\" }\n ],\n \"TechnicalDescription\": \"Advising UW Registration ID\"\n }\n </pre>"
AdvisingProgram:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"AADB.sources.source_desc\" }\n ],\n \"TechnicalDescription\": \"Advising Program\"\n }\n </pre>"
BookingUrl:
type:
- string
- 'null'
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"AADB.advisers.booking_url\" }\n ],\n \"TechnicalDescription\": \"Booking Url\"\n }\n </pre>"
IsDepartmentAdviser:
type: boolean
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"hardcoded\" }\n ],\n \"TechnicalDescription\": \"Denotes whether or not this record is for a departmental adviser\"\n }\n </pre>"
StudentAdvisingIsActive:
type: boolean
description: "<pre>\n {\n \"OriginatingSchema\" : [\n { \"source\":\"AADB.assigned_advisers.active\" }\n ],\n \"TechnicalDescription\": \"Student Advising is Active\"\n }\n </pre>"
Metadata:
type:
- string
- 'null'
readOnly: true
RepositoryTimeStamp:
type:
- string
- 'null'
additionalProperties: false
# --- truncated at 32 KB (80 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/university-of-washington/refs/heads/main/openapi/university-of-washington-person-api-openapi.yml