From 6103451ef277f5d8d2e12bc3089f88b47d3aed2b Mon Sep 17 00:00:00 2001 From: shum Date: Thu, 22 Oct 2026 04:31:14 +0000 Subject: [PATCH] plans: names cap counts links of the key's kind --- plans/names-codes/2026-10-21-store-api.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plans/names-codes/2026-10-21-store-api.md b/plans/names-codes/2026-10-21-store-api.md index 859c4a8bdb..91484e4555 100644 --- a/plans/names-codes/2026-10-21-store-api.md +++ b/plans/names-codes/2026-10-21-store-api.md @@ -182,7 +182,7 @@ A name that is paid for here but not yet `registering` (`queued` to `committed`) ``` - `records`: the raw text records, "" when unset. A record set elsewhere may hold several links joined with `;`. -- `entities`: one per link in the records, split on `;` with spaces trimmed, that is a short link of its key's kind; other values make no entity. At most 5 per key (`maxEntitiesPerKey`), the first in the record; the rest make none. Contact entities come first. +- `entities`: one per link in the records, split on `;` with spaces trimmed, that is a short link of its key's kind; other values make no entity. At most 5 per key (`maxEntitiesPerKey`), counted over the links of the key's kind, the first in the record; the rest make none. Contact entities come first. - An entity, as the app's connection-plan alert shows a chat: - `type`: the record it came from, `address` (`simplex.contact`) or `channel` (`simplex.channel`); - `kind`: what the link opens. For a contact address, `business` when the link data says so (`business`, or the profile's `peerType` business), `bot` for `peerType` bot, else `contact`. For a channel link, `channel`; @@ -327,7 +327,7 @@ Errors: `400 bad_request`, `400 invalid_name`, `409 order_exists`, `409 name_tak The duration uses the code's `years`. Checks, in order: 1. The code limit; the body cap; formats; `sealed` at most 11095 characters (`bad_request`); `length` in 6–63 (`invalid_name`). -2. The code parses as a prepaid code and is in the table, else `400 code_invalid`. +2. The code parses as a prepaid code and is in the table, else `400 code_invalid` (a missing or non-text `code` is a format error, `bad_request`, at check 1). 3. The signature recovers `owner`, else `bad_request`. 4. Existing orders (above): an exact resend answers `200 {"registrationId": "…"}`; an overdue order of the same wallet and name is closed first (section 1); anything else meeting a live order is `409 order_exists`. 5. The timestamp within 600 seconds, and the duration within the slack for the code's years, else `bad_request`.