ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ APIИспользованиС ΠŸΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ API1. ВСрсионированиС ΠŸΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ API

1. ВСрсионированиС ΠŸΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ API

ДокумСнтация описываСт ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ вСрсионирования ΠŸΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ API GitVerse. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ позволяСт ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ измСнСниями Π² API, обСспСчивая ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΉ ΠΈ ΠΏΡ€Π΅Π΄ΡΠΊΠ°Π·ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ повСдСния для всСх ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠžΠ±Ρ‰Π΅Π΅ описаниС

Π’ цСлях обСспСчСния ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ совмСстимости ΠΈ прозрачности ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ API GitVerse слСдуСт строгой ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ΅ вСрсионирования Π½Π° основС ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ²:

  1. ВСрсионированиС примСняСтся ΠΊΠΎ всСму API ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΠΎΠΌΡƒ Ρ†Π΅Π»ΠΎΠΌΡƒ (сквозная вСрсия).
  2. ВСрсия указываСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ MAJOR-Π½ΠΎΠΌΠ΅Ρ€Ρƒ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1, 2).
  3. ВсС измСнСния Π² API Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΡƒΡŽΡ‚ΡΡ ΠΈ Π²Ρ‹ΠΏΡƒΡΠΊΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ Сдиная новая вСрсия.
  4. Π˜ΡΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ ошибок (Π±Π΅Π· измСнСния ΠΊΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚Π°) Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ смСны вСрсии β€” ΠΎΠ½ΠΈ вносятся Π² послСднюю Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ.
  5. ВСрсии API Π½Π΅ привязаны ΠΊ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΌ вСрсиям GitVerse.

Π€ΠΎΡ€ΠΌΠ°Ρ‚ вСрсии

ВСрсия API β€” это Ρ†Π΅Π»ΠΎΠ΅ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ число, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ MAJOR-вСрсии ΠΏΠΎ сСмантикС SemVer.


Как ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ API

ВСрсия пСрСдаСтся Π² Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅ Accept Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅:

Accept: application/vnd.gitverse.object+json; version=1

⚠️ Π’Π°ΠΆΠ½ΠΎ: Π£ΠΊΠ°Π·Π°Π½ΠΈΠ΅ вСрсии ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Если Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ отсутствуСт ΠΈΠ»ΠΈ содСрТит нСдопустимоС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” запрос Π·Π°Π²Π΅Ρ€ΡˆΠΈΡ‚ΡΡ ошибкой 400 Bad Request.


ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° ΠΈ ΠΆΠΈΠ·Π½Π΅Π½Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» вСрсий

  1. Новая вСрсия API сосущСствуСт с ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 6 мСсяцСв.
  2. ПослС этого прСдыдущая вСрсия выводится ΠΈΠ· эксплуатации.
  3. ΠŸΡ€ΠΈ запросС ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ (Π½ΠΎ Π΅Ρ‰Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ) вСрсии API Π² ΠΎΡ‚Π²Π΅Ρ‚Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ:
Gitverse-Api-Deprecation: true
Gitverse-Api-Decommissioning: 2025-12-31
Gitverse-Api-Latest-Version: 2
  1. ΠŸΡ€ΠΈ запросС ΡƒΠΆΠ΅ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΈΠ· эксплуатации вСрсии возвращаСтся ошибка:
HTTP/1.1 400 Bad Request
Gitverse-Api-Latest-Version: 2

ДокумСнтация ΠΈ спСцификации OpenAPI (Swagger)

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ вСрсии API публикуСтся ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» спСцификации Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ OpenAPI 2.0.
Π€Π°ΠΉΠ»Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ GitVerse:
πŸ”— https://gitverse.ru/gitverse/rest-api-description

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° рСпозитория:

/v1/openapi-1.0.json
/v1/openapi-1.1.json
/v1/openapi-1.2.json
/v2/openapi-2.0.json
/v2/openapi-2.1.json

Π­Ρ‚ΠΈ Ρ„Π°ΠΉΠ»Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ клиСнтских SDK, автоматичСского тСстирования ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΈ Π² инструмСнты Π²Ρ€ΠΎΠ΄Π΅ Postman ΠΈΠ»ΠΈ Swagger UI.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠΎΠ»Π½Ρ‹Π΅ URL-адрСса спСцификаций Π±ΡƒΠ΄ΡƒΡ‚:

  • вСрсия 1: https://gitverse.ru/gitverse/rest-api-description/v1/openapi-1.0.json;
  • вСрсия 2: https://gitverse.ru/gitverse/rest-api-description/v2/openapi-2.0.json.

