Implementation
Rate limiting tiers:. . Free tier:. - 100 requests/hour. - 1000 requests/day. - Return 429 when exceeded. Paid tier:. - 10,000 requests/hour. - 100,000 requests/day. - Auto-scale capacity. Enterprise tier:. - Custom limits. - Burstable capacity. - Priority routing. . Quota tracking:. typescript. api_key: string,. tier: string,. hourly_limit: number,. daily_limit: number,. hourly_used: number,. daily_used: number,. hourly_reset: timestamp,. daily_reset: timestamp. const quota = this.quotas.get(apiKey);. const now = Date.now();. // Reset counters if period expired. quota.daily_used = 0;. quota.daily_reset = startOfDay(now + 1 day);. quota.hourly_used = 0;. quota.hourly_reset = startOfHour(now + 1 hour);. // Check limits. // Increment counters. quota.hourly_used++;. quota.daily_used++;. . Example rate limiting:. json. // Free tier request (within quota):. // Free tier request (quota exceeded):. // Paid tier request (higher quota):.
Sample Test Cases
{"src":"client","dest":"gateway","body":{"type":"init","msg_id":1,"tiers":{"free":{"hourly_limit":100,"daily_limit":1000},"paid":{"hourly_limit":10000,"daily_limit":100000}}}}
{"src":"client","dest":"gateway","body":{"type":"api_request","msg_id":2,"method":"GET","path":"/api/data","headers":{"X-API-Key":"free_key_123"},"hourly_used":100}}
{"src": "gateway", "dest": "client", "body": {"type": "init_ok", "in_reply_to": 1}}
{
"src": "client",
"dest": "gateway",
"body": {
"type": "api_request",
"msg_id": 1,
"method": "GET",
"path": "/api/data",
"headers": {
"X-API-Key": "free_key_123"
}
}
}{"src": "gateway", "dest": "client", "body": {"type": "api_response", "in_reply_to": 1, "status": 200, "headers": {"X-RateLimit-Limit": "100", "X-RateLimit-Remaining": .*, "X-RateLimit-Reset": .*}}}
Hints
Hint 1▾
Hint 2▾
Hint 3▾
Hint 4▾
Hint 5▾
Theoretical Hub
Concept overview coming soon