delete_project
Delete a project and all its services to release the project name. The project row is removed only after every service is deleted; refusals leave it intact.
Instructions
Delete a project: every service in it, then the row, releasing the name.
Services go one by one through the same cascade as ``remove_service``
(owner-or-admin each; a dependency guard or an in-flight run refuses a
service exactly as there). The project row goes last and only when
every service went: a refusal leaves the project in place with 409
``project.delete_incomplete`` listing ``deleted`` and ``failed``, and
re-running after the fix is idempotent. Owner or admin only.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Immutable prj_ ID or name of an existing project. Prefer the ID from list_projects: a retired ID never addresses a same-name replacement. | |
| purge | No | CSV of durable state to destroy alongside EVERY service in the project: ``secrets``, ``data``, ``images``, ``workspace``. Default ``secrets``; an empty string purges nothing; an unknown token is a 422 ``service.invalid_purge``. | secrets |
| idempotency_key | No | Caller-chosen key: a retry with the same key replays the first result instead of acting twice. Omit and a fresh key is minted per call, so each call acts. |