API Reference - csed-ucm/psephos GitHub Wiki
API Reference
This document provides a comprehensive reference for all API endpoints in the University Polling API.
Authentication
All endpoints require authentication using one of the following methods:
- OAuth2 Password Flow
- Token URL:
auth/jwt/login
- Token URL:
- API Key (Cookie)
- Parameter Name:
fastapiusersauth
, in: cookie
- Parameter Name:
Base URL
All API requests should be made to your API server base URL.
Endpoints Overview
Workspaces
GET /workspaces
- Get all workspaces for current userPOST /workspaces
- Create a new workspaceGET /workspaces/permissions
- Get all workspace permissionsGET /workspaces/{workspace_id}
- Get workspace detailsPATCH /workspaces/{workspace_id}
- Update workspaceDELETE /workspaces/{workspace_id}
- Delete workspace
Workspace Members
GET /workspaces/{workspace_id}/members
- Get workspace membersPOST /workspaces/{workspace_id}/members
- Add members to workspaceDELETE /workspaces/{workspace_id}/members/{account_id}
- Remove member
Workspace Groups
GET /workspaces/{workspace_id}/groups
- Get workspace groupsPOST /workspaces/{workspace_id}/groups
- Create group in workspace
Workspace Policies
GET /workspaces/{workspace_id}/policies
- Get workspace policiesPUT /workspaces/{workspace_id}/policies/{policy_id}
- Update workspace policy
Workspace Polls
GET /workspaces/{workspace_id}/polls
- Get workspace pollsPOST /workspaces/{workspace_id}/polls
- Create poll in workspace
Groups
GET /groups/
- Get all groups (with filters)POST /groups/
- Create a new groupGET /groups/permissions
- Get all group permissionsGET /groups/{group_id}
- Get group detailsPATCH /groups/{group_id}
- Update groupDELETE /groups/{group_id}
- Delete group
Group Members
GET /groups/{group_id}/members
- Get group membersPOST /groups/{group_id}/members
- Add members to groupDELETE /groups/{group_id}/members/{account_id}
- Remove member from group
Group Policies
GET /groups/{group_id}/policies
- Get group policiesPUT /groups/{group_id}/policies/{policy_id}
- Update group policy
Polls
GET /polls/{poll_id}
- Get poll detailsPATCH /polls/{poll_id}
- Update pollDELETE /polls/{poll_id}
- Delete pollGET /polls/{poll_id}/questions
- Get poll questionsGET /polls/{poll_id}/policies
- Get poll policies
Accounts
GET /accounts
- Get all accountsGET /accounts/me
- Get current user accountPATCH /accounts/me
- Update current user accountDELETE /accounts/me
- Delete current user accountGET /accounts/{id}
- Get user account by IDPATCH /accounts/{id}
- Update user account by IDDELETE /accounts/{id}
- Delete user account by ID
Common Response Codes
- 200 OK - Request successful
- 201 Created - Resource created successfully
- 204 No Content - Request successful, no content returned
- 400 Bad Request - Invalid request data
- 401 Unauthorized - Authentication required
- 403 Forbidden - Insufficient permissions
- 404 Not Found - Resource not found
- 422 Unprocessable Entity - Validation error
Example Requests
Create Workspace
POST /workspaces
Content-Type: application/json
Authorization: Bearer <access_token>
{
"name": "My Workspace",
"description": "This is my workspace"
}
Get Workspace with Groups and Members
GET /workspaces/64f7a1b8e1f1d5f5f5b4f8e1?include=groups&include=members
Authorization: Bearer <access_token>
Update User Permissions
PUT /workspaces/64f7a1b8e1f1d5f5f5b4f8e1/policies/64f7a1b8e1f1d5f5f5b4f8e2
Content-Type: application/json
Authorization: Bearer <access_token>
{
"permissions": ["get_workspace", "get_members", "add_members"]
}
For complete API specifications with detailed request/response schemas, refer to the interactive documentation available at /docs
when your server is running.