$ npm install# development
$ npm run start
# watch mode
$ npm run start:dev
# production mode
$ npm run start:prod# unit tests
$ npm run test
# e2e tests
$ npm run test:e2e
# test coverage
$ npm run test:covserver url : https://student-apply-api-gateway.onrender.com
Register User
Mutation
mutation RegisterUser($data: RegisterUserDto!) {
registerUser(data: $data) {
id
email
firstName
lastName
role
status
# createdAt
}
}Variables
{
"data": {
"email": "user@example.com",
"code": "123456"
}
}Update User Info
Mutation
mutation UpdateUser($data: UpdateUserDto!) {
update(data: $data) {
id
firstName
lastName
email
phone
status
role
}
}Variables
{
"data": {
"id": "userId",
"firstName": "UpdatedFirstName",
"lastName": "UpdatedLastName",
"phone": "+2348012345678"
}
}Login User
Mutation
mutation Login($data: LoginUserDto!) {
login(data: $data) {
access_token
user {
id
email
firstName
lastName
role
status
}
}
}Variables
{
"data": {
"email": "user@example.com",
"password": "password123"
}
}Request password reset
Mutation
mutation RequestPasswordReset($data: ForgetPasswordDto!) {
requestReset(data: $data) {
message
resetLink
}
}Variables
{
"data": {
"email": "teammember@example.com"
}
}Reset Password
Mutation
mutation ResetUserPassword($data: ResetPasswordDto!) {
resetPassword(data: $data) {
message
}
}Variables
{
"data": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...................",
"newPassword": "newPassword"
}
}Change Password
Mutation
mutation ChangePassword($input: ChangePasswordInput!) {
changePassword(input: $input) {
success
message
}
}Variables
{
"input": {
"currentPassword": "currentPassword",
"newPassword": "NewPassword456",
"confirmPassword": "NewPassword456"
}
}Get One Users
Mutation
query GetUserById($id: String!) {
user(id: $id) {
id
email
firstName
lastName
fullName
role
status
profilePicture
}
}Variables
{
"id": "09163248-2422-4c7d-a9dd-56a0176f9744"
}Get All Users
Mutation
query GetAllUsers {
users {
id
email
firstName
lastName
role
status
createdAt
}
}Variables
Register School
Mutation
mutation RegisterSchool($data: RegisterSchoolInput!) {
registerSchool(data: $data) {
id
name
address
logo
about
schoolPhotos
coverPhoto
founded
institutionType
website
registrationCertificateNumber
createdAt
updatedAt
user {
id
email
role
}
}
}Variables
{
"data": {
"userId": "15fd8535-f42d-4ed3-ab00-b4e6cd3315c4",
"name": "Example University",
"address": "123 University Road",
"logo": "https://example.com/logo.png",
"about": "A leading institution focused on excellence."
}
}Get One School
Query
query GetSchool($id: String!) {
getSchool(id: $id) {
id
name
address
phone
email
logo
about
schoolPhotos
coverPhoto
founded
institutionType
website
registrationCertificateNumber
createdAt
updatedAt
user {
id
email
role
}
}
}Variables
{
"id": "54867fbe-f389-46a7-a80e-a233b3e32b71"
}Update School
Mutation
mutation UpdateSchool($id: ID!, $input: UpdateSchoolInfoInput!) {
modifySchool(id: $id, input: $input) {
id
name
address
phone
email
logo
about
schoolPhotos
coverPhoto
founded
institutionType
website
registrationCertificateNumber
updatedAt
user {
id
email
}
}
}Variables
{
"id": "SCHOOL_UUID_HERE",
"input": {
"phone": "+1 234 567 8900",
"email": "info@exampleuniversity.edu",
"website": "https://exampleuniversity.edu"
}
}update photos
{
"id": "SCHOOL_UUID_HERE",
"input": {
"coverPhoto": "https://example.com/cover.jpg",
"schoolPhotos": [
"https://example.com/photo1.jpg",
"https://example.com/photo2.jpg"
]
}
}Description + metadata update
{
"id": "SCHOOL_UUID_HERE",
"input": {
"about": "Updated description about the university.",
"founded": 1998,
"institutionType": "Private University"
}
}Fetch a school and things associated with it
Mutation
query GetSchoolWithDetails($id: String!) {
getSchoolWithDetails(id: $id) {
id
name
email
address
phone
website
institutionType
logo
coverPhoto
about
founded
# User Info
user {
id
email
firstName
lastName
}
# Related Data
programs {
id
name
description
duration
}
fees {
id
name
amount
}
admissionRequirements {
id
name
description
isRequired
}
activities {
id
name
description
picture
}
}
}Variables
{
"id": "school ID"
}Delete School
Mutation
mutation DeleteSchool($id: String!) {
removeSchool(id: $id) {
success
message
}
}Variables
{
"id": "school ID"
}Get Schools Associated with User
Query
query GetUserSchools {
getUserSchools {
id
name
email
address
phone
website
logo
coverPhoto
about
founded
institutionType
user {
id
email
}
}
}Variables
{}invite a team member
Mutation
mutation InviteTeamMember($schoolId: ID!, $input: InviteTeamMemberInput!) {
inviteTeamMember(schoolId: $schoolId, input: $input) {
success
message
inviteToken
}
}Variables
{
"schoolId": "SCHOOL ID",
"input": {
"email": "teammember@example.com",
"firstName": "Alex",
"lastName": "Rivera",
"teamMemberRole": "ADMIN"
}
}Complete Team Member Registration
Mutation
mutation CompleteRegistration($input: CompleteTeamMemberRegistrationInput!) {
completeTeamMemberRegistration(input: $input) {
user {
id
email
firstName
lastName
role
}
accessToken
membership {
id
role
invitedBy
}
}
}Variables
firstname and lastname are nullable, if included in invite, it will not be included in the variables here.
{
"input": {
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...............",
"password": "StrongPassword123!",
"firstName":"first name",
"lastName":"last name"
}
}Get all school team members
Query
query GetTeamMembers($schoolId: ID!, $filter: GetTeamMembersFilter) {
getSchoolTeamMembers(schoolId: $schoolId, filter: $filter) {
id
role
joinedAt: createdAt
invitedBy
user {
id
fullName
email
status
}
}
}Variables
No filter
{
"schoolId": "54867fbe-f389-46a7-a80e-a233b3e32b71"
}With Filters (filters can be applied independently)
{
"schoolId": "54867fbe-f389-46a7-a80e-a233b3e32b71",
"filter": {
"search": "Alex",
"role": "ADMIN",
"status": "ACTIVE"
}
}Add Program
Mutation
mutation CreateProgram($schoolId: ID!, $input: CreateProgramInput!) {
addProgram(schoolId: $schoolId, input: $input) {
id
name
description
subjects
department
duration
process
createdAt
updatedAt
}
}Variables
only name is required
{
"schoolId": "54867fbe-f389-46a7-a80e-a233b3e32b71",
"input": {
"name": "Computer Science",
"description": "Focuses on computation, algorithms, and software engineering.",
"subjects": [
"Algorithms",
"Data Structures",
"Databases"
]
}
}Get one program
Query
query GetProgram($schoolId: ID!, $programId: ID!) {
getProgram(schoolId: $schoolId, programId: $programId) {
id
name
description
subjects
department
duration
process
createdAt
updatedAt
school {
id
name
}
}
}Variables
{
"schoolId": "54867fbe-f389-46a7-a80e-a233b3e32b71",
"programId": "752d1e1e-e5af-4758-9c07-983ed20a867e"
}Update Program
Mutation
mutation UpdateProgram($programId: ID!, $input: UpdateProgramInput!) {
modifyProgram(programId: $programId, input: $input) {
id
name
description
subjects
department
duration
process
updatedAt
}
}Variables
{
"programId": "752d1e1e-e5af-4758-9c07-983ed20a867e",
"input": {
"subjects": ["AI", "Machine Learning", "Cloud Computing", "Data Scraping"]
}
}Get a school's programs
Query
query GetProgramsBySchool($schoolId: ID!) {
getschoolPrograms(schoolId: $schoolId) {
id
name
description
subjects
department
duration
process
createdAt
updatedAt
}
}Variables
{
"schoolId": "SCHOOL_UUID_HERE"
}Delete Program
Mutation
mutation DeleteProgram($schoolId: ID!, $programId: ID!) {
removeProgram(schoolId: $schoolId, programId: $programId) {
success
message
}
}Variables
{
"schoolId": "SCHOOL_UUID_HERE",
"programId": "PROGRAM_UUID_HERE"
}Add Activity or Facility
Mutation
mutation CreateActivity(
$schoolId: ID!
$input: CreateActivityAndFacilityInput!
) {
addActivity(schoolId: $schoolId, input: $input) {
message
activity {
id
name
description
picture
createdAt
}
}
}Variables
{
"schoolId": "54867fbe-f389-46a7-a80e-a233b3e32b71",
"input": {
"name": "Basketball Court",
"description": "Outdoor standard-size basketball court",
"picture": "https://example.com/basketball.jpg"
}
}Get One Activity
Mutation
query GetActivity($id: ID!) {
getActivity(id: $id) {
id
name
description
picture
createdAt
}
}Variables
{
"id": "ACTIVITY_UUID"
}Get Activities by school
Mutation
query GetActivitiesBySchool($schoolId: ID!) {
activitiesBySchool(schoolId: $schoolId) {
id
name
description
picture
createdAt
}
}Variables
{
"schoolId": "SCHOOL_UUID"
}Update Activity
Mutation
mutation UpdateActivity($id: ID!, $input: UpdateActivityAndFacilityInput!) {
modifyActivity(id: $id, input: $input) {
id
name
description
picture
updatedAt
}
}Variables
{
"id": "ACTIVITY_UUID",
"input": {
"name": "Basketball Court",
"description": "Outdoor standard-size basketball court",
"picture": "https://example.com/basketball.jpg"
}
}Delete Activity
Mutation
mutation DeleteActivity($id: ID!) {
removeActivity(id: $id) {
deleted
message
}
}Variables
{
"id": "ACTIVITY_UUID"
}Add fee
Mutation
mutation CreateFee($schoolId: ID!, $input: CreateFeeInput!) {
addFee(schoolId: $schoolId, input: $input) {
id
name
amount
cycle
school {
id
name
}
}
}Variables
{
"schoolId": "School ID",
"input": {
"name": "Application Fee",
"amount": 1500,
"cycle": "YEARLY"
}
}Get fees for a school
Mutation
query FeesBySchool($schoolId: ID!) {
feesBySchool(schoolId: $schoolId) {
id
name
amount
cycle
}
}Variables
{
"schoolId": "School ID"
}Update fee
Mutation
mutation UpdateFee($id: ID!, $input: UpdateFeeInput!) {
modifyFee(id: $id, input: $input) {
message
data {
id
name
amount
cycle
}
}
}Variables
{
"id": "59d99e37-ecb2-4a31-90ae-f2e9bb308004",
"input": {
"name": "Exam Fee",
"amount": 2500,
"cycle": "YEARLY"
}
}Delete fee
Mutation
mutation DeleteFee($id: ID!) {
removeFee(id: $id) {
success
message
}
}Variables
{
"id": "fee ID"
}Add admission requirement
Mutation
mutation CreateAdmissionRequirement(
$schoolId: ID!
$input: CreateAdmissionRequirementInput!
) {
addAdmissionRequirement(schoolId: $schoolId, input: $input) {
id
name
description
isRequired
condition
programId
createdAt
}
}Variables
{
"schoolId": "54867fbe-f389-46a7-a80e-a233b3e32b71",
"input": {
"name": "WAEC Certificate",
"description": "Original WAEC certificate is required",
"isRequired": true
}
}Get admission requirements by school
Mutation
query AdmissionRequirementsBySchool($schoolId: ID!) {
admissionRequirementsBySchool(schoolId: $schoolId) {
id
name
description
isRequired
programId
condition
createdAt
}
}Variables
{
"schoolId": "54867fbe-f389-46a7-a80e-a233b3e32b71"
}Update admission requirement
Mutation
mutation UpdateAdmissionRequirement($input: UpdateAdmissionRequirementInput!) {
modifyAdmissionRequirement(input: $input) {
id
name
description
isRequired
condition
updatedAt
}
}Variables
{
"input": {
"id": "REQUIREMENT ID",
"description": "Original WAEC certificate (no photocopies)",
"isRequired": false
}
}Get admission requirement
Mutation
query AdmissionRequirement($id: ID!) {
getAdmissionRequirement(id: $id) {
id
name
description
isRequired
condition
programId
createdAt
updatedAt
}
}Variables
{
"id": "Requirement ID"
}Delete admission requirement
Mutation
mutation DeleteAdmissionRequirement($id: ID!) {
removeAdmissionRequirement(id: $id) {
success
message
}
}Variables
{
"id": "Requirement ID"
}Get School Applications (with filters and pagination)
Query
query GetSchoolApplications(
$schoolId: ID!
$filter: GetApplicationsFilterInput
) {
getSchoolApplications(schoolId: $schoolId, filter: $filter) {
applications {
id
publicId
courseName
studentName
studentEmail
studentProfilePicture
status
stage
progress
dateAdded
}
total
page
limit
totalPages
}
}Variables
Without filters (default pagination):
{
"schoolId": "SCHOOL_ID_HERE"
}With all filters:
{
"schoolId": "SCHOOL_ID_HERE",
"filter": {
"programId": "PROGRAM_ID_HERE",
"status": "UNDER_REVIEW",
"studentName": "John",
"dateFrom": "2026-01-01",
"dateTo": "2026-01-31",
"page": 1,
"limit": 20
}
}Filter by status only:
{
"schoolId": "SCHOOL_ID_HERE",
"filter": {
"status": "INTERVIEW_STAGE",
"page": 1,
"limit": 10
}
}Filter by student name:
{
"schoolId": "SCHOOL_ID_HERE",
"filter": {
"studentName": "Smith",
"page": 1,
"limit": 15
}
}Filter by date range:
{
"schoolId": "SCHOOL_ID_HERE",
"filter": {
"dateFrom": "2026-01-01",
"dateTo": "2026-01-31"
}
}Update Application Status
Mutation
mutation UpdateApplicationStatus($input: UpdateApplicationStatusInput!) {
updateApplicationStatus(input: $input) {
success
message
status
stage
}
}Variables
Move to Under Review:
{
"input": {
"applicationId": "APPLICATION_ID_HERE",
"status": "UNDER_REVIEW",
"note": "Application is now under review by the admissions committee."
}
}Move to Interview Stage:
{
"input": {
"applicationId": "APPLICATION_ID_HERE",
"status": "INTERVIEW_STAGE",
"note": "Congratulations! You have been selected for an interview."
}
}Approve Application:
{
"input": {
"applicationId": "APPLICATION_ID_HERE",
"status": "APPROVED",
"note": "Congratulations! Your application has been approved. Welcome to our institution!"
}
}Deny Application:
{
"input": {
"applicationId": "APPLICATION_ID_HERE",
"status": "DENY",
"note": "Thank you for your interest. Unfortunately, we cannot offer you admission at this time."
}
}Without note:
{
"input": {
"applicationId": "APPLICATION_ID_HERE",
"status": "UNDER_REVIEW"
}
}Status Options:
UNDER_REVIEW- Application is being reviewed (Stage: REVIEW)INTERVIEW_STAGE- Applicant invited for interview (Stage: INTERVIEW)APPROVED- Application approved (Stage: DECISION)DENY- Application denied (Stage: DECISION)
Add Note to Application
Mutation
mutation AddApplicationNote(
$applicationId: ID!
$input: AddNoteDto!
$isInternal: Boolean
) {
addApplicationNote(
applicationId: $applicationId
input: $input
isInternal: $isInternal
) {
id
publicId
status
stage
progress
notes {
id
content
isInternal
createdAt
author {
firstName
lastName
role
}
}
}
}Variables
External note (visible to student):
{
"applicationId": "APPLICATION_ID_HERE",
"input": {
"content": "We need your updated transcript."
},
"isInternal": false
}Internal note (only visible to school staff):
{
"applicationId": "APPLICATION_ID_HERE",
"input": {
"content": "Strong candidate, recommend for interview."
},
"isInternal": true
}Update Application Note
Mutation
mutation UpdateApplicationNote($input: UpdateNoteInput!) {
updateApplicationNote(input: $input) {
id
content
isInternal
createdAt
updatedAt
author {
firstName
lastName
role
}
}
}Variables
Update content only:
{
"input": {
"noteId": "NOTE_ID_HERE",
"content": "Updated note content here."
}
}Update content and visibility:
{
"input": {
"noteId": "NOTE_ID_HERE",
"content": "This note is now internal.",
"isInternal": true
}
}Delete Application Note
Mutation
mutation DeleteApplicationNote($noteId: ID!) {
deleteApplicationNote(noteId: $noteId) {
success
message
}
}Variables
{
"noteId": "NOTE_ID_HERE"
}Get Application Details
Query
query GetApplication($id: String!) {
application(id: $id) {
id
publicId
status
stage
progress
applicationFeeAmount
depositAmount
boardingFeeAmount
currencyCode
requiresAccommodation
accommodationType
school {
id
name
address
logo
institutionType
}
program {
id
name
description
duration
}
student {
id
firstName
lastName
fullName
email
}
requirements {
reqId
status
uploadedFile
submittedAt
requirement {
id
name
description
}
}
notes {
id
content
isInternal
createdAt
author {
firstName
lastName
role
}
}
}
}Variables
{
"id": "APPLICATION_ID"
}Get All Students
Query
query GetAllStudents($filter: StudentsFilterInput) {
getAllStudents(filter: $filter) {
id
name
email
profilePicture
nationality
dateAdded
applicationsSummary {
visible {
id
status
progress
}
extraCount
}
}
}Variables
{
"filter": {
"name": "John",
"applicationStatus": "UNDER_REVIEW",
"dateFrom": "2024-01-01T00:00:00Z"
}
}Get One Student Detail
Query
query GetOneStudentDetail($id: ID!) {
getOneStudentDetail(id: $id) {
id
firstName
middleName
lastName
gender
dateOfBirth
email
phone
country
zipCode
educationHistory {
schoolName
degree
}
workExperience {
companyName
position
}
testScores {
testName
score
}
documents {
id
name
url
status
}
totalActiveApplications
}
}Variables
{
"id": "STUDENT_USER_ID"
}Get Student Applications
Query
query GetStudentApplications(
$studentId: ID!
$filter: StudentApplicationsFilterInput
) {
getStudentApplications(studentId: $studentId, filter: $filter) {
id
course
schoolName
schoolLogo
status
dateAdded
}
}Variables
{
"studentId": "STUDENT_USER_ID",
"filter": {
"status": "APPROVED"
}
}Get All Applications (Admin) - front page
Query
query AdminGetAllApplications($filter: AdminGetApplicationsFilterInput) {
adminGetAllApplications(filter: $filter) {
applications {
id
publicId
courseName
schoolName
schoolLogo
studentName
studentEmail
studentProfilePicture
status
stage
createdAt
updatedAt
}
total
page
limit
totalPages
}
}Variables
{
"filter": {
"studentName": "John",
"status": "UNDER_REVIEW",
"page": 1,
"limit": 10
}
}Get Application Details
Query
query GetApplication($id: String!) {
application(id: $id) {
id
publicId
status
stage
progress
applicationFeeAmount
depositAmount
boardingFeeAmount
currencyCode
requiresAccommodation
accommodationType
school {
id
name
address
logo
institutionType
}
program {
id
name
description
duration
}
student {
id
firstName
lastName
fullName
email
}
requirements {
reqId
status
uploadedFile
submittedAt
requirement {
id
name
description
}
}
notes {
id
content
isInternal
createdAt
author {
firstName
lastName
role
}
}
}
}Variables
{
"id": "APPLICATION_ID"
}Add Note to Application
Mutation
mutation AddApplicationNote(
$applicationId: ID!
$input: AddNoteDto!
$isInternal: Boolean
) {
addApplicationNote(
applicationId: $applicationId
input: $input
isInternal: $isInternal
) {
id
publicId
status
stage
progress
notes {
id
content
isInternal
createdAt
author {
firstName
lastName
role
}
}
}
}Variables
External note (visible to student):
{
"applicationId": "APPLICATION_ID_HERE",
"input": {
"content": "We need your updated transcript."
},
"isInternal": false
}Internal note (only visible to school staff):
{
"applicationId": "APPLICATION_ID_HERE",
"input": {
"content": "Strong candidate, recommend for interview."
},
"isInternal": true
}Update Application Note
Mutation
mutation UpdateApplicationNote($input: UpdateNoteInput!) {
updateApplicationNote(input: $input) {
id
content
isInternal
createdAt
updatedAt
author {
firstName
lastName
role
}
}
}Variables
Update content only:
{
"input": {
"noteId": "NOTE_ID_HERE",
"content": "Updated note content here."
}
}Update content and visibility:
{
"input": {
"noteId": "NOTE_ID_HERE",
"content": "This note is now internal.",
"isInternal": true
}
}Delete Application Note
Mutation
mutation DeleteApplicationNote($noteId: ID!) {
deleteApplicationNote(noteId: $noteId) {
success
message
}
}Variables
{
"noteId": "NOTE_ID_HERE"
}Create Application (Admin)
Mutation
mutation AdminCreateApplication($input: AdminCreateApplicationInput!) {
adminCreateApplication(input: $input) {
success
message
application {
id
publicId
courseName
schoolName
schoolLogo
studentName
studentEmail
status
stage
createdAt
}
}
}Variables
{
"input": {
"studentId": "STUDENT_UUID_HERE",
"programId": "PROGRAM_UUID_HERE",
"academicIntake": "Fall 2025",
"passportCopyUrl": "https://example.com/passport.jpg",
"emergencyContact": {
"name": "Jane Doe",
"email": "jane@example.com",
"phone": "+123456789",
"relationship": "Mother",
"address": "123 Main St"
}
}
}Get All App Admins
Query
query AdminGetAllAppAdmins($filter: AppAdminFilterInput) {
adminGetAllAppAdmins(filter: $filter) {
id
name
email
profilePicture
role
status
createdAt
}
}Variables
{
"filter": {
"name": "Admin",
"status": "ACTIVE",
"role": "ADMIN"
}
}Toggle User Status (Activate/Deactivate)
Mutation
mutation AdminToggleUserStatus($input: ToggleUserStatusInput!) {
adminToggleUserStatus(input: $input) {
success
message
}
}Variables
{
"input": {
"userId": "USER_ID_HERE",
"active": false
}
}Revoke Invitation
Mutation
mutation AdminRevokeInvite($inviteId: ID!) {
adminRevokeInvite(inviteId: $inviteId)
}Variables
{
"inviteId": "INVITE_ID_HERE"
}Get All Roles
Query
query GetAllRoles {
roles {
id
name
description
permissions {
id
model {
name
}
action {
name
}
}
totalUsers
totalPermissions
}
}Get Role By ID
Query
query GetRoleById($id: ID!) {
getRoleById(id: $id) {
id
name
description
permissions {
model {
name
}
action {
name
}
}
}
}Variables
{
"id": "ROLE_ID_HERE"
}Create New Role
Mutation
mutation CreateRole($data: CreateRoleDto!) {
createRole(data: $data) {
id
name
description
permissions {
model {
name
}
action {
name
}
}
}
}Variables
{
"data": {
"name": "School Editor",
"description": "Can only view schools and update programs",
"userType": "SCHOOL",
"permissions": [
{
"domain": "School",
"actions": ["READ"]
},
{
"domain": "Program",
"actions": ["UPDATE"]
}
]
}
} CREATE
READ
UPDATE
DELETE
Home
Invoice
User
Program
Audit
Invite
InviteUser
InviteSchool
Application
Requirement
Transaction
Subscription
School
Faq
AdmissionRequirement
Payment
Fee
RoleEntity
Account
ApplicationStatus
ApplicationNote
Update Role
Mutation
mutation UpdateRole($data: UpdateRoleDto!) {
updateRole(data: $data) {
id
name
description
}
}Variables
{
"data": {
"id": "ROLE_ID_HERE",
"name": "Updated Role Name",
"permissions": [
{
"domain": "Application",
"actions": ["READ", "UPDATE"]
}
]
}
}Delete Role
Mutation
mutation DeleteRole($id: ID!) {
deleteRole(id: $id)
}Variables
{
"id": "ROLE_ID_HERE"
}Assign Role To User
Mutation
mutation AssignRoleToUser($data: AssignRoleInput!) {
assignRoleToUser(data: $data)
}Variables
{
"data": {
"userId": "USER_ID_HERE",
"roleId": "ROLE_ID_HERE"
}
}Get Admin Audit Logs
Query
query GetAdminAuditLogs($filter: AuditFilterInput) {
getAdminAuditLogs(filter: $filter) {
data {
id
category
action
description
metadata
ipAddress
sessionId
userId
createdAt
user {
id
fullName
email
role
}
}
total
page
pageSize
}
}Variables
{
"filter": {
"category": "TEAM_MANAGEMENT",
"search": "School Vice Principal",
"startDate": "2024-01-01T00:00:00Z",
"endDate": "2024-12-31T23:59:59Z",
"page": 1,
"pageSize": 10
}
}Available Categories (AuditCategory)
LOGINSCHOOLAGENTSSTUDENTSAPPLICATIONSSUBSCRIPTIONTEAM_MANAGEMENTINVOICESACCOUNT
Get Dashboard Summary Stats
Query
query GetDashboardSummaryStats($days: Int) {
getDashboardSummaryStats(days: $days) {
totalActiveUsers {
value
percentageChange
}
totalNewUsers {
value
percentageChange
}
}
}Variables
{
"days": 30
}Get Dashboard Trend Data
Query
query GetDashboardTrendData($days: Int) {
getDashboardTrendData(days: $days) {
date
activeUsers
newUsers
}
}Variables
{
"days": 30
}Get Top Users By Application
Query
query GetTopUsersByApplication {
getTopUsersByApplication {
userName
applicationCount
trendPercentage
profilePic
}
}Get Application Status Distribution
Query
query GetApplicationStatusDistribution {
getApplicationStatusDistribution {
successful
pending
denied
successfulTrend
pendingTrend
deniedTrend
}
}Get Visa Success Analytics
Query
query GetVisaSuccessAnalytics {
getVisaSuccessAnalytics {
country
total
approved
denied
score
}
}Get Applicants By Country Stats
Query
query GetApplicantsByCountryStats {
getApplicantsByCountryStats {
country
count
successRate
flagUrl
}
}Get Top Destinations
Query
query GetTopDestinations {
getTopDestinations {
country
count
trendPercentage
flagUrl
}
}Toggle School Visibility
Mutation
mutation ToggleSchoolVisibility($id: ID!, $isHidden: Boolean!) {
toggleSchoolVisibility(id: $id, isHidden: $isHidden) {
id
name
isHidden
}
}Variables
{
"id": "SCHOOL_ID",
"isHidden": true
}Create FAQ
Mutation
mutation CreateFaq($schoolId: ID!, $input: CreateFaqInput!) {
createFaq(schoolId: $schoolId, input: $input) {
id
question
answer
}
}Variables
{
"schoolId": "school ID",
"input": {
"question": "What is the application deadline?",
"answer": "The deadline is August 31st."
}
}Get FAQs by School
Query
query GetFaqsBySchool($schoolId: ID!) {
getFaqsBySchool(schoolId: $schoolId) {
id
question
answer
}
}Variables
{
"schoolId": "school ID"
}Update FAQ
Mutation
mutation UpdateFaq($input: UpdateFaqInput!) {
updateFaq(input: $input) {
id
question
answer
}
}Variables
{
"input": {
"id": "faq ID",
"question": "Updated question?",
"answer": "Updated answer."
}
}Delete FAQ
Mutation
mutation DeleteFaq($id: ID!) {
deleteFaq(id: $id) {
success
message
}
}Variables
{
"id": "faq ID"
}Get Student Notifications
Query
query GetStudentNotification($isRead: Boolean, $page: Int, $limit: Int) {
getStudentNotification(isRead: $isRead, page: $page, limit: $limit) {
notifications {
id
type
title
message
context
referenceId
isRead
createdAt
readAt
}
total
unreadCount
page
limit
totalPages
}
}Variables
{
"isRead": false,
"page": 1,
"limit": 10
}Mark Notification as Read
Mutation
mutation MarkNotificationAsRead($notificationId: ID!) {
markNotificationAsRead(notificationId: $notificationId) {
id
isRead
readAt
}
}Variables
{
"notificationId": "NOTIFICATION_ID_HERE"
}Mark All Notifications as Read
Mutation
mutation MarkAllNotificationsAsRead {
markAllNotificationsAsRead
}Get School Notifications
Query
query GetSchoolNotification(
$schoolId: ID!
$isRead: Boolean
$page: Int
$limit: Int
) {
getSchoolNotification(
schoolId: $schoolId
isRead: $isRead
page: $page
limit: $limit
) {
notifications {
id
type
title
message
context
referenceId
isRead
createdAt
readAt
}
total
unreadCount
page
limit
totalPages
}
}Variables
{
"schoolId": "SCHOOL_ID_HERE",
"isRead": false,
"page": 1,
"limit": 10
}Mark School Notification as Read
Mutation
mutation MarkNotificationAsRead($notificationId: ID!, $schoolId: ID) {
markNotificationAsRead(notificationId: $notificationId, schoolId: $schoolId) {
id
isRead
readAt
}
}Variables
{
"notificationId": "NOTIFICATION_ID_HERE",
"schoolId": "SCHOOL_ID_HERE"
}Mark All School Notifications as Read
Mutation
mutation MarkAllNotificationsAsRead($schoolId: ID) {
markAllNotificationsAsRead(schoolId: $schoolId)
}Variables
{
"schoolId": "SCHOOL_ID_HERE"
}Invite User
Mutation
mutation AdminInviteUser($input: InviteUserInput!) {
adminInviteUser(input: $input) {
id
token
role
expiresAt
}
}Variables
{
"input": {
"email": "testuser@example.com",
"firstName": "John",
"lastName": "Doe",
"role": "STUDENT"
}
}Invite User
Mutation
mutation CompleteUserRegistration($input: CompleteUserRegistrationInput!) {
completeUserRegistration(input: $input) {
message
token
user {
id
email
firstName
lastName
fullName
role
status
}
}
}Variables
{
"input": {
"token": "<PLACE_THE_TOKEN_RECEIVED_FROM_THE_EMAIL_HERE>",
"password": "SecurePassword123!"
}
}