> ## Documentation Index
> Fetch the complete documentation index at: https://docs.finventi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# API Changes Policy

# Non Breaking Changes

During APIs development, two types of API changes are expected: **non breaking changes** or **breaking changes**.

Inventi never introduces breaking changes. Whenever newly introduced functionality requires breaking changes, a new endpoint is created with increased version prefix number. I.e. `v2`.

Nevertheless, non-breaking changes are introduced constantly without explicitly notifying the clients. All changes are documented in a `Change Logs` section.

## What is a NON Breaking Change?

1. Adding a new optional field in request or response body.
2. Changing field from mandatory to optional in request or response body.
3. Adding a new endpoint.
4. Performance improvements.
5. Adding new enum values to the request body.

## What is a Breaking Change?

1. Removing or renaming things.

   ```json theme={null}
   // before
   { "userId": 42 }
   // after
   { "id": 42 }
   ```
2. Changing data types.

   ```json theme={null}
   // before
   { "age": 30 }
   // after
   { "age": "30" }
   ```
3. Making optional things required.

   ```json theme={null}
   // before, deliveryTime optional
   POST /orders
   { "note": "call me" }
   // after, deliveryTime required
   POST /orders
   { "note": "call me", "deliveryTime": "18:00" }
   ```
4. Changing response status code. I.e. from `404` to `400`.
5. Changing behavior or meaning.
   1. Same endpoint, different logic.
   2. Same field, different interpretation.
