How versioning and revert work
Functions are versioned automatically. Changing a function's code or configuration records a snapshot, so you can see what it looked like at any point and tell which version produced a given execution.
What creates a version
A version is created only when one of these fields actually changes:
| Fields | |
|---|---|
| What runs | code, filter_conditions |
| How it is delivered | webhook_url, auth_config, headers, config |
| How it behaves | execution_mode, is_active, async_mode |
| What it is called | name, description |
Saving without changing any of them records nothing and leaves the counter where it is, so history reflects real changes rather than every write.
That has a visible effect on the response. An update that changes nothing returns
HTTP 200, with a body reporting No changes detected, version unchanged.
Check the response body rather than the status code when you need to know whether an update took effect.
Which version ran
Each invocation record stores the version that executed, so a run from three weeks ago traces to the exact code that produced it even though the function has changed since.
Reading a single run through the function's own endpoint returns that code directly, which is quicker than reconstructing it from history.
What revert restores
Revert takes a version and restores two fields:
| Fields | |
|---|---|
| Restored from the chosen version | code, filter_conditions |
| Left at their current values | name, webhook_url, auth_config, headers, config, execution_mode, is_active, async_mode, description |
If the configuration changed after the version you are restoring, you get the old code running against today's configuration. Check what else changed before you rely on a revert.
Revert also moves the counter forward. Restoring version 3 of 7 produces version 8, because restoring the code is itself a change. History is append-only: nothing is rewritten or removed.
Before you revert
- Read the history and check what changed besides code.
- Restore any webhook URL or execution configuration explicitly afterwards.
- Prefer editing code alone for changes you may want to undo, so a revert restores everything that changed.
Deleting a function deletes its history, along with its runs and schedules. History does not survive the function.