@@ -34,6 +34,16 @@ internal sealed class JsonApiSchemaGenerator : ISchemaGenerator
34
34
typeof ( NullableToOneRelationshipInRequest < > )
35
35
} ;
36
36
37
+ private static readonly string [ ] DocumentPropertyNamesInOrder =
38
+ {
39
+ JsonApiPropertyName . Jsonapi ,
40
+ JsonApiPropertyName . Links ,
41
+ JsonApiPropertyName . Data ,
42
+ JsonApiPropertyName . Errors ,
43
+ JsonApiPropertyName . Included ,
44
+ JsonApiPropertyName . Meta
45
+ } ;
46
+
37
47
private readonly ISchemaGenerator _defaultSchemaGenerator ;
38
48
private readonly ResourceObjectSchemaGenerator _resourceObjectSchemaGenerator ;
39
49
private readonly NullableReferenceSchemaGenerator _nullableReferenceSchemaGenerator ;
@@ -76,7 +86,7 @@ public OpenApiSchema GenerateSchema(Type modelType, SchemaRepository schemaRepos
76
86
}
77
87
}
78
88
79
- return _defaultSchemaGenerator . GenerateSchema ( modelType , schemaRepository , memberInfo , parameterInfo ) ;
89
+ return _defaultSchemaGenerator . GenerateSchema ( modelType , schemaRepository , memberInfo , parameterInfo , routeInfo ) ;
80
90
}
81
91
82
92
private static bool IsJsonApiDocument ( Type type )
@@ -100,7 +110,9 @@ private OpenApiSchema GenerateJsonApiDocumentSchema(Type documentType)
100
110
? CreateArrayTypeDataSchema ( referenceSchemaForResourceObject )
101
111
: referenceSchemaForResourceObject ;
102
112
103
- fullSchemaForDocument . Properties [ JsonApiObjectPropertyName . Data ] = referenceSchemaForDataObject ;
113
+ fullSchemaForDocument . Properties [ JsonApiPropertyName . Data ] = referenceSchemaForDataObject ;
114
+
115
+ fullSchemaForDocument . ReorderProperties ( DocumentPropertyNamesInOrder ) ;
104
116
105
117
return referenceSchemaForDocument ;
106
118
}
@@ -120,8 +132,8 @@ private static bool IsDataPropertyNullableInDocument(Type documentType)
120
132
private void SetDataObjectSchemaToNullable ( OpenApiSchema referenceSchemaForDocument )
121
133
{
122
134
OpenApiSchema fullSchemaForDocument = _schemaRepositoryAccessor . Current . Schemas [ referenceSchemaForDocument . Reference . Id ] ;
123
- OpenApiSchema referenceSchemaForData = fullSchemaForDocument . Properties [ JsonApiObjectPropertyName . Data ] ;
124
- fullSchemaForDocument . Properties [ JsonApiObjectPropertyName . Data ] = _nullableReferenceSchemaGenerator . GenerateSchema ( referenceSchemaForData ) ;
135
+ OpenApiSchema referenceSchemaForData = fullSchemaForDocument . Properties [ JsonApiPropertyName . Data ] ;
136
+ fullSchemaForDocument . Properties [ JsonApiPropertyName . Data ] = _nullableReferenceSchemaGenerator . GenerateSchema ( referenceSchemaForData ) ;
125
137
}
126
138
127
139
private static OpenApiSchema CreateArrayTypeDataSchema ( OpenApiSchema referenceSchemaForResourceObject )
0 commit comments