• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

safe-global / safe-auth-service / 40673694714
94%

Build:
DEFAULT BRANCH: main
Ran 28 Oct 2026 10:40AM UTC
Jobs 1
Files 114
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

28 Oct 2026 10:38AM UTC coverage: 93.752% (+0.3%) from 93.441%
40673694714

push

github

web-flow
feat: expose the account plan in the X-RateLimit-Plan response header (#487)

* feat: expose the account plan in the X-RateLimit-Plan response header

Clients need to know which plan their API key is rate limited under. Plan
changes now also re-upsert the user's existing consumers, so X-Consumer-RPS
no longer goes stale after an upgrade or downgrade. A dedicated command
backfills the headers for existing keys without touching consumer groups,
so quota counters are not reset.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: lowercase the plan header and keep the regenerate command's per-key error handling

The acceptance criteria name the plan values as builder, growth and scale,
but billing sends them capitalised. The regenerate command refactor was
not needed for the ticket and made one failing consumer skip the rest of
the user's keys, so it is reverted and only gains the plan argument.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* fix: backfill the plan of paying users and keep webhook cleanup independent of the consumer sync

Existing paying users have no stored plan after the migration, so the sync command now resolves it from the Billing Service and writes no plan header until it does. A failed consumer upsert no longer aborts the other keys or the webhook cleanup.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* Update app/commands/apisix_util.py

Co-authored-by: Felipe Alvarado <felipe@safe.global>

* fix: report rejected consumers from the sync command and keep going on gateway network errors

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

* Update app/services/api_key_service.py

Co-authored-by: Felipe Alvarado <felipe@safe.global>

* fix: catch gateway network errors per consumer so callers no longer need their own wrapper

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Felipe Alvarado <felipe@safe.global>

2911 of 3105 relevant lines covered (93.75%)

0.94 hits per line

Coverage Regressions

Lines Coverage ∆ File
24
63.33
16.14% app/commands/apisix_util.py
11
83.33
5.21% app/services/billing_service.py
8
86.67
-0.83% app/commands/register_commands.py
6
86.49
1.98% app/application/billing/handle_billing_webhook.py
4
97.78
0.01% app/datasources/db/models.py
3
96.55
0.06% app/config.py
Jobs
ID Job ID Ran Files Coverage
1 40673694714.1 28 Oct 2026 10:40AM UTC 114
93.75
GitHub Action Run
Source Files on build 40673694714
  • Tree
  • List 114
  • Changed 9
  • Source Changed 0
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • beb62758 on github
  • Prev Build on main (#39948798910)
  • Next Build on main (#40715356827)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc