Skip to content

Commit 8a8ba81

Browse files
committed
improvement: don't make data required unnecessarily
1 parent 9b33aba commit 8a8ba81

File tree

1 file changed

+16
-5
lines changed

1 file changed

+16
-5
lines changed

lib/ash_json_api/json_schema/json_schema.ex

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -819,9 +819,22 @@ defmodule AshJsonApi.JsonSchema do
819819
non_relationship_arguments =
820820
Enum.reject(action.arguments, &has_relationship_argument?(relationship_arguments, &1.name))
821821

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+
822835
%{
823836
"type" => "object",
824-
"required" => ["data"],
837+
"required" => required_top_level_properties,
825838
"additionalProperties" => false,
826839
"properties" => %{
827840
"data" => %{
@@ -835,16 +848,14 @@ defmodule AshJsonApi.JsonSchema do
835848
%{
836849
"type" => "object",
837850
"additionalProperties" => false,
838-
"required" =>
839-
required_write_attributes(resource, non_relationship_arguments, action, route),
851+
"required" => required_write_attributes,
840852
"properties" =>
841853
write_attributes(resource, non_relationship_arguments, action, route)
842854
}
843855
|> add_null_for_non_required(),
844856
"relationships" => %{
845857
"type" => "object",
846-
"required" =>
847-
required_relationship_attributes(resource, relationship_arguments, action),
858+
"required" => required_relationship_attributes,
848859
"additionalProperties" => false,
849860
"properties" => write_relationships(resource, relationship_arguments, action)
850861
}

0 commit comments

Comments
 (0)