Skip to content

Organization API ​

Base URL: /api/v1/organization/

Manage organizational structure including campuses, buildings, rooms, colleges, and departments.

Endpoints Overview ​

Campuses ​

MethodEndpointAuthDescription
GET/campusesNoList campuses
GET/campuses/dropdownNoMinimal list for dropdowns
GET/campuses/{id}NoGet campus details
POST/campusesYesCreate campus
PUT/campuses/{id}YesReplace campus
PATCH/campuses/{id}YesUpdate campus
DELETE/campuses/{id}YesDelete campus

Buildings & Rooms ​

MethodEndpointDescription
GET/buildingsList buildings
POST/buildingsCreate building
GET/buildings/{id}Get building details
PUT/buildings/{id}Update building
DELETE/buildings/{id}Delete building
GET/buildings/{id}/roomsGet rooms in building
GET/roomsList rooms
POST/roomsCreate room
GET/rooms/{id}Get room details
PATCH/rooms/{id}Update room

Colleges & Departments ​

MethodEndpointDescription
GET/collegesList colleges/schools
POST/collegesCreate college
GET/colleges/{id}Get college details
DELETE/colleges/{id}Delete college
GET/colleges/{id}/departmentsGet departments in college
GET/colleges/{collegeID}/course-codesGet course codes by college
GET/departmentsList departments
POST/departmentsCreate department
GET/departments/{id}Get department details
PATCH/departments/{id}Update department
GET/departments/rootGet root-level departments
GET/departments/hierarchyGet full department hierarchy
GET/departments/{id}/childrenGet child departments
GET/departments/rootList root departments
GET/departments/{departmentID}/childrenList a department's children
GET/departments/{departmentID}/course-codesCourse codes owned by a department
GET/departments/{departmentID}/course-codesGet course codes by department

Course Code Mappings ​

MethodEndpointAuthDescription
GET/course-codesYesList course code mappings
POST/course-codesYesCreate course code mapping
GET/course-codes/{id}YesGet course code mapping
PUT/course-codes/{id}YesUpdate course code mapping
DELETE/course-codes/{id}YesDelete course code mapping
GET/departments/{departmentID}/course-codesYesGet course codes by department
GET/colleges/{collegeID}/course-codesYesGet course codes by college

Campuses ​

List Campuses ​

GET /api/v1/organization/campuses

Returns all campuses. Publicly accessible.

Query Parameters ​

ParameterTypeDescription
is_activebooleanFilter by active status (default: true)
is_onlinebooleanFilter online campuses
searchstringSearch in campus_code, campus_name, city, state
orderingstringSort by: sort_order, campus_name, campus_code

Example Request ​

bash
curl -X GET "http://localhost:8000/api/v1/organization/campuses?is_active=true" \
  -b cookies.txt

Success Response (200 OK) ​

json
{
  "count": 5,
  "results": [
    {
      "campus_id": 1,
      "campus_code": "MAIN",
      "campus_name": "Main Campus",
      "is_online": false,
      "is_open_to_all": true,
      "address_line1": "123 University Drive",
      "address_line2": null,
      "city": "Collegetown",
      "state": "NY",
      "postal_code": "12345",
      "country_id": 1,
      "country_name": "United States",
      "phone": "(555) 123-4567",
      "full_address": "123 University Drive, Collegetown, NY 12345",
      "sort_order": 1,
      "is_active": true,
      "student_count": 5000,
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T00:00:00Z"
    },
    {
      "campus_id": 2,
      "campus_code": "ONLINE",
      "campus_name": "Online Campus",
      "is_online": true,
      "is_open_to_all": true,
      "sort_order": 10,
      "is_active": true,
      "student_count": 1500
    }
  ]
}

TypeScript Types ​

typescript
interface Campus {
  campus_id: number
  campus_code: string
  campus_name: string
  is_online: boolean
  is_open_to_all: boolean
  address_line1: string | null
  address_line2: string | null
  city: string | null
  state: string | null
  postal_code: string | null
  country_id: number | null
  country_name: string | null
  phone: string | null
  full_address: string | null
  sort_order: number
  is_active: boolean
  student_count: number
}

interface CampusMinimal {
  campus_id: number
  campus_code: string
  campus_name: string
  is_online: boolean
}

Campus Dropdown ​

GET /api/v1/organization/campuses/dropdown

Minimal campus list for form dropdowns. Publicly accessible.

Success Response (200 OK) ​

json
{
  "success": true,
  "data": [
    {
      "campus_id": 1,
      "campus_code": "MAIN",
      "campus_name": "Main Campus",
      "is_online": false
    }
  ]
}

Buildings ​

List Buildings ​

