Skip to content
Back to insights
SaaSAPI managementbackward compatibilityarchitectureMay 22, 20267 min read

API Versioning and Deprecation for SaaS in Indonesia

A practical API versioning and deprecation policy for SaaS teams in Indonesia, with backward compatibility, timelines, and rollout tips.

By APLINDO Engineering

Frequently asked questions

When should a SaaS team introduce a new API version?
Introduce a new version when a change would break existing clients, such as removing fields, changing data types, or altering authentication behavior.
How long should an API remain supported after deprecation?
There is no universal rule, but many teams use a 6-12 month support window depending on customer size, integration complexity, and contractual commitments.
What is the safest way to deprecate an API?
Announce early, provide migration guidance, keep both versions running during the transition, and monitor usage before shutdown.
Does backward compatibility mean never changing an API?
No. It means you should prefer additive changes, preserve existing behavior when possible, and isolate breaking changes into a new version.

Why API versioning matters for SaaS

For any SaaS company, APIs are not just technical interfaces. They are customer contracts. Once a client in Jakarta, Surabaya, Singapore, or anywhere else builds against your API, even a small breaking change can stop billing, login, syncing, or reporting workflows.

That is why API versioning and deprecation policy should be treated as architecture, not as an afterthought. A clear policy helps your team ship faster because engineers do not need to debate every change from scratch. It also reduces support load, because customers know what to expect and when.

For Indonesian SaaS teams, this matters even more when serving enterprises, fintechs, logistics providers, and government-adjacent systems that often have longer procurement cycles and stricter integration controls.

Key takeaways

  • Prefer backward-compatible changes whenever possible.
  • Use a written deprecation policy with dates, milestones, and migration steps.
  • Keep versioning simple so customers can understand it quickly.
  • Monitor real API usage before retiring older versions.
  • Treat deprecation as a customer communication process, not only a code change.

What counts as a breaking change?

A breaking change is any change that can cause an existing client to fail, misbehave, or receive different results without updating its code.

Common examples include:

  • Removing an endpoint or field
  • Renaming a field
  • Changing a field type, such as string to number
  • Making a previously optional field required
  • Changing authentication rules
  • Altering response semantics or status codes
  • Changing pagination or sorting behavior in a way clients rely on

Not every change needs a new version. Adding a new optional field, introducing a new endpoint, or expanding an enum in a safe way is usually backward compatible.

Which versioning strategy should you use?

There is no single perfect model, but most SaaS teams choose one of these approaches:

URI versioning

Example: /v1/orders, /v2/orders

This is the easiest for customers to understand and for support teams to document. It is also common in SaaS products because it makes version boundaries explicit. The downside is that teams can become too quick to create a new version for every change.

Header-based versioning

Example: Accept: application/vnd.company.v2+json

This keeps URLs clean and can be more flexible, but it is harder for some developers to discover and test. It also adds complexity to debugging and API gateway rules.

Query parameter versioning

Example: /orders?version=2

This is simple to implement but often less elegant for long-term API design. It can also be easier to misuse.

For most SaaS teams in Indonesia, URI versioning is usually the most practical choice because it is easy to document, easy to inspect, and easy to support across different client teams.

How to design for backward compatibility

Backward compatibility starts before your first public release. The goal is to make future change less painful.

A few practical rules help:

Prefer additive changes

Add fields, endpoints, or optional capabilities instead of modifying existing behavior. For example, if you need to support a new invoice status, add a new status value only if clients can safely ignore unknown values.

Keep fields stable

Once a field is public, assume someone depends on it. Avoid renaming or changing meaning unless you are willing to support both old and new forms for a while.

Make optional truly optional

If a field may not always be available, do not make it required later without a transition plan. In distributed systems, missing data is normal.

Version business rules carefully

Sometimes the API shape stays the same, but the business logic changes. That can still be breaking if customers depend on the old behavior. Document those changes clearly.

Use feature flags internally

