-- required validation -- present required property is valid SELECT is_jsonb_valid('{"properties":{"foo":{},"bar":{}},"required":["foo"]}', '{"foo":1}'); is_jsonb_valid ---------------- t (1 row) -- non-present required property is invalid SELECT is_jsonb_valid('{"properties":{"foo":{},"bar":{}},"required":["foo"]}', '{"bar":1}'); is_jsonb_valid ---------------- f (1 row) -- ignores arrays SELECT is_jsonb_valid('{"properties":{"foo":{},"bar":{}},"required":["foo"]}', '[]'); is_jsonb_valid ---------------- t (1 row) -- ignores strings SELECT is_jsonb_valid('{"properties":{"foo":{},"bar":{}},"required":["foo"]}', '""'); is_jsonb_valid ---------------- t (1 row) -- ignores other non-objects SELECT is_jsonb_valid('{"properties":{"foo":{},"bar":{}},"required":["foo"]}', '12'); is_jsonb_valid ---------------- t (1 row) -- required default validation -- not required by default SELECT is_jsonb_valid('{"properties":{"foo":{}}}', '{}'); is_jsonb_valid ---------------- t (1 row)