revise September 2021 API versioning articles
Build and deploy / deploy (push) Successful in 14s

This commit is contained in:
2026-07-31 13:06:48 +03:00
parent 35769c4149
commit 8e078b92ea
7 changed files with 960 additions and 1 deletions
@@ -0,0 +1,53 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 375 680" role="img" aria-labelledby="title desc">
<title id="title">Матрица совместимости двух клиентов API</title>
<desc id="desc">В левой части response проверки для v1 и v2, в правой request проверки для current service. Additive поле проходит, удаление обязательного поля и смена семантики отклоняются.</desc>
<rect width="375" height="680" fill="#111827" rx="20"/>
<text x="25" y="40" fill="#f9fafb" font-family="Arial, sans-serif" font-size="18" font-weight="700">Совместимость API: reader и поток</text>
<text x="25" y="63" fill="#9ca3af" font-family="Arial, sans-serif" font-size="11">Schema описывает форму; test проверяет ожидаемое поведение.</text>
<rect x="22" y="90" width="331" height="38" rx="8" fill="#1f2937"/>
<text x="37" y="115" fill="#e5e7eb" font-family="Arial, sans-serif" font-size="13" font-weight="700">response → client</text>
<text x="225" y="115" fill="#e5e7eb" font-family="Arial, sans-serif" font-size="12" font-weight="700">v1</text>
<text x="290" y="115" fill="#e5e7eb" font-family="Arial, sans-serif" font-size="12" font-weight="700">v2</text>
<text x="37" y="159" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">+ optional deliveryWindow</text>
<rect x="211" y="140" width="50" height="31" rx="7" fill="#065f46"/>
<text x="222" y="160" fill="#d1fae5" font-family="Arial, sans-serif" font-size="11" font-weight="700">PASS</text>
<rect x="278" y="140" width="50" height="31" rx="7" fill="#065f46"/>
<text x="289" y="160" fill="#d1fae5" font-family="Arial, sans-serif" font-size="11" font-weight="700">PASS</text>
<text x="37" y="205" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">− required totalMinor</text>
<rect x="211" y="186" width="50" height="31" rx="7" fill="#7f1d1d"/>
<text x="222" y="206" fill="#fee2e2" font-family="Arial, sans-serif" font-size="11" font-weight="700">STOP</text>
<rect x="278" y="186" width="50" height="31" rx="7" fill="#7f1d1d"/>
<text x="289" y="206" fill="#fee2e2" font-family="Arial, sans-serif" font-size="11" font-weight="700">STOP</text>
<text x="37" y="251" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">status changed semantics</text>
<rect x="211" y="232" width="50" height="31" rx="7" fill="#7f1d1d"/>
<text x="222" y="252" fill="#fee2e2" font-family="Arial, sans-serif" font-size="11" font-weight="700">STOP</text>
<rect x="278" y="232" width="50" height="31" rx="7" fill="#7f1d1d"/>
<text x="289" y="252" fill="#fee2e2" font-family="Arial, sans-serif" font-size="11" font-weight="700">STOP</text>
<line x1="25" y1="290" x2="350" y2="290" stroke="#374151"/>
<rect x="22" y="315" width="331" height="38" rx="8" fill="#1f2937"/>
<text x="37" y="340" fill="#e5e7eb" font-family="Arial, sans-serif" font-size="13" font-weight="700">request → current service</text>
<text x="255" y="340" fill="#e5e7eb" font-family="Arial, sans-serif" font-size="12" font-weight="700">result</text>
<text x="37" y="384" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">v1: confirmationCode</text>
<rect x="250" y="365" width="78" height="31" rx="7" fill="#065f46"/>
<text x="268" y="385" fill="#d1fae5" font-family="Arial, sans-serif" font-size="11" font-weight="700">ACCEPT</text>
<text x="37" y="430" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">v2: + deliveryPreference</text>
<rect x="250" y="411" width="78" height="31" rx="7" fill="#065f46"/>
<text x="268" y="431" fill="#d1fae5" font-family="Arial, sans-serif" font-size="11" font-weight="700">ACCEPT</text>
<text x="37" y="476" fill="#d1d5db" font-family="Arial, sans-serif" font-size="11">typo: deliveryPrefrence</text>
<rect x="250" y="457" width="78" height="31" rx="7" fill="#7f1d1d"/>
<text x="267" y="477" fill="#fee2e2" font-family="Arial, sans-serif" font-size="11" font-weight="700">REJECT</text>
<rect x="25" y="532" width="325" height="112" rx="10" fill="#172554" stroke="#3b82f6"/>
<text x="42" y="559" fill="#dbeafe" font-family="Arial, sans-serif" font-size="12" font-weight="700">Вывод для rollout</text>
<text x="42" y="584" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="11">1. Новый response проверяет старый reader.</text>
<text x="42" y="604" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="11">2. Новый request проверяет current service.</text>
<text x="42" y="624" fill="#bfdbfe" font-family="Arial, sans-serif" font-size="11">3. STOP удерживает legacy contract до migration.</text>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB