Versioning allows you to control the details of the services you interact with so you can maintain stability for your Flows even as functionality is added and modified. This document explains the different APIs you can specify versions for and how they work for your Flows.
WhatsApp Flows allows you to indicate the following versions:
Version | Type | Format | Example |
---|---|---|---|
Flow JSON | string |
|
|
Data API | string |
|
|
Message | integer |
|
|
Adapting the guidance provided by Semantic Versioning (see semver.org), version numbers adhere to the following rules:
1.9
is 1.10
(not 2.0
).1.5
leads to the release of version 2.0
), new changes will be added to the latest major version. This means that new (non breaking) functionality will be added as version 2.1
and there will not be a version 1.6
.The following is an example timeline of changes made to an API using the {major}.{minor}
syntax, starting from an initial version of 1.0
.
Change | Version Change |
---|---|
Add a new parameter |
|
Add new non-breaking functionality |
|
Deprecate and remove functionality |
|
Add a new layout type |
|
Add a new component |
|
Breaking behavior change |
|
The early release versions are intended to allow early integration and once all the client devices suport the version, we will remove early release designation from the version.
Versions marked as "early release" work in the same way as standard versions, with only difference being that they are not yet supported across all the client devices. This means that some of the Flow messages with this version might not be deliverable to all the client devices (the 131026 Message Undeliverable error will be returned in the webhook)
In the process of improving functionality and responding to external requirements, versions may be frozen or expired after launch.
To minimize upgrading effort for Flow developers, the goal is to support viable versions and provide notice for migration when a version's state changes.
The different states a version can have are as follows:
The changelog documentation page will be updated with dates for new versions and before a version freezes or expires.
In general, the period before freeze or expiry will be 90 days from the release of a new version - but not all versions will start the freeze notice when a new version is introduced.
Circumstances may require that a version be frozen or expired in less than 90 days, and the "freezing" period may be skipped entirely in cases where a version needs to expire as soon as possible.
Please refer to the changelog for details of available versions and freeze/expiry dates.
In this example, a new major version (2.0
) is released 2 months after the first release (1.0
).
This example shows what our general support timeline is.
Date | Event |
---|---|
1-Jan-2024 | Version |
1-Mar-2024 | Version |
1-Mar-2024 | Notice period for |
31-May-2024 | Version |
In this example, a security vulnerability is found in a specific minor version (1.1
) requiring that the version be expired as quickly as possible to keep users safe. In this scenario, the version is never frozen, but instead skips directly to being expired for security reasons.
Date | Event |
---|---|
1-Dec-2023 | Version |
31-Dec-2023 | Security vulnerability in |
31-Dec-2023 | Version |
1-Jan-2024 | Notice period for |
31-Mar-2024 | Version |