{{ auth.setupRequired ? t('Create admin user') : t('Login') }}

{{ t('API unavailable') }} {{ apiError }}

{{ t('Password reset requested') }}

2FA QR-Code

{{ t('Scan this secret in your authenticator app') }}: {{ auth.totpSecret }}

{{ t('Authenticator URI') }}: {{ auth.totpUri }}

{{ t(currentTitle) }}

{{ t('Normalize IDX content, cache it and publish clean JSON APIs.') }}

{{ t('Installation') }}
{{ t('API unavailable') }} {{ apiError }}
{{ t(flash.title) }} {{ flash.message }}

{{ t('Sources') }}

{{ t('Name') }}{{ t('Type') }}Status{{ t('Last sync') }}
{{ source.name }} {{ source.type }} {{ source.is_disabled ? t('Inactive') : source.status }} {{ source.last_synced_at || '-' }}

{{ t('Listings') }} ({{ listingTotal }})

Übersetzung{{ translationNotice }}
{{ selectedListingIds.length }} ausgewählt
{{ money(listing.price, listing.currency) }} {{ t('Published') }} {{ sourceLabel(listing) }} {{ listing.address_line }} {{ listing.postal_code }} {{ listing.city }} · {{ listing.property_type }} · {{ listing.status }}
Seite {{ listingPage }} von {{ listingPageCount }}

{{ t('Users') }}

2FA QR-Code 2FA{{ t('Scan this secret in your authenticator app') }}: {{ auth.newTotpSecret }} {{ t('Authenticator URI') }}: {{ auth.newTotpUri }}
{{ t('Reset link') }}{{ auth.resetLink }} {{ t('Mail sent') }}: {{ auth.resetSentByMail ? t('Active') : t('Inactive') }} {{ t('Logged') }}: {{ auth.resetLogged ? t('Active') : t('Inactive') }} {{ t('Log file') }}: {{ auth.resetLogPath }}
{{ t('Name') }}Email2FAStatus
{{ user.name }} {{ user.email }} {{ user.totp_enabled == 1 ? t('Active') : t('Inactive') }} {{ user.active == 1 ? t('Active') : t('Inactive') }}

{{ t('API access') }}

{{ t('Password') }}{{ auth.newApiPassword }}
{{ t('Name') }}UsernameStatus{{ t('Last sync') }}
{{ client.name }} {{ client.username }} {{ client.active == 1 ? t('Active') : t('Inactive') }} {{ client.last_used_at || '-' }}

{{ t('Plugins') }}

{{ t('Name') }}{{ t('Capabilities') }}QuellspracheStatus
{{ plugin.name }}{{ plugin.version }} {{ plugin.capabilities.join(', ') }} – {{ plugin.enabled ? t('Active') : t('Inactive') }}

{{ t('Sync logs') }}

{{ t('Source') }}Status{{ t('Message') }}{{ t('Created') }}
{{ log.source_name }} {{ log.status }} {{ log.message }}
Diagnose anzeigen
{{ JSON.stringify(log.context, null, 2) }}
{{ log.created_at }}

Wichtige REST-Endpunkte

Alle Endpunkte liefern JSON. Verwaltungs-Endpunkte benötigen eine angemeldete Sitzung.

MethodeEndpunktVerwendung
GET/api/listingsÖffentliche Objektliste; Filter und Sprache sind als Query-Parameter möglich.
GET/api/listings/{id}Ein einzelnes Objekt.
GET/api/{lang}/listings?after_id=0&limit=25Übersetzte Objektliste in de, en oder es. Maximal 25 Objekte je Cursor-Batch; die Übersetzung wird dabei erzeugt und gecacht.
GET/api/sourcesVerwaltete Quellen.
POST/api/sync/{sourceId}Synchronisiert eine Quelle; unterstützt cursor und batch_size.
GET/api/sync-logsSynchronisationsprotokoll.
GET/api/pluginsInstallierte Plugins und Fähigkeiten.

Plugin-Hilfe

Quellen-Typen werden durch aktivierte Plugin-Fähigkeiten wie source:inmo_html bereitgestellt. Deaktivierte Plugins stehen neuen Quellen nicht zur Verfügung.

Keine Plugins geladen.
{{ plugin.name }} v{{ plugin.version }}
{{ plugin.enabled ? t('Active') : t('Inactive') }}

Fähigkeiten: {{ (plugin.capabilities || []).join(', ') || '–' }}

Für diesen Quellentyp eine Quelle anlegen, URL hinterlegen und anschließend synchronisieren.