infra/modules/apim/policies/api_policy_chargeback.xml (51 lines of code) (raw):

<policies> <inbound> <base/> <set-header name="X-Consumer" exists-action="override"> <value>@( context.Subscription.Name )</value> </set-header> <set-backend-service backend-id="proxy-backend" /> </inbound> <backend> <base/> </backend> <outbound> <base/> <!-- Dumping tracelogs for troubleshooting status 500 errors --> <set-header name="X-OperationName" exists-action="override"> <value>@( context.Operation.Name )</value> </set-header> <set-header name="X-OperationMethod" exists-action="override"> <value>@( context.Operation.Method )</value> </set-header> <set-header name="X-OperationUrl" exists-action="override"> <value>@( context.Operation.UrlTemplate )</value> </set-header> <set-header name="X-ApiName" exists-action="override"> <value>@( context.Api.Name )</value> </set-header> <set-header name="X-ApiPath" exists-action="override"> <value>@( context.Api.Path )</value> </set-header> </outbound> <on-error> <base/> <!-- Dumping tracelogs for troubleshooting status 500 errors --> <set-header name="X-OperationName" exists-action="override"> <value>@( context.Operation.Name )</value> </set-header> <set-header name="X-OperationMethod" exists-action="override"> <value>@( context.Operation.Method )</value> </set-header> <set-header name="X-OperationUrl" exists-action="override"> <value>@( context.Operation.UrlTemplate )</value> </set-header> <set-header name="X-ApiName" exists-action="override"> <value>@( context.Api.Name )</value> </set-header> <set-header name="X-ApiPath" exists-action="override"> <value>@( context.Api.Path )</value> </set-header> <set-header name="X-LastErrorMessage" exists-action="override"> <value>@( context.LastError.Message )</value> </set-header> </on-error> </policies>