@@ -819,9 +819,22 @@ defmodule AshJsonApi.JsonSchema do
819
819
non_relationship_arguments =
820
820
Enum . reject ( action . arguments , & has_relationship_argument? ( relationship_arguments , & 1 . name ) )
821
821
822
+ required_write_attributes =
823
+ required_write_attributes ( resource , non_relationship_arguments , action , route )
824
+
825
+ required_relationship_attributes =
826
+ required_relationship_attributes ( resource , relationship_arguments , action )
827
+
828
+ required_top_level_properties =
829
+ if Enum . empty? ( required_write_attributes ) && Enum . empty? ( required_relationship_attributes ) do
830
+ [ ]
831
+ else
832
+ [ "data" ]
833
+ end
834
+
822
835
% {
823
836
"type" => "object" ,
824
- "required" => [ "data" ] ,
837
+ "required" => required_top_level_properties ,
825
838
"additionalProperties" => false ,
826
839
"properties" => % {
827
840
"data" => % {
@@ -835,16 +848,14 @@ defmodule AshJsonApi.JsonSchema do
835
848
% {
836
849
"type" => "object" ,
837
850
"additionalProperties" => false ,
838
- "required" =>
839
- required_write_attributes ( resource , non_relationship_arguments , action , route ) ,
851
+ "required" => required_write_attributes ,
840
852
"properties" =>
841
853
write_attributes ( resource , non_relationship_arguments , action , route )
842
854
}
843
855
|> add_null_for_non_required ( ) ,
844
856
"relationships" => % {
845
857
"type" => "object" ,
846
- "required" =>
847
- required_relationship_attributes ( resource , relationship_arguments , action ) ,
858
+ "required" => required_relationship_attributes ,
848
859
"additionalProperties" => false ,
849
860
"properties" => write_relationships ( resource , relationship_arguments , action )
850
861
}
0 commit comments