From 1d05e69af788df3f26d87ee07599f3e94848dcf0 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 26 Oct 2023 17:14:25 +0200 Subject: [PATCH 01/44] add dashboard api for backstage consumption --- .../1/apis/api-653a7e6942033d00015b9059.json | 472 ++++++++++++++++++ 1 file changed, 472 insertions(+) create mode 100644 deployments/tyk/data/tyk-dashboard/1/apis/api-653a7e6942033d00015b9059.json diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-653a7e6942033d00015b9059.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-653a7e6942033d00015b9059.json new file mode 100644 index 00000000..5c3ad6b2 --- /dev/null +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-653a7e6942033d00015b9059.json @@ -0,0 +1,472 @@ +{ + "created_at": "2023-10-26T14:57:45Z", + "api_model": {}, + "api_definition": { + "id": "653a7e6942033d00015b9059", + "name": "Tyk Dashboard", + "slug": "tyk-dashboard", + "listen_port": 0, + "protocol": "", + "enable_proxy_protocol": false, + "api_id": "ce6cb3207c2a45d76cab4b7d399f8041", + "org_id": "5e9d9544a1dcd60001d0ed20", + "use_keyless": true, + "use_oauth2": false, + "external_oauth": { + "enabled": false, + "providers": [] + }, + "use_openid": false, + "openid_options": { + "providers": [], + "segregate_by_client": false + }, + "oauth_meta": { + "allowed_access_types": [], + "allowed_authorize_types": [], + "auth_login_redirect": "" + }, + "auth": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "auth_configs": { + "authToken": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "basic": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "coprocess": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "hmac": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "jwt": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "oauth": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "oidc": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + } + }, + "use_basic_auth": false, + "basic_auth": { + "disable_caching": false, + "cache_ttl": 0, + "extract_from_body": false, + "body_user_regexp": "", + "body_password_regexp": "" + }, + "use_mutual_tls_auth": false, + "client_certificates": [], + "upstream_certificates": {}, + "pinned_public_keys": {}, + "enable_jwt": false, + "use_standard_auth": false, + "use_go_plugin_auth": false, + "enable_coprocess_auth": false, + "custom_plugin_auth_enabled": false, + "jwt_signing_method": "", + "jwt_source": "", + "jwt_identity_base_field": "", + "jwt_client_base_field": "", + "jwt_policy_field_name": "", + "jwt_default_policies": [], + "jwt_issued_at_validation_skew": 0, + "jwt_expires_at_validation_skew": 0, + "jwt_not_before_validation_skew": 0, + "jwt_skip_kid": false, + "scopes": { + "jwt": {}, + "oidc": {} + }, + "jwt_scope_to_policy_mapping": {}, + "jwt_scope_claim_name": "", + "notifications": { + "shared_secret": "", + "oauth_on_keychange_url": "" + }, + "enable_signature_checking": false, + "hmac_allowed_clock_skew": -1, + "hmac_allowed_algorithms": [], + "request_signing": { + "is_enabled": false, + "secret": "", + "key_id": "", + "algorithm": "", + "header_list": [], + "certificate_id": "", + "signature_header": "" + }, + "base_identity_provided_by": "", + "definition": { + "enabled": false, + "name": "", + "default": "", + "location": "header", + "key": "x-api-version", + "strip_path": false, + "strip_versioning_data": false, + "versions": {} + }, + "version_data": { + "not_versioned": true, + "default_version": "", + "versions": { + "Default": { + "name": "Default", + "expires": "", + "paths": { + "ignored": [], + "white_list": [], + "black_list": [] + }, + "use_extended_paths": true, + "extended_paths": { + "persist_graphql": [] + }, + "global_headers": { + "Authorization": "19dbf943e52b494b54e5c984d1ac5d06" + }, + "global_headers_remove": [], + "global_response_headers": {}, + "global_response_headers_remove": [], + "ignore_endpoint_case": false, + "global_size_limit": 0, + "override_target": "" + } + } + }, + "uptime_tests": { + "check_list": [], + "config": { + "expire_utime_after": 0, + "service_discovery": { + "use_discovery_service": false, + "query_endpoint": "", + "use_nested_query": false, + "parent_data_path": "", + "data_path": "", + "port_data_path": "", + "target_path": "", + "use_target_list": false, + "cache_disabled": false, + "cache_timeout": 60, + "endpoint_returns_list": false + }, + "recheck_wait": 0 + } + }, + "proxy": { + "preserve_host_header": false, + "listen_path": "/dashboard/", + "target_url": "http://tyk-dashboard:3000/api", + "disable_strip_slash": true, + "strip_listen_path": true, + "enable_load_balancing": false, + "target_list": [], + "check_host_against_uptime_tests": false, + "service_discovery": { + "use_discovery_service": false, + "query_endpoint": "", + "use_nested_query": false, + "parent_data_path": "", + "data_path": "", + "port_data_path": "", + "target_path": "", + "use_target_list": false, + "cache_disabled": false, + "cache_timeout": 0, + "endpoint_returns_list": false + }, + "transport": { + "ssl_insecure_skip_verify": false, + "ssl_ciphers": [], + "ssl_min_version": 0, + "ssl_max_version": 0, + "ssl_force_common_name_check": false, + "proxy_url": "" + } + }, + "disable_rate_limit": false, + "disable_quota": false, + "custom_middleware": { + "pre": [], + "post": [], + "post_key_auth": [], + "auth_check": { + "disabled": false, + "name": "", + "path": "", + "require_session": false, + "raw_body_only": false + }, + "response": [], + "driver": "", + "id_extractor": { + "disabled": false, + "extract_from": "", + "extract_with": "", + "extractor_config": {} + } + }, + "custom_middleware_bundle": "", + "custom_middleware_bundle_disabled": false, + "cache_options": { + "cache_timeout": 60, + "enable_cache": true, + "cache_all_safe_requests": false, + "cache_response_codes": [], + "enable_upstream_cache_control": false, + "cache_control_ttl_header": "", + "cache_by_headers": [] + }, + "session_lifetime": 0, + "active": true, + "internal": false, + "auth_provider": { + "name": "", + "storage_engine": "", + "meta": {} + }, + "session_provider": { + "name": "", + "storage_engine": "", + "meta": {} + }, + "event_handlers": { + "events": {} + }, + "enable_batch_request_support": false, + "enable_ip_whitelisting": false, + "allowed_ips": [], + "enable_ip_blacklisting": false, + "blacklisted_ips": [], + "dont_set_quota_on_create": false, + "expire_analytics_after": 0, + "response_processors": [], + "CORS": { + "enable": true, + "allowed_origins": [ + "*" + ], + "allowed_methods": [ + "GET", + "POST", + "HEAD" + ], + "allowed_headers": [ + "Origin", + "Accept", + "Content-Type", + "X-Requested-With", + "Authorization" + ], + "exposed_headers": [], + "allow_credentials": false, + "max_age": 24, + "options_passthrough": false, + "debug": false + }, + "domain": "", + "certificates": [], + "do_not_track": false, + "enable_context_vars": false, + "config_data": {}, + "config_data_disabled": false, + "tag_headers": [], + "global_rate_limit": { + "rate": 0, + "per": 0 + }, + "strip_auth_data": false, + "enable_detailed_recording": false, + "graphql": { + "enabled": false, + "execution_mode": "proxyOnly", + "version": "2", + "schema": "", + "type_field_configurations": [], + "playground": { + "enabled": false, + "path": "" + }, + "engine": { + "field_configs": [], + "data_sources": [], + "global_headers": [] + }, + "proxy": { + "auth_headers": {}, + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } + }, + "subgraph": { + "sdl": "" + }, + "supergraph": { + "subgraphs": [], + "merged_sdl": "", + "global_headers": {}, + "disable_query_batching": false + } + }, + "analytics_plugin": {}, + "tags": [], + "detailed_tracing": false + }, + "hook_references": [], + "is_site": false, + "sort_by": 0, + "user_group_owners": [], + "user_owners": [] +} From a158411238e7bd5d030949d1b70b18ec9fe2e2d2 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 26 Oct 2023 17:17:50 +0200 Subject: [PATCH 02/44] inital commit for backstage --- deployments/backstage/bootstrap.sh | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 deployments/backstage/bootstrap.sh diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh new file mode 100644 index 00000000..501fb6f0 --- /dev/null +++ b/deployments/backstage/bootstrap.sh @@ -0,0 +1,5 @@ +#!/bin/bash + +# TODO: +# - move backstage api def into deployment dir +# - automate setting of authz header in api def \ No newline at end of file From 3d26f75ba760253bcdc55a2478e426690bde37fe Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 26 Oct 2023 18:25:14 +0200 Subject: [PATCH 03/44] move api def to backstage directory --- .../data/tyk-dashboard}/api-653a7e6942033d00015b9059.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename deployments/{tyk/data/tyk-dashboard/1/apis => backstage/data/tyk-dashboard}/api-653a7e6942033d00015b9059.json (99%) diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-653a7e6942033d00015b9059.json b/deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json similarity index 99% rename from deployments/tyk/data/tyk-dashboard/1/apis/api-653a7e6942033d00015b9059.json rename to deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json index 5c3ad6b2..e6aa0203 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-653a7e6942033d00015b9059.json +++ b/deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json @@ -273,7 +273,7 @@ "persist_graphql": [] }, "global_headers": { - "Authorization": "19dbf943e52b494b54e5c984d1ac5d06" + "Authorization": "to_be_replaced" }, "global_headers_remove": [], "global_response_headers": {}, From f27b49746945c0a42e0579a6b8370662da0c1c5e Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 26 Oct 2023 18:25:32 +0200 Subject: [PATCH 04/44] import API def for backstage --- deployments/backstage/bootstrap.sh | 21 ++++++++++++++++++--- deployments/backstage/docker-compose.yml | 2 ++ 2 files changed, 20 insertions(+), 3 deletions(-) mode change 100644 => 100755 deployments/backstage/bootstrap.sh create mode 100644 deployments/backstage/docker-compose.yml diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh old mode 100644 new mode 100755 index 501fb6f0..9a81e999 --- a/deployments/backstage/bootstrap.sh +++ b/deployments/backstage/bootstrap.sh @@ -1,5 +1,20 @@ #!/bin/bash -# TODO: -# - move backstage api def into deployment dir -# - automate setting of authz header in api def \ No newline at end of file +source scripts/common.sh +deployment="Backstage" + +log_start_deployment +bootstrap_progress + +dashboard_base_url="http://tyk-dashboard.localhost:3000" +dashboard_api_key=$(get_context_data "1" "dashboard-user" "1" "api-key") + +log_message "Updating Dashboard API definition to use current Dashboard API key" +updated_api_data=$(jq --compact-output --raw-output --arg dashboard_api_key "$dashboard_api_key" '.api_definition.version_data.versions.Default.global_headers.Authorization = $dashboard_api_key' deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json) +log_json_result "$(curl $dashboard_base_url/api/apis -s \ + -H "Authorization: $dashboard_api_key" \ + -d "$updated_api_data")" + +bootstrap_progress + +log_end_deployment \ No newline at end of file diff --git a/deployments/backstage/docker-compose.yml b/deployments/backstage/docker-compose.yml new file mode 100644 index 00000000..c246b90c --- /dev/null +++ b/deployments/backstage/docker-compose.yml @@ -0,0 +1,2 @@ +--- +version: '3.3' From 96cdf7bdde104853719fbc6a159ec4456845b079 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 26 Oct 2023 18:29:48 +0200 Subject: [PATCH 05/44] minor amends --- deployments/backstage/bootstrap.sh | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh index 9a81e999..7afd99ff 100755 --- a/deployments/backstage/bootstrap.sh +++ b/deployments/backstage/bootstrap.sh @@ -11,10 +11,15 @@ dashboard_api_key=$(get_context_data "1" "dashboard-user" "1" "api-key") log_message "Updating Dashboard API definition to use current Dashboard API key" updated_api_data=$(jq --compact-output --raw-output --arg dashboard_api_key "$dashboard_api_key" '.api_definition.version_data.versions.Default.global_headers.Authorization = $dashboard_api_key' deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json) +log_message " Ok" + +log_message "Adding updated Dashboard API definition to Tyk" log_json_result "$(curl $dashboard_base_url/api/apis -s \ -H "Authorization: $dashboard_api_key" \ -d "$updated_api_data")" bootstrap_progress +log_end_deployment -log_end_deployment \ No newline at end of file +# blank output to overwrite "bootstrapping..." message +echo -e "\033[2K " From 3d5b19bdbd526247f43a3fdd4110d5b6a72f4225 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 26 Oct 2023 18:33:01 +0200 Subject: [PATCH 06/44] todo --- deployments/backstage/todo.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 deployments/backstage/todo.md diff --git a/deployments/backstage/todo.md b/deployments/backstage/todo.md new file mode 100644 index 00000000..4c6c3165 --- /dev/null +++ b/deployments/backstage/todo.md @@ -0,0 +1 @@ +- dynamically create image for backstage so it doesn't have to be run separately? (as per approach taken by the `subscriptions` deployment, using a Dockerfile) \ No newline at end of file From 6b1a6a92030fdf9e4b2ece5ce43641de11dd768a Mon Sep 17 00:00:00 2001 From: David Garvey Date: Tue, 31 Oct 2023 16:43:31 +0100 Subject: [PATCH 07/44] use shortcut function --- deployments/backstage/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh index 7afd99ff..2ab60137 100755 --- a/deployments/backstage/bootstrap.sh +++ b/deployments/backstage/bootstrap.sh @@ -11,7 +11,7 @@ dashboard_api_key=$(get_context_data "1" "dashboard-user" "1" "api-key") log_message "Updating Dashboard API definition to use current Dashboard API key" updated_api_data=$(jq --compact-output --raw-output --arg dashboard_api_key "$dashboard_api_key" '.api_definition.version_data.versions.Default.global_headers.Authorization = $dashboard_api_key' deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json) -log_message " Ok" +log_ok log_message "Adding updated Dashboard API definition to Tyk" log_json_result "$(curl $dashboard_base_url/api/apis -s \ From 3f7080aca2477fa4463e7d9213fef1775a20ac91 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Fri, 8 Dec 2023 17:33:53 +0100 Subject: [PATCH 08/44] add api event webhook for backstage --- deployments/backstage/bootstrap.sh | 15 +- .../api-653a7e6942033d00015b9059.json | 472 ------------------ 2 files changed, 7 insertions(+), 480 deletions(-) delete mode 100644 deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh index 2ab60137..1d6cb24a 100755 --- a/deployments/backstage/bootstrap.sh +++ b/deployments/backstage/bootstrap.sh @@ -8,15 +8,14 @@ bootstrap_progress dashboard_base_url="http://tyk-dashboard.localhost:3000" dashboard_api_key=$(get_context_data "1" "dashboard-user" "1" "api-key") +dashboard_admin_api_credentials=$(cat deployments/tyk/volumes/tyk-dashboard/tyk_analytics.conf | jq -r .admin_secret 2>> logs/bootstrap.log) -log_message "Updating Dashboard API definition to use current Dashboard API key" -updated_api_data=$(jq --compact-output --raw-output --arg dashboard_api_key "$dashboard_api_key" '.api_definition.version_data.versions.Default.global_headers.Authorization = $dashboard_api_key' deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json) -log_ok - -log_message "Adding updated Dashboard API definition to Tyk" -log_json_result "$(curl $dashboard_base_url/api/apis -s \ - -H "Authorization: $dashboard_api_key" \ - -d "$updated_api_data")" +log_message "Adding API event webhook to default organisation" +updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/api/catalog/tyk/api", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) +api_response=$(curl $dashboard_base_url/admin/organisations/5e9d9544a1dcd60001d0ed20 --request PUT -s \ + -H "admin-auth: $dashboard_admin_api_credentials" \ + -d "$updated_org_data" 2>> logs/bootstrap.log) +log_json_result "$api_response" bootstrap_progress log_end_deployment diff --git a/deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json b/deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json deleted file mode 100644 index e6aa0203..00000000 --- a/deployments/backstage/data/tyk-dashboard/api-653a7e6942033d00015b9059.json +++ /dev/null @@ -1,472 +0,0 @@ -{ - "created_at": "2023-10-26T14:57:45Z", - "api_model": {}, - "api_definition": { - "id": "653a7e6942033d00015b9059", - "name": "Tyk Dashboard", - "slug": "tyk-dashboard", - "listen_port": 0, - "protocol": "", - "enable_proxy_protocol": false, - "api_id": "ce6cb3207c2a45d76cab4b7d399f8041", - "org_id": "5e9d9544a1dcd60001d0ed20", - "use_keyless": true, - "use_oauth2": false, - "external_oauth": { - "enabled": false, - "providers": [] - }, - "use_openid": false, - "openid_options": { - "providers": [], - "segregate_by_client": false - }, - "oauth_meta": { - "allowed_access_types": [], - "allowed_authorize_types": [], - "auth_login_redirect": "" - }, - "auth": { - "name": "", - "use_param": false, - "param_name": "", - "use_cookie": false, - "cookie_name": "", - "disable_header": false, - "auth_header_name": "Authorization", - "use_certificate": false, - "validate_signature": false, - "signature": { - "algorithm": "", - "header": "", - "use_param": false, - "param_name": "", - "secret": "", - "allowed_clock_skew": 0, - "error_code": 0, - "error_message": "" - } - }, - "auth_configs": { - "authToken": { - "name": "", - "use_param": false, - "param_name": "", - "use_cookie": false, - "cookie_name": "", - "disable_header": false, - "auth_header_name": "Authorization", - "use_certificate": false, - "validate_signature": false, - "signature": { - "algorithm": "", - "header": "", - "use_param": false, - "param_name": "", - "secret": "", - "allowed_clock_skew": 0, - "error_code": 0, - "error_message": "" - } - }, - "basic": { - "name": "", - "use_param": false, - "param_name": "", - "use_cookie": false, - "cookie_name": "", - "disable_header": false, - "auth_header_name": "Authorization", - "use_certificate": false, - "validate_signature": false, - "signature": { - "algorithm": "", - "header": "", - "use_param": false, - "param_name": "", - "secret": "", - "allowed_clock_skew": 0, - "error_code": 0, - "error_message": "" - } - }, - "coprocess": { - "name": "", - "use_param": false, - "param_name": "", - "use_cookie": false, - "cookie_name": "", - "disable_header": false, - "auth_header_name": "Authorization", - "use_certificate": false, - "validate_signature": false, - "signature": { - "algorithm": "", - "header": "", - "use_param": false, - "param_name": "", - "secret": "", - "allowed_clock_skew": 0, - "error_code": 0, - "error_message": "" - } - }, - "hmac": { - "name": "", - "use_param": false, - "param_name": "", - "use_cookie": false, - "cookie_name": "", - "disable_header": false, - "auth_header_name": "Authorization", - "use_certificate": false, - "validate_signature": false, - "signature": { - "algorithm": "", - "header": "", - "use_param": false, - "param_name": "", - "secret": "", - "allowed_clock_skew": 0, - "error_code": 0, - "error_message": "" - } - }, - "jwt": { - "name": "", - "use_param": false, - "param_name": "", - "use_cookie": false, - "cookie_name": "", - "disable_header": false, - "auth_header_name": "Authorization", - "use_certificate": false, - "validate_signature": false, - "signature": { - "algorithm": "", - "header": "", - "use_param": false, - "param_name": "", - "secret": "", - "allowed_clock_skew": 0, - "error_code": 0, - "error_message": "" - } - }, - "oauth": { - "name": "", - "use_param": false, - "param_name": "", - "use_cookie": false, - "cookie_name": "", - "disable_header": false, - "auth_header_name": "Authorization", - "use_certificate": false, - "validate_signature": false, - "signature": { - "algorithm": "", - "header": "", - "use_param": false, - "param_name": "", - "secret": "", - "allowed_clock_skew": 0, - "error_code": 0, - "error_message": "" - } - }, - "oidc": { - "name": "", - "use_param": false, - "param_name": "", - "use_cookie": false, - "cookie_name": "", - "disable_header": false, - "auth_header_name": "Authorization", - "use_certificate": false, - "validate_signature": false, - "signature": { - "algorithm": "", - "header": "", - "use_param": false, - "param_name": "", - "secret": "", - "allowed_clock_skew": 0, - "error_code": 0, - "error_message": "" - } - } - }, - "use_basic_auth": false, - "basic_auth": { - "disable_caching": false, - "cache_ttl": 0, - "extract_from_body": false, - "body_user_regexp": "", - "body_password_regexp": "" - }, - "use_mutual_tls_auth": false, - "client_certificates": [], - "upstream_certificates": {}, - "pinned_public_keys": {}, - "enable_jwt": false, - "use_standard_auth": false, - "use_go_plugin_auth": false, - "enable_coprocess_auth": false, - "custom_plugin_auth_enabled": false, - "jwt_signing_method": "", - "jwt_source": "", - "jwt_identity_base_field": "", - "jwt_client_base_field": "", - "jwt_policy_field_name": "", - "jwt_default_policies": [], - "jwt_issued_at_validation_skew": 0, - "jwt_expires_at_validation_skew": 0, - "jwt_not_before_validation_skew": 0, - "jwt_skip_kid": false, - "scopes": { - "jwt": {}, - "oidc": {} - }, - "jwt_scope_to_policy_mapping": {}, - "jwt_scope_claim_name": "", - "notifications": { - "shared_secret": "", - "oauth_on_keychange_url": "" - }, - "enable_signature_checking": false, - "hmac_allowed_clock_skew": -1, - "hmac_allowed_algorithms": [], - "request_signing": { - "is_enabled": false, - "secret": "", - "key_id": "", - "algorithm": "", - "header_list": [], - "certificate_id": "", - "signature_header": "" - }, - "base_identity_provided_by": "", - "definition": { - "enabled": false, - "name": "", - "default": "", - "location": "header", - "key": "x-api-version", - "strip_path": false, - "strip_versioning_data": false, - "versions": {} - }, - "version_data": { - "not_versioned": true, - "default_version": "", - "versions": { - "Default": { - "name": "Default", - "expires": "", - "paths": { - "ignored": [], - "white_list": [], - "black_list": [] - }, - "use_extended_paths": true, - "extended_paths": { - "persist_graphql": [] - }, - "global_headers": { - "Authorization": "to_be_replaced" - }, - "global_headers_remove": [], - "global_response_headers": {}, - "global_response_headers_remove": [], - "ignore_endpoint_case": false, - "global_size_limit": 0, - "override_target": "" - } - } - }, - "uptime_tests": { - "check_list": [], - "config": { - "expire_utime_after": 0, - "service_discovery": { - "use_discovery_service": false, - "query_endpoint": "", - "use_nested_query": false, - "parent_data_path": "", - "data_path": "", - "port_data_path": "", - "target_path": "", - "use_target_list": false, - "cache_disabled": false, - "cache_timeout": 60, - "endpoint_returns_list": false - }, - "recheck_wait": 0 - } - }, - "proxy": { - "preserve_host_header": false, - "listen_path": "/dashboard/", - "target_url": "http://tyk-dashboard:3000/api", - "disable_strip_slash": true, - "strip_listen_path": true, - "enable_load_balancing": false, - "target_list": [], - "check_host_against_uptime_tests": false, - "service_discovery": { - "use_discovery_service": false, - "query_endpoint": "", - "use_nested_query": false, - "parent_data_path": "", - "data_path": "", - "port_data_path": "", - "target_path": "", - "use_target_list": false, - "cache_disabled": false, - "cache_timeout": 0, - "endpoint_returns_list": false - }, - "transport": { - "ssl_insecure_skip_verify": false, - "ssl_ciphers": [], - "ssl_min_version": 0, - "ssl_max_version": 0, - "ssl_force_common_name_check": false, - "proxy_url": "" - } - }, - "disable_rate_limit": false, - "disable_quota": false, - "custom_middleware": { - "pre": [], - "post": [], - "post_key_auth": [], - "auth_check": { - "disabled": false, - "name": "", - "path": "", - "require_session": false, - "raw_body_only": false - }, - "response": [], - "driver": "", - "id_extractor": { - "disabled": false, - "extract_from": "", - "extract_with": "", - "extractor_config": {} - } - }, - "custom_middleware_bundle": "", - "custom_middleware_bundle_disabled": false, - "cache_options": { - "cache_timeout": 60, - "enable_cache": true, - "cache_all_safe_requests": false, - "cache_response_codes": [], - "enable_upstream_cache_control": false, - "cache_control_ttl_header": "", - "cache_by_headers": [] - }, - "session_lifetime": 0, - "active": true, - "internal": false, - "auth_provider": { - "name": "", - "storage_engine": "", - "meta": {} - }, - "session_provider": { - "name": "", - "storage_engine": "", - "meta": {} - }, - "event_handlers": { - "events": {} - }, - "enable_batch_request_support": false, - "enable_ip_whitelisting": false, - "allowed_ips": [], - "enable_ip_blacklisting": false, - "blacklisted_ips": [], - "dont_set_quota_on_create": false, - "expire_analytics_after": 0, - "response_processors": [], - "CORS": { - "enable": true, - "allowed_origins": [ - "*" - ], - "allowed_methods": [ - "GET", - "POST", - "HEAD" - ], - "allowed_headers": [ - "Origin", - "Accept", - "Content-Type", - "X-Requested-With", - "Authorization" - ], - "exposed_headers": [], - "allow_credentials": false, - "max_age": 24, - "options_passthrough": false, - "debug": false - }, - "domain": "", - "certificates": [], - "do_not_track": false, - "enable_context_vars": false, - "config_data": {}, - "config_data_disabled": false, - "tag_headers": [], - "global_rate_limit": { - "rate": 0, - "per": 0 - }, - "strip_auth_data": false, - "enable_detailed_recording": false, - "graphql": { - "enabled": false, - "execution_mode": "proxyOnly", - "version": "2", - "schema": "", - "type_field_configurations": [], - "playground": { - "enabled": false, - "path": "" - }, - "engine": { - "field_configs": [], - "data_sources": [], - "global_headers": [] - }, - "proxy": { - "auth_headers": {}, - "request_headers": {}, - "use_response_extensions": { - "on_error_forwarding": false - } - }, - "subgraph": { - "sdl": "" - }, - "supergraph": { - "subgraphs": [], - "merged_sdl": "", - "global_headers": {}, - "disable_query_batching": false - } - }, - "analytics_plugin": {}, - "tags": [], - "detailed_tracing": false - }, - "hook_references": [], - "is_site": false, - "sort_by": 0, - "user_group_owners": [], - "user_owners": [] -} From b4fc53eabb525fed6b9453c3f384bf73d0a86465 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 13 Dec 2023 13:03:26 +0100 Subject: [PATCH 09/44] update webhook target --- deployments/backstage/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh index 1d6cb24a..1c376676 100755 --- a/deployments/backstage/bootstrap.sh +++ b/deployments/backstage/bootstrap.sh @@ -11,7 +11,7 @@ dashboard_api_key=$(get_context_data "1" "dashboard-user" "1" "api-key") dashboard_admin_api_credentials=$(cat deployments/tyk/volumes/tyk-dashboard/tyk_analytics.conf | jq -r .admin_secret 2>> logs/bootstrap.log) log_message "Adding API event webhook to default organisation" -updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/api/catalog/tyk/api", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) +updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/api/catalog/tyk/api/hook", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) api_response=$(curl $dashboard_base_url/admin/organisations/5e9d9544a1dcd60001d0ed20 --request PUT -s \ -H "admin-auth: $dashboard_admin_api_credentials" \ -d "$updated_org_data" 2>> logs/bootstrap.log) From 50b3f9666aa8861d3ded0075cf288a266556547d Mon Sep 17 00:00:00 2001 From: ilijabojanovic Date: Tue, 31 Oct 2023 10:02:35 +0100 Subject: [PATCH 10/44] Test 5.2.2 release --- deployments/tyk/docker-compose.yml | 6 +++--- deployments/tyk2/docker-compose.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deployments/tyk/docker-compose.yml b/deployments/tyk/docker-compose.yml index 78fe1a93..da008bd3 100755 --- a/deployments/tyk/docker-compose.yml +++ b/deployments/tyk/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: tyk-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.1} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.2-rc3} ports: - 3000:3000 networks: @@ -23,7 +23,7 @@ services: - tyk-redis - tyk-mongo tyk-gateway: - image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.1} + image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.2-rc5} ports: - 8080:8080 - 8086:8086 @@ -55,7 +55,7 @@ services: - tyk-redis - tyk-dashboard tyk-gateway-2: - image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.1} + image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.2-rc5} ports: - 8081:8080 networks: diff --git a/deployments/tyk2/docker-compose.yml b/deployments/tyk2/docker-compose.yml index f876a497..877debc1 100644 --- a/deployments/tyk2/docker-compose.yml +++ b/deployments/tyk2/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.3' services: tyk2-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.1} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.2-rc3} ports: - 3002:3000 networks: @@ -21,7 +21,7 @@ services: - tyk2-redis - tyk2-mongo tyk2-gateway: - image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.1} + image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.2-rc5} ports: - 8085:8080 networks: From 44a2d8dafefb79815b60b321b41ef97876cd2791 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 1 Nov 2023 11:41:53 +0100 Subject: [PATCH 11/44] bump gateway and dashboard images to 5.2.2 --- deployments/mdcb/docker-compose.yml | 2 +- deployments/sso/docker-compose.yml | 2 +- deployments/tyk/docker-compose.yml | 6 +++--- deployments/tyk2/docker-compose.yml | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/deployments/mdcb/docker-compose.yml b/deployments/mdcb/docker-compose.yml index 9c242c9a..f962fccc 100644 --- a/deployments/mdcb/docker-compose.yml +++ b/deployments/mdcb/docker-compose.yml @@ -14,7 +14,7 @@ services: - tyk-redis - tyk-mongo tyk-worker-gateway: - image: tykio/tyk-gateway:${GATEWAY_WORKER_VERSION:-v5.2.1} + image: tykio/tyk-gateway:${GATEWAY_WORKER_VERSION:-v5.2.2} ports: - 8090:8080 networks: diff --git a/deployments/sso/docker-compose.yml b/deployments/sso/docker-compose.yml index b40d4a9e..67c56efa 100644 --- a/deployments/sso/docker-compose.yml +++ b/deployments/sso/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.3' services: tyk-dashboard-sso: - image: tykio/tyk-dashboard:${DASHBOARD_SSO_VERSION:-v5.2.1} + image: tykio/tyk-dashboard:${DASHBOARD_SSO_VERSION:-v5.2.2} ports: - 3001:3000 networks: diff --git a/deployments/tyk/docker-compose.yml b/deployments/tyk/docker-compose.yml index da008bd3..b035b921 100755 --- a/deployments/tyk/docker-compose.yml +++ b/deployments/tyk/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: tyk-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.2-rc3} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.2} ports: - 3000:3000 networks: @@ -23,7 +23,7 @@ services: - tyk-redis - tyk-mongo tyk-gateway: - image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.2-rc5} + image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.2} ports: - 8080:8080 - 8086:8086 @@ -55,7 +55,7 @@ services: - tyk-redis - tyk-dashboard tyk-gateway-2: - image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.2-rc5} + image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.2} ports: - 8081:8080 networks: diff --git a/deployments/tyk2/docker-compose.yml b/deployments/tyk2/docker-compose.yml index 877debc1..849d7eb4 100644 --- a/deployments/tyk2/docker-compose.yml +++ b/deployments/tyk2/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.3' services: tyk2-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.2-rc3} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.2} ports: - 3002:3000 networks: @@ -21,7 +21,7 @@ services: - tyk2-redis - tyk2-mongo tyk2-gateway: - image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.2-rc5} + image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.2} ports: - 8085:8080 networks: From b359922fb5bd7edd13a2cc75aeb0fd4142a4f0d2 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 1 Nov 2023 11:46:21 +0100 Subject: [PATCH 12/44] add pause to try to avoid 429 response --- deployments/analytics-kibana/bootstrap.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/deployments/analytics-kibana/bootstrap.sh b/deployments/analytics-kibana/bootstrap.sh index fa89ce9f..9eec0b28 100755 --- a/deployments/analytics-kibana/bootstrap.sh +++ b/deployments/analytics-kibana/bootstrap.sh @@ -10,6 +10,9 @@ kibana_base_url="http://localhost:5601" log_message "Waiting for kibana to return desired response" wait_for_response "$kibana_base_url/app/kibana" "200" +log_message "Pausing briefly before attempting to apply Kibana configuration, to avoid receiving HTTP 429 (too many requests)" +sleep 2 + log_message "Adding index pattern to Kibana" log_http_result "$(curl $kibana_base_url/api/saved_objects/index-pattern/1208b8f0-815b-11ea-b0b2-c9a8a88fbfb2?overwrite=true -s -o /dev/null -w "%{http_code}" \ -H 'Content-Type: application/json' \ From 01c40dac0f0b5f1b6c7776c286c9251aadae69d2 Mon Sep 17 00:00:00 2001 From: JRWu Date: Wed, 15 Nov 2023 11:09:06 -0500 Subject: [PATCH 13/44] Setting elasticsearch pump configuration value extended_stats to true. --- .../analytics-kibana/volumes/tyk-pump/pump-elasticsearch.conf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployments/analytics-kibana/volumes/tyk-pump/pump-elasticsearch.conf b/deployments/analytics-kibana/volumes/tyk-pump/pump-elasticsearch.conf index 3fb4e0be..3ff06ac0 100644 --- a/deployments/analytics-kibana/volumes/tyk-pump/pump-elasticsearch.conf +++ b/deployments/analytics-kibana/volumes/tyk-pump/pump-elasticsearch.conf @@ -52,7 +52,7 @@ "enable_sniffing": false, "document_type": "tyk_analytics", "rolling_index": false, - "extended_stats": false, + "extended_stats": true, "version": "6", "bulk_config": { "workers": 2, From cb8e3e6d52250b80992a723c7b0e00155d62f922 Mon Sep 17 00:00:00 2001 From: Andy Date: Tue, 21 Nov 2023 15:49:06 +0000 Subject: [PATCH 14/44] Update README.md --- deployments/otel-jaeger/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployments/otel-jaeger/README.md b/deployments/otel-jaeger/README.md index c152cca6..d3b51f4d 100644 --- a/deployments/otel-jaeger/README.md +++ b/deployments/otel-jaeger/README.md @@ -11,7 +11,7 @@ It has been configured to use in-memory storage, so will not retain data once th Run the `up.sh` script with the `otel-jaeger` parameter: ``` -./up.sh otel/jaeger +./up.sh otel-jaeger ``` ## Usage From 3139ba2aaecd44f03174dbfd64666a1693bba973 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 30 Nov 2023 15:02:01 +0100 Subject: [PATCH 15/44] map MDCB port to localhost --- deployments/mdcb/docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/deployments/mdcb/docker-compose.yml b/deployments/mdcb/docker-compose.yml index f962fccc..a46a9013 100644 --- a/deployments/mdcb/docker-compose.yml +++ b/deployments/mdcb/docker-compose.yml @@ -3,6 +3,8 @@ version: '3.3' services: tyk-mdcb: image: tykio/tyk-mdcb-docker:${MDCB_VERSION:-v2.4.0} + ports: + - 9091:9091 networks: - tyk volumes: From 45006daef5e70958b8f8e2e33f4fc239de8a5630 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 30 Nov 2023 15:03:16 +0100 Subject: [PATCH 16/44] Add external httpbin apidef + key --- .../1/apis/api-65686ca0f57de80001acf0c6.json | 470 ++++++++++++++++++ .../bearer-token-9-external_httpbin_key.json | 24 + 2 files changed, 494 insertions(+) create mode 100644 deployments/tyk/data/tyk-dashboard/1/apis/api-65686ca0f57de80001acf0c6.json create mode 100644 deployments/tyk/data/tyk-gateway/keys/bearer-token/bearer-token-9-external_httpbin_key.json diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-65686ca0f57de80001acf0c6.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-65686ca0f57de80001acf0c6.json new file mode 100644 index 00000000..c2f0b888 --- /dev/null +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-65686ca0f57de80001acf0c6.json @@ -0,0 +1,470 @@ +{ + "created_at": "2023-11-30T11:06:08Z", + "api_model": {}, + "api_definition": { + "id": "65686ca0f57de80001acf0c6", + "name": "External HTTPbin", + "slug": "external-httpbin", + "listen_port": 0, + "protocol": "", + "enable_proxy_protocol": false, + "api_id": "627efb71ebae49df7a853b9769b65fce", + "org_id": "5e9d9544a1dcd60001d0ed20", + "use_keyless": false, + "use_oauth2": false, + "external_oauth": { + "enabled": false, + "providers": [] + }, + "use_openid": false, + "openid_options": { + "providers": [], + "segregate_by_client": false + }, + "oauth_meta": { + "allowed_access_types": [], + "allowed_authorize_types": [], + "auth_login_redirect": "" + }, + "auth": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "auth_configs": { + "authToken": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "basic": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "coprocess": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "hmac": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "jwt": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "oauth": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "oidc": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + } + }, + "use_basic_auth": false, + "basic_auth": { + "disable_caching": false, + "cache_ttl": 0, + "extract_from_body": false, + "body_user_regexp": "", + "body_password_regexp": "" + }, + "use_mutual_tls_auth": false, + "client_certificates": [], + "upstream_certificates": {}, + "pinned_public_keys": {}, + "enable_jwt": false, + "use_standard_auth": true, + "use_go_plugin_auth": false, + "enable_coprocess_auth": false, + "custom_plugin_auth_enabled": false, + "jwt_signing_method": "", + "jwt_source": "", + "jwt_identity_base_field": "", + "jwt_client_base_field": "", + "jwt_policy_field_name": "", + "jwt_default_policies": [], + "jwt_issued_at_validation_skew": 0, + "jwt_expires_at_validation_skew": 0, + "jwt_not_before_validation_skew": 0, + "jwt_skip_kid": false, + "scopes": { + "jwt": {}, + "oidc": {} + }, + "jwt_scope_to_policy_mapping": {}, + "jwt_scope_claim_name": "", + "notifications": { + "shared_secret": "", + "oauth_on_keychange_url": "" + }, + "enable_signature_checking": false, + "hmac_allowed_clock_skew": -1, + "hmac_allowed_algorithms": [], + "request_signing": { + "is_enabled": false, + "secret": "", + "key_id": "", + "algorithm": "", + "header_list": [], + "certificate_id": "", + "signature_header": "" + }, + "base_identity_provided_by": "", + "definition": { + "enabled": false, + "name": "", + "default": "", + "location": "header", + "key": "x-api-version", + "strip_path": false, + "strip_versioning_data": false, + "versions": {} + }, + "version_data": { + "not_versioned": true, + "default_version": "", + "versions": { + "Default": { + "name": "Default", + "expires": "", + "paths": { + "ignored": [], + "white_list": [], + "black_list": [] + }, + "use_extended_paths": true, + "extended_paths": { + "persist_graphql": [] + }, + "global_headers": {}, + "global_headers_remove": [], + "global_response_headers": {}, + "global_response_headers_remove": [], + "ignore_endpoint_case": false, + "global_size_limit": 0, + "override_target": "" + } + } + }, + "uptime_tests": { + "check_list": [], + "config": { + "expire_utime_after": 0, + "service_discovery": { + "use_discovery_service": false, + "query_endpoint": "", + "use_nested_query": false, + "parent_data_path": "", + "data_path": "", + "port_data_path": "", + "target_path": "", + "use_target_list": false, + "cache_disabled": false, + "cache_timeout": 60, + "endpoint_returns_list": false + }, + "recheck_wait": 0 + } + }, + "proxy": { + "preserve_host_header": false, + "listen_path": "/external-httpbin/", + "target_url": "http://httpbin.org/", + "disable_strip_slash": true, + "strip_listen_path": true, + "enable_load_balancing": false, + "target_list": [], + "check_host_against_uptime_tests": false, + "service_discovery": { + "use_discovery_service": false, + "query_endpoint": "", + "use_nested_query": false, + "parent_data_path": "", + "data_path": "", + "port_data_path": "", + "target_path": "", + "use_target_list": false, + "cache_disabled": false, + "cache_timeout": 0, + "endpoint_returns_list": false + }, + "transport": { + "ssl_insecure_skip_verify": false, + "ssl_ciphers": [], + "ssl_min_version": 0, + "ssl_max_version": 0, + "ssl_force_common_name_check": false, + "proxy_url": "" + } + }, + "disable_rate_limit": false, + "disable_quota": false, + "custom_middleware": { + "pre": [], + "post": [], + "post_key_auth": [], + "auth_check": { + "disabled": false, + "name": "", + "path": "", + "require_session": false, + "raw_body_only": false + }, + "response": [], + "driver": "", + "id_extractor": { + "disabled": false, + "extract_from": "", + "extract_with": "", + "extractor_config": {} + } + }, + "custom_middleware_bundle": "", + "custom_middleware_bundle_disabled": false, + "cache_options": { + "cache_timeout": 60, + "enable_cache": true, + "cache_all_safe_requests": false, + "cache_response_codes": [], + "enable_upstream_cache_control": false, + "cache_control_ttl_header": "", + "cache_by_headers": [] + }, + "session_lifetime": 0, + "active": true, + "internal": false, + "auth_provider": { + "name": "", + "storage_engine": "", + "meta": {} + }, + "session_provider": { + "name": "", + "storage_engine": "", + "meta": {} + }, + "event_handlers": { + "events": {} + }, + "enable_batch_request_support": false, + "enable_ip_whitelisting": false, + "allowed_ips": [], + "enable_ip_blacklisting": false, + "blacklisted_ips": [], + "dont_set_quota_on_create": false, + "expire_analytics_after": 0, + "response_processors": [], + "CORS": { + "enable": false, + "allowed_origins": [ + "*" + ], + "allowed_methods": [ + "GET", + "POST", + "HEAD" + ], + "allowed_headers": [ + "Origin", + "Accept", + "Content-Type", + "X-Requested-With", + "Authorization" + ], + "exposed_headers": [], + "allow_credentials": false, + "max_age": 24, + "options_passthrough": false, + "debug": false + }, + "domain": "", + "certificates": [], + "do_not_track": false, + "enable_context_vars": false, + "config_data": {}, + "config_data_disabled": false, + "tag_headers": [], + "global_rate_limit": { + "rate": 0, + "per": 0 + }, + "strip_auth_data": false, + "enable_detailed_recording": false, + "graphql": { + "enabled": false, + "execution_mode": "proxyOnly", + "version": "2", + "schema": "", + "type_field_configurations": [], + "playground": { + "enabled": false, + "path": "" + }, + "engine": { + "field_configs": [], + "data_sources": [], + "global_headers": [] + }, + "proxy": { + "auth_headers": {}, + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } + }, + "subgraph": { + "sdl": "" + }, + "supergraph": { + "subgraphs": [], + "merged_sdl": "", + "global_headers": {}, + "disable_query_batching": false + } + }, + "analytics_plugin": {}, + "tags": [], + "detailed_tracing": false + }, + "hook_references": [], + "is_site": false, + "sort_by": 0, + "user_group_owners": [], + "user_owners": [] +} diff --git a/deployments/tyk/data/tyk-gateway/keys/bearer-token/bearer-token-9-external_httpbin_key.json b/deployments/tyk/data/tyk-gateway/keys/bearer-token/bearer-token-9-external_httpbin_key.json new file mode 100644 index 00000000..f47b1c4f --- /dev/null +++ b/deployments/tyk/data/tyk-gateway/keys/bearer-token/bearer-token-9-external_httpbin_key.json @@ -0,0 +1,24 @@ +{ + "last_check": 0, + "allowance": 1000, + "rate": 1000, + "per": 60, + "throttle_interval": -1, + "throttle_retry_limit": -1, + "expires": 0, + "quota_max": -1, + "quota_renews": 1587524070, + "quota_remaining": -1, + "quota_renewal_rate": -1, + "access_rights": { + "627efb71ebae49df7a853b9769b65fce": { + "api_name": "Extenal HTTPbin", + "api_id": "627efb71ebae49df7a853b9769b65fce", + "versions": ["Default"], + "allowed_urls": [], + "limit": null, + "allowance_scope": "" + } + }, + "org_id": "5e9d9544a1dcd60001d0ed20" +} \ No newline at end of file From aa51688d71f66cf50e03f6cab83f7f1867775903 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 30 Nov 2023 15:04:56 +0100 Subject: [PATCH 17/44] schema update --- .../1/apis/api-5ead711f5759610001818678.json | 15 ++++++++++----- .../1/apis/api-5ead711f5759610001818679.json | 11 ++++++++--- .../1/apis/api-5ead711f575961000181867a.json | 11 ++++++++--- .../1/apis/api-5ead7120575961000181867b.json | 11 ++++++++--- .../1/apis/api-5ead7120575961000181867c.json | 11 ++++++++--- .../1/apis/api-5ead7120575961000181867d.json | 11 ++++++++--- .../1/apis/api-5ead727f5759610001818687.json | 11 ++++++++--- .../1/apis/api-5eb6346743f0440001373f5b.json | 11 ++++++++--- .../1/apis/api-5ebcad27bcec140001bca92d.json | 11 ++++++++--- .../1/apis/api-5ebd51f8ad691100014b4c6f.json | 11 ++++++++--- .../1/apis/api-5eed929be9e7a6000127a6d9.json | 11 ++++++++--- .../1/apis/api-5efa93c4f7502d0001cf4a1a.json | 11 ++++++++--- .../1/apis/api-5f339452522d9f00019d0046.json | 11 ++++++++--- .../1/apis/api-5f535c7e74cbbf00019db1fd.json | 11 ++++++++--- .../1/apis/api-5f535c8c74cbbf00019db1fe.json | 11 ++++++++--- .../1/apis/api-5fdacb0281a4960001064139.json | 11 ++++++++--- .../1/apis/api-6024c601afd3d900011f60c9.json | 11 ++++++++--- .../1/apis/api-609a1bdf8756d10001351aa9.json | 11 ++++++++--- .../1/apis/api-60b4968df312ae0001e1ad0d.json | 15 ++++++++++----- .../1/apis/api-60b8d132cd45340001bec761.json | 15 ++++++++++----- .../1/apis/api-60d42ddacf741c00019727d9.json | 11 ++++++++--- .../1/apis/api-610a838a03ca38000122e111.json | 11 ++++++++--- .../1/apis/api-615172e48852f00001522ed5.json | 11 ++++++++--- .../1/apis/api-615175ee8852f00001522ed6.json | 11 ++++++++--- .../1/apis/api-615d2dbd8bf3980001c7c6c1.json | 11 ++++++++--- .../1/apis/api-61946f3536dbb90001b7aed5.json | 11 ++++++++--- .../1/apis/api-619471e736dbb90001b7aed6.json | 11 ++++++++--- .../1/apis/api-619472b536dbb90001b7aed7.json | 11 ++++++++--- .../1/apis/api-61c406297333700001d15861.json | 11 ++++++++--- .../1/apis/api-61ca28234d94310001957b4d.json | 11 ++++++++--- .../1/apis/api-61d89590fb3c3800017895ee.json | 11 ++++++++--- .../1/apis/api-61d895fdfb3c3800017895ef.json | 11 ++++++++--- .../1/apis/api-620e87e0fcade600016df5f9.json | 11 ++++++++--- .../1/apis/api-6225a1b137d93600015a1731.json | 11 ++++++++--- .../1/apis/api-62a0ec2592faf50001395816.json | 11 ++++++++--- .../1/apis/api-641c14bf0fffb800010197bc.json | 11 ++++++++--- .../1/apis/api-641c14ce0fffb800010197bd.json | 11 ++++++++--- .../1/apis/api-641c14e80fffb800010197be.json | 11 ++++++++--- .../policies/policy-5ead7120575961000181867f.json | 2 +- .../policies/policy-5ead71205759610001818680.json | 2 +- .../policies/policy-5ead71205759610001818681.json | 2 +- .../2/apis/api-5f51f0991339530001ad60a1.json | 11 ++++++++--- 42 files changed, 321 insertions(+), 126 deletions(-) diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f5759610001818678.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f5759610001818678.json index 67b56cd3..aa983796 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f5759610001818678.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f5759610001818678.json @@ -299,7 +299,7 @@ "api_model": {}, "event_timeout": 60, "header_map": {}, - "id": "649d3621c1da160001f3f2e1", + "id": "65687b7aaedc3d0001953a3d", "method": "POST", "name": "Webhook Receiver Post", "org_id": "5e9d9544a1dcd60001d0ed20", @@ -354,11 +354,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -371,7 +375,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [ { @@ -379,7 +384,7 @@ "event_timeout": 60, "hook": { "api_model": {}, - "id": "649d3621c1da160001f3f2e1", + "id": "65687b7aaedc3d0001953a3d", "org_id": "5e9d9544a1dcd60001d0ed20", "name": "Webhook Receiver Post", "method": "POST", diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f5759610001818679.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f5759610001818679.json index baa0e14a..3113d0ed 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f5759610001818679.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f5759610001818679.json @@ -323,11 +323,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -342,7 +346,8 @@ "analytics_plugin": {}, "tags": [ "tyk-gateway-2" - ] + ], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f575961000181867a.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f575961000181867a.json index 08ab6a5e..505bf175 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f575961000181867a.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead711f575961000181867a.json @@ -647,11 +647,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -666,7 +670,8 @@ "analytics_plugin": {}, "tags": [ "tyk-gateway-2" - ] + ], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867b.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867b.json index 0d2d366f..d83f657f 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867b.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867b.json @@ -339,11 +339,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -356,7 +360,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867c.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867c.json index 85834bf1..17874592 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867c.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867c.json @@ -321,11 +321,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -338,7 +342,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867d.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867d.json index 55a33e34..26ebeb4b 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867d.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead7120575961000181867d.json @@ -326,11 +326,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -343,7 +347,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead727f5759610001818687.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead727f5759610001818687.json index df4f2250..9859e31a 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead727f5759610001818687.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ead727f5759610001818687.json @@ -330,11 +330,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -347,7 +351,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5eb6346743f0440001373f5b.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5eb6346743f0440001373f5b.json index d85b46de..ce3cb4fb 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5eb6346743f0440001373f5b.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5eb6346743f0440001373f5b.json @@ -426,11 +426,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -443,7 +447,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ebcad27bcec140001bca92d.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ebcad27bcec140001bca92d.json index a79f7cdb..35efa7ae 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ebcad27bcec140001bca92d.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ebcad27bcec140001bca92d.json @@ -429,11 +429,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -446,7 +450,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ebd51f8ad691100014b4c6f.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ebd51f8ad691100014b4c6f.json index 9d705f40..42255e31 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5ebd51f8ad691100014b4c6f.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5ebd51f8ad691100014b4c6f.json @@ -440,11 +440,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -457,7 +461,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5eed929be9e7a6000127a6d9.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5eed929be9e7a6000127a6d9.json index 89f9b2d4..9c7cfc70 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5eed929be9e7a6000127a6d9.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5eed929be9e7a6000127a6d9.json @@ -426,11 +426,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -443,7 +447,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5efa93c4f7502d0001cf4a1a.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5efa93c4f7502d0001cf4a1a.json index 25030bc8..acef93e6 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5efa93c4f7502d0001cf4a1a.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5efa93c4f7502d0001cf4a1a.json @@ -434,11 +434,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -454,7 +458,8 @@ "tags": [ "cluster1", "cluster2" - ] + ], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5f339452522d9f00019d0046.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5f339452522d9f00019d0046.json index ed8743d7..4f5740e6 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5f339452522d9f00019d0046.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5f339452522d9f00019d0046.json @@ -426,11 +426,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -443,7 +447,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5f535c7e74cbbf00019db1fd.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5f535c7e74cbbf00019db1fd.json index a240c4d6..b9f1bbec 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5f535c7e74cbbf00019db1fd.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5f535c7e74cbbf00019db1fd.json @@ -426,11 +426,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -443,7 +447,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5f535c8c74cbbf00019db1fe.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5f535c8c74cbbf00019db1fe.json index e73852cd..be1e6673 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5f535c8c74cbbf00019db1fe.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5f535c8c74cbbf00019db1fe.json @@ -426,11 +426,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -443,7 +447,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-5fdacb0281a4960001064139.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-5fdacb0281a4960001064139.json index 1c407d6f..1e9138a8 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-5fdacb0281a4960001064139.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-5fdacb0281a4960001064139.json @@ -438,11 +438,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -455,7 +459,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-6024c601afd3d900011f60c9.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-6024c601afd3d900011f60c9.json index f476262e..2bc3eb5e 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-6024c601afd3d900011f60c9.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-6024c601afd3d900011f60c9.json @@ -438,11 +438,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -455,7 +459,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-609a1bdf8756d10001351aa9.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-609a1bdf8756d10001351aa9.json index c32f27ed..353b0ba6 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-609a1bdf8756d10001351aa9.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-609a1bdf8756d10001351aa9.json @@ -440,11 +440,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -457,7 +461,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-60b4968df312ae0001e1ad0d.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-60b4968df312ae0001e1ad0d.json index 51d8a716..f6546f96 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-60b4968df312ae0001e1ad0d.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-60b4968df312ae0001e1ad0d.json @@ -446,11 +446,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -464,10 +468,11 @@ }, "analytics_plugin": { "enable": true, - "func_name": "MaskAnalyticsData", - "plugin_path": "plugins/go/example/example-go-plugin.so" + "plugin_path": "plugins/go/example/example-go-plugin.so", + "func_name": "MaskAnalyticsData" }, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-60b8d132cd45340001bec761.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-60b8d132cd45340001bec761.json index b1dfa7ca..27a58c4e 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-60b8d132cd45340001bec761.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-60b8d132cd45340001bec761.json @@ -469,11 +469,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -487,10 +491,11 @@ }, "analytics_plugin": { "enable": true, - "func_name": "MaskAnalyticsData", - "plugin_path": "plugins/go/example/example-go-plugin.so" + "plugin_path": "plugins/go/example/example-go-plugin.so", + "func_name": "MaskAnalyticsData" }, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-60d42ddacf741c00019727d9.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-60d42ddacf741c00019727d9.json index f445cd9e..85502bca 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-60d42ddacf741c00019727d9.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-60d42ddacf741c00019727d9.json @@ -446,11 +446,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -463,7 +467,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-610a838a03ca38000122e111.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-610a838a03ca38000122e111.json index a4230ca8..13e46bb4 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-610a838a03ca38000122e111.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-610a838a03ca38000122e111.json @@ -438,11 +438,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -455,7 +459,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-615172e48852f00001522ed5.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-615172e48852f00001522ed5.json index b890ca6b..e04376cc 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-615172e48852f00001522ed5.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-615172e48852f00001522ed5.json @@ -462,11 +462,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -479,7 +483,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-615175ee8852f00001522ed6.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-615175ee8852f00001522ed6.json index 0f0a3e71..90b435bf 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-615175ee8852f00001522ed6.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-615175ee8852f00001522ed6.json @@ -461,11 +461,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -478,7 +482,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-615d2dbd8bf3980001c7c6c1.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-615d2dbd8bf3980001c7c6c1.json index 6312d26a..76b8b43a 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-615d2dbd8bf3980001c7c6c1.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-615d2dbd8bf3980001c7c6c1.json @@ -446,11 +446,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -463,7 +467,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-61946f3536dbb90001b7aed5.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-61946f3536dbb90001b7aed5.json index 8f8de6ee..d0781e7c 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-61946f3536dbb90001b7aed5.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-61946f3536dbb90001b7aed5.json @@ -488,11 +488,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -505,7 +509,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-619471e736dbb90001b7aed6.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-619471e736dbb90001b7aed6.json index b0942f9a..03356611 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-619471e736dbb90001b7aed6.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-619471e736dbb90001b7aed6.json @@ -440,11 +440,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -457,7 +461,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-619472b536dbb90001b7aed7.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-619472b536dbb90001b7aed7.json index 083566b4..b3411c01 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-619472b536dbb90001b7aed7.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-619472b536dbb90001b7aed7.json @@ -440,11 +440,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -457,7 +461,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-61c406297333700001d15861.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-61c406297333700001d15861.json index 8734992b..7a97f911 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-61c406297333700001d15861.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-61c406297333700001d15861.json @@ -496,11 +496,15 @@ "default_type_name": "Int" } } - ] + ], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -513,7 +517,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-61ca28234d94310001957b4d.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-61ca28234d94310001957b4d.json index 7d48dfb0..d8ffb7e3 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-61ca28234d94310001957b4d.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-61ca28234d94310001957b4d.json @@ -446,11 +446,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -463,7 +467,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-61d89590fb3c3800017895ee.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-61d89590fb3c3800017895ee.json index 96383007..930b447b 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-61d89590fb3c3800017895ee.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-61d89590fb3c3800017895ee.json @@ -456,11 +456,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -473,7 +477,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-61d895fdfb3c3800017895ef.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-61d895fdfb3c3800017895ef.json index 1bc97768..8d9ef5a1 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-61d895fdfb3c3800017895ef.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-61d895fdfb3c3800017895ef.json @@ -523,11 +523,15 @@ "default_type_name": "User" } } - ] + ], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -540,7 +544,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-620e87e0fcade600016df5f9.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-620e87e0fcade600016df5f9.json index 266c77a0..7eeefa1c 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-620e87e0fcade600016df5f9.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-620e87e0fcade600016df5f9.json @@ -479,11 +479,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -496,7 +500,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-6225a1b137d93600015a1731.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-6225a1b137d93600015a1731.json index f00d6125..122cc1e4 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-6225a1b137d93600015a1731.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-6225a1b137d93600015a1731.json @@ -594,11 +594,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -611,7 +615,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-62a0ec2592faf50001395816.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-62a0ec2592faf50001395816.json index b729dada..d898669e 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-62a0ec2592faf50001395816.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-62a0ec2592faf50001395816.json @@ -379,11 +379,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -396,7 +400,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14bf0fffb800010197bc.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14bf0fffb800010197bc.json index b7b28809..26203fad 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14bf0fffb800010197bc.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14bf0fffb800010197bc.json @@ -438,11 +438,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -455,7 +459,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14ce0fffb800010197bd.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14ce0fffb800010197bd.json index 066245f8..a561d7fd 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14ce0fffb800010197bd.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14ce0fffb800010197bd.json @@ -438,11 +438,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -455,7 +459,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14e80fffb800010197be.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14e80fffb800010197be.json index c9b5a429..2ed7ee6e 100644 --- a/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14e80fffb800010197be.json +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-641c14e80fffb800010197be.json @@ -454,11 +454,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -471,7 +475,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead7120575961000181867f.json b/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead7120575961000181867f.json index 07692e71..421809ef 100644 --- a/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead7120575961000181867f.json +++ b/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead7120575961000181867f.json @@ -1,6 +1,6 @@ { "auth_type": "other", - "auth_types": null, + "auth_types": [], "state": "active", "access_rights_array": [], "graphql_enabled": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead71205759610001818680.json b/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead71205759610001818680.json index ef6f7faf..2e4a6160 100644 --- a/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead71205759610001818680.json +++ b/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead71205759610001818680.json @@ -1,6 +1,6 @@ { "auth_type": "other", - "auth_types": null, + "auth_types": [], "state": "active", "access_rights_array": [], "graphql_enabled": false, diff --git a/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead71205759610001818681.json b/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead71205759610001818681.json index bf08434b..4378ae91 100644 --- a/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead71205759610001818681.json +++ b/deployments/tyk/data/tyk-dashboard/1/policies/policy-5ead71205759610001818681.json @@ -1,6 +1,6 @@ { "auth_type": "other", - "auth_types": null, + "auth_types": [], "state": "active", "access_rights_array": [], "graphql_enabled": false, diff --git a/deployments/tyk/data/tyk-dashboard/2/apis/api-5f51f0991339530001ad60a1.json b/deployments/tyk/data/tyk-dashboard/2/apis/api-5f51f0991339530001ad60a1.json index 275280f5..26b6ae94 100644 --- a/deployments/tyk/data/tyk-dashboard/2/apis/api-5f51f0991339530001ad60a1.json +++ b/deployments/tyk/data/tyk-dashboard/2/apis/api-5f51f0991339530001ad60a1.json @@ -433,11 +433,15 @@ }, "engine": { "field_configs": [], - "data_sources": [] + "data_sources": [], + "global_headers": [] }, "proxy": { "auth_headers": {}, - "request_headers": {} + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } }, "subgraph": { "sdl": "" @@ -450,7 +454,8 @@ } }, "analytics_plugin": {}, - "tags": [] + "tags": [], + "detailed_tracing": false }, "hook_references": [], "is_site": false, From 9112cc5095693177f91d5130d99515380439d8d2 Mon Sep 17 00:00:00 2001 From: ilijabojanovic Date: Wed, 6 Dec 2023 10:49:07 +0100 Subject: [PATCH 18/44] Test 5.2.4 images --- deployments/tyk/docker-compose.yml | 6 +++--- deployments/tyk2/docker-compose.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deployments/tyk/docker-compose.yml b/deployments/tyk/docker-compose.yml index b035b921..7e75bde1 100755 --- a/deployments/tyk/docker-compose.yml +++ b/deployments/tyk/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: tyk-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.2} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.4-rc3} ports: - 3000:3000 networks: @@ -23,7 +23,7 @@ services: - tyk-redis - tyk-mongo tyk-gateway: - image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.2} + image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.4-rc4} ports: - 8080:8080 - 8086:8086 @@ -55,7 +55,7 @@ services: - tyk-redis - tyk-dashboard tyk-gateway-2: - image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.2} + image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.4-rc4} ports: - 8081:8080 networks: diff --git a/deployments/tyk2/docker-compose.yml b/deployments/tyk2/docker-compose.yml index 849d7eb4..3f911849 100644 --- a/deployments/tyk2/docker-compose.yml +++ b/deployments/tyk2/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.3' services: tyk2-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.2} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.4-rc3} ports: - 3002:3000 networks: @@ -21,7 +21,7 @@ services: - tyk2-redis - tyk2-mongo tyk2-gateway: - image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.2} + image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.3-rc4} ports: - 8085:8080 networks: From a64fbee3d8063a58094628aa2f9cdf95004c1f01 Mon Sep 17 00:00:00 2001 From: ilijabojanovic Date: Thu, 7 Dec 2023 14:51:52 +0100 Subject: [PATCH 19/44] Test latest 5.2.4 images --- deployments/tyk/docker-compose.yml | 6 +++--- deployments/tyk2/docker-compose.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deployments/tyk/docker-compose.yml b/deployments/tyk/docker-compose.yml index 7e75bde1..4e4594de 100755 --- a/deployments/tyk/docker-compose.yml +++ b/deployments/tyk/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: tyk-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.4-rc3} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.4-rc5} ports: - 3000:3000 networks: @@ -23,7 +23,7 @@ services: - tyk-redis - tyk-mongo tyk-gateway: - image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.4-rc4} + image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.4-rc5} ports: - 8080:8080 - 8086:8086 @@ -55,7 +55,7 @@ services: - tyk-redis - tyk-dashboard tyk-gateway-2: - image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.4-rc4} + image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.4-rc5} ports: - 8081:8080 networks: diff --git a/deployments/tyk2/docker-compose.yml b/deployments/tyk2/docker-compose.yml index 3f911849..3a818b20 100644 --- a/deployments/tyk2/docker-compose.yml +++ b/deployments/tyk2/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.3' services: tyk2-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.4-rc3} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.4-rc4} ports: - 3002:3000 networks: @@ -21,7 +21,7 @@ services: - tyk2-redis - tyk2-mongo tyk2-gateway: - image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.3-rc4} + image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.3-rc5} ports: - 8085:8080 networks: From a15b2a166d6d8313de0621e81010ad16595452ac Mon Sep 17 00:00:00 2001 From: ilijabojanovic Date: Thu, 7 Dec 2023 14:58:33 +0100 Subject: [PATCH 20/44] Typo fix 5.2.4 images --- deployments/tyk/docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployments/tyk/docker-compose.yml b/deployments/tyk/docker-compose.yml index 4e4594de..028672bc 100755 --- a/deployments/tyk/docker-compose.yml +++ b/deployments/tyk/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: tyk-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.4-rc5} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.4-rc4} ports: - 3000:3000 networks: From 56515b3aee748dbd5c1f54fe11ab933272cb51af Mon Sep 17 00:00:00 2001 From: ilijabojanovic Date: Wed, 20 Dec 2023 11:36:19 +0100 Subject: [PATCH 21/44] Test 5.2.5 --- deployments/tyk/docker-compose.yml | 6 +++--- deployments/tyk2/docker-compose.yml | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deployments/tyk/docker-compose.yml b/deployments/tyk/docker-compose.yml index 028672bc..ee4db468 100755 --- a/deployments/tyk/docker-compose.yml +++ b/deployments/tyk/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: tyk-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.4-rc4} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.5-rc1} ports: - 3000:3000 networks: @@ -23,7 +23,7 @@ services: - tyk-redis - tyk-mongo tyk-gateway: - image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.4-rc5} + image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.5-rc1} ports: - 8080:8080 - 8086:8086 @@ -55,7 +55,7 @@ services: - tyk-redis - tyk-dashboard tyk-gateway-2: - image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.4-rc5} + image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.5-rc1} ports: - 8081:8080 networks: diff --git a/deployments/tyk2/docker-compose.yml b/deployments/tyk2/docker-compose.yml index 3a818b20..7b07336a 100644 --- a/deployments/tyk2/docker-compose.yml +++ b/deployments/tyk2/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.3' services: tyk2-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.4-rc4} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.5-rc1} ports: - 3002:3000 networks: @@ -21,7 +21,7 @@ services: - tyk2-redis - tyk2-mongo tyk2-gateway: - image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.3-rc5} + image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.5-rc1} ports: - 8085:8080 networks: From 66c968e5c57946e6b07cfbbd0b55d74538c9d624 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sonja=20Ch=C3=A8vre?= Date: Tue, 12 Dec 2023 16:57:03 +0100 Subject: [PATCH 22/44] opentracing deprecation notice --- deployments/tracing/README.md | 5 +++++ deployments/tracing/bootstrap.sh | 3 +++ 2 files changed, 8 insertions(+) diff --git a/deployments/tracing/README.md b/deployments/tracing/README.md index 6db44464..440f7d50 100644 --- a/deployments/tracing/README.md +++ b/deployments/tracing/README.md @@ -1,3 +1,8 @@ +WARNING: OpenTracing support in Tyk has been deprecated in favor of OpenTelemetry. This deployment will be removed in a future release. + +OpenTelemetry documentaiton: https://tyk.io/docs/product-stack/tyk-gateway/advanced-configurations/distributed-tracing/open-telemetry/open-telemetry-overview/ + + # Zipkin Zipkin can demonstrate open tracing. It has a [Dashboard](http://localhost:9411) you can use to view traces. diff --git a/deployments/tracing/bootstrap.sh b/deployments/tracing/bootstrap.sh index 8427824f..9dd5f70d 100755 --- a/deployments/tracing/bootstrap.sh +++ b/deployments/tracing/bootstrap.sh @@ -12,6 +12,9 @@ wait_for_response "$zipkin_base_url" "200" log_end_deployment +echo -e "\033[2K +WARNING: OpenTracing support has been deprecated in favor of OpenTelemetry. This deployment will be removed in a future release." + echo -e "\033[2K ▼ Tracing ▽ Zipkin From f04d9437517b2f6401194e592ba07f7ce50aa5e3 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 13 Dec 2023 13:57:06 +0100 Subject: [PATCH 23/44] add licence check script --- scripts/common.sh | 29 +++++++++++++++++++++++------ scripts/licences.sh | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 6 deletions(-) create mode 100755 scripts/licences.sh diff --git a/scripts/common.sh b/scripts/common.sh index 1ccdb23a..204b10c5 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -203,22 +203,39 @@ generate_docker_compose_command () { echo "$command_docker_compose" } -check_licence_expiry () { +get_licence_payload () { # read licence line from .env file licence_line=$(grep "$1=" .env) # extract licence JWT encoded_licence_jwt=$(echo $licence_line | sed -E 's/^[A-Z_]+=(.+)$/\1/') # decode licence payload decoded_licence_payload=$(decode_jwt $encoded_licence_jwt) - # read licence expiry - licence_expiry=$(echo $decoded_licence_payload | jq -r '.exp') - + + echo $decoded_licence_payload +} + +get_days_from_now() { # get timestamp for now, to compare licence expiry against now=$(date '+%s') # calculate the number of seconds remaining for the licence - licence_seconds_remaining=$(expr $licence_expiry - $now) + licence_seconds_remaining=$(expr $1 - $now) # calculate the number of days remaining for the licence (this sets a global variable, allowing the value to be used elsewhere) - licence_days_remaining=$(expr $licence_seconds_remaining / 86400) + echo $(expr $licence_seconds_remaining / 86400) +} + +check_licence_expiry () { + # read licence expiry + licence_expiry=$($(get_licence_payload $1) | jq -r '.exp') + + # # get timestamp for now, to compare licence expiry against + # now=$(date '+%s') + # # calculate the number of seconds remaining for the licence + # licence_seconds_remaining=$(expr $licence_expiry - $now) + + # calculate the number of days remaining for the licence (this sets a global variable, allowing the value to be used elsewhere) + licence_days_remaining=$(get_days_from_now $licence_expiry) + + # check if licence time remaining (in seconds) is less or equal to 0 diff --git a/scripts/licences.sh b/scripts/licences.sh new file mode 100755 index 00000000..79be332b --- /dev/null +++ b/scripts/licences.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# Displays information about the Tyk Dashboard and MDCB licences defined in the .env file + +# This script must be run from the repo root i.e. ./scripts/licence.sh + +source scripts/common.sh + + +# check if .env file found, if not print error and exit 1 + +# if [ ! -f .env ]; then +# echo "Could not find .env file. Please ensure that this script is run from the repository root." +# fi + +licence_names=("DASHBOARD_LICENCE" "MDCB_LICENCE") + +found=false + +for name in ${licence_names[@]}; do + if ! grep -q "$name=" .env; then + continue + fi + + echo -e "\nLicence name: $name" + + found=true + payload=$(get_licence_payload $name) + expiry=$(echo $payload | jq -r '.exp') + days_remaining=$(get_days_from_now $expiry) + + if [ $days_remaining > 0 ]; then + echo "Days remaining: $days_remaining" + else + echo "LICENCE EXPIRED!" + fi + + echo "Licence data:" + echo $payload | jq +done + +# check if no licences found and if not show help message + +# licence_expiry=$($(get_licence_payload $1) | jq -r '.exp') From 5ace5470838a25c400c3bd2125f34a22d03dbf8d Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 13 Dec 2023 14:08:18 +0100 Subject: [PATCH 24/44] add checks and validation --- scripts/licences.sh | 25 +++++++++++++++++-------- 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/scripts/licences.sh b/scripts/licences.sh index 79be332b..e941bd5f 100755 --- a/scripts/licences.sh +++ b/scripts/licences.sh @@ -2,19 +2,19 @@ # Displays information about the Tyk Dashboard and MDCB licences defined in the .env file -# This script must be run from the repo root i.e. ./scripts/licence.sh - source scripts/common.sh +# check if .env file found +if [ ! -f .env ]; then + echo "ERROR: Could not find .env file" + echo -e "Please ensure that:\n- This script is run from the repository root i.e. ./scripts/licences.sh\n- The .env file exists" + exit 1 +fi -# check if .env file found, if not print error and exit 1 - -# if [ ! -f .env ]; then -# echo "Could not find .env file. Please ensure that this script is run from the repository root." -# fi +# check if jq available +command -v jq >/dev/null 2>&1 || { echo >&2 "ERROR: JQ is required, but it's not installed"; exit 1; } licence_names=("DASHBOARD_LICENCE" "MDCB_LICENCE") - found=false for name in ${licence_names[@]}; do @@ -39,6 +39,15 @@ for name in ${licence_names[@]}; do echo $payload | jq done +if [ "$found" = false ]; then + echo "ERROR: No licences found" + echo "Please ensure that the .env file contains an entry for at least one of these variables:" + for name in ${licence_names[@]}; do + echo "- $name" + done + exit 1 +fi + # check if no licences found and if not show help message # licence_expiry=$($(get_licence_payload $1) | jq -r '.exp') From 5db92a35a4c165811351721ca6830d8a0e7ed11b Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 13 Dec 2023 14:14:18 +0100 Subject: [PATCH 25/44] tidy --- scripts/licences.sh | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/scripts/licences.sh b/scripts/licences.sh index e941bd5f..16c55318 100755 --- a/scripts/licences.sh +++ b/scripts/licences.sh @@ -32,13 +32,14 @@ for name in ${licence_names[@]}; do if [ $days_remaining > 0 ]; then echo "Days remaining: $days_remaining" else - echo "LICENCE EXPIRED!" + echo "WARNING, LICENCE EXPIRED!" fi echo "Licence data:" echo $payload | jq done +# check if no licences found if [ "$found" = false ]; then echo "ERROR: No licences found" echo "Please ensure that the .env file contains an entry for at least one of these variables:" @@ -47,7 +48,3 @@ if [ "$found" = false ]; then done exit 1 fi - -# check if no licences found and if not show help message - -# licence_expiry=$($(get_licence_payload $1) | jq -r '.exp') From 57979414abc76d3a6af3a3d31cd0da3a17be8370 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 13 Dec 2023 14:18:24 +0100 Subject: [PATCH 26/44] comments --- scripts/licences.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/licences.sh b/scripts/licences.sh index 16c55318..a94a238e 100755 --- a/scripts/licences.sh +++ b/scripts/licences.sh @@ -14,6 +14,7 @@ fi # check if jq available command -v jq >/dev/null 2>&1 || { echo >&2 "ERROR: JQ is required, but it's not installed"; exit 1; } +# names of environment variables in the .env file to contain the Tyk licence data licence_names=("DASHBOARD_LICENCE" "MDCB_LICENCE") found=false @@ -27,6 +28,7 @@ for name in ${licence_names[@]}; do found=true payload=$(get_licence_payload $name) expiry=$(echo $payload | jq -r '.exp') + # calculate days remaining, as otherwise it is only stored in the hard to read unix time format days_remaining=$(get_days_from_now $expiry) if [ $days_remaining > 0 ]; then From 6f9dbb10b9b6592f4cc765532c9aba77720a4ac5 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 13 Dec 2023 14:42:08 +0100 Subject: [PATCH 27/44] refactor to use day-based calculation --- scripts/common.sh | 27 ++++++--------------------- scripts/licences.sh | 16 ++++++++-------- 2 files changed, 14 insertions(+), 29 deletions(-) diff --git a/scripts/common.sh b/scripts/common.sh index 204b10c5..2a290ca8 100755 --- a/scripts/common.sh +++ b/scripts/common.sh @@ -214,32 +214,17 @@ get_licence_payload () { echo $decoded_licence_payload } -get_days_from_now() { - # get timestamp for now, to compare licence expiry against - now=$(date '+%s') - # calculate the number of seconds remaining for the licence - licence_seconds_remaining=$(expr $1 - $now) - # calculate the number of days remaining for the licence (this sets a global variable, allowing the value to be used elsewhere) - echo $(expr $licence_seconds_remaining / 86400) -} - check_licence_expiry () { + licence_payload=$(get_licence_payload $1) # read licence expiry - licence_expiry=$($(get_licence_payload $1) | jq -r '.exp') - - # # get timestamp for now, to compare licence expiry against - # now=$(date '+%s') - # # calculate the number of seconds remaining for the licence - # licence_seconds_remaining=$(expr $licence_expiry - $now) - + licence_expiry=$(echo $licence_payload | jq -r '.exp') + # calculate the number of seconds remaining for the licence + licence_seconds_remaining=$(expr $licence_expiry - $(date '+%s')) # calculate the number of days remaining for the licence (this sets a global variable, allowing the value to be used elsewhere) - licence_days_remaining=$(get_days_from_now $licence_expiry) + licence_days_remaining=$(expr $licence_seconds_remaining / 86400) - - - # check if licence time remaining (in seconds) is less or equal to 0 - if [[ "$licence_seconds_remaining" -le "0" ]]; then + if [ "$licence_seconds_remaining" -le "0" ]; then log_message " ERROR: Licence $1 has expired" return 1; # does not meet requirements else diff --git a/scripts/licences.sh b/scripts/licences.sh index a94a238e..2ef0be3b 100755 --- a/scripts/licences.sh +++ b/scripts/licences.sh @@ -23,21 +23,21 @@ for name in ${licence_names[@]}; do continue fi - echo -e "\nLicence name: $name" + echo -e "\n$name" found=true payload=$(get_licence_payload $name) - expiry=$(echo $payload | jq -r '.exp') - # calculate days remaining, as otherwise it is only stored in the hard to read unix time format - days_remaining=$(get_days_from_now $expiry) + expiry=$(echo $payload | jq -r '.exp') + seconds_remaining=$(expr $expiry - $(date '+%s')) + # calculate days remaining, to provide a more understandable format to the user + days_remaining=$(expr $seconds_remaining / 86400) - if [ $days_remaining > 0 ]; then - echo "Days remaining: $days_remaining" + if [ "$seconds_remaining" -le "0" ]; then + echo "WARNING, licence expired" else - echo "WARNING, LICENCE EXPIRED!" + echo "$days_remaining days remaining" fi - echo "Licence data:" echo $payload | jq done From 409cba06ed93fdc69e81d2c8a79546731b5fc249 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 13 Dec 2023 15:23:04 +0100 Subject: [PATCH 28/44] minor amends --- scripts/licences.sh | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/scripts/licences.sh b/scripts/licences.sh index 2ef0be3b..88149ead 100755 --- a/scripts/licences.sh +++ b/scripts/licences.sh @@ -1,6 +1,6 @@ #!/bin/bash -# Displays information about the Tyk Dashboard and MDCB licences defined in the .env file +# Displays information about the Tyk Dashboard and MDCB (optional) licences defined in the .env file source scripts/common.sh @@ -19,6 +19,7 @@ licence_names=("DASHBOARD_LICENCE" "MDCB_LICENCE") found=false for name in ${licence_names[@]}; do + # if licence is not found, skip to next if ! grep -q "$name=" .env; then continue fi @@ -29,13 +30,11 @@ for name in ${licence_names[@]}; do payload=$(get_licence_payload $name) expiry=$(echo $payload | jq -r '.exp') seconds_remaining=$(expr $expiry - $(date '+%s')) - # calculate days remaining, to provide a more understandable format to the user - days_remaining=$(expr $seconds_remaining / 86400) - + if [ "$seconds_remaining" -le "0" ]; then - echo "WARNING, licence expired" + echo "Warning, licence has expired" else - echo "$days_remaining days remaining" + echo "Licence has $(expr $seconds_remaining / 86400) days remaining" fi echo $payload | jq From 81b724b46507d0ae0bb90c1ac1aaaf0f2ba4e4e1 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 13 Dec 2023 17:44:31 +0100 Subject: [PATCH 29/44] add more payload fields --- scripts/licences.sh | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/scripts/licences.sh b/scripts/licences.sh index 88149ead..523a9afa 100755 --- a/scripts/licences.sh +++ b/scripts/licences.sh @@ -28,15 +28,31 @@ for name in ${licence_names[@]}; do found=true payload=$(get_licence_payload $name) + + # issued date + issued=$(echo $payload | jq -r '.iat') + if [ "$issued" != "null" ]; then + # "date -r" command works on OSX, but may not work on some linux variants + echo "Issued: $(date -r $issued)" + fi + + # time remaining expiry=$(echo $payload | jq -r '.exp') seconds_remaining=$(expr $expiry - $(date '+%s')) - if [ "$seconds_remaining" -le "0" ]; then - echo "Warning, licence has expired" + echo "Days remaining: Expired!" else - echo "Licence has $(expr $seconds_remaining / 86400) days remaining" + echo "Days remaining: $(expr $seconds_remaining / 86400)" + fi + + # maximum number of gateways + allowed_nodes=$(echo $payload | jq -r '.allowed_nodes') + if [ "$allowed_nodes" != "null" ]; then + gateways_allowed=$(awk -F"," '{print NF}' <<< "$allowed_nodes") + echo "Maximum gateways allowed: $gateways_allowed" fi + # full payload echo $payload | jq done From 84fc481561401f78f89060c0845e31dc31464d81 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 14 Dec 2023 08:27:00 +0100 Subject: [PATCH 30/44] add expiry date --- scripts/licences.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/scripts/licences.sh b/scripts/licences.sh index 523a9afa..21a6d604 100755 --- a/scripts/licences.sh +++ b/scripts/licences.sh @@ -33,23 +33,24 @@ for name in ${licence_names[@]}; do issued=$(echo $payload | jq -r '.iat') if [ "$issued" != "null" ]; then # "date -r" command works on OSX, but may not work on some linux variants - echo "Issued: $(date -r $issued)" + echo "Issue date: $(date -r $issued)" fi # time remaining expiry=$(echo $payload | jq -r '.exp') + printf "Expiry date: $(date -r $expiry)" seconds_remaining=$(expr $expiry - $(date '+%s')) if [ "$seconds_remaining" -le "0" ]; then - echo "Days remaining: Expired!" + printf " (expired)\n" else - echo "Days remaining: $(expr $seconds_remaining / 86400)" + printf " ($(expr $seconds_remaining / 86400) days remaining)\n" fi # maximum number of gateways allowed_nodes=$(echo $payload | jq -r '.allowed_nodes') if [ "$allowed_nodes" != "null" ]; then gateways_allowed=$(awk -F"," '{print NF}' <<< "$allowed_nodes") - echo "Maximum gateways allowed: $gateways_allowed" + echo "Gateway allowance: $gateways_allowed" fi # full payload From 633d3eba087d178af4077eb33ca436f93048c91d Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 21 Dec 2023 09:38:15 +0100 Subject: [PATCH 31/44] handle ngrok failure gracefully --- deployments/tyk/README.md | 5 ++-- deployments/tyk/bootstrap.sh | 48 ++++++++++++++++++++---------- deployments/tyk/docker-compose.yml | 3 +- 3 files changed, 37 insertions(+), 19 deletions(-) diff --git a/deployments/tyk/README.md b/deployments/tyk/README.md index 4eacf41e..030e0bf0 100644 --- a/deployments/tyk/README.md +++ b/deployments/tyk/README.md @@ -151,13 +151,14 @@ The ngrok deployment contains a dashboard which records all requests which pass - [ngrok dashboard](http://localhost:4040) +**Important**: Ngrok requires an auth token. You must provide your own token by creating an Ngrok account via their website. Once you have an auth token (note, "auth token", not "api key", ngrok has both), add it to the Tyk Demo `.env` file as `NGROK_AUTHTOKEN` e.g. `NGROK_AUTHTOKEN=MY-AUTH-TOKEN-123`. + #### Usage The Ngrok tunnel URL is displayed in the output of the bootstrap script (`./up.sh`). The URL will be something that looks like this: `http://11e3-103-252-202-110.ngrok.io` -APIs can be accessed through the tunnel URL using the same paths as they are accessed through the Gateway URL. -For example, using the example tunnel URL provided above, the Basic Open API can be accessed as follows: +APIs can be accessed through the tunnel URL using the same paths as they are accessed through the Gateway URL. For example, using the example tunnel URL provided above, the Basic Open API can be accessed as follows: - Gateway URL: http://tyk-gateway.localhost:8080/basic-open-api/get - External Tunnel URL: http://11e3-103-252-202-110.ngrok.io/basic-open-api/get diff --git a/deployments/tyk/bootstrap.sh b/deployments/tyk/bootstrap.sh index f470e305..1633e4b3 100755 --- a/deployments/tyk/bootstrap.sh +++ b/deployments/tyk/bootstrap.sh @@ -121,7 +121,7 @@ bootstrap_progress log_message "Copying Python bundle to http-server" # we don't use a 'docker compose' command here as docker compose version 1 does not support 'cp' -docker cp $(get_service_container_id tyk-gateway):/opt/tyk-gateway/middleware/python/basic-example/bundle.zip deployments/tyk/volumes/http-server/python-basic-example.zip 2>>logs/bootstrap.log +docker cp $(get_service_container_id tyk-gateway):/opt/tyk-gateway/middleware/python/basic-example/bundle.zip deployments/tyk/volumes/http-server/python-basic-example.zip 2>> logs/bootstrap.log if [ "$?" != 0 ]; then echo "Error occurred when copying Python bundle to http-server" exit 1 @@ -478,21 +478,34 @@ fi log_ok bootstrap_progress -log_message "Getting ngrok public URL for Tyk Gateway" -ngrok_dashboard_url="http://localhost:4040" -ngrok_ip_api_endpoint="$ngrok_dashboard_url/api/tunnels/tyk-gateway" -log_message " Getting data from $ngrok_ip_api_endpoint" -ngrok_public_url=$(curl --fail --silent --show-error ${ngrok_ip_api_endpoint} | jq ".public_url" --raw-output) -if [ "$?" != 0 ]; then - echo "Error getting ngrok configuration from $ngrok_ip_api_endpoint" - exit 1 -fi -if [ "$ngrok_public_url" = "" ]; then - echo "Error: ngrok public URL is empty" - exit 1 +# Ngrok + +ngrok_available=false +if ! grep -q "NGROK_AUTHTOKEN=" .env; then + log_message "Ngrok auth token is not set, so Ngrok will not be available" + log_message "To enable Ngrok, set the NGROK_AUTHTOKEN value in the Tyk Demo .env file" +else + log_message "Getting Ngrok public URL for Tyk Gateway" + ngrok_dashboard_url="http://localhost:4040" + ngrok_ip_api_endpoint="$ngrok_dashboard_url/api/tunnels/tyk-gateway" + log_message " Getting data from $ngrok_ip_api_endpoint" + ngrok_public_url=$(curl -s --show-error ${ngrok_ip_api_endpoint} 2>> logs/bootstrap.log | jq ".public_url" --raw-output) + + # we want to handle ngrok failure gracefully, such that it doesn't prevent the bootstrap from completing + if [ "$?" != 0 ]; then + log_message " ERROR: Unable to get Ngrok configuration from $ngrok_ip_api_endpoint" + ngrok_public_url="not configured" + else + if [ "$ngrok_public_url" = "" ]; then + log_message " ERROR: The Ngrok public URL is empty" + ngrok_public_url="not configured" + else + log_message " Ngrok public URL: $ngrok_public_url" + ngrok_available=true + log_ok + fi + fi fi -log_message " Ngrok public URL: $ngrok_public_url" -log_ok log_end_deployment @@ -547,7 +560,10 @@ echo -e "\033[2K ▽ Gateway 2 ($(get_service_image_tag "tyk-gateway-2")) URL : $gateway2_base_url Gateway API Header : x-tyk-authorization - Gateway API Key : $gateway2_api_credentials + Gateway API Key : $gateway2_api_credentials" +if [ "$ngrok_available" = "true" ]; then + echo -e " ▽ Ngrok Public URL : $ngrok_public_url Dashboard URL : $ngrok_dashboard_url" +fi diff --git a/deployments/tyk/docker-compose.yml b/deployments/tyk/docker-compose.yml index ee4db468..01778c46 100755 --- a/deployments/tyk/docker-compose.yml +++ b/deployments/tyk/docker-compose.yml @@ -149,11 +149,12 @@ services: - ./deployments/tyk/volumes/ngrok/ngrok.yml:/etc/ngrok.yml ports: - 4040:4040 + environment: + - NGROK_AUTHTOKEN=${NGROK_AUTHTOKEN-} volumes: tyk-redis-data: tyk-mongo-data: - networks: tyk: From 2630098b5487c38ae3b54610b5c278d0454f0d1d Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 21 Dec 2023 11:18:20 +0100 Subject: [PATCH 32/44] Add Ngrok container proxy API --- .../1/apis/api-658407d6d211770001d76011.json | 470 ++++++++++++++++++ 1 file changed, 470 insertions(+) create mode 100644 deployments/tyk/data/tyk-dashboard/1/apis/api-658407d6d211770001d76011.json diff --git a/deployments/tyk/data/tyk-dashboard/1/apis/api-658407d6d211770001d76011.json b/deployments/tyk/data/tyk-dashboard/1/apis/api-658407d6d211770001d76011.json new file mode 100644 index 00000000..63cdf1a2 --- /dev/null +++ b/deployments/tyk/data/tyk-dashboard/1/apis/api-658407d6d211770001d76011.json @@ -0,0 +1,470 @@ +{ + "created_at": "2023-12-21T09:39:34Z", + "api_model": {}, + "api_definition": { + "id": "658407d6d211770001d76011", + "name": "Ngrok Dashboard API", + "slug": "ngrok-dashboard-api", + "listen_port": 0, + "protocol": "", + "enable_proxy_protocol": false, + "api_id": "edc9b2bd3e7b4cc55c4ff0a7e1529b45", + "org_id": "5e9d9544a1dcd60001d0ed20", + "use_keyless": true, + "use_oauth2": false, + "external_oauth": { + "enabled": false, + "providers": [] + }, + "use_openid": false, + "openid_options": { + "providers": [], + "segregate_by_client": false + }, + "oauth_meta": { + "allowed_access_types": [], + "allowed_authorize_types": [], + "auth_login_redirect": "" + }, + "auth": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "auth_configs": { + "authToken": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "basic": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "coprocess": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "hmac": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "jwt": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "oauth": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + }, + "oidc": { + "name": "", + "use_param": false, + "param_name": "", + "use_cookie": false, + "cookie_name": "", + "disable_header": false, + "auth_header_name": "Authorization", + "use_certificate": false, + "validate_signature": false, + "signature": { + "algorithm": "", + "header": "", + "use_param": false, + "param_name": "", + "secret": "", + "allowed_clock_skew": 0, + "error_code": 0, + "error_message": "" + } + } + }, + "use_basic_auth": false, + "basic_auth": { + "disable_caching": false, + "cache_ttl": 0, + "extract_from_body": false, + "body_user_regexp": "", + "body_password_regexp": "" + }, + "use_mutual_tls_auth": false, + "client_certificates": [], + "upstream_certificates": {}, + "pinned_public_keys": {}, + "enable_jwt": false, + "use_standard_auth": false, + "use_go_plugin_auth": false, + "enable_coprocess_auth": false, + "custom_plugin_auth_enabled": false, + "jwt_signing_method": "", + "jwt_source": "", + "jwt_identity_base_field": "", + "jwt_client_base_field": "", + "jwt_policy_field_name": "", + "jwt_default_policies": [], + "jwt_issued_at_validation_skew": 0, + "jwt_expires_at_validation_skew": 0, + "jwt_not_before_validation_skew": 0, + "jwt_skip_kid": false, + "scopes": { + "jwt": {}, + "oidc": {} + }, + "jwt_scope_to_policy_mapping": {}, + "jwt_scope_claim_name": "", + "notifications": { + "shared_secret": "", + "oauth_on_keychange_url": "" + }, + "enable_signature_checking": false, + "hmac_allowed_clock_skew": -1, + "hmac_allowed_algorithms": [], + "request_signing": { + "is_enabled": false, + "secret": "", + "key_id": "", + "algorithm": "", + "header_list": [], + "certificate_id": "", + "signature_header": "" + }, + "base_identity_provided_by": "", + "definition": { + "enabled": false, + "name": "", + "default": "", + "location": "header", + "key": "x-api-version", + "strip_path": false, + "strip_versioning_data": false, + "versions": {} + }, + "version_data": { + "not_versioned": true, + "default_version": "", + "versions": { + "Default": { + "name": "Default", + "expires": "", + "paths": { + "ignored": [], + "white_list": [], + "black_list": [] + }, + "use_extended_paths": true, + "extended_paths": { + "persist_graphql": [] + }, + "global_headers": {}, + "global_headers_remove": [], + "global_response_headers": {}, + "global_response_headers_remove": [], + "ignore_endpoint_case": false, + "global_size_limit": 0, + "override_target": "" + } + } + }, + "uptime_tests": { + "check_list": [], + "config": { + "expire_utime_after": 0, + "service_discovery": { + "use_discovery_service": false, + "query_endpoint": "", + "use_nested_query": false, + "parent_data_path": "", + "data_path": "", + "port_data_path": "", + "target_path": "", + "use_target_list": false, + "cache_disabled": false, + "cache_timeout": 60, + "endpoint_returns_list": false + }, + "recheck_wait": 0 + } + }, + "proxy": { + "preserve_host_header": false, + "listen_path": "/ngrok-dashboard-api/", + "target_url": "http://www-ngrok:4040/api", + "disable_strip_slash": true, + "strip_listen_path": true, + "enable_load_balancing": false, + "target_list": [], + "check_host_against_uptime_tests": false, + "service_discovery": { + "use_discovery_service": false, + "query_endpoint": "", + "use_nested_query": false, + "parent_data_path": "", + "data_path": "", + "port_data_path": "", + "target_path": "", + "use_target_list": false, + "cache_disabled": false, + "cache_timeout": 0, + "endpoint_returns_list": false + }, + "transport": { + "ssl_insecure_skip_verify": false, + "ssl_ciphers": [], + "ssl_min_version": 0, + "ssl_max_version": 0, + "ssl_force_common_name_check": false, + "proxy_url": "" + } + }, + "disable_rate_limit": false, + "disable_quota": false, + "custom_middleware": { + "pre": [], + "post": [], + "post_key_auth": [], + "auth_check": { + "disabled": false, + "name": "", + "path": "", + "require_session": false, + "raw_body_only": false + }, + "response": [], + "driver": "", + "id_extractor": { + "disabled": false, + "extract_from": "", + "extract_with": "", + "extractor_config": {} + } + }, + "custom_middleware_bundle": "", + "custom_middleware_bundle_disabled": false, + "cache_options": { + "cache_timeout": 60, + "enable_cache": true, + "cache_all_safe_requests": false, + "cache_response_codes": [], + "enable_upstream_cache_control": false, + "cache_control_ttl_header": "", + "cache_by_headers": [] + }, + "session_lifetime": 0, + "active": true, + "internal": false, + "auth_provider": { + "name": "", + "storage_engine": "", + "meta": {} + }, + "session_provider": { + "name": "", + "storage_engine": "", + "meta": {} + }, + "event_handlers": { + "events": {} + }, + "enable_batch_request_support": false, + "enable_ip_whitelisting": false, + "allowed_ips": [], + "enable_ip_blacklisting": false, + "blacklisted_ips": [], + "dont_set_quota_on_create": false, + "expire_analytics_after": 0, + "response_processors": [], + "CORS": { + "enable": false, + "allowed_origins": [ + "*" + ], + "allowed_methods": [ + "GET", + "POST", + "HEAD" + ], + "allowed_headers": [ + "Origin", + "Accept", + "Content-Type", + "X-Requested-With", + "Authorization" + ], + "exposed_headers": [], + "allow_credentials": false, + "max_age": 24, + "options_passthrough": false, + "debug": false + }, + "domain": "", + "certificates": [], + "do_not_track": false, + "enable_context_vars": false, + "config_data": {}, + "config_data_disabled": false, + "tag_headers": [], + "global_rate_limit": { + "rate": 0, + "per": 0 + }, + "strip_auth_data": false, + "enable_detailed_recording": false, + "graphql": { + "enabled": false, + "execution_mode": "proxyOnly", + "version": "2", + "schema": "", + "type_field_configurations": [], + "playground": { + "enabled": false, + "path": "" + }, + "engine": { + "field_configs": [], + "data_sources": [], + "global_headers": [] + }, + "proxy": { + "auth_headers": {}, + "request_headers": {}, + "use_response_extensions": { + "on_error_forwarding": false + } + }, + "subgraph": { + "sdl": "" + }, + "supergraph": { + "subgraphs": [], + "merged_sdl": "", + "global_headers": {}, + "disable_query_batching": false + } + }, + "analytics_plugin": {}, + "tags": [], + "detailed_tracing": false + }, + "hook_references": [], + "is_site": false, + "sort_by": 0, + "user_group_owners": [], + "user_owners": [] +} From f71970a469a9f0948fd65e92854ba98d8fc832e8 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 21 Dec 2023 11:19:32 +0100 Subject: [PATCH 33/44] Resolve Ngrok issue for geolocation test --- .../tyk/tyk_demo_tyk.postman_collection.json | 104 +++++++++++++++--- 1 file changed, 90 insertions(+), 14 deletions(-) diff --git a/deployments/tyk/tyk_demo_tyk.postman_collection.json b/deployments/tyk/tyk_demo_tyk.postman_collection.json index f2f0bd49..bad7a2dd 100644 --- a/deployments/tyk/tyk_demo_tyk.postman_collection.json +++ b/deployments/tyk/tyk_demo_tyk.postman_collection.json @@ -1,8 +1,9 @@ { "info": { - "_postman_id": "ce7dd0df-d3de-469a-b994-e40c1efea92d", + "_postman_id": "02a77c7c-11f8-4447-b52e-2e94deec4215", "name": "Tyk Demo", - "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json" + "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json", + "_exporter_id": "6131676" }, "item": [ { @@ -3313,7 +3314,7 @@ "get" ] }, - "description": "This request shows that `tyk-gateway-2` is not able to proxy requests for the **Basic Protected API**. \n\nA `404 Not Found` response is returned when this API is requested. This is because the API does not have any segmentation tags applied, and `tyk-gateway-2` has the segmentation tag `tyk-gateway-2`, which means that it will only load API Definitions which also have this tag. \n\n**Basic Protected API** is available through `tyk-gateway`, as it does not have segmentation enabled. This is demonstrated in the test." + "description": "This request shows that `tyk-gateway-2` is not able to proxy requests for the **Basic Protected API**.\n\nA `404 Not Found` response is returned when this API is requested. This is because the API does not have any segmentation tags applied, and `tyk-gateway-2` has the segmentation tag `tyk-gateway-2`, which means that it will only load API Definitions which also have this tag.\n\n**Basic Protected API** is available through `tyk-gateway`, as it does not have segmentation enabled. This is demonstrated in the test." }, "response": [] } @@ -6146,6 +6147,42 @@ }, "response": [] }, + { + "name": "Geolocation - pre-request validation", + "event": [ + { + "listen": "test", + "script": { + "exec": [ + "if (pm.response.code != 200) {", + " console.warn(\"Unable to get Ngrok data, skipping geolocation tests\")", + " // if we can't get the Ngrok data then we need to skip the geolocation request, and move to the 'safe' post-request placeholder instead", + " postman.setNextRequest(\"Geolocation - post-request placeholder\")", + "}" + ], + "type": "text/javascript" + } + } + ], + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "http://{{tyk-gateway.host}}/ngrok-dashboard-api/tunnels/tyk-gateway", + "protocol": "http", + "host": [ + "{{tyk-gateway.host}}" + ], + "path": [ + "ngrok-dashboard-api", + "tunnels", + "tyk-gateway" + ] + }, + "description": "This requests checks that ngrok is operational, and if it find a problem it prevents the geolocation tests from running by redirecting the test runner to the next request." + }, + "response": [] + }, { "name": "Geolocation", "event": [ @@ -6153,16 +6190,29 @@ "listen": "prerequest", "script": { "exec": [ - "pm.sendRequest(\"http://\" + pm.variables.get(\"ngrok.host\") + \":\" + pm.variables.get(\"ngrok.port\") + \"/api/tunnels/tyk-gateway\", function (err, response) {", + "var ngrokApiEndpointUrl = \"http://\" + pm.variables.get(\"tyk-gateway.host\") + \"/ngrok-dashboard-api/tunnels/tyk-gateway\"", "", - " ngrokPublicUrl = response.json().public_url;", + "pm.sendRequest(ngrokApiEndpointUrl, function (err, response) {", + " if (err != null) {", + " console.warn(\"Error while getting Ngrok data:\", err)", + " pm.execution.skipRequest()", + " } else {", + " if (response.code != 200) {", + " console.warn(\"Error while getting Ngrok data:\", response.json())", + " pm.execution.skipRequest()", + " } else {", + " ngrokPublicUrl = response.json().public_url;", "", - " if (ngrokPublicUrl == \"\") {", - " throw new Error('Could not get Ngrok public URL.')", + " if (ngrokPublicUrl == \"\") {", + " console.warn('Could not get Ngrok public URL.')", + " pm.execution.skipRequest()", + " } else { ", + " pm.variables.set(\"ngrok.public-url\", ngrokPublicUrl);", + " }", + " }", " }", - "", - " pm.variables.set(\"ngrok.public-url\", ngrokPublicUrl);", - "});" + "});", + "" ], "type": "text/javascript" } @@ -6171,9 +6221,15 @@ "listen": "test", "script": { "exec": [ - "pm.test(\"Status code is 200\", function () {", - " pm.response.to.have.status(200);", - "});" + "var ngrokPublicUrl = pm.variables.get(\"ngrok.public-url\");", + "", + "if (ngrokPublicUrl == null || ngrokPublicUrl == \"\") {", + " console.warn(\"Skipping Ngrok tests as no public URL set\")", + "} else {", + " pm.test(\"Status code is 200\", function () {", + " pm.response.to.have.status(200);", + " });", + "}" ], "type": "text/javascript" } @@ -6192,7 +6248,27 @@ "get" ] }, - "description": "This request goes via the public Ngrok URL, which then gets routed through to the API Gateway.\n\nThe Gateway can geolocate this request, as it originates from outside of the local network. You can see the result of this in the *Activity By Location* report in the Tyk Dashboard.\n\nThe Gateway matches the IP address against the Maxmind database to find you location." + "description": "**Note**: If Ngrok is not configured, then this request will not run.\n\n---\n\nThis request goes via the public Ngrok URL, which then gets routed through to the API Gateway.\n\nThe Gateway can geolocate this request, as it originates from outside of the local network. You can see the result of this in the _Activity By Location_ report in the Tyk Dashboard.\n\nThe Gateway matches the IP address against the Maxmind database to find you location." + }, + "response": [] + }, + { + "name": "Geolocation - post-request placeholder", + "request": { + "method": "GET", + "header": [], + "url": { + "raw": "http://{{tyk-gateway.host}}/basic-open-api/get", + "protocol": "http", + "host": [ + "{{tyk-gateway.host}}" + ], + "path": [ + "basic-open-api", + "get" + ] + }, + "description": "This request serves as a placeholder, as the point to which the test runner is redirected to if ngrok data cannot be found." }, "response": [] } From 61030dd7b39a6056c5ee53091a93616e62339afd Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 21 Dec 2023 11:19:57 +0100 Subject: [PATCH 34/44] ordering change --- .../policy-641c15dd0fffb800010197bf.json | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/deployments/tyk/data/tyk-dashboard/1/policies/policy-641c15dd0fffb800010197bf.json b/deployments/tyk/data/tyk-dashboard/1/policies/policy-641c15dd0fffb800010197bf.json index cef6da87..187e21f5 100644 --- a/deployments/tyk/data/tyk-dashboard/1/policies/policy-641c15dd0fffb800010197bf.json +++ b/deployments/tyk/data/tyk-dashboard/1/policies/policy-641c15dd0fffb800010197bf.json @@ -6,8 +6,8 @@ "state": "active", "access_rights_array": [ { - "api_name": "Rate Limit Path API 2", - "api_id": "c252af6eaf2e43ca5c89465af4f481c1", + "api_name": "Rate Limit Path API 1", + "api_id": "d371b83b249845a2497ab9a947fd6210", "versions": [ "Default" ], @@ -16,8 +16,8 @@ "allowed_types": [], "disable_introspection": false, "limit": { - "rate": 3, - "per": 6, + "rate": 1, + "per": 5, "throttle_interval": -1, "throttle_retry_limit": -1, "max_query_depth": -1, @@ -31,8 +31,8 @@ "allowance_scope": "" }, { - "api_name": "Rate Limit Proxy API", - "api_id": "d1dfc6a927a046c54c0ed470f19757cc", + "api_name": "Rate Limit Path API 2", + "api_id": "c252af6eaf2e43ca5c89465af4f481c1", "versions": [ "Default" ], @@ -40,13 +40,24 @@ "restricted_types": [], "allowed_types": [], "disable_introspection": false, - "limit": null, + "limit": { + "rate": 3, + "per": 6, + "throttle_interval": -1, + "throttle_retry_limit": -1, + "max_query_depth": -1, + "quota_max": -1, + "quota_renews": 0, + "quota_remaining": 0, + "quota_renewal_rate": -1, + "set_by_policy": false + }, "field_access_rights": [], "allowance_scope": "" }, { - "api_name": "Rate Limit Path API 1", - "api_id": "d371b83b249845a2497ab9a947fd6210", + "api_name": "Rate Limit Proxy API", + "api_id": "d1dfc6a927a046c54c0ed470f19757cc", "versions": [ "Default" ], @@ -54,18 +65,7 @@ "restricted_types": [], "allowed_types": [], "disable_introspection": false, - "limit": { - "rate": 1, - "per": 5, - "throttle_interval": -1, - "throttle_retry_limit": -1, - "max_query_depth": -1, - "quota_max": -1, - "quota_renews": 0, - "quota_remaining": 0, - "quota_renewal_rate": -1, - "set_by_policy": false - }, + "limit": null, "field_access_rights": [], "allowance_scope": "" } From bd24571019a7b9a6f9f32e3480dc624b0f9ccb16 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 21 Dec 2023 18:43:23 +0800 Subject: [PATCH 35/44] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1538c241..a41fb0c0 100755 --- a/README.md +++ b/README.md @@ -97,6 +97,7 @@ If you are using the MDCB (`mdcb`) deployment, then you need to do the same for | MDCB_USER_API_CREDENTIALS | Sets the credentials used by the Tyk MDCB to authenticate with the Dashboard | Yes, if using the `mdcb` deployment, otherwise no | None - Set automatically by the `bootstrap.sh` script | | PMP_SPLUNK_META_COLLECTORTOKEN | Sets the credentials used by the Tyk Pump to authenticate with the Splunk collector | Yes, if using the `analytics-splunk` deployment, otherwise no | None - Set automatically by the `bootstrap.sh` script | | NEW_RELIC_API_KEY | Sets the API Key used by the OpenTelemetry collector to send data to New Relic | Yes, if using the `otel/new-relic` deployment, otherwise no | None - **Must** be manually set | +| NGROK_AUTHTOKEN | Sets the authentication token used by the Ngrok agent | Yes, if use of Ngrok/geolocation is required, otherwise no | None - **Must** be manually set | There are various other environment variables used, but it's not normally necessary to set them. See the [Tyk environment variables documentation](https://tyk.io/docs/tyk-environment-variables/) for more information. The exception being the variables used for the DataDog Analytics deployment (`analytics-datadog`), which has its own set of variables for configuring the DataDog integration - see the [Setup section of that deployment's readme](https://github.com/TykTechnologies/tyk-demo/blob/master/deployments/analytics-datadog/README.md#setup) for more information. From 255dce73db3018c6d20a8883d068151131c005f0 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Thu, 21 Dec 2023 12:38:15 +0100 Subject: [PATCH 36/44] update to 5.2.5 --- deployments/mdcb/docker-compose.yml | 4 ++-- deployments/sso/docker-compose.yml | 2 +- deployments/tyk/docker-compose.yml | 6 +++--- deployments/tyk2/docker-compose.yml | 4 ++-- scripts/add-gateway.sh | 2 +- 5 files changed, 9 insertions(+), 9 deletions(-) diff --git a/deployments/mdcb/docker-compose.yml b/deployments/mdcb/docker-compose.yml index a46a9013..6778756c 100644 --- a/deployments/mdcb/docker-compose.yml +++ b/deployments/mdcb/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.3' services: tyk-mdcb: - image: tykio/tyk-mdcb-docker:${MDCB_VERSION:-v2.4.0} + image: tykio/tyk-mdcb-docker:${MDCB_VERSION:-v2.4.1} ports: - 9091:9091 networks: @@ -16,7 +16,7 @@ services: - tyk-redis - tyk-mongo tyk-worker-gateway: - image: tykio/tyk-gateway:${GATEWAY_WORKER_VERSION:-v5.2.2} + image: tykio/tyk-gateway:${GATEWAY_WORKER_VERSION:-v5.2.5} ports: - 8090:8080 networks: diff --git a/deployments/sso/docker-compose.yml b/deployments/sso/docker-compose.yml index 67c56efa..0491a16e 100644 --- a/deployments/sso/docker-compose.yml +++ b/deployments/sso/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.3' services: tyk-dashboard-sso: - image: tykio/tyk-dashboard:${DASHBOARD_SSO_VERSION:-v5.2.2} + image: tykio/tyk-dashboard:${DASHBOARD_SSO_VERSION:-v5.2.5} ports: - 3001:3000 networks: diff --git a/deployments/tyk/docker-compose.yml b/deployments/tyk/docker-compose.yml index 01778c46..085ebdb0 100755 --- a/deployments/tyk/docker-compose.yml +++ b/deployments/tyk/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.8' services: tyk-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.5-rc1} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.5} ports: - 3000:3000 networks: @@ -23,7 +23,7 @@ services: - tyk-redis - tyk-mongo tyk-gateway: - image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.5-rc1} + image: tykio/tyk-gateway:${GATEWAY_VERSION:-v5.2.5} ports: - 8080:8080 - 8086:8086 @@ -55,7 +55,7 @@ services: - tyk-redis - tyk-dashboard tyk-gateway-2: - image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.5-rc1} + image: tykio/tyk-gateway:${GATEWAY2_VERSION:-v5.2.5} ports: - 8081:8080 networks: diff --git a/deployments/tyk2/docker-compose.yml b/deployments/tyk2/docker-compose.yml index 7b07336a..787f370e 100644 --- a/deployments/tyk2/docker-compose.yml +++ b/deployments/tyk2/docker-compose.yml @@ -2,7 +2,7 @@ version: '3.3' services: tyk2-dashboard: - image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.5-rc1} + image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.5} ports: - 3002:3000 networks: @@ -21,7 +21,7 @@ services: - tyk2-redis - tyk2-mongo tyk2-gateway: - image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.5-rc1} + image: tykio/tyk-gateway:${TYK2_GATEWAY_VERSION:-v5.2.5} ports: - 8085:8080 networks: diff --git a/scripts/add-gateway.sh b/scripts/add-gateway.sh index e3f34759..4ef2c836 100755 --- a/scripts/add-gateway.sh +++ b/scripts/add-gateway.sh @@ -8,4 +8,4 @@ docker run \ -v $(pwd)/deployments/tyk/volumes/tyk-gateway/tyk.conf:/opt/tyk-gateway/tyk.conf \ -v $(pwd)/deployments/tyk/volumes/tyk-gateway/middleware:/opt/tyk-gateway/middleware \ --network tyk-demo_tyk \ - tykio/tyk-gateway:latest + tykio/tyk-gateway:v5.2.5 From b29582b5ce172c6dbb1dedb50b5b3e03a41fe7a9 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Fri, 5 Jan 2024 14:30:11 +0100 Subject: [PATCH 37/44] comment --- deployments/backstage/bootstrap.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh index 1c376676..204913a4 100755 --- a/deployments/backstage/bootstrap.sh +++ b/deployments/backstage/bootstrap.sh @@ -10,8 +10,9 @@ dashboard_base_url="http://tyk-dashboard.localhost:3000" dashboard_api_key=$(get_context_data "1" "dashboard-user" "1" "api-key") dashboard_admin_api_credentials=$(cat deployments/tyk/volumes/tyk-dashboard/tyk_analytics.conf | jq -r .admin_secret 2>> logs/bootstrap.log) +# this assumes that the backstage backend is available on the host machine on port 7007, and that it has the tyk entitiy provider installed log_message "Adding API event webhook to default organisation" -updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/api/catalog/tyk/api/hook", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) +updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/tyk/api/import-all", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) api_response=$(curl $dashboard_base_url/admin/organisations/5e9d9544a1dcd60001d0ed20 --request PUT -s \ -H "admin-auth: $dashboard_admin_api_credentials" \ -d "$updated_org_data" 2>> logs/bootstrap.log) From 43c2b70cd52376ef89e62d6e0dc6f99be505a1b8 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 10 Jan 2024 10:04:10 +0100 Subject: [PATCH 38/44] update backstage endpoint path --- deployments/backstage/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh index 204913a4..6c253d00 100755 --- a/deployments/backstage/bootstrap.sh +++ b/deployments/backstage/bootstrap.sh @@ -12,7 +12,7 @@ dashboard_admin_api_credentials=$(cat deployments/tyk/volumes/tyk-dashboard/tyk_ # this assumes that the backstage backend is available on the host machine on port 7007, and that it has the tyk entitiy provider installed log_message "Adding API event webhook to default organisation" -updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/tyk/api/import-all", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) +updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/tyk/sync", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) api_response=$(curl $dashboard_base_url/admin/organisations/5e9d9544a1dcd60001d0ed20 --request PUT -s \ -H "admin-auth: $dashboard_admin_api_credentials" \ -d "$updated_org_data" 2>> logs/bootstrap.log) From 5d05bda09dff38ceb5b7fde98e4eec39f1e90d53 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 10 Jan 2024 16:11:56 +0100 Subject: [PATCH 39/44] amend tyk backstage endpointn path --- deployments/backstage/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh index 6c253d00..ad23da87 100755 --- a/deployments/backstage/bootstrap.sh +++ b/deployments/backstage/bootstrap.sh @@ -12,7 +12,7 @@ dashboard_admin_api_credentials=$(cat deployments/tyk/volumes/tyk-dashboard/tyk_ # this assumes that the backstage backend is available on the host machine on port 7007, and that it has the tyk entitiy provider installed log_message "Adding API event webhook to default organisation" -updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/tyk/sync", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) +updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/api/catalog/tyk/sync", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) api_response=$(curl $dashboard_base_url/admin/organisations/5e9d9544a1dcd60001d0ed20 --request PUT -s \ -H "admin-auth: $dashboard_admin_api_credentials" \ -d "$updated_org_data" 2>> logs/bootstrap.log) From c00bafaee942a7ec761d23d204ccae7d2dd167f0 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Mon, 29 Jan 2024 12:13:48 +0100 Subject: [PATCH 40/44] Add deployment name to URL --- deployments/backstage/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh index ad23da87..4b9e6b98 100755 --- a/deployments/backstage/bootstrap.sh +++ b/deployments/backstage/bootstrap.sh @@ -12,7 +12,7 @@ dashboard_admin_api_credentials=$(cat deployments/tyk/volumes/tyk-dashboard/tyk_ # this assumes that the backstage backend is available on the host machine on port 7007, and that it has the tyk entitiy provider installed log_message "Adding API event webhook to default organisation" -updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/api/catalog/tyk/sync", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) +updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/api/catalog/tyk/development/sync", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) api_response=$(curl $dashboard_base_url/admin/organisations/5e9d9544a1dcd60001d0ed20 --request PUT -s \ -H "admin-auth: $dashboard_admin_api_credentials" \ -d "$updated_org_data" 2>> logs/bootstrap.log) From 7562e3f3c5951d2f47d3507061054ca35382f291 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Mon, 29 Jan 2024 16:08:38 +0100 Subject: [PATCH 41/44] include necessary mappings for full gateways functionality --- scripts/add-gateway.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/add-gateway.sh b/scripts/add-gateway.sh index 4ef2c836..45e0a7f8 100755 --- a/scripts/add-gateway.sh +++ b/scripts/add-gateway.sh @@ -6,6 +6,10 @@ docker run \ -d \ -P \ -v $(pwd)/deployments/tyk/volumes/tyk-gateway/tyk.conf:/opt/tyk-gateway/tyk.conf \ + -v $(pwd)/deployments/tyk/volumes/tyk-gateway/certs:/opt/tyk-gateway/certs \ -v $(pwd)/deployments/tyk/volumes/tyk-gateway/middleware:/opt/tyk-gateway/middleware \ + -v $(pwd)/deployments/tyk/volumes/tyk-gateway/plugins:/opt/tyk-gateway/plugins \ + -v $(pwd)/deployments/tyk/volumes/tyk-gateway/templates/error_401.json:/opt/tyk-gateway/templates/error_401.json \ + -v $(pwd)/deployments/tyk/volumes/databases/GeoLite2-Country.mmdb:/opt/tyk-gateway/databases/GeoLite2-Country.mmdb \ --network tyk-demo_tyk \ tykio/tyk-gateway:v5.2.5 From c822dddd51494e2611c2724be3387e3b8c93dee2 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Tue, 9 Apr 2024 17:24:31 +0200 Subject: [PATCH 42/44] simply JSON object --- deployments/backstage/bootstrap.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deployments/backstage/bootstrap.sh b/deployments/backstage/bootstrap.sh index 4b9e6b98..6eaf8f22 100755 --- a/deployments/backstage/bootstrap.sh +++ b/deployments/backstage/bootstrap.sh @@ -12,7 +12,7 @@ dashboard_admin_api_credentials=$(cat deployments/tyk/volumes/tyk-dashboard/tyk_ # this assumes that the backstage backend is available on the host machine on port 7007, and that it has the tyk entitiy provider installed log_message "Adding API event webhook to default organisation" -updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/api/catalog/tyk/development/sync", "email": "", "redis": false } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) +updated_org_data=$(jq '.event_options += { "api_event": { "webhook": "http://host.docker.internal:7007/api/catalog/tyk/development/sync" } }' < deployments/tyk/data/tyk-dashboard/1/organisation.json) api_response=$(curl $dashboard_base_url/admin/organisations/5e9d9544a1dcd60001d0ed20 --request PUT -s \ -H "admin-auth: $dashboard_admin_api_credentials" \ -d "$updated_org_data" 2>> logs/bootstrap.log) From a048266958c3bdeea60e016e0cad68f3f4efc549 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Wed, 10 Apr 2024 09:48:32 +0200 Subject: [PATCH 43/44] docker compose version bump --- deployments/analytics-datadog/docker-compose.yml | 2 +- deployments/analytics-kibana/docker-compose.yml | 2 +- deployments/analytics-splunk/docker-compose.yml | 2 +- deployments/backstage/docker-compose.yml | 2 +- deployments/bench/docker-compose.yml | 2 +- deployments/cicd/docker-compose.yml | 2 +- deployments/instrumentation/docker-compose.yml | 2 +- deployments/keycloak-dcr/docker-compose.yml | 2 +- deployments/mailserver/docker-compose.yml | 2 +- deployments/mdcb/docker-compose.yml | 2 +- deployments/portal/docker-compose.yml | 2 +- deployments/slo-prometheus-grafana/docker-compose.yml | 2 +- deployments/sso/docker-compose.yml | 2 +- deployments/tracing/docker-compose.yml | 2 +- deployments/tyk2/docker-compose.yml | 2 +- deployments/waf/docker-compose.yml | 2 +- 16 files changed, 16 insertions(+), 16 deletions(-) diff --git a/deployments/analytics-datadog/docker-compose.yml b/deployments/analytics-datadog/docker-compose.yml index 64ae358a..1d0aa5a8 100644 --- a/deployments/analytics-datadog/docker-compose.yml +++ b/deployments/analytics-datadog/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: dd-agent: image: gcr.io/datadoghq/agent:latest diff --git a/deployments/analytics-kibana/docker-compose.yml b/deployments/analytics-kibana/docker-compose.yml index 6c3fa21c..68b1eb93 100644 --- a/deployments/analytics-kibana/docker-compose.yml +++ b/deployments/analytics-kibana/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: kibana: image: docker.elastic.co/kibana/kibana:7.17.1 diff --git a/deployments/analytics-splunk/docker-compose.yml b/deployments/analytics-splunk/docker-compose.yml index 3c191d73..0202a290 100644 --- a/deployments/analytics-splunk/docker-compose.yml +++ b/deployments/analytics-splunk/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: tyk-splunk: image: splunk/splunk:latest diff --git a/deployments/backstage/docker-compose.yml b/deployments/backstage/docker-compose.yml index c246b90c..b731e61e 100644 --- a/deployments/backstage/docker-compose.yml +++ b/deployments/backstage/docker-compose.yml @@ -1,2 +1,2 @@ --- -version: '3.3' +version: '3.8' diff --git a/deployments/bench/docker-compose.yml b/deployments/bench/docker-compose.yml index 53c36430..8ece5264 100755 --- a/deployments/bench/docker-compose.yml +++ b/deployments/bench/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: bench: image: mangomm/go-bench-suite diff --git a/deployments/cicd/docker-compose.yml b/deployments/cicd/docker-compose.yml index c49a8d2c..e507aa74 100644 --- a/deployments/cicd/docker-compose.yml +++ b/deployments/cicd/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: jenkins: image: jenkins/jenkins:2.319.2-lts-alpine diff --git a/deployments/instrumentation/docker-compose.yml b/deployments/instrumentation/docker-compose.yml index c18813dd..e0c2f557 100644 --- a/deployments/instrumentation/docker-compose.yml +++ b/deployments/instrumentation/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: graphite: image: graphiteapp/graphite-statsd:1.1.7-6 diff --git a/deployments/keycloak-dcr/docker-compose.yml b/deployments/keycloak-dcr/docker-compose.yml index fd7e7b37..85dcf1fa 100644 --- a/deployments/keycloak-dcr/docker-compose.yml +++ b/deployments/keycloak-dcr/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: keycloak-db: image: postgres:9.6 diff --git a/deployments/mailserver/docker-compose.yml b/deployments/mailserver/docker-compose.yml index f6ef8b7e..6dd6f1c1 100644 --- a/deployments/mailserver/docker-compose.yml +++ b/deployments/mailserver/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: mailserver: image: marcopas/docker-mailslurper diff --git a/deployments/mdcb/docker-compose.yml b/deployments/mdcb/docker-compose.yml index 4f0af3d9..654215f5 100644 --- a/deployments/mdcb/docker-compose.yml +++ b/deployments/mdcb/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: tyk-mdcb: image: tykio/tyk-mdcb-docker:${MDCB_VERSION:-v2.4.1} diff --git a/deployments/portal/docker-compose.yml b/deployments/portal/docker-compose.yml index 99e1136f..07ead87a 100644 --- a/deployments/portal/docker-compose.yml +++ b/deployments/portal/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: tyk-portal: image: tykio/portal:v1.7.0 diff --git a/deployments/slo-prometheus-grafana/docker-compose.yml b/deployments/slo-prometheus-grafana/docker-compose.yml index 9ac18a61..4af3100f 100755 --- a/deployments/slo-prometheus-grafana/docker-compose.yml +++ b/deployments/slo-prometheus-grafana/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: tyk-slo-pump: image: tykio/tyk-pump-docker-pub:${PUMP_VERSION:-v1.8.3} diff --git a/deployments/sso/docker-compose.yml b/deployments/sso/docker-compose.yml index 0491a16e..74deab1d 100644 --- a/deployments/sso/docker-compose.yml +++ b/deployments/sso/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: tyk-dashboard-sso: image: tykio/tyk-dashboard:${DASHBOARD_SSO_VERSION:-v5.2.5} diff --git a/deployments/tracing/docker-compose.yml b/deployments/tracing/docker-compose.yml index 2975e815..6dc9bb2a 100644 --- a/deployments/tracing/docker-compose.yml +++ b/deployments/tracing/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: zipkin: image: openzipkin/zipkin-slim:2.21.7 diff --git a/deployments/tyk2/docker-compose.yml b/deployments/tyk2/docker-compose.yml index 7b9ccd0a..b6dd5ef9 100644 --- a/deployments/tyk2/docker-compose.yml +++ b/deployments/tyk2/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: tyk2-dashboard: image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.2.5} diff --git a/deployments/waf/docker-compose.yml b/deployments/waf/docker-compose.yml index 96116e66..3ece3084 100644 --- a/deployments/waf/docker-compose.yml +++ b/deployments/waf/docker-compose.yml @@ -1,5 +1,5 @@ --- -version: '3.3' +version: '3.8' services: waf: image: owasp/modsecurity-crs:3.3.4-apache-202302060502 From 80c106e54fc48bdb3185a877e33cc83d978a8fa8 Mon Sep 17 00:00:00 2001 From: David Garvey Date: Mon, 15 Apr 2024 10:29:13 +0200 Subject: [PATCH 44/44] remove deprecated 'version' from docker compose files --- deployments/analytics-datadog/docker-compose.yml | 1 - deployments/analytics-kibana/docker-compose.yml | 1 - deployments/analytics-splunk/docker-compose.yml | 1 - deployments/backstage/docker-compose.yml | 2 +- deployments/bench/docker-compose.yml | 1 - deployments/cicd/docker-compose.yml | 1 - deployments/database-postgres/docker-compose.yml | 1 - deployments/federation/docker-compose.yml | 1 - deployments/instrumentation/docker-compose.yml | 1 - deployments/k8s-operator/docker-compose.yml | 2 +- deployments/keycloak-dcr/docker-compose.yml | 1 - deployments/mailserver/docker-compose.yml | 1 - deployments/mdcb/docker-compose.yml | 1 - deployments/mqtt/docker-compose.yml | 1 - deployments/otel-jaeger/docker-compose.yml | 1 - deployments/otel-new-relic/docker-compose.yml | 1 - deployments/portal/docker-compose.yml | 1 - deployments/slo-prometheus-grafana/docker-compose.yml | 1 - deployments/sso/docker-compose.yml | 1 - deployments/subscriptions/docker-compose.yml | 1 - deployments/tracing/docker-compose.yml | 1 - deployments/tyk/docker-compose.yml | 1 - deployments/tyk2/docker-compose.yml | 1 - deployments/waf/docker-compose.yml | 1 - 24 files changed, 2 insertions(+), 24 deletions(-) diff --git a/deployments/analytics-datadog/docker-compose.yml b/deployments/analytics-datadog/docker-compose.yml index f9650f26..78289526 100644 --- a/deployments/analytics-datadog/docker-compose.yml +++ b/deployments/analytics-datadog/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: dd-agent: image: gcr.io/datadoghq/agent:latest diff --git a/deployments/analytics-kibana/docker-compose.yml b/deployments/analytics-kibana/docker-compose.yml index a3cb7290..29256653 100644 --- a/deployments/analytics-kibana/docker-compose.yml +++ b/deployments/analytics-kibana/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: kibana: image: docker.elastic.co/kibana/kibana:7.17.1 diff --git a/deployments/analytics-splunk/docker-compose.yml b/deployments/analytics-splunk/docker-compose.yml index e3d4e236..1e3709a3 100644 --- a/deployments/analytics-splunk/docker-compose.yml +++ b/deployments/analytics-splunk/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: tyk-splunk: image: splunk/splunk:latest diff --git a/deployments/backstage/docker-compose.yml b/deployments/backstage/docker-compose.yml index b731e61e..9884ea04 100644 --- a/deployments/backstage/docker-compose.yml +++ b/deployments/backstage/docker-compose.yml @@ -1,2 +1,2 @@ --- -version: '3.8' +name: tyk-demo diff --git a/deployments/bench/docker-compose.yml b/deployments/bench/docker-compose.yml index 8ece5264..1ca7938a 100755 --- a/deployments/bench/docker-compose.yml +++ b/deployments/bench/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: bench: image: mangomm/go-bench-suite diff --git a/deployments/cicd/docker-compose.yml b/deployments/cicd/docker-compose.yml index e507aa74..0d296a08 100644 --- a/deployments/cicd/docker-compose.yml +++ b/deployments/cicd/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: jenkins: image: jenkins/jenkins:2.319.2-lts-alpine diff --git a/deployments/database-postgres/docker-compose.yml b/deployments/database-postgres/docker-compose.yml index 34cc0b7d..9c98c979 100644 --- a/deployments/database-postgres/docker-compose.yml +++ b/deployments/database-postgres/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.9' services: tyk-postgres: image: postgres:13.3-alpine diff --git a/deployments/federation/docker-compose.yml b/deployments/federation/docker-compose.yml index fe649d62..d8666acb 100644 --- a/deployments/federation/docker-compose.yml +++ b/deployments/federation/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.9' services: users-subgraph: image: zalbiraw/go-api-test-service:v2.0.0 diff --git a/deployments/instrumentation/docker-compose.yml b/deployments/instrumentation/docker-compose.yml index e0c2f557..e0e73d7a 100644 --- a/deployments/instrumentation/docker-compose.yml +++ b/deployments/instrumentation/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: graphite: image: graphiteapp/graphite-statsd:1.1.7-6 diff --git a/deployments/k8s-operator/docker-compose.yml b/deployments/k8s-operator/docker-compose.yml index c246b90c..9884ea04 100644 --- a/deployments/k8s-operator/docker-compose.yml +++ b/deployments/k8s-operator/docker-compose.yml @@ -1,2 +1,2 @@ --- -version: '3.3' +name: tyk-demo diff --git a/deployments/keycloak-dcr/docker-compose.yml b/deployments/keycloak-dcr/docker-compose.yml index f95822f9..635df189 100644 --- a/deployments/keycloak-dcr/docker-compose.yml +++ b/deployments/keycloak-dcr/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: keycloak-db: image: postgres:9.6 diff --git a/deployments/mailserver/docker-compose.yml b/deployments/mailserver/docker-compose.yml index 6dd6f1c1..bb03208e 100644 --- a/deployments/mailserver/docker-compose.yml +++ b/deployments/mailserver/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: mailserver: image: marcopas/docker-mailslurper diff --git a/deployments/mdcb/docker-compose.yml b/deployments/mdcb/docker-compose.yml index bf3628b4..553e84c8 100644 --- a/deployments/mdcb/docker-compose.yml +++ b/deployments/mdcb/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: tyk-mdcb: image: tykio/tyk-mdcb-docker:${MDCB_VERSION:-v2.5.0} diff --git a/deployments/mqtt/docker-compose.yml b/deployments/mqtt/docker-compose.yml index c2bc20c9..052ac58b 100644 --- a/deployments/mqtt/docker-compose.yml +++ b/deployments/mqtt/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: "3.3" services: mosquitto: image: eclipse-mosquitto:1.6.10 diff --git a/deployments/otel-jaeger/docker-compose.yml b/deployments/otel-jaeger/docker-compose.yml index bf1133ec..b045f9ef 100644 --- a/deployments/otel-jaeger/docker-compose.yml +++ b/deployments/otel-jaeger/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: "2" services: # Jaeger jaeger-all-in-one: diff --git a/deployments/otel-new-relic/docker-compose.yml b/deployments/otel-new-relic/docker-compose.yml index dde999a7..69beaf4a 100644 --- a/deployments/otel-new-relic/docker-compose.yml +++ b/deployments/otel-new-relic/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: "2" services: # Collector collector-gateway: diff --git a/deployments/portal/docker-compose.yml b/deployments/portal/docker-compose.yml index 1130fc9f..0795f675 100644 --- a/deployments/portal/docker-compose.yml +++ b/deployments/portal/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: tyk-portal: image: tykio/portal:v1.8.3 diff --git a/deployments/slo-prometheus-grafana/docker-compose.yml b/deployments/slo-prometheus-grafana/docker-compose.yml index 13f73d3f..6169e754 100755 --- a/deployments/slo-prometheus-grafana/docker-compose.yml +++ b/deployments/slo-prometheus-grafana/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: tyk-slo-pump: image: tykio/tyk-pump-docker-pub:${PUMP_VERSION:-v1.9.0} diff --git a/deployments/sso/docker-compose.yml b/deployments/sso/docker-compose.yml index 74deab1d..28c7bb35 100644 --- a/deployments/sso/docker-compose.yml +++ b/deployments/sso/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: tyk-dashboard-sso: image: tykio/tyk-dashboard:${DASHBOARD_SSO_VERSION:-v5.2.5} diff --git a/deployments/subscriptions/docker-compose.yml b/deployments/subscriptions/docker-compose.yml index 2c242736..a57d98d9 100644 --- a/deployments/subscriptions/docker-compose.yml +++ b/deployments/subscriptions/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: subscriptions-chatapp: build: ./deployments/subscriptions diff --git a/deployments/tracing/docker-compose.yml b/deployments/tracing/docker-compose.yml index 6dc9bb2a..d80607d1 100644 --- a/deployments/tracing/docker-compose.yml +++ b/deployments/tracing/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: zipkin: image: openzipkin/zipkin-slim:2.21.7 diff --git a/deployments/tyk/docker-compose.yml b/deployments/tyk/docker-compose.yml index 7e79ad68..fb486e4c 100755 --- a/deployments/tyk/docker-compose.yml +++ b/deployments/tyk/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: tyk-dashboard: image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.3.0} diff --git a/deployments/tyk2/docker-compose.yml b/deployments/tyk2/docker-compose.yml index d716f24a..6693518e 100644 --- a/deployments/tyk2/docker-compose.yml +++ b/deployments/tyk2/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: tyk2-dashboard: image: tykio/tyk-dashboard:${DASHBOARD_VERSION:-v5.3.0} diff --git a/deployments/waf/docker-compose.yml b/deployments/waf/docker-compose.yml index 3ece3084..47a79db7 100644 --- a/deployments/waf/docker-compose.yml +++ b/deployments/waf/docker-compose.yml @@ -1,5 +1,4 @@ --- -version: '3.8' services: waf: image: owasp/modsecurity-crs:3.3.4-apache-202302060502