Delete a Project
A 502 repository_unavailable means the Project was not deleted because its Draft pull requests could not be retired. Retry deletion to finish retiring the remaining reviews. Repeating a completed deletion returns 404.
See conditional writes for ETag and If-Match.
Authorization
apiKey Organization API key from the console (ak_...), or an OAuth access token with user:org:read, the organization selected during consent, and the capability required by the operation.
In: header
Path Parameters
Unique identifier for a project.
^prj_[a-z0-9]{16}$Header Parameters
ETag from a preceding response. The write applies only if the resource still has that version; otherwise it returns 412 precondition_failed without changes. Omit to write the current version. See https://typeship.dev/docs/typeship-api#conditional-writes.
1 <= length <= 1024Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://example.com/projects/prj_4f8k2m7x9q1v6b3n"{ "id": "prj_4f8k2m7x9q1v6b3n", "object": "project", "deleted": true, "request_id": "req_3k8m1v6q9p2d7h4c"}Update a Project PATCH
Omitted fields keep their current values. A supplied config replaces the entire stored object; null or an empty object clears it. With auto_generate enabled, changing shared config queues a Generation for each Target whose effective config changes. A queued or running Target reuses that Generation. Omitting If-Match applies the update to the current resource; with If-Match, a stale ETag returns 412 precondition_failed without saving. A `409 target_busy` means a Target is publishing. Retrieve the Project, wait for publishing to finish, reconcile your update, and retry. A `502 follow_up_failed` means the Project was saved, but an obsolete Draft pull request could not be retired. Retrieve the Project and retry the same update to finish retiring reviews if that update is still desired. See [conditional writes](https://typeship.dev/docs/typeship-api#conditional-writes) for ETag and If-Match.
Generate a Project's Targets POST
Queues one Generation per active Target and returns their IDs. Retrieve each Generation until its status moves from `queued` to `running` and then `completed` or `failed`. `completed` means generated files are saved; check Delivery and Draft status separately for repository delivery and pull requests. A Target already queued or running is returned without starting another Generation. A `409 targets_inactive` means the Project has no active Target to generate. A matching Idempotency-Key replay returns the same Generations with their current statuses. If the package already matches a destination and no Draft is open, delivery creates no commit, branch, or pull request. An existing Draft stays open. Automatic generation uses the same workflow.