GET /api/v1/organization/buildings

Query Parameters ​

ParameterTypeDescription
is_activebooleanFilter by active status
searchstringSearch in building_code, name, address
orderingstringSort by: building_code, name, created_at

Example Request ​

bash
curl -X GET "http://localhost:8000/api/v1/organization/buildings?is_active=true" \
  -b cookies.txt

Success Response (200 OK) ​

json
{
  "count": 25,
  "results": [
    {
      "building_id": 1,
      "building_code": "SCI",
      "name": "Science Building",
      "address": "100 Science Drive",
      "campus_id": 1,
      "campus_name": "Main Campus",
      "is_active": true,
      "room_count": 45
    }
  ]
}

TypeScript Types ​

typescript
interface Building {
  building_id: number
  building_code: string
  name: string
  address: string | null
  campus_id: number | null
  campus_name?: string
  is_active: boolean
  room_count: number
}

Update Building ​

PUT /api/v1/organization/buildings/{id}

Replace a building record.

Path Parameters ​

ParameterTypeDescription
idintegerThe building ID

Delete Building ​

DELETE /api/v1/organization/buildings/{id}

Delete a building.

Path Parameters ​

ParameterTypeDescription
idintegerThe building ID

Get Building Rooms ​

GET /api/v1/organization/buildings/{id}/rooms

Get all active rooms in a building.

Success Response (200 OK) ​

json
[
  {
    "room_id": 101,
    "building_id": 1,
    "building_code": "SCI",
    "building_name": "Science Building",
    "room_number": "101",
    "capacity": 35,
    "room_type_code": "LECTURE",
    "room_type_display": "Lecture Hall",
    "full_location": "SCI 101",
    "is_active": true
  }
]

Rooms ​

List Rooms ​

GET /api/v1/organization/rooms

Query Parameters ​

ParameterTypeDescription
buildingintegerFilter by building ID
is_activebooleanFilter by active status
room_type_idintegerFilter by room type
min_capacityintegerFilter by minimum capacity
searchstringSearch in room_number, building name/code
orderingstringSort by: building_code, room_number, capacity

Example Request ​

bash
curl -X GET "http://localhost:8000/api/v1/organization/rooms?building=1&is_active=true" \
  -b cookies.txt

TypeScript Types ​

typescript
interface Room {
  room_id: number
  building_id: number
  building_code: string
  building_name: string
  room_number: string
  capacity: number | null
  room_type_code: string | null
  room_type_display: string | null
  full_location: string
  is_active: boolean
}

Colleges/Schools ​

List Colleges ​

GET /api/v1/organization/colleges

Query Parameters ​

ParameterTypeDescription
is_activebooleanFilter by active status
searchstringSearch in college_code, name
orderingstringSort by: college_code, name, created_at

Example Request ​

bash
curl -X GET http://localhost:8000/api/v1/organization/colleges \
  -b cookies.txt

Success Response (200 OK) ​

json
{
  "count": 8,
  "results": [
    {
      "college_id": 1,
      "college_code": "CAS",
      "name": "College of Arts and Sciences",
      "is_active": true,
      "department_count": 15
    }
  ]
}

TypeScript Types ​

typescript
interface CollegeSchool {
  college_id: number
  college_code: string
  name: string
  is_active: boolean
  department_count: number
}

Delete College ​

DELETE /api/v1/organization/colleges/{id}

Delete a college.

Path Parameters ​

ParameterTypeDescription
idintegerThe college ID

Get College Departments ​

GET /api/v1/organization/colleges/{id}/departments

Get all active departments in a college.


Departments ​

List Departments ​

GET /api/v1/organization/departments

Query Parameters ​

ParameterTypeDescription
is_activebooleanFilter by active status
parent_departmentintegerFilter by parent department ID
searchstringSearch in department_code, name, description
orderingstringSort by: department_code, name, created_at

Example Request ​

bash
curl -X GET "http://localhost:8000/api/v1/organization/departments?is_active=true" \
  -b cookies.txt

Success Response (200 OK) ​

json
{
  "count": 40,
  "results": [
    {
      "department_id": 1,
      "department_code": "MATH",
      "name": "Mathematics",
      "description": "Department of Mathematics",
      "parent_department_id": null,
      "parent_name": null,
      "full_hierarchy": "Mathematics",
      "gl_credit_hour_billing": "40-1234-5678",
      "gl_section_fee_billing": "40-1234-5679",
      "gl_lab_fee_billing": "40-1234-5680",
      "is_active": true
    }
  ]
}

TypeScript Types ​

