Basis-URL
https://{tenant}.logzi.com/api/product/
Jede Anfrage liefert eine JSON-Antwort zurück. Bei Erfolg ist result.code == 1, im Fehlerfall result.code == 0.
/api/product/get
Abruf eines einzelnen Produkts anhand von ID, Artikelnummer, Barcode oder Produktgruppe, mit vollständigen Details.
Query-Parameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
id |
int | Die eindeutige Kennung des Produkts (oder verwenden Sie stattdessen den Parameter partnumber) |
|
partnumber |
string | Suche anhand der Artikelnummer (falls id nicht angegeben ist) |
|
barcode |
string | Suche anhand des Barcodes | |
product_group_id |
int | Suche anhand der Produktgruppen-ID | |
store_id |
int | Lagerkennung — zur Rückgabe von Bestandsinformationen |
Beispielanfrage
GET /api/product/get?id=42&store_id=1
X-API-KEY: {ihr_api_schluessel}
Beispielantwort
{
"result": { "code": 1, "message": "success" },
"data": {
"id": 42,
"type_id": 6,
"product_group_id": 10,
"partnumber": "TERM-0042",
"name": "Minta termék",
"product_name": "Minta termék",
"product_unit_name": "db",
"vtsz": "8471300000",
"weight_netto": "0.500",
"weight_brutto": "0.600",
"active_id": 1,
"price": 5000,
"tax_id": 2,
"currency_id": 1,
"incoming_price": 3500,
"incoming_currency_id": 1,
"incoming_tax_id": 2
}
}
/api/product/get_stock
Abruf der Bestandsinformationen eines Produkts nach Lager.
Query-Parameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
id |
int | Die Produktkennung (oder partnumber) |
|
partnumber |
string | Suche anhand der Artikelnummer (Alternative zu id) |
|
list_condition[store_id] |
int | Filterung nach einem bestimmten Lager |
Beispielanfrage
GET /api/product/get_stock?id=42&list_condition[store_id]=1
X-API-KEY: {ihr_api_schluessel}
Beispielantwort
{
"result": { "code": 1, "message": "success" },
"data": {
"id": 42,
"partnumber": "TERM-0042",
"quantity_phy": "120.000000",
"quantity_acc": "5.000000"
}
}
/api/product/get_extended
Abruf eines Produkts mit erweiterten Daten — inklusive Verfügbarkeit und reservierter Menge.
Query-Parameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
id |
int | Die eindeutige Kennung des Produkts (oder partnumber) |
|
partnumber |
string | Suche anhand der Artikelnummer | |
store_id |
int | Lagerfilter für den Bestand |
Beispielanfrage
GET /api/product/get_extended?id=42
X-API-KEY: {ihr_api_schluessel}
/api/product/list
Abruf einer paginierbaren Liste von Produkten mit Filtermöglichkeiten.
Query-Parameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
list_offset |
int | Versatz für die Paginierung (Standard: 0) | |
list_count |
int | Anzahl der Treffer pro Seite (Standard: 10) | |
list_condition[partnumber] |
string | Filterung nach Artikelnummer (LIKE) | |
list_condition[name] |
string | Filterung nach Produktname (LIKE) | |
list_condition[type_id] |
int | Filterung nach Produkttyp (1–6) | |
list_condition[product_category_id] |
int | Filterung nach Produktkategorie-ID | |
list_condition[active_id] |
int | Filterung nach Status (1=aktiv, 0=inaktiv) | |
list_condition[store_id] |
int | Lagerbestandsfilter — nur im jeweiligen Lager verfügbare Produkte |
Beispielanfrage
GET /api/product/list?list_offset=0&list_count=20&list_condition[active_id]=1
X-API-KEY: {ihr_api_schluessel}
Beispielantwort
{
"result": { "code": 1, "message": "success" },
"data": [
{
"id": 42,
"type_id": 6,
"partnumber": "TERM-0042",
"name": "Minta termék",
"product_name": "Minta termék",
"product_unit_name": "db",
"active_id": 1,
"price": 5000,
"incoming_price": 3500
}
],
"params": {
"list_count": 20,
"list_offset": 0,
"list_all": 158
}
}
/api/product/list_extended
Erweiterte Liste der Produkte — mit vollständiger Preisliste, Bestand und zugehörigen Daten.
Query-Parameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
list_offset |
int | Versatz für die Paginierung (Standard: 0) | |
list_count |
int | Anzahl der Treffer pro Seite | |
list_condition |
array | Array der Filterbedingungen (wie bei /list) |
|
list_params |
array | Zusätzliche Parameter |
Beispielanfrage
GET /api/product/list_extended?list_offset=0&list_count=10
X-API-KEY: {ihr_api_schluessel}
/api/product/list_group
Paginierbare Liste der Produktgruppen — Daten auf Gruppenebene mit Bestands- und Preisinformationen.
Query-Parameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
list_offset |
int | Versatz für die Paginierung (Standard: 0) | |
list_condition[active_id] |
int | Filterung nach Status (1=aktiv, 0=inaktiv) | |
list_condition[type_id] |
int | Filterung nach Produkttyp (1–6) |
Beispielanfrage
GET /api/product/list_group?list_offset=0&list_condition[active_id]=1
X-API-KEY: {ihr_api_schluessel}
Beispielantwort
{
"result": { "code": 1, "message": "success" },
"data": [
{
"id": 10,
"product_group_id": 10,
"name": "Minta termék csoport",
"type_id": 1,
"type_name": "Variációs termék",
"active_id": 1,
"partnumber_list": "TERM-001, TERM-002",
"quantity_phy": "240.000000",
"price": 5000,
"incoming_price": 3500
}
],
"params": {
"list_count": 10,
"list_offset": 0,
"list_all": 42
}
}
/api/product/get_group
Abruf einer einzelnen Produktgruppe mit allen Ausführungen (Varianten) und deren Preisliste.
Query-Parameter
| Parameter | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
product_group_id |
int | Die Kennung der Produktgruppe | |
language_id |
int | Sprachkennung (Standard: 1 — Ungarisch) |
Beispielanfrage
GET /api/product/get_group?product_group_id=10
X-API-KEY: {ihr_api_schluessel}
/api/product/save
Erstellung oder Änderung eines Produkts. Die Datenstruktur hängt vom Wert von type_id ab.
Produkttypen (type_id)
| 1 | Variantenprodukt | Mehrere Ausführungen (Varianten) — die Angabe des item[]-Arrays ist erforderlich |
| 2 | Dienstleistung | Einfaches Produkt |
| 3 | Paketprodukt | Paket aus einfachen Produkten |
| 4 | Virtuell – Eintrittskarte | Für Tickettypen |
| 5 | Rezepturprodukt | Aus Zutaten hergestellt |
| 6 | Einfaches Produkt | Am häufigsten verwendeter Typ |
A) Felder auf Gruppenebene — gültig für alle Typen
Diese Felder betreffen die Tabelle db_product_group. Bei einer Änderung bleibt der Wert nicht ausgefüllter Felder unverändert.
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
id |
int | 0 = neues Produkt, >0 = Änderung eines bestehenden Produkts (product_id) |
|
type_id |
int | Produkttyp (1–6) — bei einem neuen Produkt erforderlich, bei einer Änderung nicht notwendig | |
product_group_id |
int | 0 = Erstellung einer neuen Gruppe, >0 = Änderung einer bestehenden Gruppe | |
name |
string | Name des Produkts. Falls nicht angegeben, gilt folgende Fallback-Reihenfolge: product_name → product_group_name → product_unit_name |
|
product_name |
string | Individuelle Produktbezeichnung (Fallback für name) |
|
product_group_name |
string | Gruppenbezeichnung (Fallback für name) |
|
vtsz |
string | KN/TESZOR-Zolltarifnummer (z. B. 8471300000) |
|
description |
string | Kurzbeschreibung | |
description_long |
string | Ausführliche Beschreibung (HTML erlaubt) | |
meta_title |
string | SEO-Titel | |
meta_keyword |
string | SEO-Schlüsselwörter (durch Komma getrennt) | |
meta_description |
string | SEO-Beschreibung | |
packaging_note |
string | Verpackungshinweis | |
active_id |
int | Aktiver Status (1=aktiv, 0=inaktiv — Standard: 1) | |
partner_id |
int | Kennung des Herstellers/Partners | |
acquisition_partner_id |
int | Kennung des bevorzugten Lieferanten | |
unnumber_id |
int | Kennung der UN-Nummer (Gefahrgut) | |
category_id |
int | Kennung der Produkthauptkategorie | |
default_store_id |
int | Kennung des Standardlagers | |
default_store_locality_id |
int | Kennung des Standard-Lagerplatzes | |
ledger_number_in_id |
int | Kennung der Hauptbuch-Kontonummer (eingehend) | |
ledger_number_out_id |
int | Kennung der Hauptbuch-Kontonummer (ausgehend) | |
ledger_number_out_abroad_id |
int | Kennung der Hauptbuch-Kontonummer (Export) | |
acquisition_auto |
int | Automatische Bestellung (0/1) | |
serialnumber_required |
int | Seriennummernpflichtig (0=nein, 1=ja) | |
stockable |
int | Verwaltet Bestand (0/1 — Standard: 1 bei type_id=1) |
|
synchronizable |
int | Webshop-Synchronisierung (0/1 — Standard: 1) | |
integration_use_price_list |
int | Aktualisierung des Verkaufspreises bei Webbestellung (0/1) | |
drs |
int | DRS-Pflichtrückgabesystem (0/1) | |
excisable |
int | Verbrauchsteuerpflichtiges Produkt (0/1) | |
tax_inverse |
int | Produkt mit Reverse-Charge-Besteuerung (0/1) | |
service_intermediate |
int | Vermittelte Dienstleistung (0/1) | |
erase_code |
int | Datenlöschcode (0/1) | |
package |
int | Gebinde/Verpackungsmittel (0/1) | |
size_width |
decimal | Breite (cm) | |
size_height |
decimal | Höhe (cm) | |
size_depth |
decimal | Tiefe (cm) |
B) item[]-Array — ausschließlich bei type_id = 1 (Variantenprodukt)
Mindestens 1 Element ist erforderlich. Jede Ausführung (Variante) besitzt eine eigene Artikelnummer. Die Preise sind auf Ebene der Ausführung anzugeben.
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
item[n][id] |
int | 0 = neue Ausführung, >0 = Änderung einer bestehenden | |
item[n][partnumber] |
string | Artikelnummer — mind. 3 Zeichen, im System eindeutig | |
item[n][product_unit_id] |
int | Kennung der Mengeneinheit (z. B. Stk, kg, l) | |
item[n][product_unit_value] |
decimal | Gebindemenge (z. B. 0.5, 1.0, 6.0) | |
item[n][product_unit_name] |
string | Individuelle Bezeichnung der Ausführung (z. B. "0,5-l-Flasche") | |
item[n][product_url] |
string | Artikelspezifischer URL-Slug | |
item[n][quantity_min] |
decimal | Mindestbestand (Warnschwelle) | |
item[n][quantity_opt] |
decimal | Optimaler Bestand | |
item[n][quantity_max] |
decimal | Maximaler Bestand | |
item[n][weight_netto] |
decimal | Nettogewicht in kg (Komma als Dezimaltrennzeichen wird akzeptiert) | |
item[n][weight_brutto] |
decimal | Bruttogewicht in kg (inkl. Verpackung) | |
item[n][warranty_month] |
int | Garantie in Monaten | |
item[n][remove] |
int | 1 = Löschmarkierung (Soft Delete) | |
| PREISFELDER — auf Ebene der Ausführung | |||
item[n][price] |
decimal | Netto-Verkaufspreis | |
item[n][currency_id] |
int | Kennung der Verkaufswährung | |
item[n][tax_id] |
int | Kennung des Umsatzsteuersatzes (Verkauf) | |
item[n][incoming_price] |
decimal | Netto-Einkaufspreis | |
item[n][incoming_currency_id] |
int | Kennung der Einkaufswährung | |
item[n][incoming_tax_id] |
int | Kennung des Umsatzsteuersatzes (Einkauf) | |
item[n][incoming_cost_price] |
decimal | Selbstkostenpreis | |
item[n][price_on_sale] |
decimal | Aktions-Verkaufspreis | |
item[n][price_on_sale_date_end] |
datetime | Ablaufdatum der Aktion (YYYY-MM-DD HH:ii:ss) |
|
item[n][price_discount] |
decimal | Rabattbetrag (%) | |
item[n][list_price] |
decimal | Unverbindliche Preisempfehlung (UVP) | |
item[n][list_currency_id] |
int | Kennung der Währung der Preisempfehlung | |
item[n][list_tax_id] |
int | Kennung des Umsatzsteuersatzes der Preisempfehlung | |
C) Felder auf Produktebene — bei type_id = 2, 3, 4, 5, 6
Bei diesen Typen sind die Felder auf Root-Ebene anzugeben (nicht im item[]-Array). Die Preise werden ebenfalls auf Root-Ebene gespeichert.
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
partnumber |
string | Artikelnummer — mind. 3 Zeichen, im System eindeutig | |
weight_netto |
decimal | Nettogewicht in kg | |
weight_brutto |
decimal | Bruttogewicht in kg (inkl. Verpackung) | |
warranty_month |
int | Garantie in Monaten | |
product_url |
string | Produkt-URL-Slug | |
| PREISFELDER — auf Root-Ebene | |||
price |
decimal | Netto-Verkaufspreis | |
currency_id |
int | Kennung der Verkaufswährung | |
tax_id |
int | Kennung des Umsatzsteuersatzes (Verkauf) | |
incoming_price |
decimal | Netto-Einkaufspreis | |
incoming_currency_id |
int | Kennung der Einkaufswährung | |
incoming_tax_id |
int | Kennung des Umsatzsteuersatzes (Einkauf) | |
incoming_cost_price |
decimal | Selbstkostenpreis | |
price_on_sale |
decimal | Aktions-Verkaufspreis | |
price_on_sale_date_end |
datetime | Ablaufdatum der Aktion (YYYY-MM-DD HH:ii:ss) |
|
price_discount |
decimal | Rabattbetrag (%) | |
list_price |
decimal | Unverbindliche Preisempfehlung (UVP) | |
list_currency_id |
int | Kennung der Währung der Preisempfehlung | |
list_tax_id |
int | Kennung des Umsatzsteuersatzes der Preisempfehlung | |
Beispielanfrage — TYPE 1 (Variantenprodukt, mit item[]-Array)
POST /api/product/save
X-API-KEY: {ihr_api_schluessel}
Content-Type: application/json
{
"data": {
"id": 0,
"type_id": 1,
"product_group_id": 0,
"name": "Ásványvíz",
"vtsz": "2201100090",
"description": "Természetes ásványvíz",
"active_id": 1,
"stockable": 1,
"synchronizable": 1,
"category_id": 5,
"item": [
{
"id": 0,
"partnumber": "ASVANY-05L",
"product_unit_id": 3,
"product_unit_value": 0.5,
"product_unit_name": "0,5l palack",
"remove": 0,
"price": 120,
"currency_id": 1,
"tax_id": 2,
"incoming_price": 75,
"incoming_currency_id": 1,
"incoming_tax_id": 2
},
{
"id": 0,
"partnumber": "ASVANY-15L",
"product_unit_id": 3,
"product_unit_value": 1.5,
"product_unit_name": "1,5l palack",
"remove": 0,
"price": 250,
"currency_id": 1,
"tax_id": 2,
"incoming_price": 160,
"incoming_currency_id": 1,
"incoming_tax_id": 2
}
]
}
}
Beispielanfrage — TYPE 6 (Einfaches Produkt)
POST /api/product/save
X-API-KEY: {ihr_api_schluessel}
Content-Type: application/json
{
"data": {
"id": 0,
"type_id": 6,
"product_group_id": 0,
"name": "Irodai szék",
"partnumber": "SZEK-001",
"vtsz": "9401300000",
"description": "Ergonomikus irodai szék",
"active_id": 1,
"weight_netto": 12.5,
"weight_brutto": 14.0,
"warranty_month": 24,
"price": 45000,
"currency_id": 1,
"tax_id": 2,
"incoming_price": 28000,
"incoming_currency_id": 1,
"incoming_tax_id": 2
}
}
Beispielantwort
{
"result": { "code": 1, "message": "success" },
"data": {
"product_group_id": 15,
"product_id": 48,
"partnumber": "SZEK-001"
}
}
/api/product/delete
Löschen eines Produkts. Es kann nur ein Produkt gelöscht werden, dem keine Bestandsbewegung zugeordnet ist.
POST-Felder — data-Objekt
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
id |
int | Die Kennung der zu löschenden Produktgruppe (product_group_id) |
Beispielanfrage
POST /api/product/delete
X-API-KEY: {ihr_api_schluessel}
Content-Type: application/json
{
"data": {
"id": 15
}
}
Beispielantwort
{
"result": { "code": 1, "message": "success" },
"data": {}
}
/api/product/save_weight
Aktualisierung des Netto- und Bruttogewichts eines Produkts anhand der Artikelnummer. Erfasst eine Version in der Tabelle db_product_data.
POST-Felder — data-Objekt
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
partnumber |
string | Die Artikelnummer des Produkts (eindeutige Kennung) | |
weight_netto |
decimal | Nettogewicht in kg | |
weight_brutto |
decimal | Bruttogewicht in kg (inkl. Verpackung) |
Beispielanfrage
POST /api/product/save_weight
X-API-KEY: {ihr_api_schluessel}
Content-Type: application/json
{
"data": {
"partnumber": "TERM-0042",
"weight_netto": 0.48,
"weight_brutto": 0.62
}
}
Beispielantwort
{
"result": { "code": 1, "message": "success" },
"data": {}
}
/api/product/save_warehouse_info
Aktualisierung der Lagerinformationen und des Bruttogewichts eines Produkts. Erfasst eine Version sowohl in der Tabelle db_product_data als auch in db_product_group_data.
POST-Felder — data-Objekt
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
partnumber |
string | Die Artikelnummer des Produkts | |
weight_brutto |
decimal | Bruttogewicht in kg | |
store_id |
int | Kennung des Standardlagers | |
store_locality_id |
int | Kennung des Standard-Lagerplatzes |
Beispielanfrage
POST /api/product/save_warehouse_info
X-API-KEY: {ihr_api_schluessel}
Content-Type: application/json
{
"data": {
"partnumber": "TERM-0042",
"weight_brutto": 0.62,
"store_id": 1,
"store_locality_id": 14
}
}
Beispielantwort
{
"result": { "code": 1, "message": "success" },
"data": {}
}
/api/product/save_extra
Aktualisierung der Maßangaben, der Lagerplatzierung und des Barcodes eines Produkts anhand der Artikelnummer. Falls der angegebene Barcode noch nicht existiert, wird er automatisch angelegt.
POST-Felder — data-Objekt
| Feld | Typ | Pflichtfeld | Beschreibung |
|---|---|---|---|
partnumber |
string | Die Artikelnummer des Produkts | |
size_width |
decimal | Breite (cm) | |
size_height |
decimal | Höhe (cm) | |
size_depth |
decimal | Tiefe (cm) | |
weight_brutto |
decimal | Bruttogewicht in kg | |
store_id |
int | Kennung des Standardlagers | |
store_locality_id |
int | Kennung des Standard-Lagerplatzes | |
barcode |
string | EAN/Barcode — falls noch nicht vorhanden, wird er automatisch in der Tabelle db_product_barcode angelegt |
Beispielanfrage
POST /api/product/save_extra
X-API-KEY: {ihr_api_schluessel}
Content-Type: application/json
{
"data": {
"partnumber": "TERM-0042",
"size_width": 30.5,
"size_height": 20.0,
"size_depth": 15.0,
"weight_brutto": 0.62,
"store_id": 1,
"store_locality_id": 14,
"barcode": "5901234123457"
}
}
Beispielantwort
{
"result": { "code": 1, "message": "success" },
"data": {}
}
Interessierst du dich für unsere Software? Schreib uns einfach!
Jetzt registrieren,
später bezahlen!