Setup Schnittstelle
JSON WebAPI
Das COGLAS Web WMS bietet eine json WebAPI-Datenschnittstelle, über die zwischen Host und COGLAS bidirektional kommuniziert werden kann.
Mit den nachfolgenden Statements lässt sich die COGLAS WebAPI ansprechen. Zur Ausführung kann bspw. Windows Powershell verwendet werden. Im Anschluss an die Eingabe der Statements erfolgt die Abfrage der notwendigen Parameter.
Authentifizierung
Request „login“ vom Typ POST mit Parametern:
grant_type* (string): immer „password“
username* (string): Warehouse-Alias und Benutzername in der Form „Warehouse/Benutzername“
password* (string): Passwort des Benutzers
liefert als Antwort ein bearer access_token, welches für alle folgenden Anfragen in den Kopfdaten enthalten sein muss.
$url = Read-Host -Prompt 'Input url (https://test.coglas.com)'
if ($url -eq '') { $url= "https://test.coglas.com/server" }
$client = Read-Host -Prompt 'Input client-id (010)'
if ($client -eq '') { $client= "010" }
$user = Read-Host -Prompt 'Input warehouse/user (coglas/service)'
if ($user -eq '') { $user= "coglas/service" }
$pass = Read-Host -Prompt 'Input password' -AsSecureString
$body = @{grant_type='password';username=$user;password=[Runtime.InteropServices.Marshal]::PtrToStringAuto([Runtime.InteropServices.Marshal]::SecureStringToBSTR($pass))}
$token = Invoke-RestMethod -Uri ("{0}/api/login" -f $url) -Body $body -Method Post
if ($token -eq $null)
{
Write-Host "Access denied!"
}
else
{
$token = $token."access_token"
Write-Host "Got token!"
}
Abfrage Listenstatus
Request „datainterface/getliststatus“ vom Typ GET mit Parametern:
client* (string): Mandantenkennung
listtype (string): Listentyp, die abgefragt wird – GoodsInOrder | DeliveryNote | ProductionOrder | CustomerOrder
listnumber (string): Listennummer, die abgefragt wird
listline (integer): Listenposition, zu der der Status abgefragt wird
token (string): Token
Listennummer, Listentyp sowie Listenposition sind optional und dienen nur zur weiteren Einschränkung der Ergebnismenge. Werden diese Parameter leer gelassen, werden als Ergebnis die, nach Zeitstempel ältesten, Statusänderungen geliefert. Die Anzahl zurückgemeldeter Datensätze ist aktuell auf 500 Einträge je Anfrage limitiert.
Die Kombination Listentyp + Listennummer + Listenposition + Status ist hierbei eindeutig.
Der Token wird bei initialer Abfrage leer gelassen und im Ergebnis zurück geliefert. Weitere Abfragen können diese Zeichenkette verwenden, um nur nachfolgende Statusänderungen abzufragen. Bei durchgehender Verwendung des Tokens ergibt sich als Ergebnis eine vollständige Statushistorie.
ListStatus (nur Listenköpfe)
In die Zwischenablage kopieren
# calloff list status
$listtype = Read-Host "Input list type to get (1 = GoodsInOrder, 2 = DeliveryNote, 3 = ProductionOrder, 4 = CustomerOrder, default = all)"
switch($listtype)
{
1 { $listtype = "GoodsInOrder" }
2 { $listtype = "DeliveryNote" }
3 { $listtype = "ProductionOrder" }
4 { $listtype = "CustomerOrder" }
}
$listnumber = Read-Host "Input listnumber to get (empty)"
$journaltoken = Read-Host "Input token from last calloff (empty)"
$request = "{0}/api/datainterface/getliststatus?client={1}&listtype={2}&listnumber={3}&token={4}" -f ($url,$client,$listtype,$listnumber,$journaltoken)
Write-Host "Request: " $request
$json = $null
$json = Invoke-RestMethod $request -Headers @{Authorization=("Bearer {0}" -f $token)} | ConvertTo-Json -Depth 10
if($json)
{
Write-Host "Result:"
Write-Host $json
Write-Host
Read-Host "Press enter to save result or ctrl + c to cancel"
$filename = ((get-date -Format yyMMddTHHmmss) + "_" + $client + "_ListStatus.json")
$json | out-file $filename
Write-Host "Saved result to"$filename
}
ListStatus (inkl. Positionen)
# calloff list status
$listtype = Read-Host "Input list type to get (1 = GoodsInOrder, 2 = DeliveryNote, 3 = ProductionOrder, 4 = CustomerOrder, default = all)"
switch($listtype)
{
1 { $listtype = "GoodsInOrder" }
2 { $listtype = "DeliveryNote" }
3 { $listtype = "ProductionOrder" }
4 { $listtype = "CustomerOrder" }
}
$listnumber = Read-Host "Input listnumber to get (empty)"
$listline = Read-Host "Input listposition to get (empty)"
$journaltoken = Read-Host "Input token from last calloff (empty)"
$request = "{0}/api/datainterface/getlistpositionstatus?client={1}&listtype={2}&listnumber={3}&position={4}&token={5}" -f ($url,$client,$listtype,$listnumber,$listline,$journaltoken)
Write-Host "Request: " $request
$json = $null
$json = Invoke-RestMethod $request -Headers @{Authorization=("Bearer {0}" -f $token)} | ConvertTo-Json -Depth 10
if($json)
{
Write-Host "Result:"
Write-Host $json
Write-Host
Read-Host "Press enter to save result or ctrl + c to cancel"
$utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
$filename = $(get-location).Path + '' + ((get-date -Format yyMMddTHHmmss) + "_" + $client + "_ListStatus.json")
[System.IO.File]::WriteAllLines($filename, $json, $utf8NoBomEncoding)
Write-Host "Saved result to"$filename
}
Abfrage Bestandstransformationen
Request „datainterface/getstocktransformations“ vom Typ GET mit Parametern:
client* (string): Mandantenkennung
token (string): Token
Der Token wird bei initialer Abfrage leer gelassen und im Ergebnis zurück geliefert. Weitere Abfragen können diese Zeichenkette verwenden, um nur nachfolgende Statusänderungen abzufragen. Bei durchgehender Verwendung des Tokens ergibt sich als Ergebnis eine vollständige Statushistorie.
$journaltoken = Read-Host "Input token from last calloff (empty)"
$request = "{0}/api/datainterface/getstocktransformations?client={1}&token={2}" -f ($url,$client,$journaltoken)
Write-Host "Request: " $request
$json = $null
$json = Invoke-RestMethod $request -Headers @{Authorization=("Bearer {0}" -f $token)} | ConvertTo-Json -Depth 10
if($json)
{
Write-Host "Result:"
Write-Host $json
Write-Host
Read-Host "Press enter to save result or ctrl + c to cancel"
$utf8NoBomEncoding = New-Object System.Text.UTF8Encoding $False
$filename = $(get-location).Path + '\' + ((get-date -Format yyMMddTHHmmss) + "_" + $client + "_InventoryAdjustments.json")
[System.IO.File]::WriteAllLines($filename, $json, $utf8NoBomEncoding)
Write-Host "Saved result to"$filename
}
Abfrage Bestandskorrekturen
Request „datainterface/getinventoryadjustments“ vom Typ GET mit Parametern:
client* (string): Mandantenkennung
token (string): Token
Der Token wird bei initialer Abfrage leer gelassen und im Ergebnis zurück geliefert. Weitere Abfragen können diese Zeichenkette verwenden, um nur nachfolgende Statusänderungen abzufragen. Bei durchgehender Verwendung des Tokens ergibt sich als Ergebnis eine vollständige Statushistorie.
$journaltoken = Read-Host "Input token from last calloff (empty)"
$request = "{0}/api/datainterface/getinventoryadjustments?client={1}&token={2}" -f ($url,$client,$journaltoken)
Write-Host "Request: " $request
$json = $null
$json = Invoke-RestMethod $request -Headers @{Authorization=("Bearer {0}" -f $token)} | ConvertTo-Json -Depth 10
if($json)
{
Write-Host "Result:"
Write-Host $json
Write-Host
Read-Host "Press enter to save result or ctrl + c to cancel"
$filename = ((get-date -Format yyMMddTHHmmss) + "_" + $client + "_ListStatus.json")
$json | out-file $filename
Write-Host "Saved result to"$filename
}
Abfrage Liste
Request „datainterface/getlist“ vom Typ GET mit Parametern:
client* (string): Mandantenkennung
listnumber* (string): Listennummer, die abgefragt wird
listtype* (string): Listentyp, die abgefragt wird – GoodsInOrder | DeliveryNote | ProductionOrder | CustomerOrder
Je nach Status der Liste kann als Ergebnis ein anderer Nachrichtentyp geliefert werden.
$listtype = Read-Host "Input list type to get (1 = GoodsInOrder, 2 = DeliveryNote, 3 = ProductionOrder, 4 = CustomerOrder)"
switch($listtype)
{
1 { $listtype = "GoodsInOrder" }
2 { $listtype = "DeliveryNote" }
3 { $listtype = "ProductionOrder" }
4 { $listtype = "CustomerOrder" }
}
$listnumber = Read-Host "Input listnumber to get"
Write-Host "Result:"
$request = "{0}/api/datainterface/getlist?client={1}&listnumber={2}&listtype={3}" -f ($url,$client,$listnumber,$listtype)
$json = $null
$json = (curl -H @{'Authorization' = 'Bearer {0}' -f $token} $request | select-object -expand Content | convertfrom-json)."Data" | convertto-json -Depth 10
if($json)
{
Write-Host $json
Write-Host
Read-Host "Press enter to save result or ctrl + c"
$filename = ((get-date -Format yyMMddTHHmmss) + "_" + $client + "_" + $listtype + "_" + $listnumber + ".json")
$json | out-file $filename
Write-Host "Saved result to"$filename
}
Abfrage Artikelsummenbestand
Request „datainterface/getarticlestocksum“ vom Typ GET mit Parametern:
client* (string): Mandantenkennung
$request = "{0}/api/datainterface/getarticlestocksum?client={1}" -f ($url,$client)
$json = Invoke-RestMethod $request -Headers @{Authorization=("Bearer {0}" -f $token)} | ConvertTo-Json -Depth 10
if($json)
{
Write-Host $json
Write-Host
Read-Host "Press enter to save result or ctrl + c"
$filename = ((get-date -Format yyMMddTHHmmss) + "_" + $client + "_ArticleStockSum.json")
$json | out-file $filename
Write-Host "Saved result to"$filename
}
Anlage von Listen/Stammdaten sowie Ausführung von Aktionen
Für die Anlage von Listen und Stammdaten sowie das Triggern von Listenaktionen via ProcessList steht eine einheitliche Methode zur Verfügung. Diese erwartet Daten im JSON-Format, wobei innerhalb dieser Daten der Typ der Nachricht angegeben wird.
Request „datainterface/processmessagetype“ vom Typ PUT mit Parametern:
jsonObject* (JSON): zu verarbeitende Daten
$filename = Read-Host "Input filename to send"
$content = get-content -raw -path $filename -encoding UTF8
curl -Method PUT "$url/api/datainterface/processmessagetype" -H @{'Content-Type' = 'application/json'; 'Authorization' = 'Bearer {0}' -f $token} -Body ([System.Text.Encoding]::UTF8.GetBytes($content))
Verfügbare Nachrichtentypen
https://coglas.sharepoint.com/:x:/s/Public/EZAZMe_SJx1LmbnMeIJaroABtLZk74M6tPY8482sx4wuvQ?e=vNZdbD
XML Schnittstelle
Die einzelnen Elemente der XML Schnittstelle sind innerhalb der xsd Definitionen enthalten. Beispiele zu den Nachrichtentypen sind im jeweiligen Kapitel zu finden.
Der Austausch von XML-Dateien zwischen Hostsystem und COGLAS Web findet über Transferordner statt.
Im Ordner „Outbound“ werden Dateien abgelegt, die ausgehend vom Host in Richtung COGLAS zielen.
Im Ordner „Inbound“ befinden sich Rückmeldungen von COGLAS an den Host. Weitere Informationen hierzu im Kapitel Schnittstellen › Rückmeldungen aus COGLAS.
FileTransfer für Bilder über Schnittstelle
Der FileTransfer für Bilder ermöglicht es, Objekten über die Schnittstelle Grafikdateien zuzuordnen. Dies ist eine effektive Alternative zur manuellen Zuordnung in der GUI des Coglas WMS. Die eindeutige Zuordnung wird durch die nachfolgend genannten Namenskonventionen erreicht:
Artikel: Mandantennummer, Artikelnummer
Verpackungseinheit: Mandantennummer, Artikelnummer, Verpackungseinheitsbezeichnung
Geschäftspartner: Geschäftspartnernummer
Kundenauftrag: Mandantennummer, Kundenauftragsnummer
Lieferschein: Mandantennummer, Lieferscheinnummer
Ladehilfsmittel: Ladehilfsmittelbezeichnung
Inventurauftrag: Mandantennummer, Inventurauftragsnummer
Wareneingangsschein: Mandantennummer, Wareneingangsscheinnummer
Warenausgangsschein: Warenausgangsscheinnummer
Mit Hilfe dieser Informationen können wir den Dateinamen wie folgt umbenennen:
Typ | Bezeichnung | Beispiel |
---|---|---|
Artikel | A_Mandantennummer_Artikelnummer_Dateiname | A_010_123123123_Motor |
Verpackungseinheit | APU_MandantenNr_ArtikelNr_Verpackungseinheitsbez._Dateiname | APU_010_32116817_Tüte_Bild |
Geschäftspartner | BP_Geschäftspartnernummer_Dateiname | BP_12345_Logo |
Kundenauftrag | CO_MandantenNr_Kundenauftragsnummer_Dateiname | CO_010_123_Schuhe |
Lieferschein | DN_MandantenNr_Lieferscheinnummer_Dateiname | DN_010_GI1907110001-01_Test |
Ladehilfsmittel | E_Ladehilfsmittelbezeichnung_Dateiname | E_Tüte_Tüte |
Inventurauftrag | IO_MandantenNr_Inventurauftragsnummer_Dateiname | IO_010_IN2005190134_Inv |
Wareneingangsschein | GIR_MandantenNr_Wareneingangsscheinnummer_Dateiname | GIR_010_GI1907110001-01-01_Eingang |
Warenausgangsschein | GOR_Warenausgangsscheinnummer_Dateiname | GOR_10002_Ausgang |
→ zurück zu COGLAS Prozessen
→ zurück zu COGLAS Menü