---
seo:
  description: REST API for TALA Web Application
sidebar:
  label: Overview
title: TALA API Documentation
---
REST API for TALA Web Application

Version 1.0.0

Base URL: `http://localhost:8000`

## App

- [`GET /health`](/reference/app/app-controller-get-hello) — Liveness probe

## Auth

- [`POST /api/auth/register`](/reference/auth/auth-controller-register) — This endpoint is only to be used on the register page
- [`POST /api/auth/verify-email`](/reference/auth/auth-controller-verify-email) — This endpoint is to be used after creating account to verify the email used before access to the system
- [`POST /api/auth/request-password-reset`](/reference/auth/auth-controller-request-password-reset) — This endpoint is only to be used on the forgot password page to request a password reset
- [`POST /api/auth/reset-password`](/reference/auth/auth-controller-reset-password) — Changes 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.
- [`GET /api/auth/verify-token`](/reference/auth/auth-controller-verify-token) — This 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
- [`POST /api/auth/login`](/reference/auth/auth-controller-login) — This endpoint is only to be used when a user wants to login
- [`GET /api/auth/google`](/reference/auth/auth-controller-google-auth) — Begin Google OAuth sign-in
- [`GET /api/auth/google/callback`](/reference/auth/auth-controller-google-callback) — Google OAuth callback — redirects to the SPA with a single-use code
- [`GET /api/auth/github`](/reference/auth/auth-controller-github-auth) — Begin GitHub OAuth sign-in
- [`GET /api/auth/github/callback`](/reference/auth/auth-controller-github-callback) — GitHub OAuth callback — redirects to the SPA with a single-use code
- [`POST /api/auth/oauth/exchange`](/reference/auth/auth-controller-exchange-o-auth-code) — Exchanges 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.
- [`GET /api/auth/user`](/reference/auth/auth-controller-get-authenticated-user) — This endpoint is only to be used to get the authenticated user
- [`POST /api/auth/refresh-token`](/reference/auth/auth-controller-refresh-access-token) — POST 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.)
- [`POST /api/auth/logout`](/reference/auth/auth-controller-logout) — Revokes the session for the supplied refresh token. Idempotent — always returns 200, even for an invalid or expired token, so token validity is never disclosed.

## Profile

- [`PATCH /api/auth/user/profile`](/reference/profile/profile-controller-update) — Update the caller profile
- [`POST /api/auth/user/avatar-upload`](/reference/profile/profile-controller-avatar-upload) — Get a presigned URL for an avatar upload
- [`POST /api/auth/user/avatar-upload/complete`](/reference/profile/profile-controller-complete) — Finalize an avatar upload

## Plan

- [`GET /api/plan`](/reference/plan/plan-controller-find-all) — Get all plans

## Timeline

- [`GET /api/timeline/user`](/reference/timeline/activity-logs-controller-paginate-my-activity) — Get a user activity logs
- [`GET /api/timeline`](/reference/timeline/activity-logs-controller-paginate-all) — Get all activity logs (admin)
- [`GET /api/timeline/resource/{type}/{id}`](/reference/timeline/activity-logs-controller-paginate-by-resource) — Get logs for a specific resource (admin)
- [`GET /api/timeline/summary`](/reference/timeline/activity-logs-controller-get-action-summary) — Get action summary counts (admin)

## Organization

- [`GET /api/organizations`](/reference/organization/organization-controller-list) — List organizations the caller belongs to
- [`POST /api/organizations`](/reference/organization/organization-controller-create) — Create an organization
- [`GET /api/organizations/invitations/{token}`](/reference/organization/organization-controller-invitation) — Retrieve an invitation by token
- [`POST /api/organizations/invitations/{token}/accept`](/reference/organization/organization-controller-accept) — Accept an organization invitation
- [`GET /api/organizations/{id}`](/reference/organization/organization-controller-get) — Retrieve an organization by id
- [`PATCH /api/organizations/{id}`](/reference/organization/organization-controller-update) — Rename an organization
- [`GET /api/organizations/{id}/members`](/reference/organization/organization-controller-members) — List organization members
- [`POST /api/organizations/{id}/invitations`](/reference/organization/organization-controller-invite) — Invite a member to the organization
- [`DELETE /api/organizations/{id}/members/{memberId}`](/reference/organization/organization-controller-remove-member) — Remove a member from the organization
- [`PATCH /api/organizations/{id}/members/{memberId}`](/reference/organization/organization-controller-update-member) — Update a member's role or status

## Collection

- [`POST /api/collections/create`](/reference/collection/collection-controller-create-collection) — This endpoint is used to create a collection for a user
- [`GET /api/collections`](/reference/collection/collection-controller-paginate) — Get all collections belonging to a user
- [`GET /api/collections/{id}`](/reference/collection/collection-controller-get-collection-by-id) — Get a single collection by its ID
- [`DELETE /api/collections/{id}`](/reference/collection/collection-controller-delete-collection) — Delete a collection by its ID
- [`PATCH /api/collections/{id}`](/reference/collection/collection-controller-update-collection) — Update the title of a collection
- [`PATCH /api/collections/{id}/favorite`](/reference/collection/collection-controller-favorite) — Favorite or unfavorite a collection

## Asset

- [`GET /api/assets`](/reference/asset/asset-controller-list) — List assets in the current scope
- [`GET /api/assets/{id}/download`](/reference/asset/asset-controller-download) — Get a presigned download URL for an asset
- [`POST /api/assets/{id}/publish`](/reference/asset/asset-controller-publish) — Publish a personal asset into the organization
- [`PATCH /api/assets/{id}/favorite`](/reference/asset/asset-controller-favorite) — Favorite or unfavorite an asset
- [`GET /api/assets/{id}`](/reference/asset/asset-controller-get-asset-by-id) — Get asset details by ID
- [`DELETE /api/assets/{id}`](/reference/asset/asset-controller-delete-asset) — Delete an asset by its ID
- [`PATCH /api/assets/{id}`](/reference/asset/asset-controller-update-asset) — Update an asset
- [`GET /api/assets/logs`](/reference/asset/asset-controller-get-my-logs) — Retrieve the caller's asset activity logs
- [`GET /api/assets/collection/{collectionId}`](/reference/asset/asset-controller-paginate-assets-by-collection) — Retrieve assets belonging to a specific collection
- [`GET /api/assets/{id}/asset-logs`](/reference/asset/asset-controller-get-logs-by-asset) — Retrieve activity logs for a single asset
- [`GET /api/assets/{id}/versions`](/reference/asset/asset-controller-get-versions) — Retrieve all versions of an asset
- [`PATCH /api/assets/{id}/versions/restore/{versionNumber}`](/reference/asset/asset-controller-restore-version) — Restore a specific version of an asset

## Upload

- [`POST /api/upload/initiate`](/reference/upload/upload-controller-initiate-upload) — Initiate a multipart upload to S3
- [`POST /api/upload/complete`](/reference/upload/upload-controller-complete-upload) — Complete multipart upload and save asset metadata
- [`POST /api/upload/abort`](/reference/upload/upload-controller-abort-upload) — Abort an active multipart upload

## Project

- [`GET /api/projects`](/reference/project/project-controller-list) — List projects in the organization
- [`POST /api/projects`](/reference/project/project-controller-create) — Create a project
- [`GET /api/projects/{id}`](/reference/project/project-controller-get) — Retrieve a project by id
- [`DELETE /api/projects/{id}`](/reference/project/project-controller-remove) — Delete a project
- [`PATCH /api/projects/{id}`](/reference/project/project-controller-update) — Update a project
- [`PATCH /api/projects/{id}/position`](/reference/project/project-controller-move) — Reorder a project

## Task

- [`GET /api/tasks`](/reference/task/task-controller-list) — List tasks in the organization
- [`GET /api/projects/{projectId}/tasks`](/reference/task/task-controller-by-project) — List tasks in a project
- [`POST /api/projects/{projectId}/tasks`](/reference/task/task-controller-create) — Create a task in a project
- [`GET /api/tasks/{id}`](/reference/task/task-controller-get) — Retrieve a task by id
- [`DELETE /api/tasks/{id}`](/reference/task/task-controller-remove) — Delete a task
- [`PATCH /api/tasks/{id}`](/reference/task/task-controller-update) — Update a task
- [`PATCH /api/tasks/{id}/position`](/reference/task/task-controller-move) — Move a task to another column or position
- [`PUT /api/tasks/{id}/assignees`](/reference/task/task-controller-assignees) — Replace a task's assignees

## TaskComment

- [`GET /api/tasks/{taskId}/comments`](/reference/taskcomment/task-comment-controller-list) — List comments on a task
- [`POST /api/tasks/{taskId}/comments`](/reference/taskcomment/task-comment-controller-create) — Post a comment on a task
- [`DELETE /api/tasks/{taskId}/comments/{commentId}`](/reference/taskcomment/task-comment-controller-remove) — Delete a task comment
- [`PATCH /api/tasks/{taskId}/comments/{commentId}`](/reference/taskcomment/task-comment-controller-update) — Edit a task comment

## Dashboard

- [`GET /api/dashboard/summary`](/reference/dashboard/dashboard-controller-summary) — Retrieve the organization dashboard summary
