Create a task on a project
POSThttps://
Creates a kanban task under one of the project's budgets and returns it with a Location header pointing at the flat item path.
Access
- Token scope
- api:
write: kanban Without it:
403 insufficient-token-scope. - Permission
- kanban::
manage_self Without it:
403 insufficient-permission. - Rate cost
- 1 unit, write bucket. A write costs the same whatever
viewyou ask for. - Also
- Accepts
Idempotency-Key. Never cached:private, no-store. Unknown body keys are refused, never dropped.
Both are checked, scope first. A token never does more than its user. How access is checked
The project comes from the path, so project_id is not accepted in the body, and a task has no project_id of its own anyway: budget_id is the task's only link to a project, it is settable here and nowhere else, and a budget belonging to a different project is rejected as an unprocessable relationship. The task is always created for the authenticated user: user_id is not accepted, so creating a card on a colleague's board is not available through the API even to a holder of kanban::manage_for_others. Creating additionally requires projects::read for the parent project, plus budgets::read and a token satisfying api:read:budgets for the budget reference; a token created with api:write:kanban alone gets a permanent 422 on budget_id. A trashed project answers 404 with no escape.
Path parameters
Query parameters
Unknown parameters are refused with 400, naming the parameter.
Request headers
A correlation id of your own. It is recorded in our logs next to the server's request id but never returned: the response header always carries the server's id. A value that does not match the pattern is discarded silently, never rejected.
Request body
Unknown keys are refused with 422, naming the key.
Budget the task is filed under. This is the task's only link to a project (a task has no project_id of its own), and it is settable at create time only; a task cannot be re-budgeted through the API.
Day the task is due. Required when creating a task through the API, and clearable afterwards; tasks created in plnnrly may carry null.
Short description shown on the kanban card. This is the task's label and the only field ?q= searches.
Kanban column the card sits in.
on-hold- Paused, waiting on something off the board.
new- The default for a new card: not picked up yet.
active- Being worked on.
internal-test- Awaiting internal review or testing.
external-test- With the customer for acceptance.
finished- Done. The only status for which
is_finishedis true.
New values may be added.
Whether the task is done. Cross-synced with status on every write: setting status to finished sets this true and any other status sets it false, while setting this false on a finished task moves status back to active. status wins when both are sent.
Response 201
Returns a Task in the detail view.
Headers
ETag- A strong validator of exactly this representation.
Idempotency-Replayedtruewhen this response was replayed from a storedIdempotency-Keyrather than produced by a new write.Location- The absolute URL of the created or queued resource.
RateLimit- The IETF
httpapi-ratelimit-headersform of your remaining allowance on the tightest bucket this request touched. RateLimit-Policy- The ceiling and window of that bucket, as
<limit>;w=<seconds>. X-Request-Id- The server-generated ULID correlating this response with our logs.
Every response also carries Cache-Control, Vary, X-Content-Type-Options, X-Plnnrly-Api-Version, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset. Headers and versioning
Budget the task is filed under. This is the task's only link to a project (a task has no project_id of its own), and it is settable at create time only; a task cannot be re-budgeted through the API.
The employee the task belongs to. Always the authenticated user on create; not writable. Null on a task left unassigned in plnnrly.
Team the task is filed under. Nothing on the API path assigns it, so a task created through the API always carries null; plnnrly itself is the only place a team is set. Not writable, and there is no team object beside it.
Day the task is due. Required when creating a task through the API, and clearable afterwards; tasks created in plnnrly may carry null.
Short description shown on the kanban card. This is the task's label and the only field ?q= searches.
Whether the task is done. Cross-synced with status on every write: setting status to finished sets this true and any other status sets it false, while setting this false on a finished task moves status back to active. status wins when both are sent.
Whether time logged on this task is billable. Defaults to true when a task is created through the API, regardless of the budget's own setting.
Kanban column the card sits in.
on-holdnewactiveinternal-testexternal-testfinished
New values may be added.
Position on the kanban board, lowest first. Appended to the end of the board on create and changed when someone drags the card in plnnrly. Not writable.
The budget this task is filed under.
The employee the task belongs to.
Errors
409 Conflict.
415 Unsupported media type.
422 Unprocessable content.
7 errors every operation can return: 400, 401, 404, 406, 429, 500, 503
400 Bad request.
idempotency-key-requiredinvalid-cursorinvalid-query-parametermalformed-requestunsupported-parameter
401 Unauthenticated.
404 Not found.
406 Not acceptable.
429 Too many requests.
500 Server error.
503 Service unavailable.
This path allows GET, POST. Anything else answers 405.
Something wrong or missing on this page? Tell us