Skip to main content

API Routes - Parameters and Body Requests

1. Achievements API (/achievements)

POST /achievements - Create achievement (admin only)

Body:
{
  userId: string;
  type: string;
  title: string;
  description: string;
  expiresAt?: string;
  metadata?: any;
}

PATCH /achievements - Update achievement (admin only)

Body:
{
  achievementId: string;
  title?: string;
  description?: string;
  metadata?: any;
}

DELETE /achievements/:achievementId - Delete achievement (admin only)

Params: achievementId (string)

GET /achievements/user/:userId - Get user’s achievements

Params: userId (string)

GET /achievements/user/:userId/active - Get active achievements

Params: userId (string)

GET /achievements/user/:userId/type/:type - Get achievements by type

Params: userId (string), type (string)

GET /achievements/user/:userId/metadata - Get achievements by metadata

Params: userId (string) Query:
{
  teamId?: string;
  currentLevel?: string;
  ranking?: string;
}

GET /achievements/list - Get all achievements (admin only)

No params/body

GET /achievements/:achievementId - Get specific achievement (admin only)

Params: achievementId (string)

GET /achievements/showcase/:userId - Get showcase achievements

Params: userId (string)

PUT /achievements/showcase/:userId - Update showcase achievements

Params: userId (string) Body:
{
  showcaseAchievementIds: string[];
}

DELETE /achievements/showcase/:userId - Delete showcase achievements

Params: userId (string)

GET /achievements/badges/active/:userId - Get active badges

Params: userId (string)

GET /achievements/badges/:userId - Get all badges

Params: userId (string)

POST /achievements/test/monthly-badges - Test monthly badge calculation

No params/body

2. Admin API (/admin)

PATCH /admin - Update admin (admin only)

Body:
{
  userEmail: string;
  userSub: string;
}

POST /admin - Create admin (admin only)

Body:
{
  userEmail: string;
}

DELETE /admin/:userSub - Delete admin (admin only)

Params: userSub (string)

GET /admin/list - Get all admins (admin only)

No params/body

GET /admin/:userId - Get admin by ID (admin only)

Params: userId (string)

GET /admin - Get current admin

No params/body

3. Combined Data API (/combined-data)

GET /combined-data/forRepo/allIntakes/:repoDataId

Params: repoDataId (string)

GET /combined-data/forTeam/allIntakes/:teamDataId

Params: teamDataId (string)

GET /combined-data/forRepo/allPushes/:repoDataId

Params: repoDataId (string)

GET /combined-data/forRepo/allWorkflows/:repoDataId

Params: repoDataId (string)

GET /combined-data/forRepo/allIssues/:repoDataId

Params: repoDataId (string)

GET /combined-data/forTeam/allPushes/:teamDataId

Params: teamDataId (string)

GET /combined-data/forTeam/allWorkflows/:teamDataId

Params: teamDataId (string)

GET /combined-data/forTeam/allIssues/:teamDataId

Params: teamDataId (string)

GET /combined-data/forUser/repoAndTeamData

No params/body

GET /combined-data/forUser/allIntakes

No params/body

GET /combined-data/paginated/forRepo/allIntakes/:repoDataId

Params: repoDataId (string) Query:
{
  limit?: number;        // default 10, max 100
  offset?: number;       // default 0
  sortBy?: string;       // 'addedDate' | 'workflowAction' | 'workflowConclusion'
  sortOrder?: string;    // 'asc' | 'desc'
  repoId?: string;
  repoName?: string;
  hookType?: string;
  workflowAction?: string;
  workflowConclusion?: string;
  dateFrom?: string;
  dateTo?: string;
}

GET /combined-data/paginated/forTeam/allIntakes/:teamDataId

Params: teamDataId (string) Query: Same as above

GET /combined-data/git-api/orgMembers/forTeam/:teamDataId

Params: teamDataId (string)

GET /combined-data/git-api/repoActivity/:repoDataId

Params: repoDataId (string)

GET /combined-data/git-api/repoActivity/forTeam/:teamDataId

Params: teamDataId (string)

