Am 21.09.2021 schrieb Kartula star

hi, zwar ist der Umgang zur Acumatica DB über die REST Schnittstelle kein eigenes Projekt von mir aber da ich die Dokumentation eher etwas lasch finde, wollte ich hier paar grundlegende GET Befehle wie den Login posten.

Zu aller erst den Login:

POST Request: https://acumatica-instanz/entity/auth/login
Hier müssen wir entweder über Postman oder ein anderes Requesttool als .json formatiert  unsere Logindaten und den Instanznamen übergeben.

{
"name" : "Mail/Username",
"password" : "dazugehöriges Passwort",
"company" : "Instanzname"
}

Mit einem Status 204 No Content wissen wir das der Login erfolgreich war. In jedem anderem Fall bekommt man eine Fehlermeldung.

In Postman z.B. wird nach dem Login automatisch eine Session erstellt. In PHP mit curl könnte das ganze so aussehen.

//Vorbereiten der Logindaten
$aProject = array();
$aProject['name'] = "BENUTZER";
$aProject['password'] = "PASSWORT";
$aProject['company'] = "INSTANZ";

//Cookie und JasonFile bereitsstellen
$content = json_encode($aProject);
$cookie= "json/cookie.txt";
$sTempPath = "json/temp.json";

//URL Curl Initialisieren
$url = "acumatica instanz/entity/auth/login";
$curl = curl_init($url);

//HEADER DATEN
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("Content-type: application/json"));
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $content);

So könnt ihr den ersten Login durchführen und die Session in einer .txt sichern.

In den nächsten abfragen könnt ihr dann wie folgt beginnen.

 

$url = https://acumatica-instanz/entity/Default/18.200.001/Task
$cookie = "json/cookie.txt";
$sTempPath = "json/temp.json";

$url = str_ireplace(" ", "%20", $url);

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie);

$json_response = curl_exec($curl);
curl_close($curl);
$Content = json_decode($json_response);

file_put_contents($sTempPath, json_encode(""));
file_put_contents($sTempPath, json_encode($Content));
$aData = json_decode(file_get_contents($sTempPath), true);

return $aData;

curl_close($curl);

 

Das schöne an der REST API ist nun das wir unsere Ergebnisse einfach über den GET Request vorfiltern können. Z.B. können wir uns einfach einmal alle Aufgaben/Tasks ausgeben lassen mit:

https://acumatica-instanz/entity/Default/18.200.001/Task

Bekommen wir alle Aufgaben/Tasks und mit

https://acumatica-instanz/entity/Default/18.200.001/Task/0c1cfbca-3311-ec11-a816-0022485b50a9

Bekommen wir die Details einer einzigen Aufgabe. Wir haben aber noch weitere Möglichkeiten zu filtern. wir  können z.B. folgende Parameter zum filtern setzten:

$filter
$top
$skip
$expand
$select
$custom

Mit diesen FIltern lass sich z.B. nur bestimmte Felder oder Datensätze anzeigen sowie ein Datensatz erweitern, überspringen oder nur die ersten 10 Datensätze auswählen.

Z.B.
https://acumatica-instanz/entity/Default/18.200.001/Task?$filter=WorkgroupID eq 'Entwicklung' and Status eq 'Open' and Owner eq '782' 

Damit erhalten wir alle Aufgaben gefiltert nach der WorkGroupID, dem Status offen und und wo der zugewiesene User die id 782 hat

So kann man zumindest schon mal Grundlegend Daten aus Acumatica abrufen.  Hoffe das Hilft ein wenig den Leuten die nicht so affin in diesem Thema sind und in der Dokumentation nicht zurecht kommen