Projects
Projects and the memberships that decide who can see them.
A project is the container for tasks and the boundary most permissions are
expressed against. It has a key — APOLLO — which is what task keys and
nested routes are built from.
Scopes: projects:read, projects:write
Visibility
A token sees the projects its service account is a member of. Restricting a
token to specific projects narrows that further; it never widens it. A project
the service account cannot see returns 404, not 403 — telling you a project
exists but is out of reach is itself a disclosure.
Creating a project
curl -X POST https://acme.krrim.com/api/v1/projects/ \
-H "Authorization: Bearer krm_live_..." \
-H "Content-Type: application/json" \
-d '{ "name": "Apollo", "key": "APOLLO" }'A new project is provisioned with a default set of statuses, task types, priorities and a workflow. That happens as part of the create — you do not have to seed the taxonomy yourself, and you should read it back rather than assume the defaults.
key must be unique within the workspace and cannot be changed afterwards; task
keys are built from it.
Memberships
GET /api/v1/memberships/?project=12
POST /api/v1/memberships/
PATCH /api/v1/memberships/{id}/
DELETE /api/v1/memberships/{id}/These are project memberships — who can see and act on one project. They are not workspace membership, which is not on the published surface at all: adding someone to the organization, or changing their organization role, stays a human action for the reason described in Scopes.
A service account cannot add itself to a project it cannot already see. If your integration needs a new project, either give its service account a workspace role that can create one, or have a human add it.
Endpoints
| Method | Path | Scope |
|---|---|---|
GET | /api/v1/memberships/ | projects:read |
POST | /api/v1/memberships/ | projects:write |
GET | /api/v1/memberships/{id}/ | projects:read |
PUT | /api/v1/memberships/{id}/ | projects:write |
PATCH | /api/v1/memberships/{id}/ | projects:write |
DELETE | /api/v1/memberships/{id}/ | projects:write |
GET | /api/v1/projects/ | projects:read |
POST | /api/v1/projects/ | projects:write |
GET | /api/v1/projects/{id}/ | projects:read |
PUT | /api/v1/projects/{id}/ | projects:write |
PATCH | /api/v1/projects/{id}/ | projects:write |
DELETE | /api/v1/projects/{id}/ | projects:write |