POST /publish/prepare
Registers a draft from a client-built manifest and returns a presigned upload URL. No file content is sent here — only paths, sizes, and hashes.
org defaults to the device’s home org; membership in the target org is required.
Validation on prepare:
POST /publish/:draftId/complete
After uploading the package to uploadUrl, complete the publish. The draft is bound to its creator.
The server never auto-publishes and never silently drops a finding — rejections carry the details, for a human to see.