Skip to content

Commit 4467e79

Browse files
authored
Mark stored procedure params without defaults as required in OpenAPI
1 parent 1a8edbe commit 4467e79

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

src/Core/Services/OpenAPI/OpenApiDocumentor.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1422,7 +1422,10 @@ private static OpenApiSchema CreateSpRequestComponentSchema(Dictionary<string, P
14221422
Default = def.Default is not null ? new OpenApiString(def.Default) : null
14231423
});
14241424

1425-
if (def.Required == true)
1425+
// A parameter is required when it is explicitly marked required in the runtime config,
1426+
// or when no default value is available, in which case a value must be provided in the
1427+
// request body. This mirrors the logic used by IsRequestBodyRequired.
1428+
if (def.Required ?? !def.HasConfigDefault)
14261429
{
14271430
required.Add(parameter);
14281431
}

src/Service.Tests/OpenApiDocumentor/StoredProcedureGeneration.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,13 @@ public void ValidateRequestBodyContents(string entityName, string[] expectedPara
101101
string expectedSchemaReferenceId = $"{entityName}{OpenApiDocumentor.SP_REQUEST_SUFFIX}";
102102

103103
ValidateOpenApiReferenceContents(schemaComponentReference, expectedSchemaReferenceId, expectedParameters, expectedParametersJsonTypes);
104+
105+
// Validate that parameters without a default value are marked as required in the schema component.
106+
ISet<string> requiredParameters = _openApiDocument.Components.Schemas[expectedSchemaReferenceId].Required;
107+
CollectionAssert.AreEquivalent(
108+
expectedParameters,
109+
requiredParameters.ToArray(),
110+
message: "Unexpected required parameters in request body schema component.");
104111
}
105112
}
106113

0 commit comments

Comments
 (0)