Skip to content

Commit 3f6b252

Browse files
committed
Updated readme and versioning guide.
1 parent fb0546e commit 3f6b252

File tree

2 files changed

+110
-9
lines changed

2 files changed

+110
-9
lines changed

README.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -189,28 +189,28 @@ Example of webhook implementation using Flask:
189189

190190
```
191191
#### Two-Factor Authentication (2FA)
192-
For 2FA quick start guide please check [these examples](two-factor-authentication.md).
192+
For the 2FA quick start guide please check [these examples](two-factor-authentication.md).
193193

194194
#### Calls
195-
For Calls quick start guide please check [these examples](calls.md).
195+
For the Calls quick start guide please check [these examples](calls.md)
196196

197-
#### Email
198-
For Email quick start guide, view [these examples](email.md).
197+
## Versioning
199198

200-
#### Moments
201-
For Moments quick start guide, view [these examples](moments.md).
199+
This project follows a pragmatic Semantic Versioning approach.
200+
For full details on how versions are managed, please see our [Versioning guide][versioning].
202201

203202
## Ask for help
204203

205-
Feel free to open issues on the repository for any encountered problem or feature request.
204+
Feel free to open an issue on the repository if you see any problem or want to request a feature.
206205

207206
If you want to contribute to this library in any way, please follow the guidelines in [CONTRIBUTING][contributing] file.
208207

209-
For anything that requires our imminent attention, contact us @ [[email protected]](mailto:[email protected]).
208+
For anything that requires our immediate attention, contact us @ [[email protected]](mailto:[email protected]).
210209

211210
[apidocs]: https://www.infobip.com/docs/api
212211
[freetrial]: https://www.infobip.com/docs/essentials/getting-started/free-trial
213212
[signup]: https://www.infobip.com/signup
214213
[semver]: https://semver.org
215214
[license]: LICENSE
216-
[contributing]: CONTRIBUTING.md
215+
[contributing]: CONTRIBUTING.md
216+
[versioning]: VERSIONING.md

VERSIONING.md

Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
# Versioning Strategy
2+
3+
This document defines the versioning strategy for the Infobip PHP 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``int32`).
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 Python 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. Python and Dependency Compatibility Policy
77+
78+
### 4.1 Minimum Python Version Changes
79+
80+
Increasing the **minimum supported Python version** (e.g., Python 3.7 → Python 3.11) is always treated as a **MAJOR** version change. Such a change breaks 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., urllib 1.25.0 → 1.25.3).
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., urllib 1.24 → 1.25).
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., urllib 1.25 → 2, pydantic 1 → 2) 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

Comments
 (0)