Eintragsdaten über API abrufen
Es gibt viele Anwendungsfälle warum Portalbetreiber die Daten ihrer Einträge in externen Systemen benötigen. Die discoverize Branchenportalsoftware kann nicht alles leisten, und andere Systeme sind besser spezialisiert auf bestimmte Prozesse. Einträge können auch als CSV-Datei exportiert werden, um sie dann in ein externes System zu importieren. Die hier beschriebene Schnittstelle ist aber deutlich komfortabler, da das externe System direkt mit dem discoverize Portal kommunizieren kann.
Zur Info: dieses Feature ist im Rahmen von Customizing für einen Kunden entwickelt worden und auch auf dessen Bedarf hin zugeschnitten. Das Feature könnte bei Bedarf auch für weitere Kunden zum Einsatz kommen, müsste jedoch dafür erst noch erweitert und angepasst werden.
Funktionsweise
Das Feature muss erst vom discoverize Team freigeschaltet werden. Danach kann über einen abgesicherten API-Endpunkt die Abfrage von außen gestellt werden. Die Eintragsdaten werden im Format JSON geliefert. Je nach Anzahl der Einträge und Eigenschaften im Portal kann die Antwort viele Megabyte groß sein. Im Hintergrund wird diese Antwort einmal täglich erstellt und als Datei zwischengespeichert, da das Erstellen des JSON mit all seinen Informationen bei vielen Einträgen im Portal lange dauern kann. Somit sind die Daten, welche über die API abgefragt werden, maximal 24 Stunden alt. Grundsätzlich werden die gleichen Daten bereitgestellt, die auch über den CSV-Export abgerufen werden können.
Aufbau des JSON
Erklärungen
- ExportDateTime: Zeitpunkt der Erstellung dieses JSON-Datensatzes
- EntryTypes: Liste aller Eintragstypen und ihrer Einträge
- EntryTypeName: Singular Name des Eintragstyps
- Entries: Liste von Einträgen
- BasicInfo: URL zur Eintragsseite, Erstellungsdatum, Anzahl Bewertungen, …
- SubscriptionInfo: Informationen zur aktuellen Premiumbuchung (falls vorhanden)
- EntryOwner: E-Mail-Adresse des Eintragsbetreibers
- Properties: Liste aller Eigenschaften des Eintrags, jeweils in der Form:
- Name: Name der Eigenschaft
- Type: Typ der Eigenschaft
- Value: aktuell hinterlegter Wert für die Eigenschaft (kann bei bestimmten Eigenschaftstypen komplexeres JSON sein)
- Pictures: Liste der Top 5 Bilder des Eintrags, jeweils in der Form:
- Url: URL des Bildes
- Description: die hinterlegte Beschreibung
- PictureCreditsUrl: URL zur Bild-Quelle
- PictureCredits: Text der Bild-Quelle
- Statistics: verschiedene Statistiken zum Eintrag, z.B. wie oft der Eintrag in den letzten 30 Tagen aufgerufen wurde
Beispiel
{ "ExportDateTime": "2021-10-19T08:01:40.7962623Z", "EntryTypes": [ { "EntryTypeName": "Hochzeitslocation", "Entries": [ { "BasicInfo": { "Id": 42, "ModifiedDate": "2021-08-30T08:08:49", "CreatedDate": "2015-05-14T19:57:50", "Url": "https://hochzeits-location.info/...", "CompletenessInPercent": 91.4705882352941, "TotalScore": 314.090232794669, "NumberOfRatings": 5.0, "IsActive": true }, "SubscriptionInfo": { "Status": "Aktiv", "PlanName": "PREMIUM light", "Verified": true, "Price": "330,00 € (zzgl. USt.)", "LengthOfCurrentSubscriptionInMonths": 12, "BookingDate": "08.08.2018", "CurrentPeriodEndDate": "08.08.2022", "IsTestPremium": false }, "EntryOwner": { "Email": "..." }, "Properties": [ { "Name": "Name des Eintrags", "Type": "Text", "Value": "..." }, { "Name": "Staat", "Type": "Text", "Value": "AT" }, { "Name": "Personenanzahl", "Type": "Zahl", "Value": 120.0 }, { "Name": "Trauung im Freien", "Type": "Vorhanden Ja/Nein", "Value": true }, { "Name": "mögliche Tischformate", "Type": "Mehrfachauswahl", "Value": { "Values": [ "Einzeltische rund", "Einzeltische eckig", "Tafel", "U-Form" ], "IsNotAvailable": false } }, { "Name": "Klassifizierung", "Type": "Kategorie", "Value": { "Value": "Klassifizierung_5" } }, ... ], "Pictures": [ { "Url": "...", "Description": "...", "PictureCreditsUrl": null, "PictureCredits": null }, ... ], "Statistics": { "IndividualButtonClickCounts": [], "Modified": "2021-10-19T04:08:38", "InquiriesCountFor30Days": 0, "InquiriesCountFor365Days": 7, "InquiriesCountForAlltime": 88, "EntryPageViewCountFor30Days": 162, "EntryPageViewCountFor365Days": 1715, "EntryPageViewCountForAlltime": 16472, "HomepageClickCountFor30Days": 7, "HomepageClickCountFor365Days": 103, "HomepageClickCountForAlltime": 865, "ShowPhoneClickCountFor30Days": 0, "ShowPhoneClickCountFor365Days": 7, "ShowPhoneClickCountForAlltime": 94, "PhoneLinkClickCountFor30Days": 0, "PhoneLinkClickCountFor365Days": 1, "PhoneLinkClickCountForAlltime": 25, "CustomCallToActionClickCountFor30Days": 0, "CustomCallToActionClickCountFor365Days": 0, "CustomCallToActionClickCountForAlltime": 0, "BookingLinkClickCountFor30Days": 0, "BookingLinkClickCountFor365Days": 0, "BookingLinkClickCountForAlltime": 0 } }, ... ] } ] }