Skip to content

Roles API ​

Base URL: /api/v1/roles

Manage role assignments including students, teachers, advisors, and applicants.

Important: Roles are derived from actions, not created directly. See Role Assignment Business Logic at the bottom.

Endpoints Overview ​

Students ​

MethodEndpointDescription
GET/studentsList students
GET/students/searchSearch students
GET/students/lookup/by-person/{personUUID}Find the student record for a person
POST/studentsCreate student
PATCH/students/{studentID}Update student
DELETE/students/{studentID}Delete student
GET/students/{studentID}/majorsGet student majors
GET/students/{studentID}/majors/activeGet currently active majors
POST/students/{studentID}/majorsAdd a major
DELETE/students/{studentID}/majors/{majorID}Remove a major
GET/students/{studentID}/minorsGet student minors
GET/students/{studentID}/minors/activeGet currently active minors
POST/students/{studentID}/minorsAdd a minor
DELETE/students/{studentID}/minors/{minorID}Remove a minor
GET/students/{studentID}/scheduleGet the student's schedule

There is no GET /students/{studentID}

A single student cannot be fetched by ID. PATCH and DELETE on that path exist, but no GET — read one student out of GET /students or GET /students/search, or look them up by person with GET /students/lookup/by-person/{personUUID}. Enrollments, GPA and transcripts are not here either: see Registration and Grading.

Student majors and minors ​

A student's programme of study is recorded as majors and minors, not as a separate "program" resource.

MethodEndpointDescription
POST/student-majorsAssign a major to a student
POST/student-majors/{studentMajorID}/emphasesAdd an emphasis to a student major
POST/student-minorsAssign a minor to a student

Teachers ​

MethodEndpointDescription
GET/teachersList teachers
GET/teachers/{id}Get teacher details
PATCH/teachers/{id}Update teacher
GET/teachers/{id}/sectionsGet assigned sections

Advisors ​

MethodEndpointDescription
GET/advisorsList advisors
GET/advisors/availableList advisors available for assignment
GET/advisors/candidatesSearch people who could advise, including those with no advisor record yet
GET/advisors/lookup/by-person/{personUUID}Find the advisor record for a person
GET/advisors/lookup/by-person/{personUUID}/allAll advisor records for a person
GET/advisors/{advisorID}/adviseesGet assigned students
POST/advisorsCreate advisor
PATCH/advisors/{advisorID}Update advisor
DELETE/advisors/{advisorID}Delete advisor
POST/student-advisorsAssign an advisor to a student

There is no GET /advisors/{advisorID}; read one out of GET /advisors.

/advisors and /advisors/candidates answer different questions ​

GET /advisors lists people who hold an advisors row. GET /advisors/candidates answers who could advise? — it searches faculty and staff whether or not they have ever advised anyone, and it backs the advisor picker on the cohort screens.

ParameterTypeDescription
searchstringType-ahead term
limitintegerDefaults to 50; anything <= 0 or > 200 is clamped to 50

The cap is a guard rather than paging — the caller is a type-ahead, and a pool of a couple of thousand is not something a person scrolls. There is no offset.

Picking a candidate who has never advised does not require creating an advisor record first: assigning them is the assignment that creates one, which is the project's role model applied literally. A previously deactivated row is reactivated rather than duplicated, because advisors has no unique index on person_id and a second row would be accepted silently and then show the same name twice in every picker.

Applicants ​

MethodEndpointDescription
GET/applicantsList applicants
GET/applicants/{id}Get applicant details
PATCH/applicants/{id}Update application status

No /programs or /program-catalogs endpoints

These were documented here but exist nowhere in the API. Degrees, majors and minors are served by Academic; what a given student is enrolled in is served by the major and minor endpoints above.

Student Status History ​

MethodEndpointDescription
GET/students/{studentID}/admission-status-historyList admission status history
POST/students/{studentID}/admission-status-historyCreate an admission status entry
DELETE/students/{studentID}/admission-status-history/{historyID}Delete an entry

Student Academic Status History ​

MethodEndpointDescription
GET/students/{studentID}/academic-status-historyList academic status history
POST/students/{studentID}/academic-status-historyCreate academic status history entry

