Skip to content

Projects Extensions

Forgejo has no Projects REST API. The proxy provides a complete Projects API by scraping the Forgejo web UI using an admin session.

MethodEndpointDescription
GET/api/v1/orgs/{org}/projectsList all projects in an organisation
POST/api/v1/orgs/{org}/projectsCreate a new project in an organisation
MethodEndpointDescription
GET/api/v1/repos/{owner}/{repo}/projectsList all projects in a repository
POST/api/v1/repos/{owner}/{repo}/projectsCreate a new project in a repository
MethodEndpointDescription
GET/api/v1/projects/{project_id}Get a project by ID
DELETE/api/v1/projects/{project_id}Delete a project
POST/api/v1/projects/{project_id}/closeClose (archive) a project
POST/api/v1/projects/{project_id}/openReopen a closed project
MethodEndpointDescription
GET/api/v1/projects/{project_id}/columnsList all columns in a project
POST/api/v1/projects/{project_id}/columnsCreate a new column
PATCH/api/v1/projects/{project_id}/columns/{column_id}Update a column (rename, reorder)
DELETE/api/v1/projects/{project_id}/columns/{column_id}Delete a column
MethodEndpointDescription
GET/api/v1/projects/{project_id}/columns/{column_id}/cardsList all cards in a column
POST/api/v1/projects/{project_id}/columns/{column_id}/cardsAdd an issue/PR card to a column
DELETE/api/v1/projects/{project_id}/columns/{column_id}/cards/{issue_id}Remove a card from a column
Terminal window
# List all projects in an org
curl -H 'Authorization: token YOUR_TOKEN' \
'https://forgejo-proxy.hochguertel.work/api/v1/orgs/myorg/projects'
# Create a new repo project
curl -X POST -H 'Authorization: token YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"title": "Sprint 1", "description": "First sprint tasks"}' \
'https://forgejo-proxy.hochguertel.work/api/v1/repos/myorg/myrepo/projects'
# List columns in project 5
curl -H 'Authorization: token YOUR_TOKEN' \
'https://forgejo-proxy.hochguertel.work/api/v1/projects/5/columns'
# Add issue #12 to column 3 in project 5
curl -X POST -H 'Authorization: token YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"issue_id": 12}' \
'https://forgejo-proxy.hochguertel.work/api/v1/projects/5/columns/3/cards'
# Close a project
curl -X POST -H 'Authorization: token YOUR_TOKEN' \
'https://forgejo-proxy.hochguertel.work/api/v1/projects/5/close'

The proxy uses an admin session to interact with the Forgejo web UI. All mutations (create, update, delete) submit the equivalent web forms, and all reads scrape the rendered HTML or internal API endpoints exposed by the Forgejo web UI.

See Backend Modes for configuration options that affect how Projects data is retrieved.