But if you want to send just few data values for one or two APIs only, you can write a simple custom sequence and attach it to the APIs.
Here is a sample sequence. Here we're creating 2 transport headers for username and API name, which are to be sent to backend.
<sequence xmlns="http://ws.apache.org/ns/synapse" name="admin--Temp:v1.0.0--In"> <property name="UserName" scope="transport" expression="$ctx:api.ut.userName"/> <property name="ApiName" scope="transport" expression="$ctx:API_NAME"/> <log level="custom"> <property name="User" expression="$trp:UserName"/> <property name="API" expression="$trp:ApiName"/> </log> </sequence>
Here is a list of information you can retrieve in above manner. Sample data for each key is given inside brackets.
- API_NAME (eg: MyAPI)
- AM_KEY_TYPE (eg: PRODUCTION)
- REST_SUB_REQUEST_PATH (eg: /resource/pathparam)
- SYNAPSE_REST_API (eg: admin--Temp:v1.0.0)
- SYNAPSE_REST_API_VERSION (eg: 1.0.0)
- TRANSPORT_IN_NAME (eg: https)
- REST_API_CONTEXT (eg: /context/1.0.0)
- API_ELECTED_RESOURCE (eg: /resource/{playerId})
- REST_FULL_REQUEST_PATH (eg: /context/1.0.0/resource/pathparam)
- api.ut.HTTP_METHOD (eg: GET)
- api.ut.application.name (eg: DefaultApplication)
- api.ut.apiPublisher (eg: admin@carbon.super)
- api.ut.userId (eg: bhathiya@carbon.super)
- api.ut.consumerKey (eg: 1IVxJBSKeo793IUYk4EtwvZv8eUa)
- api.ut.userName (eg: bhathiya@carbon.super)
- api.ut.application.id (eg: 1)
- api.ut.hostName (eg: 10.100.0.119)
- uri.var.playerId (eg: pathparam)
EXTRA:
- THROTTLED_OUT_REASON (eg. APPLICATION_LIMIT_EXCEEDED)
- ERROR_CODE (eg. 900803)
- ERROR_MESSAGE (eg. Message throttled out)
- NEXT_ACCESS_TIME (eg. 1523883780000)
- BLOCKED_REASON (eg. Request blocked as it violates defined blocking conditions)