Skip to content

Commit 008e09f

Browse files
committed
Adding required section to ext
1 parent ea9e4fa commit 008e09f

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

src/dms/core/EdFi.DataManagementService.Core/OpenApi/OpenApiDocument.cs

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,11 +402,48 @@ private static JsonObject CreateFilteredExtension(
402402
JsonObject filteredProperties
403403
)
404404
{
405-
return new JsonObject
405+
var filteredExtension = new JsonObject
406406
{
407407
["type"] = originalExtension["type"]?.DeepClone() ?? "object",
408408
["properties"] = filteredProperties.DeepClone(),
409409
};
410+
411+
// Copy additional schema properties that should be preserved
412+
var propertiesToCopy = new[] { "description", "required" };
413+
414+
foreach (var propertyName in propertiesToCopy)
415+
{
416+
if (originalExtension[propertyName] != null)
417+
{
418+
// For "required" array, filter to only include properties that exist in filteredProperties
419+
if (propertyName == "required" && originalExtension[propertyName] is JsonArray requiredArray)
420+
{
421+
var filteredRequired = new JsonArray();
422+
foreach (JsonNode? item in requiredArray)
423+
{
424+
if (
425+
item?.GetValue<string>() is string requiredProp
426+
&& filteredProperties.ContainsKey(requiredProp)
427+
)
428+
{
429+
filteredRequired.Add(requiredProp);
430+
}
431+
}
432+
433+
// Only add required if it has items
434+
if (filteredRequired.Count > 0)
435+
{
436+
filteredExtension[propertyName] = filteredRequired;
437+
}
438+
}
439+
else
440+
{
441+
filteredExtension[propertyName] = originalExtension[propertyName]!.DeepClone();
442+
}
443+
}
444+
}
445+
446+
return filteredExtension;
410447
}
411448

412449
/// <summary>

0 commit comments

Comments
 (0)