|
1 | | -# API & Looker Studio Integration |
| 1 | +# API & Looker Studio |
2 | 2 |
|
3 | | -KickBannerStats stellt eine JSON-API über den Joomla API Wrapper bereit. Diese wird primär genutzt, um Daten an **Google Looker Studio** zu übergeben. |
| 3 | +Die größte Stärke von KickBannerStats liegt in der **Entkopplung**: Während Joomla die Daten sammelt, können externe Tools wie **Google Looker Studio** diese visualisieren – ohne die Performance Ihrer Webseite zu belasten. |
4 | 4 |
|
5 | | -## API Endpoint |
| 5 | +## Das Ergebnis |
6 | 6 |
|
7 | | -Der Zugriff erfolgt über den `StatisticsController`. |
| 7 | +Mit der Integration können Sie interaktive Dashboards erstellen, die Sie direkt mit Ihren Werbekunden teilen können. |
8 | 8 |
|
9 | | -**Basis-URL:** |
| 9 | + |
| 10 | + |
| 11 | +### Vorteile dieser Lösung |
| 12 | +* 🚀 **Performance:** Der Report lädt blitzschnell, da er auf die aggregierte API zugreift und nicht Millionen von Datenbankzeilen durchsucht. |
| 13 | +* 🔒 **Sicherheit:** Kunden erhalten Zugriff auf den Report, aber niemals direkten Zugriff auf Ihr Joomla-Backend. |
| 14 | +* 🎨 **White-Label:** Gestalten Sie den Report in Ihrem Corporate Design (oder dem des Kunden). |
| 15 | + |
| 16 | +--- |
| 17 | + |
| 18 | +## Die API Schnittstelle |
| 19 | + |
| 20 | +KickBannerStats stellt einen nativen Joomla Webservice (API) Endpunkt bereit. |
| 21 | + |
| 22 | +### Endpoint |
| 23 | + |
| 24 | +```http |
| 25 | +GET /api/index.php/v1/kickbannerstats/statistics |
| 26 | +
|
| 27 | +``` |
10 | 28 |
|
11 | 29 | ### Authentifizierung |
12 | | -Die API nutzt die Standard Joomla API Token Authentifizierung (`Bearer Token` oder `X-Joomla-Token`). |
13 | 30 |
|
14 | | -### Filter-Parameter |
15 | | -Die API unterstützt folgende GET-Parameter zur Filterung: |
| 31 | +Der Zugriff erfolgt über einen **Joomla API Token**. Erstellen Sie diesen im Backend unter **Benutzer** > **Verwalten** > (User auswählen) > **Joomla API Token**. |
| 32 | + |
| 33 | +Der Token muss im Header der Anfrage gesendet werden: |
| 34 | + |
| 35 | +```http |
| 36 | +X-Joomla-Token: c2h...I6 |
| 37 | +
|
| 38 | +``` |
| 39 | + |
| 40 | +### Filter Parameter |
| 41 | + |
| 42 | +Sie können die Daten serverseitig filtern, um die Payload klein zu halten: |
16 | 43 |
|
17 | 44 | | Parameter | Typ | Beschreibung | |
18 | | -| :--- | :--- | :--- | |
19 | | -| `filter[begin]` | String (Y-m-d) | Startdatum (inklusiv) | |
20 | | -| `filter[end]` | String (Y-m-d) | Enddatum (inklusiv) | |
21 | | -| `filter[client_id]` | Int | Nur spezifischer Kunde | |
22 | | -| `filter[banner_id]` | Int | Nur spezifisches Banner | |
| 45 | +| --- | --- | --- | |
| 46 | +| `filter[begin]` | `YYYY-MM-DD` | Startdatum (inklusiv) | |
| 47 | +| `filter[end]` | `YYYY-MM-DD` | Enddatum (inklusiv) | |
| 48 | +| `filter[client_id]` | `INT` | Nur Daten für einen spezifischen Kunden | |
| 49 | +| `filter[banner_id]` | `INT` | Nur Daten für ein spezifisches Banner | |
23 | 50 |
|
24 | | -## Beispiel Response |
25 | | -https://ihre-domain.de/api/index.php/v1/kickbannerstats/statistics |
| 51 | +### Beispiel Response (JSON) |
26 | 52 |
|
27 | 53 | ```json |
28 | 54 | [ |
29 | 55 | { |
30 | | - "date": "2026-01-20", |
| 56 | + "date": "2026-02-12", |
31 | 57 | "banner_id": 422, |
32 | 58 | "client_id": 13, |
33 | 59 | "impressions": 1319, |
34 | 60 | "clicks": 3, |
35 | 61 | "banner_name": "Musical Kids Amulett", |
36 | 62 | "client_name": "besser-im-blick", |
37 | | - "updated_at": "2026-02-12 13:37:39" |
| 63 | + "updated_at": "2026-02-13 03:00:00" |
38 | 64 | }, |
39 | 65 | { |
40 | | - "date": "2026-01-19", |
| 66 | + "date": "2026-02-11", |
41 | 67 | "banner_id": 422, |
42 | 68 | "client_id": 13, |
43 | 69 | "impressions": 41324, |
44 | 70 | "clicks": 38, |
45 | 71 | "banner_name": "Musical Kids Amulett", |
46 | 72 | "client_name": "besser-im-blick", |
47 | | - "updated_at": "2026-02-12 13:37:39" |
| 73 | + "updated_at": "2026-02-13 03:00:00" |
48 | 74 | } |
49 | 75 | ] |
| 76 | + |
50 | 77 | ``` |
51 | 78 |
|
52 | | -Looker Studio Connector |
53 | | -Um diese Daten in Looker Studio zu nutzen, benötigen Sie ein Google Apps Script (Community Connector), welches diese API konsumiert. |
| 79 | +--- |
| 80 | + |
| 81 | +## Google Looker Studio Connector |
| 82 | + |
| 83 | +Um die JSON-Daten in Looker Studio zu nutzen, wird ein **Community Connector** (Google Apps Script) benötigt, der die Daten abruft und in das Looker-Format umwandelt. |
| 84 | + |
| 85 | +### Schema Konfiguration |
54 | 86 |
|
55 | | -Schema Definition |
56 | | -Im Connector mappen Sie die JSON-Felder wie folgt: |
| 87 | +Im Connector werden die JSON-Felder wie folgt gemappt: |
57 | 88 |
|
58 | | -date -> Datum (YYYYMMDD) |
| 89 | +1. **Dimensionen (Grün):** |
| 90 | +* `Date` (Typ: YYYYMMDD) |
| 91 | +* `Banner Name` (Typ: Text) |
| 92 | +* `Client Name` (Typ: Text) |
59 | 93 |
|
60 | | -banner_name -> Text |
61 | 94 |
|
62 | | -client_name -> Text |
| 95 | +2. **Metriken (Blau):** |
| 96 | +* `Impressions` (Typ: Zahl) |
| 97 | +* `Clicks` (Typ: Zahl) |
| 98 | + |
| 99 | + |
| 100 | +3. **Berechnete Felder:** |
| 101 | +* **CTR:** Erstellen Sie im Looker Studio ein Feld mit der Formel: |
| 102 | +```sql |
| 103 | +SUM(Clicks) / SUM(Impressions) |
| 104 | + |
| 105 | +``` |
| 106 | + |
63 | 107 |
|
64 | | -impressions -> Zahl |
| 108 | +*(Formatieren Sie dieses Feld als Prozent)* |
65 | 109 |
|
66 | | -clicks -> Zahl |
67 | 110 |
|
68 | | -CTR -> Berechnetes Feld (clicks / impressions) |
69 | 111 |
|
70 | | -::: tip Caching |
71 | | -Da die Daten in #__kickbannerstats_daily nur einmal täglich aktualisiert werden, empfiehlt es sich, im Looker Studio Connector ein Caching von 12 bis 24 Stunden zu aktivieren. |
72 | | -::: |
| 112 | +::: tip Caching Strategie |
| 113 | +Da die Daten in Joomla nur einmal täglich (per Task) aktualisiert werden, sollten Sie im Looker Studio Connector das Caching aktivieren (z.B. für 12 Stunden). Dies beschleunigt den Report für den Endkunden extrem. |
| 114 | +::: |
0 commit comments