{% extends "base.html" %} {% block title %}Approvals | Suvra{% endblock %} {% block content %}

Approvals

Review and decide pending requests.

{% if message %}

{% if message == "approved" %} Approval updated to approved. {% elif message == "denied" %} Approval updated to denied. {% elif message == "executed" %} Approval approved and action executed. {% elif message == "error" %} Failed to update approval{% if error_message %}: {{ error_message }}{% endif %}. {% else %} {{ message }} {% endif %}

{% endif %}
{% if current_query %} Clear {% endif %}

Showing {{ result_count }} results

{% if approvals|length == 0 and selected_status == 'pending' %}

No pending approvals.

{% endif %} {% for row in approvals %} {% else %} {% endfor %}
Request Status Actions

{{ row.action_summary }}

Requested {{ row.age_display }} {% if row.actor and row.actor != "unknown" %}by {{ row.actor }}{% endif %}

{% if row.has_risk_context %}
{% if row.risk_context.matched_rule_name %}

Approval required by: {{ row.risk_context.matched_rule_name }} {% if row.risk_context.matched_rule_description %} {{ row.risk_context.matched_rule_description }} {% endif %}

{% endif %} {% if row.risk_context.injection_risk is not none and row.risk_context.injection_risk > 0 %}

Input risk score: {{ "%.0f" | format(row.risk_context.injection_risk * 100) }}% {% if row.risk_context.injection_scanner %} via {{ row.risk_context.injection_scanner }} {% endif %}

{% endif %} {% if row.risk_context.anomaly_detected %}

Behavioral anomaly: {{ row.risk_context.anomaly_severity | capitalize if row.risk_context.anomaly_severity else "Detected" }} {% if row.risk_context.anomaly_triggered_metrics %} — {{ row.risk_context.anomaly_triggered_metrics | join(", ") }} {% endif %}

{% endif %}
{% endif %}
{{ row.status }} {% if row.status == "pending" %}
{% else %} Closed {% endif %} View audit trail →
No approvals found.
{% for row in approvals %} {% endfor %} {% endblock %}