Response Body Transformation

Hi

I am trying to do body transformation of an 403 error response , I am using tyk 2.6.1 gateaway with dashborad (Developer Licence)

I can create and edit the API via the dashborad but the body transformation is not working for me.
The response is not modified by the gateway
this is my API designer screen:

tyk

and this is the exported api file:

{
“id”: “5b21572cf959fe037b2268f1”,
“name”: “luminateApi2”,
“slug”: “luminateapi2”,
“api_id”: “4107d8b17ff94ad5541d7167992df3e0”,
“org_id”: “5b211bd2f959fe037b2268ee”,
“use_keyless”: true,
“use_oauth2”: false,
“use_openid”: false,
“openid_options”: {
“providers”: [],
“segregate_by_client”: false
},
“oauth_meta”: {
“allowed_access_types”: [],
“allowed_authorize_types”: [],
“auth_login_redirect”: “”
},
“auth”: {
“use_param”: false,
“param_name”: “”,
“use_cookie”: false,
“cookie_name”: “”,
“auth_header_name”: “”,
“use_certificate”: false
},
“use_basic_auth”: false,
“use_mutual_tls_auth”: false,
“client_certificates”: [],
“upstream_certificates”: {},
“pinned_public_keys”: {},
“enable_jwt”: false,
“use_standard_auth”: false,
“enable_coprocess_auth”: false,
“jwt_signing_method”: “”,
“jwt_source”: “”,
“jwt_identity_base_field”: “”,
“jwt_client_base_field”: “”,
“jwt_policy_field_name”: “”,
“jwt_disable_issued_at_validation”: false,
“jwt_disable_expires_at_validation”: false,
“jwt_disable_not_before_validation”: false,
“notifications”: {
“shared_secret”: “”,
“oauth_on_keychange_url”: “”
},
“enable_signature_checking”: false,
“hmac_allowed_clock_skew”: -1,
“base_identity_provided_by”: “”,
“definition”: {
“location”: “header”,
“key”: “x-api-version”
},
“version_data”: {
“not_versioned”: true,
“default_version”: “”,
“versions”: {
“Default”: {
“name”: “Default”,
“expires”: “”,
“paths”: {
“ignored”: [],
“white_list”: [],
“black_list”: []
},
“use_extended_paths”: true,
“extended_paths”: {
“transform_response”: [
{
“template_data”: {
“input_type”: “json”,
“template_mode”: “blob”,
“enable_session”: false,
“template_source”: “ew0KICAgICJ0aW1lc3RhbXAiOiAie3sudGltZXN0YW1wfX0iLA0KICAgICJzdGF0dXMiOiAie3suc3RhdHVzfX0iLA0KICAgICJlcnJvciI6ICJ7ey5lcnJvcn19Ig0KfQ==”
},
“path”: “/v3/applications/”,
“method”: “GET”
}
]
},
“global_headers”: {},
“global_headers_remove”: [],
“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_timeout”: 60,
“endpoint_returns_list”: false
},
“recheck_wait”: 0
}
},
“proxy”: {
“preserve_host_header”: false,
“listen_path”: “/v3/applications/”,
“target_url”: “http://192.168.1.231:8085/v1/api/applications/”,
“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_timeout”: 0,
“endpoint_returns_list”: false
},
“transport”: {
“ssl_ciphers”: [],
“ssl_min_version”: 0,
“proxy_url”: “”
}
},
“disable_rate_limit”: false,
“disable_quota”: false,
“custom_middleware”: {
“pre”: [],
“post”: [],
“post_key_auth”: [],
“auth_check”: {
“name”: “”,
“path”: “”,
“require_session”: false
},
“response”: [],
“driver”: “”,
“id_extractor”: {
“extract_from”: “”,
“extract_with”: “”,
“extractor_config”: {}
}
},
“custom_middleware_bundle”: “”,
“cache_options”: {
“cache_timeout”: 60,
“enable_cache”: false,
“cache_all_safe_requests”: false,
“cache_response_codes”: [],
“enable_upstream_cache_control”: false,
“cache_control_ttl_header”: “”
},
“session_lifetime”: 0,
“active”: true,
“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”: [
{
“name”: “response_body_transform”,
“options”: {}
}
],
“CORS”: {
“enable”: false,
“allowed_origins”: [],
“allowed_methods”: [],
“allowed_headers”: [],
“exposed_headers”: [],
“allow_credentials”: false,
“max_age”: 24,
“options_passthrough”: false,
“debug”: false
},
“domain”: “”,
“do_not_track”: false,
“tags”: [],
“enable_context_vars”: false,
“config_data”: {},
“tag_headers”: [],
“global_rate_limit”: {
“rate”: 0,
“per”: 0
},
“strip_auth_data”: false
}

Hi, can you share the request you’re sending and the current output?

Hi

I am sending a simple GET request that return 403 form my server .(I am testing error handling)

The request:
headers:
Accept : application/json;charset=UTF-8
Content-Type : application/json

GET http://127.0.0.1:8080/v3/applications/

The response :
code :403
{
“timestamp”: 1529389404794,
“status”: 403,
“error”: “Forbidden”,
“message”: “Access Denied”,
“path”: “/v1/api/applications”
}

also I found in the docs the Error Templates part ( https://tyk.io/docs/customise-tyk/error-templates/ )
I tried to put error_403.json in the templates folder but it did not work.
The only time the body transform worked is when I put error_500.json and I shutdown my listen server
tyk changed the error the from the gateway.
Can you tell me if the Error Templates feature is for tyk errors or for my listen server errors?

Thanks
Yuval