JSON Schema valida apenas as regras que você escreveu

JSON legível não é necessariamente adequado a uma requisição. O esquema descreve os dados esperados, mas não aplica condições omitidas ou verifica fatos externos.

Presença e tipo são escolhas distintas

Definir um campo em properties impõe condições quando ele existe, não o torna obrigatório. Use required se ele precisa chegar.

O número 3 e o texto "3" são diferentes. Aceitar um não implica converter o outro automaticamente; desenhe o contrato segundo as necessidades de quem consome os dados.

Referências: JSON Schema — Properties, required fields and additional properties

Decida sobre campos adicionais

Em um esquema simples de objeto, additionalProperties: false rejeita campos não declarados. Pode detectar erro no nome, mas exige atualização deliberada quando o contrato cresce.

Teste campo ausente, tipo errado e propriedade extra. O resultado fica claro quando cada exemplo examina uma regra conhecida.

Referências: JSON Schema — Properties, required fields and additional properties

Conformidade não aprova a requisição

ToolRoof verifica localmente um subconjunto de Draft 2020-12. Não busca esquemas remotos nem suporta toda palavra-chave; relata recursos não suportados em vez de aprová-los silenciosamente.

Um sucesso não prova existência do produto, preço no banco de dados ou autorização do usuário. A anotação default também não preenche campos ausentes neste verificador.

Exemplo: quantidade obrigatória sem coerção oculta

O contrato exige quantity do tipo integer, mínimo 1, em required, e rejeita propriedades extras. {"quantity":3} passa; {"quantity":"3"} falha pelo tipo.

{} falha pela ausência; {"quantity":3,"note":"draft"} pela propriedade adicional. Aceitar 3 não confirma 3 unidades no estoque: essa regra está fora do exemplo.

Referências