{% extends "base.html" %} {% block content %}

Rate Limits

Active rate limit policies for registered routes.

Refresh
{# ── Rate limit cards ─────────────────────────────────────────────── #} {# Multi-service (service selected): Global (left) + Service (right) in one responsive row. Stacks to a single column on mobile. No service selected: Global rate limit takes the full width. #} {% if selected_service %}
{# Left — all-services global rate limit #} {% with grl=global_rl %} {% include "partials/global_rl_card.html" %} {% endwith %}
{# Right — per-service rate limit #} {% with srl=service_rl, service=selected_service %} {% include "partials/service_rl_card.html" %} {% endwith %}
{% else %}
{% with grl=global_rl %} {% include "partials/global_rl_card.html" %} {% endwith %}
{% endif %} {# ── Policies table ─────────────────────────────────────────────── #}

Policies

{{ pagination.total }} route{% if pagination.total != 1 %}s{% endif %}{% if pagination.total_pages > 1 %} · page {{ pagination.page }}/{{ pagination.total_pages }}{% endif %}
{% if policies %}
{% include "partials/rate_limit_rows.html" %}
Path Limit Actions
{% include "partials/pagination.html" %} {% else %}

No rate limit policies configured

Use the Unprotected Routes section below or decorate routes with @rate_limit("100/minute").

{% endif %}
{# ── Unprotected routes ──────────────────────────────────────────── #} {% if unrated_routes %}

Unprotected Routes

{{ unrated_routes | length }} route{% if unrated_routes | length != 1 %}s{% endif %} without a rate limit
{% for state in unrated_routes %} {% set svc = state.service or "" %} {% set raw_path = state.path %} {% set svc_stripped = raw_path[svc | length + 1:] if svc and raw_path.startswith(svc + ":") else raw_path %} {% set encoded = svc_stripped | encode_path %} {# Parse out the HTTP method prefix (e.g. "GET:/api/items") for display #} {% set _parts = svc_stripped.split(":", 1) %} {% set route_method = _parts[0] if _parts | length == 2 and _parts[0] in ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS"] else "" %} {% set display_path = _parts[1] if route_method else svc_stripped %} {% endfor %}
Route Status Action
{% if route_method %} {{ route_method }} {% endif %} {{ display_path }}
{% if svc %} {{ svc }} {% endif %}
{{ state.status | upper }}
{% endif %} {% endblock %}