Preadviezen (ASN)

Beheer inbound preadviezen (Advanced Shipping Notices). Een preadvies bevat informatie over een verwachte levering van een leverancier.

Endpoints

MethodePadBeschrijving
GET/preadvicesAlle preadviezen ophalen
POST/preadvicesPreadvies aanmaken (incl. regels)
GET/preadvices/:idSpecifiek preadvies ophalen (incl. regels)
PUT/preadvices/:idPreadvies bijwerken
DELETE/preadvices/:idPreadvies verwijderen (incl. regels)
POST/preadvices/:id/closePreadvies afsluiten
GET/preadvices/:id/linesPreadviesregels ophalen
POST/preadvices/:id/linesPreadviesregels toevoegen
GET/preadvices/:id/lines/:line_idSpecifieke preadviesregel ophalen
PUT/preadvices/:id/lines/:line_idPreadviesregel bijwerken
DELETE/preadvices/:id/lines/:line_idPreadviesregel verwijderen

Alleen preadviezen van de eigen opdrachtgever

Een API key die aan een opdrachtgever gekoppeld is, en een gebruiker van het klantportaal, werken alleen met preadviezen van die opdrachtgever:

  • GET /preadvices toont alleen de preadviezen van die opdrachtgever.
  • Elk endpoint op /preadvices/:id (ophalen, bijwerken, verwijderen, afsluiten en de regels) geeft 404 als het preadvies bij een andere opdrachtgever hoort, of geen opdrachtgever heeft. Dat is hetzelfde antwoord als voor een preadvies dat niet bestaat.
  • Wie een andere client_id meestuurt, in de body of als filter, krijgt 403.

Voor een API key of gebruiker zonder opdrachtgever geldt geen beperking.

Alle preadviezen ophalen

GET /preadvices

Query parameters

ParameterBeschrijving
client_idAlleen preadviezen van deze opdrachtgever. Voor een API key of portaalgebruiker met opdrachtgever is dit altijd de eigen opdrachtgever; een andere waarde geeft 403

Response 200 OK

[
  {
    "id": 1,
    "pre_advice_id": "PA-001",
    "client_id": "CLIENT01",
    "pre_advice_status": {
      "id": 1,
      "description": "Released"
    },
    "pre_advice_status_description": "Released",
    "supplier": {
      "id": 3,
      "name": "Leverancier BV - Rotterdam"
    },
    "supplier_id": 3,
    "creation_datetime": "14-03-2026 10:00:00",
    "created_by": "admin"
  }
]

Preadvies aanmaken

POST /preadvices

Request

{
  "pre_advice_id": "PA-001",
  "supplier": 3,
  "client_id": "CLIENT01",
  "lines": [
    {
      "sku_id": "SKU-001",
      "qty": 100,
      "pallet_id": "PLT-001",
      "client_id": "CLIENT01"
    },
    {
      "sku_id": "SKU-002",
      "qty": 50,
      "pallet_id": "PLT-001"
    }
  ]
}

Preadvies header velden

VeldTypeVerplichtBeschrijving
pre_advice_idstring✅Uniek preadvies ID
suppliernumberNeeID van de leverancier (uit /suppliers)
client_idstringNeeDe opdrachtgever van het preadvies. Zie Opdrachtgever van het preadvies hieronder
linesarrayNeePreadviesregels

Preadviesregel velden

VeldTypeVerplichtBeschrijving
sku_idstring✅Artikel-ID
qtynumber✅Verwacht aantal
linenumberNeeRegelnummer (auto-generated indien weggelaten)
pallet_idstringNeePallet ID (voor pallet-ontvangst)
client_idstringNeeOpdrachtgever op regelniveau. Zonder waarde geldt de opdrachtgever van het preadvies

Opdrachtgever van het preadvies

In een fulfilmentmagazijn hoort elk preadvies bij een opdrachtgever (client_id). Die volgt uit wie het preadvies aanmaakt, net als bij orders:

  • Een API key die aan een opdrachtgever gekoppeld is, of een gebruiker van het klantportaal: het preadvies en al zijn regels krijgen altijd die opdrachtgever. client_id hoeft niet meegestuurd te worden; wie een andere opdrachtgever meestuurt, in de header of op een regel, krijgt 403.
  • Een API key of gebruiker zonder opdrachtgever: het preadvies krijgt de client_id uit het request. Die moet op de site bestaan, anders volgt 400. Een regel zonder eigen client_id krijgt de opdrachtgever van het preadvies.

Response 204 No Content

Succesvol aangemaakt. Het preadvies en zijn regels worden samen opgeslagen: mislukt er iets, dan wordt niets opgeslagen en kan hetzelfde request opnieuw worden verstuurd.

