Legacy API Docs

Teams API

This service manages teams for Kickstart — BizTech's startup-pitch competition. It handles team creation, scoring, judging feedback, round management, and leaderboards.

DynamoDB Tables

  • biztechTeams (constant TEAMS_TABLE) — PK: id (teamID), SK: eventID;year
  • biztechTeamJudgeFeedback (constant TEAM_JUDGE_FEEDBACK_TABLE) — judging submissions

Handler: services/teams/handler.js


Endpoints

1. Update Team Points

  • Method: PUT
  • Path: /team/points

Request

{
  "teamID": "team123",
  "points": 50
}

Response

{
  "success": true,
  "message": "Team points updated successfully",
  "teamID": "team123",
  "newPoints": 50
}

2. Add Multiple QR Scans

  • Method: PUT
  • Path: /team/addQuestions

Request

{
  "teamID": "team123",
  "questions": ["Q1", "Q2", "Q3"]
}

Response

{
  "success": true,
  "message": "Questions added successfully",
  "teamID": "team123",
  "added": 3
}

3. Make Team

  • Method: POST
  • Path: /team/make

Request

{
  "eventID": "hackathon2025",
  "year": 2025,
  "teamName": "Innovators",
  "members": ["user1", "user2"]
}

Response

{
  "success": true,
  "message": "Team created successfully",
  "team": {
    "teamID": "team123",
    "eventID": "hackathon2025",
    "year": 2025,
    "teamName": "Innovators",
    "members": ["user1", "user2"]
  }
}

4. Get Team From User ID

  • Method: POST
  • Path: /team/getTeamFromUserID

Request

{
  "userID": "user1"
}

Response

{
  "success": true,
  "team": {
    "teamID": "team123",
    "teamName": "Innovators",
    "eventID": "hackathon2025",
    "year": 2025
  }
}

5. Get All Teams for Event/Year

  • Method: GET
  • Path: /team/{eventID}/{year}

Example Request

GET /team/hackathon2025/2025

Response

{
  "success": true,
  "teams": [
    {
      "teamID": "team123",
      "teamName": "Innovators",
      "members": ["user1", "user2"]
    },
    {
      "teamID": "team456",
      "teamName": "Builders",
      "members": ["user3", "user4"]
    }
  ]
}

6. Change Team Name

  • Method: POST
  • Path: /team/changeTeamName

Request

{
  "teamID": "team123",
  "newName": "Visionaries"
}

Response

{
  "success": true,
  "message": "Team name updated successfully",
  "teamID": "team123",
  "newName": "Visionaries"
}

7. Get Normalized Round Scores

  • Method: GET
  • Path: /team/scores-all

Response

{
  "success": true,
  "scores": [
    {
      "teamID": "team123",
      "normalizedScore": 92.5
    },
    {
      "teamID": "team456",
      "normalizedScore": 88.1
    }
  ]
}

8. Get Team Feedback Score

  • Method: GET
  • Path: /team/feedback/{teamID}

Example Request

GET /team/feedback/team123

Response

{
  "success": true,
  "teamID": "team123",
  "feedbackScore": 4.7
}

9. Get Judge Current Team

  • Method: GET
  • Path: /team/judge/currentTeamID/{judgeID}

Example Request

GET /team/judge/currentTeamID/judge42

Response

{
  "success": true,
  "judgeID": "judge42",
  "currentTeamID": "team123"
}

10. Get Judge Submissions

  • Method: GET
  • Path: /team/judge/feedback/{judgeID}

Example Request

GET /team/judge/feedback/judge42

Response

{
  "success": true,
  "judgeID": "judge42",
  "submissions": [
    {
      "teamID": "team123",
      "score": 85,
      "comments": "Great presentation"
    }
  ]
}

11. Create Judge Submission

  • Method: POST
  • Path: /team/judge/feedback

Request

{
  "judgeID": "judge42",
  "teamID": "team123",
  "score": 90,
  "comments": "Excellent innovation"
}

Response

{
  "success": true,
  "message": "Submission created successfully"
}

12. Update Judge Submission

  • Method: PUT
  • Path: /team/judge/feedback

Request

{
  "judgeID": "judge42",
  "teamID": "team123",
  "score": 95,
  "comments": "Improved after Q&A"
}

Response

{
  "success": true,
  "message": "Submission updated successfully"
}

13. Update Current Team for Judge

  • Method: PUT
  • Path: /team/judge/currentTeam/{teamID}

Example Request

PUT /team/judge/currentTeam/team123

Request Body

{
  "judgeID": "judge42"
}

Response

{
  "success": true,
  "message": "Judge current team updated successfully",
  "judgeID": "judge42",
  "teamID": "team123"
}

14. Get Current Round

  • Method: GET
  • Path: /team/round

Response

{
  "success": true,
  "currentRound": 2
}

15. Set Current Round

  • Method: PUT
  • Path: /team/round/{round}

Example Request

PUT /team/round/3

Response

{
  "success": true,
  "message": "Current round updated",
  "newRound": 3
}

16. Join a Team

  • Method: POST
  • Path: /team/join

Request

{
  "eventID": "kickstart",
  "year": 2025,
  "memberID": "isaac@ubcbiztech.com",
  "teamID": "206abfa6-4b56-4316-af59-9cc3c1b0863c"
}

Response

{
  "message": "Successfully joined team.",
  "teamName": "test",
  "memberIDs": ["isaac@ubcbiztech.com", "benny@ubcbiztech.com"],
  "response": {
    "eventID": "kickstart",
    "year": 2025,
    "memberID": "isaac@ubcbiztech.com",
    "teamID": "206abfa6-4b56-4316-af59-9cc3c1b0863c"
  }
}

17. Leave a Team

  • Method: POST
  • Path: /team/leave

Request

{
  "eventID": "kickstart",
  "year": 2025,
  "memberID": "isaac@ubcbiztech.com"
}

Response

{
  "message": "Successfully left team.",
  "response": {
    "eventID": "kickstart",
    "year": 2025,
    "memberID": "isaac@ubcbiztech.com"
  }
}
Previous
Connections