This reference covers the SISU wrapper, not every Sisukas backend endpoint. The deployed OpenAPI schema is authoritative for the version running on a particular environment.

Check /openapi.json on the target wrapper deployment before relying on exact response or parameter shapes.

SISU Wrapper REST API#

The wrapper provides read-only study group and schedule data from Aalto SISU. Run locally at http://127.0.0.1:8001; the live OpenAPI schema at /openapi.json is authoritative for the deployed version.

Study groups#

GET /api/courses/study-groups

Query parameterRequiredDescription
course_unit_idYesSISU course-unit ID
course_offering_idYesCourse-unit realisation ID
resolve_locationsNoBoolean, defaults to false; enable room/building lookup
curl -fsSG http://127.0.0.1:8001/api/courses/study-groups \
  --data-urlencode 'course_unit_id=aalto-CU-1151000764-20260801' \
  --data-urlencode 'course_offering_id=aalto-cur-P-c235941a-0fd6-11f1-8c99-0050569455c9' \
  --data-urlencode 'resolve_locations=true'

The response has course_unit_id, course_offering_id, and study_groups. Each group’s study_events contains expanded occurrences, with start, end, series_id, cancelled, excluded, notice, location_ids, and locations (plus existing ISO fields). With the default false, locations remains empty, but location IDs are preserved. With true, resolved entries include room/building IDs, names, and an address when available. Location lookup failures do not remove study events.

Batch study groups#

POST /api/courses/batch/study-groups?resolve_locations=true

{
  "requests": [
    {
      "course_unit_id": "aalto-CU-1151000764-20260801",
      "course_offering_id": "aalto-cur-P-c235941a-0fd6-11f1-8c99-0050569455c9"
    }
  ]
}

The flag defaults to false for both single and batch requests. See the running service’s interactive documentation at /docs for the complete batch response structure and other routes.

Finding identifiers#

A course-unit realisation’s studyGroupSets[].studySubGroups[] includes source studyEventIds. Course-unit IDs and offering IDs are also available in the course catalogue. They are different identifiers and must not be interchanged.

Study-event semantics#

Read the Study-event and Location Contract for verified SISU fields, normalization, timezone assumptions, occurrence identity limitations, and provisional exception behavior. The wrapper’s reproducible HTTP probes are in sisu-wrapper/examples/requests.http in the sisukas source repository.

SISU Wrapper Python library#

Install with pip install sisu-wrapper and import SisuClient and SisuService. Python consumers can call fetch_study_groups(...) for unresolved events or fetch_study_groups_with_locations(...) for optional enrichment.

from sisu_wrapper import SisuClient, SisuService

with SisuClient() as client:
    service = SisuService(client)
    groups = service.fetch_study_groups_with_locations(
        "aalto-CU-1151000764-20260801",
        "aalto-cur-P-c235941a-0fd6-11f1-8c99-0050569455c9",
    )
  • Study-event and Location Contract — Normalized SISU event and location semantics.
  • Running Sisukas Locally — Local wrapper setup.
  • Course Data Architecture — How the wrapper is used.
Last updated: