I think the idea of having classes of client IDs (user story 8) would make it so we would only have X+1 rate limits, where X is the number of classes. Classes might be something like:
- "new" (just registered)
- "normal" (some period of time has passed since registration and/or manual review)
- "preferred" (a developer who's shown a need for more API calls and has gone through a request/review process)
- "paid" (a developer who's paid for more API calls. This is out of scope for this project, but it's how I'd imagine we'd implement the feature).
- "in-house" (One of our official front-end clients, or a batch client like ORES. As close to infinite as we could make it.)
I don't think assigning a rate limit per client ID is a reasonable use of our time. If we feel like we need to set a particular limit for a particular client, we could do that by adding a class with only one member, and setting a limit for that class. If we find ourselves doing that a lot, I'd say we could come back around and add a feature to define a limit per client.