@@ -12,8 +12,10 @@ import Control.Monad.State.Strict
1212import Data.Aeson as J
1313import Data.Foldable as F
1414import Data.HashMap.Strict as H
15+import Data.List as L
1516import Data.List.NonEmpty as NE
1617import Data.Schematic.Schema as S
18+import Data.Set as Set
1719import Data.Singletons
1820import Data.Text
1921import Data.Traversable
@@ -84,8 +86,13 @@ toJsonSchema' = \case
8486 res <- for objs $ \(n,s) -> do
8587 s' <- toJsonSchema' s
8688 pure (n, s')
89+ let
90+ nonOpt = \case
91+ (_, DSchemaOptional _) -> False
92+ _ -> True
8793 pure $ emptySchema
8894 { _schemaType = pure $ TypeValidatorString D4.SchemaObject
95+ , _schemaRequired = pure $ Set.fromList $ fst <$> L.filter nonOpt objs
8996 , _schemaProperties = pure $ H.fromList res }
9097 DSchemaArray acs sch -> do
9198 res <- toJsonSchema' sch