API Docs (Legacy)
Members API
Members API
This service is responsible for managing BizTech members, including creating, retrieving, updating, and deleting member records stored in DynamoDB.
Authentication & Authorization
- All endpoints (except
POST /members) require Cognito authentication. - Only users with
@ubcbiztech.comemails are authorized to call this service. - Unauthorized users will receive a
403 Unauthorizedresponse.
POST /members/
Creates a new member record.
Request
| Headers | Type | Required? |
|---|---|---|
| Authorization | Bearer Token | Y |
| Body Property | Description | Required? |
|---|---|---|
| Email address (unique ID) | Y | |
| first_name | First name | Y |
| last_name | Last name | Y |
| pronouns | Pronouns | N |
| student_number | Student number | N |
| faculty | Faculty name | N |
| year | Year of study | N |
| major | Major/Program | N |
| prev_member | Whether user is a returning member (boolean) | N |
| international | International student (boolean) | N |
| education | Current education status | N |
| topics | Interests/topics array | N |
| heard_from | How they heard of BizTech | N |
| heardFromSpecify | Freeform detail on source | N |
| diet | Dietary restrictions | N |
| university | University name | N |
| high_school | High school name | N |
| admin | Admin flag (boolean) | N |
Example Request
{
"email": "student@example.com",
"first_name": "Alice",
"last_name": "Wong",
"faculty": "Commerce",
"year": "3",
"major": "Accounting",
"prev_member": false,
"international": true,
"topics": ["Finance", "Tech"],
"heard_from": "Friend"
}
Response
{
"message": "Created!",
"params": {
"id": "student@example.com",
"firstName": "Alice",
"lastName": "Wong",
"faculty": "Commerce",
"year": "3",
"major": "Accounting",
"international": true,
"topics": ["Finance", "Tech"],
"createdAt": 1755702100000,
"updatedAt": 1755702100000
}
}
Errors
403Unauthorized if caller is not@ubcbiztech.com.400Invalid email format.409Email already exists.502Internal server error.
GET /members/{id}
Fetch a single member by email.
Request
| Headers | Type |
|---|---|
| Authorization | Bearer Token |
| Path Param | Description |
|---|---|
| id | Member’s email |
Example Request
GET /members/student@example.com
Response
{
"id": "student@example.com",
"firstName": "Alice",
"lastName": "Wong",
"faculty": "Commerce",
"year": "3",
"major": "Accounting",
"international": true,
"topics": ["Finance", "Tech"],
"createdAt": 1755702100000,
"updatedAt": 1755702100000
}
Errors
403Unauthorized400Invalid email404Member not found
GET /members/
Fetch all members.
Request
| Headers | Type |
|---|---|
| Authorization | Bearer Token |
Response
{
"message": "success",
"data": [
{
"id": "student@example.com",
"firstName": "Alice",
"lastName": "Wong",
"year": "3",
"major": "Accounting",
"createdAt": 1755702100000,
"updatedAt": 1755702100000
},
{
"id": "bob@example.com",
"firstName": "Bob",
"lastName": "Li",
"year": "4",
"major": "Finance"
}
]
}
PATCH /members/{id}
Update an existing member by email.
Request
| Headers | Type |
|---|---|
| Authorization | Bearer Token |
| Path Param | Description |
|---|---|
| id | Member’s email |
Body
- Accepts any subset of the fields from
POST /members/.
Example Request
{
"major": "Business Technology Management",
"year": "4",
"topics": ["Consulting", "AI"]
}
Response
{
"message": "Updated member with email student@example.com!",
"response": {
"Attributes": {
"major": "Business Technology Management",
"year": "4",
"topics": ["Consulting", "AI"],
"updatedAt": 1755703100000
}
}
}
Errors
403Unauthorized400Invalid email404Member not found
DELETE /members/{id}
Delete a member by email.
Request
| Headers | Type |
|---|---|
| Authorization | Bearer Token |
| Path Param | Description |
|---|---|
| id | Member’s email |
Example Request
DELETE /members/student@example.com
Response
{
"message": "Member deleted!",
"response": {
"id": "student@example.com"
}
}
Errors
403Unauthorized400Invalid email404Member not found
POST /members/membership
Grant or revoke a membership for an existing user. This endpoint also creates or deletes the member profile as part of the membership flow.
Request
| Headers | Type |
|---|---|
| Authorization | Bearer Token |
| Body Property | Description |
|---|---|
User email (must already exist in biztechUsers) | |
| membership | true to grant, false to revoke |
Example Request (Grant)
{
"email": "isaacliu@gmail.com",
"membership": true
}
Example Request (Revoke)
{
"email": "kevinxiao27@gmail.com",
"membership": false
}
Response
{
"message": "Membership granted"
}
Response (Revoke)
{
"message": "Membership revoked"
}
Behavior
- Grant
- Updates
biztechUsers.isMember = true - Creates a member row in
biztechMembers2026if missing - Creates a profile via
createProfile(...)if none exists - No behavior if membership already existed
- Updates
- Revoke
- Updates
biztechUsers.isMember = false - Deletes the member row from
biztechMembers2026 - Deletes the profile from
biztechProfiles(if it exists) - No behavior if no membership exists
- Updates
Errors
403Unauthorized if caller is not@ubcbiztech.com400Invalid email format404User not found502Internal server error