Online Tool Store Online Tool Store

Перевірка контрактів API

Порівнюйте специфікації OpenAPI 3.x: breaking changes, безпечні зміни, security та allOf/oneOf — із завантаженням файлів і підтримкою 3.1, повністю в браузері.

🔒 Цей інструмент працює повністю у вашому браузері. Ваші файли ніколи не завантажуються на сервер.

Інструмент у браузері

Перевірка контрактів API

Кожне поле приймає OpenAPI 3.x у JSON або YAML — вставте текст, перетягніть файл на поле або скористайтеся кнопкою Завантажити файл. Нічого не завантажується на сервер — порівняння виконується повністю у вашому браузері. Натисніть Ctrl+Enter для миттєвого порівняння.

Як це працює

  1. Вставте базову (стару) та нову (revision) специфікацію OpenAPI 3.x у два поля — або перетягніть файл .json/.yaml/.yml на будь-яке з них, або скористайтеся кнопкою Upload file. Підходить і JSON, і YAML, формати можна не узгоджувати.
  2. Натисніть Compare, продовжуйте вводити текст (порівняння перезапуститься автоматично після короткої паузи), або натисніть Ctrl+Enter для миттєвого порівняння.
  3. Результати групуються на breaking changes, безпечні/адитивні зміни та інші модифікації — включно зі змінами security, deprecation, server та allOf/oneOf/anyOf — із кількістю в кожній групі зверху. Натисніть на значок із числом, щоб приховати або показати групу.
  4. Оберіть формат звіту (Text, Markdown або JSON) і натисніть Download report, щоб зберегти повний diff.

FAQ

Що саме перевіряє цей інструмент?

Ви вставляєте (або завантажуєте) базову (стару) та нову (revision) специфікацію OpenAPI 3.x, інструмент проходить кожен шлях, параметр, тіло запиту, відповідь, вимогу безпеки та схему в обох версіях і повідомляє, що змінилося: додані чи видалені ендпоінти, зміни обов'язковості параметрів і полів запиту, звуження типів або enum, зниклі поля відповіді чи коди статусу, зміни вимог безпеки та зміни композиції allOf/oneOf/anyOf.

Що вважається «breaking»-зміною?

Усе, що може порушити роботу наявного клієнта: видалений ендпоінт, параметр або поле запиту, що стало обов'язковим, видалене поле чи код статусу відповіді, поле, яке більше не гарантується у відповіді, або тип/enum, що став вужчим (включно з масивами nullable-типів OpenAPI 3.1, наприклад видалення "null" з `["string", "null"]`). Нові ендпоінти, нові необов'язкові поля та нові поля відповіді є адитивними й показуються окремо як безпечні.

Чи перевіряються зміни схем безпеки та deprecation?

Так. Додані/видалені вимоги безпеки (глобальні та для окремих операцій), зміни визначень схем безпеки (наприклад, перенесення API-ключа із заголовка в query-параметр), нещодавно позначені як deprecated операції та зміни server URL — усе це подається як інформаційні знахідки, а не breaking чи safe, оскільки (відповідно до того, як ці перевірки за замовчуванням класифікує сам oasdiff) жоден напрямок не є універсально правильним чи неправильним; ви самі вирішуєте, чи важливо це для вашого API.

Чи обробляється композиція схем allOf, oneOf та anyOf?

Так. Члени `allOf` розв'язуються та об'єднуються перед порівнянням, тому обов'язкове поле, додане глибоко всередині складеної схеми, все одно буде виявлене. Набори варіантів `oneOf`/`anyOf` порівнюються й позначаються як інформаційні при додаванні чи видаленні варіанта, оскільки те, чи є конкретна зміна breaking, залежить від того, як ваші клієнти розрізняють варіанти.

Чи підтримується Swagger 2.0?

Ні — порівнюються лише специфікації OpenAPI 3.x. Swagger 2.0 (старіший формат) описує параметри й тіла запитів інакше, тому застосування тих самих правил дало б хибні результати. Під час вставлення документа Swagger 2.0 замість тихого хибного diff з'явиться зрозуміла помилка.