GET /combined-data/git-api/repoContributors/forTeam/:teamDataId

Params: teamDataId (string)

GET /combined-data/git-api/repoContributors/forRepo/:repoDataId

Params: repoDataId (string)

GET /combined-data/git-api/repoStats/allTime/:repoDataId

Params: repoDataId (string)

GET /combined-data/git-api/repoStats/statSelection/:repoDataId

Params: repoDataId (string)

GET /combined-data/git-api/repoStats/statSelection/:teamDataId

Params: teamDataId (string)

GET /combined-data/git-api/issueTiming/forRepo/:repoDataId

Params: repoDataId (string)

GET /combined-data/git-api/issueTiming/forTeam/:teamDataId

Params: teamDataId (string)

GET /combined-data/git-api/issueSummary/forTeam/:teamDataId

Params: teamDataId (string)

GET /combined-data/git-api/weekIssue/forTeam/:teamDataId

Params: teamDataId (string)

GET /combined-data/git-api/pulls/forTeam/:teamDataId

Params: teamDataId (string)

GET /combined-data/git-api/pulls/forRepo/:repoDataId

Params: repoDataId (string)

GET /combined-data/git-api/pulls/forRepo/:repoDataId/:pullNumber

Params: repoDataId (string), pullNumber (string)

GET /combined-data/git-api/branches/forRepo/:repoDataId

Params: repoDataId (string)

GET /combined-data/git-api/pullTiming/forRepo/:repoDataId

Params: repoDataId (string)

GET /combined-data/test/testingStats/forRepo/:repoDataId

Params: repoDataId (string)

4. Company Data API (/company-data)

POST /company-data - Create company

Body:
{
  name: string;
  users?: Array<{userDataId: string}>;
  teamDataIds?: Array<{teamDataId: string}>;
}

PATCH /company-data - Update company

Body:
{
  companyDataId: string;
  name?: string;
  users?: Array<{userDataId: string}>;
  teamDataIds?: Array<{teamDataId: string}>;
}

DELETE /company-data/:companyDataId - Delete company

Params: companyDataId (string)

DELETE /company-data/removeTeam/:companyDataId - Remove team

Params: companyDataId (string) Body:
{
  teamDataId: string;
}

GET /company-data/list - Get all companies

No params/body

GET /company-data/:companyDataId - Get company by ID

Params: companyDataId (string)

POST /company-data/addTeam - Add team to company

Body:
{
  companyDataId: string;
  teamDataId: string;
}

GET /company-data/getAllMembers/:companyDataId - Get all members

Params: companyDataId (string)

POST /company-data/addAdmin/:companyDataId - Add admin

Params: companyDataId (string) Body:
{
  userDataId: string;
}

POST /company-data/removeAdmin/:companyDataId - Remove admin

Params: companyDataId (string) Body:
{
  userDataId: string;
}

POST /company-data/updateCompanyName/:companyDataId - Update name

Params: companyDataId (string) Body:
{
  name: string;
}

POST /company-data/inviteUsers/:companyDataId - Invite users

Params: companyDataId (string) Body:
{
  userEmails: string[];
}

POST /company-data/acceptInvite/:companyDataId - Accept invite

Params: companyDataId (string) Body:
{
  inviteType: string;
}

POST /company-data/setApprovedDomains/:companyDataId - Set domains

Params: companyDataId (string) Body:
{
  authorisedDomains: string[];
}

POST /company-data/create-new-team/:companyDataId - Create team

Params: companyDataId (string) Body:
{
  teamName: string;
  users?: Array<{userDataId: string}>;
  gitAPIToken: string;
  teamDescription?: string;
}

5. GitHub API (/github-api)

GET /github-api/userTest/:user/:teamDataId - Test user API

Params: user (string), teamDataId (string)

GET /github-api/repoIssues/:teamDataId - Get repo issues

Params: teamDataId (string) Body:
{
  repoURL: string;
}

GET /github-api/getCommitData/:intakeDataId - Get commit data

Params: intakeDataId (string)

6. GitHub Intake API (/github-intake)

POST /github-intake/:repoDataId - Webhook handler

