in src/Microsoft.OpenApi.OData.Reader/Operation/NavigationPropertyGetOperationHandler.cs [68:144]
protected override void SetResponses(OpenApiOperation operation)
{
if (!LastSegmentIsKeySegment && NavigationProperty.TargetMultiplicity() == EdmMultiplicity.Many)
{
operation.Responses = new OpenApiResponses
{
{
Constants.StatusCode200,
new OpenApiResponse
{
Reference = new OpenApiReference()
{
Type = ReferenceType.Response,
Id = $"{NavigationProperty.ToEntityType().FullName()}{Constants.CollectionSchemaSuffix}"
}
}
}
};
}
else
{
OpenApiSchema schema = null;
var entityType = NavigationProperty.ToEntityType();
if (Context.Settings.EnableDerivedTypesReferencesForResponses)
{
schema = EdmModelHelper.GetDerivedTypesReferenceSchema(entityType, Context.Model);
}
if (schema == null)
{
schema = new OpenApiSchema
{
Reference = new OpenApiReference
{
Type = ReferenceType.Schema,
Id = entityType.FullName()
}
};
}
IDictionary<string, OpenApiLink> links = null;
if (Context.Settings.ShowLinks)
{
string operationId = GetOperationId();
links = Context.CreateLinks(entityType: NavigationProperty.ToEntityType(), entityName: NavigationProperty.Name,
entityKind: NavigationProperty.PropertyKind.ToString(), parameters: operation.Parameters,
navPropOperationId: operationId);
}
operation.Responses = new OpenApiResponses
{
{
Constants.StatusCode200,
new OpenApiResponse
{
Description = "Retrieved navigation property",
Content = new Dictionary<string, OpenApiMediaType>
{
{
Constants.ApplicationJsonMediaType,
new OpenApiMediaType
{
Schema = schema
}
}
},
Links = links
}
}
};
}
operation.Responses.Add(Constants.StatusCodeDefault, Constants.StatusCodeDefault.GetResponse());
base.SetResponses(operation);
}