├── .cargo └── config.toml ├── .changesets ├── README.md ├── docs_lrlna_schema_load_duration.md ├── feat_caroline_low_priority_warmup.md ├── feat_zelda_add_jwt_audience_validation.md ├── fix_garypen_http_ext_clone_works_properly.md ├── fix_invalid_variable_error_message.md └── maint_extended_errors_telemetry.md ├── .circleci └── config.yml ├── .config ├── mise │ ├── config.ci-mac.toml │ ├── config.ci.toml │ ├── config.toml │ └── config.windows.toml └── nextest.toml ├── .git-blame-ignore-revs ├── .gitattributes ├── .githooks └── prepare-commit-msg ├── .github ├── CODEOWNERS ├── ISSUE_TEMPLATE │ ├── bug_report.md │ ├── feature_request.md │ └── improvement.md ├── pull_request_template.md └── workflows │ ├── main.yml │ ├── update_apollo_protobuf.yaml │ └── update_uplink_schema.yml ├── .gitignore ├── .gitleaks.toml ├── .gitmessage ├── .gitmodules ├── .ignore ├── .mergify.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── Cargo.lock ├── Cargo.toml ├── DEVELOPMENT.md ├── LICENSE ├── README.md ├── RELEASE_CHECKLIST.md ├── about.hbs ├── about.toml ├── apollo-federation ├── .cargo │ └── config.toml ├── .github │ └── renovate.json5 ├── .gitignore ├── CHANGELOG.md ├── Cargo.toml ├── LICENSE ├── README.md ├── cli │ ├── Cargo.toml │ ├── fixtures │ │ ├── queries │ │ │ ├── topproducts.graphql │ │ │ └── topproducts2.graphql │ │ └── starstuff.graphql │ └── src │ │ ├── bench.rs │ │ ├── main.rs │ │ └── snapshots │ │ └── apollo_federation_cli__bench.snap ├── examples │ └── api_schema.rs ├── src │ ├── api_schema.rs │ ├── compat.rs │ ├── composition │ │ ├── mod.rs │ │ ├── satisfiability.rs │ │ └── satisfiability │ │ │ └── satisfiability_error.rs │ ├── connectors │ │ ├── expand │ │ │ ├── carryover.rs │ │ │ ├── carryover │ │ │ │ └── inputs.rs │ │ │ ├── merge │ │ │ │ ├── basic_1.graphql │ │ │ │ ├── basic_2.graphql │ │ │ │ ├── connector_Query_user_0.graphql │ │ │ │ ├── connector_Query_users_0.graphql │ │ │ │ ├── connector_User_d_1.graphql │ │ │ │ ├── graphql.graphql │ │ │ │ ├── inaccessible.graphql │ │ │ │ └── inaccessible_2.graphql │ │ │ ├── mod.rs │ │ │ ├── snapshots │ │ │ │ └── apollo_federation__connectors__expand__carryover__tests__carryover.snap │ │ │ ├── tests │ │ │ │ ├── mod.rs │ │ │ │ ├── schemas │ │ │ │ │ ├── expand │ │ │ │ │ │ ├── batch.graphql │ │ │ │ │ │ ├── batch.yaml │ │ │ │ │ │ ├── carryover.graphql │ │ │ │ │ │ ├── carryover.yaml │ │ │ │ │ │ ├── directives.graphql │ │ │ │ │ │ ├── directives.yaml │ │ │ │ │ │ ├── interface-object.graphql │ │ │ │ │ │ ├── interface-object.yaml │ │ │ │ │ │ ├── keys.graphql │ │ │ │ │ │ ├── keys.yaml │ │ │ │ │ │ ├── nested_inputs.graphql │ │ │ │ │ │ ├── nested_inputs.yaml │ │ │ │ │ │ ├── normalize_names.graphql │ │ │ │ │ │ ├── normalize_names.yaml │ │ │ │ │ │ ├── realistic.graphql │ │ │ │ │ │ ├── realistic.yaml │ │ │ │ │ │ ├── sibling_fields.graphql │ │ │ │ │ │ ├── sibling_fields.yaml │ │ │ │ │ │ ├── simple.graphql │ │ │ │ │ │ ├── simple.yaml │ │ │ │ │ │ ├── steelthread.graphql │ │ │ │ │ │ ├── steelthread.yaml │ │ │ │ │ │ ├── types_used_twice.graphql │ │ │ │ │ │ └── types_used_twice.yaml │ │ │ │ │ ├── ignore │ │ │ │ │ │ ├── ignored.graphql │ │ │ │ │ │ └── ignored.yaml │ │ │ │ │ └── regenerate.sh │ │ │ │ └── snapshots │ │ │ │ │ ├── api@batch.graphql.snap │ │ │ │ │ ├── api@carryover.graphql.snap │ │ │ │ │ ├── api@directives.graphql.snap │ │ │ │ │ ├── api@interface-object.graphql.snap │ │ │ │ │ ├── api@keys.graphql.snap │ │ │ │ │ ├── api@nested_inputs.graphql.snap │ │ │ │ │ ├── api@normalize_names.graphql.snap │ │ │ │ │ ├── api@realistic.graphql.snap │ │ │ │ │ ├── api@sibling_fields.graphql.snap │ │ │ │ │ ├── api@simple.graphql.snap │ │ │ │ │ ├── api@steelthread.graphql.snap │ │ │ │ │ ├── api@types_used_twice.graphql.snap │ │ │ │ │ ├── connectors@batch.graphql.snap │ │ │ │ │ ├── connectors@carryover.graphql.snap │ │ │ │ │ ├── connectors@directives.graphql.snap │ │ │ │ │ ├── connectors@interface-object.graphql.snap │ │ │ │ │ ├── connectors@keys.graphql.snap │ │ │ │ │ ├── connectors@nested_inputs.graphql.snap │ │ │ │ │ ├── connectors@normalize_names.graphql.snap │ │ │ │ │ ├── connectors@realistic.graphql.snap │ │ │ │ │ ├── connectors@sibling_fields.graphql.snap │ │ │ │ │ ├── connectors@simple.graphql.snap │ │ │ │ │ ├── connectors@steelthread.graphql.snap │ │ │ │ │ ├── connectors@types_used_twice.graphql.snap │ │ │ │ │ ├── supergraph@batch.graphql.snap │ │ │ │ │ ├── supergraph@carryover.graphql.snap │ │ │ │ │ ├── supergraph@directives.graphql.snap │ │ │ │ │ ├── supergraph@interface-object.graphql.snap │ │ │ │ │ ├── supergraph@keys.graphql.snap │ │ │ │ │ ├── supergraph@nested_inputs.graphql.snap │ │ │ │ │ ├── supergraph@normalize_names.graphql.snap │ │ │ │ │ ├── supergraph@realistic.graphql.snap │ │ │ │ │ ├── supergraph@sibling_fields.graphql.snap │ │ │ │ │ ├── supergraph@simple.graphql.snap │ │ │ │ │ ├── supergraph@steelthread.graphql.snap │ │ │ │ │ └── supergraph@types_used_twice.graphql.snap │ │ │ └── visitors │ │ │ │ ├── input.rs │ │ │ │ ├── mod.rs │ │ │ │ └── selection.rs │ │ ├── header.rs │ │ ├── id.rs │ │ ├── json_selection │ │ │ ├── README.md │ │ │ ├── apply_to.rs │ │ │ ├── fixtures.rs │ │ │ ├── grammar │ │ │ │ ├── Alias.svg │ │ │ │ ├── AtPath.svg │ │ │ │ ├── Comment.svg │ │ │ │ ├── ExprPath.svg │ │ │ │ ├── Identifier.svg │ │ │ │ ├── JSONSelection.svg │ │ │ │ ├── Key.svg │ │ │ │ ├── KeyPath.svg │ │ │ │ ├── LitArray.svg │ │ │ │ ├── LitExpr.svg │ │ │ │ ├── LitNumber.svg │ │ │ │ ├── LitObject.svg │ │ │ │ ├── LitPath.svg │ │ │ │ ├── LitPrimitive.svg │ │ │ │ ├── LitProperty.svg │ │ │ │ ├── LitString.svg │ │ │ │ ├── MethodArgs.svg │ │ │ │ ├── NamedFieldSelection.svg │ │ │ │ ├── NamedGroupSelection.svg │ │ │ │ ├── NamedPathSelection.svg │ │ │ │ ├── NamedSelection.svg │ │ │ │ ├── Path.svg │ │ │ │ ├── PathSelection.svg │ │ │ │ ├── PathStep.svg │ │ │ │ ├── PathWithSubSelection.svg │ │ │ │ ├── Spaces.svg │ │ │ │ ├── SpacesOrComments.svg │ │ │ │ ├── SubSelection.svg │ │ │ │ └── VarPath.svg │ │ │ ├── helpers.rs │ │ │ ├── immutable.rs │ │ │ ├── known_var.rs │ │ │ ├── lit_expr.rs │ │ │ ├── location.rs │ │ │ ├── methods.rs │ │ │ ├── methods │ │ │ │ ├── future │ │ │ │ │ ├── and.rs │ │ │ │ │ ├── arithmetic.rs │ │ │ │ │ ├── eq.rs │ │ │ │ │ ├── get.rs │ │ │ │ │ ├── has.rs │ │ │ │ │ ├── keys.rs │ │ │ │ │ ├── match_if.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── not.rs │ │ │ │ │ ├── or.rs │ │ │ │ │ ├── snapshots │ │ │ │ │ │ └── get_should_correct_call_methods_with_extra_spaces.snap │ │ │ │ │ ├── typeof.rs │ │ │ │ │ └── values.rs │ │ │ │ ├── public │ │ │ │ │ ├── echo.rs │ │ │ │ │ ├── entries.rs │ │ │ │ │ ├── first.rs │ │ │ │ │ ├── join_not_null.rs │ │ │ │ │ ├── json_stringify.rs │ │ │ │ │ ├── last.rs │ │ │ │ │ ├── map.rs │ │ │ │ │ ├── match.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── size.rs │ │ │ │ │ └── slice.rs │ │ │ │ └── tests.rs │ │ │ ├── mod.rs │ │ │ ├── parser.rs │ │ │ ├── pretty.rs │ │ │ ├── selection_set.rs │ │ │ ├── selection_trie.rs │ │ │ └── snapshots │ │ │ │ ├── arrow_path_ranges.snap │ │ │ │ ├── error_snapshots-2.snap │ │ │ │ ├── error_snapshots.snap │ │ │ │ ├── expr_path_selections.snap │ │ │ │ ├── naked_literal_path_for_connect_v0_2-2.snap │ │ │ │ ├── naked_literal_path_for_connect_v0_2-3.snap │ │ │ │ ├── naked_literal_path_for_connect_v0_2-4.snap │ │ │ │ ├── naked_literal_path_for_connect_v0_2-5.snap │ │ │ │ ├── naked_literal_path_for_connect_v0_2-6.snap │ │ │ │ ├── naked_literal_path_for_connect_v0_2.snap │ │ │ │ ├── parse_with_range_snapshots.snap │ │ │ │ ├── path_with_subselection-2.snap │ │ │ │ ├── path_with_subselection-3.snap │ │ │ │ ├── path_with_subselection-4.snap │ │ │ │ ├── path_with_subselection-5.snap │ │ │ │ ├── path_with_subselection-6.snap │ │ │ │ ├── path_with_subselection-7.snap │ │ │ │ ├── path_with_subselection.snap │ │ │ │ └── selection.snap │ │ ├── mod.rs │ │ ├── models.rs │ │ ├── models │ │ │ ├── http_json_transport.rs │ │ │ └── keys.rs │ │ ├── snapshots │ │ │ ├── apollo_federation__connectors__models__tests__from_schema_v0_2.snap │ │ │ ├── apollo_federation__connectors__string_template__test_parse__expressions_with_nested_braces.snap │ │ │ ├── apollo_federation__connectors__string_template__test_parse__mixed_constant_and_expression.snap │ │ │ ├── apollo_federation__connectors__string_template__test_parse__offset.snap │ │ │ ├── apollo_federation__connectors__string_template__test_parse__simple_constant.snap │ │ │ ├── apollo_federation__connectors__string_template__test_parse__simple_expression.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__absolute_url_with_path.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__absolute_url_with_path_variable.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__absolute_url_with_query.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__absolute_url_with_query_variable.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__basic_absolute_url.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__expression_missing_closing_bracket.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__nested_braces_in_expression.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__path_list-2.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__path_list-3.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__path_list-4.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__path_list.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__url_path_template_parse-2.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__url_path_template_parse-3.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__url_path_template_parse-4.snap │ │ │ ├── apollo_federation__connectors__url_template__test_parse__url_path_template_parse.snap │ │ │ └── apollo_federation__connectors__url_template__test_parse__variable_param_key.snap │ │ ├── spec │ │ │ ├── directives.rs │ │ │ ├── mod.rs │ │ │ ├── schema.rs │ │ │ └── type_and_directive_specifications.rs │ │ ├── string_template.rs │ │ ├── tests │ │ │ └── schemas │ │ │ │ ├── simple.graphql │ │ │ │ ├── simple.yaml │ │ │ │ ├── simple_v0_2.graphql │ │ │ │ └── simple_v0_2.yaml │ │ ├── validation │ │ │ ├── connect.rs │ │ │ ├── connect │ │ │ │ ├── entity.rs │ │ │ │ ├── http.rs │ │ │ │ ├── selection.rs │ │ │ │ └── selection │ │ │ │ │ └── variables.rs │ │ │ ├── coordinates.rs │ │ │ ├── errors.rs │ │ │ ├── expression.rs │ │ │ ├── graphql.rs │ │ │ ├── graphql │ │ │ │ └── strings.rs │ │ │ ├── http.rs │ │ │ ├── http │ │ │ │ ├── headers.rs │ │ │ │ ├── url.rs │ │ │ │ └── url_properties.rs │ │ │ ├── link.rs │ │ │ ├── mod.rs │ │ │ ├── schema.rs │ │ │ ├── schema │ │ │ │ └── keys.rs │ │ │ ├── snapshots │ │ │ │ ├── validation_tests@all_fields_selected.graphql.snap │ │ │ │ ├── validation_tests@all_fields_selected_repro.graphql.snap │ │ │ │ ├── validation_tests@batch.graphql.snap │ │ │ │ ├── validation_tests@batch__batch_alias_happy_path.graphql.snap │ │ │ │ ├── validation_tests@batch__batch_incorrect_context_key.graphql.snap │ │ │ │ ├── validation_tests@batch__batch_incorrect_field.graphql.snap │ │ │ │ ├── validation_tests@batch__batch_missing_key.graphql.snap │ │ │ │ ├── validation_tests@batch__batch_missing_nested_key.graphql.snap │ │ │ │ ├── validation_tests@batch__batch_nested_keys.graphql.snap │ │ │ │ ├── validation_tests@body_selection.graphql.snap │ │ │ │ ├── validation_tests@circular_reference.graphql.snap │ │ │ │ ├── validation_tests@circular_reference_2.graphql.snap │ │ │ │ ├── validation_tests@circular_reference_3.graphql.snap │ │ │ │ ├── validation_tests@connect_source_name_mismatch.graphql.snap │ │ │ │ ├── validation_tests@connect_source_undefined.graphql.snap │ │ │ │ ├── validation_tests@connect_spec_version_error.graphql.snap │ │ │ │ ├── validation_tests@denest_scalars.graphql.snap │ │ │ │ ├── validation_tests@denest_scalars2.graphql.snap │ │ │ │ ├── validation_tests@disallowed_abstract_types.graphql.snap │ │ │ │ ├── validation_tests@disallowed_federation_imports.graphql.snap │ │ │ │ ├── validation_tests@duplicate_source_name.graphql.snap │ │ │ │ ├── validation_tests@empty_selection.graphql.snap │ │ │ │ ├── validation_tests@empty_source_name.graphql.snap │ │ │ │ ├── validation_tests@errors.graphql.snap │ │ │ │ ├── validation_tests@fields_with_arguments.graphql.snap │ │ │ │ ├── validation_tests@group_selection_on_scalar.graphql.snap │ │ │ │ ├── validation_tests@headers__disallowed_header_names.graphql.snap │ │ │ │ ├── validation_tests@headers__disallowed_header_names_v0.2.graphql.snap │ │ │ │ ├── validation_tests@headers__expressions_that_evaluate_to_invalid_types.graphql.snap │ │ │ │ ├── validation_tests@headers__invalid_connect_http_headers.graphql.snap │ │ │ │ ├── validation_tests@headers__invalid_namespace_in_header_variables.graphql.snap │ │ │ │ ├── validation_tests@headers__invalid_nested_paths_in_header_variables.graphql.snap │ │ │ │ ├── validation_tests@headers__invalid_source_http_headers.graphql.snap │ │ │ │ ├── validation_tests@invalid_chars_in_source_name.graphql.snap │ │ │ │ ├── validation_tests@invalid_namespace_in_body_selection.graphql.snap │ │ │ │ ├── validation_tests@invalid_nested_paths_in_json_selection.graphql.snap │ │ │ │ ├── validation_tests@invalid_selection_syntax.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__arg_is_object_but_field_is_not.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__arg_type_doesnt_match_field_type.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__composite_key_doesnt_match.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__entity_arg_field_arg_name_mismatch.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__entity_arg_field_arg_name_mismatch_composite_key.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__entity_false_on_type.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__entity_true_on_list_type.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__entity_true_on_non_root_field.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__entity_true_returning_non_null_type.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__entity_true_returning_scalar.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__mismatch_batch.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__mismatch_composite_key_batch.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__multiple_keys_not_all_resolved.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__multiple_keys_not_all_resolved_batch.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__no_args_for_entity_true.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__invalid__unrelated_keys.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__basic_implicit_key.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__basic_implicit_key_batch.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__entity_connector_matches_non_resolvable_key.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__entity_connector_matches_non_resolvable_key_batch.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__entity_connector_matches_one_of_multiple_keys.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__entity_connector_matches_one_of_multiple_keys_batch.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__entity_field_counts_as_key_resolver.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__entity_field_counts_as_key_resolver_batch.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__entity_true_on_type.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__mix_explicit_and_implicit.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__mix_explicit_and_implicit_batch.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__multiple_entity_connectors_for_multiple_keys.graphql.snap │ │ │ │ ├── validation_tests@keys_and_entities__valid__multiple_entity_connectors_for_multiple_keys_batch.graphql.snap │ │ │ │ ├── validation_tests@missing_connect_on_mutation_field.graphql.snap │ │ │ │ ├── validation_tests@missing_connect_on_query_field.graphql.snap │ │ │ │ ├── validation_tests@missing_http_method_on_connect.graphql.snap │ │ │ │ ├── validation_tests@missing_source_import.graphql.snap │ │ │ │ ├── validation_tests@multiple_errors.graphql.snap │ │ │ │ ├── validation_tests@multiple_http_methods_on_connect.graphql.snap │ │ │ │ ├── validation_tests@non_root_circular_reference.graphql.snap │ │ │ │ ├── validation_tests@renamed_connect_directive.graphql.snap │ │ │ │ ├── validation_tests@request_headers.graphql.snap │ │ │ │ ├── validation_tests@select_nonexistant_group.graphql.snap │ │ │ │ ├── validation_tests@source_directive_rename.graphql.snap │ │ │ │ ├── validation_tests@subscriptions_with_connectors.graphql.snap │ │ │ │ ├── validation_tests@transformed__upgrade_0.1.graphql-2.snap │ │ │ │ ├── validation_tests@transformed__upgrade_0.1.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__absolute_connect_url_with_source.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__expressions-in-domain.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__invalid-jsonselection-in-expression.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__invalid-path-parameter.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__invalid_connect_url.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__invalid_connect_url_scheme.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__invalid_namespace_in_url_template_variables.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__invalid_nested_paths_in_url_template_variables.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__invalid_source_url.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__invalid_source_url_scheme.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__invalid_types.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__relative_connect_url_without_source.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__this_on_root_types.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__undefined_arg_in_url_template.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__undefined_this_in_url_template.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__valid-expressions-after-domain.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__valid_connect_absolute_multiline.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__valid_connect_absolute_url.graphql.snap │ │ │ │ ├── validation_tests@uri_templates__valid_connect_multiline.graphql.snap │ │ │ │ ├── validation_tests@url_properties__invalid_mappings.graphql.snap │ │ │ │ ├── validation_tests@url_properties__path.graphql.snap │ │ │ │ ├── validation_tests@url_properties__query_params.graphql.snap │ │ │ │ ├── validation_tests@valid_large_body.graphql.snap │ │ │ │ ├── validation_tests@valid_no_connect_on_resolvable_key_field.graphql.snap │ │ │ │ └── validation_tests@valid_selection_with_escapes.graphql.snap │ │ │ ├── source.rs │ │ │ └── test_data │ │ │ │ ├── all_fields_selected.graphql │ │ │ │ ├── all_fields_selected_repro.graphql │ │ │ │ ├── batch.graphql │ │ │ │ ├── batch │ │ │ │ ├── batch_alias_happy_path.graphql │ │ │ │ ├── batch_incorrect_context_key.graphql │ │ │ │ ├── batch_incorrect_field.graphql │ │ │ │ ├── batch_missing_key.graphql │ │ │ │ ├── batch_missing_nested_key.graphql │ │ │ │ └── batch_nested_keys.graphql │ │ │ │ ├── body_selection.graphql │ │ │ │ ├── circular_reference.graphql │ │ │ │ ├── circular_reference_2.graphql │ │ │ │ ├── circular_reference_3.graphql │ │ │ │ ├── connect_source_name_mismatch.graphql │ │ │ │ ├── connect_source_undefined.graphql │ │ │ │ ├── connect_spec_version_error.graphql │ │ │ │ ├── denest_scalars.graphql │ │ │ │ ├── denest_scalars2.graphql │ │ │ │ ├── disallowed_abstract_types.graphql │ │ │ │ ├── disallowed_federation_imports.graphql │ │ │ │ ├── duplicate_source_name.graphql │ │ │ │ ├── empty_selection.graphql │ │ │ │ ├── empty_source_name.graphql │ │ │ │ ├── errors.graphql │ │ │ │ ├── fields_with_arguments.graphql │ │ │ │ ├── group_selection_on_scalar.graphql │ │ │ │ ├── headers │ │ │ │ ├── disallowed_header_names.graphql │ │ │ │ ├── disallowed_header_names_v0.2.graphql │ │ │ │ ├── expressions_that_evaluate_to_invalid_types.graphql │ │ │ │ ├── invalid_connect_http_headers.graphql │ │ │ │ ├── invalid_namespace_in_header_variables.graphql │ │ │ │ ├── invalid_nested_paths_in_header_variables.graphql │ │ │ │ └── invalid_source_http_headers.graphql │ │ │ │ ├── invalid_chars_in_source_name.graphql │ │ │ │ ├── invalid_namespace_in_body_selection.graphql │ │ │ │ ├── invalid_nested_paths_in_json_selection.graphql │ │ │ │ ├── invalid_selection_syntax.graphql │ │ │ │ ├── keys_and_entities │ │ │ │ ├── invalid │ │ │ │ │ ├── arg_is_object_but_field_is_not.graphql │ │ │ │ │ ├── arg_type_doesnt_match_field_type.graphql │ │ │ │ │ ├── composite_key_doesnt_match.graphql │ │ │ │ │ ├── entity_arg_field_arg_name_mismatch.graphql │ │ │ │ │ ├── entity_arg_field_arg_name_mismatch_composite_key.graphql │ │ │ │ │ ├── entity_false_on_type.graphql │ │ │ │ │ ├── entity_true_on_list_type.graphql │ │ │ │ │ ├── entity_true_on_non_root_field.graphql │ │ │ │ │ ├── entity_true_returning_non_null_type.graphql │ │ │ │ │ ├── entity_true_returning_scalar.graphql │ │ │ │ │ ├── mismatch_batch.graphql │ │ │ │ │ ├── mismatch_composite_key_batch.graphql │ │ │ │ │ ├── multiple_keys_not_all_resolved.graphql │ │ │ │ │ ├── multiple_keys_not_all_resolved_batch.graphql │ │ │ │ │ ├── no_args_for_entity_true.graphql │ │ │ │ │ └── unrelated_keys.graphql │ │ │ │ └── valid │ │ │ │ │ ├── basic_implicit_key.graphql │ │ │ │ │ ├── basic_implicit_key_batch.graphql │ │ │ │ │ ├── entity_connector_matches_non_resolvable_key.graphql │ │ │ │ │ ├── entity_connector_matches_non_resolvable_key_batch.graphql │ │ │ │ │ ├── entity_connector_matches_one_of_multiple_keys.graphql │ │ │ │ │ ├── entity_connector_matches_one_of_multiple_keys_batch.graphql │ │ │ │ │ ├── entity_field_counts_as_key_resolver.graphql │ │ │ │ │ ├── entity_field_counts_as_key_resolver_batch.graphql │ │ │ │ │ ├── entity_true_on_type.graphql │ │ │ │ │ ├── mix_explicit_and_implicit.graphql │ │ │ │ │ ├── mix_explicit_and_implicit_batch.graphql │ │ │ │ │ ├── multiple_entity_connectors_for_multiple_keys.graphql │ │ │ │ │ └── multiple_entity_connectors_for_multiple_keys_batch.graphql │ │ │ │ ├── missing_connect_on_mutation_field.graphql │ │ │ │ ├── missing_connect_on_query_field.graphql │ │ │ │ ├── missing_http_method_on_connect.graphql │ │ │ │ ├── missing_source_import.graphql │ │ │ │ ├── multiple_errors.graphql │ │ │ │ ├── multiple_http_methods_on_connect.graphql │ │ │ │ ├── non_root_circular_reference.graphql │ │ │ │ ├── renamed_connect_directive.graphql │ │ │ │ ├── request_headers.graphql │ │ │ │ ├── select_nonexistant_group.graphql │ │ │ │ ├── source_directive_rename.graphql │ │ │ │ ├── subscriptions_with_connectors.graphql │ │ │ │ ├── transformed │ │ │ │ └── upgrade_0.1.graphql │ │ │ │ ├── uri_templates │ │ │ │ ├── absolute_connect_url_with_source.graphql │ │ │ │ ├── expressions-in-domain.graphql │ │ │ │ ├── invalid-jsonselection-in-expression.graphql │ │ │ │ ├── invalid-path-parameter.graphql │ │ │ │ ├── invalid_connect_url.graphql │ │ │ │ ├── invalid_connect_url_scheme.graphql │ │ │ │ ├── invalid_namespace_in_url_template_variables.graphql │ │ │ │ ├── invalid_nested_paths_in_url_template_variables.graphql │ │ │ │ ├── invalid_source_url.graphql │ │ │ │ ├── invalid_source_url_scheme.graphql │ │ │ │ ├── invalid_types.graphql │ │ │ │ ├── relative_connect_url_without_source.graphql │ │ │ │ ├── this_on_root_types.graphql │ │ │ │ ├── undefined_arg_in_url_template.graphql │ │ │ │ ├── undefined_this_in_url_template.graphql │ │ │ │ ├── valid-expressions-after-domain.graphql │ │ │ │ ├── valid_connect_absolute_multiline.graphql │ │ │ │ ├── valid_connect_absolute_url.graphql │ │ │ │ └── valid_connect_multiline.graphql │ │ │ │ ├── url_properties │ │ │ │ ├── invalid_mappings.graphql │ │ │ │ ├── path.graphql │ │ │ │ └── query_params.graphql │ │ │ │ ├── valid_large_body.graphql │ │ │ │ └── valid_selection_with_escapes.graphql │ │ └── variable.rs │ ├── correctness │ │ ├── mod.rs │ │ ├── query_plan_analysis.rs │ │ ├── query_plan_analysis_test.rs │ │ ├── query_plan_soundness.rs │ │ ├── query_plan_soundness_test.rs │ │ ├── response_shape.rs │ │ ├── response_shape_compare.rs │ │ ├── response_shape_compare_test.rs │ │ ├── response_shape_test.rs │ │ └── subgraph_constraint.rs │ ├── display_helpers.rs │ ├── error │ │ ├── mod.rs │ │ └── suggestion.rs │ ├── lib.rs │ ├── link │ │ ├── argument.rs │ │ ├── authenticated_spec_definition.rs │ │ ├── context_spec_definition.rs │ │ ├── cost_spec_definition.rs │ │ ├── database.rs │ │ ├── federation_spec_definition.rs │ │ ├── graphql_definition.rs │ │ ├── inaccessible_spec_definition.rs │ │ ├── join_spec_definition.rs │ │ ├── link_spec_definition.rs │ │ ├── mod.rs │ │ ├── policy_spec_definition.rs │ │ ├── requires_scopes_spec_definition.rs │ │ ├── spec.rs │ │ ├── spec_definition.rs │ │ └── tag_spec_definition.rs │ ├── merge.rs │ ├── merge │ │ ├── fields.rs │ │ ├── snapshots │ │ │ ├── apollo_federation__merge__tests__basic.snap │ │ │ ├── apollo_federation__merge__tests__inaccessible.snap │ │ │ ├── apollo_federation__merge__tests__input_types.snap │ │ │ ├── apollo_federation__merge__tests__interface_implementing_interface.snap │ │ │ ├── apollo_federation__merge__tests__interface_object.snap │ │ │ └── apollo_federation__merge__tests__steel_thread.snap │ │ ├── testdata │ │ │ ├── input_types │ │ │ │ └── one.graphql │ │ │ ├── interface_implementing_interface │ │ │ │ └── one.graphql │ │ │ └── interface_object │ │ │ │ ├── one.graphql │ │ │ │ ├── three.graphql │ │ │ │ └── two.graphql │ │ └── tests.rs │ ├── merger │ │ ├── error_reporter.rs │ │ ├── hints.rs │ │ ├── merger.rs │ │ └── mod.rs │ ├── operation │ │ ├── contains.rs │ │ ├── directive_list.rs │ │ ├── merging.rs │ │ ├── mod.rs │ │ ├── optimize.rs │ │ ├── rebase.rs │ │ ├── selection_map.rs │ │ ├── simplify.rs │ │ └── tests │ │ │ └── mod.rs │ ├── query_graph │ │ ├── build_query_graph.rs │ │ ├── condition_resolver.rs │ │ ├── graph_path.rs │ │ ├── graph_path │ │ │ ├── operation.rs │ │ │ └── transition.rs │ │ ├── mod.rs │ │ ├── output.rs │ │ └── path_tree.rs │ ├── query_plan │ │ ├── conditions.rs │ │ ├── display.rs │ │ ├── fetch_dependency_graph.rs │ │ ├── fetch_dependency_graph_processor.rs │ │ ├── generate.rs │ │ ├── mod.rs │ │ ├── query_planner.rs │ │ ├── query_planning_traversal.rs │ │ ├── query_planning_traversal │ │ │ └── non_local_selections_estimation.rs │ │ ├── requires_selection.rs │ │ └── serializable_document.rs │ ├── schema │ │ ├── argument_composition_strategies.rs │ │ ├── blueprint.rs │ │ ├── definitions.rs │ │ ├── field_set.rs │ │ ├── fixtures │ │ │ ├── field-set-alias.graphqls │ │ │ ├── shareable_fields.graphqls │ │ │ └── used_fields.graphqls │ │ ├── mod.rs │ │ ├── position.rs │ │ ├── referencer.rs │ │ ├── schema_upgrader.rs │ │ ├── subgraph_metadata.rs │ │ ├── type_and_directive_specification.rs │ │ └── validators │ │ │ ├── context.rs │ │ │ ├── cost.rs │ │ │ ├── external.rs │ │ │ ├── from_context.rs │ │ │ ├── interface_object.rs │ │ │ ├── key.rs │ │ │ ├── list_size.rs │ │ │ ├── merged.rs │ │ │ ├── mod.rs │ │ │ ├── provides.rs │ │ │ ├── requires.rs │ │ │ └── shareable.rs │ ├── subgraph │ │ ├── mod.rs │ │ ├── spec.rs │ │ └── typestate.rs │ ├── supergraph │ │ ├── join_directive.rs │ │ ├── mod.rs │ │ ├── schema.rs │ │ └── subgraph.rs │ └── utils │ │ ├── fallible_iterator.rs │ │ ├── human_readable.rs │ │ ├── logging.rs │ │ ├── mod.rs │ │ ├── multi_index_map.rs │ │ └── serde_bridge.rs └── tests │ ├── api_schema.rs │ ├── composition_tests.rs │ ├── core_test.rs │ ├── dhat_profiling │ ├── connectors_validation.rs │ ├── query_plan.rs │ └── supergraph.rs │ ├── extract_subgraphs.rs │ ├── main.rs │ ├── query_plan │ ├── build_query_plan_support.rs │ ├── build_query_plan_tests.rs │ ├── build_query_plan_tests │ │ ├── cancel.rs │ │ ├── context.rs │ │ ├── debug_max_evaluated_plans_configuration.rs │ │ ├── defer.rs │ │ ├── disable_subgraphs.rs │ │ ├── entities.rs │ │ ├── fetch_operation_names.rs │ │ ├── field_merging_with_skip_and_include.rs │ │ ├── fragment_autogeneration.rs │ │ ├── handles_fragments_with_directive_conditions.rs │ │ ├── handles_operations_with_directives.rs │ │ ├── interface_object.rs │ │ ├── interface_type_explosion.rs │ │ ├── introspection_typename_handling.rs │ │ ├── merged_abstract_types_handling.rs │ │ ├── mutations.rs │ │ ├── named_fragments_expansion.rs │ │ ├── overrides.rs │ │ ├── overrides │ │ │ └── shareable.rs │ │ ├── provides.rs │ │ ├── requires.rs │ │ ├── requires │ │ │ └── include_skip.rs │ │ ├── shareable_root_fields.rs │ │ └── subscriptions.rs │ ├── mod.rs │ └── supergraphs │ │ ├── add_back_sibling_typename_to_interface_object.graphql │ │ ├── adjacent_mutations_get_merged.graphql │ │ ├── allows_setting_down_to_1.graphql │ │ ├── another_mix_of_fragments_indirection_and_unions.graphql │ │ ├── avoid_considering_indirect_paths_from_the_root_when_a_more_direct_one_exists.graphql │ │ ├── avoids_unnecessary_fetches.graphql │ │ ├── basic_subscription_query_plan.graphql │ │ ├── basic_subscription_with_single_subgraph.graphql │ │ ├── can_be_set_to_an_arbitrary_number.graphql │ │ ├── can_reuse_fragments_in_subgraph_where_they_only_partially_apply_in_entity_fetch.graphql │ │ ├── can_reuse_fragments_in_subgraph_where_they_only_partially_apply_in_root_fetch.graphql │ │ ├── can_use_a_key_on_an_interface_object_from_an_interface_object_type.graphql │ │ ├── can_use_a_key_on_an_interface_object_type.graphql │ │ ├── can_use_a_key_on_an_interface_object_type_even_for_a_concrete_implementation.graphql │ │ ├── can_use_same_root_operation_from_multiple_subgraphs_in_parallel.graphql │ │ ├── condition_order_router799.graphql │ │ ├── correctly_generate_plan_built_from_some_non_individually_optimal_branch_options.graphql │ │ ├── correctly_handle_case_where_there_is_too_many_plans_to_consider.graphql │ │ ├── defer_gets_stripped_out.graphql │ │ ├── defer_on_renamed_root_type.graphql │ │ ├── defer_test_can_request_typename_in_fragment.graphql │ │ ├── defer_test_defer_everything_within_entity.graphql │ │ ├── defer_test_defer_multiple_fields_in_different_subgraphs.graphql │ │ ├── defer_test_defer_on_enity_but_with_unuseful_key.graphql │ │ ├── defer_test_defer_on_everything_queried.graphql │ │ ├── defer_test_defer_on_multi_dependency_deferred_section.graphql │ │ ├── defer_test_defer_on_mutation_in_same_subgraph.graphql │ │ ├── defer_test_defer_on_mutation_on_different_subgraphs.graphql │ │ ├── defer_test_defer_on_query_root_type.graphql │ │ ├── defer_test_defer_on_value_types.graphql │ │ ├── defer_test_defer_only_the_key_of_an_entity.graphql │ │ ├── defer_test_defer_resuming_in_the_same_subgraph.graphql │ │ ├── defer_test_defer_with_condition_on_single_subgraph.graphql │ │ ├── defer_test_defer_with_conditions_and_labels.graphql │ │ ├── defer_test_defer_with_mutliple_conditions_and_labels.graphql │ │ ├── defer_test_direct_nesting_on_entity.graphql │ │ ├── defer_test_direct_nesting_on_value_type.graphql │ │ ├── defer_test_do_not_merge_query_branches_with_defer.graphql │ │ ├── defer_test_fragments_expand_into_same_field_regardless_of_defer.graphql │ │ ├── defer_test_handles_simple_defer_with_defer_enabled.graphql │ │ ├── defer_test_handles_simple_defer_without_defer_enabled.graphql │ │ ├── defer_test_interface_has_different_definitions_between_subgraphs.graphql │ │ ├── defer_test_multiple_non_nested_defer_plus_label_handling.graphql │ │ ├── defer_test_named_fragments_simple.graphql │ │ ├── defer_test_nested_defer_on_entities.graphql │ │ ├── defer_test_non_router_based_defer_case_one.graphql │ │ ├── defer_test_non_router_based_defer_case_three.graphql │ │ ├── defer_test_non_router_based_defer_case_two.graphql │ │ ├── defer_test_normalizes_if_false.graphql │ │ ├── defer_test_normalizes_if_true.graphql │ │ ├── defer_test_provides_are_ignored_for_deferred_fields.graphql │ │ ├── defer_test_requirements_of_deferred_fields_are_deferred.graphql │ │ ├── defer_test_the_path_in_defer_includes_traversed_fragments.graphql │ │ ├── does_not_error_on_some_complex_fetch_group_dependencies.graphql │ │ ├── does_not_error_out_handling_fragments_when_interface_subtyping_is_involved.graphql │ │ ├── does_not_evaluate_plans_relying_on_a_key_field_to_fetch_that_same_field.graphql │ │ ├── does_not_rely_on_an_interface_object_directly_for___typename.graphql │ │ ├── does_not_rely_on_an_interface_object_directly_for_typename.graphql │ │ ├── does_not_rely_on_an_interface_object_directly_if_a_specific_implementation_is_requested.graphql │ │ ├── ensures_sanitization_applies_repeatedly.graphql │ │ ├── field_covariance_and_type_explosion.graphql │ │ ├── fields_are_not_overwritten_when_directives_are_removed.graphql │ │ ├── fragment_with_intersecting_parent_type_and_directive_condition.graphql │ │ ├── fragments_that_share_a_hash_but_are_not_identical_generate_their_own_fragment_definitions.graphql │ │ ├── handle_subgraph_with_hypen_in_the_name.graphql │ │ ├── handle_very_non_graph_subgraph_name.graphql │ │ ├── handles_case_of_key_chains_in_parallel_requires.graphql │ │ ├── handles_fragments_with_interface_field_subtyping.graphql │ │ ├── handles_mix_of_fragments_indirection_and_unions.graphql │ │ ├── handles_multiple_conditions_on_abstract_types.graphql │ │ ├── handles_multiple_requires_involving_different_nestedness.graphql │ │ ├── handles_non_intersecting_fragment_conditions.graphql │ │ ├── handles_non_matching_value_types_under_interface_field.graphql │ │ ├── handles_query_of_an_interface_field_for_a_specific_implementation_when_query_starts_with_interface_object.graphql │ │ ├── handles_requires_from_supergraph.graphql │ │ ├── handles_root_operation_shareable_in_many_subgraphs.graphql │ │ ├── handles_simple_requires.graphql │ │ ├── handles_spread_unions_correctly.graphql │ │ ├── handles_types_with_no_common_supertype_at_the_same_merge_at.graphql │ │ ├── inefficient_entity_fetches_to_same_subgraph.graphql │ │ ├── interface_interface_interaction.graphql │ │ ├── interface_interface_interaction_but_no_need_to_type_explode.graphql │ │ ├── interface_union_interaction.graphql │ │ ├── interface_union_interaction_but_no_need_to_type_explode.graphql │ │ ├── it_allow_providing_fields_for_only_some_subtype.graphql │ │ ├── it_avoid_fragments_usable_only_once.graphql │ │ ├── it_avoids_buffering_interface_object_results_that_may_have_to_be_filtered_with_lists.graphql │ │ ├── it_can_require_at_inaccessible_fields.graphql │ │ ├── it_does_not_needlessly_consider_options_for_typename.graphql │ │ ├── it_does_not_override_unset_labels_on_entity_fields.graphql │ │ ├── it_does_not_override_unset_labels_on_nested_entity_fields.graphql │ │ ├── it_does_not_override_unset_labels_on_root_fields.graphql │ │ ├── it_does_not_try_to_apply_fragments_that_are_not_valid_for_the_subgraph.graphql │ │ ├── it_executes_mutation_operations_in_sequence.graphql │ │ ├── it_expands_nested_fragments.graphql │ │ ├── it_handes_diamond_shape_depedencies.graphql │ │ ├── it_handles_a_simple_at_requires_triggered_within_a_conditional.graphql │ │ ├── it_handles_an_at_requires_triggered_conditionally.graphql │ │ ├── it_handles_an_at_requires_where_multiple_conditional_are_involved.graphql │ │ ├── it_handles_complex_require_chain.graphql │ │ ├── it_handles_fragment_rebasing_in_a_subgraph_where_some_subtyping_relation_differs.graphql │ │ ├── it_handles_fragment_rebasing_in_a_subgraph_where_some_union_membership_relation_differs.graphql │ │ ├── it_handles_fragments_with_one_non_leaf_field.graphql │ │ ├── it_handles_interface_object_in_nested_entity.graphql │ │ ├── it_handles_interface_object_input_rewrites_when_cloning_dependency_graph.graphql │ │ ├── it_handles_longer_require_chain.graphql │ │ ├── it_handles_multiple_requires_with_multiple_fetches.graphql │ │ ├── it_handles_multiple_requires_within_the_same_entity_fetch.graphql │ │ ├── it_handles_nested_fragment_generation.graphql │ │ ├── it_handles_nested_fragment_generation_from_operation_with_fragments.graphql │ │ ├── it_handles_progressive_override_on_entity_fields.graphql │ │ ├── it_handles_progressive_override_on_nested_entity_fields.graphql │ │ ├── it_handles_progressive_override_on_root_fields.graphql │ │ ├── it_handles_require_chain_not_ending_in_original_group.graphql │ │ ├── it_handles_requires_on_concrete_type_of_field_provided_by_interface_object.graphql │ │ ├── it_handles_simple_require_chain.graphql │ │ ├── it_identifies_and_reuses_equivalent_fragments_that_arent_identical.graphql │ │ ├── it_migrates_skip_include.graphql │ │ ├── it_overrides_f1_to_s3_when_label_is_provided.graphql │ │ ├── it_overrides_to_s2_when_label_is_provided.graphql │ │ ├── it_preservers_aliased_typename.graphql │ │ ├── it_preserves_directives.graphql │ │ ├── it_preserves_directives_on_collapsed_fragments.graphql │ │ ├── it_preserves_directives_when_fragment_is_reused.graphql │ │ ├── it_preserves_directives_when_fragment_not_used.graphql │ │ ├── it_preserves_nested_fragments_when_outer_one_has_directives_and_is_eliminated.graphql │ │ ├── it_preserves_typename_with_directives.graphql │ │ ├── it_require_of_multiple_field_when_one_is_also_a_key_to_reach_another.graphql │ │ ├── it_resolves_f1_in_s1_when_label_is_not_provided.graphql │ │ ├── it_resolves_in_s1_when_label_is_not_provided.graphql │ │ ├── it_respects_generate_query_fragments_option.graphql │ │ ├── it_works_on_interfaces.graphql │ │ ├── it_works_on_unions.graphql │ │ ├── it_works_with_nested_fragments_1.graphql │ │ ├── it_works_with_nested_fragments_when_only_the_nested_fragment_gets_preserved.graphql │ │ ├── it_works_with_nested_provides.graphql │ │ ├── it_works_with_type_condition_even_for_types_only_reachable_by_the_at_provides.graphql │ │ ├── key_where_at_external_is_not_at_top_level_of_selection_of_requires.graphql │ │ ├── merging_skip_and_include_directives_multiple_applications_differing_order.graphql │ │ ├── merging_skip_and_include_directives_multiple_applications_differing_quantity.graphql │ │ ├── merging_skip_and_include_directives_multiple_applications_identical.graphql │ │ ├── merging_skip_and_include_directives_with_fragment.graphql │ │ ├── merging_skip_and_include_directives_without_fragment.graphql │ │ ├── multiplication_overflow_in_reduce_options_if_needed.graphql │ │ ├── nested_fragment_with_intersecting_parent_type_and_directive_condition.graphql │ │ ├── non_adjacent_mutations_do_not_get_merged.graphql │ │ ├── only_uses_an_interface_object_if_it_can.graphql │ │ ├── pick_keys_that_minimize_fetches.graphql │ │ ├── plan_with_check.graphql │ │ ├── rebase_non_intersecting_without_dropping_inline_fragment_due_to_directive.graphql │ │ ├── redundant_typename_for_inline_fragments_without_type_condition.graphql │ │ ├── respects_query_planner_option_reuse_query_fragments_false.graphql │ │ ├── respects_query_planner_option_reuse_query_fragments_true.graphql │ │ ├── same_as_js_router798.graphql │ │ ├── selections_are_not_overwritten_after_removing_directives.graphql │ │ ├── set_context_one_subgraph.graphql │ │ ├── set_context_required_field_is_several_levels_deep_going_back_and_forth_between_subgraphs.graphql │ │ ├── set_context_test_accesses_a_different_top_level_query.graphql │ │ ├── set_context_test_before_key_resolution_transition.graphql │ │ ├── set_context_test_efficiently_merge_fetch_groups.graphql │ │ ├── set_context_test_fetched_as_a_list.graphql │ │ ├── set_context_test_impacts_on_query_planning.graphql │ │ ├── set_context_test_variable_is_a_list.graphql │ │ ├── set_context_test_variable_is_already_in_a_different_fetch_group.graphql │ │ ├── set_context_test_variable_is_from_different_subgraph.graphql │ │ ├── set_context_test_variable_is_from_same_subgraph.graphql │ │ ├── set_context_test_with_type_conditions_for_union.graphql │ │ ├── skip_type_explosion_early_if_unnecessary.graphql │ │ ├── subgraph_query_retains_the_query_variables_used_in_the_directives_applied_to_the_query.graphql │ │ ├── test_callback_is_called.graphql │ │ ├── test_cancel_as_soon_as_possible.graphql │ │ ├── test_cancel_late_enough_that_planning_finishes.graphql │ │ ├── test_cancel_near_the_middle.graphql │ │ ├── test_if_directives_at_the_operation_level_are_passed_down_to_subgraph_queries.graphql │ │ ├── test_if_directives_on_mutations_are_passed_down_to_subgraph_queries.graphql │ │ ├── test_if_directives_with_arguments_applied_on_queries_are_ok.graphql │ │ ├── test_if_disabling_all_subgraph_jumps_causes_error.graphql │ │ ├── test_if_disabling_less_expensive_subgraph_jump_causes_other_to_be_used.graphql │ │ ├── test_if_less_expensive_subgraph_jump_is_used.graphql │ │ ├── test_indirect_branch_merging_with_typename_sibling.graphql │ │ ├── test_interface_object_advance_with_non_collecting_and_type_preserving_transitions_ordering.graphql │ │ ├── test_merging_fetches_do_not_create_cycle_in_fetch_dependency_graph.graphql │ │ ├── test_merging_fetches_reset_cached_costs.graphql │ │ ├── test_provides_edge_ordering.graphql │ │ ├── test_type_conditioned_fetching_with_interface_object_does_not_crash.graphql │ │ ├── trying_to_use_defer_with_a_subscription_results_in_an_error.graphql │ │ ├── trying_to_use_include_with_a_subscription_results_in_an_error.graphql │ │ ├── trying_to_use_skip_with_a_subscription_results_in_an_error.graphql │ │ ├── union_interface_interaction.graphql │ │ ├── union_interface_interaction_but_no_need_to_type_explode.graphql │ │ ├── union_union_interaction.graphql │ │ ├── union_union_interaction_but_no_need_to_type_explode.graphql │ │ ├── unnecessary_include_is_stripped_from_fragments.graphql │ │ ├── works_when_unset.graphql │ │ └── works_with_key_chains.graphql │ ├── snapshots │ ├── main__composition_tests__can_compose_supergraph-2.snap │ ├── main__composition_tests__can_compose_supergraph.snap │ ├── main__composition_tests__can_compose_types_from_different_subgraphs-2.snap │ ├── main__composition_tests__can_compose_types_from_different_subgraphs.snap │ ├── main__composition_tests__can_compose_with_descriptions-2.snap │ ├── main__composition_tests__can_compose_with_descriptions.snap │ ├── main__composition_tests__compose_removes_federation_directives-2.snap │ ├── main__composition_tests__compose_removes_federation_directives.snap │ ├── main__extract_subgraphs__can_extract_subgraph.snap │ ├── main__extract_subgraphs__does_not_extract_demand_control_directive_name_conflicts.snap │ ├── main__extract_subgraphs__does_not_extract_renamed_demand_control_directive_name_conflicts.snap │ ├── main__extract_subgraphs__extracts_demand_control_directives.snap │ ├── main__extract_subgraphs__extracts_renamed_demand_control_directives.snap │ └── main__extract_subgraphs__extracts_set_context_directives.snap │ └── subgraph │ ├── mod.rs │ ├── parse_expand_tests.rs │ └── subgraph_validation_tests.rs ├── apollo-router-benchmarks ├── Cargo.toml ├── benches │ ├── basic_composition.rs │ ├── fixtures │ │ └── supergraph.graphql │ └── memory_use.rs ├── build.rs └── src │ ├── lib.rs │ └── shared.rs ├── apollo-router ├── Cargo.toml ├── LICENSE ├── README.md ├── benches │ ├── deeply_nested.rs │ ├── deeply_nested │ │ ├── router.yaml │ │ └── supergraph.graphql │ ├── huge_requests.rs │ └── huge_requests │ │ ├── router.yaml │ │ └── supergraph.graphql ├── build │ ├── main.rs │ └── studio.rs ├── examples │ ├── .skipconfigvalidation │ ├── planner.rs │ └── router.yaml ├── feature_discussions.json ├── images │ └── sequence.svg ├── rustfmt.toml ├── src │ ├── ageing_priority_queue.rs │ ├── apollo_studio_interop │ │ ├── mod.rs │ │ ├── snapshots │ │ │ ├── apollo_router__apollo_studio_interop__tests__aliases@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__aliases@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__anonymous_mutation@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__anonymous_mutation@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__anonymous_query@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__anonymous_query@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__anonymous_subscription@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__anonymous_subscription@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__basic_whitespace@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__basic_whitespace@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__comma_lower_bound@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__comma_lower_bound@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__comma_separator_always@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__comma_separator_always@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__comma_upper_bound@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__comma_upper_bound@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__complex_query@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__complex_query@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__complex_references@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__complex_references@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__directive_arg_spacing@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__directive_arg_spacing@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__directives@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__directives@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__enums_from_response_complex_response_type.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__enums_from_response_fragments.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__enums_with_nested_query.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__enums_with_nested_query_fragment.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__extended_references_fragment_inline_enums.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__extended_references_fragment_var_enums.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__extended_references_inline_enums.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__extended_references_inline_nested_type.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__extended_references_inline_type.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__extended_references_nested_query.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__extended_references_var_enums.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__extended_references_var_nested_type.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__extended_references_var_type.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__field_arg_comma_or_space@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__field_arg_comma_or_space@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__fragments@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__fragments@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__inline_values@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__inline_values@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__mutation_comma@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__mutation_comma@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__mutation_space@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__mutation_space@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__nested_fragments@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__nested_fragments@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__operation_arg_always_commas@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__operation_arg_always_commas@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__operation_with_multiple_variables@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__operation_with_multiple_variables@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__operation_with_single_variable@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__operation_with_single_variable@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__ordered_fields_and_variables@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__ordered_fields_and_variables@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__root_type_fragment@bridge.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__root_type_fragment@report.snap │ │ │ ├── apollo_router__apollo_studio_interop__tests__underscore@bridge.snap │ │ │ └── apollo_router__apollo_studio_interop__tests__underscore@report.snap │ │ ├── testdata │ │ │ ├── aliases_query.graphql │ │ │ ├── anonymous_mutation.graphql │ │ │ ├── anonymous_query.graphql │ │ │ ├── comma_lower_bound_query.graphql │ │ │ ├── comma_separator_always_query.graphql │ │ │ ├── comma_upper_bound_query.graphql │ │ │ ├── complex_query.graphql │ │ │ ├── complex_query_sanitized.graphql │ │ │ ├── complex_references_query.graphql │ │ │ ├── directive_arg_spacing_query.graphql │ │ │ ├── directives_query.graphql │ │ │ ├── enhanced_alias_preservation_query.graphql │ │ │ ├── enhanced_inline_input_object_query.graphql │ │ │ ├── enhanced_sorts_directives_query.graphql │ │ │ ├── enhanced_sorts_fragments_query.graphql │ │ │ ├── enhanced_uses_comma_always_query.graphql │ │ │ ├── enums_from_response_complex_response_type.graphql │ │ │ ├── enums_from_response_complex_response_type_response.json │ │ │ ├── enums_from_response_fragments.graphql │ │ │ ├── enums_from_response_fragments_response.json │ │ │ ├── enums_from_response_with_nested_query.graphql │ │ │ ├── enums_from_response_with_nested_query_fragment.graphql │ │ │ ├── extended_references_fragment_inline_enums.graphql │ │ │ ├── extended_references_fragment_var_enums.graphql │ │ │ ├── extended_references_fragment_var_enums.json │ │ │ ├── extended_references_inline_enums.graphql │ │ │ ├── extended_references_inline_nested_type.graphql │ │ │ ├── extended_references_inline_type.graphql │ │ │ ├── extended_references_var_enums.graphql │ │ │ ├── extended_references_var_enums.json │ │ │ ├── extended_references_var_nested_type.graphql │ │ │ ├── extended_references_var_nested_type.json │ │ │ ├── extended_references_var_type.graphql │ │ │ ├── extended_references_var_type.json │ │ │ ├── field_arg_comma_or_space_query.graphql │ │ │ ├── fragments_query.graphql │ │ │ ├── inline_values_query.graphql │ │ │ ├── mutation_comma_query.graphql │ │ │ ├── mutation_space_query.graphql │ │ │ ├── named_query.graphql │ │ │ ├── nested_fragments_query.graphql │ │ │ ├── operation_arg_always_commas_query.graphql │ │ │ ├── operation_with_multiple_variables_query.graphql │ │ │ ├── operation_with_single_variable_query.graphql │ │ │ ├── ordered_fields_and_variables_query.graphql │ │ │ ├── root_type_fragment_query.graphql │ │ │ ├── schema_interop.graphql │ │ │ ├── subscription_query.graphql │ │ │ └── underscore_query.graphql │ │ └── tests.rs │ ├── axum_factory │ │ ├── axum_http_server_factory.rs │ │ ├── compression │ │ │ ├── codec │ │ │ │ ├── brotli │ │ │ │ │ ├── encoder.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── deflate │ │ │ │ │ ├── encoder.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── flate │ │ │ │ │ ├── encoder.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── gzip │ │ │ │ │ ├── encoder.rs │ │ │ │ │ ├── header.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── mod.rs │ │ │ │ └── zstd │ │ │ │ │ ├── encoder.rs │ │ │ │ │ └── mod.rs │ │ │ ├── mod.rs │ │ │ ├── unshared.rs │ │ │ └── util.rs │ │ ├── connection_handle.rs │ │ ├── listeners.rs │ │ ├── mod.rs │ │ ├── snapshots │ │ │ ├── apollo_router__axum_factory__axum_http_server_factory__tests__request_cancel_log@logs.snap │ │ │ ├── apollo_router__axum_factory__axum_http_server_factory__tests__request_cancel_no_log@logs.snap │ │ │ └── apollo_router__axum_factory__tests__defer_is_not_buffered.snap │ │ ├── testdata │ │ │ ├── log_on_broken_pipe.router.yaml │ │ │ ├── no_log_on_broken_pipe.router.yaml │ │ │ ├── span_mode_default.router.yaml │ │ │ ├── span_mode_deprecated.router.yaml │ │ │ └── span_mode_spec_compliant.router.yaml │ │ ├── tests.rs │ │ └── utils.rs │ ├── batching.rs │ ├── cache │ │ ├── mod.rs │ │ ├── redis.rs │ │ ├── size_estimation.rs │ │ └── storage.rs │ ├── compute_job │ │ ├── metrics.rs │ │ ├── mod.rs │ │ └── snapshots │ │ │ └── apollo_router__compute_job__tests__observability@logs.snap │ ├── configuration │ │ ├── connector.rs │ │ ├── cors.rs │ │ ├── expansion.rs │ │ ├── experimental.rs │ │ ├── metrics.rs │ │ ├── migrations │ │ │ ├── 0001-telemetry_router_to_supergraph.yaml │ │ │ ├── 0002-jaeger_scheduled_delay.yaml │ │ │ ├── 0003-otlp_timout.yaml │ │ │ ├── 0004-defer_support_ga.yaml │ │ │ ├── 0005-health_check_snake.yaml │ │ │ ├── 0006-apq.yaml │ │ │ ├── 0007-coprocessor_subgraph_url.yaml │ │ │ ├── 0007-parser-recursion.yaml │ │ │ ├── 0008-operation-limits-ga.yaml │ │ │ ├── 0009-subscription-enabled.yaml │ │ │ ├── 0010-auth-jwt.yaml │ │ │ ├── 0012-persisted-queries-ga.yaml │ │ │ ├── 0013-telemetry-exporters-enabled.yaml │ │ │ ├── 0014-telemetry_trace_config_common.yaml │ │ │ ├── 0015-telemetry_metrics_resource.yaml │ │ │ ├── 0016-telemetry_tracing_resource.yaml │ │ │ ├── 0017-propagation_aws_xray.yaml │ │ │ ├── 0018-telemetry-instruments-exporters.yaml │ │ │ ├── 0019-authorization-ga.yaml │ │ │ ├── 0020-callback-ga.yaml │ │ │ ├── 0021-http-max-request-bytes-ga.yaml │ │ │ ├── 0022-query-planner-cache.yaml │ │ │ ├── 0022-spans_subgraph_response_body.yaml │ │ │ ├── 0023-batching.yaml │ │ │ ├── 0024-graphql_validation.yaml │ │ │ ├── 0025-entity_cache_preview.yaml │ │ │ ├── 0026-entity_cache_invalidation_preview.yaml │ │ │ ├── 0026-to_api_schema.yaml │ │ │ ├── 0027-apollo_telemetry_experimental.yaml │ │ │ ├── 0028-entity_cache_type_metrics.yaml │ │ │ ├── 0029-pq-prewarm-to-on_startup.yaml │ │ │ ├── 0030-experimental_introspection_mode.yaml │ │ │ ├── 0030-legacy-introspection-caching.yaml │ │ │ ├── 0031-experimental_reuse_query_fragments.yaml │ │ │ ├── 0032-experimental_query_planner_mode.yaml │ │ │ ├── 0033-experimental_retry.yaml │ │ │ ├── 0034-experimental_parallelism.yaml │ │ │ ├── 0035-preview_connectors.yaml │ │ │ ├── 0036-preview_connectors_subgraphs.yaml │ │ │ ├── 0037-preview_otlp_error_metrics.yaml │ │ │ ├── 2000-jwt-issuer-becomes-issuers.yaml │ │ │ ├── 2038-ignored-headers-subs-dedup.yaml │ │ │ └── README.md │ │ ├── mod.rs │ │ ├── persisted_queries.rs │ │ ├── schema.rs │ │ ├── server.rs │ │ ├── shared │ │ │ └── mod.rs │ │ ├── snapshots │ │ │ ├── .skipconfigvalidation │ │ │ ├── apollo_router__configuration__expansion__test__dev_mode.snap │ │ │ ├── apollo_router__configuration__expansion__test__prefixed.snap │ │ │ ├── apollo_router__configuration__expansion__test__unprefixed.snap │ │ │ ├── apollo_router__configuration__metrics__test__custom_plugin.snap │ │ │ ├── apollo_router__configuration__metrics__test__env_metrics.snap │ │ │ ├── apollo_router__configuration__metrics__test__ignore_cloud_router_plugins.snap │ │ │ ├── apollo_router__configuration__metrics__test__license_halt.snap │ │ │ ├── apollo_router__configuration__metrics__test__license_warn.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@apq.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@authorization.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@authorization_directives.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@batching.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@connectors.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@coprocessor.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@defer.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@demand_control.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@entities.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@file_uploads.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@jwt.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@limits.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@persisted_queries.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@query_planner_parallelism_auto.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@query_planner_parallelism_static.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@rhai.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@sigv4.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@subscriptions.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@telemetry.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@tls.router.yaml.snap │ │ │ ├── apollo_router__configuration__metrics__test__metrics@traffic_shaping.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__default_config_has_defaults.snap │ │ │ ├── apollo_router__configuration__tests__expansion_failure_missing_variable.snap │ │ │ ├── apollo_router__configuration__tests__expansion_failure_unknown_mode.snap │ │ │ ├── apollo_router__configuration__tests__it_does_not_leak_env_variable_values.snap │ │ │ ├── apollo_router__configuration__tests__line_precise_config_errors.snap │ │ │ ├── apollo_router__configuration__tests__line_precise_config_errors_bad_type.snap │ │ │ ├── apollo_router__configuration__tests__line_precise_config_errors_with_errors_after_first_field.snap │ │ │ ├── apollo_router__configuration__tests__line_precise_config_errors_with_errors_after_first_field_env_expansion.snap │ │ │ ├── apollo_router__configuration__tests__line_precise_config_errors_with_inline_sequence.snap │ │ │ ├── apollo_router__configuration__tests__line_precise_config_errors_with_inline_sequence_env_expansion.snap │ │ │ ├── apollo_router__configuration__tests__line_precise_config_errors_with_sequence.snap │ │ │ ├── apollo_router__configuration__tests__line_precise_config_errors_with_sequence_env_expansion.snap │ │ │ ├── apollo_router__configuration__tests__schema_generation.snap │ │ │ ├── apollo_router__configuration__tests__subgraph_override.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@apollo_extended_errors.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@apollo_telemetry_experimental.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@batching.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@connectors_preview.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@datadog_enabled.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@defer_support_ga.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@entity_cache_preview.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@entity_cache_preview2.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@health-check_to_health_check.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@http_max_request_bytes.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@jaeger_enabled.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@jaeger_scheduled_delay.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@js_api_schema.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@jwt_issuer_to_issuers.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@legacy_qp.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@minor__health_check.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@minor__subscription_dedup.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@operation-limits-preview.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@otlp_enabled.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@parser_recursion.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@persisted-queries-preview.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@persisted-queries-prewarm-already-object.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@persisted-queries-prewarm-false.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@persisted-queries-prewarm-true.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@query_plan_cache.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@subscription_enabled.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@supergraph_apq_to_apq.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@telemetry-exporters.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@telemetry_attributes.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@telemetry_otlp_timeout.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@telemetry_resources.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@telemetry_router_to_supergraph.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@telemetry_tracing_propagation_awsxray.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@trace_config.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_configuration@zipkin_enabled.router.yaml.snap │ │ │ ├── apollo_router__configuration__tests__upgrade_old_major_configuration@apollo_extended_errors.yaml.snap │ │ │ ├── apollo_router__configuration__upgrade__test__add_field-2.snap │ │ │ ├── apollo_router__configuration__upgrade__test__add_field-3.snap │ │ │ ├── apollo_router__configuration__upgrade__test__add_field.snap │ │ │ ├── apollo_router__configuration__upgrade__test__change_field.snap │ │ │ ├── apollo_router__configuration__upgrade__test__copy_array_element.snap │ │ │ ├── apollo_router__configuration__upgrade__test__copy_field.snap │ │ │ ├── apollo_router__configuration__upgrade__test__delete_array_element.snap │ │ │ ├── apollo_router__configuration__upgrade__test__delete_field.snap │ │ │ ├── apollo_router__configuration__upgrade__test__diff_upgrade_output.snap │ │ │ ├── apollo_router__configuration__upgrade__test__move_array_element.snap │ │ │ ├── apollo_router__configuration__upgrade__test__move_field.snap │ │ │ ├── apollo_router__configuration__upgrade__test__move_non_existent_field.snap │ │ │ ├── apollo_router__configuration__upgrade__test__upgrade_output.snap │ │ │ └── apollo_router__configuration__yaml__test__test.snap │ │ ├── subgraph.rs │ │ ├── testdata │ │ │ ├── config_basic.router.yaml │ │ │ ├── config_full.router.yaml │ │ │ ├── invalid_url.router.yaml │ │ │ ├── metrics │ │ │ │ ├── apq.router.yaml │ │ │ │ ├── authorization.router.yaml │ │ │ │ ├── authorization_directives.router.yaml │ │ │ │ ├── batching.router.yaml │ │ │ │ ├── connectors.router.yaml │ │ │ │ ├── coprocessor.router.yaml │ │ │ │ ├── defer.router.yaml │ │ │ │ ├── demand_control.router.yaml │ │ │ │ ├── entities.router.yaml │ │ │ │ ├── file_uploads.router.yaml │ │ │ │ ├── jwt.router.yaml │ │ │ │ ├── limits.router.yaml │ │ │ │ ├── persisted_queries.router.yaml │ │ │ │ ├── rhai.router.yaml │ │ │ │ ├── sigv4.router.yaml │ │ │ │ ├── subscriptions.router.yaml │ │ │ │ ├── telemetry.router.yaml │ │ │ │ ├── tls.router.yaml │ │ │ │ └── traffic_shaping.router.yaml │ │ │ ├── migrations │ │ │ │ ├── .skipconfigvalidation │ │ │ │ ├── apollo_extended_errors.yaml │ │ │ │ ├── apollo_telemetry_experimental.router.yaml │ │ │ │ ├── batching.yaml │ │ │ │ ├── connectors_preview.router.yaml │ │ │ │ ├── datadog_enabled.router.yaml │ │ │ │ ├── entity_cache_preview.yaml │ │ │ │ ├── entity_cache_preview2.yaml │ │ │ │ ├── health-check_to_health_check.router.yaml │ │ │ │ ├── http_max_request_bytes.router.yaml │ │ │ │ ├── js_api_schema.router.yaml │ │ │ │ ├── jwt_issuer_to_issuers.yaml │ │ │ │ ├── legacy_qp.yaml │ │ │ │ ├── minor │ │ │ │ │ └── subscription_dedup.yaml │ │ │ │ ├── operation-limits-preview.yaml │ │ │ │ ├── otlp_enabled.router.yaml │ │ │ │ ├── parser_recursion.router.yaml │ │ │ │ ├── persisted-queries-preview.yaml │ │ │ │ ├── persisted-queries-prewarm-already-object.yaml │ │ │ │ ├── persisted-queries-prewarm-false.yaml │ │ │ │ ├── persisted-queries-prewarm-true.yaml │ │ │ │ ├── query_plan_cache.yaml │ │ │ │ ├── subscription_enabled.yaml │ │ │ │ ├── supergraph_apq_to_apq.router.yaml │ │ │ │ ├── telemetry-exporters.router.yaml │ │ │ │ ├── telemetry_attributes.router.yaml │ │ │ │ ├── telemetry_otlp_timeout.router.yaml │ │ │ │ ├── telemetry_resources.router.yaml │ │ │ │ ├── telemetry_tracing_propagation_awsxray.router.yaml │ │ │ │ ├── trace_config.router.yaml │ │ │ │ └── zipkin_enabled.router.yaml │ │ │ ├── server.crt │ │ │ ├── server.key │ │ │ ├── supergraph_config.router.yaml │ │ │ ├── tracing_apollo.router.yaml │ │ │ ├── tracing_apollo_env.router.yaml │ │ │ ├── tracing_config.router.yaml │ │ │ ├── tracing_datadog.router.yaml │ │ │ ├── tracing_datadog_env.router.yaml │ │ │ ├── tracing_otlp_full.router.yaml │ │ │ ├── tracing_otlp_grpc_basic.router.yaml │ │ │ ├── tracing_otlp_grpc_basic_env.router.yaml │ │ │ ├── tracing_otlp_http_basic.router.yaml │ │ │ ├── true.txt │ │ │ ├── zipkin-address.router.yaml │ │ │ ├── zipkin-url.router.yaml │ │ │ ├── zipkin-url_env.router.yaml │ │ │ └── zipkin.router.yaml │ │ ├── tests.rs │ │ ├── upgrade.rs │ │ └── yaml.rs │ ├── context │ │ ├── extensions │ │ │ ├── mod.rs │ │ │ └── sync.rs │ │ └── mod.rs │ ├── error.rs │ ├── executable.rs │ ├── files.rs │ ├── graphql │ │ ├── fixtures │ │ │ ├── federated_ships_deferred_query.graphql │ │ │ ├── federated_ships_deferred_response.json │ │ │ ├── federated_ships_fragment_query.graphql │ │ │ ├── federated_ships_fragment_response.json │ │ │ ├── federated_ships_inline_fragment_query.graphql │ │ │ ├── federated_ships_named_query.graphql │ │ │ ├── federated_ships_named_response.json │ │ │ ├── federated_ships_required_query.graphql │ │ │ ├── federated_ships_required_response.json │ │ │ └── federated_ships_schema.graphql │ │ ├── mod.rs │ │ ├── request.rs │ │ ├── response.rs │ │ ├── snapshots │ │ │ ├── apollo_router__graphql__request__tests__extensions.snap │ │ │ ├── apollo_router__graphql__request__tests__missing_extensions.snap │ │ │ ├── apollo_router__graphql__request__tests__null_extensions.snap │ │ │ ├── apollo_router__graphql__visitor__tests__visit_response.snap │ │ │ ├── apollo_router__graphql__visitor__tests__visit_response_with_fragments.snap │ │ │ ├── apollo_router__graphql__visitor__tests__visit_response_with_inline_fragments.snap │ │ │ └── apollo_router__graphql__visitor__tests__visit_response_with_named_operation.snap │ │ └── visitor.rs │ ├── http_ext.rs │ ├── http_server_factory.rs │ ├── introspection.rs │ ├── json_ext.rs │ ├── layers │ │ ├── async_checkpoint.rs │ │ ├── instrument.rs │ │ ├── map_first_graphql_response.rs │ │ ├── map_future_with_request_data.rs │ │ ├── mod.rs │ │ └── sync_checkpoint.rs │ ├── lib.rs │ ├── logging │ │ └── mod.rs │ ├── main.rs │ ├── metrics │ │ ├── aggregation.rs │ │ ├── filter.rs │ │ └── mod.rs │ ├── notification.rs │ ├── orbiter │ │ ├── mod.rs │ │ ├── snapshots │ │ │ ├── apollo_router__orbiter__test__create_report.snap │ │ │ ├── apollo_router__orbiter__test__create_report_incorrect_type_validated_yaml.snap │ │ │ ├── apollo_router__orbiter__test__create_report_invalid_validated_yaml.snap │ │ │ ├── apollo_router__orbiter__test__visit_args.snap │ │ │ ├── apollo_router__orbiter__test__visit_config.snap │ │ │ └── apollo_router__orbiter__test__visit_config_that_needed_upgrade.snap │ │ └── testdata │ │ │ └── redaction.router.yaml │ ├── otel_compat.rs │ ├── plugin │ │ ├── mod.rs │ │ ├── serde.rs │ │ └── test │ │ │ ├── broken.rs │ │ │ ├── mock │ │ │ ├── canned.rs │ │ │ ├── connector.rs │ │ │ ├── mod.rs │ │ │ └── subgraph.rs │ │ │ ├── mod.rs │ │ │ ├── restricted.rs │ │ │ └── service.rs │ ├── plugins │ │ ├── authentication │ │ │ ├── connector.rs │ │ │ ├── error.rs │ │ │ ├── jwks.rs │ │ │ ├── mod.rs │ │ │ ├── snapshots │ │ │ │ ├── apollo_router__plugins__authentication__tests__parse_failure_logs.snap │ │ │ │ └── apollo_router__plugins__authentication__tests__parse_failure_logs@logs.snap │ │ │ ├── subgraph.rs │ │ │ ├── testdata │ │ │ │ └── jwks.json │ │ │ └── tests.rs │ │ ├── authorization │ │ │ ├── authenticated.rs │ │ │ ├── mod.rs │ │ │ ├── policy.rs │ │ │ ├── scopes.rs │ │ │ ├── snapshots │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__array.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__authenticated_request.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__defer.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__fragment_fields.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__interface_field-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__interface_field.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__interface_fragment.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__interface_inline_fragment.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__interface_type-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__interface_type.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__interface_typename-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__interface_typename.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__introspection_fragment_with_authenticated_root_query.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__introspection_mixed_with_authenticated_fields.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__mutation.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__named_fragment_nested_in_authenticated_type.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__named_fragment_nested_in_named_fragment_in_authenticated_type.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__query_field.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__query_field_alias.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__renamed_directive.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__scalar.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__test.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__unauthenticated_request.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__unauthenticated_request_defer.snap │ │ │ │ ├── apollo_router__plugins__authorization__authenticated__tests__union.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__array.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__extract_policies.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__filter_basic_query-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__filter_basic_query-3.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__filter_basic_query-4.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__filter_basic_query-6.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__filter_basic_query-8.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__filter_basic_query.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__fragment_fields.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_field-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_field-3.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_field.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_fragment-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_fragment-4.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_fragment.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_inline_fragment-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_inline_fragment.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_type-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_type-3.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_type-4.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_type-5.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_type-7.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_type-9.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_type.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_typename-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_typename-3.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_typename-4.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__interface_typename.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__mutation.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__or_and-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__or_and-3.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__or_and-4.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__or_and.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__query_field-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__query_field.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__query_field_alias-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__query_field_alias.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__renamed_directive.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__scalar-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__scalar.snap │ │ │ │ ├── apollo_router__plugins__authorization__policy__tests__union.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__array.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__extract_scopes.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__filter_basic_query-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__filter_basic_query-3.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__filter_basic_query-4.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__filter_basic_query.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__fragment_fields.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_field-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_field.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_fragment-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_fragment-3.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_fragment.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_inline_fragment-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_inline_fragment-3.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_inline_fragment.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_type-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_type-3.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_type-4.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_type-5.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_type.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_typename-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__interface_typename.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__mutation.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__query_field.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__query_field_alias.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__renamed_directive.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__scalar.snap │ │ │ │ ├── apollo_router__plugins__authorization__scopes__tests__union.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__authenticated_directive-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__authenticated_directive.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__authenticated_directive_dry_run.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__authenticated_directive_reject_unauthorized.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__authenticated_request.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__cache_key_metadata.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__errors_in_extensions.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__scopes_directive-2.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__scopes_directive-3.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__scopes_directive-4.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__scopes_directive.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__scopes_directive_dry_run.snap │ │ │ │ ├── apollo_router__plugins__authorization__tests__scopes_directive_reject_unauthorized.snap │ │ │ │ └── apollo_router__plugins__authorization__tests__unauthenticated_request.snap │ │ │ └── tests.rs │ │ ├── cache │ │ │ ├── cache_control.rs │ │ │ ├── entity.rs │ │ │ ├── invalidation.rs │ │ │ ├── invalidation_endpoint.rs │ │ │ ├── metrics.rs │ │ │ ├── mod.rs │ │ │ ├── snapshots │ │ │ │ ├── apollo_router__plugins__cache__tests__insert-2.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert-3.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert-4.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert-5.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert-6.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_nested_field_set-2.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_nested_field_set-3.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_nested_field_set-4.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_nested_field_set-5.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_nested_field_set-6.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_nested_field_set.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_requires-2.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_requires-3.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_requires-4.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_requires-5.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_requires-6.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__insert_with_requires.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__invalidate_entity-2.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__invalidate_entity-3.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__invalidate_entity-4.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__invalidate_entity-5.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__invalidate_entity.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__missing_entities-2.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__missing_entities.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__no_cache_control-2.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__no_cache_control-3.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__no_cache_control-4.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__no_cache_control.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__no_data-2.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__no_data-3.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__no_data-4.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__no_data.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__private-2.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__private-3.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__private-4.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__private-5.snap │ │ │ │ ├── apollo_router__plugins__cache__tests__private-6.snap │ │ │ │ └── apollo_router__plugins__cache__tests__private.snap │ │ │ └── tests.rs │ │ ├── connectors │ │ │ ├── configuration.rs │ │ │ ├── form_encoding.rs │ │ │ ├── handle_responses.rs │ │ │ ├── http_json_transport.rs │ │ │ ├── incompatible.rs │ │ │ ├── incompatible │ │ │ │ ├── apq.rs │ │ │ │ ├── authentication.rs │ │ │ │ ├── batching.rs │ │ │ │ ├── coprocessor.rs │ │ │ │ ├── entity_cache.rs │ │ │ │ ├── headers.rs │ │ │ │ ├── rhai.rs │ │ │ │ ├── telemetry.rs │ │ │ │ ├── tls.rs │ │ │ │ ├── traffic_shaping.rs │ │ │ │ └── url_override.rs │ │ │ ├── make_requests.rs │ │ │ ├── make_requests │ │ │ │ ├── graphql_utils.rs │ │ │ │ └── request_merger.rs │ │ │ ├── mapping.rs │ │ │ ├── mod.rs │ │ │ ├── plugin.rs │ │ │ ├── plugin │ │ │ │ └── debug.rs │ │ │ ├── query_plans.rs │ │ │ ├── request_limit.rs │ │ │ ├── testdata │ │ │ │ ├── README.md │ │ │ │ ├── batch-max-size.graphql │ │ │ │ ├── batch-max-size.yaml │ │ │ │ ├── batch-query.graphql │ │ │ │ ├── batch-query.yaml │ │ │ │ ├── batch.graphql │ │ │ │ ├── batch.yaml │ │ │ │ ├── connect-on-type.graphql │ │ │ │ ├── connect-on-type.yaml │ │ │ │ ├── connector-without-source.graphql │ │ │ │ ├── connector-without-source.yaml │ │ │ │ ├── content-type.graphql │ │ │ │ ├── content-type.yaml │ │ │ │ ├── errors.graphql │ │ │ │ ├── errors.yaml │ │ │ │ ├── form-encoding.graphql │ │ │ │ ├── form-encoding.yaml │ │ │ │ ├── interface-object.graphql │ │ │ │ ├── interface-object.yaml │ │ │ │ ├── mutation.graphql │ │ │ │ ├── mutation.yaml │ │ │ │ ├── nullability.graphql │ │ │ │ ├── nullability.yaml │ │ │ │ ├── progressive-override.graphql │ │ │ │ ├── progressive-override.yaml │ │ │ │ ├── quickstart.graphql │ │ │ │ ├── quickstart.yaml │ │ │ │ ├── quickstart_api_snapshots │ │ │ │ │ ├── query_1.json │ │ │ │ │ ├── query_2.json │ │ │ │ │ ├── query_3.json │ │ │ │ │ └── query_4.json │ │ │ │ ├── regenerate.sh │ │ │ │ ├── selection.graphql │ │ │ │ ├── selection.yaml │ │ │ │ ├── steelthread.graphql │ │ │ │ ├── steelthread.yaml │ │ │ │ ├── url-properties.graphql │ │ │ │ ├── url-properties.yaml │ │ │ │ ├── variables-subgraph.graphql │ │ │ │ ├── variables.graphql │ │ │ │ └── variables.yaml │ │ │ ├── tests │ │ │ │ ├── connect_on_type.rs │ │ │ │ ├── content_type.rs │ │ │ │ ├── error_handling.rs │ │ │ │ ├── mock_api.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── progressive_override.rs │ │ │ │ ├── query_plan.rs │ │ │ │ ├── quickstart.rs │ │ │ │ ├── req_asserts.rs │ │ │ │ └── url_properties.rs │ │ │ └── tracing.rs │ │ ├── content_negotiation.rs │ │ ├── coprocessor │ │ │ ├── execution.rs │ │ │ ├── mod.rs │ │ │ ├── supergraph.rs │ │ │ └── test.rs │ │ ├── csrf │ │ │ ├── fixtures │ │ │ │ ├── default.router.yaml │ │ │ │ ├── required_headers.router.yaml │ │ │ │ └── unsafe_disabled.router.yaml │ │ │ └── mod.rs │ │ ├── demand_control │ │ │ ├── cost_calculator │ │ │ │ ├── directives.rs │ │ │ │ ├── fixtures │ │ │ │ │ ├── arbitrary_json_schema.graphql │ │ │ │ │ ├── basic_excluded_query.graphql │ │ │ │ │ ├── basic_fragments_query.graphql │ │ │ │ │ ├── basic_input_object_query.graphql │ │ │ │ │ ├── basic_input_object_query_2.graphql │ │ │ │ │ ├── basic_input_object_response.json │ │ │ │ │ ├── basic_interface_query.graphql │ │ │ │ │ ├── basic_mutation.graphql │ │ │ │ │ ├── basic_nested_list_query.graphql │ │ │ │ │ ├── basic_object_list_query.graphql │ │ │ │ │ ├── basic_object_query.graphql │ │ │ │ │ ├── basic_query.graphql │ │ │ │ │ ├── basic_scalar_list_query.graphql │ │ │ │ │ ├── basic_schema.graphql │ │ │ │ │ ├── basic_skipped_query.graphql │ │ │ │ │ ├── basic_supergraph_schema.graphql │ │ │ │ │ ├── basic_union_query.graphql │ │ │ │ │ ├── custom_cost_query.graphql │ │ │ │ │ ├── custom_cost_query_with_default_slicing_argument.graphql │ │ │ │ │ ├── custom_cost_query_with_variable_slicing_argument.graphql │ │ │ │ │ ├── custom_cost_response.json │ │ │ │ │ ├── custom_cost_schema.graphql │ │ │ │ │ ├── custom_cost_schema_with_renamed_directives.graphql │ │ │ │ │ ├── federated_ships_deferred_query.graphql │ │ │ │ │ ├── federated_ships_deferred_response.json │ │ │ │ │ ├── federated_ships_fragment_query.graphql │ │ │ │ │ ├── federated_ships_fragment_response.json │ │ │ │ │ ├── federated_ships_inline_fragment_query.graphql │ │ │ │ │ ├── federated_ships_named_query.graphql │ │ │ │ │ ├── federated_ships_named_response.json │ │ │ │ │ ├── federated_ships_required_query.graphql │ │ │ │ │ ├── federated_ships_required_response.json │ │ │ │ │ ├── federated_ships_schema.graphql │ │ │ │ │ ├── federated_ships_typename_query.graphql │ │ │ │ │ ├── federated_ships_typename_response.json │ │ │ │ │ ├── subscription_query.graphql │ │ │ │ │ └── subscription_schema.graphql │ │ │ │ ├── mod.rs │ │ │ │ ├── schema.rs │ │ │ │ ├── snapshots │ │ │ │ │ └── apollo_router__plugins__demand_control__cost_calculator__static_cost__tests__federated_query_with_typenames@logs.snap │ │ │ │ └── static_cost.rs │ │ │ ├── fixtures │ │ │ │ ├── enforce_on_execution_request.router.yaml │ │ │ │ ├── enforce_on_execution_response.router.yaml │ │ │ │ ├── enforce_on_subgraph_request.router.yaml │ │ │ │ ├── enforce_on_subgraph_response.router.yaml │ │ │ │ ├── measure_on_execution_request.router.yaml │ │ │ │ ├── measure_on_execution_response.router.yaml │ │ │ │ ├── measure_on_subgraph_request.router.yaml │ │ │ │ └── measure_on_subgraph_response.router.yaml │ │ │ ├── mod.rs │ │ │ ├── snapshots │ │ │ │ ├── apollo_router__plugins__demand_control__test__enforce_on_execution_request.snap │ │ │ │ ├── apollo_router__plugins__demand_control__test__enforce_on_execution_response.snap │ │ │ │ ├── apollo_router__plugins__demand_control__test__enforce_on_subgraph_request.snap │ │ │ │ ├── apollo_router__plugins__demand_control__test__enforce_on_subgraph_response.snap │ │ │ │ ├── apollo_router__plugins__demand_control__test__measure_on_execution_request.snap │ │ │ │ ├── apollo_router__plugins__demand_control__test__measure_on_execution_response.snap │ │ │ │ ├── apollo_router__plugins__demand_control__test__measure_on_subgraph_request.snap │ │ │ │ └── apollo_router__plugins__demand_control__test__measure_on_subgraph_response.snap │ │ │ └── strategy │ │ │ │ ├── mod.rs │ │ │ │ ├── static_estimated.rs │ │ │ │ └── test.rs │ │ ├── enhanced_client_awareness │ │ │ ├── mod.rs │ │ │ └── tests.rs │ │ ├── expose_query_plan.rs │ │ ├── file_uploads │ │ │ ├── config.rs │ │ │ ├── error.rs │ │ │ ├── map_field.rs │ │ │ ├── mod.rs │ │ │ ├── multipart_form_data.rs │ │ │ ├── multipart_request.rs │ │ │ └── rearrange_query_plan.rs │ │ ├── fleet_detector.rs │ │ ├── forbid_mutations.rs │ │ ├── headers │ │ │ ├── fixtures │ │ │ │ ├── propagate_passthrough.router.yaml │ │ │ │ └── propagate_passthrough_defaulted.router.yaml │ │ │ └── mod.rs │ │ ├── healthcheck │ │ │ ├── mod.rs │ │ │ └── testdata │ │ │ │ ├── allowed_fifty_per_second.router.yaml │ │ │ │ ├── allowed_ten_per_second.router.yaml │ │ │ │ ├── custom_listener.router.yaml │ │ │ │ ├── default_listener.router.yaml │ │ │ │ └── disabled_listener.router.yaml │ │ ├── include_subgraph_errors │ │ │ ├── config.rs │ │ │ ├── effective_config.rs │ │ │ ├── mod.rs │ │ │ ├── snapshots │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__allow_all_explicit.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__allow_product_override_implicit_redact.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__allow_product_when_account_redacted.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__allow_product_when_review_redacted.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__filter_global_allow_keep_msg.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__filter_global_allow_redact_msg.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__incremental_response.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__non_subgraph_error.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__redact_account_override_explicit_allow.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__redact_all_explicit.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__redact_all_implicit.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__redact_product_override_explicit_allow.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__redact_product_when_review_allowed.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__subgraph_allow_extend_global_allow.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__subgraph_allow_override_global_deny.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__subgraph_allow_service.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__subgraph_bool_false_override_global_allow.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__subgraph_bool_true_override_global_deny.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__subgraph_deny_extend_global_deny.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__subgraph_deny_override_global_allow.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__subgraph_deny_service.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__subgraph_exclude_global_allow.snap │ │ │ │ ├── apollo_router__plugins__include_subgraph_errors__tests__subgraph_obj_override_redaction.snap │ │ │ │ └── apollo_router__plugins__include_subgraph_errors__tests__valid_response.snap │ │ │ └── tests.rs │ │ ├── license_enforcement │ │ │ └── mod.rs │ │ ├── limits │ │ │ ├── fixtures │ │ │ │ └── content_length_limit.router.yaml │ │ │ ├── layer.rs │ │ │ ├── limited.rs │ │ │ └── mod.rs │ │ ├── mock_subgraphs │ │ │ ├── execution │ │ │ │ ├── engine.rs │ │ │ │ ├── input_coercion.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── resolver.rs │ │ │ │ ├── result_coercion.rs │ │ │ │ └── validation.rs │ │ │ └── mod.rs │ │ ├── mod.rs │ │ ├── override_url.rs │ │ ├── progressive_override │ │ │ ├── mod.rs │ │ │ ├── snapshots │ │ │ │ ├── apollo_router__plugins__progressive_override__tests__non_overridden_field_yields_expected_query_plan.snap │ │ │ │ └── apollo_router__plugins__progressive_override__tests__overridden_field_yields_expected_query_plan.snap │ │ │ ├── testdata │ │ │ │ ├── supergraph.graphql │ │ │ │ └── supergraph_no_usages.graphql │ │ │ ├── tests.rs │ │ │ └── visitor.rs │ │ ├── record_replay │ │ │ ├── mod.rs │ │ │ ├── record.rs │ │ │ ├── recording-readme.md │ │ │ ├── recording.rs │ │ │ ├── replay.rs │ │ │ └── replay_tests.rs │ │ ├── rhai │ │ │ ├── engine.rs │ │ │ ├── execution.rs │ │ │ ├── mod.rs │ │ │ ├── router.rs │ │ │ ├── snapshots │ │ │ │ ├── apollo_router__plugins__rhai__tests__rhai_plugin_execution_service_error@logs.snap │ │ │ │ └── apollo_router__plugins__rhai__tests__rhai_plugin_supergraph_service@logs.snap │ │ │ ├── subgraph.rs │ │ │ ├── supergraph.rs │ │ │ └── tests.rs │ │ ├── snapshots │ │ │ ├── apollo_router__plugins__expose_query_plan__tests__it_doesnt_expose_query_plan.snap │ │ │ ├── apollo_router__plugins__expose_query_plan__tests__it_expose_query_plan-2.snap │ │ │ └── apollo_router__plugins__expose_query_plan__tests__it_expose_query_plan.snap │ │ ├── subscription.rs │ │ ├── telemetry │ │ │ ├── apollo.rs │ │ │ ├── apollo_exporter.rs │ │ │ ├── apollo_otlp_exporter.rs │ │ │ ├── config.rs │ │ │ ├── config_new │ │ │ │ ├── attributes.rs │ │ │ │ ├── cache │ │ │ │ │ ├── attributes.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── conditional.rs │ │ │ │ ├── conditions.rs │ │ │ │ ├── connector │ │ │ │ │ ├── attributes.rs │ │ │ │ │ ├── events.rs │ │ │ │ │ ├── instruments.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── selectors.rs │ │ │ │ │ ├── snapshots │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__connector__events__tests__connector_events_request@logs.snap │ │ │ │ │ │ └── apollo_router__plugins__telemetry__config_new__connector__events__tests__connector_events_response@logs.snap │ │ │ │ │ └── spans.rs │ │ │ │ ├── cost │ │ │ │ │ ├── fixtures │ │ │ │ │ │ ├── cost_actual.router.yaml │ │ │ │ │ │ ├── cost_actual_with_attributes.router.yaml │ │ │ │ │ │ ├── cost_delta.router.yaml │ │ │ │ │ │ ├── cost_delta_with_attributes.router.yaml │ │ │ │ │ │ ├── cost_estimated.router.yaml │ │ │ │ │ │ └── cost_estimated_with_attributes.router.yaml │ │ │ │ │ └── mod.rs │ │ │ │ ├── events.rs │ │ │ │ ├── extendable.rs │ │ │ │ ├── fixtures │ │ │ │ │ ├── conditional-config.router.yaml │ │ │ │ │ ├── connector │ │ │ │ │ │ ├── custom_counter_with_conditions │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── http_client_request_duration │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── mapping_problems │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ └── subgraph_and_connector │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ ├── graphql │ │ │ │ │ │ ├── custom_counter │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_with_custom_attributes │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_with_custom_conditions │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_with_custom_value │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_with_custom_attributes │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_with_custom_conditions │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── field.execution │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ └── field.length │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ ├── graphql_instruments.router.yaml │ │ │ │ │ ├── router │ │ │ │ │ │ ├── attribute.error.type │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── attribute.on_graphql_error │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_aborted_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_aborted_request_with_condition_on_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_aborted_request_with_condition_on_response │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_custom_value │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_on_error │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_with_attributes │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_with_conditions │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_custom_value │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_duration │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_duration_aborted_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_duration_aborted_request_with_condition_on_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_duration_aborted_request_with_condition_on_response │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_unit │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_unit_aborted_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_unit_aborted_request_with_condition_on_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_unit_aborted_request_with_condition_on_response │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_with_attributes │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_with_conditions │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── http.server.active_requests │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── http.server.request.body.size │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── http.server.request.body.size_with_custom_attributes │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── http.server.request.duration │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── http.server.request.duration_with_custom_attributes │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ └── http.server.response.body.size │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ ├── router_instruments.router.yaml │ │ │ │ │ ├── schema.json │ │ │ │ │ ├── subgraph │ │ │ │ │ │ ├── caching │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_aborted_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_custom_value │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_with_attributes │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_with_conditions │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_custom_value │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_duration copy │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_duration │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_duration_aborted_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_unit │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_unit_aborted_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_with_attributes │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ └── custom_histogram_with_conditions │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ ├── supergraph │ │ │ │ │ │ ├── attribute.on_graphql_error │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_aborted_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_custom_value │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_with_attributes │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_counter_with_conditions │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_custom_value │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_duration │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_duration_aborted_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_supergraph_aliases │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_supergraph_depth │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_supergraph_height │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_supergraph_root_fields │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_unit │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_unit_aborted_request │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_with_attributes │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── custom_histogram_with_conditions │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ ├── event.attributes.on_graphql_error │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ │ └── event.counter.custom_value │ │ │ │ │ │ │ ├── metrics.snap │ │ │ │ │ │ │ ├── router.yaml │ │ │ │ │ │ │ └── test.yaml │ │ │ │ │ └── supergraph_instruments.router.yaml │ │ │ │ ├── graphql │ │ │ │ │ ├── attributes.rs │ │ │ │ │ ├── fixtures │ │ │ │ │ │ ├── field_length_disabled.router.yaml │ │ │ │ │ │ ├── field_length_enabled.router.yaml │ │ │ │ │ │ └── filtered_field_length.router.yaml │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── selectors.rs │ │ │ │ ├── http_common │ │ │ │ │ ├── attributes.rs │ │ │ │ │ ├── events.rs │ │ │ │ │ ├── instruments.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── selectors.rs │ │ │ │ │ └── spans.rs │ │ │ │ ├── http_server │ │ │ │ │ ├── attributes.rs │ │ │ │ │ ├── events.rs │ │ │ │ │ ├── instruments.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── selectors.rs │ │ │ │ │ └── spans.rs │ │ │ │ ├── instruments.rs │ │ │ │ ├── logging.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── router │ │ │ │ │ ├── attributes.rs │ │ │ │ │ ├── events.rs │ │ │ │ │ ├── instruments.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── selectors.rs │ │ │ │ │ ├── snapshots │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__router__events__tests__router_events@logs.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__router__events__tests__router_events_graphql_error@logs.snap │ │ │ │ │ │ └── apollo_router__plugins__telemetry__config_new__router__events__tests__router_events_graphql_response@logs.snap │ │ │ │ │ └── spans.rs │ │ │ │ ├── selectors.rs │ │ │ │ ├── snapshots │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__connector_events_request@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__connector_events_response@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__router_events@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__router_events_graphql_error@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__router_events_graphql_response@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__subgraph_events@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__subgraph_events_response@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__supergraph_events@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__supergraph_events_on_graphql_error@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__supergraph_events_on_response@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__events__tests__supergraph_events_with_exists_condition@logs.snap │ │ │ │ │ └── apollo_router__plugins__telemetry__config_new__extendable__test__extendable_serde_conditional.snap │ │ │ │ ├── spans.rs │ │ │ │ ├── subgraph │ │ │ │ │ ├── attributes.rs │ │ │ │ │ ├── events.rs │ │ │ │ │ ├── instruments.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── selectors.rs │ │ │ │ │ ├── snapshots │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__subgraph__events__test__subgraph_events@logs.snap │ │ │ │ │ │ └── apollo_router__plugins__telemetry__config_new__subgraph__events__test__subgraph_events_response@logs.snap │ │ │ │ │ └── spans.rs │ │ │ │ └── supergraph │ │ │ │ │ ├── attributes.rs │ │ │ │ │ ├── events.rs │ │ │ │ │ ├── instruments.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── selectors.rs │ │ │ │ │ ├── snapshots │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__supergraph__events__tests__supergraph_events@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__supergraph__events__tests__supergraph_events_on_graphql_error@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__config_new__supergraph__events__tests__supergraph_events_on_response@logs.snap │ │ │ │ │ └── apollo_router__plugins__telemetry__config_new__supergraph__events__tests__supergraph_events_with_exists_condition@logs.snap │ │ │ │ │ └── spans.rs │ │ │ ├── consts.rs │ │ │ ├── dynamic_attribute.rs │ │ │ ├── endpoint.rs │ │ │ ├── error_handler.rs │ │ │ ├── fmt_layer.rs │ │ │ ├── formatters │ │ │ │ ├── json.rs │ │ │ │ ├── mod.rs │ │ │ │ └── text.rs │ │ │ ├── logging │ │ │ │ ├── mod.rs │ │ │ │ └── snapshots │ │ │ │ │ ├── apollo_router__plugins__telemetry__logging__test__router_service@logs.snap │ │ │ │ │ ├── apollo_router__plugins__telemetry__logging__test__subgraph_service@logs.snap │ │ │ │ │ └── apollo_router__plugins__telemetry__logging__test__supergraph_service@logs.snap │ │ │ ├── metrics │ │ │ │ ├── apollo │ │ │ │ │ ├── histogram │ │ │ │ │ │ ├── cost.rs │ │ │ │ │ │ ├── duration.rs │ │ │ │ │ │ ├── list_length.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── snapshots │ │ │ │ │ │ │ └── apollo_router__plugins__telemetry__metrics__apollo__histogram__cost__test__cost_bucketing.snap │ │ │ │ │ ├── mod.rs │ │ │ │ │ ├── snapshots │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__cost_histogram__test__exponential_bucketing.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__studio__test__aggregation.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_distributed_apq_cache_feature_disabled_with_partial_defaults.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_distributed_apq_cache_feature_enabled_with_partial_defaults.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_exclude.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_features_disabled_when_defaulted.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_features_explicitly_disabled.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_features_explicitly_enabled.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_features_implicitly_disabled.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_for_subscription.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_for_subscription_error.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_multiple_operations.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_parse_failure.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_single_operation.snap │ │ │ │ │ │ ├── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_unknown_operation.snap │ │ │ │ │ │ └── apollo_router__plugins__telemetry__metrics__apollo__test__apollo_metrics_validation_failure.snap │ │ │ │ │ └── studio.rs │ │ │ │ ├── local_type_stats.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── otlp.rs │ │ │ │ └── prometheus.rs │ │ │ ├── mod.rs │ │ │ ├── otel │ │ │ │ ├── layer.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── named_runtime_channel.rs │ │ │ │ ├── span_ext.rs │ │ │ │ └── tracer.rs │ │ │ ├── otlp.rs │ │ │ ├── proto │ │ │ │ └── reports.proto │ │ │ ├── reload.rs │ │ │ ├── resource.rs │ │ │ ├── snapshots │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__json_logging_attributes.snap │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__json_logging_attributes_nested_spans.snap │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__json_logging_deduplicates_attributes.snap │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__json_logging_with_custom_events.snap │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__json_logging_with_custom_events_with_instrumented.snap │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__json_logging_without_span_list.snap │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__text_logging_attributes.snap │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__text_logging_attributes_nested_spans.snap │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__text_logging_with_custom_events.snap │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__text_logging_with_custom_events_with_instrumented.snap │ │ │ │ ├── apollo_router__plugins__telemetry__fmt_layer__tests__text_logging_without_span_list.snap │ │ │ │ ├── apollo_router__plugins__telemetry__tests__it_test_prometheus_metrics.snap │ │ │ │ ├── apollo_router__plugins__telemetry__tests__it_test_prometheus_metrics_custom_buckets.snap │ │ │ │ ├── apollo_router__plugins__telemetry__tests__it_test_prometheus_metrics_custom_buckets_for_specific_metrics.snap │ │ │ │ └── apollo_router__plugins__telemetry__tests__it_test_prometheus_metrics_units_are_included.snap │ │ │ ├── span_factory.rs │ │ │ ├── testdata │ │ │ │ ├── config.field_instrumentation_sampler.router.yaml │ │ │ │ ├── config.router.yaml │ │ │ │ ├── custom_attributes.router.yaml │ │ │ │ ├── custom_events.router.yaml │ │ │ │ ├── custom_events_exists_condition.router.yaml │ │ │ │ ├── custom_instruments.router.yaml │ │ │ │ ├── custom_instruments_level.router.yaml │ │ │ │ ├── demand_control_delta_filter.router.yaml │ │ │ │ ├── demand_control_result_attribute.router.yaml │ │ │ │ ├── demand_control_result_filter.router.yaml │ │ │ │ ├── full_config_all_features_defaults.router.yaml │ │ │ │ ├── full_config_all_features_enabled.router.yaml │ │ │ │ ├── full_config_all_features_explicitly_disabled.router.yaml │ │ │ │ ├── full_config_apq_disabled_partial_defaults.router.yaml │ │ │ │ ├── full_config_apq_enabled_partial_defaults.router.yaml │ │ │ │ ├── prometheus.router.yaml │ │ │ │ ├── prometheus_custom_buckets.router.yaml │ │ │ │ ├── prometheus_custom_buckets_specific_metrics.router.yaml │ │ │ │ └── prometheus_custom_view_drop.router.yaml │ │ │ ├── tracing │ │ │ │ ├── apollo.rs │ │ │ │ ├── apollo_telemetry.rs │ │ │ │ ├── datadog │ │ │ │ │ ├── agent_sampling.rs │ │ │ │ │ ├── mod.rs │ │ │ │ │ └── span_processor.rs │ │ │ │ ├── datadog_exporter │ │ │ │ │ ├── README.md │ │ │ │ │ ├── exporter │ │ │ │ │ │ ├── intern.rs │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ └── model │ │ │ │ │ │ │ ├── mod.rs │ │ │ │ │ │ │ ├── unified_tags.rs │ │ │ │ │ │ │ ├── v03.rs │ │ │ │ │ │ │ └── v05.rs │ │ │ │ │ └── mod.rs │ │ │ │ ├── jaeger.rs │ │ │ │ ├── mod.rs │ │ │ │ ├── otlp.rs │ │ │ │ ├── reload.rs │ │ │ │ └── zipkin.rs │ │ │ └── utils.rs │ │ ├── test │ │ │ ├── mod.rs │ │ │ ├── router_ext.rs │ │ │ ├── subgraph_ext.rs │ │ │ └── supergraph_ext.rs │ │ └── traffic_shaping │ │ │ ├── deduplication.rs │ │ │ └── mod.rs │ ├── protocols │ │ ├── mod.rs │ │ ├── multipart.rs │ │ └── websocket.rs │ ├── query_planner │ │ ├── caching_query_planner.rs │ │ ├── convert.rs │ │ ├── execution.rs │ │ ├── fetch.rs │ │ ├── labeler.rs │ │ ├── mod.rs │ │ ├── plan.rs │ │ ├── query_planner_service.rs │ │ ├── rewrites.rs │ │ ├── selection.rs │ │ ├── snapshots │ │ │ ├── apollo_router__query_planner__labeler__tests__large_float_written_as_int.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__empty_query_plan_usage_reporting.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__plan_invalid_query_errors.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__plan_root.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__plan_usage_reporting.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-10.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-11.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-12.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-13.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-14.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-15.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-16.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-17.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-18.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-2.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-3.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-4.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-5.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-6.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-7.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-8.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections-9.snap │ │ │ ├── apollo_router__query_planner__query_planner_service__tests__subselections.snap │ │ │ ├── apollo_router__query_planner__tests__alias_renaming-2.snap │ │ │ ├── apollo_router__query_planner__tests__alias_renaming.snap │ │ │ ├── apollo_router__query_planner__tests__defer_if_condition-2.snap │ │ │ ├── apollo_router__query_planner__tests__defer_if_condition-3.snap │ │ │ ├── apollo_router__query_planner__tests__defer_if_condition.snap │ │ │ ├── apollo_router__query_planner__tests__missing_fields_in_requires.snap │ │ │ ├── apollo_router__query_planner__tests__missing_typename_and_fragments_in_requires.snap │ │ │ ├── apollo_router__query_planner__tests__missing_typename_and_fragments_in_requires2.snap │ │ │ ├── apollo_router__query_planner__tests__null_in_requires.snap │ │ │ ├── apollo_router__query_planner__tests__query_plan_from_json.snap │ │ │ ├── apollo_router__query_planner__tests__typename_propagation.snap │ │ │ ├── apollo_router__query_planner__tests__typename_propagation2.snap │ │ │ └── apollo_router__query_planner__tests__typename_propagation3.snap │ │ ├── subgraph_context.rs │ │ ├── subscription.rs │ │ ├── testdata │ │ │ ├── defer_clause.graphql │ │ │ ├── defer_clause_plan.json │ │ │ ├── defer_schema.graphql │ │ │ ├── query.graphql │ │ │ ├── query_plan.json │ │ │ ├── schema.graphql │ │ │ ├── test.json │ │ │ └── unknown_introspection_query.graphql │ │ └── tests.rs │ ├── router │ │ ├── error.rs │ │ ├── event │ │ │ ├── configuration.rs │ │ │ ├── license.rs │ │ │ ├── mod.rs │ │ │ ├── reload.rs │ │ │ ├── schema.rs │ │ │ ├── shutdown.rs │ │ │ └── snapshots │ │ │ │ ├── apollo_router__router__event__schema__tests__schema_by_url@logs.snap │ │ │ │ ├── apollo_router__router__event__schema__tests__schema_by_url_all_fail@logs.snap │ │ │ │ ├── apollo_router__router__event__schema__tests__schema_by_url_fallback@logs.snap │ │ │ │ ├── apollo_router__router__event__schema__tests__schema_no_watch@logs.snap │ │ │ │ └── apollo_router__router__event__schema__tests__schema_success_fail_success@logs.snap │ │ └── mod.rs │ ├── router_factory.rs │ ├── services │ │ ├── connect.rs │ │ ├── connector.rs │ │ ├── connector │ │ │ ├── request_service.rs │ │ │ └── request_service │ │ │ │ ├── transport.rs │ │ │ │ └── transport │ │ │ │ └── http.rs │ │ ├── connector_service.rs │ │ ├── execution.rs │ │ ├── execution │ │ │ └── service.rs │ │ ├── external.rs │ │ ├── fetch.rs │ │ ├── fetch_service.rs │ │ ├── hickory_dns_connector.rs │ │ ├── http.rs │ │ ├── http │ │ │ ├── service.rs │ │ │ ├── snapshots │ │ │ │ └── apollo_router__services__http__tests__unix_socket.snap │ │ │ ├── testdata │ │ │ │ ├── CA │ │ │ │ │ ├── ca.crt │ │ │ │ │ └── ca.key │ │ │ │ ├── client.crt │ │ │ │ ├── client.csr │ │ │ │ ├── client.ext │ │ │ │ ├── client.key │ │ │ │ ├── server.crt │ │ │ │ ├── server.csr │ │ │ │ ├── server.ext │ │ │ │ ├── server.key │ │ │ │ ├── server_self_signed.crt │ │ │ │ ├── server_self_signed.csr │ │ │ │ └── tls.md │ │ │ └── tests.rs │ │ ├── layers │ │ │ ├── allow_only_http_post_mutations.rs │ │ │ ├── apq.rs │ │ │ ├── mod.rs │ │ │ ├── persisted_queries │ │ │ │ ├── freeform_graphql_behavior.rs │ │ │ │ ├── id_extractor.rs │ │ │ │ ├── manifest.rs │ │ │ │ ├── manifest_poller.rs │ │ │ │ ├── mod.rs │ │ │ │ └── snapshots │ │ │ │ │ └── apollo_router__services__layers__persisted_queries__tests__pq_layer_freeform_graphql_with_safelist_log_unknown_true@logs.snap │ │ │ ├── query_analysis.rs │ │ │ └── static_page.rs │ │ ├── mod.rs │ │ ├── new_service.rs │ │ ├── query_batching │ │ │ └── testdata │ │ │ │ ├── badly_formatted_batch_response.json │ │ │ │ ├── batch_exceeds_maximum_size_response.json │ │ │ │ ├── batching_not_enabled_response.json │ │ │ │ └── expected_good_response.json │ │ ├── query_planner.rs │ │ ├── router.rs │ │ ├── router │ │ │ ├── body.rs │ │ │ ├── pipeline_handle.rs │ │ │ ├── service.rs │ │ │ ├── snapshots │ │ │ │ ├── apollo_router__services__router__tests__escaped_quotes_in_string_literal.snap │ │ │ │ └── apollo_router__services__router__tests__invalid_input_enum.snap │ │ │ └── tests.rs │ │ ├── snapshots │ │ │ └── apollo_router__services__external__test__it_will_create_an_http_request_span@logs.snap │ │ ├── subgraph.rs │ │ ├── subgraph_service.rs │ │ ├── supergraph.rs │ │ └── supergraph │ │ │ ├── service.rs │ │ │ ├── snapshots │ │ │ ├── apollo_router__services__supergraph__tests__abstract_types_in_requires.snap │ │ │ ├── apollo_router__services__supergraph__tests__aliased_typename_on_fragments.snap │ │ │ ├── apollo_router__services__supergraph__tests__deferred_fragment_bounds_nullability-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__deferred_fragment_bounds_nullability.snap │ │ │ ├── apollo_router__services__supergraph__tests__errors_from_primary_on_deferred_responses-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__errors_from_primary_on_deferred_responses.snap │ │ │ ├── apollo_router__services__supergraph__tests__errors_on_deferred_responses-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__errors_on_deferred_responses.snap │ │ │ ├── apollo_router__services__supergraph__tests__errors_on_incremental_responses-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__errors_on_incremental_responses.snap │ │ │ ├── apollo_router__services__supergraph__tests__errors_on_nullified_paths.snap │ │ │ ├── apollo_router__services__supergraph__tests__errors_with_invalid_paths_on_query_with_defer-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__errors_with_invalid_paths_on_query_with_defer.snap │ │ │ ├── apollo_router__services__supergraph__tests__filter_nullified_deferred_responses-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__filter_nullified_deferred_responses-3.snap │ │ │ ├── apollo_router__services__supergraph__tests__filter_nullified_deferred_responses.snap │ │ │ ├── apollo_router__services__supergraph__tests__fragment_reuse.snap │ │ │ ├── apollo_router__services__supergraph__tests__interface_object_typename.snap │ │ │ ├── apollo_router__services__supergraph__tests__invalid_input_enum.snap │ │ │ ├── apollo_router__services__supergraph__tests__missing_entities.snap │ │ │ ├── apollo_router__services__supergraph__tests__no_typename_on_interface-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__no_typename_on_interface-3.snap │ │ │ ├── apollo_router__services__supergraph__tests__no_typename_on_interface.snap │ │ │ ├── apollo_router__services__supergraph__tests__nullability_bubbling.snap │ │ │ ├── apollo_router__services__supergraph__tests__nullability_formatting.snap │ │ │ ├── apollo_router__services__supergraph__tests__query_reconstruction.snap │ │ │ ├── apollo_router__services__supergraph__tests__reconstruct_deferred_query_under_interface-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__reconstruct_deferred_query_under_interface.snap │ │ │ ├── apollo_router__services__supergraph__tests__root_selection_not_included.snap │ │ │ ├── apollo_router__services__supergraph__tests__root_selection_not_skipped.snap │ │ │ ├── apollo_router__services__supergraph__tests__root_selection_set_statically_skipped.snap │ │ │ ├── apollo_router__services__supergraph__tests__root_selection_set_with_fragment_statically_skipped.snap │ │ │ ├── apollo_router__services__supergraph__tests__root_selection_set_with_inline_fragment_statically_skipped.snap │ │ │ ├── apollo_router__services__supergraph__tests__root_selection_skipped.snap │ │ │ ├── apollo_router__services__supergraph__tests__root_selection_skipped_with_other_fields.snap │ │ │ ├── apollo_router__services__supergraph__tests__root_selection_with_several_fields_statically_skipped.snap │ │ │ ├── apollo_router__services__supergraph__tests__root_typename_with_defer-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__root_typename_with_defer.snap │ │ │ ├── apollo_router__services__supergraph__tests__subscription_callback_schema_reload-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__subscription_callback_schema_reload-3.snap │ │ │ ├── apollo_router__services__supergraph__tests__subscription_callback_schema_reload.snap │ │ │ ├── apollo_router__services__supergraph__tests__subscription_with_callback-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__subscription_with_callback-3.snap │ │ │ ├── apollo_router__services__supergraph__tests__subscription_with_callback.snap │ │ │ ├── apollo_router__services__supergraph__tests__subscription_with_callback_with_limit-2.snap │ │ │ ├── apollo_router__services__supergraph__tests__subscription_with_callback_with_limit-3.snap │ │ │ ├── apollo_router__services__supergraph__tests__subscription_with_callback_with_limit-4.snap │ │ │ ├── apollo_router__services__supergraph__tests__subscription_with_callback_with_limit.snap │ │ │ └── apollo_router__services__supergraph__tests__subscription_without_header.snap │ │ │ └── tests.rs │ ├── snapshots │ │ └── apollo_router__batching__tests__it_matches_subgraph_request_ids_to_responses.snap │ ├── spec │ │ ├── field_type.rs │ │ ├── fragments.rs │ │ ├── mod.rs │ │ ├── operation_limits.rs │ │ ├── query.rs │ │ ├── query │ │ │ ├── snapshots │ │ │ │ ├── apollo_router__spec__query__tests__filtered_defer_fragment-2.snap │ │ │ │ ├── apollo_router__spec__query__tests__filtered_defer_fragment.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-10.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-11.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-12.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-13.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-14.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-2.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-3.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-4.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-5.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-6.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-7.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-8.snap │ │ │ │ ├── apollo_router__spec__query__transform__tests__remove_directive-9.snap │ │ │ │ └── apollo_router__spec__query__transform__tests__remove_directive.snap │ │ │ ├── subselections.rs │ │ │ ├── tests.rs │ │ │ ├── transform.rs │ │ │ └── traverse.rs │ │ ├── schema.rs │ │ └── selection.rs │ ├── state_machine.rs │ ├── test_harness.rs │ ├── test_harness │ │ ├── http_client.rs │ │ ├── http_snapshot.rs │ │ ├── http_snapshot_main.rs │ │ └── mocks │ │ │ ├── mod.rs │ │ │ └── persisted_queries.rs │ ├── testdata │ │ ├── a_b_supergraph.graphql │ │ ├── contract_schema.graphql │ │ ├── datadog.router.yaml │ │ ├── inaccessible_on_non_core.graphql │ │ ├── invalid_minimal_supergraph_missing_subgraph_url.graphql │ │ ├── invalid_supergraph.graphql │ │ ├── jaeger.router.yaml │ │ ├── minimal_fed1_supergraph.graphql │ │ ├── minimal_local_inventory_supergraph.graphql │ │ ├── minimal_supergraph.graphql │ │ ├── orga_supergraph.graphql │ │ ├── otlp.router.yaml │ │ ├── starstuff@current.graphql │ │ ├── supergraph.graphql │ │ ├── supergraph_config.router.yaml │ │ ├── supergraph_missing_name.graphql │ │ ├── supergraph_nested_fields.graphql │ │ ├── supergraph_with_context.graphql │ │ ├── supergraph_with_override_label.graphql │ │ └── zipkin.router.yaml │ ├── tracer.rs │ └── uplink │ │ ├── feature_gate_enforcement.rs │ │ ├── license.jwks.json │ │ ├── license_enforcement.rs │ │ ├── license_query.graphql │ │ ├── license_stream.rs │ │ ├── mod.rs │ │ ├── parsed_link_spec.rs │ │ ├── persisted_queries_manifest_query.graphql │ │ ├── persisted_queries_manifest_stream.rs │ │ ├── schema.rs │ │ ├── schema_query.graphql │ │ ├── schema_stream.rs │ │ ├── snapshots │ │ ├── apollo_router__uplink__license_enforcement__test__progressive_override.snap │ │ ├── apollo_router__uplink__license_enforcement__test__progressive_override_with_renamed_join_spec.snap │ │ ├── apollo_router__uplink__license_enforcement__test__restricted_authorization_directives_via_schema.snap │ │ ├── apollo_router__uplink__license_enforcement__test__restricted_features_via_config.snap │ │ ├── apollo_router__uplink__license_enforcement__test__restricted_unix_socket_via_schema.snap │ │ ├── apollo_router__uplink__license_enforcement__test__schema_enforcement_directive_arg_version_in_range.snap │ │ ├── apollo_router__uplink__license_enforcement__test__schema_enforcement_spec_version_in_range.snap │ │ ├── apollo_router__uplink__license_enforcement__test__set_context.snap │ │ ├── apollo_router__uplink__license_stream__test__validate_audience_multiple@logs.snap │ │ ├── apollo_router__uplink__license_stream__test__validate_audience_multiple_filtered@logs.snap │ │ ├── apollo_router__uplink__license_stream__test__validate_audience_single@logs.snap │ │ ├── apollo_router__uplink__license_stream__test__validate_audience_single_filtered@logs.snap │ │ ├── apollo_router__uplink__license_stream__test__validate_no_claim@logs.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_empty_http_fallback.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_empty_http_round_robin.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_error_http_fallback.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_error_http_round_robin.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_error_no_retry.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_error_retry.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_failed_from_all.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_failed_from_single.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_fallback.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_invalid.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_round_robin.snap │ │ ├── apollo_router__uplink__test__stream_from_uplink_transforming_new_response_first_response_transform_fails.snap │ │ └── apollo_router__uplink__test__stream_from_uplink_unchanged.snap │ │ ├── testdata │ │ ├── authorization.graphql │ │ ├── connectv0_3.router.yaml │ │ ├── feature_enforcement_connect_v0_2.graphql │ │ ├── feature_enforcement_connect_v0_3.graphql │ │ ├── oss.graphql │ │ ├── oss.router.yaml │ │ ├── override-manual-demo.graphql │ │ ├── override-manual-demo.yml │ │ ├── progressive_override.graphql │ │ ├── progressive_override_renamed_join.graphql │ │ ├── restricted.router.yaml │ │ ├── schema_enforcement_connectors.graphql │ │ ├── schema_enforcement_directive_arg_version_in_range.graphql │ │ ├── schema_enforcement_directive_arg_version_out_of_range.graphql │ │ ├── schema_enforcement_spec_version_in_range.graphql │ │ ├── schema_enforcement_spec_version_out_of_range.graphql │ │ ├── set_context.graphql │ │ ├── test_query.graphql │ │ ├── test_uplink.graphql │ │ └── unix_socket.graphql │ │ └── uplink.graphql ├── templates │ ├── homepage_index.html │ └── sandbox_index.html ├── testing_schema.graphql └── tests │ ├── apollo_otel_traces.rs │ ├── apollo_reports.rs │ ├── common.rs │ ├── compute_backpressure.rs │ ├── fixtures │ ├── accounts.graphql │ ├── batching │ │ ├── all_enabled.router.yaml │ │ ├── block_request.rhai │ │ ├── coprocessor.router.yaml │ │ ├── rhai_script.router.yaml │ │ ├── schema.graphql │ │ ├── short_timeouts.router.yaml │ │ ├── subgraph_id.rhai │ │ └── subgraph_id.router.yaml │ ├── broken-supergraph.graphql │ ├── connectors │ │ └── quickstart.graphql │ ├── demand_control.rhai │ ├── file_upload │ │ ├── add_header.rhai │ │ ├── default.router.yaml │ │ ├── large.router.yaml │ │ ├── rhai.router.yaml │ │ └── schema.graphql │ ├── global_variables_test.rhai │ ├── introspect_full_schema.graphql │ ├── inventory.graphql │ ├── jwks-ec-no-alg.json │ ├── jwks-no-use.json │ ├── jwks-rsa-no-alg.json │ ├── jwks-unknown-alg.json │ ├── jwks.json │ ├── persisted-queries-manifest-hot-reload.json │ ├── persisted-queries-manifest.json │ ├── products.graphql │ ├── remove_header.rhai │ ├── reports │ │ ├── all_features_disabled.router.yaml │ │ ├── all_features_enabled.router.yaml │ │ ├── apollo_reports.router.yaml │ │ └── apollo_reports_batch.router.yaml │ ├── request_response_test.rhai │ ├── require_authentication.rhai │ ├── reviews.graphql │ ├── schema_to_introspect.graphql │ ├── set_context │ │ ├── one.json │ │ ├── one_dependent_fetch_failure.json │ │ ├── one_fetch_failure.json │ │ ├── one_null_param.json │ │ ├── supergraph.graphql │ │ └── two.json │ ├── subscription.router.yaml │ ├── supergraph-auth.graphql │ ├── supergraph.graphql │ ├── supergraph_connect.graphql │ ├── supergraph_connect.yaml │ ├── syntax_errors.rhai │ ├── test.rhai │ ├── test_callbacks.rhai │ ├── test_plugin_ordering.rhai │ ├── test_reload_1.rhai │ ├── test_reload_2.rhai │ ├── type_conditions │ │ ├── artwork.json │ │ ├── artwork_disabled.json │ │ ├── artwork_no_articles.json │ │ ├── artwork_query_fragments_enabled.json │ │ ├── search.json │ │ ├── search_list_of_list.json │ │ ├── search_list_of_list_of_list.json │ │ ├── search_no_articles.json │ │ ├── search_query_fragments_enabled.json │ │ └── type_conditions.graphql │ └── valid-supergraph.graphql │ ├── integration │ ├── batching.rs │ ├── connectors.rs │ ├── content_negotiation.rs │ ├── coprocessor.rs │ ├── docs.rs │ ├── entity_cache.rs │ ├── file_upload.rs │ ├── fixtures │ │ ├── broken_coprocessor.router.yaml │ │ ├── broken_plugin.router.yaml │ │ ├── coprocessor.router.yaml │ │ ├── coprocessor_body_limit.router.yaml │ │ ├── coprocessor_demand_control.router.yaml │ │ ├── happy.router.yaml │ │ ├── prometheus.router.yaml │ │ ├── prometheus_updated.router.yaml │ │ ├── query_planner_max_evaluated_plans.graphql │ │ ├── query_planner_redis_config_update.router.yaml │ │ ├── query_planner_redis_config_update_defer.router.yaml │ │ ├── query_planner_redis_config_update_query_fragments.router.yaml │ │ ├── query_planner_redis_config_update_type_conditional_fetching.router.yaml │ │ ├── redis_connection_closure.router.yaml │ │ ├── request_bytes_limit.router.yaml │ │ ├── request_bytes_limit_with_coprocessor.router.yaml │ │ ├── rhai_logging.router.yaml │ │ ├── rhai_reload.router.yaml │ │ ├── small_connection_shutdown_timeout.router.yaml │ │ └── small_connection_shutdown_timeout_updated.router.yaml │ ├── introspection.rs │ ├── lifecycle.rs │ ├── mod.rs │ ├── operation_limits.rs │ ├── operation_name.rs │ ├── query_planner.rs │ ├── query_planner │ │ └── max_evaluated_plans.rs │ ├── redis.rs │ ├── rhai.rs │ ├── snapshots │ │ ├── integration_tests__integration__coprocessor__coprocessor_limit_payload.snap │ │ ├── integration_tests__integration__coprocessor__error_not_propagated_to_client.snap │ │ ├── integration_tests__integration__introspection__both_mode_integration.snap │ │ ├── integration_tests__integration__introspection__integration.snap │ │ ├── integration_tests__integration__introspection__simple.snap │ │ ├── integration_tests__integration__lifecycle__cli_config_experimental.snap │ │ ├── integration_tests__integration__lifecycle__cli_config_preview.snap │ │ ├── integration_tests__integration__lifecycle__graceful_shutdown.snap │ │ ├── integration_tests__integration__redis__apq.snap │ │ ├── integration_tests__integration__redis__entity_cache_authorization-2.snap │ │ ├── integration_tests__integration__redis__entity_cache_authorization-3.snap │ │ ├── integration_tests__integration__redis__entity_cache_authorization.snap │ │ ├── integration_tests__integration__redis__entity_cache_basic-2.snap │ │ ├── integration_tests__integration__redis__entity_cache_basic-3.snap │ │ ├── integration_tests__integration__redis__entity_cache_basic-4.snap │ │ ├── integration_tests__integration__redis__entity_cache_basic-5.snap │ │ ├── integration_tests__integration__redis__entity_cache_basic.snap │ │ ├── integration_tests__integration__redis__entity_cache_with_nested_field_set-2.snap │ │ ├── integration_tests__integration__redis__entity_cache_with_nested_field_set-3.snap │ │ ├── integration_tests__integration__redis__entity_cache_with_nested_field_set-4.snap │ │ ├── integration_tests__integration__redis__entity_cache_with_nested_field_set-5.snap │ │ ├── integration_tests__integration__redis__entity_cache_with_nested_field_set.snap │ │ ├── integration_tests__integration__redis__query_planner_cache.snap │ │ ├── integration_tests__integration__traffic_shaping__connector_rate_limit-2.snap │ │ ├── integration_tests__integration__traffic_shaping__connector_rate_limit.snap │ │ ├── integration_tests__integration__traffic_shaping__connector_timeout.snap │ │ ├── integration_tests__integration__traffic_shaping__router_rate_limit-2.snap │ │ ├── integration_tests__integration__traffic_shaping__router_rate_limit.snap │ │ ├── integration_tests__integration__traffic_shaping__router_timeout.snap │ │ ├── integration_tests__integration__traffic_shaping__subgraph_rate_limit-2.snap │ │ ├── integration_tests__integration__traffic_shaping__subgraph_rate_limit.snap │ │ ├── integration_tests__integration__traffic_shaping__subgraph_timeout.snap │ │ ├── integration_tests__integration__type_conditions__type_conditions_disabled.snap │ │ ├── integration_tests__integration__type_conditions__type_conditions_enabled.snap │ │ ├── integration_tests__integration__type_conditions__type_conditions_enabled_generate_query_fragments.snap │ │ ├── integration_tests__integration__type_conditions__type_conditions_enabled_list_of_list.snap │ │ ├── integration_tests__integration__type_conditions__type_conditions_enabled_list_of_list_of_list.snap │ │ └── integration_tests__integration__type_conditions__type_conditions_enabled_shouldnt_make_article_fetch.snap │ ├── subgraph_response.rs │ ├── subscription.rs │ ├── supergraph.rs │ ├── telemetry │ │ ├── datadog.rs │ │ ├── events.rs │ │ ├── fixtures │ │ │ ├── datadog.router.yaml │ │ │ ├── datadog_agent_sampling_disabled.router.yaml │ │ │ ├── datadog_agent_sampling_disabled_0.router.yaml │ │ │ ├── datadog_agent_sampling_disabled_1.router.yaml │ │ │ ├── datadog_default_span_names.router.yaml │ │ │ ├── datadog_header_propagator_override.router.yaml │ │ │ ├── datadog_no_parent_sampler.router.yaml │ │ │ ├── datadog_no_sample.router.yaml │ │ │ ├── datadog_override_span_names.router.yaml │ │ │ ├── datadog_override_span_names_late.router.yaml │ │ │ ├── datadog_parent_sampler_very_small.router.yaml │ │ │ ├── datadog_parent_sampler_very_small_no_parent.router.yaml │ │ │ ├── datadog_parent_sampler_very_small_no_parent_no_agent_sampling.router.yaml │ │ │ ├── datadog_parent_sampler_very_small_parent_no_agent_sampling.router.yaml │ │ │ ├── datadog_resource_mapping_default.router.yaml │ │ │ ├── datadog_resource_mapping_override.router.yaml │ │ │ ├── deprecated_spans.router.yaml │ │ │ ├── disable_span_metrics.router.yaml │ │ │ ├── graphql.router.yaml │ │ │ ├── json.router.yaml │ │ │ ├── json.sampler_off.router.yaml │ │ │ ├── json.span_attributes.router.yaml │ │ │ ├── json.uuid.router.yaml │ │ │ ├── no-telemetry.router.yaml │ │ │ ├── otlp.router.yaml │ │ │ ├── otlp_datadog_agent_no_sample.router.yaml │ │ │ ├── otlp_datadog_agent_sample.router.yaml │ │ │ ├── otlp_datadog_agent_sample_no_sample.router.yaml │ │ │ ├── otlp_datadog_propagation.router.yaml │ │ │ ├── otlp_datadog_propagation_no_agent.router.yaml │ │ │ ├── otlp_datadog_propagation_no_parent_sampler.router.yaml │ │ │ ├── otlp_datadog_request_with_zipkin_propagator.router.yaml │ │ │ ├── otlp_invalid_endpoint.router.yaml │ │ │ ├── otlp_no_parent_sampler.router.yaml │ │ │ ├── otlp_override_client_name.router.yaml │ │ │ ├── otlp_parent_sampler_very_small_no_parent_no_agent_sampling.router.yaml │ │ │ ├── override_client_name.rhai │ │ │ ├── prometheus.router.yaml │ │ │ ├── subgraph_auth.router.yaml │ │ │ ├── text.router.yaml │ │ │ ├── text.sampler_off.router.yaml │ │ │ ├── text.uuid.router.yaml │ │ │ ├── trace_id_via_header.router.yaml │ │ │ └── zipkin.router.yaml │ │ ├── logging.rs │ │ ├── metrics.rs │ │ ├── mod.rs │ │ ├── otlp.rs │ │ ├── propagation.rs │ │ ├── verifier.rs │ │ └── zipkin.rs │ ├── traffic_shaping.rs │ ├── typename.rs │ └── validation.rs │ ├── integration_tests.rs │ ├── samples │ ├── README.md │ ├── basic │ │ └── interface-object │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── plan.json │ │ │ └── supergraph.graphql │ ├── core │ │ ├── defer │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── plan.json │ │ │ └── supergraph.graphql │ │ ├── query1 │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── plan.json │ │ │ └── supergraph.graphql │ │ └── query2 │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── plan.json │ │ │ └── supergraph.graphql │ └── enterprise │ │ ├── connectors-debugging │ │ ├── README.md │ │ ├── configuration.yaml │ │ ├── http_snapshots.json │ │ ├── plan.json │ │ ├── supergraph.graphql │ │ └── supergraph.yaml │ │ ├── connectors-defer │ │ ├── README.md │ │ ├── configuration.yaml │ │ ├── http_snapshots.json │ │ ├── plan.json │ │ ├── supergraph.graphql │ │ └── supergraph.yaml │ │ ├── connectors-demand-control │ │ ├── README.md │ │ ├── configuration.yaml │ │ ├── http_snapshots.json │ │ ├── plan.json │ │ ├── supergraph.graphql │ │ └── supergraph.yaml │ │ ├── connectors-pqs │ │ ├── README.md │ │ ├── configuration.yaml │ │ ├── http_snapshots.json │ │ ├── manifest.json │ │ ├── plan.json │ │ ├── supergraph.graphql │ │ └── supergraph.yaml │ │ ├── connectors │ │ ├── README.md │ │ ├── configuration.yaml │ │ ├── http_snapshots.json │ │ ├── plan.json │ │ └── supergraph.graphql │ │ ├── entity-cache │ │ ├── defer │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── plan.json │ │ │ └── supergraph.graphql │ │ ├── invalidation-entity-key │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── plan.json │ │ │ └── supergraph.graphql │ │ ├── invalidation-subgraph-name │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── plan.json │ │ │ └── supergraph.graphql │ │ ├── invalidation-subgraph-type │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── plan.json │ │ │ └── supergraph.graphql │ │ └── private │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── plan.json │ │ │ ├── private.rhai │ │ │ └── supergraph.graphql │ │ ├── persisted-queries │ │ └── basic │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── persisted-query-manifest.json │ │ │ ├── plan.yaml │ │ │ ├── rhai │ │ │ └── main.rhai │ │ │ └── supergraph.graphql │ │ ├── progressive-override │ │ ├── basic │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── configuration2.yaml │ │ │ ├── plan.json │ │ │ ├── rhai │ │ │ │ └── main.rhai │ │ │ └── supergraph.graphql │ │ └── warmup │ │ │ ├── README.md │ │ │ ├── configuration.yaml │ │ │ ├── configuration2.yaml │ │ │ ├── plan.json │ │ │ ├── rhai │ │ │ └── main.rhai │ │ │ └── supergraph.graphql │ │ └── query-planning-redis │ │ ├── README.md │ │ ├── configuration.yaml │ │ ├── plan.json │ │ └── supergraph.graphql │ ├── samples_tests.rs │ ├── set_context.rs │ ├── snapshots │ ├── apollo_otel_traces__batch_send_header-2.snap │ ├── apollo_otel_traces__batch_send_header.snap │ ├── apollo_otel_traces__batch_trace_id-2.snap │ ├── apollo_otel_traces__batch_trace_id.snap │ ├── apollo_otel_traces__client_name-2.snap │ ├── apollo_otel_traces__client_name.snap │ ├── apollo_otel_traces__client_version-2.snap │ ├── apollo_otel_traces__client_version.snap │ ├── apollo_otel_traces__condition_else-2.snap │ ├── apollo_otel_traces__condition_else.snap │ ├── apollo_otel_traces__condition_if-2.snap │ ├── apollo_otel_traces__condition_if.snap │ ├── apollo_otel_traces__connector-2.snap │ ├── apollo_otel_traces__connector.snap │ ├── apollo_otel_traces__connector_error-2.snap │ ├── apollo_otel_traces__connector_error.snap │ ├── apollo_otel_traces__non_defer-2.snap │ ├── apollo_otel_traces__non_defer.snap │ ├── apollo_otel_traces__send_header-2.snap │ ├── apollo_otel_traces__send_header.snap │ ├── apollo_otel_traces__send_variable_value-2.snap │ ├── apollo_otel_traces__send_variable_value.snap │ ├── apollo_otel_traces__trace_id-2.snap │ ├── apollo_otel_traces__trace_id.snap │ ├── apollo_reports__batch_send_header-2.snap │ ├── apollo_reports__batch_send_header.snap │ ├── apollo_reports__batch_trace_id-2.snap │ ├── apollo_reports__batch_trace_id.snap │ ├── apollo_reports__client_name-2.snap │ ├── apollo_reports__client_name.snap │ ├── apollo_reports__client_version-2.snap │ ├── apollo_reports__client_version.snap │ ├── apollo_reports__condition_else-2.snap │ ├── apollo_reports__condition_else.snap │ ├── apollo_reports__condition_if-2.snap │ ├── apollo_reports__condition_if.snap │ ├── apollo_reports__demand_control_stats.snap │ ├── apollo_reports__demand_control_trace-2.snap │ ├── apollo_reports__demand_control_trace.snap │ ├── apollo_reports__demand_control_trace_batched-2.snap │ ├── apollo_reports__demand_control_trace_batched.snap │ ├── apollo_reports__features_disabled.snap │ ├── apollo_reports__features_enabled.snap │ ├── apollo_reports__new_field_stats.snap │ ├── apollo_reports__non_defer-2.snap │ ├── apollo_reports__non_defer.snap │ ├── apollo_reports__send_header-2.snap │ ├── apollo_reports__send_header.snap │ ├── apollo_reports__send_variable_value-2.snap │ ├── apollo_reports__send_variable_value.snap │ ├── apollo_reports__stats.snap │ ├── apollo_reports__stats_mocked.snap │ ├── apollo_reports__trace_id-2.snap │ ├── apollo_reports__trace_id.snap │ ├── integration_tests__defer_default_variable-2.snap │ ├── integration_tests__defer_default_variable-3.snap │ ├── integration_tests__defer_default_variable.snap │ ├── integration_tests__defer_empty_primary_response-2.snap │ ├── integration_tests__defer_empty_primary_response.snap │ ├── integration_tests__defer_path-2.snap │ ├── integration_tests__defer_path.snap │ ├── integration_tests__defer_path_in_array-2.snap │ ├── integration_tests__defer_path_in_array.snap │ ├── integration_tests__defer_path_with_disabled_config.snap │ ├── integration_tests__defer_query_without_accept.snap │ ├── integration_tests__include_if_works.snap │ ├── integration_tests__normal_query_with_defer_accept_header.snap │ ├── integration_tests__starstuff_supergraph_is_valid.snap │ ├── integration_tests__validation_errors_from_rust.snap │ ├── set_context__set_context.snap │ ├── set_context__set_context_dependent_fetch_failure.snap │ ├── set_context__set_context_dependent_fetch_failure_rust_qp.snap │ ├── set_context__set_context_list.snap │ ├── set_context__set_context_list_of_lists.snap │ ├── set_context__set_context_list_of_lists_rust_qp.snap │ ├── set_context__set_context_list_rust_qp.snap │ ├── set_context__set_context_no_typenames.snap │ ├── set_context__set_context_no_typenames_rust_qp.snap │ ├── set_context__set_context_rust_qp.snap │ ├── set_context__set_context_type_mismatch.snap │ ├── set_context__set_context_type_mismatch_rust_qp.snap │ ├── set_context__set_context_union.snap │ ├── set_context__set_context_union_rust_qp.snap │ ├── set_context__set_context_unrelated_fetch_failure.snap │ ├── set_context__set_context_unrelated_fetch_failure_rust_qp.snap │ ├── set_context__set_context_with_null.snap │ ├── set_context__set_context_with_null_rust_qp.snap │ ├── type_conditions___test_type_conditions_disabled.snap │ ├── type_conditions___test_type_conditions_enabled.snap │ ├── type_conditions___test_type_conditions_enabled_generate_query_fragments.snap │ ├── type_conditions___test_type_conditions_enabled_list_of_list.snap │ ├── type_conditions___test_type_conditions_enabled_list_of_list_of_list.snap │ └── type_conditions___test_type_conditions_enabled_shouldnt_make_article_fetch.snap │ ├── telemetry_resource_tests.rs │ ├── tracing_common │ └── mod.rs │ └── type_conditions.rs ├── deny.toml ├── dev-docs ├── BACKPRESSURE_REVIEW_NOTES.md ├── HYPER_1.0_REVIEW_NOTES.md ├── HYPER_1.0_UPDATE.md ├── decision-records │ ├── customization.md │ ├── extend-plugin-init.md │ ├── query_deduplication.tla │ ├── telemetry.md │ ├── template.md │ └── unstable-plugins.md ├── layer-inventory.md ├── logging.md ├── metrics.md ├── mock_subgraphs_plugin.md ├── record-replay.md ├── telemetry-selectors.md └── yaml-design-guidance.md ├── docker-compose.yml ├── dockerfiles ├── Dockerfile.router ├── diy │ ├── build_docker_image.sh │ └── dockerfiles │ │ └── Dockerfile.repo ├── docker-compose-redis.yml └── router.yaml ├── docs ├── README.md ├── shared │ ├── batch-processor-preamble.mdx │ ├── batch-processor-ref.mdx │ ├── config │ │ ├── apq.mdx │ │ ├── authentication.mdx │ │ ├── authorization.mdx │ │ ├── batching.mdx │ │ ├── connectors.mdx │ │ ├── coprocessor.mdx │ │ ├── cors.mdx │ │ ├── csrf.mdx │ │ ├── demand_control.mdx │ │ ├── experimental_chaos.mdx │ │ ├── experimental_type_conditioned_fetching.mdx │ │ ├── fleet_detector.mdx │ │ ├── forbid_mutations.mdx │ │ ├── headers.mdx │ │ ├── health_check.mdx │ │ ├── homepage.mdx │ │ ├── include_subgraph_errors.mdx │ │ ├── license_enforcement.mdx │ │ ├── limits.mdx │ │ ├── override_subgraph_url.mdx │ │ ├── persisted_queries.mdx │ │ ├── plugins.mdx │ │ ├── preview_entity_cache.mdx │ │ ├── preview_file_uploads.mdx │ │ ├── progressive_override.mdx │ │ ├── rhai.mdx │ │ ├── sandbox.mdx │ │ ├── subscription.mdx │ │ ├── supergraph.mdx │ │ ├── telemetry.mdx │ │ ├── tls.mdx │ │ └── traffic_shaping.mdx │ ├── coproc-typical-config.mdx │ ├── diagrams │ │ ├── federation-architecture.mdx │ │ └── router-request-lifecycle-overview.mdx │ ├── elastic-notice.mdx │ ├── helm-show-router-output.mdx │ ├── k8s-manual-config.mdx │ ├── native-plugin-notice.mdx │ ├── obtain-graph-api-key.mdx │ ├── redis-tls.mdx │ ├── register-federated-cli.mdx │ ├── router-config-properties-table.mdx │ ├── router-lifecycle-services.mdx │ ├── router-yaml-complete.mdx │ └── telemetry-performance.mdx └── source │ ├── 404.md │ ├── config.json │ ├── images │ ├── as-landing-page-production.jpg │ ├── as-landing-page.jpg │ ├── cloud-dedicated │ │ ├── add-a-subgraph.jpg │ │ ├── create-new-graph.jpg │ │ ├── create-resource-share-final.jpg │ │ ├── delete-network-associations.jpg │ │ ├── delete-resource-share.jpg │ │ ├── graphos-service.jpg │ │ ├── http-listener.jpg │ │ ├── insights-page.jpg │ │ ├── manage-capacity.jpg │ │ ├── managed-permissions.jpg │ │ ├── register-targets.jpg │ │ ├── request-rate.jpg │ │ ├── resource-principal.jpg │ │ ├── resource-selection.jpg │ │ ├── resource-share-summary.jpg │ │ ├── service-identifiers.jpg │ │ ├── service-rules.jpg │ │ ├── target-group-configuration.jpg │ │ ├── vpc-lattice-access-logs.png │ │ ├── vpc-lattice-metrics.png │ │ └── vpc-lattice-routing.png │ ├── demand-control-example-cost-result.png │ ├── demand-control-example-histogram.png │ ├── demand-control-example-list-lengths.svg │ ├── demand-control-example-updated-cost-result.png │ ├── demand-control-example-updated-costs.png │ ├── get-started │ │ ├── connector-dark.svg │ │ ├── connector.svg │ │ ├── qp-dark.svg │ │ ├── qp.svg │ │ ├── super-routing-1-dark.svg │ │ ├── super-routing-1.svg │ │ ├── super-routing-2-dark.svg │ │ ├── super-routing-2.svg │ │ ├── super-routing-3-dark.svg │ │ └── super-routing-3.svg │ ├── initiating-endpoint.jpg │ ├── router-quickstart-sandbox.jpg │ ├── router │ │ ├── cloud-router-configuration.jpg │ │ ├── cloud-router-details.jpg │ │ ├── cloud-router-region-ord.jpg │ │ ├── datadog-apm-ops-example.png │ │ └── router-endpoint.jpg │ ├── sandbox.jpg │ └── studio-trace.jpg │ └── routing │ ├── about-v2.mdx │ ├── changelog.mdx │ ├── cloud │ ├── aws-migration.mdx │ ├── configuration.mdx │ ├── custom-domains.mdx │ ├── dedicated-quickstart.mdx │ ├── dedicated.mdx │ ├── index.mdx │ ├── lattice-configuration.mdx │ ├── lattice-management.mdx │ ├── lattice-troubleshooting.mdx │ ├── migrate-to-dedicated.mdx │ ├── secure-subgraphs.mdx │ ├── serverless.mdx │ ├── subscriptions.mdx │ └── throughput-guide.mdx │ ├── configuration │ ├── cli.mdx │ ├── envvars.mdx │ ├── overview.mdx │ └── yaml.mdx │ ├── customization │ ├── coprocessor.mdx │ ├── coprocessor │ │ ├── index.mdx │ │ └── reference.mdx │ ├── custom-binary.mdx │ ├── native-plugins.mdx │ ├── overview.mdx │ └── rhai │ │ ├── index.mdx │ │ └── reference.mdx │ ├── errors.mdx │ ├── federation-version-support.mdx │ ├── get-started.mdx │ ├── graphos-features.mdx │ ├── graphos-reporting.mdx │ ├── guides │ └── request-format.mdx │ ├── header-propagation.mdx │ ├── license.mdx │ ├── migration │ └── from-gateway.mdx │ ├── observability │ ├── client-id-enforcement.mdx │ ├── debugging-client-requests.mdx │ ├── debugging-subgraph-requests.mdx │ ├── federated-trace-data.mdx │ ├── index.mdx │ ├── otel-traces-to-prometheus.mdx │ ├── otel.mdx │ ├── subgraph-error-inclusion.mdx │ └── telemetry │ │ ├── index.mdx │ │ ├── instrumentation │ │ ├── conditions.mdx │ │ ├── events.mdx │ │ ├── instruments.mdx │ │ ├── selectors.mdx │ │ ├── spans.mdx │ │ ├── standard-attributes.mdx │ │ └── standard-instruments.mdx │ │ ├── log-exporters │ │ ├── overview.mdx │ │ └── stdout.mdx │ │ ├── metrics-exporters │ │ ├── datadog.mdx │ │ ├── dynatrace.mdx │ │ ├── new-relic.mdx │ │ ├── otlp.mdx │ │ ├── overview.mdx │ │ └── prometheus.mdx │ │ └── trace-exporters │ │ ├── datadog.mdx │ │ ├── dynatrace.mdx │ │ ├── jaeger.mdx │ │ ├── new-relic.mdx │ │ ├── otlp.mdx │ │ ├── overview.mdx │ │ └── zipkin.mdx │ ├── operations │ ├── defer.mdx │ ├── file-upload.mdx │ └── subscriptions │ │ ├── api-gateway.mdx │ │ ├── callback-protocol.mdx │ │ ├── configuration.mdx │ │ ├── multipart-protocol.mdx │ │ └── overview.mdx │ ├── performance │ ├── caching │ │ ├── distributed.mdx │ │ ├── entity.mdx │ │ ├── in-memory.mdx │ │ └── index.mdx │ ├── query-batching.mdx │ └── traffic-shaping.mdx │ ├── query-planning │ ├── native-query-planner.mdx │ └── query-planning-best-practices.mdx │ ├── request-lifecycle.mdx │ ├── router-api-gateway-comparison.mdx │ ├── security │ ├── authorization-overview.mdx │ ├── authorization.mdx │ ├── cors.mdx │ ├── csrf.mdx │ ├── demand-control.mdx │ ├── index.mdx │ ├── jwt.mdx │ ├── persisted-queries.mdx │ ├── request-limits.mdx │ ├── router-authentication.mdx │ ├── subgraph-authentication.mdx │ └── tls.mdx │ ├── self-hosted │ ├── containerization │ │ ├── aws.mdx │ │ ├── azure.mdx │ │ ├── docker.mdx │ │ ├── gcp.mdx │ │ ├── index.mdx │ │ ├── kubernetes.mdx │ │ └── optimize-build.mdx │ ├── health-checks.mdx │ ├── index.mdx │ ├── resource-estimator.mdx │ └── resource-management.mdx │ ├── upgrade │ ├── from-router-v0.mdx │ └── from-router-v1.mdx │ └── uplink.mdx ├── examples ├── README.md ├── add-timestamp-header │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── add_timestamp_header.rhai │ │ └── main.rs ├── async-auth │ └── rust │ │ ├── .skipconfigvalidation │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── allowedClientIds.json │ │ ├── router.yaml │ │ └── src │ │ ├── allow_client_id_from_file.rs │ │ └── main.rs ├── cache-control │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── cache_control.rhai │ │ └── main.rs ├── context │ └── rust │ │ ├── .skipconfigvalidation │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── context_data.rs │ │ └── main.rs ├── cookies-to-headers │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── cookies_to_headers.rhai │ │ └── main.rs ├── coprocessor-override-launchdarkly │ ├── .env │ ├── .gitignore │ ├── README.md │ ├── package-lock.json │ ├── package.json │ ├── router.example.yaml │ ├── src │ │ ├── index.ts │ │ └── launchDarkly.ts │ └── tsconfig.json ├── coprocessor-subgraph │ ├── nodejs │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── router.yaml │ │ └── src │ │ │ └── index.js │ └── rust │ │ ├── .skipconfigvalidation │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── echo_co_processor.rs │ │ └── main.rs ├── coprocessor-surrogate-cache-key │ ├── README.md │ └── nodejs │ │ ├── .gitignore │ │ ├── README.md │ │ ├── package.json │ │ ├── router.yaml │ │ └── src │ │ └── index.js ├── coprocessor │ ├── README.md │ └── router.yaml ├── cors-and-csrf │ └── custom-headers.router.yaml ├── custom-global-allocator │ ├── .gitignore │ ├── Cargo.toml │ └── src │ │ └── main.rs ├── data-response-mutate │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── main.rs │ │ └── rhai_data_response_mutate.rhai ├── error-response-mutate │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── main.rs │ │ └── rhai_error_response_mutate.rhai ├── forbid-anonymous-operations │ ├── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ │ ├── forbid_anonymous_operations.rhai │ │ │ └── main.rs │ └── rust │ │ ├── .skipconfigvalidation │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── forbid_anonymous_operations.rs │ │ └── main.rs ├── forbid-mutations │ ├── README.md │ └── router.yaml ├── graphql │ ├── README.md │ ├── local.graphql │ ├── supergraph-fed1.graphql │ └── supergraph.graphql ├── header-manipulation │ ├── README.md │ └── router.yaml ├── hello-world │ └── rust │ │ ├── .skipconfigvalidation │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── hello_world.rs │ │ └── main.rs ├── jwt-claims │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── jwks.json │ │ ├── router.yaml │ │ └── src │ │ ├── jwt_claims.rhai │ │ └── main.rs ├── logging │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── main.rs │ │ └── rhai_logging.rhai ├── op-name-to-header │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── main.rs │ │ └── op_name_to_header.rhai ├── persisted-queries │ ├── additive_pq.yaml │ ├── pq_log_unknown.yaml │ ├── safelist_pq.yaml │ └── safelist_pq_require_id.yaml ├── status-code-propagation │ └── rust │ │ ├── .skipconfigvalidation │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── main.rs │ │ └── propagate_status_code.rs ├── subgraph-request-log │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── main.rs │ │ └── rhai_subgraph_request_log.rhai ├── supergraph-sdl │ └── rust │ │ ├── .skipconfigvalidation │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── main.rs │ │ └── supergraph_sdl.rs ├── surrogate-cache-key │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── main.rs │ │ └── rhai_surrogate_cache_key.rhai ├── telemetry │ ├── README.md │ ├── datadog.router.yaml │ ├── otlp.router.yaml │ ├── zipkin-agent.router.yaml │ └── zipkin-collector.router.yaml ├── throw-error │ └── rhai │ │ ├── Cargo.toml │ │ ├── README.md │ │ ├── router.yaml │ │ └── src │ │ ├── main.rs │ │ └── rhai_throw_error.rhai └── unix-sockets │ ├── .unixonly │ ├── README.md │ └── router_unix.yaml ├── fuzz ├── .gitignore ├── Cargo.toml ├── README.md ├── examples │ └── usage_reporting_router.rs ├── fuzz_targets │ ├── connector_selection_parse.rs │ ├── invariant_router.rs │ ├── router.rs │ └── router_errors.rs ├── router.yaml ├── src │ └── lib.rs └── subgraph │ ├── .gitignore │ ├── Cargo.toml │ ├── api.graphql │ ├── src │ ├── main.rs │ └── model.rs │ └── supergraph.graphql ├── helm └── chart │ └── router │ ├── .helmignore │ ├── Chart.yaml │ ├── README.md │ ├── README.md.gotmpl │ ├── templates │ ├── NOTES.txt │ ├── _helpers.tpl │ ├── configmap.yaml │ ├── deployment.yaml │ ├── hpa.yaml │ ├── ingress.yaml │ ├── pdb.yaml │ ├── secret.yaml │ ├── service.yaml │ ├── serviceaccount.yaml │ ├── serviceentry.yaml │ ├── servicemonitor.yaml │ ├── supergraph-cm.yaml │ ├── tests │ │ └── test-connection.yaml │ └── virtualservice.yaml │ └── values.yaml ├── licenses.html ├── macos-entitlements.plist ├── renovate.json5 ├── rust-toolchain.toml ├── scripts ├── install.sh └── public_items.sh └── xtask ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── README.md └── src ├── commands ├── all.rs ├── changeset │ ├── matching_pull_request.graphql │ ├── matching_pull_request.rs │ ├── mod.rs │ ├── scalars.rs │ └── snapshots │ │ ├── xtask__commands__changeset__tests__it_templatizes_with_multiple_issues_in_title.snap │ │ ├── xtask__commands__changeset__tests__it_templatizes_with_multiple_issues_in_title_and_multiple_prs_in_footer.snap │ │ ├── xtask__commands__changeset__tests__it_templatizes_with_multiple_prs_in_footer.snap │ │ ├── xtask__commands__changeset__tests__it_templatizes_with_neither_issues_or_prs.snap │ │ ├── xtask__commands__changeset__tests__it_templatizes_with_prs_in_title_when_empty_issues.snap │ │ └── xtask__commands__changeset__tests__it_templatizes_without_prs_in_title_when_issues_present.snap ├── compliance.rs ├── dev.rs ├── dist.rs ├── flame.rs ├── licenses.rs ├── lint.rs ├── mod.rs ├── package │ ├── macos.rs │ └── mod.rs ├── release.rs └── test.rs ├── federation_demo.rs ├── lib.rs └── main.rs /.cargo/config.toml: -------------------------------------------------------------------------------- 1 | [alias] 2 | xtask = "run --locked --package xtask --manifest-path xtask/Cargo.toml --" 3 | fed = "run -p apollo-federation-cli --" 4 | 5 | [profile.profiling] 6 | inherits = "release" 7 | debug = true 8 | -------------------------------------------------------------------------------- /.changesets/maint_extended_errors_telemetry.md: -------------------------------------------------------------------------------- 1 | ### Measure `preview_extended_error_metrics` in Apollo config telemetry. ([PR #7597](https://github.com/apollographql/router/pull/7597)) 2 | 3 | By [@timbotnik](https://github.com/timbotnik) in https://github.com/apollographql/router/pull/7597 4 | -------------------------------------------------------------------------------- /.config/mise/config.ci-mac.toml: -------------------------------------------------------------------------------- 1 | [tools] 2 | # renovate-automation: rustc version 3 | rust = { version = "1.85.1", targets = "x86_64-apple-darwin,aarch64-apple-darwin", profile = "default", components = "llvm-tools" } 4 | "cargo:cargo-llvm-cov" = "0.6.16" 5 | "ubi:codecov/codecov-cli" = "10.4.0" 6 | -------------------------------------------------------------------------------- /.config/mise/config.ci.toml: -------------------------------------------------------------------------------- 1 | [tools] 2 | # Temporarily disable cargo-fuzz https://github.com/apollographql/router/pull/7488 3 | # "cargo:cargo-fuzz" = "0.12.0" 4 | kubeconform = "0.6.7" 5 | -------------------------------------------------------------------------------- /.config/mise/config.windows.toml: -------------------------------------------------------------------------------- 1 | [tools] 2 | cmake = "3.31.1" 3 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # https://github.com/github/linguist/blob/master/docs/overrides.md 2 | 3 | licenses.html linguist-vendored 4 | Cargo.lock linguist-generated=false 5 | -------------------------------------------------------------------------------- /.githooks/prepare-commit-msg: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | firstLine=$(head -n1 $1) 4 | 5 | if [ -z "$firstLine" ] ;then 6 | commitTemplate=$(cat `git rev-parse --git-dir`/../.gitmessage) 7 | echo -e "$commitTemplate\n $(cat $1)" > $1 8 | fi 9 | -------------------------------------------------------------------------------- /.gitmessage: -------------------------------------------------------------------------------- 1 | # Title: Summary, imperative, start upper case, don't end with a period 2 | # No more than 50 chars. #### 50 chars is here: # 3 | 4 | # Replace 'xxx' with the github issue ID. 5 | resolves #xxx 6 | 7 | # Body: Explain *what* and *why* (not *how*). 8 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/.gitmodules -------------------------------------------------------------------------------- /.ignore: -------------------------------------------------------------------------------- 1 | router_errors.txt 2 | -------------------------------------------------------------------------------- /apollo-federation/.cargo/config.toml: -------------------------------------------------------------------------------- 1 | [alias] 2 | cli = "run -p apollo-federation-cli --" 3 | 4 | # circle seems to install cargo packages via ssh:// rather than https:// 5 | [net] 6 | git-fetch-with-cli = true 7 | -------------------------------------------------------------------------------- /apollo-federation/.github/renovate.json5: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://docs.renovatebot.com/renovate-schema.json" 3 | } 4 | -------------------------------------------------------------------------------- /apollo-federation/cli/fixtures/queries/topproducts.graphql: -------------------------------------------------------------------------------- 1 | query TopProducts($first: Int) { 2 | topProducts(first: $first) { 3 | upc 4 | name 5 | reviews { 6 | id 7 | product { name } 8 | author { id name } 9 | } 10 | } 11 | } -------------------------------------------------------------------------------- /apollo-federation/cli/fixtures/queries/topproducts2.graphql: -------------------------------------------------------------------------------- 1 | query TopProduct2($first: Int) { 2 | topProducts(first: $first) { 3 | upc 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /apollo-federation/src/connectors/expand/tests/snapshots/connectors@directives.graphql.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-federation/src/connectors/expand/tests/mod.rs 3 | expression: connectors.by_service_name 4 | input_file: apollo-federation/src/connectors/expand/tests/schemas/expand/directives.graphql 5 | --- 6 | {} 7 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/http.rs: -------------------------------------------------------------------------------- 1 | pub(super) mod headers; 2 | pub(super) mod url; 3 | pub(super) mod url_properties; 4 | pub(super) use url_properties::UrlProperties; 5 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/snapshots/validation_tests@batch__batch_alias_happy_path.graphql.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-federation/src/connectors/validation/mod.rs 3 | expression: "format!(\"{:#?}\", result.errors)" 4 | input_file: apollo-federation/src/connectors/validation/test_data/batch/batch_alias_happy_path.graphql 5 | --- 6 | [] 7 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/snapshots/validation_tests@keys_and_entities__valid__basic_implicit_key.graphql.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-federation/src/connectors/validation/mod.rs 3 | expression: "format!(\"{:#?}\", errors)" 4 | input_file: apollo-federation/src/connectors/validation/test_data/keys_and_entities/valid/basic_implicit_key.graphql 5 | --- 6 | [] 7 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/snapshots/validation_tests@transformed__upgrade_0.1.graphql.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-federation/src/connectors/validation/mod.rs 3 | expression: "format!(\"{:#?}\", result.errors)" 4 | input_file: apollo-federation/src/connectors/validation/test_data/transformed/upgrade_0.1.graphql 5 | --- 6 | [] 7 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/snapshots/validation_tests@uri_templates__valid_connect_absolute_url.graphql.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-federation/src/connectors/validation/mod.rs 3 | expression: "format!(\"{:#?}\", errors)" 4 | input_file: apollo-federation/src/connectors/validation/test_data/uri_templates/valid_connect_absolute_url.graphql 5 | --- 6 | [] 7 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/snapshots/validation_tests@uri_templates__valid_connect_multiline.graphql.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-federation/src/connectors/validation/mod.rs 3 | expression: "format!(\"{:#?}\", result.errors)" 4 | input_file: apollo-federation/src/connectors/validation/test_data/uri_templates/valid_connect_multiline.graphql 5 | --- 6 | [] 7 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/snapshots/validation_tests@valid_large_body.graphql.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-federation/src/connectors/validation/mod.rs 3 | expression: "format!(\"{:#?}\", result.errors)" 4 | input_file: apollo-federation/src/connectors/validation/test_data/valid_large_body.graphql 5 | --- 6 | [] 7 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/snapshots/validation_tests@valid_no_connect_on_resolvable_key_field.graphql.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-federation/src/connectors/validation/mod.rs 3 | expression: "format!(\"{:#?}\", errors)" 4 | input_file: apollo-federation/src/connectors/validation/test_data/valid_no_connect_on_resolvable_key_field.graphql 5 | --- 6 | [] 7 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/test_data/connect_source_undefined.graphql: -------------------------------------------------------------------------------- 1 | extend schema 2 | @link( 3 | url: "https://specs.apollo.dev/connect/v0.2" 4 | import: ["@connect", "@source"] 5 | ) 6 | 7 | type Query { 8 | resources: [String!]! 9 | @connect(source: "v1", http: { GET: "/resources" }, selection: "$") 10 | } 11 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/test_data/connect_spec_version_error.graphql: -------------------------------------------------------------------------------- 1 | extend schema 2 | @link( 3 | url: "https://specs.apollo.dev/connect/v0.99" 4 | import: ["@connect", "@source"] 5 | ) 6 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/test_data/group_selection_on_scalar.graphql: -------------------------------------------------------------------------------- 1 | extend schema 2 | @link( 3 | url: "https://specs.apollo.dev/connect/v0.2" 4 | import: ["@connect"] 5 | ) 6 | 7 | type Query { 8 | me: User @connect(http: {GET: "http://127.0.0.1/something"}, selection: "id {blah}") 9 | } 10 | 11 | type User { 12 | id: ID! 13 | } 14 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/test_data/invalid_selection_syntax.graphql: -------------------------------------------------------------------------------- 1 | extend schema 2 | @link( 3 | url: "https://specs.apollo.dev/connect/v0.2" 4 | import: ["@connect"] 5 | ) 6 | 7 | type Query { 8 | something: String @connect(http: {GET: "http://127.0.0.1/something"}, selection: "&how") 9 | } -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/test_data/missing_connect_on_mutation_field.graphql: -------------------------------------------------------------------------------- 1 | extend schema 2 | @link( 3 | url: "https://specs.apollo.dev/connect/v0.2" 4 | import: ["@connect", "@source"] 5 | ) 6 | @source(name: "v2", http: { baseURL: "http://127.0.0.1" }) 7 | 8 | type Mutation { 9 | setMessage(message: String): String 10 | } 11 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/test_data/missing_connect_on_query_field.graphql: -------------------------------------------------------------------------------- 1 | extend schema 2 | @link( 3 | url: "https://specs.apollo.dev/connect/v0.2" 4 | import: ["@connect", "@source"] 5 | ) 6 | @source(name: "v2", http: {baseURL: "http://127.0.0.1"}) 7 | 8 | type Query { 9 | resources: [String!]! 10 | } 11 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/test_data/missing_source_import.graphql: -------------------------------------------------------------------------------- 1 | extend schema 2 | @link(url: "https://specs.apollo.dev/connect/v0.2", import: ["@connect"]) 3 | @source(name: "v2", http: { baseURL: "http://127.0.0.1" }) 4 | 5 | type Query { 6 | resources: [String!]! 7 | @connect(source: "v2", http: { GET: "/resources" }, selection: "$") 8 | } 9 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/test_data/renamed_connect_directive.graphql: -------------------------------------------------------------------------------- 1 | extend schema 2 | @link( 3 | url: "https://specs.apollo.dev/connect/v0.2" 4 | import: [{name: "@connect", as: "@data"}, "@source"] 5 | ) 6 | @source(name: "v2", http: {baseURL: "http://127.0.0.1"}) 7 | 8 | type Query { 9 | resources: [String!]! 10 | } 11 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/test_data/uri_templates/invalid_connect_url.graphql: -------------------------------------------------------------------------------- 1 | extend schema 2 | @link(url: "https://specs.apollo.dev/connect/v0.2", import: ["@connect"]) 3 | 4 | type Query { 5 | resources: [String!]! @connect(http: { GET: "127.0.0.1" }, selection: "$") 6 | } 7 | -------------------------------------------------------------------------------- /apollo-federation/src/connectors/validation/test_data/uri_templates/invalid_connect_url_scheme.graphql: -------------------------------------------------------------------------------- 1 | extend schema 2 | @link(url: "https://specs.apollo.dev/connect/v0.2", import: ["@connect"]) 3 | 4 | type Query { 5 | resources: [String!]! 6 | @connect(http: { GET: "file://data.json" }, selection: "$") 7 | } 8 | -------------------------------------------------------------------------------- /apollo-federation/src/merger/mod.rs: -------------------------------------------------------------------------------- 1 | mod error_reporter; 2 | mod hints; 3 | #[path = "merger.rs"] 4 | mod merge; 5 | -------------------------------------------------------------------------------- /apollo-federation/tests/main.rs: -------------------------------------------------------------------------------- 1 | mod api_schema; 2 | mod composition_tests; 3 | mod core_test; 4 | mod extract_subgraphs; 5 | mod query_plan; 6 | mod subgraph; 7 | -------------------------------------------------------------------------------- /apollo-federation/tests/query_plan/mod.rs: -------------------------------------------------------------------------------- 1 | #[macro_use] 2 | mod build_query_plan_support; 3 | mod build_query_plan_tests; 4 | -------------------------------------------------------------------------------- /apollo-federation/tests/subgraph/mod.rs: -------------------------------------------------------------------------------- 1 | mod parse_expand_tests; 2 | mod subgraph_validation_tests; 3 | -------------------------------------------------------------------------------- /apollo-router/benches/deeply_nested/router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 127.0.0.1:44167 3 | limits: 4 | parser_max_recursion: ${env.PARSER_MAX_RECURSION} 5 | include_subgraph_errors: 6 | all: true 7 | headers: 8 | all: 9 | request: 10 | - propagate: 11 | named: fibonacci-iterations 12 | -------------------------------------------------------------------------------- /apollo-router/benches/huge_requests/router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 127.0.0.1:10142 3 | -------------------------------------------------------------------------------- /apollo-router/build/main.rs: -------------------------------------------------------------------------------- 1 | mod studio; 2 | 3 | fn main() -> Result<(), Box> { 4 | studio::main() 5 | } 6 | -------------------------------------------------------------------------------- /apollo-router/examples/.skipconfigvalidation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/apollo-router/examples/.skipconfigvalidation -------------------------------------------------------------------------------- /apollo-router/examples/router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 0.0.0.0:4100 3 | introspection: true 4 | plugins: 5 | experimental.expose_query_plan: true 6 | apollo-test.do_not_execute: true 7 | experimental_graphql_validation_mode: both 8 | sandbox: 9 | enabled: true 10 | homepage: 11 | enabled: false 12 | -------------------------------------------------------------------------------- /apollo-router/feature_discussions.json: -------------------------------------------------------------------------------- 1 | { 2 | "experimental": { 3 | "experimental_response_trace_id": "https://github.com/apollographql/router/discussions/2147" 4 | }, 5 | "preview": { 6 | "preview_entity_cache": "https://github.com/apollographql/router/discussions/4592" 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /apollo-router/rustfmt.toml: -------------------------------------------------------------------------------- 1 | style_edition = "2024" 2 | -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/snapshots/apollo_router__apollo_studio_interop__tests__enums_with_nested_query.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/apollo_studio_interop/tests.rs 3 | expression: "&generated" 4 | --- 5 | referenced_input_fields: {} 6 | referenced_enums: 7 | SomeEnum: 8 | - SOME_VALUE_1 9 | -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/snapshots/apollo_router__apollo_studio_interop__tests__enums_with_nested_query_fragment.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/apollo_studio_interop/tests.rs 3 | expression: "&generated" 4 | --- 5 | referenced_input_fields: {} 6 | referenced_enums: 7 | SomeEnum: 8 | - SOME_VALUE_1 9 | -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/anonymous_mutation.graphql: -------------------------------------------------------------------------------- 1 | mutation { 2 | noInputMutation { 3 | id 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/anonymous_query.graphql: -------------------------------------------------------------------------------- 1 | query { 2 | noInputQuery { 3 | id 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/comma_lower_bound_query.graphql: -------------------------------------------------------------------------------- 1 | query TestCommaLowerBound($arg: String, $slightlyTooLongName1234: String) { 2 | manyArgsQuery(arg1: $arg, arg2: $arg, arg3: $arg, arg4: $slightlyTooLongName1234) { 3 | enumResponse 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/comma_separator_always_query.graphql: -------------------------------------------------------------------------------- 1 | query QueryCommaEdgeCase { 2 | enumInputQuery (anotherStr:"",enumInput:SOME_VALUE_1,stringInput:"") { 3 | enumResponse 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/comma_upper_bound_query.graphql: -------------------------------------------------------------------------------- 1 | query TestCommaUpperBound($arg: String, $slightlyTooLongName12345: String) { 2 | manyArgsQuery(arg1: $arg, arg2: $arg, arg3: $arg, arg4: $slightlyTooLongName12345) { 3 | enumResponse 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/directive_arg_spacing_query.graphql: -------------------------------------------------------------------------------- 1 | query { 2 | basicResponseQuery { 3 | id @withArgs(arg1: "") 4 | id 5 | } 6 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/enums_from_response_complex_response_type.graphql: -------------------------------------------------------------------------------- 1 | query EnumResponseQuery { 2 | enumInputQuery { 3 | enumResponse 4 | } 5 | enumResponseQuery { 6 | list 7 | listOfLists 8 | nestedObject { 9 | singleValue 10 | listOfLists 11 | list 12 | } 13 | singleValue 14 | } 15 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/enums_from_response_with_nested_query.graphql: -------------------------------------------------------------------------------- 1 | query QueryWithNestedQuery { 2 | enumNestedQuery { 3 | nestedQuery(input: SOME_VALUE_1) { 4 | str 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/enums_from_response_with_nested_query_fragment.graphql: -------------------------------------------------------------------------------- 1 | fragment EnumNestedQueryFragment on Query { 2 | enumNestedQuery { 3 | nestedQuery(input: SOME_VALUE_1) { 4 | str 5 | } 6 | } 7 | } 8 | 9 | query QueryWithNestedQuery { 10 | ...EnumNestedQueryFragment 11 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/extended_references_inline_type.graphql: -------------------------------------------------------------------------------- 1 | query InputTypeInlineQuery { 2 | inputTypeQuery(input: { 3 | inputInt: 1, 4 | inputString: "x", 5 | listInput: [], 6 | enumInput: null, 7 | nestedType: { someFloat: 2, someNullableFloat: null } 8 | }) { 9 | enumResponse 10 | } 11 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/extended_references_var_type.graphql: -------------------------------------------------------------------------------- 1 | query InputTypeVariablesQuery($input: InputType!) { 2 | inputTypeQuery(input: $input) { 3 | enumResponse 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/extended_references_var_type.json: -------------------------------------------------------------------------------- 1 | { 2 | "input": { 3 | "inputInt": 1, 4 | "inputString": "x", 5 | "listInput": [], 6 | "enumInput": null, 7 | "nestedType": { 8 | "someFloat": 2, 9 | "someNullableFloat": null 10 | } 11 | } 12 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/mutation_comma_query.graphql: -------------------------------------------------------------------------------- 1 | mutation Test_Mutation_Comma($arg1withalongnamegoeshere012345678: Boolean) { 2 | mutation2(id: "x") { 3 | updateCheckConfiguration(arg1: $arg1withalongnamegoeshere012345678, arg2: false) 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/mutation_space_query.graphql: -------------------------------------------------------------------------------- 1 | mutation Test_Mutation_Space($arg1withalongnamegoeshere0123456789: Boolean) { 2 | mutation2(id: "x") { 3 | updateCheckConfiguration(arg1: $arg1withalongnamegoeshere0123456789, arg2: false) 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/named_query.graphql: -------------------------------------------------------------------------------- 1 | query MyQuery { 2 | noInputQuery { 3 | id 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/operation_arg_always_commas_query.graphql: -------------------------------------------------------------------------------- 1 | query QueryArgLength($enumInputWithAVerrrrrrrrrrrryLongNameSoLineLengthIsOver80: SomeEnum, $enumInputType: EnumInputType) { 2 | enumInputQuery (enumInput:$enumInputWithAVerrrrrrrrrrrryLongNameSoLineLengthIsOver80,inputType:$enumInputType) { 3 | enumResponse 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/operation_with_single_variable_query.graphql: -------------------------------------------------------------------------------- 1 | query QueryWithVar($input_enum: SomeEnum) { 2 | enumInputQuery(enumInput: $input_enum) { 3 | listOfBools 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/root_type_fragment_query.graphql: -------------------------------------------------------------------------------- 1 | query SomeQuery { 2 | ... on Query { 3 | ... { 4 | basicResponseQuery { 5 | id 6 | } 7 | } 8 | } 9 | noInputQuery { 10 | enumResponse 11 | } 12 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/subscription_query.graphql: -------------------------------------------------------------------------------- 1 | subscription { 2 | noInputSubscription { 3 | id 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/apollo_studio_interop/testdata/underscore_query.graphql: -------------------------------------------------------------------------------- 1 | query UnderscoreQuery($arg2_: String, $_arg3_: String) { 2 | underscoreQuery(arg_: "x", _arg2: $arg2_, _arg3_: $_arg3_) { 3 | _ 4 | _name 5 | _name_ 6 | name_ 7 | } 8 | } -------------------------------------------------------------------------------- /apollo-router/src/axum_factory/snapshots/apollo_router__axum_factory__axum_http_server_factory__tests__request_cancel_log@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/axum_factory/axum_http_server_factory.rs 3 | expression: yaml 4 | --- 5 | - fields: {} 6 | level: ERROR 7 | message: "broken pipe: the client closed the connection" 8 | -------------------------------------------------------------------------------- /apollo-router/src/axum_factory/snapshots/apollo_router__axum_factory__axum_http_server_factory__tests__request_cancel_no_log@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/axum_factory/axum_http_server_factory.rs 3 | expression: yaml 4 | --- 5 | [] 6 | -------------------------------------------------------------------------------- /apollo-router/src/axum_factory/testdata/log_on_broken_pipe.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | experimental_log_on_broken_pipe: true 3 | -------------------------------------------------------------------------------- /apollo-router/src/axum_factory/testdata/no_log_on_broken_pipe.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | experimental_log_on_broken_pipe: false 3 | -------------------------------------------------------------------------------- /apollo-router/src/axum_factory/testdata/span_mode_default.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | spans: 4 | default_attribute_requirement_level: required 5 | -------------------------------------------------------------------------------- /apollo-router/src/axum_factory/testdata/span_mode_deprecated.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | spans: 4 | mode: deprecated 5 | -------------------------------------------------------------------------------- /apollo-router/src/axum_factory/testdata/span_mode_spec_compliant.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | spans: 4 | mode: spec_compliant 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0001-telemetry_router_to_supergraph.yaml: -------------------------------------------------------------------------------- 1 | description: telemetry.tracing.trace_config.attributes.router has been renamed to 'supergraph' for consistency 2 | actions: 3 | - type: move 4 | from: telemetry.metrics.common.attributes.router 5 | to: telemetry.metrics.common.attributes.supergraph 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0002-jaeger_scheduled_delay.yaml: -------------------------------------------------------------------------------- 1 | description: telemetry.tracing.jaeger.scheduled_delay moved to telemetry.tracing.jaeger.batch_processor.scheduled_delay 2 | actions: 3 | - type: move 4 | from: telemetry.tracing.jaeger.scheduled_delay 5 | to: telemetry.tracing.jaeger.batch_processor.scheduled_delay 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0003-otlp_timout.yaml: -------------------------------------------------------------------------------- 1 | description: telemetry.tracing.otlp.timeout moved to telemetry.tracing.otlp.batch_processor.max_export_timeout 2 | actions: 3 | - type: move 4 | from: telemetry.tracing.otlp.timeout 5 | to: telemetry.tracing.otlp.batch_processor.max_export_timeout 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0004-defer_support_ga.yaml: -------------------------------------------------------------------------------- 1 | description: supergraph.preview_defer_support moved to supergraph.defer_support 2 | actions: 3 | - type: move 4 | from: supergraph.preview_defer_support 5 | to: supergraph.defer_support 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0005-health_check_snake.yaml: -------------------------------------------------------------------------------- 1 | description: health-check renamed to health_check 2 | actions: 3 | - type: move 4 | from: health-check 5 | to: health_check 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0006-apq.yaml: -------------------------------------------------------------------------------- 1 | description: supergraph.apq moved to apq 2 | actions: 3 | - type: move 4 | from: supergraph.apq 5 | to: apq 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0007-coprocessor_subgraph_url.yaml: -------------------------------------------------------------------------------- 1 | description: coprocessor.subgraph.all.response.uri was removed 2 | actions: 3 | - type: delete 4 | path: coprocessor.subgraph.all.response.uri 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0008-operation-limits-ga.yaml: -------------------------------------------------------------------------------- 1 | description: Operation limits are no longer preview, `preview_operation_limits` is renamed `limits` 2 | actions: 3 | - type: move 4 | from: preview_operation_limits 5 | to: limits 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0009-subscription-enabled.yaml: -------------------------------------------------------------------------------- 1 | description: Add enabled field in subscription 2 | actions: 3 | - type: add 4 | path: subscription 5 | name: enabled 6 | value: true 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0010-auth-jwt.yaml: -------------------------------------------------------------------------------- 1 | description: Move jwt configuration to authentication.router 2 | actions: 3 | - type: move 4 | from: authentication.jwt 5 | to: authentication.router.jwt 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0012-persisted-queries-ga.yaml: -------------------------------------------------------------------------------- 1 | description: Persisted queries are no longer preview, `preview_persisted_queries` is renamed `persisted_queries` 2 | actions: 3 | - type: move 4 | from: preview_persisted_queries 5 | to: persisted_queries 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0014-telemetry_trace_config_common.yaml: -------------------------------------------------------------------------------- 1 | description: telemetry.tracing.trace_config has been renamed to telemetry.tracing.common 2 | actions: 3 | - type: move 4 | from: telemetry.tracing.trace_config 5 | to: telemetry.tracing.common 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0015-telemetry_metrics_resource.yaml: -------------------------------------------------------------------------------- 1 | description: telemetry.metrics.common.resources has been renamed to telemetry.metrics.common.resource 2 | actions: 3 | - type: move 4 | from: telemetry.metrics.common.resources 5 | to: telemetry.metrics.common.resource 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0016-telemetry_tracing_resource.yaml: -------------------------------------------------------------------------------- 1 | description: telemetry.tracing.common.attributes has been renamed to telemetry.tracing.common.resource 2 | actions: 3 | - type: move 4 | from: telemetry.tracing.common.attributes 5 | to: telemetry.tracing.common.resource 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0017-propagation_aws_xray.yaml: -------------------------------------------------------------------------------- 1 | description: telemetry.tracing.propagation.awsxray has been renamed to telemetry.tracing.propagation.aws_xray 2 | actions: 3 | - type: move 4 | from: telemetry.tracing.propagation.awsxray 5 | to: telemetry.tracing.propagation.aws_xray 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0019-authorization-ga.yaml: -------------------------------------------------------------------------------- 1 | description: Authorization is no longer preview, `preview_directives` is renamed `directives` 2 | actions: 3 | - type: move 4 | from: preview_directives 5 | to: directives 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0021-http-max-request-bytes-ga.yaml: -------------------------------------------------------------------------------- 1 | description: HTTP request size limit is no longer experimental, `experimental_http_max_request_bytes` is renamed `http_max_request_bytes` 2 | actions: 3 | - type: move 4 | from: limits.experimental_http_max_request_bytes 5 | to: limits.http_max_request_bytes 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0022-query-planner-cache.yaml: -------------------------------------------------------------------------------- 1 | description: The query plan cache is no longer experimental 2 | actions: 3 | - type: move 4 | from: supergraph.query_planning.experimental_cache 5 | to: supergraph.query_planning.cache 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0023-batching.yaml: -------------------------------------------------------------------------------- 1 | description: Batching is no longer experimental 2 | actions: 3 | - type: move 4 | from: experimental_batching 5 | to: batching 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0024-graphql_validation.yaml: -------------------------------------------------------------------------------- 1 | description: experimental_graphql_validation_mode is no longer supported 2 | actions: 3 | - type: delete 4 | path: experimental_graphql_validation_mode 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0025-entity_cache_preview.yaml: -------------------------------------------------------------------------------- 1 | description: Entity cache preview configuration format is changing 2 | actions: 3 | - type: move 4 | from: preview_entity_cache.subgraphs 5 | to: preview_entity_cache.subgraph.subgraphs 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0026-entity_cache_invalidation_preview.yaml: -------------------------------------------------------------------------------- 1 | description: Entity cache preview configuration format is changing 2 | actions: 3 | - type: move 4 | from: preview_entity_cache.redis 5 | to: preview_entity_cache.subgraph.all.redis 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0026-to_api_schema.yaml: -------------------------------------------------------------------------------- 1 | description: experimental_api_schema_generation_mode is no longer supported 2 | actions: 3 | - type: delete 4 | path: experimental_api_schema_generation_mode 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0030-experimental_introspection_mode.yaml: -------------------------------------------------------------------------------- 1 | description: experimental_introspection_mode was removed 2 | actions: 3 | - type: delete 4 | path: experimental_introspection_mode 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0030-legacy-introspection-caching.yaml: -------------------------------------------------------------------------------- 1 | description: supergraph.query_planning.legacy_introspection_caching was removed 2 | actions: 3 | - type: delete 4 | path: supergraph.query_planning.legacy_introspection_caching 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0031-experimental_reuse_query_fragments.yaml: -------------------------------------------------------------------------------- 1 | description: supergraph.experimental_reuse_query_fragments fragment optimization config is no longer supported and superseded by supergraph.generate_query_fragments 2 | actions: 3 | - type: delete 4 | path: supergraph.experimental_reuse_query_fragments 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0032-experimental_query_planner_mode.yaml: -------------------------------------------------------------------------------- 1 | description: experimental_query_planner_mode config is no longer supported as the legacy query planner was removed 2 | actions: 3 | - type: delete 4 | path: experimental_query_planner_mode 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0033-experimental_retry.yaml: -------------------------------------------------------------------------------- 1 | description: the experimental_retry feature has been removed because it was unused and badly implemented 2 | actions: 3 | - type: delete 4 | path: traffic_shaping.all.experimental_retry 5 | - type: delete 6 | path: traffic_shaping.subgraphs.*.experimental_retry -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0034-experimental_parallelism.yaml: -------------------------------------------------------------------------------- 1 | description: supergraph.query_planning.experimental_parallelism config is no longer supported as a result of the legacy query planner removal 2 | actions: 3 | - type: delete 4 | path: supergraph.query_planning.experimental_parallelism 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0035-preview_connectors.yaml: -------------------------------------------------------------------------------- 1 | description: Apollo Connectors is no longer in preview 2 | actions: 3 | - type: move 4 | from: preview_connectors 5 | to: connectors 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/0037-preview_otlp_error_metrics.yaml: -------------------------------------------------------------------------------- 1 | description: The OTLP error metrics option is now in the preview release stage 2 | actions: 3 | - type: move 4 | from: telemetry.apollo.errors.experimental_otlp_error_metrics 5 | to: telemetry.apollo.errors.preview_extended_error_metrics 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/migrations/2038-ignored-headers-subs-dedup.yaml: -------------------------------------------------------------------------------- 1 | description: "`subscription.enable_deduplication` was a true/false before but now has child properties `enabled` and `ignored_headers`" 2 | actions: 3 | - type: move 4 | from: subscription.enable_deduplication 5 | to: subscription.deduplication.enabled 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/.skipconfigvalidation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/apollo-router/src/configuration/snapshots/.skipconfigvalidation -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__expansion__test__prefixed.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/expansion.rs 3 | expression: value 4 | --- 5 | defaulted: defaulted 6 | expanded: expanded 7 | no_env: defaulted 8 | overridden: overridden 9 | 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__expansion__test__unprefixed.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/expansion.rs 3 | expression: value 4 | --- 5 | defaulted: defaulted 6 | expanded: expanded 7 | no_env: defaulted 8 | overridden: overridden 9 | 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__metrics__test__custom_plugin.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/metrics.rs 3 | expression: "&metrics.non_zero()" 4 | --- 5 | - name: apollo.router.config.custom_plugins 6 | data: 7 | datapoints: 8 | - value: 1 9 | attributes: {} 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__metrics__test__ignore_cloud_router_plugins.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/metrics.rs 3 | expression: "&metrics.non_zero()" 4 | --- 5 | - name: apollo.router.config.custom_plugins 6 | data: 7 | datapoints: 8 | - value: 1 9 | attributes: {} 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__metrics__test__metrics@defer.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/metrics.rs 3 | expression: "&metrics.non_zero()" 4 | --- 5 | - name: apollo.router.config.defer 6 | data: 7 | datapoints: 8 | - value: 1 9 | attributes: {} 10 | 11 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__metrics__test__metrics@jwt.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/metrics.rs 3 | expression: "&metrics.non_zero()" 4 | --- 5 | - name: apollo.router.config.authentication.jwt 6 | data: 7 | datapoints: 8 | - value: 1 9 | attributes: {} 10 | 11 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__metrics__test__metrics@sigv4.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/metrics.rs 3 | expression: "&metrics.non_zero()" 4 | --- 5 | - name: apollo.router.config.authentication.aws.sigv4 6 | data: 7 | datapoints: 8 | - value: 1 9 | attributes: {} 10 | 11 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__default_config_has_defaults.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: "Configuration::default().validated_yaml" 4 | --- 5 | plugins: ~ 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__expansion_failure_missing_variable.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/mod.rs 3 | expression: error.to_string() 4 | --- 5 | could not expand variable: TEST_CONFIG_UNKNOWN_WITH_NO_DEFAULT, environment variable not found 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__expansion_failure_unknown_mode.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/mod.rs 3 | expression: error.to_string() 4 | --- 5 | could not expand variable: unknown.TEST_CONFIG_UNKNOWN_WITH_NO_DEFAULT. Variables must be prefixed with one of 'env' followed by '.' e.g. 'env.' 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@apollo_extended_errors.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | telemetry: 7 | apollo: 8 | errors: 9 | preview_extended_error_metrics: enabled 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@batching.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | batching: 7 | enabled: true 8 | mode: batch_http_link 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@datadog_enabled.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | telemetry: 7 | exporters: 8 | tracing: 9 | datadog: 10 | endpoint: default 11 | enabled: true 12 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@defer_support_ga.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | supergraph: 7 | defer_support: true 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@health-check_to_health_check.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | health_check: 7 | enabled: true 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@http_max_request_bytes.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | limits: 7 | http_max_request_bytes: 4000000 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@jaeger_enabled.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | telemetry: 7 | exporters: 8 | tracing: 9 | otlp: 10 | endpoint: default 11 | enabled: true 12 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@js_api_schema.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | {} 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@legacy_qp.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | supergraph: 7 | query_planning: {} 8 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@minor__health_check.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | health_check: 7 | enabled: true 8 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@operation-limits-preview.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | limits: 7 | parser_max_recursion: 1000 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@parser_recursion.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | limits: 7 | parser_max_recursion: 100 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@persisted-queries-preview.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | persisted_queries: 7 | enabled: true 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@persisted-queries-prewarm-already-object.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | persisted_queries: 7 | enabled: true 8 | experimental_prewarm_query_plan_cache: 9 | on_reload: false 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@persisted-queries-prewarm-false.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | persisted_queries: 7 | enabled: true 8 | experimental_prewarm_query_plan_cache: 9 | on_startup: false 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@persisted-queries-prewarm-true.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | persisted_queries: 7 | enabled: true 8 | experimental_prewarm_query_plan_cache: 9 | on_startup: true 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@query_plan_cache.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | supergraph: 7 | query_planning: 8 | cache: 9 | redis: 10 | urls: [] 11 | 12 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@subscription_enabled.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | subscription: 7 | enabled: true 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@telemetry_attributes.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | telemetry: 7 | exporters: 8 | tracing: 9 | common: 10 | resource: 11 | test: val 12 | 13 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@telemetry_resources.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | telemetry: 7 | exporters: 8 | metrics: 9 | common: 10 | resource: 11 | test: val 12 | 13 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@telemetry_tracing_propagation_awsxray.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | telemetry: 7 | exporters: 8 | tracing: 9 | propagation: 10 | aws_xray: true 11 | 12 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@trace_config.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | telemetry: 7 | exporters: 8 | tracing: 9 | common: 10 | service_name: foo 11 | 12 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_configuration@zipkin_enabled.router.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | telemetry: 7 | exporters: 8 | tracing: 9 | zipkin: 10 | endpoint: default 11 | enabled: true 12 | 13 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/snapshots/apollo_router__configuration__tests__upgrade_old_major_configuration@apollo_extended_errors.yaml.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/configuration/tests.rs 3 | expression: new_config 4 | --- 5 | --- 6 | telemetry: 7 | apollo: 8 | errors: 9 | preview_extended_error_metrics: enabled 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/config_basic.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 1.2.3.4:5 3 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/config_full.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 1.2.3.4:5 3 | cors: 4 | origins: [foo, bar, baz] 5 | methods: [foo, bar] 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/invalid_url.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 127.0.0.1:0 3 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/apq.router.yaml: -------------------------------------------------------------------------------- 1 | apq: 2 | enabled: true 3 | router: 4 | cache: 5 | in_memory: 6 | limit: 10000 7 | redis: 8 | urls: 9 | - "http://example.com" 10 | subgraph: 11 | all: 12 | enabled: true 13 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/authorization.router.yaml: -------------------------------------------------------------------------------- 1 | authorization: 2 | require_authentication: true -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/authorization_directives.router.yaml: -------------------------------------------------------------------------------- 1 | authorization: 2 | directives: 3 | enabled: true -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/batching.router.yaml: -------------------------------------------------------------------------------- 1 | batching: 2 | enabled: true 3 | mode: batch_http_link 4 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/defer.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | defer_support: true 3 | 4 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/demand_control.router.yaml: -------------------------------------------------------------------------------- 1 | demand_control: 2 | enabled: true 3 | mode: measure 4 | strategy: 5 | static_estimated: 6 | list_size: 30 7 | max: 256 -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/file_uploads.router.yaml: -------------------------------------------------------------------------------- 1 | preview_file_uploads: 2 | enabled: true 3 | protocols: 4 | multipart: 5 | enabled: true 6 | mode: stream 7 | limits: 8 | max_file_size: 1mb 9 | max_files: 10 10 | 11 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/jwt.router.yaml: -------------------------------------------------------------------------------- 1 | authentication: 2 | router: 3 | jwt: 4 | jwks: 5 | - url: https://example.com 6 | 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/limits.router.yaml: -------------------------------------------------------------------------------- 1 | limits: 2 | max_depth: 1 3 | http_max_request_bytes: 2000000 4 | warn_only: true 5 | max_root_fields: 1 6 | parser_max_tokens: 15000 7 | parser_max_recursion: 500 8 | max_height: 2 9 | max_aliases: 2 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/persisted_queries.router.yaml: -------------------------------------------------------------------------------- 1 | apq: 2 | enabled: false 3 | persisted_queries: 4 | enabled: true 5 | log_unknown: true 6 | safelist: 7 | require_id: true 8 | enabled: true 9 | 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/rhai.router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: rhai 3 | main: main.rhai -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/metrics/sigv4.router.yaml: -------------------------------------------------------------------------------- 1 | authentication: 2 | subgraph: 3 | all: 4 | aws_sig_v4: 5 | default_chain: 6 | service_name: "Foo" 7 | region: "us-east-1" 8 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/.skipconfigvalidation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/apollo-router/src/configuration/testdata/migrations/.skipconfigvalidation -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/apollo_extended_errors.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | apollo: 3 | errors: 4 | experimental_otlp_error_metrics: enabled 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/apollo_telemetry_experimental.router.yaml: -------------------------------------------------------------------------------- 1 | experimental_apollo_metrics_generation_mode: new 2 | 3 | telemetry: 4 | apollo: 5 | experimental_apollo_signature_normalization_algorithm: enhanced 6 | experimental_apollo_metrics_reference_mode: extended -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/batching.yaml: -------------------------------------------------------------------------------- 1 | experimental_batching: 2 | enabled: true 3 | mode: batch_http_link 4 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/datadog_enabled.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | tracing: 3 | datadog: 4 | endpoint: default 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/entity_cache_preview2.yaml: -------------------------------------------------------------------------------- 1 | preview_entity_cache: 2 | redis: 3 | urls: [ "redis://localhost:6379" ] 4 | timeout: 5ms 5 | ttl: 60s 6 | enabled: true 7 | subgraphs: 8 | accounts: 9 | enabled: false 10 | products: 11 | ttl: 120s -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/health-check_to_health_check.router.yaml: -------------------------------------------------------------------------------- 1 | health-check: 2 | enabled: true 3 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/http_max_request_bytes.router.yaml: -------------------------------------------------------------------------------- 1 | limits: 2 | experimental_http_max_request_bytes: 4000000 -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/js_api_schema.router.yaml: -------------------------------------------------------------------------------- 1 | experimental_api_schema_generation_mode: both 2 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/legacy_qp.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | query_planning: 3 | experimental_parallelism: 2 4 | experimental_reuse_query_fragments: true 5 | experimental_query_planner_mode: legacy 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/minor/subscription_dedup.yaml: -------------------------------------------------------------------------------- 1 | subscription: 2 | enabled: true 3 | queue_capacity: 100000 4 | max_opened_subscriptions: 100 5 | enable_deduplication: true 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/operation-limits-preview.yaml: -------------------------------------------------------------------------------- 1 | preview_operation_limits: 2 | parser_max_recursion: 1000 3 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/otlp_enabled.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | tracing: 3 | otlp: 4 | endpoint: default 5 | metrics: 6 | otlp: 7 | endpoint: default 8 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/parser_recursion.router.yaml: -------------------------------------------------------------------------------- 1 | server: 2 | experimental_parser_recursion_limit: 100 3 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/persisted-queries-preview.yaml: -------------------------------------------------------------------------------- 1 | preview_persisted_queries: 2 | enabled: true 3 | 4 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/persisted-queries-prewarm-already-object.yaml: -------------------------------------------------------------------------------- 1 | persisted_queries: 2 | enabled: true 3 | experimental_prewarm_query_plan_cache: 4 | on_reload: false 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/persisted-queries-prewarm-false.yaml: -------------------------------------------------------------------------------- 1 | persisted_queries: 2 | enabled: true 3 | experimental_prewarm_query_plan_cache: false 4 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/persisted-queries-prewarm-true.yaml: -------------------------------------------------------------------------------- 1 | persisted_queries: 2 | enabled: true 3 | experimental_prewarm_query_plan_cache: true 4 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/query_plan_cache.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | query_planning: 3 | experimental_cache: 4 | redis: 5 | urls: [] -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/subscription_enabled.yaml: -------------------------------------------------------------------------------- 1 | subscription: 2 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/supergraph_apq_to_apq.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | apq: 3 | router: 4 | cache: 5 | in_memory: 6 | limit: 2000 7 | redis: 8 | urls: 9 | - http://example.com 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/telemetry-exporters.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 1.2.3.4:5 3 | telemetry: 4 | tracing: 5 | common: 6 | service_name: "test_tracing" 7 | 8 | metrics: 9 | common: 10 | service_name: "test_metrics" 11 | 12 | logging: 13 | common: 14 | service_name: "test_logging" 15 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/telemetry_attributes.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | tracing: 3 | common: 4 | attributes: 5 | test: val 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/telemetry_otlp_timeout.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | tracing: 3 | otlp: 4 | endpoint: default 5 | timeout: "5s" 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/telemetry_resources.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | metrics: 3 | common: 4 | resources: 5 | test: val 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/telemetry_tracing_propagation_awsxray.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | tracing: 3 | propagation: 4 | awsxray: true 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/trace_config.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | tracing: 3 | trace_config: 4 | service_name: "foo" 5 | 6 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/migrations/zipkin_enabled.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | tracing: 3 | zipkin: 4 | endpoint: default 5 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/supergraph_config.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: "127.0.0.1:4001" 3 | cors: 4 | origins: 5 | - studio.apollographql.com 6 | methods: 7 | - GET 8 | - PUT 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/tracing_apollo.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 1.2.3.4:5 3 | telemetry: 4 | apollo: 5 | endpoint: "http://example.com" 6 | client_version_header: apollographql-client-version 7 | client_name_header: apollographql-client-name 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/tracing_apollo_env.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 1.2.3.4:5 3 | telemetry: 4 | apollo: 5 | endpoint: "${env.TEST_CONFIG_ENDPOINT}" 6 | client_version_header: apollographql-client-version 7 | client_name_header: apollographql-client-name 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/tracing_datadog.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 1.2.3.4:5 3 | telemetry: 4 | exporters: 5 | tracing: 6 | datadog: 7 | enabled: true 8 | endpoint: default 9 | 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/tracing_datadog_env.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 1.2.3.4:5 3 | telemetry: 4 | exporters: 5 | tracing: 6 | datadog: 7 | enabled: true 8 | endpoint: ${env.TEST_CONFIG_ENDPOINT} 9 | 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/tracing_otlp_grpc_basic.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 1.2.3.4:5 3 | telemetry: 4 | exporters: 5 | tracing: 6 | otlp: 7 | enabled: true 8 | endpoint: default 9 | protocol: http 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/tracing_otlp_grpc_basic_env.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 1.2.3.4:5 3 | telemetry: 4 | exporters: 5 | tracing: 6 | otlp: 7 | enabled: true 8 | endpoint: ${env.TEST_CONFIG_ENDPOINT} 9 | protocol: http 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/tracing_otlp_http_basic.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 1.2.3.4:5 3 | telemetry: 4 | exporters: 5 | tracing: 6 | otlp: 7 | enabled: true 8 | endpoint: default 9 | protocol: http 10 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/true.txt: -------------------------------------------------------------------------------- 1 | true 2 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/zipkin-address.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | zipkin: 7 | enabled: true 8 | endpoint: zipkin:9411 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/zipkin-url.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | zipkin: 7 | enabled: true 8 | endpoint: http://zipkin:9411/api/v2/spans 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/zipkin-url_env.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | zipkin: 7 | enabled: true 8 | endpoint: ${env.TEST_CONFIG_ENDPOINT} 9 | -------------------------------------------------------------------------------- /apollo-router/src/configuration/testdata/zipkin.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | zipkin: 7 | enabled: true 8 | endpoint: default 9 | -------------------------------------------------------------------------------- /apollo-router/src/graphql/fixtures/federated_ships_deferred_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | ships { 3 | name 4 | ... @defer { 5 | registrationFee 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /apollo-router/src/graphql/fixtures/federated_ships_deferred_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "ships": [ 4 | { 5 | "name": "Boaty McBoatface" 6 | }, 7 | { 8 | "name": "HMS Grapherson" 9 | } 10 | ] 11 | } 12 | } -------------------------------------------------------------------------------- /apollo-router/src/graphql/fixtures/federated_ships_named_query.graphql: -------------------------------------------------------------------------------- 1 | query NamedQuery { 2 | users { 3 | licenseNumber 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /apollo-router/src/graphql/fixtures/federated_ships_required_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | ships { 3 | name 4 | registrationFee 5 | } 6 | } -------------------------------------------------------------------------------- /apollo-router/src/graphql/snapshots/apollo_router__graphql__request__tests__missing_extensions.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/graphql/request.rs 3 | expression: expected_result 4 | --- 5 | query: "{ topProducts { upc name reviews { id product { name } author { id name } } } }" 6 | variables: 7 | date: "2022-01-01T00:00:00+00:00" 8 | -------------------------------------------------------------------------------- /apollo-router/src/graphql/snapshots/apollo_router__graphql__request__tests__null_extensions.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/graphql/request.rs 3 | expression: expected_result 4 | --- 5 | query: "{ topProducts { upc name reviews { id product { name } author { id name } } } }" 6 | variables: 7 | date: "2022-01-01T00:00:00+00:00" 8 | -------------------------------------------------------------------------------- /apollo-router/src/graphql/snapshots/apollo_router__graphql__visitor__tests__visit_response.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/graphql/visitor.rs 3 | expression: visitor 4 | --- 5 | name: 2 6 | registrationFee: 2 7 | ships: 1 8 | -------------------------------------------------------------------------------- /apollo-router/src/graphql/snapshots/apollo_router__graphql__visitor__tests__visit_response_with_fragments.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/graphql/visitor.rs 3 | expression: visitor 4 | --- 5 | licenseNumber: 4 6 | name: 4 7 | owner: 2 8 | ships: 1 9 | users: 1 10 | -------------------------------------------------------------------------------- /apollo-router/src/graphql/snapshots/apollo_router__graphql__visitor__tests__visit_response_with_inline_fragments.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/graphql/visitor.rs 3 | expression: visitor 4 | --- 5 | licenseNumber: 4 6 | name: 4 7 | owner: 2 8 | ships: 1 9 | users: 1 10 | -------------------------------------------------------------------------------- /apollo-router/src/graphql/snapshots/apollo_router__graphql__visitor__tests__visit_response_with_named_operation.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/graphql/visitor.rs 3 | expression: visitor 4 | --- 5 | licenseNumber: 2 6 | name: 2 7 | users: 1 8 | -------------------------------------------------------------------------------- /apollo-router/src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() { 2 | match apollo_router::main() { 3 | Ok(_) => {} 4 | Err(e) => { 5 | eprintln!("{e}"); 6 | std::process::exit(1) 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /apollo-router/src/orbiter/snapshots/apollo_router__orbiter__test__visit_args.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/orbiter/mod.rs 3 | expression: usage 4 | --- 5 | args.config_path.: 1 6 | args.hot_reload.true: 1 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/orbiter/snapshots/apollo_router__orbiter__test__visit_config_that_needed_upgrade.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/orbiter/mod.rs 3 | expression: usage 4 | --- 5 | configuration.supergraph.defer_support.len: 1 6 | configuration.supergraph.defer_support.true: 1 7 | -------------------------------------------------------------------------------- /apollo-router/src/plugin/test/mock/mod.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod canned; 2 | pub(super) mod connector; 3 | pub(super) mod subgraph; 4 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__extract_policies.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | { 6 | "internal", 7 | "profile", 8 | "read user", 9 | "read username", 10 | } 11 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__filter_basic_query-6.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | { 6 | topProducts { 7 | type 8 | internal 9 | } 10 | me { 11 | id 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__filter_basic_query-8.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | { 6 | topProducts { 7 | type 8 | } 9 | me { 10 | id 11 | name 12 | } 13 | } 14 | 15 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__interface_field-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | { 6 | test 7 | itf { 8 | ... on A { 9 | other 10 | } 11 | ... on B { 12 | other 13 | } 14 | } 15 | } 16 | 17 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__interface_inline_fragment-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | { 6 | topProducts { 7 | type 8 | } 9 | itf { 10 | id 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__interface_type-7.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | { 6 | test 7 | } 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__interface_type-9.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | { 6 | test 7 | itf { 8 | ... on A { 9 | id 10 | } 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__interface_typename-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: paths 4 | --- 5 | [] 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__interface_typename-4.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: paths 4 | --- 5 | [] 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__interface_typename.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | query Anonymous { 6 | post(id: "1") { 7 | ... on PublicBlog { 8 | __typename 9 | title 10 | } 11 | } 12 | } 13 | 14 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__query_field-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | { 6 | topProducts { 7 | type 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__query_field_alias-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | { 6 | topProducts { 7 | type 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__policy__tests__scalar-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/policy.rs 3 | expression: doc 4 | --- 5 | { 6 | topProducts { 7 | type 8 | } 9 | } 10 | 11 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/authorization/snapshots/apollo_router__plugins__authorization__scopes__tests__extract_scopes.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/authorization/scopes.rs 3 | expression: doc 4 | --- 5 | { 6 | "internal", 7 | "profile", 8 | "read:user", 9 | "read:username", 10 | "test", 11 | } 12 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/cache/mod.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod cache_control; 2 | pub(crate) mod entity; 3 | pub(crate) mod invalidation; 4 | pub(crate) mod invalidation_endpoint; 5 | pub(crate) mod metrics; 6 | #[cfg(test)] 7 | pub(crate) mod tests; 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/cache/snapshots/apollo_router__plugins__cache__tests__insert-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/cache/tests.rs 3 | expression: response.response.headers().get(CACHE_CONTROL) 4 | --- 5 | Some( 6 | "public", 7 | ) 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/cache/snapshots/apollo_router__plugins__cache__tests__insert-4.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/cache/tests.rs 3 | expression: response.response.headers().get(CACHE_CONTROL) 4 | --- 5 | Some( 6 | "public", 7 | ) 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/cache/snapshots/apollo_router__plugins__cache__tests__insert_with_nested_field_set-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/cache/tests.rs 3 | expression: response.response.headers().get(CACHE_CONTROL) 4 | --- 5 | Some( 6 | "public", 7 | ) 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/cache/snapshots/apollo_router__plugins__cache__tests__insert_with_nested_field_set-4.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/cache/tests.rs 3 | expression: response.response.headers().get(CACHE_CONTROL) 4 | --- 5 | Some( 6 | "public", 7 | ) 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/cache/snapshots/apollo_router__plugins__cache__tests__insert_with_requires-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/cache/tests.rs 3 | expression: response.response.headers().get(CACHE_CONTROL) 4 | --- 5 | Some( 6 | "public", 7 | ) 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/cache/snapshots/apollo_router__plugins__cache__tests__insert_with_requires-4.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/cache/tests.rs 3 | expression: response.response.headers().get(CACHE_CONTROL) 4 | --- 5 | Some( 6 | "public", 7 | ) 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/cache/snapshots/apollo_router__plugins__cache__tests__invalidate_entity-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/cache/tests.rs 3 | expression: response.response.headers().get(CACHE_CONTROL) 4 | --- 5 | Some( 6 | "public", 7 | ) 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/cache/snapshots/apollo_router__plugins__cache__tests__no_cache_control-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/cache/tests.rs 3 | expression: response.response.headers().get(CACHE_CONTROL) 4 | --- 5 | Some( 6 | "no-store", 7 | ) 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/cache/snapshots/apollo_router__plugins__cache__tests__no_cache_control.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/cache/tests.rs 3 | expression: response.response.headers().get(CACHE_CONTROL) 4 | --- 5 | Some( 6 | "no-store", 7 | ) 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/connectors/testdata/variables.yaml: -------------------------------------------------------------------------------- 1 | federation_version: =2.10.0-dylan 2 | subgraphs: 3 | connectors: 4 | routing_url: none 5 | schema: 6 | file: variables-subgraph.graphql -------------------------------------------------------------------------------- /apollo-router/src/plugins/csrf/fixtures/default.router.yaml: -------------------------------------------------------------------------------- 1 | csrf: 2 | unsafe_disabled: false 3 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/csrf/fixtures/required_headers.router.yaml: -------------------------------------------------------------------------------- 1 | csrf: 2 | required_headers: 3 | - X-MY-CSRF-Token 4 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/csrf/fixtures/unsafe_disabled.router.yaml: -------------------------------------------------------------------------------- 1 | csrf: 2 | unsafe_disabled: true 3 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_excluded_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | anotherScalar 3 | someObjects @include(if: false) { 4 | field1 5 | } 6 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_input_object_query.graphql: -------------------------------------------------------------------------------- 1 | query BasicInputObjectQuery { 2 | getScalarByObject( 3 | args: { inner: { id: 1 }, listOfInner: [{ id: 2 }, { id: 3 }] } 4 | ) 5 | } 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_input_object_query_2.graphql: -------------------------------------------------------------------------------- 1 | query BasicInputObjectQuery2 { 2 | getObjectsByObject( 3 | args: { inner: { id: 1 }, listOfInner: [{ id: 2 }, { id: 3 }] } 4 | ) { 5 | field1 6 | field2 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_input_object_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "getObjectsByObject": [ 4 | { "field1": 1, "field2": "one" }, 5 | { "field1": 2, "field2": "two" }, 6 | { "field1": 3, "field2": "three" } 7 | ] 8 | } 9 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_interface_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | interfaceInstance1 { 3 | field2 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_mutation.graphql: -------------------------------------------------------------------------------- 1 | mutation { 2 | doSomething 3 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_nested_list_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | someObjects { 3 | innerList { 4 | field2 5 | } 6 | } 7 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_object_list_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | someObjects { 3 | field1 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_object_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | object1 { 3 | field1 4 | } 5 | } 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_query.graphql: -------------------------------------------------------------------------------- 1 | query BasicQuery { 2 | getScalar(id: 2) 3 | anotherScalar 4 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_scalar_list_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | intList 3 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_skipped_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | someObjects @skip(if: true) { 3 | field1 4 | } 5 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/basic_union_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | someUnion { 3 | ... on FirstObjectType { 4 | field1 5 | } 6 | ... on SecondObjectType { 7 | field2 8 | } 9 | } 10 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/federated_ships_deferred_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | ships { 3 | name 4 | ... @defer { 5 | registrationFee 6 | } 7 | } 8 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/federated_ships_deferred_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "data": { 3 | "ships": [ 4 | { 5 | "name": "Boaty McBoatface" 6 | }, 7 | { 8 | "name": "HMS Grapherson" 9 | } 10 | ] 11 | } 12 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/federated_ships_named_query.graphql: -------------------------------------------------------------------------------- 1 | query NamedQuery { 2 | users { 3 | licenseNumber 4 | name 5 | } 6 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/federated_ships_required_query.graphql: -------------------------------------------------------------------------------- 1 | { 2 | ships { 3 | name 4 | registrationFee 5 | } 6 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/federated_ships_typename_query.graphql: -------------------------------------------------------------------------------- 1 | query NamedQuery { 2 | users { 3 | __typename 4 | licenseNumber 5 | name 6 | } 7 | } -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/fixtures/subscription_query.graphql: -------------------------------------------------------------------------------- 1 | subscription MessageSubscription { 2 | messages { 3 | subject 4 | content 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/mod.rs: -------------------------------------------------------------------------------- 1 | mod directives; 2 | pub(in crate::plugins::demand_control) mod schema; 3 | pub(crate) mod static_cost; 4 | 5 | use crate::plugins::demand_control::DemandControlError; 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/cost_calculator/snapshots/apollo_router__plugins__demand_control__cost_calculator__static_cost__tests__federated_query_with_typenames@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/demand_control/cost_calculator/static_cost.rs 3 | expression: yaml 4 | --- 5 | [] 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/fixtures/enforce_on_execution_request.router.yaml: -------------------------------------------------------------------------------- 1 | demand_control: 2 | enabled: true 3 | mode: enforce 4 | strategy: 5 | test: 6 | stage: execution_request 7 | error: estimated_cost_too_expensive -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/fixtures/enforce_on_execution_response.router.yaml: -------------------------------------------------------------------------------- 1 | demand_control: 2 | enabled: true 3 | mode: enforce 4 | strategy: 5 | test: 6 | stage: execution_response 7 | error: estimated_cost_too_expensive -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/fixtures/enforce_on_subgraph_request.router.yaml: -------------------------------------------------------------------------------- 1 | demand_control: 2 | enabled: true 3 | mode: enforce 4 | strategy: 5 | test: 6 | stage: subgraph_request 7 | error: estimated_cost_too_expensive -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/fixtures/enforce_on_subgraph_response.router.yaml: -------------------------------------------------------------------------------- 1 | demand_control: 2 | enabled: true 3 | mode: enforce 4 | strategy: 5 | test: 6 | stage: subgraph_response 7 | error: estimated_cost_too_expensive -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/fixtures/measure_on_execution_request.router.yaml: -------------------------------------------------------------------------------- 1 | demand_control: 2 | enabled: true 3 | mode: measure 4 | strategy: 5 | test: 6 | stage: execution_request 7 | error: estimated_cost_too_expensive 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/fixtures/measure_on_execution_response.router.yaml: -------------------------------------------------------------------------------- 1 | demand_control: 2 | enabled: true 3 | mode: measure 4 | strategy: 5 | test: 6 | stage: execution_response 7 | error: estimated_cost_too_expensive 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/fixtures/measure_on_subgraph_request.router.yaml: -------------------------------------------------------------------------------- 1 | demand_control: 2 | enabled: true 3 | mode: measure 4 | strategy: 5 | test: 6 | stage: execution_request 7 | error: estimated_cost_too_expensive 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/fixtures/measure_on_subgraph_response.router.yaml: -------------------------------------------------------------------------------- 1 | demand_control: 2 | enabled: true 3 | mode: measure 4 | strategy: 5 | test: 6 | stage: execution_response 7 | error: estimated_cost_too_expensive 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/snapshots/apollo_router__plugins__demand_control__test__measure_on_execution_request.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/demand_control/mod.rs 3 | expression: body 4 | --- 5 | - {} 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/snapshots/apollo_router__plugins__demand_control__test__measure_on_execution_response.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/demand_control/mod.rs 3 | expression: body 4 | --- 5 | - {} 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/snapshots/apollo_router__plugins__demand_control__test__measure_on_subgraph_request.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/demand_control/mod.rs 3 | expression: body 4 | --- 5 | data: ~ 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/demand_control/snapshots/apollo_router__plugins__demand_control__test__measure_on_subgraph_response.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/demand_control/mod.rs 3 | expression: body 4 | --- 5 | data: ~ 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/headers/fixtures/propagate_passthrough.router.yaml: -------------------------------------------------------------------------------- 1 | headers: 2 | all: 3 | request: 4 | - propagate: 5 | matching: .* 6 | - propagate: 7 | named: a 8 | rename: b 9 | - propagate: 10 | named: b 11 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/headers/fixtures/propagate_passthrough_defaulted.router.yaml: -------------------------------------------------------------------------------- 1 | headers: 2 | all: 3 | request: 4 | - propagate: 5 | named: a 6 | rename: b 7 | - propagate: 8 | named: b 9 | default: defaulted 10 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/healthcheck/testdata/allowed_fifty_per_second.router.yaml: -------------------------------------------------------------------------------- 1 | health_check: 2 | listen: 127.0.0.1:8088 3 | readiness: 4 | allowed: 50 5 | interval: 6 | sampling: 1s 7 | unready: 10s 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/healthcheck/testdata/allowed_ten_per_second.router.yaml: -------------------------------------------------------------------------------- 1 | health_check: 2 | listen: 127.0.0.1:8088 3 | readiness: 4 | allowed: 10 5 | interval: 6 | sampling: 1s 7 | unready: 10s 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/healthcheck/testdata/custom_listener.router.yaml: -------------------------------------------------------------------------------- 1 | health_check: 2 | listen: 127.0.0.1:4012 3 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/healthcheck/testdata/default_listener.router.yaml: -------------------------------------------------------------------------------- 1 | health_check: 2 | listen: 127.0.0.1:8088 3 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/healthcheck/testdata/disabled_listener.router.yaml: -------------------------------------------------------------------------------- 1 | health_check: 2 | listen: 127.0.0.1:8088 3 | enabled: false 4 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/limits/fixtures/content_length_limit.router.yaml: -------------------------------------------------------------------------------- 1 | limits: 2 | http_max_request_bytes: 10 -------------------------------------------------------------------------------- /apollo-router/src/plugins/record_replay/mod.rs: -------------------------------------------------------------------------------- 1 | mod record; 2 | mod recording; 3 | mod replay; 4 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/rhai/snapshots/apollo_router__plugins__rhai__tests__rhai_plugin_supergraph_service@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/rhai/tests.rs 3 | expression: yaml 4 | --- 5 | [] 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/cost/fixtures/cost_actual.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | supergraph: 5 | cost.actual: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/cost/fixtures/cost_actual_with_attributes.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | supergraph: 5 | cost.actual: 6 | attributes: 7 | cost.result: true 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/cost/fixtures/cost_delta.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | supergraph: 5 | cost.delta: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/cost/fixtures/cost_delta_with_attributes.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | supergraph: 5 | cost.delta: 6 | attributes: 7 | graphql.operation.name: true 8 | cost.result: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/cost/fixtures/cost_estimated.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | supergraph: 5 | cost.estimated: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/cost/fixtures/cost_estimated_with_attributes.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | supergraph: 5 | cost.estimated: 6 | attributes: 7 | cost.result: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/graphql/custom_counter/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | graphql: 5 | "custom_counter": 6 | description: "count of requests" 7 | type: counter 8 | unit: "unit" 9 | value: unit 10 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/graphql/custom_histogram/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | graphql: 5 | "custom_counter": 6 | description: "count of requests" 7 | type: histogram 8 | unit: "unit" 9 | value: 10 | list_length: value 11 | 12 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/graphql/field.execution/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | graphql: 5 | field.execution: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/graphql/field.length/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | default_requirement_level: none 5 | graphql: 6 | list.length: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/attribute.error.type/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | default_requirement_level: none 5 | router: 6 | http.server.request.duration: 7 | attributes: 8 | error.type: true 9 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/attribute.error.type/test.yaml: -------------------------------------------------------------------------------- 1 | description: error.type attribute 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello 8 | - router_error: 9 | error: "router error" -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/attribute.on_graphql_error/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | default_requirement_level: none 5 | router: 6 | http.server.request.duration: 7 | attributes: 8 | on.graphql.error: 9 | on_graphql_error: true 10 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/custom_counter/test.yaml: -------------------------------------------------------------------------------- 1 | description: Custom counter 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello 8 | - router_response: 9 | body: | 10 | hello 11 | status: 200 -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/custom_counter_aborted_request/test.yaml: -------------------------------------------------------------------------------- 1 | description: Custom counter where the router response does not happen. This should still increment the metric on Drop. 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/custom_counter_aborted_request_with_condition_on_response/test.yaml: -------------------------------------------------------------------------------- 1 | description: Custom counter should not be incremented as the condition is not true on drop. 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/custom_histogram_duration/test.yaml: -------------------------------------------------------------------------------- 1 | description: Custom histogram duration 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello 8 | - router_response: 9 | body: | 10 | hello 11 | status: 200 -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/custom_histogram_duration_aborted_request/test.yaml: -------------------------------------------------------------------------------- 1 | description: Custom histogram where router response doesn't happen. This should still increment the metric on Drop. 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/custom_histogram_duration_aborted_request_with_condition_on_response/test.yaml: -------------------------------------------------------------------------------- 1 | description: Custom histogram should not be incremented as the condition is not true on drop. 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/custom_histogram_unit/test.yaml: -------------------------------------------------------------------------------- 1 | description: Custom histogram unit 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello 8 | - router_response: 9 | body: | 10 | hello 11 | status: 200 -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/custom_histogram_unit_aborted_request/test.yaml: -------------------------------------------------------------------------------- 1 | description: Custom histogram where router response doesn't happen. This should still increment the metric on Drop. 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/custom_histogram_unit_aborted_request_with_condition_on_response/test.yaml: -------------------------------------------------------------------------------- 1 | description: Custom histogram should not be incremented as the condition is not true on drop. 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/http.server.active_requests/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | router: 5 | http.server.active_requests: true 6 | http.server.request.duration: false 7 | subgraph: 8 | http.client.request.duration: false -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/http.server.active_requests/test.yaml: -------------------------------------------------------------------------------- 1 | description: Active requests metrics 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello 8 | - router_response: 9 | body: | 10 | hello 11 | status: 200 -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/http.server.request.body.size/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | router: 5 | http.server.active_requests: false 6 | http.server.request.duration: false 7 | http.server.request.body.size: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/http.server.request.body.size_with_custom_attributes/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | router: 5 | http.server.active_requests: false 6 | http.server.request.duration: false 7 | http.server.request.body.size: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/http.server.request.duration/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | router: 5 | http.server.active_requests: false 6 | http.server.request.duration: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/http.server.request.duration/test.yaml: -------------------------------------------------------------------------------- 1 | description: Server duration metrics 2 | events: 3 | - - router_request: 4 | uri: "/hello" 5 | method: GET 6 | body: | 7 | hello 8 | - router_response: 9 | body: | 10 | hello 11 | status: 200 -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/router/http.server.response.body.size/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | router: 5 | http.server.active_requests: false 6 | http.server.request.duration: false 7 | http.server.response.body.size: true -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/subgraph/custom_counter/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | default_requirement_level: none 5 | subgraph: 6 | "custom_counter": 7 | description: "count of requests" 8 | type: counter 9 | unit: "unit" 10 | value: unit -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/subgraph/custom_histogram_duration copy/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | default_requirement_level: none 5 | subgraph: 6 | http.client.request.duration: 7 | attributes: 8 | subgraph.name: 9 | alias: apollo_subgraph_name -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/fixtures/supergraph/custom_counter/router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | default_requirement_level: none 5 | supergraph: 6 | "custom_counter": 7 | description: "count of requests" 8 | type: counter 9 | unit: "unit" 10 | value: unit -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/graphql/fixtures/field_length_disabled.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | graphql: 5 | list.length: false 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/graphql/fixtures/field_length_enabled.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | instruments: 4 | graphql: 5 | list.length: true 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/http_common/events.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/http_common/instruments.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/http_common/mod.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod attributes; 2 | pub(crate) mod events; 3 | pub(crate) mod instruments; 4 | pub(crate) mod selectors; 5 | pub(crate) mod spans; 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/http_common/selectors.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/http_common/spans.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/http_server/events.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/http_server/instruments.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/http_server/mod.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod attributes; 2 | pub(crate) mod events; 3 | pub(crate) mod instruments; 4 | pub(crate) mod selectors; 5 | pub(crate) mod spans; 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/http_server/selectors.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/http_server/spans.rs: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/router/mod.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod attributes; 2 | pub(crate) mod events; 3 | pub(crate) mod instruments; 4 | pub(crate) mod selectors; 5 | pub(crate) mod spans; 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/router/snapshots/apollo_router__plugins__telemetry__config_new__router__events__tests__router_events_graphql_error@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/telemetry/config_new/router/events.rs 3 | expression: yaml 4 | --- 5 | - fields: 6 | kind: router.response 7 | level: INFO 8 | message: "" 9 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/router/snapshots/apollo_router__plugins__telemetry__config_new__router__events__tests__router_events_graphql_response@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/telemetry/config_new/router/events.rs 3 | expression: yaml 4 | --- 5 | - fields: 6 | kind: router.response 7 | level: INFO 8 | message: "" 9 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/snapshots/apollo_router__plugins__telemetry__config_new__events__tests__router_events_graphql_error@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/telemetry/config_new/events.rs 3 | expression: yaml 4 | --- 5 | - fields: 6 | kind: router.response 7 | level: INFO 8 | message: "" 9 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/snapshots/apollo_router__plugins__telemetry__config_new__events__tests__router_events_graphql_response@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/telemetry/config_new/events.rs 3 | expression: yaml 4 | --- 5 | - fields: 6 | kind: router.response 7 | level: INFO 8 | message: "" 9 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/subgraph/mod.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod attributes; 2 | pub(crate) mod events; 3 | pub(crate) mod instruments; 4 | pub(crate) mod selectors; 5 | pub(crate) mod spans; 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/config_new/supergraph/mod.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod attributes; 2 | pub(crate) mod events; 3 | pub(crate) mod instruments; 4 | pub(crate) mod selectors; 5 | pub(crate) mod spans; 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/logging/snapshots/apollo_router__plugins__telemetry__logging__test__router_service@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/telemetry/logging/mod.rs 3 | expression: yaml 4 | --- 5 | - fields: {} 6 | level: INFO 7 | message: response 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/snapshots/apollo_router__plugins__telemetry__fmt_layer__tests__text_logging_attributes.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/telemetry/fmt_layer.rs 3 | expression: buff 4 | --- 5 | [timestamp] INFO test{another=2,custom_dyn=test,first=one,}  Hello from test event_attr="foo" 6 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/snapshots/apollo_router__plugins__telemetry__fmt_layer__tests__text_logging_without_span_list.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/plugins/telemetry/fmt_layer.rs 3 | expression: buff.to_string() 4 | --- 5 | [timestamp] ERROR Hello from nested test http.method="GET" 6 | [timestamp] INFO Hello from test event_attr="foo" 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/testdata/config.field_instrumentation_sampler.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | instrumentation: 3 | spans: 4 | mode: spec_compliant 5 | apollo: 6 | field_level_instrumentation_sampler: 1.0 7 | exporters: 8 | tracing: 9 | common: 10 | preview_datadog_agent_sampling: true 11 | sampler: 0.5 -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/testdata/prometheus.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | apollo: 3 | client_name_header: name_header 4 | client_version_header: version_header 5 | exporters: 6 | metrics: 7 | prometheus: 8 | enabled: true 9 | -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/tracing/datadog_exporter/README.md: -------------------------------------------------------------------------------- 1 | This is temporary interning of the datadog exporter until we update otel. 2 | The newest version of the exporter does support setting span metrics, but we 3 | can't upgrade until we upgrade Otel. 4 | 5 | Once otel is upgraded, we can remove this code and use the exporter directly. -------------------------------------------------------------------------------- /apollo-router/src/plugins/telemetry/tracing/jaeger.rs: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/apollo-router/src/plugins/telemetry/tracing/jaeger.rs -------------------------------------------------------------------------------- /apollo-router/src/protocols/mod.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod multipart; 2 | pub(crate) mod websocket; 3 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/snapshots/apollo_router__query_planner__labeler__tests__large_float_written_as_int.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/query_planner/labeler.rs 3 | expression: result 4 | --- 5 | { 6 | field(id: 1234567890123) 7 | } 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/snapshots/apollo_router__query_planner__query_planner_service__tests__empty_query_plan_usage_reporting.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/query_planner/query_planner_service.rs 3 | expression: stats_report_key 4 | --- 5 | "# -\n{__schema{queryType{name}}}" 6 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/snapshots/apollo_router__query_planner__query_planner_service__tests__subselections.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/query_planner/bridge_query_planner.rs 3 | expression: "subselections_keys(\"query Q { me { username name { first last }}}\").await" 4 | --- 5 | 6 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/snapshots/apollo_router__query_planner__tests__alias_renaming-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/query_planner/tests.rs 3 | expression: "serde_json::to_value(&response).unwrap()" 4 | --- 5 | { 6 | "data": { 7 | "testQuery": { 8 | "foo": { 9 | "field": "bbb" 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/snapshots/apollo_router__query_planner__tests__alias_renaming.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/query_planner/tests.rs 3 | expression: "serde_json::to_value(&response).unwrap()" 4 | --- 5 | { 6 | "data": { 7 | "testQuery": { 8 | "foo": { 9 | "field": "aaa" 10 | } 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/snapshots/apollo_router__query_planner__tests__defer_if_condition-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/query_planner/mod.rs 3 | expression: defer_disabled 4 | --- 5 | { 6 | "data": { 7 | "me": { 8 | "id": "1", 9 | "name": "Ada Lovelace", 10 | "username": "@ada" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/snapshots/apollo_router__query_planner__tests__defer_if_condition.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/query_planner/mod.rs 3 | expression: defer_primary_response 4 | --- 5 | { 6 | "data": { 7 | "me": { 8 | "__typename": "User", 9 | "id": "1" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/snapshots/apollo_router__query_planner__tests__missing_fields_in_requires.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/query_planner/tests.rs 3 | expression: "serde_json::to_value(&response).unwrap()" 4 | --- 5 | { 6 | "data": { 7 | "stuff": { 8 | "id": "1", 9 | "aDetailsIsEnabled": true 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/snapshots/apollo_router__query_planner__tests__missing_typename_and_fragments_in_requires.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/query_planner/tests.rs 3 | expression: "serde_json::to_value(&response).unwrap()" 4 | --- 5 | { 6 | "data": { 7 | "stuff": { 8 | "id": "1", 9 | "isEnabled": true 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/snapshots/apollo_router__query_planner__tests__null_in_requires.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/query_planner/tests.rs 3 | expression: "serde_json::to_value(&response).unwrap()" 4 | --- 5 | { 6 | "data": { 7 | "stuff": { 8 | "id": "1", 9 | "isEnabled": true 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/testdata/query.graphql: -------------------------------------------------------------------------------- 1 | query { 2 | me { 3 | name { 4 | first 5 | last 6 | } 7 | } 8 | } 9 | -------------------------------------------------------------------------------- /apollo-router/src/query_planner/testdata/unknown_introspection_query.graphql: -------------------------------------------------------------------------------- 1 | query { 2 | __schema { 3 | queryType { 4 | name 5 | } 6 | } 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/router/event/snapshots/apollo_router__router__event__schema__tests__schema_by_url@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/router/event/schema.rs 3 | expression: yaml 4 | --- 5 | [] 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/router/event/snapshots/apollo_router__router__event__schema__tests__schema_no_watch@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/router/event/schema.rs 3 | expression: yaml 4 | --- 5 | [] 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/services/connector.rs: -------------------------------------------------------------------------------- 1 | pub(crate) mod request_service; 2 | -------------------------------------------------------------------------------- /apollo-router/src/services/connector/request_service/transport.rs: -------------------------------------------------------------------------------- 1 | //! Transport implementations for Apollo Connectors 2 | pub(crate) mod http; 3 | -------------------------------------------------------------------------------- /apollo-router/src/services/http/snapshots/apollo_router__services__http__tests__unix_socket.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/http/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": { 7 | "currentUser": { 8 | "id": "0" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apollo-router/src/services/http/testdata/client.ext: -------------------------------------------------------------------------------- 1 | basicConstraints = CA:FALSE 2 | nsCertType = client, email 3 | nsComment = "OpenSSL Generated Client Certificate" 4 | subjectKeyIdentifier = hash 5 | authorityKeyIdentifier = keyid,issuer 6 | keyUsage = critical, nonRepudiation, digitalSignature, keyEncipherment 7 | extendedKeyUsage = clientAuth, emailProtection 8 | -------------------------------------------------------------------------------- /apollo-router/src/services/layers/mod.rs: -------------------------------------------------------------------------------- 1 | //! Layers that are internal to the execution pipeline. 2 | pub(crate) mod allow_only_http_post_mutations; 3 | pub(crate) mod apq; 4 | pub(crate) mod persisted_queries; 5 | pub(crate) mod query_analysis; 6 | pub(crate) mod static_page; 7 | -------------------------------------------------------------------------------- /apollo-router/src/services/new_service.rs: -------------------------------------------------------------------------------- 1 | //! Create a new tower Service instance. 2 | use tower::Service; 3 | 4 | /// Trait 5 | pub(crate) trait ServiceFactory { 6 | type Service: Service; 7 | 8 | fn create(&self) -> Self::Service; 9 | } 10 | -------------------------------------------------------------------------------- /apollo-router/src/services/query_batching/testdata/batching_not_enabled_response.json: -------------------------------------------------------------------------------- 1 | { 2 | "errors": [ 3 | { 4 | "message": "Invalid GraphQL request", 5 | "extensions": { 6 | "details": "batching not enabled", 7 | "code": "BATCHING_NOT_ENABLED" 8 | } 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__abstract_types_in_requires.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph/tests.rs 3 | expression: stream.next_response().await.unwrap() 4 | --- 5 | { 6 | "data": { 7 | "entity": { 8 | "fieldWithDependencies": "success" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__filter_nullified_deferred_responses-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph_service.rs 3 | expression: last 4 | --- 5 | { 6 | "hasNext": false 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__filter_nullified_deferred_responses.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph_service.rs 3 | expression: primary 4 | --- 5 | { 6 | "data": { 7 | "currentUser": { 8 | "name": "Ada" 9 | } 10 | }, 11 | "hasNext": true 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__no_typename_on_interface-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph_service.rs 3 | expression: with_reversed_fragments 4 | --- 5 | { 6 | "data": { 7 | "dog": { 8 | "name": "Spot", 9 | "id": "0000" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__no_typename_on_interface.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph_service.rs 3 | expression: no_typename 4 | --- 5 | { 6 | "data": { 7 | "dog": { 8 | "id": "4321", 9 | "name": "Spot" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__nullability_formatting.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph_service.rs 3 | expression: response 4 | --- 5 | { 6 | "data": { 7 | "currentUser": { 8 | "activeOrganization": null 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__root_selection_not_included.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": {} 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__root_selection_not_skipped.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": { 7 | "currentUser": { 8 | "id": "2", 9 | "name": "test" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__root_selection_set_statically_skipped.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": {} 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__root_selection_set_with_fragment_statically_skipped.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": {} 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__root_selection_set_with_inline_fragment_statically_skipped.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": {} 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__root_selection_skipped.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": {} 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__root_selection_skipped_with_other_fields.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": { 7 | "otherUser": { 8 | "id": "2", 9 | "name": "test" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__root_selection_with_several_fields_statically_skipped.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": {} 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__subscription_callback_schema_reload.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph_service.rs 3 | expression: res 4 | --- 5 | { 6 | "data": null 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__subscription_with_callback.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph_service.rs 3 | expression: res 4 | --- 5 | { 6 | "data": null 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/services/supergraph/snapshots/apollo_router__services__supergraph__tests__subscription_with_callback_with_limit.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/services/supergraph_service.rs 3 | expression: res 4 | --- 5 | { 6 | "data": null 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/src/spec/query/snapshots/apollo_router__spec__query__tests__filtered_defer_fragment-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/spec/query/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": { 7 | "a": { 8 | "b": "b" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apollo-router/src/spec/query/snapshots/apollo_router__spec__query__tests__filtered_defer_fragment.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/spec/query/tests.rs 3 | expression: response 4 | --- 5 | { 6 | "data": { 7 | "a": { 8 | "b": "b" 9 | } 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /apollo-router/src/test_harness/http_snapshot_main.rs: -------------------------------------------------------------------------------- 1 | use apollo_router::snapshot_server; 2 | 3 | #[tokio::main] 4 | async fn main() { 5 | snapshot_server().await 6 | } 7 | -------------------------------------------------------------------------------- /apollo-router/src/test_harness/mocks/mod.rs: -------------------------------------------------------------------------------- 1 | /// Mocks for the persisted queries uplink integration. 2 | pub mod persisted_queries; 3 | -------------------------------------------------------------------------------- /apollo-router/src/testdata/datadog.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | datadog: 7 | enabled: true 8 | endpoint: default 9 | -------------------------------------------------------------------------------- /apollo-router/src/testdata/otlp.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | otlp: 7 | enabled: true 8 | endpoint: default 9 | -------------------------------------------------------------------------------- /apollo-router/src/testdata/supergraph_config.router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 127.0.0.1:0 3 | health_check: 4 | listen: 127.0.0.1:0 5 | -------------------------------------------------------------------------------- /apollo-router/src/testdata/zipkin.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | zipkin: 7 | enabled: true 8 | endpoint: default 9 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/license.jwks.json: -------------------------------------------------------------------------------- 1 | { 2 | "keys": [ 3 | { 4 | "alg": "EdDSA", 5 | "kty": "OKP", 6 | "crv": "Ed25519", 7 | "x": "1ALg6LEIXYv5xye4zWNaw1fJmABZZwhF_oRAuNfI0_s" 8 | } 9 | ] 10 | } 11 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__license_enforcement__test__schema_enforcement_spec_version_in_range.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/license_enforcement.rs 3 | assertion_line: 714 4 | expression: report.to_string() 5 | --- 6 | Schema features: 7 | * @authenticated 8 | https://specs.apollo.dev/authenticated/v0.1 9 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__license_stream__test__validate_audience_multiple@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/license_stream.rs 3 | expression: yaml 4 | --- 5 | [] 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__license_stream__test__validate_audience_single@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/license_stream.rs 3 | expression: yaml 4 | --- 5 | [] 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__license_stream__test__validate_no_claim@logs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/license_stream.rs 3 | expression: yaml 4 | --- 5 | [] 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_empty_http_fallback.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Ok: "result QueryResult { name: \"ok\", ordering: 1 }" 6 | - Ok: "result QueryResult { name: \"ok\", ordering: 2 }" 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_empty_http_round_robin.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Ok: "result QueryResult { name: \"ok\", ordering: 1 }" 6 | - Ok: "result QueryResult { name: \"ok\", ordering: 2 }" 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_error_http_fallback.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Ok: "result QueryResult { name: \"ok\", ordering: 1 }" 6 | - Ok: "result QueryResult { name: \"ok\", ordering: 2 }" 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_error_http_round_robin.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Ok: "result QueryResult { name: \"ok\", ordering: 1 }" 6 | - Ok: "result QueryResult { name: \"ok\", ordering: 2 }" 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_error_no_retry.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Err: "uplink error, the request will not be retried: code=NO_RETRY message=error message" 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_error_retry.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Err: "uplink error: code=RETRY_LATER message=error message" 6 | - Ok: "result QueryResult { name: \"ok\", ordering: 1 }" 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_failed_from_all.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Err: fetch failed from all 2 uplink endpoints 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_failed_from_single.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Err: "fetch failed from uplink endpoint, and there are no fallback endpoints configured" 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_fallback.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Ok: "result QueryResult { name: \"ok\", ordering: 1 }" 6 | - Ok: "result QueryResult { name: \"ok\", ordering: 2 }" 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_invalid.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Err: fetch failed from all 3 uplink endpoints 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_round_robin.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Ok: "result QueryResult { name: \"ok\", ordering: 1 }" 6 | - Ok: "result QueryResult { name: \"ok\", ordering: 2 }" 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_transforming_new_response_first_response_transform_fails.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Ok: "result TransformedQueryResult { name: \"ok\", halved_ordering: 50 }" 6 | 7 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/snapshots/apollo_router__uplink__test__stream_from_uplink_unchanged.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/src/uplink/mod.rs 3 | expression: "results.into_iter().map(to_friendly).collect::>()" 4 | --- 5 | - Ok: "result QueryResult { name: \"ok\", ordering: 1 }" 6 | - Ok: "result QueryResult { name: \"ok\", ordering: 2 }" 7 | 8 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/testdata/connectv0_3.router.yaml: -------------------------------------------------------------------------------- 1 | health_check: 2 | enabled: false 3 | homepage: 4 | enabled: false 5 | limits: 6 | parser_max_recursion: 1000 7 | connectors: 8 | preview_connect_v0_3: true 9 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/testdata/oss.router.yaml: -------------------------------------------------------------------------------- 1 | health_check: 2 | enabled: false 3 | homepage: 4 | enabled: false 5 | limits: 6 | parser_max_recursion: 1000 7 | -------------------------------------------------------------------------------- /apollo-router/src/uplink/testdata/override-manual-demo.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/apollo-router/src/uplink/testdata/override-manual-demo.yml -------------------------------------------------------------------------------- /apollo-router/tests/fixtures/batching/all_enabled.router.yaml: -------------------------------------------------------------------------------- 1 | # Simple config to enable batching for all subgraphs 2 | 3 | batching: 4 | enabled: true 5 | mode: batch_http_link 6 | subgraph: 7 | all: 8 | enabled: true 9 | 10 | include_subgraph_errors: 11 | all: true 12 | -------------------------------------------------------------------------------- /apollo-router/tests/fixtures/batching/short_timeouts.router.yaml: -------------------------------------------------------------------------------- 1 | # Batching config with short timeouts for testing 2 | 3 | batching: 4 | enabled: true 5 | mode: batch_http_link 6 | subgraph: 7 | all: 8 | enabled: true 9 | traffic_shaping: 10 | all: 11 | timeout: 1s 12 | 13 | include_subgraph_errors: 14 | all: true 15 | -------------------------------------------------------------------------------- /apollo-router/tests/fixtures/batching/subgraph_id.rhai: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/apollo-router/tests/fixtures/batching/subgraph_id.rhai -------------------------------------------------------------------------------- /apollo-router/tests/fixtures/jwks-ec-no-alg.json: -------------------------------------------------------------------------------- 1 | { 2 | "keys": [ 3 | { 4 | "kty": "EC", 5 | "crv": "P-256", 6 | "x": "N9mNZYXyvhyzy5Xq3bD7aJp6R6I2SekVL2kE6byV5Z8", 7 | "y": "wQiY8AKPoWevbeedRa93WdOr9O71GpszF888u6lI9w8" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /apollo-router/tests/fixtures/jwks-no-use.json: -------------------------------------------------------------------------------- 1 | { 2 | "keys": [ 3 | { 4 | "kty": "EC", 5 | "crv": "P-256", 6 | "x": "N9mNZYXyvhyzy5Xq3bD7aJp6R6I2SekVL2kE6byV5Z8", 7 | "y": "wQiY8AKPoWevbeedRa93WdOr9O71GpszF888u6lI9w8", 8 | "alg": "ES256" 9 | } 10 | ] 11 | } -------------------------------------------------------------------------------- /apollo-router/tests/fixtures/persisted-queries-manifest-hot-reload.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": "apollo-persisted-query-manifest", 3 | "version": 1, 4 | "operations": [ 5 | { 6 | "id": "5678", 7 | "name": "typename", 8 | "type": "query", 9 | "body": "query { typename }" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/tests/fixtures/persisted-queries-manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "format": "apollo-persisted-query-manifest", 3 | "version": 1, 4 | "operations": [ 5 | { 6 | "id": "5678", 7 | "name": "typename", 8 | "type": "query", 9 | "body": "query { typename }" 10 | } 11 | ] 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/tests/fixtures/syntax_errors.rhai: -------------------------------------------------------------------------------- 1 | fn supergraph_service(service) { 2 | let response = Fn("supergraph_response") // There should be a semicolon here 3 | service.map_response(response); 4 | } 5 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/broken_coprocessor.router.yaml: -------------------------------------------------------------------------------- 1 | # This coprocessor doesn't point to anything 2 | coprocessor: 3 | url: "http://unreachable.example" 4 | router: 5 | request: 6 | body: true -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/coprocessor_body_limit.router.yaml: -------------------------------------------------------------------------------- 1 | # This coprocessor doesn't point to anything 2 | coprocessor: 3 | url: "" 4 | router: 5 | request: 6 | body: true 7 | limits: 8 | http_max_request_bytes: 100 -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/prometheus.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | metrics: 4 | prometheus: 5 | listen: 127.0.0.1:4000 6 | enabled: true 7 | path: /metrics 8 | 9 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/prometheus_updated.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | metrics: 4 | prometheus: 5 | listen: 127.0.0.1:4000 6 | enabled: true 7 | path: /metrics 8 | 9 | 10 | headers: 11 | all: 12 | request: 13 | - insert: 14 | name: test 15 | value: test -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/query_planner_redis_config_update.router.yaml: -------------------------------------------------------------------------------- 1 | # This config is used for testing query plans to redis 2 | supergraph: 3 | query_planning: 4 | cache: 5 | redis: 6 | required_to_start: true 7 | urls: 8 | - redis://localhost:6379 9 | ttl: 10s -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/request_bytes_limit.router.yaml: -------------------------------------------------------------------------------- 1 | limits: 2 | http_max_request_bytes: 60 3 | coprocessor: 4 | url: http://localhost:4005 5 | router: 6 | request: 7 | body: true -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/request_bytes_limit_with_coprocessor.router.yaml: -------------------------------------------------------------------------------- 1 | limits: 2 | http_max_request_bytes: 60 3 | coprocessor: 4 | url: http://localhost:4005 5 | router: 6 | request: 7 | body: true -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/rhai_logging.router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: "tests/fixtures" 3 | main: "test_callbacks.rhai" 4 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/rhai_reload.router.yaml: -------------------------------------------------------------------------------- 1 | # Note: This file is not checked into the repository but is created/removed during test execution so that we can test rhai script reloading 2 | rhai: 3 | scripts: "tests/fixtures" 4 | main: "test_reload.rhai" 5 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/small_connection_shutdown_timeout.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | metrics: 4 | prometheus: 5 | listen: 127.0.0.1:4000 6 | enabled: true 7 | path: /metrics 8 | supergraph: 9 | early_cancel: true 10 | connection_shutdown_timeout: 1ms -------------------------------------------------------------------------------- /apollo-router/tests/integration/fixtures/small_connection_shutdown_timeout_updated.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | metrics: 4 | prometheus: 5 | listen: 127.0.0.1:4000 6 | enabled: true 7 | path: /metrics 8 | supergraph: 9 | early_cancel: true 10 | connection_shutdown_timeout: 2ms -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__coprocessor__error_not_propagated_to_client.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/coprocessor.rs 3 | expression: response.text().await? 4 | --- 5 | "{\"errors\":[{\"message\":\"internal server error\",\"extensions\":{\"code\":\"INTERNAL_SERVER_ERROR\"}}]}" 6 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__redis__apq.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/redis_test.rs 3 | expression: s.unwrap() 4 | --- 5 | "{ topProducts { name name2:name } }" 6 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__redis__entity_cache_basic-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/redis.rs 3 | expression: "v.as_object().unwrap().get(\"data\").unwrap()" 4 | --- 5 | { 6 | "reviews": [ 7 | { 8 | "body": "I can sit on it" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__redis__entity_cache_basic-5.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/redis.rs 3 | expression: "v.as_object().unwrap().get(\"data\").unwrap()" 4 | --- 5 | { 6 | "reviews": [ 7 | { 8 | "body": "I can eat in it" 9 | } 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__redis__entity_cache_with_nested_field_set-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/redis.rs 3 | expression: "v.as_object().unwrap().get(\"data\").unwrap()" 4 | --- 5 | { 6 | "name": "test" 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__redis__entity_cache_with_nested_field_set-5.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/redis.rs 3 | expression: "v.as_object().unwrap().get(\"data\").unwrap()" 4 | --- 5 | { 6 | "name": "test" 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__traffic_shaping__connector_rate_limit-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/traffic_shaping.rs 3 | expression: response 4 | --- 5 | "{\"data\":null,\"errors\":[{\"message\":\"Your request has been rate limited\",\"path\":[],\"extensions\":{\"code\":\"REQUEST_RATE_LIMITED\"}}]}" 6 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__traffic_shaping__connector_rate_limit.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/traffic_shaping.rs 3 | expression: response 4 | --- 5 | "{\"data\":{\"posts\":[{\"id\":1}]}}" 6 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__traffic_shaping__connector_timeout.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/traffic_shaping.rs 3 | expression: response 4 | --- 5 | "{\"data\":null,\"errors\":[{\"message\":\"Your request has been timed out\",\"path\":[],\"extensions\":{\"code\":\"GATEWAY_TIMEOUT\"}}]}" 6 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__traffic_shaping__router_rate_limit-2.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/traffic_shaping.rs 3 | expression: response 4 | --- 5 | "{\"errors\":[{\"message\":\"Your request has been rate limited\",\"extensions\":{\"code\":\"REQUEST_RATE_LIMITED\"}}]}" 6 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__traffic_shaping__router_rate_limit.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/traffic_shaping.rs 3 | expression: response 4 | --- 5 | "{\"data\":{\"topProducts\":[{\"name\":\"Table\"},{\"name\":\"Couch\"},{\"name\":\"Chair\"}]}}" 6 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__traffic_shaping__router_timeout.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/traffic_shaping.rs 3 | expression: response 4 | --- 5 | "{\"errors\":[{\"message\":\"Your request has been timed out\",\"extensions\":{\"code\":\"GATEWAY_TIMEOUT\"}}]}" 6 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/snapshots/integration_tests__integration__traffic_shaping__subgraph_rate_limit.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration/traffic_shaping.rs 3 | expression: response.text().await? 4 | --- 5 | "{\"data\":{\"topProducts\":[{\"name\":\"Table\"},{\"name\":\"Couch\"},{\"name\":\"Chair\"}]}}" 6 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/telemetry/fixtures/deprecated_spans.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | apollo: 3 | field_level_instrumentation_sampler: always_off 4 | instrumentation: 5 | spans: 6 | mode: deprecated 7 | -------------------------------------------------------------------------------- /apollo-router/tests/integration/telemetry/fixtures/override_client_name.rhai: -------------------------------------------------------------------------------- 1 | fn router_service(service) { 2 | const request_callback = Fn("process_request"); 3 | service.map_request(request_callback); 4 | } 5 | 6 | fn process_request(request) { 7 | request.context["apollo::telemetry::client_name"] = "foo"; 8 | } 9 | -------------------------------------------------------------------------------- /apollo-router/tests/samples/basic/interface-object/README.md: -------------------------------------------------------------------------------- 1 | 2 | # @interfaceObject 3 | 4 | Test the [`@interfaceObject`](https://www.apollographql.com/docs/federation/entities/interfaces/) directive. -------------------------------------------------------------------------------- /apollo-router/tests/samples/basic/interface-object/configuration.yaml: -------------------------------------------------------------------------------- 1 | override_subgraph_url: 2 | products: http://localhost:4005 3 | include_subgraph_errors: 4 | all: true 5 | 6 | plugins: 7 | experimental.expose_query_plan: true -------------------------------------------------------------------------------- /apollo-router/tests/samples/core/defer/README.md: -------------------------------------------------------------------------------- 1 | This is an example test 2 | 3 | This file adds some context that will be displayed on test failure -------------------------------------------------------------------------------- /apollo-router/tests/samples/core/defer/configuration.yaml: -------------------------------------------------------------------------------- 1 | override_subgraph_url: 2 | products: http://localhost:4005 3 | include_subgraph_errors: 4 | all: true 5 | -------------------------------------------------------------------------------- /apollo-router/tests/samples/core/query1/README.md: -------------------------------------------------------------------------------- 1 | This is an example test 2 | 3 | This file adds some context that will be displayed on test failure -------------------------------------------------------------------------------- /apollo-router/tests/samples/core/query1/configuration.yaml: -------------------------------------------------------------------------------- 1 | override_subgraph_url: 2 | products: http://localhost:4005 3 | include_subgraph_errors: 4 | all: true 5 | -------------------------------------------------------------------------------- /apollo-router/tests/samples/core/query2/README.md: -------------------------------------------------------------------------------- 1 | This is an example test 2 | 3 | This file adds some context that will be displayed on test failure -------------------------------------------------------------------------------- /apollo-router/tests/samples/core/query2/configuration.yaml: -------------------------------------------------------------------------------- 1 | override_subgraph_url: 2 | products: http://localhost:4005 3 | include_subgraph_errors: 4 | all: true 5 | -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/connectors-debugging/README.md: -------------------------------------------------------------------------------- 1 | Example testing the connectors debugging extensions feature 2 | 3 | Hardcodes a port for the http snapshot server because the port appears in the expected responses. The port is outside the range of 32768..60999 to avoid conflicts with the other tests that use ephemeral ports. -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/connectors-debugging/configuration.yaml: -------------------------------------------------------------------------------- 1 | include_subgraph_errors: 2 | all: true 3 | 4 | connectors: 5 | debug_extensions: true 6 | sources: 7 | connectors.jsonPlaceholder: 8 | override_url: http://localhost:4007 9 | 10 | telemetry: 11 | exporters: 12 | logging: 13 | stdout: 14 | format: text -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/connectors-defer/README.md: -------------------------------------------------------------------------------- 1 | This tests using defer and connectors. It uses a mutation because there was an expansion bug with mutation root type definitions that appeared only when using defer. -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/connectors-defer/configuration.yaml: -------------------------------------------------------------------------------- 1 | include_subgraph_errors: 2 | all: true 3 | 4 | connectors: 5 | sources: 6 | connectors.jsonPlaceholder: 7 | override_url: http://localhost:4007 8 | 9 | telemetry: 10 | exporters: 11 | logging: 12 | stdout: 13 | format: text -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/connectors-demand-control/README.md: -------------------------------------------------------------------------------- 1 | Tests using @cost and @listSize directives with connectors -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/connectors-pqs/README.md: -------------------------------------------------------------------------------- 1 | This is a regression test for a problem that occurs when using PQs and connectors. See 2 | apollo-federation/src/connectors/json_selection/selection_set.rs 3 | -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/connectors/README.md: -------------------------------------------------------------------------------- 1 | Example testing the connectors feature -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/entity-cache/defer/README.md: -------------------------------------------------------------------------------- 1 | # Entity cache with @defer 2 | 3 | This tests `Cache-Control` aggregation when using the `@defer` directive. -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/entity-cache/private/README.md: -------------------------------------------------------------------------------- 1 | # Entity cache: private data caching 2 | 3 | This tests private data caching in the entity cache: 4 | -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/persisted-queries/basic/README.md: -------------------------------------------------------------------------------- 1 | # Persisted Queries 2 | 3 | This tests Persisted Query Lists: https://www.apollographql.com/docs/graphos/routing/security/persisted-queries 4 | -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/persisted-queries/basic/rhai/main.rhai: -------------------------------------------------------------------------------- 1 | fn router_service(service) { 2 | service.map_request(|request| { 3 | if (request.headers.contains("plugin-client-name")) { 4 | request.context["apollo_persisted_queries::client_name"] = request.headers["plugin-client-name"]; 5 | } 6 | }); 7 | } 8 | -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/progressive-override/basic/README.md: -------------------------------------------------------------------------------- 1 | # Progressive override 2 | 3 | This tests subgraph field migration: https://www.apollographql.com/docs/federation/entities/migrate-fields/ -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/progressive-override/basic/configuration.yaml: -------------------------------------------------------------------------------- 1 | include_subgraph_errors: 2 | all: true 3 | 4 | telemetry: 5 | exporters: 6 | logging: 7 | stdout: 8 | format: text 9 | 10 | plugins: 11 | experimental.expose_query_plan: true -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/progressive-override/warmup/README.md: -------------------------------------------------------------------------------- 1 | # Progressive override warmup 2 | 3 | This checks progrssive override behaviour across router reloads -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/progressive-override/warmup/configuration.yaml: -------------------------------------------------------------------------------- 1 | include_subgraph_errors: 2 | all: true 3 | 4 | supergraph: 5 | query_planning: 6 | warmed_up_queries: 5 7 | 8 | telemetry: 9 | exporters: 10 | logging: 11 | stdout: 12 | format: text 13 | 14 | plugins: 15 | experimental.expose_query_plan: true -------------------------------------------------------------------------------- /apollo-router/tests/samples/enterprise/query-planning-redis/README.md: -------------------------------------------------------------------------------- 1 | This is an example test 2 | 3 | This file adds some context that will be displayed on test failure -------------------------------------------------------------------------------- /apollo-router/tests/snapshots/integration_tests__defer_default_variable-3.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration_tests.rs 3 | expression: stream.next().await.unwrap().unwrap() 4 | --- 5 | { 6 | "data": { 7 | "me": { 8 | "id": "1", 9 | "name": "Ada Lovelace" 10 | } 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/tests/snapshots/integration_tests__defer_default_variable.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration_tests.rs 3 | expression: stream.next().await.unwrap().unwrap() 4 | --- 5 | { 6 | "data": { 7 | "me": { 8 | "id": "1" 9 | } 10 | }, 11 | "hasNext": true 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/tests/snapshots/integration_tests__defer_empty_primary_response.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration_tests.rs 3 | expression: stream.next().await.unwrap().unwrap() 4 | --- 5 | { 6 | "data": {}, 7 | "hasNext": true 8 | } 9 | -------------------------------------------------------------------------------- /apollo-router/tests/snapshots/integration_tests__defer_path.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration_tests.rs 3 | expression: stream.next().await.unwrap().unwrap() 4 | --- 5 | { 6 | "data": { 7 | "me": { 8 | "id": "1" 9 | } 10 | }, 11 | "hasNext": true 12 | } 13 | -------------------------------------------------------------------------------- /apollo-router/tests/snapshots/integration_tests__include_if_works.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: apollo-router/tests/integration_tests.rs 3 | expression: stream.next().await.unwrap().unwrap() 4 | --- 5 | { 6 | "data": {} 7 | } 8 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | services: 3 | redis: 4 | image: redis:latest 5 | ports: 6 | - 6379:6379 7 | zipkin: 8 | image: openzipkin/zipkin:latest 9 | ports: 10 | - 9411:9411 11 | datadog: 12 | image: ghcr.io/datadog/dd-apm-test-agent/ddapm-test-agent:latest 13 | ports: 14 | - 8126:8126 -------------------------------------------------------------------------------- /dockerfiles/router.yaml: -------------------------------------------------------------------------------- 1 | # Configuration of the router's HTTP server 2 | # Default configuration for container 3 | supergraph: 4 | # The socket address and port to listen on 5 | listen: 0.0.0.0:4000 6 | -------------------------------------------------------------------------------- /docs/README.md: -------------------------------------------------------------------------------- 1 | See the *Documentation* section of ../CONTRIBUTING.md. 2 | -------------------------------------------------------------------------------- /docs/shared/config/authorization.mdx: -------------------------------------------------------------------------------- 1 | ### `authorization` 2 | 3 | ```yaml title="authorization" 4 | authorization: 5 | directives: 6 | dry_run: false 7 | enabled: true 8 | errors: 9 | log: true 10 | response: errors 11 | reject_unauthorized: false 12 | require_authentication: false 13 | ``` 14 | -------------------------------------------------------------------------------- /docs/shared/config/batching.mdx: -------------------------------------------------------------------------------- 1 | ### `batching` 2 | 3 | ```yaml title="batching" 4 | batching: 5 | enabled: false 6 | maximum_size: null 7 | mode: batch_http_link 8 | subgraph: 9 | all: 10 | enabled: false 11 | subgraphs: {} 12 | ``` 13 | -------------------------------------------------------------------------------- /docs/shared/config/connectors.mdx: -------------------------------------------------------------------------------- 1 | ### `connectors` 2 | 3 | ```yaml title="connectors" 4 | connectors: 5 | debug_extensions: false 6 | expose_sources_in_context: false 7 | max_requests_per_operation_per_source: null 8 | sources: {} 9 | subgraphs: {} 10 | ``` 11 | -------------------------------------------------------------------------------- /docs/shared/config/cors.mdx: -------------------------------------------------------------------------------- 1 | ### `cors` 2 | 3 | ```yaml title="cors" 4 | cors: 5 | allow_any_origin: false 6 | allow_credentials: false 7 | allow_headers: [] 8 | expose_headers: null 9 | match_origins: null 10 | max_age: null 11 | methods: 12 | - GET 13 | - POST 14 | - OPTIONS 15 | origins: 16 | - https://studio.apollographql.com 17 | ``` 18 | -------------------------------------------------------------------------------- /docs/shared/config/csrf.mdx: -------------------------------------------------------------------------------- 1 | ### `csrf` 2 | 3 | ```yaml title="csrf" 4 | csrf: 5 | required_headers: 6 | - x-apollo-operation-name 7 | - apollo-require-preflight 8 | unsafe_disabled: false 9 | ``` 10 | -------------------------------------------------------------------------------- /docs/shared/config/demand_control.mdx: -------------------------------------------------------------------------------- 1 | ### `demand_control` 2 | 3 | ```yaml title="demand_control" 4 | demand_control: 5 | enabled: false 6 | mode: measure 7 | strategy: 8 | static_estimated: 9 | list_size: 0 10 | max: 0.0 11 | ``` 12 | -------------------------------------------------------------------------------- /docs/shared/config/experimental_chaos.mdx: -------------------------------------------------------------------------------- 1 | ### `experimental_chaos` 2 | 3 | ```yaml title="experimental_chaos" 4 | experimental_chaos: 5 | force_reload: null 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/shared/config/experimental_type_conditioned_fetching.mdx: -------------------------------------------------------------------------------- 1 | ### `experimental_type_conditioned_fetching` 2 | 3 | ```yaml title="experimental_type_conditioned_fetching" 4 | experimental_type_conditioned_fetching: false 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/shared/config/fleet_detector.mdx: -------------------------------------------------------------------------------- 1 | ### `fleet_detector` 2 | 3 | ```yaml title="fleet_detector" 4 | fleet_detector: {} 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/shared/config/forbid_mutations.mdx: -------------------------------------------------------------------------------- 1 | ### `forbid_mutations` 2 | 3 | ```yaml title="forbid_mutations" 4 | forbid_mutations: false 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/shared/config/headers.mdx: -------------------------------------------------------------------------------- 1 | ### `headers` 2 | 3 | ```yaml title="headers" 4 | headers: 5 | all: 6 | request: 7 | - insert: 8 | name: example_name 9 | value: example_value 10 | subgraphs: {} 11 | ``` 12 | -------------------------------------------------------------------------------- /docs/shared/config/health_check.mdx: -------------------------------------------------------------------------------- 1 | ### `health_check` 2 | 3 | ```yaml title="health_check" 4 | health_check: 5 | enabled: true 6 | listen: example_listen 7 | path: /health 8 | readiness: 9 | allowed: 100 10 | interval: 11 | sampling: 0s 12 | unready: null 13 | ``` 14 | -------------------------------------------------------------------------------- /docs/shared/config/homepage.mdx: -------------------------------------------------------------------------------- 1 | ### `homepage` 2 | 3 | ```yaml title="homepage" 4 | homepage: 5 | enabled: true 6 | graph_ref: null 7 | ``` 8 | -------------------------------------------------------------------------------- /docs/shared/config/include_subgraph_errors.mdx: -------------------------------------------------------------------------------- 1 | ### `include_subgraph_errors` 2 | 3 | ```yaml title="include_subgraph_errors" 4 | include_subgraph_errors: 5 | all: false 6 | subgraphs: {} 7 | ``` 8 | -------------------------------------------------------------------------------- /docs/shared/config/license_enforcement.mdx: -------------------------------------------------------------------------------- 1 | ### `license_enforcement` 2 | 3 | ```yaml title="license_enforcement" 4 | license_enforcement: {} 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/shared/config/override_subgraph_url.mdx: -------------------------------------------------------------------------------- 1 | ### `override_subgraph_url` 2 | 3 | ```yaml title="override_subgraph_url" 4 | override_subgraph_url: {} 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/shared/config/plugins.mdx: -------------------------------------------------------------------------------- 1 | ### `plugins` 2 | 3 | ```yaml title="plugins" 4 | plugins: unknown_type_plugins 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/shared/config/preview_file_uploads.mdx: -------------------------------------------------------------------------------- 1 | ### `preview_file_uploads` 2 | 3 | ```yaml title="preview_file_uploads" 4 | preview_file_uploads: 5 | enabled: false 6 | protocols: 7 | multipart: 8 | enabled: true 9 | limits: 10 | max_file_size: example_max_file_size 11 | max_files: 0 12 | mode: stream 13 | ``` 14 | -------------------------------------------------------------------------------- /docs/shared/config/progressive_override.mdx: -------------------------------------------------------------------------------- 1 | ### `progressive_override` 2 | 3 | ```yaml title="progressive_override" 4 | progressive_override: {} 5 | ``` 6 | -------------------------------------------------------------------------------- /docs/shared/config/rhai.mdx: -------------------------------------------------------------------------------- 1 | ### `rhai` 2 | 3 | ```yaml title="rhai" 4 | rhai: 5 | main: example_main 6 | scripts: example_scripts 7 | ``` 8 | -------------------------------------------------------------------------------- /docs/shared/config/sandbox.mdx: -------------------------------------------------------------------------------- 1 | ### `sandbox` 2 | 3 | ```yaml title="sandbox" 4 | sandbox: 5 | enabled: false 6 | ``` 7 | -------------------------------------------------------------------------------- /docs/shared/elastic-notice.mdx: -------------------------------------------------------------------------------- 1 | 2 | 3 | The Apollo Router Core source code and all its distributions are made available under the [Elastic License v2.0 (ELv2) license](https://www.apollographql.com/docs/resources/elastic-license-v2-faq/#can-i-extend-or-modify-the-gateway-or-router-by-creating-plugins). 4 | 5 | 6 | -------------------------------------------------------------------------------- /docs/source/404.md: -------------------------------------------------------------------------------- 1 | --- 2 | title: "404" 3 | description: Page not found 4 | --- 5 | 6 | 7 | -------------------------------------------------------------------------------- /docs/source/images/as-landing-page-production.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/as-landing-page-production.jpg -------------------------------------------------------------------------------- /docs/source/images/as-landing-page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/as-landing-page.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/add-a-subgraph.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/add-a-subgraph.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/create-new-graph.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/create-new-graph.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/create-resource-share-final.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/create-resource-share-final.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/delete-network-associations.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/delete-network-associations.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/delete-resource-share.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/delete-resource-share.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/graphos-service.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/graphos-service.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/http-listener.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/http-listener.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/insights-page.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/insights-page.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/manage-capacity.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/manage-capacity.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/managed-permissions.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/managed-permissions.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/register-targets.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/register-targets.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/request-rate.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/request-rate.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/resource-principal.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/resource-principal.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/resource-selection.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/resource-selection.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/resource-share-summary.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/resource-share-summary.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/service-identifiers.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/service-identifiers.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/service-rules.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/service-rules.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/target-group-configuration.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/target-group-configuration.jpg -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/vpc-lattice-access-logs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/vpc-lattice-access-logs.png -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/vpc-lattice-metrics.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/vpc-lattice-metrics.png -------------------------------------------------------------------------------- /docs/source/images/cloud-dedicated/vpc-lattice-routing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/cloud-dedicated/vpc-lattice-routing.png -------------------------------------------------------------------------------- /docs/source/images/demand-control-example-cost-result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/demand-control-example-cost-result.png -------------------------------------------------------------------------------- /docs/source/images/demand-control-example-histogram.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/demand-control-example-histogram.png -------------------------------------------------------------------------------- /docs/source/images/demand-control-example-updated-cost-result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/demand-control-example-updated-cost-result.png -------------------------------------------------------------------------------- /docs/source/images/demand-control-example-updated-costs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/demand-control-example-updated-costs.png -------------------------------------------------------------------------------- /docs/source/images/initiating-endpoint.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/initiating-endpoint.jpg -------------------------------------------------------------------------------- /docs/source/images/router-quickstart-sandbox.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/router-quickstart-sandbox.jpg -------------------------------------------------------------------------------- /docs/source/images/router/cloud-router-configuration.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/router/cloud-router-configuration.jpg -------------------------------------------------------------------------------- /docs/source/images/router/cloud-router-details.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/router/cloud-router-details.jpg -------------------------------------------------------------------------------- /docs/source/images/router/cloud-router-region-ord.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/router/cloud-router-region-ord.jpg -------------------------------------------------------------------------------- /docs/source/images/router/datadog-apm-ops-example.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/router/datadog-apm-ops-example.png -------------------------------------------------------------------------------- /docs/source/images/router/router-endpoint.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/router/router-endpoint.jpg -------------------------------------------------------------------------------- /docs/source/images/sandbox.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/sandbox.jpg -------------------------------------------------------------------------------- /docs/source/images/studio-trace.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/docs/source/images/studio-trace.jpg -------------------------------------------------------------------------------- /examples/add-timestamp-header/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates header and context manipulation via Rhai script. 4 | 5 | Usage: 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/add-timestamp-header/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: add_timestamp_header.rhai 4 | -------------------------------------------------------------------------------- /examples/async-auth/rust/.skipconfigvalidation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/examples/async-auth/rust/.skipconfigvalidation -------------------------------------------------------------------------------- /examples/async-auth/rust/allowedClientIds.json: -------------------------------------------------------------------------------- 1 | [ 2 | "avery", 3 | "benjamin", 4 | "bryn", 5 | "cecile", 6 | "gary", 7 | "geoffroy", 8 | "irina", 9 | "jeremy", 10 | "jesse" 11 | ] 12 | -------------------------------------------------------------------------------- /examples/async-auth/rust/router.yaml: -------------------------------------------------------------------------------- 1 | plugins: 2 | # this plugin takes a path 3 | # and will read from it everytime a request comes in 4 | # to check if a client can run a query 5 | example.allow_client_id_from_file: 6 | header: "x-client-id" # the header to check for 7 | path: "allowedClientIds.json" # the file that contains the allowed clients list 8 | -------------------------------------------------------------------------------- /examples/cache-control/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates header and context manipulation via Rhai script. 4 | 5 | Usage: 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/cache-control/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: cache_control.rhai 4 | -------------------------------------------------------------------------------- /examples/context/rust/.skipconfigvalidation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/examples/context/rust/.skipconfigvalidation -------------------------------------------------------------------------------- /examples/context/rust/router.yaml: -------------------------------------------------------------------------------- 1 | plugins: 2 | # this plugin doesn't have any configuration 3 | # mention it here and you're set! 4 | example.context_data: 5 | -------------------------------------------------------------------------------- /examples/cookies-to-headers/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates header manipulation via Rhai script. 4 | 5 | Usage: 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/cookies-to-headers/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: cookies_to_headers.rhai 4 | -------------------------------------------------------------------------------- /examples/coprocessor-override-launchdarkly/.env: -------------------------------------------------------------------------------- 1 | # Required 2 | LAUNCH_DARKLY_ENVIRONMENT= 3 | LAUNCH_DARKLY_PROJECT_ID= 4 | LAUNCH_DARKLY_REST_API_KEY= 5 | # Optional 6 | PORT= -------------------------------------------------------------------------------- /examples/coprocessor-override-launchdarkly/.gitignore: -------------------------------------------------------------------------------- 1 | dist 2 | node_modules -------------------------------------------------------------------------------- /examples/coprocessor-override-launchdarkly/router.example.yaml: -------------------------------------------------------------------------------- 1 | coprocessor: 2 | url: http://localhost:3000 # Required. Replace with the URL of your coprocessor's HTTP endpoint. 3 | supergraph: # Hook into the supergraph service 4 | request: 5 | context: true 6 | -------------------------------------------------------------------------------- /examples/coprocessor-subgraph/nodejs/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | -------------------------------------------------------------------------------- /examples/coprocessor-subgraph/rust/.skipconfigvalidation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/examples/coprocessor-subgraph/rust/.skipconfigvalidation -------------------------------------------------------------------------------- /examples/coprocessor-subgraph/rust/README.md: -------------------------------------------------------------------------------- 1 | # External Subgraph Rust example 2 | 3 | This is an example that involves a router that exposes a custom endpoint as a coprocessor. 4 | 5 | ## Usage 6 | 7 | - Start the router 8 | 9 | ``` 10 | $ APOLLO_KEY="YOUR_APOLLO_KEY" APOLLO_GRAPH_REF="YOUR_APOLLO_GRAPH_REF" cargo run -- --configuration router.yaml 11 | ``` 12 | -------------------------------------------------------------------------------- /examples/coprocessor-surrogate-cache-key/nodejs/.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | package-lock.json 3 | -------------------------------------------------------------------------------- /examples/custom-global-allocator/.gitignore: -------------------------------------------------------------------------------- 1 | Cargo.lock -------------------------------------------------------------------------------- /examples/data-response-mutate/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates extracting body details and header manipulation via Rhai script. 4 | 5 | Usage: 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/data-response-mutate/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: rhai_data_response_mutate.rhai 4 | -------------------------------------------------------------------------------- /examples/error-response-mutate/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates extracting body details and header manipulation via Rhai script. 4 | 5 | Usage: 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/error-response-mutate/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: rhai_error_response_mutate.rhai 4 | -------------------------------------------------------------------------------- /examples/forbid-anonymous-operations/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates header and context manipulation via Rhai script. 4 | 5 | Usage: 6 | ```bash 7 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 8 | ``` 9 | -------------------------------------------------------------------------------- /examples/forbid-anonymous-operations/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: forbid_anonymous_operations.rhai 4 | sandbox: 5 | enabled: true 6 | # make sure you enable introspection 7 | supergraph: 8 | introspection: true 9 | # make sure homepage is disabled 10 | homepage: 11 | enabled: false 12 | -------------------------------------------------------------------------------- /examples/forbid-anonymous-operations/rust/.skipconfigvalidation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/examples/forbid-anonymous-operations/rust/.skipconfigvalidation -------------------------------------------------------------------------------- /examples/forbid-anonymous-operations/rust/router.yaml: -------------------------------------------------------------------------------- 1 | plugins: 2 | # this plugin doesn't have any configuration 3 | # mention it here and you're set! 4 | example.forbid_anonymous_operations: 5 | -------------------------------------------------------------------------------- /examples/forbid-mutations/README.md: -------------------------------------------------------------------------------- 1 | # Forbid Mutations 2 | 3 | Demonstrates forbidding mutations. 4 | 5 | This is particularly useful for when you are testing the router against an existing Gateway via traffic mirroring. 6 | 7 | ## Usage 8 | 9 | ```bash 10 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 11 | ``` 12 | -------------------------------------------------------------------------------- /examples/forbid-mutations/router.yaml: -------------------------------------------------------------------------------- 1 | # run a router with this configuration from the project's root directory: 2 | # ./router -c ./examples/forbid-mutations/router.yaml -s ./examples/graphql/supergraph.graphql 3 | # You can then open http://localhost:4000 on your browser, 4 | # and try to run a Query and a Mutation in apollo studio. 5 | forbid_mutations: true 6 | -------------------------------------------------------------------------------- /examples/graphql/README.md: -------------------------------------------------------------------------------- 1 | # Common files used in the rest of the examples 2 | -------------------------------------------------------------------------------- /examples/hello-world/rust/.skipconfigvalidation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/examples/hello-world/rust/.skipconfigvalidation -------------------------------------------------------------------------------- /examples/hello-world/rust/router.yaml: -------------------------------------------------------------------------------- 1 | plugins: 2 | # this plugin has one piece of configuration, 3 | # the name of the entity you'd like to say hello to 4 | example.hello_world: 5 | name: "Bob" 6 | -------------------------------------------------------------------------------- /examples/logging/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates basic logging using Rhai. 4 | 5 | Usage: 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/logging/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: rhai_logging.rhai 4 | -------------------------------------------------------------------------------- /examples/op-name-to-header/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates extracting body details and header manipulation via Rhai script. 4 | 5 | Usage: 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/op-name-to-header/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: op_name_to_header.rhai 4 | -------------------------------------------------------------------------------- /examples/status-code-propagation/rust/.skipconfigvalidation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/examples/status-code-propagation/rust/.skipconfigvalidation -------------------------------------------------------------------------------- /examples/subgraph-request-log/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates logging subgraph request details via Rhai script. 4 | 5 | Usage: 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/subgraph-request-log/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: rhai_subgraph_request_log.rhai 4 | -------------------------------------------------------------------------------- /examples/supergraph-sdl/rust/.skipconfigvalidation: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/examples/supergraph-sdl/rust/.skipconfigvalidation -------------------------------------------------------------------------------- /examples/supergraph-sdl/rust/router.yaml: -------------------------------------------------------------------------------- 1 | plugins: 2 | # this plugin doesn't have any configuration 3 | # mention it here and you're set! 4 | example.supergraph_sdl: 5 | -------------------------------------------------------------------------------- /examples/surrogate-cache-key/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates extracting body details and header manipulation via Rhai script. 4 | 5 | Usage: 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/surrogate-cache-key/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: rhai_surrogate_cache_key.rhai 4 | -------------------------------------------------------------------------------- /examples/telemetry/datadog.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | datadog: 7 | enabled: true 8 | endpoint: default 9 | -------------------------------------------------------------------------------- /examples/telemetry/otlp.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | otlp: 7 | enabled: true 8 | endpoint: default 9 | -------------------------------------------------------------------------------- /examples/telemetry/zipkin-agent.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | zipkin: 7 | enabled: true 8 | endpoint: default 9 | -------------------------------------------------------------------------------- /examples/telemetry/zipkin-collector.router.yaml: -------------------------------------------------------------------------------- 1 | telemetry: 2 | exporters: 3 | tracing: 4 | common: 5 | service_name: router 6 | zipkin: 7 | enabled: true 8 | endpoint: "https://example.com" 9 | 10 | -------------------------------------------------------------------------------- /examples/throw-error/rhai/README.md: -------------------------------------------------------------------------------- 1 | # Rhai script 2 | 3 | Demonstrates extracting body details and header manipulation via Rhai script. 4 | 5 | Usage: 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/throw-error/rhai/router.yaml: -------------------------------------------------------------------------------- 1 | rhai: 2 | scripts: src 3 | main: rhai_throw_error.rhai 4 | -------------------------------------------------------------------------------- /examples/unix-sockets/.unixonly: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/apollographql/router/0b9c439f8c3d2e2d55cf0bfd9d4a8818c6c96690/examples/unix-sockets/.unixonly -------------------------------------------------------------------------------- /examples/unix-sockets/README.md: -------------------------------------------------------------------------------- 1 | # Unix sockets 2 | 3 | Demonstrates configuring of the router to listen to a unix socket. 4 | 5 | ## Usage 6 | 7 | ```bash 8 | cargo run -- -s ../../graphql/supergraph.graphql -c ./router_unix.yaml 9 | ``` 10 | -------------------------------------------------------------------------------- /examples/unix-sockets/router_unix.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: /tmp/router.sock 3 | -------------------------------------------------------------------------------- /fuzz/.gitignore: -------------------------------------------------------------------------------- 1 | 2 | target 3 | corpus 4 | artifacts 5 | -------------------------------------------------------------------------------- /fuzz/router.yaml: -------------------------------------------------------------------------------- 1 | supergraph: 2 | listen: 0.0.0.0:4000 3 | introspection: true 4 | sandbox: 5 | enabled: true 6 | homepage: 7 | enabled: false 8 | traffic_shaping: 9 | router: 10 | timeout: 300s 11 | include_subgraph_errors: 12 | all: true -------------------------------------------------------------------------------- /fuzz/subgraph/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "everything-subgraph" 3 | version = "0.1.0" 4 | edition = "2021" 5 | license-file = "../../LICENSE" 6 | 7 | [dependencies] 8 | axum = "0.8" 9 | async-graphql = "7" 10 | async-graphql-axum = "7" 11 | env_logger = "0.11" 12 | tokio = { version = "1.22.0", features = ["time", "full"] } 13 | tower = "0.5.0" 14 | -------------------------------------------------------------------------------- /rust-toolchain.toml: -------------------------------------------------------------------------------- 1 | [toolchain] 2 | # renovate-automation: rustc version 3 | channel = "1.87.0" 4 | components = ["rustfmt", "clippy"] 5 | -------------------------------------------------------------------------------- /xtask/src/commands/changeset/scalars.rs: -------------------------------------------------------------------------------- 1 | /// The GitHub API uses a Scalar called URI. I promise it's still 2 | /// just a String. 3 | #[allow(clippy::upper_case_acronyms)] 4 | pub(crate) type URI = String; 5 | -------------------------------------------------------------------------------- /xtask/src/commands/changeset/snapshots/xtask__commands__changeset__tests__it_templatizes_with_neither_issues_or_prs.snap: -------------------------------------------------------------------------------- 1 | --- 2 | source: src/commands/changeset/mod.rs 3 | expression: rendered_template 4 | --- 5 | ### TITLE 6 | 7 | BODY 8 | 9 | By [@AUTHOR](https://github.com/AUTHOR) 10 | 11 | --------------------------------------------------------------------------------