Set App Source
PUT /apps/{app_id}/source
Bind this app to the repository a build should fetch (J1).
Idempotent, and a REPLACE rather than a merge: every field is written, so rebinding from one provider to another cannot leave the previous provider’s credential pointer behind. A build fetching a new repo with a stale credential is the failure this shape exists to prevent.
There is no GET here on purpose. Source is 1:1 with the app and comes back on
GET /apps/{app_id} through AppResponse, so a separate read would be a
second thing to keep in step for no new information.
credential_ref is a POINTER to a secret, never a secret. The DTO says so and
the column comment says so, because a token written here would also live in
every backup of the control plane and in this route’s own response.
Authorizations
Parameters
Path Parameters
Header Parameters
Request Body required
Bind an app to the repository a build should fetch (J1).
PROVIDER IS VALIDATED HERE, NOT BY A CHECK CONSTRAINT. ensure_public_tables
emits ADD COLUMN IF NOT EXISTS, which cannot add a CHECK to an already
created table, and editing the constraint tuple alone is a silent no-op. So
the vocabulary lives in SOURCE_PROVIDERS and this DTO is what enforces it,
the same way repos_router already validates its provider.
credential_ref is a POINTER, and the description says so on the wire. A
builder who pastes a token here has put it in the control-plane row, in every
backup of it, and in the response body of GET /apps/{app_id}. There is no
way to un-send that, so the field is named and documented to make the mistake
hard rather than merely regrettable.
Responses
200
Successful Response
object
One builder-owned app. Mirrors AppDto.
object
Https-only origins a browser app token may be presented from.
Lifecycle state: draft, published, suspended or archived. active is accepted on write as a legacy spelling of published.
422
Validation Error