{% extends "base.html" %} {% block title %}{{ t('webhooks.title') }} — painfree{% endblock %} {% block body %}
{{ t('webhooks.lede') }}
{# The whole reason an operator opens this page. Above the table, before any filter, and unmissable: a parked endpoint is receiving nothing. #} {% if parked %}{{ t('webhooks.parked_why') }}
| {{ t('webhooks.endpoint') }} | {{ t('webhooks.events') }} | {{ t('common.connection') }} | {{ t('webhooks.health') }} | {{ t('webhooks.last_delivery') }} | {{ t('webhooks.waiting') }} | {{ t('webhooks.secret') }} |
|---|---|---|---|---|---|---|
| {{ row.url }}
{% if row.description %} {{ row.description }}{% endif %} {{ row.subscription_id }} |
{{ row.event_types | join(', ') }} | {% if row.connection_id %}{{ row.connection_id }}{% else %}{{ t('common.every_connection') }}{% endif %} |
{{ row.health }}
{% if row.consecutive_failures %}
{{ t('webhooks.exhausted', count=row.consecutive_failures) }} {% endif %} |
{{ row.last_delivery_at | moment }}
{% if row.last_status %} HTTP {{ row.last_status }}{% endif %} |
{{ owed[row.subscription_id] | count }} | {{ t('webhooks.generation', number=row.secret_generation) }}
{% if row.rotating %} {{ t('webhooks.rotating') }}{% endif %} |
{{ t('webhooks.empty') }}
{% endif %}