Cohorts ​

MethodEndpointDescription
GET/cohortsList cohorts
POST/cohortsCreate cohort
GET/cohorts/{id}Get cohort details
PATCH/cohorts/{id}Update cohort
DELETE/cohorts/{id}Delete cohort
GET/cohorts/{id}/studentsList students in cohort
GET/cohorts/dropdownCohorts as picker options
GET/cohorts/{cohortID}/available_studentsStudents not yet in the cohort
POST/cohorts/{cohortID}/assign_studentsAdd students to the cohort (batch)
POST/cohorts/{cohortID}/remove_studentsRemove students from the cohort (batch)
POST/cohorts/{cohortID}/syncForce the membership sync an auto-sync cohort otherwise gets hourly
GET/cohorts/{cohortID}/advisorsList the cohort's advisors (dated)
POST/cohorts/{cohortID}/advisorsAssign an advisor to the cohort
POST/cohorts/{cohortID}/advisors/{cohortAdvisorID}/endEnd-date a cohort advisor
POST/cohorts/{cohortID}/bulk_assignAssign majors, minors and one advisor to every open member (below)

Bulk assignment ​

POST /cohorts/{cohortID}/bulk_assign (migration 277) applies programs and/or one advisor to every open member of a cohort, in one transaction. Only cohorts whose type has allows_bulk_assign accept it; any other answers 409. Besides ADMIN.COHORTS on the route, the caller needs EDIT on STUDENTS.SEARCH to assign majors or minors and EDIT on ADVISING.ADVISORS to assign an advisor (403 otherwise).

json
POST /api/v1/roles/cohorts/42/bulk_assign
{
  "major_ids": [10845],
  "minor_ids": [],
  "start_date": "2026-09-21",
  "end_current_majors": true,
  "advisor_id": 311,
  "advisor_is_primary": true,
  "end_current_primary_advisor": true
}
FieldMeaning
major_ids, minor_idsPrograms to add. One a student already holds is left alone
bulletin_id, start_dateCatalog and start date of the new rows; start_date defaults to today
end_current_majors, end_current_minorsEnd-date (never delete) what each student holds now. With end_current_majors, the first major in major_ids becomes the primary
advisor_id or advisor_person_idThe advisor, by advisor record or by person (a person who is not yet an advisor)
advisor_role_id, advisor_is_primaryThe assignment's advisor role, and whether it is primary
end_current_primary_advisorEnd each student's current primary advisor. Only valid with a primary assignment; without it the old primary stays as a non-primary advisor
student_idsNarrow the run to some of the open members. Empty means all

At least one major, minor or advisor is required. The response counts what was done -- members, students_updated, majors_added, minors_added, majors_ended, minors_ended, advisors_assigned, primary_advisors_ended -- and lists in skipped the students for whom nothing changed. Program-change emails go to each student and their advisors after the commit.

Cohort membership is dated and multi-valued. Colleague's own cohorts arrive through the student_cohorts step of migrate-daily and are marked source = 'ODS'; the importer never touches a cohort or membership the API created.

Cohort Types ​

Configures what a kind of cohort means: uses_dates, allow_multiple, requires_major, unique_per_level, requires_campus, requires_start_term, supports_auto_sync and allows_bulk_assign are behavioural, not decorative, and the service enforces them. Reads and writes are split deliberately -- maintaining cohorts is not the same authority as redefining what kinds exist.

MethodEndpointDescription
GET/cohort-typesList cohort types
GET/cohort-types/{cohortTypeID}Get one cohort type
POST/cohort-typesCreate a cohort type
PATCH/cohort-types/{cohortTypeID}Update a cohort type (code is not updatable)
DELETE/cohort-types/{cohortTypeID}Delete a cohort type (refused while cohorts use it)

Student Cohort Membership ​

MethodEndpointDescription
GET/students/{studentID}/cohortsList a student's memberships (?open_only=true for current)
POST/students/{studentID}/cohortsAdd a membership, optionally backdated
POST/students/{studentID}/cohorts/endEnd-date a membership. POST, not DELETE -- the history is the point of the table
DELETE/students/{studentID}/cohorts/{studentCohortID}Delete a membership entered in error (the audit log keeps it). Refused for rows the nightly import owns

