Groups API
Groups allow you to organize users together for collective scoreboards and contests. This API provides endpoints for creating groups, managing members, and handling group scoreboards.
Overview
Groups in omegaUp serve two main purposes:
- User Organization: Group users together for tracking and management
- Scoreboards: Create custom scoreboards that aggregate results from multiple contests
Group Endpoints
Create Group
Creates a new group. The authenticated user becomes the group admin.
POST /api/group/create/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
alias |
string | Yes | Unique group alias (used in URLs) |
name |
string | Yes | Display name for the group |
description |
string | Yes | Group description |
Response:
{
"status": "ok"
}
Privileges: Authenticated user (becomes admin)
Update Group
Updates an existing group's information.
POST /api/group/update/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
alias |
string | Yes | Group alias |
name |
string | Yes | New display name |
description |
string | Yes | New description |
Privileges: Group admin
Get Group Details
Returns detailed information about a group including its scoreboards.
GET /api/group/details/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
group_alias |
string | Yes | Group alias |
Response:
{
"group": {
"create_time": 1609459200,
"alias": "my-group",
"name": "My Group",
"description": "A sample group"
},
"scoreboards": [
{
"alias": "scoreboard-1",
"create_time": "2021-01-01T00:00:00Z",
"description": "Main scoreboard",
"name": "Main Scoreboard"
}
]
}
Privileges: Group admin
List User's Groups
Returns all groups administered by the current user.
GET /api/group/myList/
Response:
{
"groups": [
{
"alias": "group-1",
"create_time": { "time": 1609459200 },
"description": "Description",
"name": "Group Name"
}
]
}
Privileges: Authenticated user
Search Groups
Returns groups matching a search query. Used for typeahead.
GET /api/group/list/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string | Yes | Search term |
Response:
[
{
"label": "Group Name",
"value": "group-alias"
}
]
Privileges: Authenticated user
Get Group Members
Returns all members of a group.
GET /api/group/members/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
group_alias |
string | Yes | Group alias |
Response:
{
"identities": [
{
"username": "user1",
"name": "User One",
"country": "MX",
"country_id": "MX",
"school": "School Name",
"school_id": 123
}
]
}
Privileges: Group admin
Add User to Group
Adds a user to a group.
POST /api/group/addUser/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
group_alias |
string | Yes | Group alias |
usernameOrEmail |
string | Yes | Username or email of user to add |
Response:
{
"status": "ok"
}
Privileges: Group admin
Errors:
identityInGroup: User is already a member of the group
Remove User from Group
Removes a user from a group.
POST /api/group/removeUser/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
group_alias |
string | Yes | Group alias |
usernameOrEmail |
string | Yes | Username or email of user to remove |
Privileges: Group admin
Create Scoreboard
Creates a new scoreboard for a group.
POST /api/group/createScoreboard/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
group_alias |
string | Yes | Group alias |
alias |
string | Yes | Scoreboard alias |
name |
string | Yes | Scoreboard display name |
description |
string | No | Scoreboard description |
Privileges: Group admin
Group Scoreboard Endpoints
Group scoreboards aggregate results from multiple contests.
Add Contest to Scoreboard
Adds a contest to a group scoreboard.
POST /api/groupScoreboard/addContest/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
group_alias |
string | Yes | Group alias |
scoreboard_alias |
string | Yes | Scoreboard alias |
contest_alias |
string | Yes | Contest to add |
weight |
float | Yes | Weight for scoring |
only_ac |
bool | No | Only count AC submissions |
Privileges: Group admin + contest access
Remove Contest from Scoreboard
Removes a contest from a group scoreboard.
POST /api/groupScoreboard/removeContest/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
group_alias |
string | Yes | Group alias |
scoreboard_alias |
string | Yes | Scoreboard alias |
contest_alias |
string | Yes | Contest to remove |
Privileges: Group admin
Get Scoreboard Details
Returns scoreboard details including ranking and contests.
GET /api/groupScoreboard/details/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
group_alias |
string | Yes | Group alias |
scoreboard_alias |
string | Yes | Scoreboard alias |
Response:
{
"ranking": [
{
"username": "user1",
"name": "User One",
"contests": {
"contest-1": { "points": 100, "penalty": 50 }
},
"total": { "points": 100, "penalty": 50 }
}
],
"scoreboard": {
"alias": "scoreboard-1",
"name": "Main Scoreboard",
"description": "Description"
},
"contests": [...]
}
Privileges: Group admin
List Group Scoreboards
Returns all scoreboards for a group.
GET /api/groupScoreboard/list/
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
group_alias |
string | Yes | Group alias |
Privileges: Group admin
Use Cases
Creating a Class Group
# 1. Create the group
curl -X POST https://omegaup.com/api/group/create/ \
-d "alias=algorithms-2024&name=Algorithms 2024&description=Spring semester class"
# 2. Add students
curl -X POST https://omegaup.com/api/group/addUser/ \
-d "group_alias=algorithms-2024&usernameOrEmail=student1@example.com"
# 3. Create a scoreboard
curl -X POST https://omegaup.com/api/group/createScoreboard/ \
-d "group_alias=algorithms-2024&alias=homework&name=Homework Scores"
# 4. Add contests to scoreboard
curl -X POST https://omegaup.com/api/groupScoreboard/addContest/ \
-d "group_alias=algorithms-2024&scoreboard_alias=homework&contest_alias=hw1&weight=1.0"
Related Documentation
- Teams API - For managing team groups
- Contests API - Creating contests for groups
- Users API - User management
Full Reference
For complete endpoint details, see the Group Controller and GroupScoreboard Controller source code.