Skip to content

Commit 810043c

Browse files
feat(connectors): add proof-of-concept @connect(requires:) argument
Adds a `requires` argument to @connect: a list of JSONSelection paths that must all resolve to non-null for the connector to be invoked. When any is null or missing, the request is skipped and the field resolves to null (or [] for list fields) without an error. Includes spec definition, validation, runtime handling, and updated expand snapshots. Not yet gated behind a connect spec version. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
1 parent ef3569f commit 810043c

42 files changed

Lines changed: 475 additions & 31 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎apollo-federation/src/connectors/expand/tests/snapshots/connectors@batch.graphql.snap‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,6 +113,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/batch.g
113113
connect_extensions: None,
114114
connect_is_success: None,
115115
},
116+
requires: [],
116117
output_type: Some(
117118
NonNullList(
118119
NonNullNamed(
@@ -378,6 +379,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/batch.g
378379
connect_extensions: None,
379380
connect_is_success: None,
380381
},
382+
requires: [],
381383
output_type: None,
382384
label: Label(
383385
"[BATCH] one.json http: POST /users-batch",

‎apollo-federation/src/connectors/expand/tests/snapshots/connectors@cache_tag_on_connector.graphql.snap‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/cache_t
151151
connect_extensions: None,
152152
connect_is_success: None,
153153
},
154+
requires: [],
154155
output_type: Some(
155156
List(
156157
Named(
@@ -309,6 +310,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/cache_t
309310
connect_extensions: None,
310311
connect_is_success: None,
311312
},
313+
requires: [],
312314
output_type: Some(
313315
List(
314316
Named(

‎apollo-federation/src/connectors/expand/tests/snapshots/connectors@carryover.graphql.snap‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -348,6 +348,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/carryov
348348
connect_extensions: None,
349349
connect_is_success: None,
350350
},
351+
requires: [],
351352
output_type: Some(
352353
List(
353354
Named(
@@ -762,6 +763,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/carryov
762763
connect_extensions: None,
763764
connect_is_success: None,
764765
},
766+
requires: [],
765767
output_type: Some(
766768
Named(
767769
"T",
@@ -949,6 +951,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/carryov
949951
connect_extensions: None,
950952
connect_is_success: None,
951953
},
954+
requires: [],
952955
output_type: Some(
953956
Named(
954957
"R",

‎apollo-federation/src/connectors/expand/tests/snapshots/connectors@chained_filter_v0_4.graphql.snap‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/chained
214214
connect_extensions: None,
215215
connect_is_success: None,
216216
},
217+
requires: [],
217218
output_type: Some(
218219
Named(
219220
"ThingConnection",
@@ -623,6 +624,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/chained
623624
connect_extensions: None,
624625
connect_is_success: None,
625626
},
627+
requires: [],
626628
output_type: Some(
627629
Named(
628630
"ThingConnection",

‎apollo-federation/src/connectors/expand/tests/snapshots/connectors@chained_methods_v0_4.graphql.snap‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/chained
359359
connect_extensions: None,
360360
connect_is_success: None,
361361
},
362+
requires: [],
362363
output_type: Some(
363364
Named(
364365
"ThingConnection",
@@ -768,6 +769,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/chained
768769
connect_extensions: None,
769770
connect_is_success: None,
770771
},
772+
requires: [],
771773
output_type: Some(
772774
Named(
773775
"ThingResult",
@@ -1227,6 +1229,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/chained
12271229
connect_extensions: None,
12281230
connect_is_success: None,
12291231
},
1232+
requires: [],
12301233
output_type: Some(
12311234
Named(
12321235
"ThingResult",

‎apollo-federation/src/connectors/expand/tests/snapshots/connectors@entity_query_field_entity_true_v04.graphql.snap‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/entity_
209209
connect_extensions: None,
210210
connect_is_success: None,
211211
},
212+
requires: [],
212213
output_type: Some(
213214
Named(
214215
"Tractor",

‎apollo-federation/src/connectors/expand/tests/snapshots/connectors@entity_query_field_v03.graphql.snap‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/entity_
207207
connect_extensions: None,
208208
connect_is_success: None,
209209
},
210+
requires: [],
210211
output_type: Some(
211212
Named(
212213
"Tractor",
@@ -329,6 +330,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/entity_
329330
connect_extensions: None,
330331
connect_is_success: None,
331332
},
333+
requires: [],
332334
output_type: Some(
333335
Named(
334336
"Tractor",
@@ -543,6 +545,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/entity_
543545
connect_extensions: None,
544546
connect_is_success: None,
545547
},
548+
requires: [],
546549
output_type: None,
547550
label: Label(
548551
"connectors.v1 http: GET /tractors/{$this.id}",

‎apollo-federation/src/connectors/expand/tests/snapshots/connectors@entity_query_field_v04.graphql.snap‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -207,6 +207,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/entity_
207207
connect_extensions: None,
208208
connect_is_success: None,
209209
},
210+
requires: [],
210211
output_type: Some(
211212
Named(
212213
"Tractor",
@@ -329,6 +330,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/entity_
329330
connect_extensions: None,
330331
connect_is_success: None,
331332
},
333+
requires: [],
332334
output_type: Some(
333335
Named(
334336
"Tractor",
@@ -543,6 +545,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/entity_
543545
connect_extensions: None,
544546
connect_is_success: None,
545547
},
548+
requires: [],
546549
output_type: None,
547550
label: Label(
548551
"connectors.v1 http: GET /tractors/{$this.id}",

‎apollo-federation/src/connectors/expand/tests/snapshots/connectors@interface-object.graphql.snap‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,6 +170,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/interfa
170170
connect_extensions: None,
171171
connect_is_success: None,
172172
},
173+
requires: [],
173174
output_type: Some(
174175
Named(
175176
"String",
@@ -325,6 +326,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/interfa
325326
connect_extensions: None,
326327
connect_is_success: None,
327328
},
329+
requires: [],
328330
output_type: Some(
329331
List(
330332
Named(
@@ -574,6 +576,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/interfa
574576
connect_extensions: None,
575577
connect_is_success: None,
576578
},
579+
requires: [],
577580
output_type: Some(
578581
Named(
579582
"Itf",

‎apollo-federation/src/connectors/expand/tests/snapshots/connectors@keys.graphql.snap‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -229,6 +229,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/keys.gr
229229
connect_extensions: None,
230230
connect_is_success: None,
231231
},
232+
requires: [],
232233
output_type: Some(
233234
Named(
234235
"T",
@@ -523,6 +524,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/keys.gr
523524
connect_extensions: None,
524525
connect_is_success: None,
525526
},
527+
requires: [],
526528
output_type: Some(
527529
Named(
528530
"T",
@@ -757,6 +759,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/keys.gr
757759
connect_extensions: None,
758760
connect_is_success: None,
759761
},
762+
requires: [],
760763
output_type: Some(
761764
Named(
762765
"T",
@@ -958,6 +961,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/keys.gr
958961
connect_extensions: None,
959962
connect_is_success: None,
960963
},
964+
requires: [],
961965
output_type: Some(
962966
Named(
963967
"R",
@@ -1219,6 +1223,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/keys.gr
12191223
connect_extensions: None,
12201224
connect_is_success: None,
12211225
},
1226+
requires: [],
12221227
output_type: Some(
12231228
Named(
12241229
"R",
@@ -1451,6 +1456,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/keys.gr
14511456
connect_extensions: None,
14521457
connect_is_success: None,
14531458
},
1459+
requires: [],
14541460
output_type: Some(
14551461
Named(
14561462
"R",
@@ -1672,6 +1678,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/keys.gr
16721678
connect_extensions: None,
16731679
connect_is_success: None,
16741680
},
1681+
requires: [],
16751682
output_type: Some(
16761683
Named(
16771684
"R",
@@ -1924,6 +1931,7 @@ input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/keys.gr
19241931
connect_extensions: None,
19251932
connect_is_success: None,
19261933
},
1934+
requires: [],
19271935
output_type: Some(
19281936
Named(
19291937
"R",

0 commit comments

Comments
 (0)