Calendar API & Subscriptions
Read a user's Campus One calendar with the calendar scope, and let users subscribe to their calendar on their own devices.
Calendar
The calendar scope is the read counterpart to the events scope (which writes events). With it, your app can read the authenticated user's Campus One calendar. Separately, every user can subscribe to that same calendar on their phone or laptop via a personal iCalendar feed.
Reading a user's calendar (connected apps)
GET /api/apps/calendar
Returns the events visible to the user who authorized your app — their personal events, any platform broadcasts, and the channels they belong to — ordered by start time.
- Required scope:
calendar - Admin prerequisite: the
permCalendarflag must be enabled for your app.
curl https://auth.campusone.com.ng/api/apps/calendar \
-H "Authorization: Bearer c1_act_user_token"const res = await fetch('https://auth.campusone.com.ng/api/apps/calendar', {
headers: { Authorization: `Bearer ${userToken}` },
});
const events = await res.json();Response
[
{
"id": "clh83kf1a0001st09k4m2p9zx",
"audience": "user",
"title": "Advisor meeting",
"description": null,
"startsAt": "2026-06-15T09:00:00.000Z",
"endsAt": null,
"location": "Block C, Room 12",
"url": null,
"app": { "id": "clw7…", "name": "Advising", "color": "#6366f1", "initial": "A", "slug": "advising" }
}
]| Status | Cause |
|---|---|
403 | Token lacks the calendar scope, or the app's permCalendar flag is disabled. |
Device subscriptions (students)
Each user can subscribe to their Campus One calendar from any calendar app (Apple Calendar, Google Calendar, Outlook). Campus One serves a standard, read-only iCalendar (.ics) feed at a private URL.
- Find it under Profile → Preferences → Device calendar.
- "Add to calendar app" opens the
webcal://link directly; or copy thehttps://…/api/calendar/<token>.icsURL into your calendar client. - The URL contains a secret token — anyone with it can read the calendar. Use Reset link to rotate the token and invalidate the old URL.
The feed reflects the same events as the in-app calendar (personal, broadcasts, and joined channels) and refreshes automatically on the calendar client's own schedule.
[!NOTE] The subscription feed is a user feature, authenticated by the token in its URL — it is not part of the connected-app Bearer API. Connected apps read the calendar via
GET /api/apps/calendarabove.
Channels & Audiences
Define named audiences (clubs, cohorts, sections) and target events and notifications at the users who have joined them.
Academic Reference Data
Resolve the faculty_id and department_id claims you receive at sign-in to human-readable names by reading Campus One's faculty and department catalog.