API Contract Checker
Confronta specifiche OpenAPI 3.x: rileva modifiche critiche, sicure, di sicurezza e allOf/oneOf, con upload e supporto 3.1 - tutto nel browser.
🔒 Questo strumento funziona interamente nel tuo browser. I tuoi file non vengono mai caricati su un server.
Strumento browser
API Contract Checker
Ogni riquadro accetta OpenAPI 3.x come JSON o YAML — incollalo, trascina un file sul riquadro, oppure usa Carica file. Nulla viene caricato su un server — il confronto avviene interamente nel tuo browser. Premi Ctrl+Enter per confrontare subito.
Come funziona
- Incolla la tua spec OpenAPI 3.x base (vecchia) e di revisione (nuova) nei due riquadri - oppure trascina un file .json/.yaml/.yml su uno dei due, o usa il pulsante Upload file. Sia JSON che YAML funzionano, e i formati non devono corrispondere.
- Premi Confronta, continua a digitare (si riesegue automaticamente dopo una breve pausa), oppure premi Ctrl+Enter per confrontare all'istante.
- I risultati sono raggruppati in modifiche critiche, modifiche sicure/additive e altre modifiche - incluse quelle di sicurezza, deprecazione, server e allOf/oneOf/anyOf - con un conteggio per ciascuna in alto. Clicca su un badge di conteggio per nascondere o mostrare quel gruppo.
- Scegli un formato di report (Text, Markdown o JSON) e premi Download report per salvare il diff completo.
FAQ
Cosa controlla esattamente questo strumento?
Incolli (o carichi) una spec OpenAPI 3.x base (vecchia) e una di revisione (nuova), e lo strumento analizza ogni path, parametro, corpo della richiesta, risposta, requisito di sicurezza e schema in entrambe, poi riporta cosa è cambiato: endpoint aggiunti o rimossi, modifiche ai requisiti di parametri e campi della richiesta, tipi o enum ristretti, campi di risposta o codici di stato scomparsi, modifiche ai requisiti di sicurezza e modifiche alla composizione allOf/oneOf/anyOf.
Cosa si intende per modifica "critica"?
Qualsiasi cosa che potrebbe far smettere di funzionare un client esistente: un endpoint rimosso, un parametro o campo della richiesta diventato obbligatorio, un campo di risposta o codice di stato rimosso, un campo non più garantito in una risposta, oppure un tipo/enum diventato più ristretto (inclusi gli array di tipi nullable di OpenAPI 3.1, ad esempio rimuovendo "null" da `["string", "null"]`). Nuovi endpoint, nuovi campi opzionali e nuovi campi di risposta sono additivi e vengono mostrati separatamente come sicuri.
Controlla anche gli schemi di sicurezza e le modifiche di deprecazione?
Sì. Requisiti di sicurezza aggiunti/rimossi (globali e per singola operazione), modifiche alla definizione degli schemi di sicurezza (ad esempio una API key che passa da header a parametro di query), operazioni appena deprecate e modifiche agli URL del server vengono tutti riportati - come rilievi informativi anziché critici o sicuri, poiché (in linea con la gravità predefinita assegnata da oasdiff a questi controlli) nessuna delle due direzioni è universalmente giusta o sbagliata; decidi tu se è rilevante per la tua API.
Gestisce la composizione di schemi allOf, oneOf e anyOf?
Sì. I membri di `allOf` vengono risolti e uniti prima del confronto, quindi un campo obbligatorio aggiunto in profondità in uno schema composto viene comunque rilevato. Gli insiemi di varianti `oneOf`/`anyOf` vengono confrontati e segnalati come informativi quando una variante viene aggiunta o rimossa, poiché se quella specifica modifica sia critica dipende da come i tuoi client distinguono tra le varianti.
Supporta Swagger 2.0?
No - questo strumento confronta solo spec OpenAPI 3.x. Swagger 2.0 (il formato più vecchio) struttura parametri e corpi in modo diverso, quindi applicare le stesse regole darebbe risultati errati. Incollare un documento Swagger 2.0 produce un errore chiaro invece di un diff silenziosamente sbagliato.
La mia spec viene inviata da qualche parte?
No. Sia l'analisi che il confronto vengono eseguiti nel tuo browser - la tua spec non lascia mai il tuo dispositivo, a differenza della maggior parte degli altri strumenti di diff OpenAPI, che elaborano il caricamento sul proprio server anche quando dichiarano di non conservarlo. Questo vale anche quando usi l'opzione di caricamento/trascinamento file: il file viene letto localmente, mai trasmesso.
Cosa non controlla?
Confronta i corpi di richiesta e risposta `application/json`, che coprono la grande maggioranza delle API REST, ma non valuta altri content type, header di risposta, descrizioni o esempi. Un `$ref` che punta fuori dal documento (un file separato o un URL) viene segnalato come non risolvibile anziché ignorato silenziosamente.
Posso incollare YAML invece di JSON, o caricare un file?
Sì a entrambe le cose. Ogni riquadro accetta JSON o YAML indipendentemente e rileva quale hai usato, quindi puoi confrontare una spec base JSON con una revisione YAML o viceversa. Puoi anche trascinare un file .json/.yaml/.yml su uno dei riquadri, o usare il pulsante Upload file - il file viene letto nel tuo browser e non viene mai caricato altrove.
Supporta OpenAPI 3.1, non solo 3.0?
Funziona con qualsiasi documento che abbia un campo "openapi": "3.x" e un oggetto "paths", il che copre sia 3.0 che 3.1 - incluso il `type` in forma array di 3.1 (ad esempio `["string", "null"]`) - e rifiuta solo i documenti che sembrano Swagger 2.0.
Posso esportare il diff come JSON, Markdown o HTML?
Text (.txt), Markdown (.md) e JSON (.json) sono tutti supportati - scegline uno dal menu a tendina dei formati accanto a Download report prima di scaricare. L'esportazione JSON include l'elenco completo dei rilievi oltre ai conteggi per gravità, quindi può essere inviata a un altro script (ad esempio un controllo CI) se ti serve.
Si aggiorna mentre digito, o devo cliccare su Confronta?
Funzionano entrambi: premi Confronta per una riesecuzione immediata, oppure continua semplicemente a digitare - dopo una breve pausa si confronta automaticamente. Puoi anche premere Ctrl+Enter (Cmd+Enter su Mac) da uno dei due riquadri per confrontare subito senza attendere.
Come ci confrontiamo
| Funzionalità | Online Tool Store | oasdiff | SpecShield |
|---|---|---|---|
| Confronta la tua spec interamente nel browser | Sì - nulla lascia il tuo dispositivo, inclusi i file caricati | No - elaborato sul loro server | No - elaborato sul loro server, poi scartato |
| Accetta OpenAPI 3.x come JSON o YAML, incollato o caricato | Sì - incolla, trascina o usa Upload file | Incolla o carica | Incolla o carica |
| Raggruppa i risultati in modifiche critiche, sicure e altre | Sì, con badge cliccabili per filtrare | Sì, tramite una modalità dedicata Breaking Changes | Sì, gli stessi tre gruppi |
| Gestisce la composizione di schemi allOf/oneOf/anyOf | Sì - allOf viene unito prima del confronto; le modifiche alle varianti oneOf/anyOf vengono segnalate | Non documentato sulla pagina pubblica del diff | Non documentato |
| Segnala modifiche a sicurezza, deprecazione e URL del server | Sì, tutte e tre (mostrate come informative, non critiche/sicure) | Sicurezza e deprecazione, tramite il motore sottostante di oasdiff | Non documentato |
| Gratuito, senza account richiesto | Sì | Sì, per il diff base | Sì, per il diff base |
Utile per un controllo rapido e privato delle modifiche critiche prima di rilasciare una nuova versione dell'API - specialmente quando la spec stessa è sensibile e preferisci non inviarla, o inviare un file caricato, a un server di terze parti.