Π₯отя вСрсионированиС API ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ MAJOR-Π½ΠΎΠΌΠ΅Ρ€ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1, 2), Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ MAJOR-вСрсии ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ обновлСния спСцификации OpenAPI для:

  • выпуска ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ совмСстимых ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ,
  • уточнСния описаний ΠΏΠΎΠ»Π΅ΠΉ ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²,
  • исправлСния ΠΎΠΏΠ΅Ρ‡Π°Ρ‚ΠΎΠΊ ΠΈΠ»ΠΈ нСточностСй,
  • добавлСния ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² ΠΈΠ»ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

Π’Π°ΠΊΠΈΠ΅ обновлСния ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΠΌΠΈΠ½ΠΎΡ€Π½ΠΎΠΉ вСрсии спСцификации (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, 1.0 β†’ 1.1 β†’ 1.2), Π½ΠΎ:

  1. ВсС ΠΎΠ½ΠΈ относятся ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ Ρ‚ΠΎΠΉ ΠΆΠ΅ MAJOR-вСрсии API (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, version=1).
  2. ΠšΠΎΠ½Ρ‚Ρ€Π°ΠΊΡ‚ API (эндпоинты, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹, Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²) остаСтся ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ совмСстимым Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΠ΄Π½ΠΎΠΉ MAJOR-вСрсии.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°Ρ†ΠΈΠΈ для ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

βœ… Π‘Π»Π΅Π΄ΡƒΠΉΡ‚Π΅ этим рСкомСндациям, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ сбоСв Π² интСграциях.

  1. ВсСгда явно ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΠΉΡ‚Π΅ Π²Π΅Ρ€ΡΠΈΡŽ Ρ‡Π΅Ρ€Π΅Π· Accept-Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ.
  2. РСгулярно провСряйтС Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‚Π° Π½Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Gitverse-Api-Deprecation.
  3. ΠŸΠ»Π°Π½ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π½Π° Π½ΠΎΠ²ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ 6 мСсяцСв послС Π΅Π΅ Ρ€Π΅Π»ΠΈΠ·Π°.
  4. Π‘Π»Π΅Π΄ΠΈΡ‚Π΅ Π·Π° обновлСниями Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ спСцификаций ΠΈ Π² ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ запросов ΠΈ ΠΎΡ‚Π²Π΅Ρ‚ΠΎΠ²

Запрос ΠΊ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ (послСднСй) вСрсии API

curl -X GET 'https://api.gitverse.ru/user' \
  -H 'Accept: application/vnd.gitverse.object+json;version=3' \
  -H 'Authorization: Bearer <token>'

ΠžΡ‚Π²Π΅Ρ‚:

HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
Gitverse-Api-Version: 3
Gitverse-Api-Latest-Version: 3
 
{"id":"user123","name":"Alice"}

Запрос ΠΊ ΡƒΡΡ‚Π°Ρ€Π΅Π²ΡˆΠ΅ΠΉ, Π½ΠΎ Π΅Ρ‰Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ вСрсии

curl -X GET 'https://api.gitverse.ru/user' \
  -H 'Accept: application/vnd.gitverse.object+json;version=2' \
  -H 'Authorization: Bearer <token>'

ΠžΡ‚Π²Π΅Ρ‚:

HTTP/1.1 200 OK
Content-Type: application/json;charset=utf-8
Gitverse-Api-Version: 2
Gitverse-Api-Deprecation: true
Gitverse-Api-Decommissioning: 2026-01-01
Gitverse-Api-Latest-Version: 3
 
{"id":"user123","name":"Alice"}

⚠️ ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Gitverse-Api-Deprecation ΠΈ Gitverse-Api-Decommissioning β€” ΠΎΠ½ΠΈ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‚, Ρ‡Ρ‚ΠΎ вСрсия скоро Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π°.


Запрос ΠΊ Π²Ρ‹Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΈΠ· эксплуатации вСрсии

curl -X GET 'https://api.gitverse.ru/user' \
  -H 'Accept: application/vnd.gitverse.object+json;version=1' \
  -H 'Authorization: Bearer <token>'

ΠžΡ‚Π²Π΅Ρ‚:

HTTP/1.1 400 Bad Request
Gitverse-Api-Latest-Version: 3

❌ ВСрсия 1 большС Π½Π΅ поддСрТиваСтся. НСобходимо ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΡŽ Π΄ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ вСрсии.


Π’Ρ‹ нашли Ρ‡Ρ‚ΠΎ искали?