HTTP REST-API Verbindung zu Akeneo

Hallo Zusammen,

ich möchte Synesty an die REST-API von Akeneo anbinden. Ich scheitere jedoch daran, dass die REST-API von Akeneo zusätzlich zur URL, Clientid und Secret einen Usernamen und ein Password benötigt. Im Synesty sind letztere beiden jedoch in keinem der angebotenen HTTP-Verbindungstypen vorgesehen.

Für Akeneo mit Postman gibt es ein Tutorial. Hier die URL dazu Your very first tutorial Vielleicht helfen Euch die Informationen dort um mir einen Tipp mit Synesty zu geben.

Viele Grüße
Maik

Hallo Maik,

wenn Du ApiCall als Step nutzt, kannst Du auch Username/Password übergeben.

Gruß Micha
podcomm e-commerce management

Hallo Micha,

ich hat dies gesehen. Laut Synesty Doku ist dies jedoch für eine HTTP Basic Authentifizierung. Hast Du das schon mal mit der Akeneo API ausprobiert ?

Gruß Maik

Ohne irgendetwas über die Akeneo-API zu wissen:
In der in der Doku erwähnten Postman-Collection sieht es so aus, als gibt es 2 relevante Calls:

  1. Authentication um den Access Token zu erhalten (nur dafür wird Username und Password noch benötigt). Dazu kann man einen APICall Step nehmen (ggf. ohne extra Account… oder einen extra Account dafür, in dem man HTTP Basic Auth wählt)

Als Ergebnis erhält man in der Regel einen Access-Token den man in weiteren Calls braucht.

Hier wird Username und Password im Body als JSON übergeben.

client_id und client_secret werden über die Username / Password Felder am Step (oder Verbindung ) übergeben.

  1. der eigentliche Call, um z.B. Produkte abzurufen.

Dafür einen HTTP-Account anlegen vom Typ Oauth2 anlegen.
Den Token aus 1. dann dort hinterlegen.

image

das entspricht dann ungefähr dieser Postman Konfiguration.

Diese 2 Calls sind eigentlich bei nahezu jeder REST-API der Fall (1. Token holen, 2. Calls mit Token machen).

Hi. Ich klinke mich hier auch mal ein, da ich gerade das Selbe versuche.

Danke schon mal für die bisherigen Infos!

Ich habe einen funktionierenden ersten Schritt mit einem API-Call und bekomme dort auch den Token.

Die Response (responses@APICall_1) mit dem Token sieht folgendermaßen aus:

[{"access_token":"YWE5MGM4ZDJkODhjZ***************************RmOWM0NjRkNGQwMzZiYmZlODRlZDc4NDkzMg","expires_in":3600,"token_type":"bearer","scope":null,"refresh_token":"YWU4NzY3ZTQ2YzE4MWZkYjE3N***************************kZDg2YjQ3NDBhZGNmZQ"}]

Dann komme ich aber nicht weiter, da ich nicht weiß, was ich im Account oder einzeln in weiteren Schritten angeben muss, um den Token aus Step 1 zu übernehmen.

Soweit ich das verstanden habe, muss das als Nächstes geparsed werden. Aber wo genau? Noch im API-Call, der den Token geholt hat, oder in den folgenden, die auf den Output zugreifen? Und erst im Feld parsingTemplate oder direkt in requestHeaders?

Die Dokumentation sagt dazu leider gar nichts und hier im Forum habe ich zwar ein paar ähnliche Beispiele gefunden, aber daraus nichts Funktionierendes ableiten können.

Vielen Dank im Voraus!
Anton

Hallo Anton,

Du kannst die response direkt im APICall Step parsen. Dazu steht das Feld parsingTemplate zur Verfügung. Mit Hilfe des parsingTemplates wird aus Response ein Spreadsheet (output@APICall_1) erzeugt.

Mit folgendem parsingTemplate sollte das in deinem Fall funktionieren:

<#assign row = target.addRow()>
<#list json as j >
  <#assign row = target.addRow()>
  ${addColumns(row, j)}
</#list>

Das Output Spreadsheet sieht dann wie folgt aus:

Weitere Information zum API Call findest du in der Dokumentation des Steps.

Den Token kannst du in weiteren Steps (z.B. einem weiteren APICall, UrlDownload oder SpreadsheetUrlDownload Steps) verwenden, um z.B. Produkte über die akeneo API abzurufen.
In diesen nachfolgenden Steps muss der Token im Feld requestHeader angegeben werden. Das sollte in etwa wie folgt aussehen (Beispiel APICall Step):

Authorization=Bearer ${output@APICall_1.firstRow("access_token")}

Ich hoffe die Erklärung hilft dir etwas weiter. Falls du noch Fragen dazu hast kannst du dich gerne nochmal bei uns melden.

Viele Grüße
Torsten

Hallo Thorsten,

hat super geklappt.

Vielen Dank!
Anton

1 Like