As ferramentas de API tiveram um quase acerto doloroso: o OpenAPI usava objetos de esquema semelhantes a JSON, mas eles não eram totalmente JSON Schema. Validadores, geradores de código e ferramentas de documentação precisavam aprender diferenças sutis, de modo que o mesmo contrato de API podia significar coisas diferentes em pilhas diferentes.

O movimento elegante não foi criar outra linguagem exclusiva para API. O JSON Schema fez do próprio esquema um tipo de mídia JSON, com vocabulários e metaesquemas que declaram quais palavras-chave e comportamentos estão em jogo. O OpenAPI 3.1 pôde então dizer: use o JSON Schema draft 2020-12, não um sósia.

O resultado foi um padrão que venceu ao se tornar a gramática por baixo de outros padrões. O OpenAPI chamou sua versão 3.1 de 100% compatível com o draft mais recente do JSON Schema, enquanto o JSON Schema ganhou um modelo de extensão estável para validação, geração de código, UI e documentação.

Tornar os esquemas vocabulários extensíveis

O esquema permaneceu JSON comum, então os desenvolvedores podiam lê-lo, compará-lo por diff e gerá-lo com ferramentas existentes.

Os vocabulários deram nomes e limites às extensões em vez de fazer cada plataforma inventar palavras-chave privadas.

A adoção do OpenAPI puxou o JSON Schema para os fluxos de trabalho de documentação de API, validação e geração de código de uma só vez.

O Draft 2020-12 deu aos implementadores um alvo estável, incluindo dialetos e metaesquemas.

Um formato se espalha quando as extensões são de primeira classe e testáveis, não escondidas em prosa ou convenções de fornecedores.

O OpenAPI 3.1 foi lançado em 18 de fevereiro de 2021 com compatibilidade total com o JSON Schema draft 2020-12. Isso fez do JSON Schema a camada de contrato compartilhada para um grande ecossistema de ferramentas de API, e não apenas um formato de validador autônomo.

CONFIRA AS EVIDÊNCIAS

As fontes

  1. JSON Schema: A Media Type for Describing JSON Documents JSON Schema · json-schema.org
  2. OpenAPI Specification 3.1.0 Released OpenAPI Initiative · openapis.org ·