Skip to content

API Reference

The TruePPM REST API is documented via OpenAPI 3.1, auto-generated by drf-spectacular.

FormatURL
Swagger UIhttp://localhost:8000/api/schema/swagger-ui/
ReDochttp://localhost:8000/api/schema/redoc/
Raw YAMLhttp://localhost:8000/api/schema/
http://localhost:8000/api/v1/
POST /api/token/
Content-Type: application/json
{"username": "...", "password": "..."}

Returns {"access": "<jwt>", "refresh": "<jwt>"}. Pass the access token on all subsequent requests:

Authorization: Bearer <access_token>

Refresh via POST /api/token/refresh/ with {"refresh": "<token>"}.

MethodPathDescription
GET/api/v1/calendars/List
POST/api/v1/calendars/Create
GET/api/v1/calendars/{id}/Retrieve
PUT / PATCH/api/v1/calendars/{id}/Update
DELETE/api/v1/calendars/{id}/Soft-delete
MethodPathDescription
GET/api/v1/projects/List (scoped to your memberships)
POST/api/v1/projects/Create (caller becomes Owner)
GET/api/v1/projects/{id}/Retrieve
PUT / PATCH/api/v1/projects/{id}/Update
DELETE/api/v1/projects/{id}/Soft-delete
MethodPathDescription
GET/api/v1/projects/{id}/members/List (Viewer+)
POST/api/v1/projects/{id}/members/Add member (Owner only)
GET/api/v1/projects/{id}/members/{mid}/Retrieve
PATCH/api/v1/projects/{id}/members/{mid}/Change role (Owner only)
DELETE/api/v1/projects/{id}/members/{mid}/Remove (Owner, or self)

See RBAC for the permission matrix and role escalation rules.

MethodPathDescription
GET/api/v1/tasks/List (filter: ?project=, ?is_critical=true)
POST/api/v1/tasks/Create
GET/api/v1/tasks/{id}/Retrieve
PUT / PATCH/api/v1/tasks/{id}/Update
DELETE/api/v1/tasks/{id}/Soft-delete (cascades to edges)

CPM fields (early_start, early_finish, late_start, late_finish, total_float, is_critical) are read-only — set by the auto-scheduler.

MethodPathDescription
GET/api/v1/dependencies/List (filter: ?project=, ?dep_type=FS)
POST/api/v1/dependencies/Create
GET/api/v1/dependencies/{id}/Retrieve
PUT / PATCH/api/v1/dependencies/{id}/Update
DELETE/api/v1/dependencies/{id}/Soft-delete

Predecessor and successor must belong to the same project — cross-project edges return HTTP 400.

MethodPathDescription
GET/api/v1/resources/List
POST/api/v1/resources/Create
GET/api/v1/resources/{id}/Retrieve
PUT / PATCH/api/v1/resources/{id}/Update
DELETE/api/v1/resources/{id}/Soft-delete
MethodPathDescription
GET/api/v1/task-resources/List
POST/api/v1/task-resources/Assign
GET/api/v1/task-resources/{id}/Retrieve
PUT / PATCH/api/v1/task-resources/{id}/Update
DELETE/api/v1/task-resources/{id}/Remove
MethodPathDescription
GET/api/v1/projects/{id}/sync/Pull delta changes

See Offline Sync.

Default page size: 50. Response envelope:

{"count": 123, "next": "...?cursor=...", "previous": null, "results": [...]}
CodeMeaning
200OK
201Created
204No content (delete)
400Validation error
401Missing or invalid token
403Insufficient role
404Not found or soft-deleted
409Conflict (e.g. duplicate membership)