# Rules for Extending

Any modification to an existing API **MUST** avoid breaking changes and **MUST** maintain backward compatibility.

In particular, any change to an API **MUST** follow the following **Rules for Extending**:

1. **You MUST NOT take anything away** (related: [Minimal Surface Principle](https://adidas.gitbook.io/api-guidelines/general-guidelines/minimal-api-surface)

   , [Robustness Principle](https://adidas.gitbook.io/api-guidelines/general-guidelines/robustness))
2. **You MUST NOT change processing rules**&#x20;
3. **You MUST NOT make optional things required**
4. **Anything you add MUST be optional** (related [Robustness Principle](https://adidas.gitbook.io/api-guidelines/general-guidelines/robustness))

> NOTE: These rules cover also renaming and change to identifiers (URIs). Names and identifiers should be stable over the time including their semantics.
