Коротко: у березні 2026 GitHub випустив REST API версію 2026-03-10 — це перша календарна версія з breaking changes. Паралельно GitHub Actions отримав підтримку repo_property_* у OIDC-токенах, що дозволяє перейти від ручних allow-list до ABAC в AWS/Azure/GCP. Хороша новина: обидві задачі реально закрити за один спринт, якщо почати з інвентаризації і йти поетапно.
Що саме змінилося і чому це важливо
1) REST API 2026-03-10 уже в проді
GitHub офіційно оголосив нову версію REST API (2026-03-10) і підтвердив: це перший календарний реліз із несумісними змінами. Запити без заголовка X-GitHub-Api-Version далі за замовчуванням ідуть на 2022-11-28, але відкладати міграцію — погана ідея: техборг лише росте.
2) Є реальні точки поломки для інтеграцій
Серед змін, які найчастіше «стріляють» у проді:
- видалення застарілих полів (наприклад,
rateуGET /rate_limit); - зміни окремих типів/поведінки у відповідях (наприклад,
submoduleу repository contents); - зміни статус-кодів для окремих операцій (приклад із
204 -> 202); - прибирання історично застарілих властивостей.
Якщо ваш код жорстко парсить конкретну форму JSON, ризик інциденту дуже практичний.
3) OIDC custom property claims відкривають нормальний ABAC
Тепер org/enterprise адміністратори можуть додавати repository custom properties у OIDC claims. У токені вони зʼявляються як repo_property_<назва>. Це дозволяє видавати cloud-доступ не «цьому списку реп», а «репозиторіям із певними атрибутами» — наприклад environment=prod, data_class=internal, workspace_id=....
Результат: менше ручної рутини, менше configuration drift, швидший онбординг нових репозиторіїв.
Практичний план на 7 днів (один спринт)
День 1: інвентаризація і мапа ризиків
- Зберіть список усіх інтеграцій, що викликають GitHub REST API.
- Для кожної інтеграції зафіксуйте:
- критичність (бізнес-вплив),
- власника,
- чи встановлюється
X-GitHub-Api-Version, - які endpoint-и і поля реально використовуються.
- Позначте «крихкі» місця: ручний парсинг, strict schema, кастомні ретраї, жорсткі перевірки status code.
Артефакт дня: таблиця integration -> owner -> risk -> migration status.
День 2–3: тестовий прогін із новою версією API
- У staging/canary примусово задайте
X-GitHub-Api-Version: 2026-03-10. - Проганяйте контрактні тести і перевіряйте payload diff на критичних endpoint-ах.
- Виправляйте парсинг:
- не покладатися на видалені поля,
- коректно обробляти нові типи,
- не «падати» від зміни неключових атрибутів.
Go/No-Go критерій: 0 критичних помилок у canary + стабільні SLI (error rate/latency).
День 4: захист від повторної поломки
- Додайте smoke/contract тести, які запускаються на кожному PR.
- Зробіть алерт, якщо API-запит іде без
X-GitHub-Api-Version. - Впровадьте fallback-логіку для неочікуваних полів/enum значень.
Мета: наступна міграція не повинна бути «аварією вручну».
День 5: OIDC модель атрибутів
- Визначте 3-5 org-level custom properties, які реально керують доступом (наприклад:
environment,business_unit,data_class,workspace_id). - Налаштуйте включення цих властивостей у OIDC claims.
- Переконайтеся, що репозиторії мають коректно заповнені значення.
День 6: ABAC-політики у хмарі
- Оновіть trust policy у хмарі так, щоб вона перевіряла
repo_property_*claims. - Приберіть дублюючі allow-list, які вже не потрібні.
- Перевірте 2 сценарії:
- легітимний репозиторій отримує доступ;
- репозиторій із неправильним атрибутом — ні.
День 7: staged rollout у прод і контрольний зріз
- Перемкніть на
2026-03-10спочатку 10-20% інтеграцій. - Моніторте помилки, статус-коди, бізнес-метрики.
- Розширте rollout до 100%, якщо немає регресій.
- Зафіксуйте пост-релізний звіт: що змінили, що відклали, які ризики залишились.
Мінімальні guardrails та rollback
Щоб не «тушити пожежу» вночі, домовтеся про прості правила:
- Kill switch: можливість швидко повернути попередній конфіг API-версії для конкретної інтеграції.
- Owner on-call: кожна критична інтеграція має відповідального під час rollout.
- Чіткий поріг відкату: наприклад, >2% 5xx або суттєвий бізнес-регрес протягом 10-15 хв.
- Логи рішень: що саме відкотили, чому, хто погодив.
Типові помилки команд (і як не наступити)
-
“Поставимо нову API-версію одразу всюди”
Ризик: масовий інцидент без локалізації.
Краще: canary + staged rollout. -
“Залишимо старі allow-list, ABAC потім”
Ризик: подвійна модель доступу й хаос у правах.
Краще: короткий перехідний період і планове прибирання дублювань. -
“Поля в JSON стабільні назавжди”
Ризик: крихкий парсер падає від дрібної зміни.
Краще: tolerant parsing + контрактні тести на критичні поля.
Висновок
Окремо міграція API і окремо hardening доступу виглядають як дві великі задачі. Разом — це один нормальний інженерний спринт: спочатку сумісність (X-GitHub-Api-Version: 2026-03-10), далі керований ABAC через repo_property_* claims. Після цього менше ризику «зламати інтеграції», менше ручної рутини в доступах, і краще масштабування нових репозиторіїв.
Офіційні джерела:
- https://github.blog/changelog/2026-03-12-rest-api-version-2026-03-10-is-now-available/
- https://docs.github.com/en/rest/about-the-rest-api/api-versions
- https://docs.github.com/en/rest/about-the-rest-api/breaking-changes?apiVersion=2026-03-10
- https://github.blog/changelog/2026-03-12-actions-oidc-tokens-now-support-repository-custom-properties/
- https://docs.github.com/en/actions/concepts/security/openid-connect