Class Standing Thresholds ​

MethodEndpointDescription
GET/class-standing-thresholdsList class standing thresholds
POST/class-standing-thresholdsCreate threshold
GET/class-standing-thresholds/{id}Get threshold details
PATCH/class-standing-thresholds/{id}Update threshold
DELETE/class-standing-thresholds/{id}Delete threshold

Student Lists ​

MethodEndpointDescription
GET/student-listsList student lists
POST/student-listsCreate student list
GET/student-lists/{id}Get student list details
PATCH/student-lists/{id}Update student list
DELETE/student-lists/{id}Delete student list
GET/student-lists/my_listsLists the caller owns
GET/student-lists/shared_with_meLists shared with the caller
GET/student-lists/org-treeOrg tree for choosing share targets
POST/student-lists/generateGenerate a list from a filter
POST/student-lists/preview_filterPreview what a filter would select
GET/student-lists/{listID}/membersList members
POST/student-lists/{listID}/membersAdd a member
POST/student-lists/{listID}/add_membersAdd members (batch)
POST/student-lists/{listID}/remove_membersRemove members (batch)
DELETE/student-lists/{listID}/members/{memberID}Remove one member
POST/student-lists/{listID}/sharesShare the list
DELETE/student-lists/{listID}/shares/{shareID}Remove a share
POST/student-lists/{listID}/shareShare the list (legacy path)
POST/student-lists/{listID}/unshareUnshare (legacy path)

Student Campus Assignments ​

MethodEndpointDescription
GET/student-campus-assignmentsList student campus assignments
POST/student-campus-assignmentsCreate campus assignment
GET/student-campus-assignments/{id}Get campus assignment details
PATCH/student-campus-assignments/{id}Update campus assignment
DELETE/student-campus-assignments/{id}Delete campus assignment
POST/student-campus-assignments/{id}/set_primaryMake this the student's only primary assignment

All six routes are gated on ADMIN.CAMPUS_ASSIGNMENTS with no per-student scope. Super Administrator and, since migration 303, Registrar (EDIT) hold it. The student record's Campuses tab also needs STUDENTS.TAB.CAMPUSES (migration 302). Its campus picker reads GET /organization/campuses/dropdown (ADMIN.CAMPUSES), where 303 gives Registrar VIEW.

GET filters: student_id, campus_id, is_primary, ordering. Create and PATCH take student_id, campus_id, start_date (required on create, YYYY-MM-DD), optional end_date and is_primary. Note on PATCH:

  • is_primary is always written. A body that omits it, such as {"end_date": "2026-12-31"}, which the tab sends to end an assignment, clears the flag.
  • end_date can be set but not cleared. An empty or absent value leaves it as it is.
  • Neither create nor PATCH clears is_primary on the student's other assignments. Only set_primary does.

The nightly student_campuses import rewrites is_primary and end_date on rows that match a Colleague home location by (student_id, campus_id, start_date), and never deletes. Setting an assignment primary does not change students.primary_campus_id, which is the campus that billing and cohort rules read. Registration transactions read it too, and use the open primary assignment only when it is empty.

Self-Service (Me) ​

MethodEndpointDescription
GET/me/studentGet current user's student record
GET/me/gradesGet current user's grades
GET/me/transcriptGet current user's transcript
GET/me/scheduleGet current user's schedule
GET/me/advisorGet current user's advisor
GET/me/billingGet current user's billing

Students ​

List Students ​

GET /api/v1/roles/students

Query Parameters ​

ParameterTypeDescription
student_status_idintegerFilter by status
campusintegerFilter by campus ID
initial_termintegerFilter by initial term
searchstringSearch in student_number, person name
orderingstringSort by: student_number, created_at

Success Response (200 OK) ​

