I run a service that integrates with pager duty on behalf of our users, and man oh man did they make some poor design choices with their API.
The most glaring one is their integration keys, which is how you trigger an alert. They’re just v4 uuids with the hyphens removed, or in other words, completely random.
This is fine by itself, except they have two versions of their event API, and keys for the v1 API don’t work with v2 and vice versa. And there’s no way to distinguish what version a given key is for, since it’s just a jumble of bytes. We can’t even look up the service integration to find out what version it should be. We can using yet another different API, but even then it’s not clearly distinguished.
So now our users are confused about what version they should use. We only supported v1 for a while since there was no way to distinguish, but users kept using v2, which was failing cryptically.
So now we need to try v1, and if it fails try v2. But that means that our monitoring on errors are all fucky now since half the errors arent real errors.
In the grand scheme of things I guess it’s a relatively small design issue, but it sitting right in the middle of their one and only critical path, which makes it really painful.
I’ve alrwady contacted support about it and their response has been, more or less, “oh, uhhh... huh.”
</rant>