Feature flags let you test new behavior without exposing it to all clients at once. This is especially useful for SaaS teams with multiple customer segments and integration partners.

What should a deprecation policy include?

A deprecation policy should answer five questions:

  1. What is being deprecated?
  2. Why is it being deprecated?
  3. When will support end?
  4. How should customers migrate?
  5. Who can they contact for help?

A strong policy usually includes:

  • A public announcement date
  • A grace period before shutdown
  • A support end date
  • Migration documentation and examples
  • Runtime warnings in logs, dashboards, or response headers
  • A clear exception process for enterprise customers

For example, a Jakarta-based SaaS serving enterprise clients may announce deprecation in quarter one, keep the old version active through quarter three, and shut it down only after usage falls below a defined threshold.

How long should you support an old version?

Support windows depend on customer complexity, not just engineering preference.

A startup with self-serve customers may support an old version for 3-6 months. An enterprise SaaS with custom integrations may need 6-12 months or more. If the API is used in regulated workflows, procurement-heavy environments, or mission-critical automations, longer support is often safer.

The right answer is not a fixed number. It is a balance between customer impact, operational cost, and your roadmap. Whatever you choose, write it down and apply it consistently.

How do you communicate deprecation without creating panic?

Good communication is specific, calm, and repeated.

Use multiple channels:

  • Email to technical contacts
  • Dashboard notices inside the product
  • API response headers or warnings
  • Developer documentation updates
  • Changelog entries
  • Direct outreach for high-value accounts

Do not wait until the final month to notify users. Give them enough time to test, deploy, and verify. If you have customers in Indonesia and abroad, remember that time zones and internal approval cycles can add weeks to a migration.

Operational controls that make deprecation safer

A policy is only useful if your systems can support it.

Consider these controls:

Usage tracking

Track which API versions are still active, which tenants use them, and how often they are called. Without usage data, you are guessing.

Sunset alerts

Set alerts for traffic on deprecated endpoints so your team knows whether the migration is actually happening.

Contract tests

Use contract testing to catch accidental breaking changes before release.

API gateway rules

If you use an API gateway, enforce version routing and logging there. This makes it easier to observe traffic and manage shutdowns.

Documentation ownership

Assign one team to own API docs, examples, and deprecation notices. Documentation drift is one of the most common reasons migrations fail.

A practical policy template for SaaS teams

A simple policy can look like this:

  • Public APIs must remain backward compatible within a major version.
  • Breaking changes require a new major version.
  • Deprecated versions remain supported for at least 180 days unless otherwise stated.
  • Deprecation notices must include migration steps and a shutdown date.
  • Support exceptions for enterprise customers require approval from product and engineering leadership.
  • Usage on deprecated versions is reviewed monthly.

This does not need to be complicated. The best policy is the one your team can actually follow.

How APLINDO helps teams implement this

At APLINDO, we work with funded startups and enterprises that need reliable SaaS architecture, applied AI systems, and integration-heavy platforms. From our Jakarta HQ and remote-first team, we help design API lifecycle policies, migration plans, and engineering guardrails that fit real delivery constraints.

For teams that also need governance support, APLINDO can help align technical deprecation practices with ISO and compliance consulting, while still avoiding unrealistic promises about certification or legal outcomes. If your product includes self-hosted or regulated workflows, such as e-signature or billing integrations, a clear versioning policy becomes even more important.

Conclusion

API versioning is not just about naming endpoints. It is about protecting customers while giving your team room to evolve the product. A good deprecation policy keeps changes predictable, reduces support friction, and builds trust with developers who depend on your platform.

For SaaS companies in Indonesia, especially those scaling across enterprise and international markets, the safest path is simple: design for backward compatibility, announce deprecations early, and support migrations with real data and clear communication.

Ready to ship something real?

Book a 30-minute call. We'll review your roadmap, recommend the smallest useful next step, and tell you honestly whether we're the right partner.