json
{
  "count": 5000,
  "results": [
    {
      "student_id": 1001,
      "person_id": "550e8400-e29b-41d4-a716-446655440000",
      "student_number": "STU001234",
      "display_name": "John Smith",
      "primary_email": "john.smith@university.edu",
      "initial_term_id": 8,
      "initial_term_code": "FA2024",
      "student_status_code": "ACTIVE",
      "student_status_display": "Active",
      "campus_id": 1,
      "campus_name": "Main Campus",
      "cumulative_gpa": 3.45,
      "credits_earned": 45.0,
      "class_standing": "Sophomore"
    }
  ]
}

Get Student Details ​

This endpoint does not exist

There is no GET /api/v1/roles/students/{studentID}. The shape below is retained because it describes the student object as returned inside GET /api/v1/roles/students and GET /api/v1/roles/students/search; read a single student from one of those.

Success Response (200 OK) ​

json
{
  "student_id": 1001,
  "person_id": "550e8400-e29b-41d4-a716-446655440000",
  "student_number": "STU001234",
  "display_name": "John Smith",
  "primary_email": "john.smith@university.edu",
  "initial_term_id": 8,
  "initial_term_code": "FA2024",
  "student_status_id": 1,
  "student_status_code": "ACTIVE",
  "student_status_display": "Active",
  "campus_id": 1,
  "campus_name": "Main Campus",
  "cumulative_gpa": 3.45,
  "term_gpa": 3.67,
  "credits_earned": 45.0,
  "credits_attempted": 48.0,
  "class_standing": "Sophomore",
  "expected_graduation": "2028-05-15",
  "programs": [
    {
      "program_id": 1,
      "program_name": "Bachelor of Science in Computer Science",
      "catalog_year": "2024-2025",
      "status_code": "ACTIVE",
      "declaration_date": "2024-08-26"
    }
  ],
  "majors": [
    {
      "major_id": 1,
      "major_code": "CS",
      "major_name": "Computer Science",
      "is_primary": true
    }
  ],
  "minors": [],
  "advisors": [
    {
      "advisor_id": 15,
      "advisor_name": "Dr. Jane Doe",
      "advisor_role": "Academic Advisor"
    }
  ],
  "created_at": "2024-08-26T10:00:00Z",
  "updated_at": "2024-12-01T14:30:00Z"
}

TypeScript Types ​

typescript
interface Student {
  student_id: number
  person_id: string
  student_number: string
  display_name: string
  primary_email: string | null
  initial_term_id: number
  initial_term_code: string
  student_status_id: number
  student_status_code: string
  student_status_display: string
  campus_id: number | null
  campus_name: string | null
  cumulative_gpa: number | null
  term_gpa: number | null
  credits_earned: number
  credits_attempted: number
  class_standing: string
  expected_graduation: string | null
  programs?: StudentProgram[]
  majors?: StudentMajor[]
  minors?: StudentMinor[]
  advisors?: StudentAdvisor[]
}

Student Enrollments ​

Not served by this domain. Use the Registration enrollment endpoints, filtered by student.


Student GPA ​

Not served by this domain. Use the Grading GPA endpoints (/grading/term-gpa, /grading/cumulative-gpa).

Success Response (200 OK) ​

json
{
  "success": true,
  "data": {
    "student_id": 1001,
    "cumulative_gpa": 3.45,
    "term_gpa": 3.67,
    "credits_earned": 45.0,
    "credits_attempted": 48.0,
    "quality_points": 165.6,
    "terms": [
      {
        "term_code": "FA2024",
        "term_gpa": 3.67,
        "credits_attempted": 15.0,
        "credits_earned": 15.0
      }
    ]
  }
}

Student Majors ​

GET /api/v1/roles/students/{student_pk}/majors
POST /api/v1/roles/students/{student_pk}/majors

Create Major Assignment ​

json
{
  "major_id": 1,
  "catalog_year_id": 3,
  "is_primary": true,
  "declaration_date": "2024-08-26"
}

Get Active Majors ​

GET /api/v1/roles/students/{student_pk}/majors/active

Student Minors ​

GET /api/v1/roles/students/{student_pk}/minors
POST /api/v1/roles/students/{student_pk}/minors

Create Minor Assignment ​

