Drupal hat seit 8.7 die JSON:API standardmäßig im Core. BAconn nutzt sie für einen direkten, paginierten Stellen-Sync ohne Scraping.

Voraussetzungen auf der Drupal-Seite

  • JSON:API-Modul aktiviert — sollte automatisch laufen, prüfen unter admin/modules.
  • Eine Authentifizierungsmethode: entweder Simple OAuth (für Client-Credentials-Flow) oder ein API-Key-Modul (z. B. "Key auth").
  • Ein Content-Type für Stellen — typisch job oder job_listing oder vacancy. BAconn introspiziert verfügbare Bundles automatisch.

Einrichtung

  1. Bei Wizard oder /cms-pipe/manage: "Neue Quelle" → Drupal.
  2. Basis-URL der Drupal-Site, z. B. https://intranet.firma.de.
  3. Authentifizierungs-Modus wählen:
    • OAuth2 Client Credentials: Client-ID + Client-Secret aus dem Simple-OAuth-Konsumenten
    • API-Key (Header): einfacher Token, wird als X-API-Key gesendet
  4. "Verbindung testen" — BAconn ruft /jsonapi auf und listet verfügbare Content-Types.
  5. Content-Type für Stellen wählen — Dropdown zeigt alle Bundles, sortiert nach Heuristik (Bundles mit "job" o. ä. zuerst).
  6. Feld-Mapping konfigurieren — Drupal-Feldnamen (z. B. field_location, field_salary_min) auf BAconn-Felder mappen.

Was synchronisiert wird

BAconn folgt der JSON:API-Pagination automatisch (links.next.href). Bei jedem Sync-Lauf werden nur geänderte Stellen verarbeitet — Erkennung über SHA-256-Hash des Roh-Records.

Token-Caching

OAuth-Access-Tokens werden in cms_pipe_sources.adapter_state.oauth.{access_token, expires_at} gecached. Bei Ablauf wird automatisch refresh’t. Sie sehen den Token nie im Klartext im UI — nur Client-ID/-Secret werden verschlüsselt gespeichert.

Troubleshooting

  • "401 Unauthorized" — Client-Secret falsch oder Konsument deaktiviert. Im Drupal-Admin unter Konfiguration → Simple OAuth → Konsumenten prüfen.
  • "403 Forbidden auf bestimmten Feldern" — Drupal-Feldzugriff blockiert. Permission "Bypass content access control" oder Feld-spezifische Permissions vergeben.
  • "Bundle nicht gefunden" — Der gewählte Content-Type wurde umbenannt. Quelle bearbeiten und neu introspizieren.