infoannouncementAtlassian calls it: Announcement
Rate limiting enhancements for Confluence DC
- Announced
- APIs
- confluence-data-center
- Severity
- info, set by
reef/atlassian-rule-v1 - Source
- https://developer.atlassian.com/changelog/#CHANGE-3137
- Extend Rate-limit to all endpoints: Apply rate limiting consistently across all APIs and UI endpoints to ensure uniform protection. This prevents abuse or traffic spikes from targeting unprotected endpoints. It also improves overall system stability and fairness in resource usage.
- Rate Limiting Configuration Options for Bot and User Requests: Provide configurable rate limits separately for automation traffic and user requests. This allows stricter control over automated traffic while preserving user experience. It also enables flexibility for different customer environments and usage patterns.
- Global Error Handling for “Too Many Requests” (HTTP 429): Introduce a centralized mechanism to handle HTTP 429 responses across the application. Ensure consistent error messages are returned to clients. This improves client experience
Newly Introduced Java APIs
| Class or Interfaces | New methods |
|---|---|
| SystemPropertiesService | RateLimitingMode getRateLimitingMode(GlobalSettingType type);List<SystemRateLimitingSettings> getAllSystemSettings();SystemRateLimitingSettings getSystemSettingsFor(GlobalSettingType type); |
| SystemRateLimitingSettingsDao | List<SystemRateLimitingSettings> getAllSystemSettings();SystemRateLimitingSettings getSystemSettingsFor(GlobalSettingType type); |
| UserRateLimitSettingsDao | Optional<UserRateLimitSettings> getUserSettingsByType(RateLimitUser user, GlobalSettingType requestType);void deleteUserSettingsByRequestType(RateLimitUser user, GlobalSettingType type); |
| DmzRateLimitSettingsModificationService | void deleteUserSettingsByRequestType(RateLimitUser user, GlobalSettingType type); |
| UserRateLimitSettings | @Nonnull RateLimitUserType getUserType(); @Nonnull GlobalSettingType getRequestType(); |
| TokenBucketFactory | TokenBucket createTokenBucket(RateLimitCacheKey bucketKey)boolean hasCurrentSettings(RateLimitCacheKey bucketKey, TokenBucket bucket) |
| SystemRateLimitingSettingsProvider | SystemRateLimitingSettings getSystemSettingsForRequestType(GlobalSettingType requestType) |
| UserRateLimitingSettingsProvider | Optional<UserRateLimitSettings> get(UserKey userKey, GlobalSettingType requestType) |
| RateLimitService | Optional<TokenBucket> getBucket(RateLimitCacheKey bucketKey)boolean tryRateLimitPreAuth(RateLimitCacheKey bucketKey)boolean tryAcquire(RateLimitCacheKey bucketKey) |
New Rest APIs
These are the new V2 endpoints created to support dual configuration in the backend.
| Resources | Newly Introduced V2 APIs |
|---|---|
| System Settings | GET admin/v2/rate-limit/settings |
| User Settings | GET admin/v2/rate-limit/settings/usersGET admin/v2/rate-limit/settings/users/{userId}PUT admin/v2/rate-limit/settings/users/token-bucketPUT admin/v2/rate-limit/settings/users/whitelistPUT admin/v2/rate-limit/settings/users/blacklistDELETE admin/v2/rate-limit/settings/users/{userId} |
| User Resource | GET admin/v2/rate-limit/users/picker |
Affected Old Rest APIs
| Resources | Old API Changes |
|---|---|
| System Settings | PUT admin/rate-limit/settings (optional requestType parameter defaults to AUTOMATION has been added for backward compatibility) |
| History Resource | GET admin/rate-limit/history (New optional requestType filter parameter has been added) |
More details: [object Object]
The text above is Atlassian's. reef added the severity, the dates it could read from the text, and the endpoints and scopes named in code.