typescript
interface Department {
  department_id: number
  department_code: string
  name: string
  description: string | null
  parent_department_id: number | null
  parent_name: string | null
  full_hierarchy: string
  gl_credit_hour_billing: string | null
  gl_section_fee_billing: string | null
  gl_lab_fee_billing: string | null
  is_active: boolean
  colleges?: CollegeSchool[]
  child_departments?: Department[]
}

Update Department ​

PATCH /api/v1/organization/departments/{id}

Partially update a department.

Path Parameters ​

ParameterTypeDescription
idintegerThe department ID

Get Root Departments ​

GET /api/v1/organization/departments/root

Get all top-level departments (departments with no parent).


Get Department Hierarchy ​

GET /api/v1/organization/departments/hierarchy

Get the full department hierarchy tree. Returns all departments organized in a nested tree structure.


Get Child Departments ​

GET /api/v1/organization/departments/{id}/children

Get all immediate child departments of a department.


Get Department Hierarchy Path ​

GET /api/v1/organization/departments/{departmentID}/children

List the immediate children of a department. There is no /departments/{id}/hierarchy path endpoint; full_hierarchy is returned as a field on the department itself.

Success Response (200 OK) ​

json
{
  "department_id": 15,
  "hierarchy": "College of Arts and Sciences > Natural Sciences > Biology"
}

Course Code Mappings ​

Course code mappings define the relationship between unit-level course codes and the departments or colleges that own them.

List Course Code Mappings ​

GET /api/v1/organization/course-codes

List all course code mappings.

Example Request ​

bash
curl -X GET http://localhost:8000/api/v1/organization/course-codes \
  -b cookies.txt

Success Response (200 OK) ​

json
{
  "count": 50,
  "results": [
    {
      "course_code_id": 1,
      "unit_course_code": "MATH",
      "department_id": 5,
      "department_name": "Mathematics",
      "college_id": 1,
      "college_name": "College of Arts and Sciences",
      "created_at": "2024-01-01T00:00:00Z",
      "updated_at": "2024-01-01T00:00:00Z"
    }
  ]
}

TypeScript Types ​

typescript
interface CourseCodeMapping {
  course_code_id: number
  unit_course_code: string
  department_id: number | null
  department_name: string | null
  college_id: number | null
  college_name: string | null
  created_at: string
  updated_at: string
}

Create Course Code Mapping ​

POST /api/v1/organization/course-codes

Create a new course code mapping.

Request Body ​

FieldTypeRequiredDescription
unit_course_codestringYesThe course code prefix (e.g., MATH, BIOL)
department_idintegerNoAssociated department ID
college_idintegerNoAssociated college ID

Example Request ​

bash
curl -X POST http://localhost:8000/api/v1/organization/course-codes \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{
    "unit_course_code": "PHYS",
    "department_id": 8,
    "college_id": 1
  }'

Get Course Code Mapping ​

GET /api/v1/organization/course-codes/{id}

Get a specific course code mapping by ID.

Path Parameters ​

ParameterTypeDescription
idintegerThe course code mapping ID

Update Course Code Mapping ​

PUT /api/v1/organization/course-codes/{id}

Update an existing course code mapping.

Path Parameters ​

ParameterTypeDescription
idintegerThe course code mapping ID

Example Request ​

bash
curl -X PUT http://localhost:8000/api/v1/organization/course-codes/1 \
  -b cookies.txt \
  -H "Content-Type: application/json" \
  -d '{
    "unit_course_code": "MATH",
    "department_id": 5,
    "college_id": 1
  }'

Delete Course Code Mapping ​

DELETE /api/v1/organization/course-codes/{id}

Delete a course code mapping.

Path Parameters ​

ParameterTypeDescription
idintegerThe course code mapping ID

Example Request ​

bash
curl -X DELETE http://localhost:8000/api/v1/organization/course-codes/1 \
  -b cookies.txt

Get Course Codes by Department ​

GET /api/v1/organization/departments/{departmentID}/course-codes

Get all course code mappings for a specific department.

Path Parameters ​

ParameterTypeDescription
departmentIDintegerThe department ID

Example Request ​

bash
curl -X GET http://localhost:8000/api/v1/organization/departments/5/course-codes \
  -b cookies.txt

Get Course Codes by College ​

GET /api/v1/organization/colleges/{collegeID}/course-codes

Get all course code mappings for a specific college.

Path Parameters ​

ParameterTypeDescription
collegeIDintegerThe college ID

Example Request ​

bash
curl -X GET http://localhost:8000/api/v1/organization/colleges/1/course-codes \
  -b cookies.txt



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/organization. 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/buildingsADMIN.BUILDINGSList buildings
POST/buildingsADMIN.BUILDINGSCreate a building
DELETE/buildings/{buildingID}ADMIN.BUILDINGSDelete a building
GET/buildings/{buildingID}ADMIN.BUILDINGSGet one building
PATCH/buildings/{buildingID}ADMIN.BUILDINGSUpdate a building
PUT/buildings/{buildingID}ADMIN.BUILDINGSReplace a building
GET/buildings/{buildingID}/roomsADMIN.BUILDINGSList the building's rooms
GET/campusesADMIN.CAMPUSESList campuses
POST/campusesADMIN.CAMPUSESCreate a campus
GET/campuses/dropdownADMIN.CAMPUSESList options for a picker
GET/campuses/for_registrationREGISTRATION.REGISTERCampuses offered to the registering student
DELETE/campuses/{campusID}ADMIN.CAMPUSESDelete a campus
GET/campuses/{campusID}ADMIN.CAMPUSESGet one campus
PATCH/campuses/{campusID}ADMIN.CAMPUSESUpdate a campus
PUT/campuses/{campusID}ADMIN.CAMPUSESReplace a campus
GET/collegesADMIN.ORGANIZATIONList colleges
POST/collegesADMIN.ORGANIZATIONCreate a college
DELETE/colleges/{collegeID}ADMIN.ORGANIZATIONDelete a college
GET/colleges/{collegeID}ADMIN.ORGANIZATIONGet one college
PATCH/colleges/{collegeID}ADMIN.ORGANIZATIONUpdate a college
PUT/colleges/{collegeID}ADMIN.ORGANIZATIONReplace a college
GET/colleges/{collegeID}/course-codesADMIN.ORGANIZATIONList the college's course codes
GET/colleges/{collegeID}/departmentsADMIN.ORGANIZATIONList the college's departments
GET/course-codesADMIN.ORGANIZATIONList course codes
POST/course-codesADMIN.ORGANIZATIONCreate a course code
DELETE/course-codes/{id}ADMIN.ORGANIZATIONDelete a course code
GET/course-codes/{id}ADMIN.ORGANIZATIONGet one course code
PUT/course-codes/{id}ADMIN.ORGANIZATIONReplace a course code
GET/departmentsADMIN.ORGANIZATIONList departments
POST/departmentsADMIN.ORGANIZATIONCreate a department
GET/departments/hierarchyADMIN.ORGANIZATIONGet hierarchy
GET/departments/rootADMIN.ORGANIZATIONGet root
DELETE/departments/{departmentID}ADMIN.ORGANIZATIONDelete a department
GET/departments/{departmentID}ADMIN.ORGANIZATIONGet one department
PATCH/departments/{departmentID}ADMIN.ORGANIZATIONUpdate a department
PUT/departments/{departmentID}ADMIN.ORGANIZATIONReplace a department
GET/departments/{departmentID}/childrenADMIN.ORGANIZATIONGet the department's children
GET/departments/{departmentID}/course-codesADMIN.ORGANIZATIONList the department's course codes
GET/org-unitsADMIN.ORGANIZATIONList org units
POST/org-unitsADMIN.ORGANIZATIONCreate a org unit
GET/org-units/treeADMIN.ORGANIZATIONGet tree
DELETE/org-units/{unitID}ADMIN.ORGANIZATIONDelete a org unit
GET/org-units/{unitID}ADMIN.ORGANIZATIONGet one org unit
PATCH/org-units/{unitID}ADMIN.ORGANIZATIONUpdate a org unit
PUT/org-units/{unitID}ADMIN.ORGANIZATIONReplace a org unit
GET/org-units/{unitID}/administratorsADMIN.ORGANIZATIONList the org unit's administrators
GET/org-units/{unitID}/childrenADMIN.ORGANIZATIONGet the org unit's children
GET/roomsADMIN.ROOMSList rooms
POST/roomsADMIN.ROOMSCreate a room
DELETE/rooms/{roomID}ADMIN.ROOMSDelete a room
GET/rooms/{roomID}ADMIN.ROOMSGet one room
PATCH/rooms/{roomID}ADMIN.ROOMSUpdate a room
PUT/rooms/{roomID}ADMIN.ROOMSReplace a room
GET/unit-administratorsADMIN.UNIT_ADMINSList unit administrators
POST/unit-administratorsADMIN.UNIT_ADMINSCreate a unit administrator
DELETE/unit-administrators/{uaID}ADMIN.UNIT_ADMINSDelete a unit administrator
GET/unit-administrators/{uaID}ADMIN.UNIT_ADMINSGet one unit administrator
PATCH/unit-administrators/{uaID}ADMIN.UNIT_ADMINSUpdate a unit administrator

Student Information System Documentation