TALA API Documentation
REST API for TALA Web Application
Version 1.0.0
Base URL
http://localhost:8000App
Auth
- POSTThis endpoint is only to be used on the register page
/api/auth/register - POSTThis endpoint is to be used after creating account to verify the email used before access to the system
/api/auth/verify-email - POSTThis endpoint is only to be used on the forgot password page to request a password reset
/api/auth/request-password-reset - POSTChanges the user password on the reset-password page. Side effect: a successful reset REVOKES ALL of the user’s existing sessions — every other device will get 401 on its next refresh and must re-login.
/api/auth/reset-password - GETThis endpoint is only to be used on the reset password page but before loading the screen to verify if the token provided by the user is valid or not
/api/auth/verify-token - POSTThis endpoint is only to be used when a user wants to login
/api/auth/login - GETBegin Google OAuth sign-in
/api/auth/google - GETGoogle OAuth callback — redirects to the SPA with a single-use code
/api/auth/google/callback - GETBegin GitHub OAuth sign-in
/api/auth/github - GETGitHub OAuth callback — redirects to the SPA with a single-use code
/api/auth/github/callback - POSTExchanges the one-time code from the OAuth success redirect (?code=...) for a session. The code is single-use and expires in ~60s. Returns the same shape as login. Replaces returning tokens directly in the OAuth redirect URL.
/api/auth/oauth/exchange - GETThis endpoint is only to be used to get the authenticated user
/api/auth/user - POSTPOST the current refresh token in the body to receive a NEW access token and a ROTATED refresh token. The presented refresh token is single-use and immediately revoked — the client must persist the returned refreshToken. (Replaces the old GET + `ref-tk` header contract.)
/api/auth/refresh-token - POSTRevokes the session for the supplied refresh token. Idempotent — always returns 200, even for an invalid or expired token, so token validity is never disclosed.
/api/auth/logout
Profile
- PATCHUpdate the caller profile
/api/auth/user/profile - POSTGet a presigned URL for an avatar upload
/api/auth/user/avatar-upload - POSTFinalize an avatar upload
/api/auth/user/avatar-upload/complete
Plan
Timeline
- GETGet a user activity logs
/api/timeline/user - GETGet all activity logs (admin)
/api/timeline - GETGet logs for a specific resource (admin)
/api/timeline/resource/{type}/{id} - GETGet action summary counts (admin)
/api/timeline/summary
Organization
- GETList organizations the caller belongs to
/api/organizations - POSTCreate an organization
/api/organizations - GETRetrieve an invitation by token
/api/organizations/invitations/{token} - POSTAccept an organization invitation
/api/organizations/invitations/{token}/accept - GETRetrieve an organization by id
/api/organizations/{id} - PATCHRename an organization
/api/organizations/{id} - GETList organization members
/api/organizations/{id}/members - POSTInvite a member to the organization
/api/organizations/{id}/invitations - DELETERemove a member from the organization
/api/organizations/{id}/members/{memberId} - PATCHUpdate a member's role or status
/api/organizations/{id}/members/{memberId}
Collection
- POSTThis endpoint is used to create a collection for a user
/api/collections/create - GETGet all collections belonging to a user
/api/collections - GETGet a single collection by its ID
/api/collections/{id} - DELETEDelete a collection by its ID
/api/collections/{id} - PATCHUpdate the title of a collection
/api/collections/{id} - PATCHFavorite or unfavorite a collection
/api/collections/{id}/favorite
Asset
- GETList assets in the current scope
/api/assets - GETGet a presigned download URL for an asset
/api/assets/{id}/download - POSTPublish a personal asset into the organization
/api/assets/{id}/publish - PATCHFavorite or unfavorite an asset
/api/assets/{id}/favorite - GETGet asset details by ID
/api/assets/{id} - DELETEDelete an asset by its ID
/api/assets/{id} - PATCHUpdate an asset
/api/assets/{id} - GETRetrieve the caller's asset activity logs
/api/assets/logs - GETRetrieve assets belonging to a specific collection
/api/assets/collection/{collectionId} - GETRetrieve activity logs for a single asset
/api/assets/{id}/asset-logs - GETRetrieve all versions of an asset
/api/assets/{id}/versions - PATCHRestore a specific version of an asset
/api/assets/{id}/versions/restore/{versionNumber}
Upload
- POSTInitiate a multipart upload to S3
/api/upload/initiate - POSTComplete multipart upload and save asset metadata
/api/upload/complete - POSTAbort an active multipart upload
/api/upload/abort
Project
- GETList projects in the organization
/api/projects - POSTCreate a project
/api/projects - GETRetrieve a project by id
/api/projects/{id} - DELETEDelete a project
/api/projects/{id} - PATCHUpdate a project
/api/projects/{id} - PATCHReorder a project
/api/projects/{id}/position
Task
- GETList tasks in the organization
/api/tasks - GETList tasks in a project
/api/projects/{projectId}/tasks - POSTCreate a task in a project
/api/projects/{projectId}/tasks - GETRetrieve a task by id
/api/tasks/{id} - DELETEDelete a task
/api/tasks/{id} - PATCHUpdate a task
/api/tasks/{id} - PATCHMove a task to another column or position
/api/tasks/{id}/position - PUTReplace a task's assignees
/api/tasks/{id}/assignees
TaskComment
- GETList comments on a task
/api/tasks/{taskId}/comments - POSTPost a comment on a task
/api/tasks/{taskId}/comments - DELETEDelete a task comment
/api/tasks/{taskId}/comments/{commentId} - PATCHEdit a task comment
/api/tasks/{taskId}/comments/{commentId}
