Skip to content

docs: SMS guard limits on the endpoints that send a text - #66

Open
roncodes wants to merge 2 commits into
mainfrom
docs/sms-guard-limits
Open

roncodes wants to merge 2 commits into
mainfrom
docs/sms-guard-limits

Conversation

@roncodes

@roncodes roncodes commented Oct 13, 2026 •

Copy link
Copy Markdown
Member

Summary

Brings the spec in line with the SMS guard shipped across core-api, storefront and fleetops after the storefront SMS-pumping incident. Descriptions and params only, plus response examples where the reference had none.

Storefront API → Customer

  • request-creation-code: 422 for an existing account or an invalid / untextable number; a repeat inside sixty seconds answers ok without a second message; ten-minute single-use codes; five requests a minute per key and address; 429 + Retry-After and 423 refusals. Examples added: 200, 422, 429.
  • login-with-sms: the method field and the email fallback (also when the guard refuses). Examples added: sms and email.
  • verify-code, verify-phone-number, confirm-account-closure: codes verify once, lock after five wrong guesses, and the identity is locked out with 429 after ten wrong codes in fifteen minutes.
  • request-phone-verification, account-closure: validation, throttle and refusal statuses; closure falls back to email when the text cannot go.

Fleetbase API → Customers / Drivers

  • Request Customer Creation Code: no pending user record is created any more; name / phone params reworded to match.
  • Login SMS, forgot-password, verify and reset endpoints: ten-minute single-use codes, the five-guess lock, the five-a-minute throttle, the method field and email fallback. A guard refusal now reaches the caller as 422 / 429 + Retry-After / 423 (feat(auth): hashed single-use verification codes, no stub users before verification fleetops#395), with the email fallback kept on the login endpoints.

Not in scope: the admin int/v1/sms-guard/* routes are console-internal and the Core API collection does not cover int/v1.

Related

Source changes: fleetbase/core-api#305, fleetbase/core-api#307, fleetbase/storefront#144, fleetbase/storefront#145, fleetbase/fleetops#393, fleetbase/fleetops#395. Prose docs: fleetbase/fleetbase.io#128.

Type of Change

  • Documentation

Validation

  • Lint: npm run postman:lint
Linting Fleetbase API...            No issues found. Scanned: 246 | Errors: 0 | Warnings: 0
Linting Fleetbase Core API...       No issues found. Scanned: 24
Linting Fleetbase Integrated Vendor Flow... No issues found. Scanned: 7
Linting Fleetbase Ledger API...     No issues found. Scanned: 8
Linting Fleetbase Storefront API... No issues found. Scanned: 76

Collections were not run: the changes are descriptions, params and static examples, and exercising them for real would send text messages.

Documentation Impact

  • Documentation updated in fleetbase/fleetbase.io (fleetbase/fleetbase.io#128)

API Reference Impact

  • Updated fleetbase/postman

API reference notes: the generated reference picks these up through the usual bump-postman workflow once this merges.

Risk

None; no request URLs, methods or variables change.

Storefront Customer: request-creation-code documents the 422 for an
existing account or an unusable number, the sixty-second resend window,
ten-minute single-use codes, the five-a-minute throttle and the 429/423
refusals; login-with-sms documents the method field and the email
fallback; the verify endpoints document the five-guess code lock and the
per-identity 429 lockout; phone verification and account closure follow
the same rules. Response examples added for request-creation-code
(200, 422, 429) and login-with-sms (sms and email).

Fleetbase API Customers and Drivers: the creation-code request no longer
seeds a pending user record; login SMS, forgot-password and the verify and
reset endpoints document single-use codes, the five-guess lock, the
throttle and the email fallback.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant