Documentație API Webhooks

Primește notificări în timp real când apar evenimente în 3PL Client. Configurează URL-ul endpoint-ului și abonează-te la evenimentele necesare.

Autentificare
Prezentare generală

Webhook-urile trimit cereri HTTP POST către URL-ul configurat când apar evenimente specifice. Fiecare cerere include un payload JSON cu datele evenimentului.

Pentru a folosi webhook-uri, autentifică-te în aplicație, mergi la Administrare → Webhook-uri și creează un webhook nou cu URL-ul endpoint-ului și evenimentele selectate.

Format cerere
  • Method: POST
  • Content-Type: application/json
  • Headers:
    • X-Webhook-Event – tipul evenimentului (ex: article.created)
    • User-Agent – 3PL-WMS-Webhook/1.0
    • X-Webhook-Signature – (opțional HMAC) pentru verificare payload
    • Authorization – (opțional Bearer/Basic) conform configurației
Structură payload

Toate payload-urile includ următoarele chei de nivel superior:

{
  "event": "article.created",
  "timestamp": "2026-02-12T14:30:00+00:00",
  "data": { ... }
}
Tipuri autentificare
Tip Descriere
none Fără autentificare
hmac Header X-Webhook-Signature cu HMAC-SHA256 al payload-ului JSON
bearer Authorization: Bearer <token>
basic Autorizare: Basic (nume utilizator:password)
custom Header personalizat (nume și valoare)
Evenimente disponibile
Eveniment Descriere
article.created Articol creat
article.updated Articol actualizat
sales_order.created Comandă vânzare creată
sales_order.updated Comandă vânzare actualizată
sales_order.status_changed Status comandă vânzare schimbat
purchase_order.created Comandă cumpărare creată
purchase_order.updated Comandă cumpărare actualizată
reception.created Recepție creată
reception.updated Recepție actualizată
reception.partial Recepție parțială
return.created Retur creat
return.updated Retur actualizat
return.status_changed Status retur schimbat
stock.updated Stoc actualizat
stock.low Stoc scăzut

Mai jos vedeți ce date se trimit pentru fiecare eveniment. Folosiți aceste informații pentru a integra endpoint-ul dvs.

Articol creat. Include toate detaliile produsului: cod, descriere, UM, dimensiuni, greutate, unități suplimentare (UM2, UM3), condiții de depozitare, autorizații și atribute primare.

Câmpuri
CâmpTipDescriere
id int ID articol
article_code string Cod articol
description string Descriere
um3pl string Unitate măsură 3PL
um3pl_barcode string|null Cod EAN / barcode
um3pl_length_cm float|null Lungime (cm)
um3pl_width_cm float|null Lățime (cm)
um3pl_height_cm float|null Înălțime (cm)
um3pl_net_weight_kg float|null Greutate netă (kg)
um3pl_gross_weight_kg float|null Greutate brută (kg)
units array Unități suplimentare (UM2, UM3, factori conversie)
storage_conditions object|null Condiții depozitare (temperatură, umiditate)
authorizations array Autorizații produs
primary_attributes array Atribute primare (lot, serie, expirare)
client object Client
Exemplu payload
{
    "event": "article.created",
    "timestamp": "2026-02-12T14:30:00+00:00",
    "data": {
        "id": 1,
        "client_3pl_id": 1,
        "article_code": "ART-DUMMY-001",
        "description": "Produs exemplu (dummy)",
        "um3pl": "BUC",
        "um3pl_barcode": "5901234123457",
        "um3pl_length_cm": 10.5,
        "um3pl_width_cm": 8,
        "um3pl_height_cm": 5,
        "um3pl_net_weight_kg": 0.5,
        "um3pl_gross_weight_kg": 0.59999999999999997779553950749686919152736663818359375,
        "active": true,
        "is_draft": false,
        "draft_data": null,
        "created_by": null,
        "created_at": "2026-02-12T14:30:00.000000Z",
        "updated_at": "2026-02-12T14:30:00.000000Z",
        "client": {
            "id": 1,
            "legal_name": "Client SRL",
            "commercial_name": "Client",
            "internal_code": "C3PL-001"
        },
        "units": [
            {
                "id": 1,
                "unit_type": "UM2",
                "unit_name": "CUTIE",
                "barcode": "5901234123458",
                "length_cm": 30,
                "width_cm": 20,
                "height_cm": 15
            },
            {
                "id": 2,
                "unit_type": "UM3",
                "unit_name": "PALET",
                "barcode": null,
                "length_cm": 120,
                "width_cm": 80,
                "height_cm": 150
            }
        ],
        "storage_conditions": {
            "id": 1,
            "min_temperature": -18,
            "max_temperature": -15,
            "min_humidity": null,
            "max_humidity": null,
            "location_type": "INTERIOR"
        },
        "authorizations": [
            {
                "id": 1,
                "authorization_type_id": 1,
                "authorization_name": "ANM",
                "description": "Autorizație ANM",
                "authorization_type": {
                    "id": 1,
                    "code": "STORAGE",
                    "name": "Depozitare"
                }
            }
        ],
        "primary_attributes": [
            {
                "id": 1,
                "code": "lot",
                "name": "Lot",
                "pivot": {
                    "value": true,
                    "attribute_data": null
                }
            }
        ]
    }
}

Articol actualizat. Aceeași structură ca article.created — include toate detaliile: units, storage_conditions, authorizations, primary_attributes.

Câmpuri
CâmpTipDescriere
id int ID articol
article_code string Cod articol
description string Descriere
units array Unități suplimentare (UM2, UM3)
storage_conditions object|null Condiții depozitare
authorizations array Autorizații
primary_attributes array Atribute primare
client object Client

Comandă de vânzare (SO) creată. Include datele complete ale comenzii, incluzând linii de comandă cu articole, partener (client final), depozit sursă și client.

Câmpuri
CâmpTipDescriere
id int ID-ul unic al comenzii în sistem
client_3pl_id int ID-ul clientului căruia îi aparține comanda
partner_id int ID-ul partenerului (client final / cumpărător)
partner_work_point_id int|null ID-ul punctului de livrare al partenerului (opțional)
source_warehouse_id int ID-ul depozitului din care se va livra
stock_type string Tip stoc: STOC_OK sau STOC_NOT_OK
internal_code string Codul intern al comenzii (ex. SO-2026-001)
transport_ecc bool Dacă transportul este prin partener (ex. EuroCopper)
planned_date_time string|null Data și ora planificată pentru livrare (ISO 8601)
max_delivery_date string|null Data maximă de livrare (Y-m-d)
status string Status: CREAT, IN_LUCRU, INCARCAT, LIVRAT, INCHIS, ANULAT
is_draft bool Dacă comanda este draft (nefinalizată)
created_by int|null ID-ul utilizatorului care a creat comanda
created_at string Data creării (ISO 8601)
updated_at string Data ultimei actualizări (ISO 8601)
items array Linii de comandă; fiecare cu article_id, cantități (um3pl, um2, um3), services și articolul complet
partner object Partenerul: id, legal_name, commercial_name, internal_code
partner_work_point object|null Punctul de livrare: id, name, partner_id
source_warehouse object Depozitul sursă: id, name, code
client object Clientul: id, legal_name, commercial_name, internal_code
Exemplu payload
{
    "event": "sales_order.created",
    "timestamp": "2026-02-12T14:30:00+00:00",
    "data": {
        "id": 1,
        "client_3pl_id": 1,
        "partner_id": 5,
        "partner_work_point_id": 12,
        "source_warehouse_id": 2,
        "stock_type": "STOC_OK",
        "internal_code": "SO-2026-001",
        "transport_ecc": false,
        "planned_date_time": "2026-02-15 10:00:00",
        "max_delivery_date": "2026-02-15",
        "status": "CREAT",
        "is_draft": false,
        "created_by": 3,
        "created_at": "2026-02-12T14:30:00.000000Z",
        "updated_at": "2026-02-12T14:30:00.000000Z",
        "items": [
            {
                "id": 101,
                "sales_order_id": 1,
                "article_id": 42,
                "um3pl": "BUC",
                "quantity_um3pl": 10,
                "um2": "CUTIE",
                "quantity_um2": 2,
                "um3": null,
                "quantity_um3": null,
                "services": [
                    "CTC",
                    "etichetare"
                ],
                "created_at": "2026-02-12T14:30:00.000000Z",
                "updated_at": "2026-02-12T14:30:00.000000Z",
                "article": {
                    "id": 42,
                    "client_3pl_id": 1,
                    "article_code": "ART-001",
                    "description": "Produs exemplu",
                    "um3pl": "BUC",
                    "um3pl_barcode": "5901234123457",
                    "active": true
                }
            },
            {
                "id": 102,
                "sales_order_id": 1,
                "article_id": 43,
                "um3pl": "KG",
                "quantity_um3pl": 25.5,
                "um2": null,
                "quantity_um2": null,
                "um3": null,
                "quantity_um3": null,
                "services": null,
                "created_at": "2026-02-12T14:30:00.000000Z",
                "updated_at": "2026-02-12T14:30:00.000000Z",
                "article": {
                    "id": 43,
                    "article_code": "ART-002",
                    "description": "Alt produs",
                    "um3pl": "KG"
                }
            }
        ],
        "partner": {
            "id": 5,
            "legal_name": "SC EXEMPLU SRL",
            "commercial_name": "Exemplu Comercial",
            "internal_code": "P-E001"
        },
        "partner_work_point": {
            "id": 12,
            "name": "Depozit Nord",
            "partner_id": 5
        },
        "source_warehouse": {
            "id": 2,
            "name": "Depozit Principal",
            "code": "WH-01"
        },
        "client": {
            "id": 1,
            "legal_name": "Client SRL",
            "commercial_name": "Client",
            "internal_code": "C3PL-001"
        }
    }
}

Comandă de vânzare actualizată. Aceeași structură ca sales_order.created.

Statusul comenzii de vânzare s-a schimbat. Payload include: status (noul status), previous_status (statusul anterior).

Comandă de cumpărare (PO) creată. Include items, partener, client.

Exemplu payload
{
    "data": {
        "id": 1,
        "internal_code": "PO-2026-001",
        "items": [],
        "partner": [],
        "client": []
    }
}

Comandă de cumpărare actualizată.

Recepție creată. Include items, PO asociat, depozit, partener.

Exemplu payload
{
    "data": {
        "id": 1,
        "internal_code": "REC-2026-001",
        "items": [],
        "warehouse": [],
        "purchase_order": []
    }
}

Recepție actualizată.

Recepție parțială – nu toate cantitățile din PO au fost recepționate.

Retur creat. Include items, SO asociat, depozit, partener.

Exemplu payload
{
    "data": {
        "id": 1,
        "internal_code": "RET-2026-001",
        "items": [],
        "sales_order": [],
        "warehouse": []
    }
}

Retur actualizat.

Statusul returului s-a schimbat. Payload include: status (noul status), previous_status (statusul anterior).

Stoc actualizat. Include articol, depozit, cantități total/disponibil/rezervat.

Exemplu payload
{
    "data": {
        "id": 1,
        "article_id": 1,
        "warehouse_id": 1,
        "total_quantity": 100,
        "available_quantity": 100,
        "reserved_quantity": 0,
        "article": [],
        "warehouse": []
    }
}

Stoc scăzut sub prag. Include articol, depozit, cantități și procent disponibil.

Exemplu payload
{
    "data": {
        "id": 1,
        "article_id": 1,
        "warehouse_id": 1,
        "total_quantity": 10,
        "available_quantity": 1,
        "percentage": 10,
        "article": [],
        "warehouse": []
    }
}

Articol creat. Include toate detaliile produsului: cod, descriere, UM, dimensiuni, greutate, unități suplimentare (UM2, UM3), condiții de depozitare, autorizații și atribute primare.

