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.