University of Washington Agentic Access
University of Washington exposes 56 API operations that an AI agent could call, of which 5 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.
By consequence: 51 read, 4 write, and 1 safety-critical.
1 operation are classed safety-critical and should require human-in-the-loop approval at runtime.
Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.
By consequence
Highest-consequence actions
The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.
| Method | Path | Consequence | Human-in-loop |
|---|---|---|---|
| DELETE | /v5/degreeauditexception/{subtype}/{controlcode}/{sequenceno}/{regid} | safety-critical | required |
Source
Agentic Access
generated: '2026-07-15'
method: generated
source: openapi/university-of-washington-idcard-web-service.yaml, openapi/university-of-washington-student-web-service.yaml
description: Recommended x-agentic-access execution contracts, classified heuristically from
the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind
audience per deployment. See research/curity/agentic-governance/.
summary:
operations: 56
by_action_class:
connected: 51
acting: 5
by_consequence:
read: 51
write: 4
safety-critical: 1
human_in_the_loop_required: 1
operations:
- path: /v1/card
method: get
operationId: GetCards
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/photo/{reg_Id}
method: get
operationId: Photo
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/photo/{reg_Id}.{file_extension}
method: get
operationId: PhotoWithExtension
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1/photo
method: get
operationId: PhotoSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v1
method: get
operationId: GetResources
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /
method: get
operationId: GetVersions
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/campus
method: get
operationId: CampusSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/college
method: get
operationId: CollegeSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/course/{year},{quarter},{curriculum_abbreviation},{course_number}
method: get
operationId: GetCourse
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/course
method: get
operationId: CourseSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/curriculum
method: get
operationId: CurriculumSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/degree/{major_abbr},{pathway},{level},{type},{year},{quarter}
method: get
operationId: GetDegree
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/degree
method: get
operationId: DegreeSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/degreeaudit
method: post
operationId: DegreeAuditCreate
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v5/degreeaudit
method: get
operationId: DegreeAuditSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/degreeaudit/{campus},{majorabbreviation},{pathway},{degreelevel},{degreetype},{regid}
method: get
operationId: GetDegreeAudit
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/degreeauditexception
method: post
operationId: DegreeAuditExceptionCreate
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v5/degreeauditexception
method: get
operationId: DegreeAuditExceptionSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/degreeauditexception/{regid}
method: get
operationId: GetDegreeAuditException
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/degreeauditexception/{subtype}/{controlcode}/{sequenceno}/{regid}
method: delete
operationId: DegreeAuditExceptionDelete
x-agentic-access:
action-class: acting
consequence: safety-critical
subject: required
audience: null
token:
max-ttl: 120
exchange: true
purpose-required: true
proof-of-possession: true
escalation:
human-in-the-loop: required
audit: required
- path: /v5/degreeauditprogram
method: get
operationId: DegreeAuditProgramSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/degreeauditstatus/{campus},{majorabbreviation},{pathway},{degreelevel},{degreetype},{regid},{jobid}
method: get
operationId: GetDegreeAuditStatus
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/department
method: get
operationId: DepartmentSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/enrollment/{year},{quarter},{reg_id}
method: get
operationId: GetEnrollment
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/enrollment
method: get
operationId: EnrollmentSearchFull
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/enrollment/{year},{quarter},{regid}/major
method: get
operationId: GetEnrollmentMajor
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/enrollment/{year},{quarter},{regid}/major
method: put
operationId: UpdateEnrollmentMajor
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v5/majorstudents
method: get
operationId: GetMajorStudents
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/notice/{uwregid}
method: get
operationId: GetNotice
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/person/{reg_id}/registrationblock
method: get
operationId: GetRegistrationBlocks
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/person/{reg_id}/registrationblock
method: put
operationId: PutRegistrationBlocks
x-agentic-access:
action-class: acting
consequence: write
subject: required
audience: null
token:
max-ttl: 900
escalation:
human-in-the-loop: conditional
triggers:
- abnormal
- high-value
audit: required
- path: /v5/person/{reg_id}/degree
method: get
operationId: GetEarnedDegrees
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/person/{reg_id}/advisers
method: get
operationId: GetAcademicAdvisers
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/person/{reg_id}
method: get
operationId: GetPerson
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/person
method: get
operationId: PersonSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/person/{reg_id}/financial
method: get
operationId: GetPersonalFinancial
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/program/{major_abbr},{pathway},{year},{quarter}
method: get
operationId: GetProgram
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/program
method: get
operationId: ProgramSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/registration/{year},{quarter},{curriculum_abbreviation},{course_number},{section_id},{reg_id},{duplicate_code}
method: get
operationId: GetRegistration
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/registration/{year},{quarter},{curriculum_abbreviation},{course_number},{section_id},{reg_id},
method: get
operationId: GetRegistrationNoDupeCode
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/registration
method: get
operationId: RegistrationSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5
method: get
operationId: GetSWSResources
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/schedule/{reg_id}
method: get
operationId: GetCurrentSchedule
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/schedule/{year},{quarter},{reg_id}
method: get
operationId: GetSchedule
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/course/{year},{quarter},{curriculum_abbreviation},{course_number}/{section_id}
method: get
operationId: GetSection
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/section
method: get
operationId: SectionSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/section/{year},{quarter}
method: get
operationId: SectionTermSearch
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/course/{year},{quarter},{curriculum_abbreviation},{course_number}/{section_id}/status
method: get
operationId: GetSectionStatus
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/course/{year},{quarter},{curriculum_abbreviation},{course_number}/status
method: get
operationId: GetSectionStatusByCourse
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/term/current
method: get
operationId: GetTermCurrent
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/term/next
method: get
operationId: GetTermNext
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/term/previous
method: get
operationId: GetTermPrevious
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/term/{year},{quarter}
method: get
operationId: GetTerm
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/testscore/{regID}
method: get
operationId: GetTestScore
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /v5/testscore/{testType},{regID}
method: get
operationId: GetTestScoreWithTestType
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none
- path: /
method: get
operationId: GetVersions
x-agentic-access:
action-class: connected
consequence: read
subject: optional
token:
max-ttl: 3600
audit: none