|
| 1 | +# Versioning Strategy |
| 2 | + |
| 3 | +This document defines the versioning strategy for the Infobip C# API Client. |
| 4 | + |
| 5 | +--- |
| 6 | + |
| 7 | +## 1. Versioning Model |
| 8 | + |
| 9 | +The SDK follows a **pragmatic Semantic Versioning** model: |
| 10 | + |
| 11 | +``` |
| 12 | +MAJOR.MINOR.PATCH |
| 13 | +``` |
| 14 | + |
| 15 | +While we adhere to the core principles of SemVer, the SDK evolves in tandem with Infobip's backend APIs, which may require **occasional breaking changes in MINOR releases**. These will always be documented clearly. |
| 16 | + |
| 17 | +### Summary of Intent |
| 18 | + |
| 19 | +* **MAJOR** → Large, coordinated breaking changes across multiple areas, architectural redesigns, endpoint version migrations. |
| 20 | +* **MINOR** → New features, new endpoints, model updates, and in some cases *breaking changes required by API correctness*. |
| 21 | +* **PATCH** → Bug fixes, documentation fixes, safe dependency bumps. |
| 22 | + |
| 23 | +--- |
| 24 | + |
| 25 | +## 2. Change Classification |
| 26 | + |
| 27 | +### 2.1 Patch Changes (PATCH) |
| 28 | + |
| 29 | +PATCH versions include changes that are fully backward compatible: |
| 30 | + |
| 31 | +* Bug fixes. |
| 32 | +* Typo and documentation corrections. |
| 33 | +* Safe dependency upgrades. |
| 34 | +* Internal refactors with no public API impact. |
| 35 | + |
| 36 | +--- |
| 37 | + |
| 38 | +### 2.2 New Features and API Updates (MINOR) |
| 39 | + |
| 40 | +MINOR versions introduce: |
| 41 | + |
| 42 | +* New endpoints, webhooks, or new request/response fields. |
| 43 | +* Support for new message types, enums, or capabilities. |
| 44 | +* Fixing wrong field types (e.g., `string` → `int`). |
| 45 | +* Removing fields or models when upstream endpoints no longer support them. |
| 46 | +* Unifying models (e.g., platform enums, validity windows, message statuses). |
| 47 | +* Replacing request/response classes due to upstream schema changes. |
| 48 | + |
| 49 | +**Breaking changes may appear in MINOR releases** when necessary. |
| 50 | + |
| 51 | +--- |
| 52 | + |
| 53 | +### 2.3 Major Changes (MAJOR) |
| 54 | + |
| 55 | +MAJOR releases are reserved for **significant, multi-area-breaking changes**, such as: |
| 56 | + |
| 57 | +* Full API reorganization. |
| 58 | +* Global unification or rework of API surface. |
| 59 | +* Endpoint version migrations across several products. |
| 60 | +* Architectural redesigns. |
| 61 | +* Removal of deprecated features accumulated over multiple MINOR releases. |
| 62 | + |
| 63 | +--- |
| 64 | + |
| 65 | +## 3. Handling Upstream API Changes |
| 66 | + |
| 67 | +* **Correctness takes priority over C# API backward compatibility.** |
| 68 | +* When upstream APIs change field types, remove fields, or alter schemas, the SDK must remain consistent. |
| 69 | +* Such updates may cause MINOR releases to include breaking changes. |
| 70 | +* These will always be documented with a ⚠️ note in the CHANGELOG. |
| 71 | + |
| 72 | +This ensures the SDK remains reliable and accurate for production usage. |
| 73 | + |
| 74 | +--- |
| 75 | + |
| 76 | +## 4. C# and Dependency Compatibility Policy |
| 77 | + |
| 78 | +### 4.1 Minimum C# Version Changes |
| 79 | + |
| 80 | +Increasing the **minimum targeted .NET framework version** (e.g.,.NET Standard 2.0 → .NET Standard 2.1) is always treated as a **MAJOR** version change. Such a change may break compilation and runtime compatibility for existing users and therefore constitutes a breaking API change. |
| 81 | + |
| 82 | +### 4.2 Dependency Upgrade Policy |
| 83 | + |
| 84 | +**PATCH** |
| 85 | + |
| 86 | +* Only patch-level dependency updates are allowed (e.g., Polly 7.2.0 → 7.2.4). |
| 87 | +* Must not introduce behavior changes, serialization differences, or require consumers to adjust their dependencies. |
| 88 | +* Test/build-only dependency bumps are allowed. |
| 89 | + |
| 90 | +**MINOR** |
| 91 | + |
| 92 | +* Patch or minor dependency updates are allowed (e.g., Polly 7.0 → 7.2). |
| 93 | +* No breaking serialization or model changes caused solely by dependency bumps. |
| 94 | + |
| 95 | +**MAJOR** |
| 96 | + |
| 97 | +* All dependency upgrades are allowed, including breaking changes. |
| 98 | +* Major dependency upgrades (e.g., Polly 7 → 8) should be shipped in major releases. |
| 99 | +* Framework switches, large refactors, or structural changes belong here. |
| 100 | + |
| 101 | +All dependency-related breaking changes will be clearly documented in the CHANGELOG. |
0 commit comments