Чи надсилається моя специфікація кудись?

Ні. І розбір, і порівняння виконуються у вашому браузері — специфікація ніколи не залишає ваш пристрій, на відміну від більшості інших інструментів порівняння OpenAPI, які обробляють завантажений файл на своєму сервері, навіть якщо стверджують, що не зберігають його. Це стосується й завантаження/перетягування файлу: файл читається локально й ніколи не передається.

Що інструмент не перевіряє?

Він порівнює тіла запитів і відповідей `application/json`, що охоплює переважну більшість REST API, але не оцінює інші типи вмісту, заголовки відповідей, описи чи приклади. `$ref`, що вказує за межі документа (на окремий файл чи URL), позначається як нерозв'язний, а не тихо пропускається.

Чи можна вставити YAML замість JSON або завантажити файл?

Так, і те, і інше. Кожне поле приймає JSON або YAML незалежно й визначає, який із них ви використали, тож можна порівнювати базову специфікацію в JSON із новою версією в YAML або навпаки. Також можна перетягнути файл .json/.yaml/.yml на будь-яке поле або скористатися кнопкою Upload file — файл читається в браузері й ніколи нікуди не завантажується.

Чи підтримується OpenAPI 3.1, а не лише 3.0?

Інструмент працює з будь-яким документом, що має поле "openapi": "3.x" та об'єкт "paths", що охоплює і 3.0, і 3.1 — включно з формою масиву для `type` у 3.1 (наприклад, `["string", "null"]`) — і відхиляє лише документи, схожі на Swagger 2.0.

Чи можна експортувати diff у JSON, Markdown або HTML?

Підтримуються Text (.txt), Markdown (.md) та JSON (.json) — оберіть потрібний формат у випадному списку поруч із Download report перед завантаженням. Експорт у JSON включає повний список знахідок і лічильники за рівнями серйозності, тож його можна передати в інший скрипт (наприклад, CI-перевірку), якщо це потрібно.

Чи оновлюється результат під час введення, чи потрібно натискати Compare?

Працює і так, і так: натисніть Compare для миттєвого перезапуску або просто продовжуйте вводити текст — після короткої паузи порівняння виконається автоматично. Також можна натиснути Ctrl+Enter (Cmd+Enter на Mac) у будь-якому з полів, щоб порівняти негайно, не чекаючи на паузу.

Порівняння з іншими інструментами

ФункціяOnline Tool StoreoasdiffSpecShield
Порівнює вашу специфікацію повністю в браузері Так — нічого не залишає ваш пристрій, включно із завантаженими файламиНі — обробка на їхньому серверіНі — обробка на їхньому сервері, потім видалення
Приймає OpenAPI 3.x у JSON або YAML, вставленням або завантаженням Так — вставлення, перетягування або Upload fileВставлення або завантаженняВставлення або завантаження
Групує результати на breaking, safe та інші зміни Так, зі значками з фільтрацією по клікуТак, через окремий режим Breaking ChangesТак, ті самі три групи
Обробляє композицію схем allOf/oneOf/anyOf Так — allOf об'єднується перед порівнянням; зміни варіантів oneOf/anyOf позначаютьсяНе задокументовано на публічній сторінці diffНе задокументовано
Позначає зміни security, deprecation і server URL Так, усі три (показані як інформаційні, а не breaking/safe)Security та deprecation, через базовий рушій oasdiffНе задокументовано
Безкоштовно, без реєстрації ТакТак, для базового diffТак, для базового diff

Підходить для швидкої приватної перевірки breaking changes перед випуском нової версії API — особливо коли сама специфікація чутлива і ви не хочете надсилати її (або завантажений файл) на сторонній сервер.

Схожі інструменти

Вбудувати цей інструмент

Вставте це на свій сайт — він залишиться безкоштовним, і кожен файл усе одно залишається в браузері відвідувача, а не у вас чи в нас.