Câmpuri
CâmpTipDescriere
id int ID articol
article_code string Cod articol
description string Descriere
um3pl string Unitate măsură 3PL
um3pl_barcode string|null Cod EAN / barcode
um3pl_length_cm float|null Lungime (cm)
um3pl_width_cm float|null Lățime (cm)
um3pl_height_cm float|null Înălțime (cm)
um3pl_net_weight_kg float|null Greutate netă (kg)
um3pl_gross_weight_kg float|null Greutate brută (kg)
units array Unități suplimentare (UM2, UM3, factori conversie)
storage_conditions object|null Condiții depozitare (temperatură, umiditate)
authorizations array Autorizații produs
primary_attributes array Atribute primare (lot, serie, expirare)
client object Client
Exemplu payload
{
    "event": "article.created",
    "timestamp": "2026-02-12T14:30:00+00:00",
    "data": {
        "id": 1,
        "client_3pl_id": 1,
        "article_code": "ART-DUMMY-001",
        "description": "Produs exemplu (dummy)",
        "um3pl": "BUC",
        "um3pl_barcode": "5901234123457",
        "um3pl_length_cm": 10.5,
        "um3pl_width_cm": 8,
        "um3pl_height_cm": 5,
        "um3pl_net_weight_kg": 0.5,
        "um3pl_gross_weight_kg": 0.59999999999999997779553950749686919152736663818359375,
        "active": true,
        "is_draft": false,
        "draft_data": null,
        "created_by": null,
        "created_at": "2026-02-12T14:30:00.000000Z",
        "updated_at": "2026-02-12T14:30:00.000000Z",
        "client": {
            "id": 1,
            "legal_name": "Client SRL",
            "commercial_name": "Client",
            "internal_code": "C3PL-001"
        },
        "units": [
            {
                "id": 1,
                "unit_type": "UM2",
                "unit_name": "CUTIE",
                "barcode": "5901234123458",
                "length_cm": 30,
                "width_cm": 20,
                "height_cm": 15
            },
            {
                "id": 2,
                "unit_type": "UM3",
                "unit_name": "PALET",
                "barcode": null,
                "length_cm": 120,
                "width_cm": 80,
                "height_cm": 150
            }
        ],
        "storage_conditions": {
            "id": 1,
            "min_temperature": -18,
            "max_temperature": -15,
            "min_humidity": null,
            "max_humidity": null,
            "location_type": "INTERIOR"
        },
        "authorizations": [
            {
                "id": 1,
                "authorization_type_id": 1,
                "authorization_name": "ANM",
                "description": "Autorizație ANM",
                "authorization_type": {
                    "id": 1,
                    "code": "STORAGE",
                    "name": "Depozitare"
                }
            }
        ],
        "primary_attributes": [
            {
                "id": 1,
                "code": "lot",
                "name": "Lot",
                "pivot": {
                    "value": true,
                    "attribute_data": null
                }
            }
        ]
    }
}

Articol actualizat. Aceeași structură ca article.created — include toate detaliile: units, storage_conditions, authorizations, primary_attributes.

Câmpuri
CâmpTipDescriere
id int ID articol
article_code string Cod articol
description string Descriere
units array Unități suplimentare (UM2, UM3)
storage_conditions object|null Condiții depozitare
authorizations array Autorizații
primary_attributes array Atribute primare
client object Client

Comandă de vânzare (SO) creată. Include datele complete ale comenzii, incluzând linii de comandă cu articole, partener (client final), depozit sursă și client.

Câmpuri
CâmpTipDescriere
id int ID-ul unic al comenzii în sistem
client_3pl_id int ID-ul clientului căruia îi aparține comanda
partner_id int ID-ul partenerului (client final / cumpărător)
partner_work_point_id int|null ID-ul punctului de livrare al partenerului (opțional)
source_warehouse_id int ID-ul depozitului din care se va livra
stock_type string Tip stoc: STOC_OK sau STOC_NOT_OK
internal_code string Codul intern al comenzii (ex. SO-2026-001)
transport_ecc bool Dacă transportul este prin partener (ex. EuroCopper)
planned_date_time string|null Data și ora planificată pentru livrare (ISO 8601)
max_delivery_date string|null Data maximă de livrare (Y-m-d)
status string Status: CREAT, IN_LUCRU, INCARCAT, LIVRAT, INCHIS, ANULAT
is_draft bool Dacă comanda este draft (nefinalizată)
created_by int|null ID-ul utilizatorului care a creat comanda
created_at string Data creării (ISO 8601)
updated_at string Data ultimei actualizări (ISO 8601)
items array Linii de comandă; fiecare cu article_id, cantități (um3pl, um2, um3), services și articolul complet
partner object Partenerul: id, legal_name, commercial_name, internal_code
partner_work_point object|null Punctul de livrare: id, name, partner_id
source_warehouse object Depozitul sursă: id, name, code
client object Clientul: id, legal_name, commercial_name, internal_code
Exemplu payload
{
    "event": "sales_order.created",
    "timestamp": "2026-02-12T14:30:00+00:00",
    "data": {
        "id": 1,
        "client_3pl_id": 1,
        "partner_id": 5,
        "partner_work_point_id": 12,
        "source_warehouse_id": 2,
        "stock_type": "STOC_OK",
        "internal_code": "SO-2026-001",
        "transport_ecc": false,
        "planned_date_time": "2026-02-15 10:00:00",
        "max_delivery_date": "2026-02-15",
        "status": "CREAT",
        "is_draft": false,
        "created_by": 3,
        "created_at": "2026-02-12T14:30:00.000000Z",
        "updated_at": "2026-02-12T14:30:00.000000Z",
        "items": [
            {
                "id": 101,
                "sales_order_id": 1,
                "article_id": 42,
                "um3pl": "BUC",
                "quantity_um3pl": 10,
                "um2": "CUTIE",
                "quantity_um2": 2,
                "um3": null,
                "quantity_um3": null,
                "services": [
                    "CTC",
                    "etichetare"
                ],
                "created_at": "2026-02-12T14:30:00.000000Z",
                "updated_at": "2026-02-12T14:30:00.000000Z",
                "article": {
                    "id": 42,
                    "client_3pl_id": 1,
                    "article_code": "ART-001",
                    "description": "Produs exemplu",
                    "um3pl": "BUC",
                    "um3pl_barcode": "5901234123457",
                    "active": true
                }
            },
            {
                "id": 102,
                "sales_order_id": 1,
                "article_id": 43,
                "um3pl": "KG",
                "quantity_um3pl": 25.5,
                "um2": null,
                "quantity_um2": null,
                "um3": null,
                "quantity_um3": null,
                "services": null,
                "created_at": "2026-02-12T14:30:00.000000Z",
                "updated_at": "2026-02-12T14:30:00.000000Z",
                "article": {
                    "id": 43,
                    "article_code": "ART-002",
                    "description": "Alt produs",
                    "um3pl": "KG"
                }
            }
        ],
        "partner": {
            "id": 5,
            "legal_name": "SC EXEMPLU SRL",
            "commercial_name": "Exemplu Comercial",
            "internal_code": "P-E001"
        },
        "partner_work_point": {
            "id": 12,
            "name": "Depozit Nord",
            "partner_id": 5
        },
        "source_warehouse": {
            "id": 2,
            "name": "Depozit Principal",
            "code": "WH-01"
        },
        "client": {
            "id": 1,
            "legal_name": "Client SRL",
            "commercial_name": "Client",
            "internal_code": "C3PL-001"
        }
    }
}

