> ## Documentation Index
> Fetch the complete documentation index at: https://upstash-vector.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Compatibility

One of the following compatibility rules can be selected when using the Schema Registry:

* `BACKWARD`: consumers using the new schema can read data written by producers using the latest registered schema.
* `BACKWARD_TRANSITIVE`(default): consumers using the new schema can read data written by producers using all previously registered schemas.
* `FORWARD`: consumers using the latest registered schema can read data written by producers using the new schema.
* `FORWARD_TRANSITIVE`: consumers using all previously registered schemas can read data written by producers using the new schema.
* `FULL`: the new schema is forward and backward compatible with the latest registered schema.
* `FULL_TRANSITIVE`: the new schema is forward and backward compatible with all previously registered schemas.
* `NONE`: schema compatibility checks are disabled.

To enable the semantics above, you are allowed to make the following changes in each option.
If you choose `TRANSITIVE`, it means that schema will be compared against all versions before,
not only the last one.
The table shows which applications `consumers` / `producers` should be upgraded first.

| Compatibility Type      | What is allowed                             | Upgrade first  |
| ----------------------- | ------------------------------------------- | -------------- |
| `BACKWARD[_TRANSITIVE]` | Delete fields. Add optional fields.         | Consumers      |
| `FORWARD[_TRANSITIVE]`  | Add fields. Delete optional fields.         | Producers      |
| `FULL[_TRANSITIVE]`     | Add optional fields.Delete optional fields. | Any order      |
| `NONE`                  | All changes are accepted.                   | Not Applicable |