Response 400 Bad Request

client_id bestaat niet op de site, of lines is geen lijst. Er wordt dan niets opgeslagen:

{
  "message": "Ongeldig pre-advies",
  "errors": [
    { "field": "client_id", "message": "client_id andereklant bestaat niet op deze site" }
  ]
}

Response 403 Forbidden

De API key of gebruiker hoort bij een andere opdrachtgever dan de meegestuurde client_id:

{
  "message": "Geen toegang tot client andereklant"
}

Response 409 Conflict

{
  "message": "PreAdvice with PreAdviceID PA-001 already exists"
}

Specifiek preadvies ophalen

GET /preadvices/:id

Response 200 OK

{
  "pre_advice_id": "PA-001",
  "client_id": "CLIENT01",
  "pre_advice_status": {
    "id": 1,
    "description": "Released"
  },
  "supplier": {
    "id": 3,
    "name": "Leverancier BV - Rotterdam"
  },
  "creation_datetime": "14-03-2026 10:00:00",
  "created_by": "admin",
  "lines": [
    {
      "pre_advice_id": "PA-001",
      "line": 1,
      "sku_id": "SKU-001",
      "qty": 100,
      "qty_received": 0,
      "pallet_id": "PLT-001",
      "client_id": "CLIENT01"
    }
  ]
}

Response 404 Not Found

Het preadvies bestaat niet, of hoort bij een andere opdrachtgever:

{
  "message": "PreAdvice with PreAdviceID PA-001 not found"
}

Preadvies bijwerken

PUT /preadvices/:id

Request

{
  "supplier": 4,
  "client_id": "CLIENT02"
}

Met een API key of portaalgebruiker die aan een opdrachtgever gekoppeld is, blijft het preadvies bij die opdrachtgever, ook als client_id ontbreekt; een andere client_id geeft 403.

Response 204 No Content

Response 403 Forbidden

{
  "message": "Geen toegang tot client CLIENT02"
}

Response 404 Not Found

Het preadvies hoort bij een andere opdrachtgever.

Preadvies verwijderen

DELETE /preadvices/:id

Verwijdert het preadvies inclusief alle regels.

Response 204 No Content

Response 404 Not Found

Het preadvies hoort bij een andere opdrachtgever.

Preadvies afsluiten

POST /preadvices/:id/close

Sluit een preadvies af, ook als nog niet alles ontvangen is: de status gaat naar Complete (3). Gebruik dit als een levering compleet is verklaard terwijl er regels open staan. Een webhook preadvice_status meldt de wijziging.

Statussen van een preadvies:

idStatusBetekenis
1ReleasedAangemaakt, nog niets ontvangen
2In progressDe ontvangst is begonnen
3CompleteVolledig ontvangen of afgesloten

Er is geen body nodig.

Response 200 OK

{
  "message": "Preadvies afgesloten."
}

Response 400 Bad Request

Het preadvies is al afgesloten:

{
  "message": "Dit preadvies is al afgesloten."
}

Response 404 Not Found

Het preadvies bestaat niet, of hoort bij een andere opdrachtgever:

{
  "message": "Preadvies niet gevonden."
}

Preadviesregels toevoegen

POST /preadvices/:id/lines

Request

{
  "sku_id": "SKU-003",
  "qty": 200,
  "pallet_id": "PLT-002",
  "client_id": "CLIENT01"
}

U kunt ook een lijst regels in één keer sturen. Een regel zonder line krijgt het volgende regelnummer. Voor de opdrachtgever geldt hetzelfde als bij het aanmaken: met een API key of portaalgebruiker die aan een opdrachtgever gekoppeld is, krijgen de regels die opdrachtgever en geeft een andere client_id 403.

Response 204 No Content

Response 403 Forbidden

{
  "message": "Geen toegang tot client andereklant"
}

Response 404 Not Found

Het preadvies hoort bij een andere opdrachtgever.

Preadviesregel bijwerken

PUT /preadvices/:id/lines/:line_id

Request

{
  "sku_id": "SKU-003",
  "qty": 250,
  "pallet_id": "PLT-002",
  "client_id": "CLIENT01"
}

Voor de opdrachtgever geldt hetzelfde als bij Preadvies bijwerken: met een gekoppelde opdrachtgever blijft de regel bij die opdrachtgever en geeft een andere client_id 403.

Response 204 No Content

Response 403 Forbidden

{
  "message": "Geen toegang tot client andereklant"
}

Response 404 Not Found

Het preadvies hoort bij een andere opdrachtgever.

Preadviesregel verwijderen

DELETE /preadvices/:id/lines/:line_id

Response 204 No Content

Response 404 Not Found

Het preadvies hoort bij een andere opdrachtgever.