{{ _('OCPI Sync Overview') }}
{{ _('Review the last pull/push attempts per module and retry failed exports.') }}
{{ error }}
{% endif %}
{{ _('OCPI payload tester') }}
{{ _('Upload OCPI data, validate per version, and optionally push it. Enable the dry-run switch to avoid persisting changes.') }}
{{ _('Sync status') }}
{{ _('Last pull') }}/{{ _('Last push') }} / {{ _('Last retry') }}
{% set module_labels = {"locations": _("Locations"), "tariffs": _("Tariffs"), "tokens": _("Tokens"), "sessions": _("Sessions"), "cdrs": _("CDRs")} %}
| {{ _('Module') }} | {{ _('Last pull') }} | {{ _('Last push') }} | {{ _('Last retry') }} |
|---|---|---|---|
| {{ module_labels.get(entry.module, entry.module|capitalize) }} | {{ render_run(entry.pull) }} | {{ render_run(entry.push) }} | {{ render_run(entry.retry) }} |
{{ _('Sync logs') }}
{{ _('Recent scheduler results') }}| {{ _('Module') }} | {{ _('Direction') }} | {{ _('Job') }} | {{ _('Backend') }} | {{ _('Result') }} | {{ _('Duration') }} | {{ _('Status code') }} | {{ _('Response') }} | {{ _('Created') }} |
|---|---|---|---|---|---|---|---|---|
| {{ module_labels.get(entry.module, entry.module|capitalize) }} | {{ direction_labels.get(entry.direction, entry.direction|capitalize) }} | {{ entry.job_name or '—' }} | {{ entry.backend_name or entry.backend_id or '—' }} | {% if entry.success %} {{ _('Success') }} {% else %} {{ _('Failed') }} {% endif %} | {% if entry.duration_ms is not none %} {{ entry.duration_ms }} ms {% else %} — {% endif %} | {{ entry.status_code or '—' }} | {{ entry.detail or '—' }} | {{ entry.created_at or '—' }} |
| {{ _('No logs yet.') }} | ||||||||
{{ _('Dead-letter queue') }}
{{ _('Replay') }}| {{ _('Record type') }} | {{ _('Backend') }} | {{ _('Station') }} | {{ _('Transaction') }} | {{ _('Retry count') }} | {{ _('Status code') }} | {{ _('Response') }} | {{ _('Created') }} | {{ _('Actions') }} |
|---|---|---|---|---|---|---|---|---|
| {{ entry.record_type|upper }} | {{ entry.backend_name or entry.backend_id or '—' }} | {{ entry.station_id or '—' }} | {{ entry.transaction_id or '—' }} | {{ entry.retry_count }} | {{ entry.response_status or '—' }} | {{ entry.response_body or '—' }} | {{ entry.created_at or '—' }} | |
| {{ _('No data yet.') }} | ||||||||
{{ _('Scheduler jobs') }}
{{ _('Interval') }} (s)| {{ _('Job') }} | {{ _('Interval') }} | {{ _('Mode') }} | {{ _('Status') }} |
|---|---|---|---|
| {{ job.name }} | {{ job.interval }} | {{ job.mode or '—' }} | {% if job.running %} {{ _('Running') }} {% else %} {{ _('Stopped') }} {% endif %} |
| {{ _('No data yet.') }} | |||