Params: repoDataId (string) Body: GitHub webhook payload (varies by event type)

GET /github-intake/summarisePush/:githubIntakeId - Summarize push

Params: githubIntakeId (string)

GET /github-intake/getGeneralIntake/:githubIntakeId - Get intake data

Params: githubIntakeId (string)

GET /github-intake/testBedrock - Test Bedrock

No params/body

GET /github-intake/deleteSpecificIntakeTypes - Delete intake types

No params/body

POST /github-intake/testKnowledge/:teamDataId - Test knowledge base

Params: teamDataId (string) Body:
{
  question: string;
  sessionId?: string;
}

POST /github-intake/knowledge_base_team/:teamDataId - Query knowledge base

Params: teamDataId (string) Body:
{
  question: string;
  sessionId?: string;
}

7. Notification Data API (/notifications)

POST /notifications - Create notification (admin only)

Body:
{
  userId: string;
  type: string;
  title: string;
  message: string;
  expiresAt?: number;
  metadata?: any;
  teamId?: string;
  commitId?: string;
  repository?: string;
  repositoryId?: string;
}

PATCH /notifications - Update notification

Body:
{
  notificationId: string;
  read?: number;
  title?: string;
  message?: string;
  metadata?: any;
}

DELETE /notifications/:notificationId - Delete notification

Params: notificationId (string)

GET /notifications/user/:userId - Get user notifications

Params: userId (string)

GET /notifications/user/:userId/unread - Get unread notifications

Params: userId (string)

PATCH /notifications/user/:userId/mark-all-read - Mark all as read

Params: userId (string)

GET /notifications/user/:userId/type/:type - Get by type

Params: userId (string), type (string)

GET /notifications/user/:userId/metadata - Get by metadata

Params: userId (string) Query:
{
  teamId?: string;
  commitId?: string;
  repository?: string;
}

GET /notifications/list - Get all notifications (admin only)

No params/body

GET /notifications/:notificationId - Get specific notification (admin only)

Params: notificationId (string)

8. Repo Data API (/repo-data)

POST /repo-data/newRepo - Create repository

Body:
{
  repoURL: string;
  repoName: string;
  repoDescription?: string;
  headTeamDataId: string;
}

GET /repo-data/getTeamDataId/:repoDataId - Get team ID

Params: repoDataId (string)

PATCH /repo-data - Update repository

Body:
{
  repoDataId: string;
  repoURL?: string;
  repoName?: string;
  repoDescription?: string;
  repoMembers?: Array<{userDataId: string; role: number}>;
}

DELETE /repo-data/:repoDataId - Delete repository

Params: repoDataId (string)

GET /repo-data/list - Get all repositories

No params/body

GET /repo-data/:repoDataId - Get repository by ID

Params: repoDataId (string)

GET /repo-data/getRepoMembers/:repoDataId - Get repository members

Params: repoDataId (string)

GET /repo-data/getRepoData/:repoDataId - Get repository data

Params: repoDataId (string)

POST /repo-data/updateRepoName/:repoDataId - Update repository name

Params: repoDataId (string) Body:
{
  repoName: string;
}

POST /repo-data/updateRepoDescription/:repoDataId - Update description

Params: repoDataId (string) Body:
{
  repoDescription: string;
}

POST /repo-data/inviteUsers/:repoDataId - Invite users

Params: repoDataId (string) Body:
{
  userEmails: string[];
  userRole: number;
}

POST /repo-data/acceptInvite/:teamDataId - Accept invite

Params: teamDataId (string)

POST /repo-data/removeInvite/:repoDataId - Remove invite

Params: repoDataId (string) Body:
{
  userEmail: string;
}

DELETE /repo-data/remove-user/:repoDataId - Remove user

Params: repoDataId (string) Body:
{
  userDataId: string;
}

9. Team Data API (/team-data)

PATCH /team-data - Update team

Body:
{
  teamDataId: string;
  teamName?: string;
  gitAPIToken?: string;
  teamDescription?: string;
}

GET /team-data/list - Get all teams

No params/body

GET /team-data/:teamDataId - Get team by ID

