Import-Schnittstelle Anzeigen
Die Anzeigendaten können wahlweise über einen XML-Datei-Import (Hotfolder) oder über einen REST Webservice als JSON- oder XML-Struktur übergeben werden.
Import Hotfolder
Folgende Konfigurationseinträge sind verfügbar:
| Schalter | Optional | Bedeutung/Wert | Anmerkung |
|---|---|---|---|
| portal.imports.importer-enabled | N | true/false | De-/Aktivierung des Importers |
| portal.imports.import-points[0].name | N | 'Auftragsbearbeitung' | Der Name für den Importpoint |
| portal.imports.import-points[0].component-name | N | AdvertImportModule | Klassenname des Importmoduls |
| portal.imports.import-points[0].initial-delay | J | 15 | Wartezeit in Sekunden bevor der erste Import startet |
| portal.imports.import-points[0].interval | J | 20 | Poll-Abstand in Sekunden |
| portal.imports.import-points[0].parameters.input-directory | N | Eingangs-/Poll-Verzeichnis für Gestaltungsaufträge (*.xml) und Motivdateien | |
| portal.imports.import-points[0].parameters.error-directory | N | Fehlerverzeichnis; Neben den Dateien aus dem Eingangsverzeichnis wird hier eine Datei mit den Fehlermeldungen erzeugt, welche den Namen der XML-Datei mit der Endung "_error.txt" besitzt. | |
| portal.imports.import-points[0].parameters.archive-directory | N | Archivverzeichnis | |
| portal.imports.import-points[0].parameters.xsl-transformation | J | Transformationsvorschrift (.xsl) vom Eingangsformat zum Importformat |
Import über Rest-Schnittstelle
URL: Hostname:Port/service/public/designorder/import
Methoden:
- Import / Update einer Anzeige
- POST
- Body-Content-Typ: multipart/formdata
- Text-Part "advert" als JSON (application/json) oder XML-Format (application/xml)
- Array von File-Parts "assetData" für Motive
Die Dateinamen müssen mit den Attributen NormalAssetFileName, TabletAssetFileName und MobileAssetFileName in der XML- bzw. JSON-Struktur korrespondieren.
- Stornierung einer Anzeige
- DELETE
- Parameter: orderNo
Attributen der Importstruktur
| JSON-Attribut | XML | Datentyp / Wertebereich / Format | Pflicht | Beschreibung |
|---|---|---|---|---|
| cancelled | Attribut von Advert | boolean | nein | Default false, Wenn true wird nur das Attribut orderNo ausgewertet und die Anzeige storniert. Dieses Attribut ist für die XML-Datei-Schnittstelle vorsehen, funktioniert aber auch bei der POST-Methode über Rest als Alternative zu DELETE |
| orderNo | Advert.OrderNo | String | ja | Freitext; Auftrags bzw. Anzeigennummer; Diese muss eindeutig sein. |
| description | Advert.Description | String | ja | Freitext; Beschreibung |
| customer | Advert.Customer | String | nein | Freitext; Kundenname |
startDate | Advert.StartDate | "yyyy-MM-dd" | nein | Startdatum für Gültigskeitszeitraum |
| endDate | Advert.EndDate | "yyyy-MM-dd" | nein | Enddatum für Gültigskeitszeitraum |
priority | Advert.Priority | int (0 -100) | ja | Priorität |
maxImpressions | Advert.MaxImpressions | int (>= 0) | nein | Maximale Anzahl der Impressions |
| maxClicks | Advert.MaxClicks | int (>= 0) | nein | Maximale Anzahl der Klicks |
advertTypes[] | Advert.AdvertTypes.AdvertType | Mögliche Werte: "BANNER", "BUTTON", "TITLE_HEADER", "VERTICAL_BANNER" | nein | Zugeordnete Anzeigentypen im Portal |
validTags[] | Advert.ValidTags.Tag | String (Tagname) | nein | Anzeigekriterien für Stichworte der Seite |
invalidTags[] | Advert.InvalidTags.Tag | String (Tagname) | nein | Ausschlusskriterien für Stichworte der Seite |
validDepartments[] | Advert.ValidDepartments.Department | String (Ressortname) | nein | Anzeigekriterien für Ressorts der Seite |
invalidDepartments[] | Advert.InalidDepartments.Department | String (Ressortname) | nein | Ausschlusskriterien für Ressorts der Seite |
validLocations[] | Advert.ValidLocations.Location | String (Ortsname) | nein | Anzeigekriterien für Orte der Seite |
invalidLocations[] | Advert.InvalidLocations.Location | String (Ortsname) | nein | Ausschlusskriterien für Orte der Seite |
validGeoRegions[] | Advert.ValidGeoRegions.GeoRegion | String (Name der Region) | nein | Anzeigekriterien für Regionen der Seite |
| validGeoRegions[] | Advert.ValidGeoRegions.GeoRegion | String (Name der Region) | nein | Ausschlusskriterien für Regionen der Seite |
linkUrl | Advert.LinkUrl | String (URL) | ja | Link der Anzeige |
normalAssetFileName | Advert.NormalAssetFileName | String | ja | Dateiname der Standardmotivs |
tabletAssetFileName | Advert.TabletAssetFileName | String | nein | Dateiname des Motivs für Tabletts |
mobileAssetFileName | Advert.MobileAssetFileName | String | nein | Dateiname des Motivs für Smartphones |
| placement | Advert.Placement | String | nein | Positioniierung bei Hochformatbanner |
| name | Advert.Name | String | nein | Anzeige Kundenname |
| Advert.Mail | String | nein | Kunden E-Mail | |
| phone | Advert.Phone | String | nein | Kunden Telefonnummer |
| address | Advert.Address | String | nein | Kundenadresse |
| noteLabel | Advert.NoteLabel | String | nein | Hinweis Anzeigename |
| noteText | Advert.NoteText | String | nein | Hinweis |
| fullscreen | Advert.Fullscreen | Boolean | nein | Print2Online Kennzeichen |
XML-Format
Schemadefinition XSL:
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="Advert">
<xs:complexType>
<xs:attribute name="cancelled" type="xs:boolean" />
<xs:sequence>
<xs:element name="OrderNo" type="xs:string" />
<xs:element name="Description" type="xs:string" />
<xs:element name="Customer" type="xs:string" />
<xs:element name="Priority" type="xs:unsignedByte" />
<xs:element name="NormalAssetFileName" type="xs:string" />
<xs:element name="TabletAssetFileName" type="xs:string" />
<xs:element name="MobileAssetFileName" type="xs:string" />
<xs:element name="MaxImpressions" type="xs:unsignedShort" />
<xs:element name="MaxClicks" type="xs:unsignedShort" />
<xs:element name="StartDate" type="xs:date" />
<xs:element name="EndDate" type="xs:date" />
<xs:element name="AdvertTypes">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="AdvertType" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="LinkUrl" type="xs:string" />
<xs:element name="ValidTags">
<xs:complexType>
<xs:sequence>
<xs:element name="Tag" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InvalidTags">
<xs:complexType>
<xs:sequence>
<xs:element name="Tag" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ValidDepartments">
<xs:complexType>
<xs:sequence>
<xs:element name="Department" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InvalidDepartments">
<xs:complexType>
<xs:sequence>
<xs:element name="Department" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ValidLocations">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="Location" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InvalidLocations">
<xs:complexType>
<xs:sequence>
<xs:element name="Location" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ValidGeoRegions">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="GeoRegion" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="InvalidGeoRegions">
<xs:complexType>
<xs:sequence>
<xs:element name="GeoRegion" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Beispiel:
<Advert cancelled = "false">
<OrderNo>imp_123456</OrderNo>
<Description>Importtest 1</Description>
<Customer>Testkunde</Customer>
<Priority>100</Priority>
<NormalAssetFileName>image1.png</NormalAssetFileName>
<TabletAssetFileName>image2.png</TabletAssetFileName>
<MobileAssetFileName>image2.png</MobileAssetFileName>
<MaxImpressions>50000</MaxImpressions>
<MaxClicks>10000</MaxClicks>
<StartDate>2021-06-31</StartDate>
<EndDate>2021-08-25</EndDate>
<AdvertTypes>
<AdvertType>BUTTON</AdvertType>
<AdvertType>TITLE_HEADER</AdvertType>
</AdvertTypes>
<LinkUrl>http://www.hup.de</LinkUrl>
<ValidTags>
<Tag>Tag des Hundes</Tag>
</ValidTags>
<InvalidTags>
<Tag>Haare</Tag>
</InvalidTags>
<ValidDepartments>
<Department>Sport</Department>
</ValidDepartments>
<InvalidDepartments>
<Department>Fußball</Department>
</InvalidDepartments>
<ValidLocations>
<Location>Leipzig</Location>
<Location>Dresden</Location>
</ValidLocations>
<InvalidLocations>
<Location>Berlin</Location>
</InvalidLocations>
<ValidGeoRegions>
<GeoRegion>Sachsen</GeoRegion>
<GeoRegion>Baden-Baden</GeoRegion>
</ValidGeoRegions>
<InvalidGeoRegions>
<GeoRegion>Mecklenburg-Vorpommern</GeoRegion>
</InvalidGeoRegions>
<LinkUrl>https://www.hup.de/</LinkUrl>
<Placement>ANY</Placement>
<Name>Tannenbaum und Zweige GmbH</Name>
<Mail>tannenbaum@hup.de</Mail>
<Phone>0176 12345678</Phone>
<Address>Donahnyistraße 15\n04103 Leipzig\nDeutschland</Address>
<NoteLabel></NoteLabel>
<NoteText>Montag und Donnerstag 11 - 17 Uhr\nSonntag 12 - 14 Uhr</NoteText>
<Fullscreen>true</Fullscreen>
</Advert>