Restore a deleted project
POSThttps://
Clears the soft-delete marker and returns the project in the detail view.
Access
- Token scope
- api:
write: projects Without it:
403 insufficient-token-scope. - Permission
- projects::
create Without it:
403 insufficient-permission. - Rate cost
- 1 unit, write bucket. A write costs the same whatever
viewyou ask for. - Also
- Accepts
Idempotency-Key. AcceptsIf-Match. Never cached:private, no-store. Unknown query parameters are refused, never ignored.
Both are checked, scope first. A token never does more than its user. How access is checked
Restoring additionally requires projects::delete as well as projects::create. A restore fully undoes a soft delete: a soft delete leaves the project's notes, drive items, worklogs and tags in place, so the project comes back with all of them. A force delete cannot be undone. Restoring a project that is not deleted succeeds and returns an already_in_target_state warning, so a retry is safe. The restore finds a deleted project without the trashed parameter and does not accept it.
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.
Response 200
Returns a Project 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.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
Application name plus title. Never carries the project number, even when the organisation shows numbers in plnnrly.
Lifecycle status. Setting it to invoiced finishes every task on every budget of the project.
activefinishedinvoicedon-holdinactive
New values may be added.
Whether work is planned in sprints or on a simple board.
sprintssimple
New values may be added.
Responsible account manager. Set to the creating user and not writable.
Linked application. Writable only while the organisation has the Infrastructure feature: sending a non-null value without it is a 422 prohibited. Null clears the link regardless.
Absolute URL that opens this project's work in plnnrly, on the organisation's own hostname. It is a stable link, safe to store: it redirects to the first of the project's backlog, all-work list or board the signed-in user may open, and to the project page when none of them applies. Read-only.
Owning customer.
Optional sub-customer.
Responsible project manager.
Responsible account manager.
Workflow modes this project may switch to. Empty until a workflow is linked.
sprintssimple
New values may be added.
Errors
409 Conflict.
412 Precondition failed.
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 POST. Anything else answers 405.
Something wrong or missing on this page? Tell us