json
{
  "minor_id": 1,
  "catalog_year_id": 3,
  "declaration_date": "2024-09-15"
}

Teachers ​

List Teachers ​

GET /api/v1/roles/teachers

Query Parameters ​

ParameterTypeDescription
departmentintegerFilter by department
status_idintegerFilter by status
searchstringSearch in person name, email

Success Response (200 OK) ​

json
{
  "count": 200,
  "results": [
    {
      "teacher_id": 15,
      "person_id": "660e8400-e29b-41d4-a716-446655440000",
      "display_name": "Dr. Jane Doe",
      "primary_email": "jane.doe@university.edu",
      "department_id": 10,
      "department_name": "Computer Science",
      "status_code": "ACTIVE",
      "status_display": "Active",
      "title": "Associate Professor",
      "section_count": 3
    }
  ]
}

Teacher Sections ​

GET /api/v1/roles/teachers/{id}/sections

Get all sections assigned to a teacher.

Query Parameters ​

ParameterTypeDescription
term_idintegerFilter by term

Teacher Credentials ​

GET /api/v1/roles/teacher-credentials
POST /api/v1/roles/teacher-credentials

Manage teacher qualifications and credentials.

Success Response (200 OK) ​

json
{
  "count": 150,
  "results": [
    {
      "credential_id": 1,
      "teacher_id": 15,
      "credential_type_code": "DOCTORATE",
      "credential_type_display": "Doctorate",
      "institution": "MIT",
      "field_of_study": "Computer Science",
      "year_awarded": 2015
    }
  ]
}

Advisors ​

List Advisors ​

GET /api/v1/roles/advisors

Query Parameters ​

ParameterTypeDescription
advisor_type_idintegerFilter by advisor type
departmentintegerFilter by department
searchstringSearch in person name

Success Response (200 OK) ​

json
{
  "count": 50,
  "results": [
    {
      "advisor_id": 15,
      "person_id": "660e8400-e29b-41d4-a716-446655440000",
      "display_name": "Dr. Jane Doe",
      "primary_email": "jane.doe@university.edu",
      "advisor_type_code": "ACADEMIC",
      "advisor_type_display": "Academic Advisor",
      "department_id": 10,
      "department_name": "Computer Science",
      "advisee_count": 25,
      "max_advisees": 30
    }
  ]
}

Advisor Advisees ​

GET /api/v1/roles/advisors/{advisorID}/advisees

Get all students assigned to an advisor.


Applicants ​

List Applicants ​

GET /api/v1/roles/applicants

Query Parameters ​

ParameterTypeDescription
application_termintegerFilter by application term
application_status_idintegerFilter by status
decision_idintegerFilter by decision
searchstringSearch in person name

Success Response (200 OK) ​

json
{
  "count": 500,
  "results": [
    {
      "applicant_id": 500,
      "person_id": "770e8400-e29b-41d4-a716-446655440000",
      "display_name": "New Student",
      "primary_email": "new.student@email.com",
      "application_term_id": 8,
      "application_term_code": "FA2024",
      "application_program_id": 1,
      "application_program_name": "Bachelor of Science in Computer Science",
      "application_status_code": "SUBMITTED",
      "application_status_display": "Submitted",
      "decision_code": null,
      "decision_display": null,
      "submitted_date": "2024-03-15T10:00:00Z"
    }
  ]
}

Update Applicant Status ​

PATCH /api/v1/roles/applicants/{id}

Request Body ​

FieldTypeDescription
application_status_idintegerNew status
decision_idintegerAdmission decision
decision_datedateDate of decision
notesstringAdditional notes

Student Advisor Assignments ​

GET /api/v1/roles/student-advisors
POST /api/v1/roles/student-advisors

Manage advisor assignments for students.

Create Assignment ​

json
{
  "student_id": 1001,
  "advisor_id": 15,
  "advisor_role_id": 1,
  "is_primary": true,
  "effective_date": "2024-08-26"
}

Role Assignment Business Logic ​

Roles are derived from actions, not created directly.

RoleHow It's Created
StudentCreated when a person registers for their first class
TeacherCreated when a person is assigned to teach a section
AdvisorCreated when a person is assigned to advise students
ApplicantCreated when a person submits an application

