Promote Ephemeral Endpoint
Convert an ephemeral endpoint into a permanent one. Ephemeral endpoints are auto-created by ngris.connect(), the agent's ngris http <port> command, and similar one-shot flows; they're tracked by a janitor that reaps them when the agent has been disconnected for a configurable idle window.
Promotion clears the ephemeral flag, the device fingerprint, and the last_active_at tracking, so the row becomes indistinguishable from one created via POST /v1/endpoints. The endpoint now counts against the account's permanent endpoint quota — if you're already at the limit, promotion fails with 403 and you must delete a permanent endpoint first.
Only an ephemeral endpoint can be promoted: any other endpoint — including every endpoint made with POST /v1/endpoints — answers 409 endpoint is already permanent.
The whole operation is wrapped in a transaction with a SELECT ... FOR UPDATE on both the account and endpoint rows, so concurrent create + promote calls can't both push you over the quota.
Path parameters
Request body
None. Empty {} or no body. The promotion is unconditional — there's nothing to configure.
Response (200 OK)
Returns a minimal confirmation — uuid and ephemeral: false. To read the full endpoint after promotion, call GET /v1/endpoints/{uuid}.
uuid (echo of the path parameter).uuid.false after a successful promotion.Deprecated: until the sunset this response also carries the legacy integer endpoint_id. Don't use it; read uuid / endpoint_uuid.
Errors
endpoint not found).endpoint is already permanent: the endpoint isn't ephemeral (it was created permanent, or was promoted already). Nothing changes. Also 409 with "code": "quota_paused" when the endpoint is paused over your plan's limits.