Skip to content

Commit 58b4ab6

Browse files
committed
Fixed: make relationship links non-required
1 parent 419e58a commit 58b4ab6

File tree

18 files changed

+4
-140
lines changed

18 files changed

+4
-140
lines changed

src/Examples/JsonApiDotNetCoreExample/GeneratedSwagger/JsonApiDotNetCoreExample.json

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4977,9 +4977,6 @@
49774977
"additionalProperties": false
49784978
},
49794979
"nullableToOnePersonInResponse": {
4980-
"required": [
4981-
"links"
4982-
],
49834980
"type": "object",
49844981
"properties": {
49854982
"links": {
@@ -5854,9 +5851,6 @@
58545851
"additionalProperties": false
58555852
},
58565853
"toManyTagInResponse": {
5857-
"required": [
5858-
"links"
5859-
],
58605854
"type": "object",
58615855
"properties": {
58625856
"links": {
@@ -5898,9 +5892,6 @@
58985892
"additionalProperties": false
58995893
},
59005894
"toManyTodoItemInResponse": {
5901-
"required": [
5902-
"links"
5903-
],
59045895
"type": "object",
59055896
"properties": {
59065897
"links": {
@@ -5943,9 +5934,6 @@
59435934
"additionalProperties": false
59445935
},
59455936
"toOnePersonInResponse": {
5946-
"required": [
5947-
"links"
5948-
],
59495937
"type": "object",
59505938
"properties": {
59515939
"links": {

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/Relationships/NullableToOneRelationshipInResponse.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Relationships;
1111
internal sealed class NullableToOneRelationshipInResponse<TResource> : NullableSingleData<ResourceIdentifier<TResource>>
1212
where TResource : IIdentifiable
1313
{
14-
[Required]
14+
// Non-required because the related controller may be unavailable when used in an include.
1515
[JsonPropertyName("links")]
1616
public RelationshipLinks Links { get; set; } = null!;
1717

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/Relationships/ToManyRelationshipInResponse.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Relationships;
1111
internal sealed class ToManyRelationshipInResponse<TResource> : ManyData<ResourceIdentifier<TResource>>
1212
where TResource : IIdentifiable
1313
{
14-
[Required]
14+
// Non-required because the related controller may be unavailable when used in an include.
1515
[JsonPropertyName("links")]
1616
public RelationshipLinks Links { get; set; } = null!;
1717

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/Relationships/ToOneRelationshipInResponse.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
using System.ComponentModel.DataAnnotations;
21
using System.Text.Json.Serialization;
32
using JetBrains.Annotations;
43
using JsonApiDotNetCore.OpenApi.JsonApiObjects.Links;
@@ -11,7 +10,7 @@ namespace JsonApiDotNetCore.OpenApi.JsonApiObjects.Relationships;
1110
internal sealed class ToOneRelationshipInResponse<TResource> : SingleData<ResourceIdentifier<TResource>>
1211
where TResource : IIdentifiable
1312
{
14-
[Required]
13+
// Non-required because the related controller may be unavailable when used in an include.
1514
[JsonPropertyName("links")]
1615
public RelationshipLinks Links { get; set; } = null!;
1716

src/JsonApiDotNetCore.OpenApi/JsonApiObjects/ResourceObjects/ResourceDataInResponse.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ internal sealed class ResourceDataInResponse<TResource> : ResourceData
1515
[JsonPropertyName("relationships")]
1616
public RelationshipsInResponse<TResource> Relationships { get; set; } = null!;
1717

18-
// This would normally be { "self": "/people/5" } for GET /todoItems/1/assignee, but it is null when PeopleController is unavailable.
18+
// Non-required because the related controller may be unavailable when used in an include.
1919
[JsonPropertyName("links")]
2020
public ResourceLinks Links { get; set; } = null!;
2121

test/OpenApiTests/ClientIdGenerationModes/GeneratedSwagger/swagger.g.json

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,9 +1098,6 @@
10981098
"additionalProperties": false
10991099
},
11001100
"toManyGameInResponse": {
1101-
"required": [
1102-
"links"
1103-
],
11041101
"type": "object",
11051102
"properties": {
11061103
"links": {
@@ -1142,9 +1139,6 @@
11421139
"additionalProperties": false
11431140
},
11441141
"toManyPlayerGroupInResponse": {
1145-
"required": [
1146-
"links"
1147-
],
11481142
"type": "object",
11491143
"properties": {
11501144
"links": {
@@ -1186,9 +1180,6 @@
11861180
"additionalProperties": false
11871181
},
11881182
"toManyPlayerInResponse": {
1189-
"required": [
1190-
"links"
1191-
],
11921183
"type": "object",
11931184
"properties": {
11941185
"links": {

test/OpenApiTests/Headers/GeneratedSwagger/swagger.g.json

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1803,9 +1803,6 @@
18031803
"additionalProperties": false
18041804
},
18051805
"toManyLanguageInResponse": {
1806-
"required": [
1807-
"links"
1808-
],
18091806
"type": "object",
18101807
"properties": {
18111808
"links": {

test/OpenApiTests/LegacyOpenApi/GeneratedSwagger/swagger.g.json

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7463,9 +7463,6 @@
74637463
"additionalProperties": false
74647464
},
74657465
"nullable-to-one-flight-attendant-in-response": {
7466-
"required": [
7467-
"links"
7468-
],
74697466
"type": "object",
74707467
"properties": {
74717468
"links": {
@@ -7906,9 +7903,6 @@
79067903
"additionalProperties": false
79077904
},
79087905
"to-many-flight-attendant-in-response": {
7909-
"required": [
7910-
"links"
7911-
],
79127906
"type": "object",
79137907
"properties": {
79147908
"links": {
@@ -7950,9 +7944,6 @@
79507944
"additionalProperties": false
79517945
},
79527946
"to-many-flight-in-response": {
7953-
"required": [
7954-
"links"
7955-
],
79567947
"type": "object",
79577948
"properties": {
79587949
"links": {
@@ -7994,9 +7985,6 @@
79947985
"additionalProperties": false
79957986
},
79967987
"to-many-passenger-in-response": {
7997-
"required": [
7998-
"links"
7999-
],
80007988
"type": "object",
80017989
"properties": {
80027990
"links": {
@@ -8039,9 +8027,6 @@
80398027
"additionalProperties": false
80408028
},
80418029
"to-one-flight-attendant-in-response": {
8042-
"required": [
8043-
"links"
8044-
],
80458030
"type": "object",
80468031
"properties": {
80478032
"links": {

test/OpenApiTests/LegacyOpenApi/expected-swagger.json

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -7463,9 +7463,6 @@
74637463
"additionalProperties": false
74647464
},
74657465
"nullable-to-one-flight-attendant-in-response": {
7466-
"required": [
7467-
"links"
7468-
],
74697466
"type": "object",
74707467
"properties": {
74717468
"links": {
@@ -7906,9 +7903,6 @@
79067903
"additionalProperties": false
79077904
},
79087905
"to-many-flight-attendant-in-response": {
7909-
"required": [
7910-
"links"
7911-
],
79127906
"type": "object",
79137907
"properties": {
79147908
"links": {
@@ -7950,9 +7944,6 @@
79507944
"additionalProperties": false
79517945
},
79527946
"to-many-flight-in-response": {
7953-
"required": [
7954-
"links"
7955-
],
79567947
"type": "object",
79577948
"properties": {
79587949
"links": {
@@ -7994,9 +7985,6 @@
79947985
"additionalProperties": false
79957986
},
79967987
"to-many-passenger-in-response": {
7997-
"required": [
7998-
"links"
7999-
],
80007988
"type": "object",
80017989
"properties": {
80027990
"links": {
@@ -8039,9 +8027,6 @@
80398027
"additionalProperties": false
80408028
},
80418029
"to-one-flight-attendant-in-response": {
8042-
"required": [
8043-
"links"
8044-
],
80458030
"type": "object",
80468031
"properties": {
80478032
"links": {

test/OpenApiTests/NamingConventions/CamelCase/GeneratedSwagger/swagger.g.json

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2806,9 +2806,6 @@
28062806
"additionalProperties": false
28072807
},
28082808
"nullableToOneStaffMemberInResponse": {
2809-
"required": [
2810-
"links"
2811-
],
28122809
"type": "object",
28132810
"properties": {
28142811
"links": {
@@ -3701,9 +3698,6 @@
37013698
"additionalProperties": false
37023699
},
37033700
"toManyStaffMemberInResponse": {
3704-
"required": [
3705-
"links"
3706-
],
37073701
"type": "object",
37083702
"properties": {
37093703
"links": {
@@ -3746,9 +3740,6 @@
37463740
"additionalProperties": false
37473741
},
37483742
"toOneStaffMemberInResponse": {
3749-
"required": [
3750-
"links"
3751-
],
37523743
"type": "object",
37533744
"properties": {
37543745
"links": {

test/OpenApiTests/NamingConventions/KebabCase/GeneratedSwagger/swagger.g.json

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2806,9 +2806,6 @@
28062806
"additionalProperties": false
28072807
},
28082808
"nullable-to-one-staff-member-in-response": {
2809-
"required": [
2810-
"links"
2811-
],
28122809
"type": "object",
28132810
"properties": {
28142811
"links": {
@@ -3701,9 +3698,6 @@
37013698
"additionalProperties": false
37023699
},
37033700
"to-many-staff-member-in-response": {
3704-
"required": [
3705-
"links"
3706-
],
37073701
"type": "object",
37083702
"properties": {
37093703
"links": {
@@ -3746,9 +3740,6 @@
37463740
"additionalProperties": false
37473741
},
37483742
"to-one-staff-member-in-response": {
3749-
"required": [
3750-
"links"
3751-
],
37523743
"type": "object",
37533744
"properties": {
37543745
"links": {

test/OpenApiTests/NamingConventions/PascalCase/GeneratedSwagger/swagger.g.json

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2806,9 +2806,6 @@
28062806
"additionalProperties": false
28072807
},
28082808
"NullableToOneStaffMemberInResponse": {
2809-
"required": [
2810-
"links"
2811-
],
28122809
"type": "object",
28132810
"properties": {
28142811
"links": {
@@ -3701,9 +3698,6 @@
37013698
"additionalProperties": false
37023699
},
37033700
"ToManyStaffMemberInResponse": {
3704-
"required": [
3705-
"links"
3706-
],
37073701
"type": "object",
37083702
"properties": {
37093703
"links": {
@@ -3746,9 +3740,6 @@
37463740
"additionalProperties": false
37473741
},
37483742
"ToOneStaffMemberInResponse": {
3749-
"required": [
3750-
"links"
3751-
],
37523743
"type": "object",
37533744
"properties": {
37543745
"links": {

test/OpenApiTests/QueryStrings/GeneratedSwagger/swagger.g.json

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4100,9 +4100,6 @@
41004100
"additionalProperties": false
41014101
},
41024102
"nullableToOneNodeInResponse": {
4103-
"required": [
4104-
"links"
4105-
],
41064103
"type": "object",
41074104
"properties": {
41084105
"links": {
@@ -4245,9 +4242,6 @@
42454242
"additionalProperties": false
42464243
},
42474244
"toManyNameValuePairInResponse": {
4248-
"required": [
4249-
"links"
4250-
],
42514245
"type": "object",
42524246
"properties": {
42534247
"links": {
@@ -4289,9 +4283,6 @@
42894283
"additionalProperties": false
42904284
},
42914285
"toManyNodeInResponse": {
4292-
"required": [
4293-
"links"
4294-
],
42954286
"type": "object",
42964287
"properties": {
42974288
"links": {
@@ -4334,9 +4325,6 @@
43344325
"additionalProperties": false
43354326
},
43364327
"toOneNodeInResponse": {
4337-
"required": [
4338-
"links"
4339-
],
43404328
"type": "object",
43414329
"properties": {
43424330
"links": {

test/OpenApiTests/ResourceFieldValidation/NullableReferenceTypesOff/ModelStateValidationOff/GeneratedSwagger/swagger.g.json

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2864,9 +2864,6 @@
28642864
"additionalProperties": false
28652865
},
28662866
"nullableToOneEmptyInResponse": {
2867-
"required": [
2868-
"links"
2869-
],
28702867
"type": "object",
28712868
"properties": {
28722869
"links": {
@@ -3430,9 +3427,6 @@
34303427
"additionalProperties": false
34313428
},
34323429
"toManyEmptyInResponse": {
3433-
"required": [
3434-
"links"
3435-
],
34363430
"type": "object",
34373431
"properties": {
34383432
"links": {

0 commit comments

Comments
 (0)