Workflow ​

Admission Application → Applicant record created
        ↓
Admission Decision → Status updated (Admitted/Denied/Waitlist)
        ↓
Course Registration → When admitted, Student record created

UI Implications ​

  • DO NOT create "New Student" or "New Teacher" forms
  • DO create "New Person" - people are the base entity
  • Edit demographics through the Person API
  • Role-specific data managed through role-specific endpoints



Complete endpoint reference ​

Every route this domain registers, with the permission node that gates it. Generated from the route table, so it is complete by construction — the sections above explain behaviour, this one guarantees nothing is missing.

Paths are relative to /api/v1/roles. A node in italics is an exemption rather than a grant: selfservice acts only on the caller's own record, public needs no session at all, and custom carries its own wrapper.

MethodEndpointPermission nodeDescription
GET/advisorsADVISING.ADVISORSList advisors
POST/advisorsADVISING.ADVISORSCreate a advisor
GET/advisors/availableADVISING.ADVISORSGet available
GET/advisors/candidatesADVISING.ADVISORSSearch advisor candidates
GET/advisors/lookup/by-person/{personUUID}ADVISING.ADVISORSGet one by person
GET/advisors/lookup/by-person/{personUUID}/allADVISING.ADVISORSGet the by person's all
DELETE/advisors/{advisorID}ADVISING.ADVISORSDelete a advisor
PATCH/advisors/{advisorID}ADVISING.ADVISORSUpdate a advisor
GET/advisors/{advisorID}/adviseesADVISING.ADVISORSList the advisor's advisees
GET/applicantsADMISSIONS.APPLICATIONSList applicants
POST/applicantsADMISSIONS.APPLICATIONSCreate a applicant
DELETE/applicants/{applicantID}ADMISSIONS.APPLICATIONSDelete a applicant
GET/applicants/{applicantID}ADMISSIONS.APPLICATIONSGet one applicant
PATCH/applicants/{applicantID}ADMISSIONS.APPLICATIONSUpdate a applicant
GET/class-standing-thresholdsADMIN.ACADEMIC_SETTINGSList class standing thresholds
POST/class-standing-thresholdsADMIN.ACADEMIC_SETTINGSCreate a class standing threshold
DELETE/class-standing-thresholds/{thresholdID}ADMIN.ACADEMIC_SETTINGSDelete a class standing threshold
GET/class-standing-thresholds/{thresholdID}ADMIN.ACADEMIC_SETTINGSGet one class standing threshold
PATCH/class-standing-thresholds/{thresholdID}ADMIN.ACADEMIC_SETTINGSUpdate a class standing threshold
PUT/class-standing-thresholds/{thresholdID}ADMIN.ACADEMIC_SETTINGSReplace a class standing threshold
GET/cohort-typesADMIN.COHORTSList cohort types
POST/cohort-typesADMIN.COHORT_TYPESCreate a cohort type
DELETE/cohort-types/{cohortTypeID}ADMIN.COHORT_TYPESDelete a cohort type
GET/cohort-types/{cohortTypeID}ADMIN.COHORTSGet one cohort type
PATCH/cohort-types/{cohortTypeID}ADMIN.COHORT_TYPESUpdate a cohort type
GET/cohortsADMIN.COHORTSList cohorts
POST/cohortsADMIN.COHORTSCreate a cohort
GET/cohorts/dropdownADMIN.COHORTSList options for a picker
DELETE/cohorts/{cohortID}ADMIN.COHORTSDelete a cohort
GET/cohorts/{cohortID}ADMIN.COHORTSGet one cohort
PATCH/cohorts/{cohortID}ADMIN.COHORTSUpdate a cohort
GET/cohorts/{cohortID}/advisorsADMIN.COHORTSList a cohort's advisors
POST/cohorts/{cohortID}/advisorsADMIN.COHORTSAssign an advisor to a cohort
POST/cohorts/{cohortID}/advisors/{cohortAdvisorID}/endADMIN.COHORTSEnd a cohort advisor assignment
POST/cohorts/{cohortID}/assign_studentsADMIN.COHORTSAssign students for a cohort
GET/cohorts/{cohortID}/available_studentsADMIN.COHORTSList the cohort's available students
POST/cohorts/{cohortID}/bulk_assignADMIN.COHORTSAssign majors, minors and an advisor to every open member
POST/cohorts/{cohortID}/remove_studentsADMIN.COHORTSRemove students for a cohort
GET/cohorts/{cohortID}/studentsADMIN.COHORTSList the cohort's students
POST/cohorts/{cohortID}/syncADMIN.COHORTSSync lockstep cohort membership
GET/me/advisorselfserviceGet advisor
GET/me/billingselfserviceGet billing
GET/me/gradesselfserviceList grades
GET/me/scheduleselfserviceGet schedule
GET/me/studentselfserviceGet student
GET/me/transcriptselfserviceGet transcript
POST/probation-batch-checkADMIN.ACADEMIC_SETTINGSCreate probation batch check
GET/student-advisorsADVISING.ADVISORSList student advisors
POST/student-advisorsADVISING.ADVISORSCreate a student advisor
DELETE/student-advisors/{studentAdvisorID}ADVISING.ADVISORSDelete a student advisor
GET/student-advisors/{studentAdvisorID}ADVISING.ADVISORSGet one student advisor
PATCH/student-advisors/{studentAdvisorID}ADVISING.ADVISORSUpdate a student advisor
GET/student-campus-assignmentsADMIN.CAMPUS_ASSIGNMENTSList student campus assignments
POST/student-campus-assignmentsADMIN.CAMPUS_ASSIGNMENTSCreate a student campus assignment
DELETE/student-campus-assignments/{assignmentID}ADMIN.CAMPUS_ASSIGNMENTSDelete a student campus assignment
GET/student-campus-assignments/{assignmentID}ADMIN.CAMPUS_ASSIGNMENTSGet one student campus assignment
PATCH/student-campus-assignments/{assignmentID}ADMIN.CAMPUS_ASSIGNMENTSUpdate a student campus assignment
POST/student-campus-assignments/{assignmentID}/set_primaryADMIN.CAMPUS_ASSIGNMENTSSet primary for a student campus assignment
GET/student-listsSTUDENTS.LISTSList student lists
POST/student-listsSTUDENTS.LISTSCreate a student list
POST/student-lists/generateSTUDENTS.LISTSGenerate
GET/student-lists/my_listsSTUDENTS.LISTSList my lists
GET/student-lists/org-treeSTUDENTS.LISTSGet org tree
POST/student-lists/preview_filterSTUDENTS.LISTSPreview filter
GET/student-lists/shared_with_meSTUDENTS.LISTSGet shared with me
DELETE/student-lists/{listID}STUDENTS.LISTSDelete a student list
GET/student-lists/{listID}STUDENTS.LISTSGet one student list
PATCH/student-lists/{listID}STUDENTS.LISTSUpdate a student list
POST/student-lists/{listID}/add_membersSTUDENTS.LISTSAdd members for a student list
GET/student-lists/{listID}/membersSTUDENTS.LISTSList the student list's members
POST/student-lists/{listID}/membersSTUDENTS.LISTSAdd members to a student list
DELETE/student-lists/{listID}/members/{memberID}STUDENTS.LISTSDelete a member
POST/student-lists/{listID}/remove_membersSTUDENTS.LISTSRemove members for a student list
POST/student-lists/{listID}/shareSTUDENTS.LISTSAdd share to a student list
POST/student-lists/{listID}/sharesSTUDENTS.LISTSAdd shares to a student list
DELETE/student-lists/{listID}/shares/{shareID}STUDENTS.LISTSDelete a share
POST/student-lists/{listID}/unshareSTUDENTS.LISTSAdd unshare to a student list
GET/student-majorsSTUDENTS.SEARCHList student majors
POST/student-majorsSTUDENTS.SEARCHCreate a student major
DELETE/student-majors/{majorID}STUDENTS.SEARCHDelete a student major
PATCH/student-majors/{majorID}STUDENTS.SEARCHUpdate a student major
GET/student-majors/{studentMajorID}/emphasesSTUDENTS.SEARCHList the student major's emphases
POST/student-majors/{studentMajorID}/emphasesSTUDENTS.SEARCHAdd emphases to a student major
DELETE/student-majors/{studentMajorID}/emphases/{studentEmphasisID}STUDENTS.SEARCHDelete a emphas
GET/student-minorsSTUDENTS.SEARCHList student minors
POST/student-minorsSTUDENTS.SEARCHCreate a student minor
DELETE/student-minors/{minorID}STUDENTS.SEARCHDelete a student minor
PATCH/student-minors/{minorID}STUDENTS.SEARCHUpdate a student minor
GET/studentsSTUDENTS.SEARCHList students
POST/studentsSTUDENTS.SEARCHCreate a student
GET/students/lookup/by-person/{personUUID}selfserviceGet one by person
GET/students/searchSTUDENTS.SEARCHSearch
DELETE/students/{studentID}STUDENTS.SEARCHDelete a student
PATCH/students/{studentID}STUDENTS.SEARCHUpdate a student
GET/students/{studentID}/academic-status-historySTUDENTS.SEARCHGet the student's academic status history
POST/students/{studentID}/academic-status-historySTUDENTS.SEARCHAdd academic status history to a student
DELETE/students/{studentID}/academic-status-history/{historyID}STUDENTS.SEARCHDelete a academic status history
GET/students/{studentID}/admission-status-historySTUDENTS.SEARCHGet the student's admission status history
POST/students/{studentID}/admission-status-historySTUDENTS.SEARCHAdd admission status history to a student
DELETE/students/{studentID}/admission-status-history/{historyID}STUDENTS.SEARCHDelete a admission status history
GET/students/{studentID}/cohortsSTUDENTS.SEARCHList a student's cohort memberships
POST/students/{studentID}/cohortsADMIN.COHORTSAdd a cohort membership
POST/students/{studentID}/cohorts/endADMIN.COHORTSEnd-date a cohort membership
DELETE/students/{studentID}/cohorts/{studentCohortID}ADMIN.COHORTSDelete a cohort membership
GET/students/{studentID}/majorsSTUDENTS.SEARCHList the student's majors
POST/students/{studentID}/majorsSTUDENTS.SEARCHAdd majors to a student
GET/students/{studentID}/majors/activeSTUDENTS.SEARCHGet active
DELETE/students/{studentID}/majors/{majorID}STUDENTS.SEARCHDelete a major
PATCH/students/{studentID}/majors/{majorID}STUDENTS.SEARCHUpdate a major
GET/students/{studentID}/minorsSTUDENTS.SEARCHList the student's minors
POST/students/{studentID}/minorsSTUDENTS.SEARCHAdd minors to a student
GET/students/{studentID}/minors/activeSTUDENTS.SEARCHGet active
DELETE/students/{studentID}/minors/{minorID}STUDENTS.SEARCHDelete a minor
PATCH/students/{studentID}/minors/{minorID}STUDENTS.SEARCHUpdate a minor
GET/students/{studentID}/scheduleSTUDENTS.SEARCHGet the student's schedule
GET/teacher-credentialsPEOPLE.VIEWList teacher credentials
POST/teacher-credentialsPEOPLE.VIEWCreate a teacher credential
DELETE/teacher-credentials/{credentialID}PEOPLE.VIEWDelete a teacher credential
GET/teacher-credentials/{credentialID}PEOPLE.VIEWGet one teacher credential
PATCH/teacher-credentials/{credentialID}PEOPLE.VIEWUpdate a teacher credential
GET/teachersPEOPLE.VIEWList teachers
POST/teachersPEOPLE.VIEWCreate a teacher
DELETE/teachers/{teacherID}PEOPLE.VIEWDelete a teacher
GET/teachers/{teacherID}PEOPLE.VIEWGet one teacher
PATCH/teachers/{teacherID}PEOPLE.VIEWUpdate a teacher
GET/teachers/{teacherID}/sectionsPEOPLE.VIEWList the teacher's sections

Student Information System Documentation