Params: teamDataId (string)

POST /team-data/create-new-repo/:teamDataId - Create repository

Params: teamDataId (string) Body:
{
  repoURL: string;
  repoName: string;
  repoDescription?: string;
}

POST /team-data/addRepo/:teamDataId - Add repository

Params: teamDataId (string) Body:
{
  repoDataId: string;
}

GET /team-data/repos/:teamDataId - Get team repositories

Params: teamDataId (string)

POST /team-data/removeRepo/:teamDataId - Remove repository

Params: teamDataId (string) Body:
{
  repoDataId: string;
}

GET /team-data/getTeamMembers/:teamDataId - Get team members

Params: teamDataId (string)

POST /team-data/updateUserRole/:teamDataId - Update user role

Params: teamDataId (string) Body:
{
  userDataId: string;
  role: number;
}

POST /team-data/removeUserFromTeam/:teamDataId - Remove user

Params: teamDataId (string) Body:
{
  userDataId: string;
}

POST /team-data/removeUser/:teamDataId - Remove user

Params: teamDataId (string) Body:
{
  userDataId: string;
}

POST /team-data/inviteUsers/:teamDataId - Invite users

Params: teamDataId (string) Body:
{
  userEmails: string[];
  userRole: number;
}

POST /team-data/acceptInvite/:teamDataId - Accept invite

Params: teamDataId (string) Body:
{
  inviteType: string;
}

POST /team-data/setAIPrompt/:teamDataId - Set AI prompt

Params: teamDataId (string) Body:
{
  aiPrompt: string;
}

POST /team-data/removeInvite/:teamDataId - Remove invite

Params: teamDataId (string) Body:
{
  userEmail: string;
}

10. User Auth API (/user-auth)

GET /user-auth/getByUserSub - Get user auth

No params/body

11. User Data API (/user-data)

POST /user-data - Create user

Body:
{
  userName: string;
  gitname: string;
  userEmail: string;
  userConfig?: {
    emailNotifications: boolean;
    showSocials: boolean;
    teamNotifications: boolean;
    commitNotifications: boolean;
    achievementNotifications: boolean;
    pipelineFailureNotifications: boolean;
  };
}

PATCH /user-data/:userDataId - Update user

Params: userDataId (string) Body:
{
  userName?: string;
  gitname?: string;
  userSub?: string;
  userEmail?: string;
  userConfig?: any;
}

PATCH /user-data/:userDataId/notification-preferences - Update preferences

Params: userDataId (string) Body:
{
  userConfig: Partial<UserConfig>;
}

DELETE /user-data/deleteUserData/:userDataId - Delete user

Params: userDataId (string)

GET /user-data/list - Get all users

No params/body

GET /user-data/findUserInTeams/:userDataId - Find user in teams

Params: userDataId (string)

GET /user-data/getByUserSub/:userSub - Get user by sub

Params: userSub (string)

GET /user-data/getCurrentUser - Get current user

No params/body

POST /user-data/addUserSub/:userDataId - Add user sub

Params: userDataId (string)

POST /user-data/changeProfilePicture - Change profile picture

Body:
{
  profilePicture: string;
}

DELETE /user-data/deleteProfilePicture - Delete profile picture

No params/body

GET /user-data/doesUserExist - Check if user exists

No params/body

GET /user-data/getUserData/:userDataId - Get user data

Params: userDataId (string)

POST /user-data/updateBio - Update bio

Body:
{
  bio: string;
}

POST /user-data/updateUserConfig - Update config

Body:
{
  userConfig: any;
}

POST /user-data/setDefaultConfig - Set default config

No params/body

GET /user-data/searchUserByEmail/:teamDataId - Search by email

Params: teamDataId (string) Body:
{
  userEmail: string;
}

GET /user-data/searchUserByName/:teamDataId - Search by name

Params: teamDataId (string) Body:
{
  userName: string;
}

GET /user-data/getPendingInvites - Get pending invites

No params/body

POST /user-data/matt/forceUpdateImage - Force update image (testing)

Body:
{
  imageUrl: string;
}