Comandă de vânzare actualizată. Aceeași structură ca sales_order.created.

Statusul comenzii de vânzare s-a schimbat. Payload include: status (noul status), previous_status (statusul anterior).

Comandă de cumpărare (PO) creată. Include items, partener, client.

Exemplu payload
{
    "data": {
        "id": 1,
        "internal_code": "PO-2026-001",
        "items": [],
        "partner": [],
        "client": []
    }
}

Comandă de cumpărare actualizată.

Recepție creată. Include items, PO asociat, depozit, partener.

Exemplu payload
{
    "data": {
        "id": 1,
        "internal_code": "REC-2026-001",
        "items": [],
        "warehouse": [],
        "purchase_order": []
    }
}

Recepție actualizată.

Recepție parțială – nu toate cantitățile din PO au fost recepționate.

Retur creat. Include items, SO asociat, depozit, partener.

Exemplu payload
{
    "data": {
        "id": 1,
        "internal_code": "RET-2026-001",
        "items": [],
        "sales_order": [],
        "warehouse": []
    }
}

Retur actualizat.

Statusul returului s-a schimbat. Payload include: status (noul status), previous_status (statusul anterior).

Stoc actualizat. Include articol, depozit, cantități total/disponibil/rezervat.

Exemplu payload
{
    "data": {
        "id": 1,
        "article_id": 1,
        "warehouse_id": 1,
        "total_quantity": 100,
        "available_quantity": 100,
        "reserved_quantity": 0,
        "article": [],
        "warehouse": []
    }
}

Stoc scăzut sub prag. Include articol, depozit, cantități și procent disponibil.

Exemplu payload
{
    "data": {
        "id": 1,
        "article_id": 1,
        "warehouse_id": 1,
        "total_quantity": 10,
        "available_quantity": 1,
        "percentage": 10,
        "article": [],
        "warehouse": []
    }
}
Playground Webhooks

Generează payload-uri exemplu și testează endpoint-ul. Selectează un eveniment, generează payload-ul, apoi opțional trimite o cerere de test la URL-ul tău.

Testează endpoint-ul

Introdu URL-ul HTTPS al endpoint-ului pentru a primi un webhook de test. Limită: 5 cereri/minut.

Răspuns recomandat

Endpoint-ul tău ar trebui să răspundă cu HTTP 2xx (ex. 200 OK) pentru a confirma primirea. Răspunsurile non-2xx pot declanșa retransmiteri.

HTTP/1.1 200 OK
Content-Type: application/json

{"received": true}
Gata să configurezi webhook-uri?

Autentifică-te pentru a crea și gestiona webhook-urile tale.

Autentificare

Folosim cookie-uri esențiale pentru funcționarea aplicației. Cookie-urile opționale ne ajută să îmbunătățim experiența. Află mai mult