Context
The plugins (plugin-auth, plugin-identity) already have rate limiting via lib-commons v4's ratelimit.New(). No Midaz component currently has rate limiting.
Problem
- Midaz APIs are exposed without any rate limiting
- For a financial infrastructure product, this is a baseline security gap
- Plugins already have this protection; Midaz core does not
Proposed Change
Add ratelimit.New() middleware from lib-commons v4 to all Midaz components:
ledger
transaction
plugin-crm
onboarding
What ratelimit.New() provides
- Redis-backed rate limiting with configurable tiers:
default, aggressive, relaxed
- Fail-open / fail-closed modes (configurable)
- OpenTelemetry integration for observability
- Per-client identification via configurable headers
Acceptance Criteria
Context
The plugins (plugin-auth, plugin-identity) already have rate limiting via lib-commons v4's
ratelimit.New(). No Midaz component currently has rate limiting.Problem
Proposed Change
Add
ratelimit.New()middleware from lib-commons v4 to all Midaz components:ledgertransactionplugin-crmonboardingWhat
ratelimit.New()providesdefault,aggressive,relaxedAcceptance Criteria
default)X-RateLimit-Limit,X-RateLimit-Remaining,Retry-After)