<inbound>
<send-request mode="new" response-variable-name="guard" timeout="10">
<set-url>{TRUSTGUARD_URL}/v1/evaluate</set-url>
<set-method>POST</set-method>
<set-header name="Authorization" exists-action="override">
<value>Bearer <collector-api-key></value>
</set-header>
<set-body>@(JsonConvert.SerializeObject(new {
protocol = "llm",
direction = "input",
payload = new { input = context.Request.Body.As<string>(preserveContent: true) },
consumer_id = context.Subscription?.Id ?? "",
session_id = context.Request.Headers.GetValueOrDefault("X-Session-Id", "")
}))</set-body>
</send-request>
<choose>
<when condition="@(((IResponse)context.Variables["guard"]).Body.As<JObject>()["status"].Value<string>() == "block")">
<return-response>
<set-status code="403" reason="Blocked by TrustGuard" />
</return-response>
</when>
<when condition="@(((IResponse)context.Variables["guard"]).Body.As<JObject>()["status"].Value<string>() == "transform")">
<set-body>@(((IResponse)context.Variables["guard"]).Body.As<JObject>()["transformed_payload"]["input"].Value<string>())</set-body>
</when>
</choose>
</inbound>