Versioning is hard. But deprecating unversioned APIs? Even harder.
This quarter, we migrated a set of internal APIs to a versioned model using URI-based versioning (
/v1/
style). Key lessons:
- Include version negotiation in contract discussions
- Avoid URI pollution with semver unless truly needed
- Backward compatibility ≠ never changeRelative stability, clear upgrade paths, and automatic contract testing helped streamline our rollout.