Making integration easier.
WHAT THEY PROVIDE
Handling authentication, retries and errors for callers Familiar shapes in their own language Faster first success
WHAT THEY COST
Maintenance, per language, forever.
WHY THAT COST IS UNDERESTIMATED
Each language has its own conventions, tooling and release process.
WHAT TO DECIDE
Which languages, based on who actually calls you.
WHAT TO CONSIDER INSTEAD
Generating them from your specification.
WHAT THAT PROVIDES
Coverage without hand-maintenance.
WHAT IT COSTS
Libraries that feel machine-made.
WHAT A GOOD LIBRARY DOES
Handles authentication and refresh Retries safely, with backoff Exposes errors as the language's own error types Permits configuration of timeouts
WHAT IT SHOULD NOT DO
Hide the interface so thoroughly that debugging is impossible.
WHAT TO PROVIDE ALONGSIDE
A way to see the underlying request and response.
WHY
It is what anyone diagnosing a problem needs.
WHAT TO VERSION
The library independently of the interface.
WHAT TO DOCUMENT
Which library version supports which interface version.
WHAT TO NEVER DO
Ship a library that pins an old interface version indefinitely.