diff --git a/plans/names-codes/2026-10-21-store-api.md b/plans/names-codes/2026-10-21-store-api.md index 8396648e65..deb1c987d5 100644 --- a/plans/names-codes/2026-10-21-store-api.md +++ b/plans/names-codes/2026-10-21-store-api.md @@ -539,7 +539,7 @@ Errors: `400 bad_request`, `400 invalid_name`, `404 not_found`, `409 order_exist ### `POST /api/registration/:id/retry` -Only from `failed`, else `400 bad_request`. In order: +Only from `failed`, and not when `linksRefused` is set (its commitment fixes the refused links, so a new commit could never register; the page offers `/name` instead), else `400 bad_request`. In order: 1. A register that went through with only its confirmation lost (a mined register with status 1, or `ownerOf` is the owner) makes it `registered`. A code order's code is spent in the same write when it is still unused or held by this order; a code released and then spent, revoked or expired meanwhile leaves the order `registered` and alerts the operator, since the name was already paid with it. 2. A code order whose code was released by the 30-day sweep and is now used, revoked, expired or held elsewhere answers that code error (`409 code_used`, `400 code_invalid`, `409 code_expired`, `409 code_reserved`); it stays `failed`. 3. Otherwise it is `queued` again at no charge, re-reserving a released code. When the sponsor nonce moved since the intent, or a new commit is needed (the stored intent's deadline is the old `revealBefore`, so it cannot serve the new window), the label and intent are cleared, so the page reveals and signs again.