University of Washington · Agentic Access

University of Washington Agentic Access

x-agentic-access generated

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.

EducationHigher EducationUniversityResearchUnited StatesStudent InformationIdentityLibraryOpen Data
Operations: 56 Acting: 5 Human-in-the-loop: 1 Method: generated

By consequence

read 51 write 4 safety-critical 1

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.

MethodPathConsequenceHuman-in-loop
DELETE /v5/degreeauditexception/{subtype}/{controlcode}/{sequenceno}/{regid} safety-critical required

Source

Agentic Access

Raw ↑
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