The Communication module is the backbone of information exchange across the Gobarau Academy platform. It provides structured channels for administrators and staff to broadcast role-targeted announcements, deliver automated per-user notifications, facilitate private direct messages between users, host a student Q&A board for academic queries, and coordinate alumni career talk sessions. All endpoints sit under theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/muhammadbugaje/gobarau_backend/llms.txt
Use this file to discover all available pages before exploring further.
/api/communication/ prefix and require authentication; write operations on announcements, questions, and career talk sessions additionally require staff or admin-level permissions.
Announcements
Announcements are school-wide broadcasts targeted at a specific role group. They can be pinned for prominence and optionally given an expiry date so they disappear from feeds automatically.The
audience field determines which role group sees an announcement. Only users whose account role matches the value will receive it — so a student announcement will not appear in a teacher’s feed. Choose the audience value carefully before publishing.List & Create Announcements
GET · POST
GET/POST /api/communication/announcements/
Permissions: IsAuthenticated, IsStaffOrAdmin
Request Fields (POST)
Short descriptive title of the announcement (max 200 characters).
Full announcement body text.
The role group this announcement targets. Must be one of the
RoleChoices values:| Value | Label |
|---|---|
super_admin | Super Admin |
principal | Principal |
vice_principal | Vice Principal |
bursar | Bursar |
teacher | Teacher |
student | Student |
parent | Parent |
alumni | Alumni |
nurse | School Nurse |
counsellor | Counsellor |
ISO 8601 datetime when the announcement goes live. If omitted the announcement is saved as a draft.
When
true, the announcement is pinned to the top of the audience’s feed. Defaults to false.Optional ISO 8601 datetime after which the announcement is no longer surfaced. Leave blank for permanent announcements.
Example — Create a pinned student announcement
Example Response
Response Fields
Auto-incrementing integer primary key for the announcement.
Unique public UUID identifier for the announcement (from
BaseModel).Announcement title.
Full body text of the announcement.
Role group the announcement targets.
Datetime the announcement was or will be published.
Whether the announcement is pinned at the top of the feed.
Datetime the announcement expires, or
null if it never expires.Record creation timestamp (from
BaseModel).Last modification timestamp (from
BaseModel).Notifications
Notifications are per-user system events delivered automatically by the platform. Each notification carries a type, a title, a message body, and an optional deep-link URL. Users only see their own notifications; admin roles (super_admin, principal, vice_principal) can see all.
List & Create Notifications
Endpoint:GET/POST /api/communication/notifications/
Permissions: IsAuthenticated (scoped — users see only their own records unless admin)
Request Fields (POST)
Primary key of the
User who should receive this notification.Classification of the event. One of:
| Value | Label |
|---|---|
system | System |
payment | Payment |
academic | Academic |
attendance | Attendance |
welfare | Welfare |
message | Message |
Short notification title (max 200 characters).
Full notification message body.
Read status of the notification. Defaults to
false.Datetime the notification was read. Should be set alongside
is_read: true.Optional deep-link URL for the user to navigate to the related resource (e.g. a payment invoice or grade report).
Example — Create a payment notification
Mark a Notification as Read (PATCH)
Use aPATCH request to the detail endpoint to update read status without replacing the full object.
Response Fields
Auto-incrementing integer primary key for the notification.
Unique public UUID identifier for the notification (from
BaseModel).Primary key of the recipient
User.Type classification of the notification.
Short notification title.
Full notification message.
Whether the user has read the notification.
Datetime it was read, or
null if unread.Deep-link URL for the related resource. Empty string if not applicable.
Record creation timestamp (from
BaseModel).Last modification timestamp (from
BaseModel).Messages
Messages provide a direct 1-to-1 inbox between any two platform users (staff, students, parents, etc.). Each message has a sender, a recipient, an optional subject line, and a body. Users see only conversations they are part of; admin roles can access all messages.List & Create Messages
Endpoint:GET/POST /api/communication/messages/
Permissions: IsAuthenticated (scoped — users see only sent/received messages unless admin)
Request Fields (POST)
Primary key of the sending
User.Primary key of the receiving
User.Optional message subject line (max 200 characters). Defaults to an empty string.
Full message body.
Whether the recipient has read the message. Defaults to
false; the system normally manages this field.Datetime the message was read by the recipient.
Example — Send a direct message
Response Fields
Auto-incrementing integer primary key for the message.
Unique public UUID identifier for the message (from
BaseModel).Primary key of the sender
User.Primary key of the recipient
User.Message subject. Empty string if not provided.
Full message body.
Datetime the message was sent (
auto_now_add). Read-only.Whether the recipient has read the message.
Datetime the message was read, or
null if unread.Record creation timestamp (from
BaseModel).Last modification timestamp (from
BaseModel).Questions
The Questions endpoint powers the student Q&A board. Students post questions against a specific academic subject, and any authenticated staff member can provide an answer. Questions are ordered by newest first.List & Create Questions
Endpoint:GET/POST /api/communication/questions/
Permissions: IsAuthenticated, IsStaffOrAdmin
Request Fields (POST)
Primary key of the
StudentProfile asking the question.Primary key of the
Subject the question relates to.The full text of the student’s question.
Text of the answer. Leave blank when first posting; a teacher fills this in via PATCH.
Primary key of the
User (teacher) who provided the answer. Set alongside answer_text.Datetime the question was answered.
Example — Post a question
Example — Teacher answers a question (PATCH)
Use aPATCH request to the detail endpoint to add an answer to an existing question.
Response Fields
Auto-incrementing integer primary key for the question.
Unique public UUID identifier for the question (from
BaseModel).Primary key of the
StudentProfile.Primary key of the related
Subject.The student’s question.
Datetime the question was submitted (
auto_now_add). Read-only.The answer provided by staff. Empty string until answered.
Primary key of the answering
User, or null if unanswered.Datetime the answer was given, or
null if unanswered.Record creation timestamp (from
BaseModel).Last modification timestamp (from
BaseModel).Career Talk Sessions
Career talk sessions are alumni-led events where graduates return to speak about their professional journeys. Each session is linked to anAlumniProfile, has a date/time/venue, and supports attendee cap and registration deadline settings.
List & Create Career Talk Sessions
Endpoint:GET/POST /api/communication/career-talk-sessions/
Permissions: IsAuthenticated, IsStaffOrAdmin
Request Fields (POST)
Title of the career talk session (max 200 characters).
Detailed description of the session topic and speaker background. Defaults to empty string.
Primary key of the
AlumniProfile who is the featured speaker.Date of the session in
YYYY-MM-DD format.Start time of the session in
HH:MM:SS format.Location where the session will be held (max 200 characters).
Maximum number of attendees allowed. Defaults to
100.Last date in
YYYY-MM-DD format by which students must register to attend.Example — Create a career talk session
Response Fields
Auto-incrementing integer primary key for the session.
Unique public UUID identifier for the session (from
BaseModel).Session title.
Full description of the session.
Primary key of the featured
AlumniProfile.Date of the session.
Start time of the session.
Venue name or location.
Maximum allowed attendees.
Registration cut-off date.
Record creation timestamp (from
BaseModel).Last modification timestamp (from
BaseModel).