Download OpenAPI specification:Download
Het koppelvlak dat het ERP van een grossier aanbiedt en dat het Grossier.nu-platform aanroept.
Dit is de technische beschrijving bij spec.md. Het ERP is de server; het platform is de
enige client. Alle paden staan onder /v1.
Conventies
null en een weggelaten veld zijn gelijkwaardig.application/problem+json (schema Problem).limit + cursor in de aanvraag, nextCursor + asOf in het antwoord.X-Request-Id: door het platform meegestuurd, door het ERP overgenomen in antwoord en logging.Drie lagen (zie spec.md hoofdstuk 3): minimum (artikelinfo live, klant lezen en idempotent
bestellen; zonder dit koppelt het platform niet), full (het volledige koppelvlak, aanbevolen) en de
uitbreidingen (modules, met hun capability-naam). Per operatie staat onder x-module tot welke
laag of module hij hoort en onder x-platform-function welke functie van het platform erop steunt.
Alles boven het minimum meldt het ERP in GET /capabilities; het platform past zich daarop aan.
Idempotentie: platformReference is de sleutel; bestaat die al, dan komt het bestaande object terug
(200), ongeacht de inhoud van de nieuwe aanvraag. Het ERP controleert de referentie vóór elke andere
validatie en legt vast vóór het antwoordt; de referentie is uniek per grossier. Bij een time-out of 5xx
zoekt het platform eerst terug op platformReference en biedt het pas daarna opnieuw aan.
Documentlinks (documentUrl, packingSlipUrl, invoiceUrl, downloadUrl) zijn zonder sleutel op te
halen, tijdgebonden en ten minste een uur geldig; het ERP geeft ze bij elke aanroep opnieuw uit en het
platform bewaart ze niet. Ze zijn voor het platform, niet voor de garage: het platform haalt het document
op en geeft het zelf door, dus de link hoeft alleen vanaf het platform bereikbaar te zijn.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "apiVersion": "0.5.0",
- "implementationVersion": "string",
- "erpName": "string",
- "environment": "test",
- "masterData": {
- "prices": "erp",
- "customers": "erp",
- "articles": "erp",
- "logins": "erp"
}, - "features": {
- "branches": true,
- "articlesBulk": true,
- "stockBulk": true,
- "customers.list": true,
- "orders.history": true,
- "invoices": true,
- "returns": true,
- "delivery": true,
- "invoiceDocuments": true
}, - "modules": {
- "pricing": true,
- "customers.authenticate": true,
- "customers.lookupByDebtorNumber": true,
- "customers.create": true,
- "articles.manage": true,
- "purchaseOrders": true,
- "deposit": true,
- "deliverySchedule": true,
- "exports": true,
- "testing": true
}, - "limits": {
- "lookupMaxKeys": 500,
- "orderMaxLines": 200,
- "requestsPerMinute": 0
}
}Alleen vestigingen uit deze lijst tellen; voorraad op een vestigingscode die hier niet in staat,
negeert het platform. De vestiging van de klant (Customer.branchCode) toont de shop als "uw
vestiging", de andere samen als "elders bij de grossier". Of voorraad van een andere vestiging
leverbaar is en wanneer, bepaalt het platform met zijn routes. Een ERP zonder vestigingen meldt
feature branches false en levert voorraad als één getal zonder branchCode.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "items": [
- {
- "branchCode": "string",
- "name": "string",
- "isDefault": true,
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}
}
]
}Tot 500 sleutels per aanroep. Het ERP matcht exact (spec hoofdstuk 6): op erpArticleId
(bekend id wint, zonder controle van de overige velden), anders op ean (voorloopnullen tellen
niet; past hij op meer artikelen, dan stopt de reeks met ambiguous), anders op articleNumber +
brand/brands, anders op articleNumber alleen als dat binnen het ERP uniek is en het platform
géén merk meestuurt. Klopt een meegegeven merk niet, dan not_found (met candidates als het
nummer bij een ander merk bestaat). Nooit op een deel van het nummer. Inactieve artikelen tellen
mee voor de uniciteit.
Elke sleutel komt precies één keer terug, herkenbaar aan requestId. Onbekend = known: false.
Fouten per sleutel raken alleen die sleutel; een sleutel zonder requestId, een dubbele
requestId of meer dan 500 sleutels geeft 400 voor de hele aanroep.
Voorraad per vestiging uit GET /branches, altijd alle vestigingen (ook met 0); zonder vestigingen
één StockLevel zonder branchCode (spec 11).
Met module pricing en een meegegeven erpCustomerId bevat elk bekend, actief artikel het blok
price. Zonder de module negeert het ERP erpCustomerId, zonder waarschuwing.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| erpCustomerId | string Alleen met module |
required | Array of objects [ 1 .. 500 ] items |
{- "erpCustomerId": "string",
- "keys": [
- {
- "erpArticleId": "string",
- "ean": "string",
- "articleNumber": "string",
- "brand": "string",
- "brands": [
- "string"
], - "requestId": "string",
- "quantity": 1
}
]
}{- "asOf": "2019-08-24T14:15:22Z",
- "warnings": [
- {
- "code": "unknown_customer",
- "message": "string"
}
], - "items": [
- {
- "requestId": "string",
- "known": true,
- "matchedOn": "erpArticleId",
- "reason": "not_found",
- "candidates": [
- {
- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string"
}
], - "article": {
- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "description": "string",
- "orderUnit": 1,
- "active": true,
- "replacedBy": "string",
- "category": "string",
- "vatRate": 0,
- "salesPriceGross": 0,
- "suppliers": [
- {
- "supplierCode": "string",
- "supplierName": "string",
- "supplierArticleNumber": "string",
- "purchasePrice": 1,
- "isPreferred": true
}
], - "updatedAt": "2019-08-24T14:15:22Z"
}, - "stock": [
- {
- "branchCode": "string",
- "quantityFree": 0,
- "quantityOnHand": 0,
- "expectedAt": "2019-08-24T14:15:22Z"
}
], - "price": {
- "gross": 0,
- "net": 0,
- "vatRate": 21,
- "validUntil": "2019-08-24T14:15:22Z",
- "tiers": [
- {
- "fromQuantity": 1,
- "net": 0
}
], - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
]
}
}
]
}Zonder updatedSince de volledige stam, gepagineerd. Met updatedSince alleen rijen die
sindsdien gewijzigd zijn, inclusief inactief gemaakte artikelen (active: false).
Stabiele sortering op (updatedAt, erpArticleId).
| updatedSince | string <date-time> Alleen rijen gewijzigd op of na dit tijdstip (inclusief), op milliseconden en met offset; zonder offset = 400. Gebruik de |
| cursor | string Ondoorzichtige cursor uit |
| limit | integer [ 1 .. 1000 ] Default: 500 |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "nextCursor": "string",
- "asOf": "2019-08-24T14:15:22Z",
- "totalCount": 0,
- "items": [
- {
- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "description": "string",
- "orderUnit": 1,
- "active": true,
- "replacedBy": "string",
- "category": "string",
- "vatRate": 0,
- "salesPriceGross": 0,
- "suppliers": [
- {
- "supplierCode": "string",
- "supplierName": "string",
- "supplierArticleNumber": "string",
- "purchasePrice": 1,
- "isPreferred": true
}
], - "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Sleutel is de artikelsleutel (erpArticleId als bekend, anders EAN of artikelnummer + merk),
gezocht volgens spec hoofdstuk 6. Bestaat het artikel niet, dan wordt het aangelegd (201).
Bestaat het, dan (200):
articleNumber, brand en ean blijven ongemoeid (de schrijfwijze van de grossier wint);null of weggelaten = niet wijzigen;suppliers wordt per supplierCode bijgewerkt of aangevuld, nooit verwijderd;Een onbekend erpArticleId is 404; een sleutel die op meer artikelen past is 422 business_rule;
een inkoopprijs van 0 of lager is 400. Een onbekende supplierCode wordt bewaard zoals meegegeven.
Idempotent: nogmaals sturen geeft hetzelfde artikel. Het antwoord bevat suppliers, vatRate en
salesPriceGross zoals het ERP ze nu kent.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| erpArticleId | string Als bekend; anders zoekt het ERP op EAN of artikelnummer + merk. |
| articleNumber required | string <= 50 characters |
| brand required | string <= 80 characters |
| ean | string or null^[0-9]{8,14}$ |
| description required | string <= 200 characters |
| orderUnit | integer >= 1 Default: 1 |
| category | string |
| vatRate | number |
| salesPriceGross | number Bruto adviesprijs, als het platform die kent. |
| imageUrl | string <uri> |
Array of objects (ArticleSupplier) Leveranciers met inkoopprijs; code uit |
{- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "description": "string",
- "orderUnit": 1,
- "category": "string",
- "vatRate": 0,
- "salesPriceGross": 0,
- "suppliers": [
- {
- "supplierCode": "string",
- "supplierName": "string",
- "supplierArticleNumber": "string",
- "purchasePrice": 1,
- "isPreferred": true
}
]
}{- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "description": "string",
- "orderUnit": 1,
- "active": true,
- "replacedBy": "string",
- "category": "string",
- "vatRate": 0,
- "salesPriceGross": 0,
- "suppliers": [
- {
- "supplierCode": "string",
- "supplierName": "string",
- "supplierArticleNumber": "string",
- "purchasePrice": 1,
- "isPreferred": true
}
], - "updatedAt": "2019-08-24T14:15:22Z"
}| erpArticleId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "description": "string",
- "orderUnit": 1,
- "active": true,
- "replacedBy": "string",
- "category": "string",
- "vatRate": 0,
- "salesPriceGross": 0,
- "suppliers": [
- {
- "supplierCode": "string",
- "supplierName": "string",
- "supplierArticleNumber": "string",
- "purchasePrice": 1,
- "isPreferred": true
}
], - "updatedAt": "2019-08-24T14:15:22Z"
}Eén rij per artikel per vestiging. quantityFree = fysiek aanwezig min gereserveerd. Een artikel
dat op een vestiging op nul staat komt met quantityFree: 0 terug zodat de kopie wordt bijgewerkt.
updatedAt van een rij wijzigt bij elke mutatie van aanwezig, gereserveerd of expectedAt; rijen
van inactieve artikelen blijven staan. Zonder vestigingen (feature branches false) één rij per
artikel, zonder branchCode.
Stabiele sortering op (updatedAt, erpArticleId, branchCode).
| updatedSince | string <date-time> Alleen rijen gewijzigd op of na dit tijdstip (inclusief), op milliseconden en met offset; zonder offset = 400. Gebruik de |
| cursor | string Ondoorzichtige cursor uit |
| branchCode | string Onbekende vestiging = 400. |
| limit | integer [ 1 .. 5000 ] Default: 2000 |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "nextCursor": "string",
- "asOf": "2019-08-24T14:15:22Z",
- "totalCount": 0,
- "items": [
- {
- "branchCode": "string",
- "quantityFree": 0,
- "quantityOnHand": 0,
- "expectedAt": "2019-08-24T14:15:22Z",
- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Precies één van debtorNumber, platformReference, email of updatedSince. Vergelijking van
debtorNumber genormaliseerd (letters en cijfers, hoofdletterongevoelig); het ERP geeft alle
klanten die passen. Meer dan één treffer is dubbelzinnig: het platform koppelt dan niet.
updatedSince met een tijdstip ver in het verleden levert de volledige klantenlijst.
| debtorNumber | string |
| platformReference | string |
string <email> | |
| updatedSince | string <date-time> Alleen rijen gewijzigd op of na dit tijdstip (inclusief), op milliseconden en met offset; zonder offset = 400. Gebruik de |
| cursor | string Ondoorzichtige cursor uit |
| limit | integer [ 1 .. 500 ] Default: 100 |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "nextCursor": "string",
- "asOf": "2019-08-24T14:15:22Z",
- "totalCount": 0,
- "items": [
- {
- "erpCustomerId": "string",
- "debtorNumber": "string",
- "platformReference": "string",
- "name": "string",
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "deliveryAddress": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "email": "user@example.com",
- "phone": "string",
- "branchCode": "string",
- "routeCode": "string",
- "isBlocked": true,
- "blockReason": "string",
- "paymentTerms": "account",
- "creditLimit": 0,
- "openBalance": 0,
- "iban": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Idempotent op platformReference. Het ERP kent debiteurnummer en betaalvoorwaarden toe en geeft
ze terug. Bestaat er al een debiteur met hetzelfde e-mailadres of KvK-nummer, dan mag het ERP
weigeren met 422 business_rule. Het platform plaatst de order daarna op het teruggegeven
erpCustomerId; een order maakt zelf nooit een klant aan.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| platformReference required | string <= 64 characters Idempotentiesleutel. |
| name required | string |
required | object (Address) Het platform heeft één adresregel: ontbreekt |
object (Address) | |
string <email> Optioneel; het platform heeft niet van elke garage een e-mailadres. | |
| phone | string |
| vatNumber | string |
| chamberOfCommerceNumber | string |
| branchCode | string |
{- "platformReference": "string",
- "name": "string",
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "deliveryAddress": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "email": "user@example.com",
- "phone": "string",
- "vatNumber": "string",
- "chamberOfCommerceNumber": "string",
- "branchCode": "string"
}{- "erpCustomerId": "string",
- "debtorNumber": "string",
- "platformReference": "string",
- "name": "string",
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "deliveryAddress": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "email": "user@example.com",
- "phone": "string",
- "branchCode": "string",
- "routeCode": "string",
- "isBlocked": true,
- "blockReason": "string",
- "paymentTerms": "account",
- "creditLimit": 0,
- "openBalance": 0,
- "iban": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Het platform roept dit alleen aan bij het inloggen. Daarna werkt het op erpCustomerId.
Een mislukte inlog is 401 met code: invalid_credentials, geen 200 met een vlag. De inlognaam is
hoofdletterongevoelig, het wachtwoord hoofdlettergevoelig. Een geblokkeerde klant logt in en
komt terug met isBlocked: true.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| login required | string |
| password required | string <password> |
{- "login": "string",
- "password": "pa$$word"
}{- "erpCustomerId": "string",
- "debtorNumber": "string",
- "platformReference": "string",
- "name": "string",
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "deliveryAddress": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "email": "user@example.com",
- "phone": "string",
- "branchCode": "string",
- "routeCode": "string",
- "isBlocked": true,
- "blockReason": "string",
- "paymentTerms": "account",
- "creditLimit": 0,
- "openBalance": 0,
- "iban": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}| erpCustomerId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "erpCustomerId": "string",
- "debtorNumber": "string",
- "platformReference": "string",
- "name": "string",
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "deliveryAddress": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "email": "user@example.com",
- "phone": "string",
- "branchCode": "string",
- "routeCode": "string",
- "isBlocked": true,
- "blockReason": "string",
- "paymentTerms": "account",
- "creditLimit": 0,
- "openBalance": 0,
- "iban": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}Wijzigt alleen platformReference; andere velden in de body negeert het ERP. Daarna is de klant
te vinden met GET /customers?platformReference=. Nogmaals met dezelfde waarde geeft 200 met
dezelfde klant. Draagt een andere klant deze referentie al, dan 422 business_rule.
| erpCustomerId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| platformReference required | string <= 64 characters |
{- "platformReference": "string"
}{- "erpCustomerId": "string",
- "debtorNumber": "string",
- "platformReference": "string",
- "name": "string",
- "address": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "deliveryAddress": {
- "street": "string",
- "houseNumber": "string",
- "postalCode": "string",
- "city": "string",
- "countryCode": "st"
}, - "email": "user@example.com",
- "phone": "string",
- "branchCode": "string",
- "routeCode": "string",
- "isBlocked": true,
- "blockReason": "string",
- "paymentTerms": "account",
- "creditLimit": 0,
- "openBalance": 0,
- "iban": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}platformReference is de idempotentiesleutel, uniek per grossier. Het ERP controleert hem vóór
elke andere validatie.
Een onbekende klant is 404, een onbekende vestiging 400, een geblokkeerde klant 422
customer_blocked. Boven de kredietlimiet neemt het ERP de order aan en mag het regels op
manual zetten; weigeren op krediet is 422 business_rule.
Een onbekend artikel wijst de order niet af: de regel krijgt status: manual. Met module
articles.manage legt het platform het artikel vóór de order aan; de regel volgt daarna de
gewone regelstatussen (zie OrderLineStatus).
Het ERP boekt unitPriceNet zoals meegegeven. Met module pricing vergelijkt het exact op twee
decimalen met zijn actuele berekening bij het bestelde aantal; bij een verschil mag het corrigeren
en meldt het dat met priceCorrected en requestedUnitPriceNet. Bij payment.method: online
corrigeert het niet; toeslagen (per regel en op orderniveau) corrigeert het nooit. Eigen voorraad
wordt gereserveerd op source.branchCode, anders delivery.branchCode, anders de vestiging van
de klant.
Toeslagen op orderniveau (verzendkosten, kleine-orderkosten, bezorgtoeslag) komen in surcharges,
nooit als artikelregel; het ERP legt ze vast zoals het wil, geeft ze terug in Order.surcharges
en telt ze mee in totalNet en totalGross. Het levermoment op de kop (delivery.promisedAt)
geldt voor elke regel zonder eigen promisedAt; het ERP neemt beide over zoals meegegeven. Na het
plaatsen is statusCode ten minste confirmed.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| platformReference required | string <= 64 characters Idempotentiesleutel; uniek per bestelling. |
| erpCustomerId required | string |
| customerReference | string <= 100 characters Referentie van de garage of het garagepakket, bijv. een werkordernummer. |
| remark | string <= 2000 characters |
| source | string Enum: "webshop" "integrator" "platform" Waar de bestelling vandaan komt: webshop = de garage in de shop; integrator = vanuit garagesoftware; platform = een order die de grossier in het platform namens de garage invoert. |
| orderedAt | string <date-time> Tijdstip van bestellen volgens het platform; het ERP boekt dit tijdstip. |
required | object (Delivery) |
required | object (Payment) |
Array of objects (OrderSurcharge) Toeslagen op orderniveau, optioneel. Verzendkosten, kleine-orderkosten en bezorgtoeslag staan hier, nooit als regel. | |
required | Array of objects (OrderLineCreate) [ 1 .. 200 ] items |
{- "platformReference": "string",
- "erpCustomerId": "string",
- "customerReference": "string",
- "remark": "string",
- "source": "webshop",
- "orderedAt": "2019-08-24T14:15:22Z",
- "delivery": {
- "method": "route",
- "methodCode": "string",
- "promisedAt": "2019-08-24T14:15:22Z",
- "promisedUntil": "2019-08-24T14:15:22Z",
- "routeCode": "string",
- "branchCode": "string",
- "instruction": "string"
}, - "payment": {
- "method": "account",
- "providerReference": "string",
- "amountPaid": 0
}, - "surcharges": [
- {
- "kind": "shipping",
- "code": "string",
- "description": "string",
- "amountNet": 0,
- "vatRate": 0
}
], - "lines": [
- {
- "lineNo": 1,
- "platformLineRef": "string",
- "article": {
- "erpArticleId": "string",
- "ean": "string",
- "articleNumber": "string",
- "brand": "string",
- "brands": [
- "string"
]
}, - "description": "string",
- "quantity": 1,
- "unitPriceNet": 0,
- "unitPriceGross": 0,
- "vatRate": 0,
- "recognized": true,
- "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "source": {
- "kind": "ownStock",
- "branchCode": "string",
- "supplierCode": "string",
- "supplierName": "string",
- "expectedAtWholesaler": "2019-08-24T14:15:22Z"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "promisedAt": "2019-08-24T14:15:22Z",
- "remark": "string"
}
]
}{- "erpOrderId": "string",
- "erpOrderNumber": "string",
- "erpCustomerId": "string",
- "platformReference": "string",
- "customerReference": "string",
- "remark": "string",
- "source": "webshop",
- "orderedAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "statusCode": "open",
- "status": "string",
- "deliveryStatus": "pending",
- "isCredit": true,
- "delivery": {
- "method": "route",
- "methodCode": "string",
- "promisedAt": "2019-08-24T14:15:22Z",
- "promisedUntil": "2019-08-24T14:15:22Z",
- "routeCode": "string",
- "branchCode": "string",
- "instruction": "string"
}, - "payment": {
- "method": "account",
- "providerReference": "string",
- "amountPaid": 0
}, - "surcharges": [
- {
- "kind": "shipping",
- "code": "string",
- "description": "string",
- "amountNet": 0,
- "vatRate": 0
}
], - "totalNet": 0,
- "totalGross": 0,
- "documents": {
- "invoiceNumber": "string",
}, - "lines": [
- {
- "lineNo": 0,
- "platformLineRef": "string",
- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "description": "string",
- "quantityOrdered": 0,
- "quantityDelivered": 0,
- "quantityBackorder": 0,
- "unitPriceNet": 0,
- "unitPriceGross": 0,
- "vatRate": 0,
- "status": "accepted",
- "reason": "string",
- "priceCorrected": true,
- "requestedUnitPriceNet": 0,
- "recognized": true,
- "remark": "string",
- "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "source": {
- "kind": "ownStock",
- "branchCode": "string",
- "supplierCode": "string",
- "supplierName": "string",
- "expectedAtWholesaler": "2019-08-24T14:15:22Z"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "expectedAt": "2019-08-24T14:15:22Z",
- "promisedAt": "2019-08-24T14:15:22Z"
}
]
}Twee gebruikswijzen. Delta (updatedSince): over alle klanten, of met erpCustomerId per
klant; sortering oplopend op (updatedAt, erpOrderId), sort wordt genegeerd. Zoeken
(zonder updatedSince): erpCustomerId verplicht, tenzij op platformReference wordt gezocht;
sort naar keuze. De zoekfilters werken ook op regelniveau (articleNumber,
vehicleRegistration, text) en geven dan de hele order terug, met alle regels. Delta en
zoekfilters mogen samen; alle filters gelden tegelijk. Alleen platformReference is het
minimum; elke andere combinatie vraagt feature orders.history. Retouren die via het platform
zijn aangemeld staan nooit in deze lijst (zie /returns).
| erpCustomerId | string Verplicht bij zoeken; optioneel bij een delta of bij platformReference. Onbekend = 404. |
| platformReference | string |
| updatedSince | string <date-time> Alleen rijen gewijzigd op of na dit tijdstip (inclusief), op milliseconden en met offset; zonder offset = 400. Gebruik de |
| sort | string Enum: "orderedAt:asc" "orderedAt:desc" "updatedAt:asc" "updatedAt:desc" Alleen bij zoeken. Standaard |
| orderNumber | string Exact op het ordernummer, na normalisatie (letters en cijfers, hoofdletterongevoelig). |
| articleNumber | string Artikelnummer op een regel, exact na normalisatie (ongevoelig voor hoofdletters, spaties en leestekens). |
| vehicleRegistration | string Kenteken of VIN op een regel, exact na normalisatie. |
| text | string Deel van de tekst, hoofdletterongevoelig, in ordernummer, customerReference, platformReference, opmerkingen op order en regel, en omschrijvingen van regel en voertuig. |
| deliveryStatus | Array of strings (DeliveryStatus) Items Enum: "pending" "partial" "full" "cancelled" Eén of meer waarden, kommagescheiden. |
| cursor | string Ondoorzichtige cursor uit |
| limit | integer [ 1 .. 500 ] Default: 100 |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "nextCursor": "string",
- "asOf": "2019-08-24T14:15:22Z",
- "totalCount": 0,
- "items": [
- {
- "erpOrderId": "string",
- "erpOrderNumber": "string",
- "erpCustomerId": "string",
- "platformReference": "string",
- "customerReference": "string",
- "remark": "string",
- "source": "webshop",
- "orderedAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "statusCode": "open",
- "status": "string",
- "deliveryStatus": "pending",
- "isCredit": true,
- "delivery": {
- "method": "route",
- "methodCode": "string",
- "promisedAt": "2019-08-24T14:15:22Z",
- "promisedUntil": "2019-08-24T14:15:22Z",
- "routeCode": "string",
- "branchCode": "string",
- "instruction": "string"
}, - "payment": {
- "method": "account",
- "providerReference": "string",
- "amountPaid": 0
}, - "surcharges": [
- {
- "kind": "shipping",
- "code": "string",
- "description": "string",
- "amountNet": 0,
- "vatRate": 0
}
], - "totalNet": 0,
- "totalGross": 0,
- "documents": {
- "invoiceNumber": "string",
}, - "lines": [
- {
- "lineNo": 0,
- "platformLineRef": "string",
- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "description": "string",
- "quantityOrdered": 0,
- "quantityDelivered": 0,
- "quantityBackorder": 0,
- "unitPriceNet": 0,
- "unitPriceGross": 0,
- "vatRate": 0,
- "status": "accepted",
- "reason": "string",
- "priceCorrected": true,
- "requestedUnitPriceNet": 0,
- "recognized": true,
- "remark": "string",
- "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "source": {
- "kind": "ownStock",
- "branchCode": "string",
- "supplierCode": "string",
- "supplierName": "string",
- "expectedAtWholesaler": "2019-08-24T14:15:22Z"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "expectedAt": "2019-08-24T14:15:22Z",
- "promisedAt": "2019-08-24T14:15:22Z"
}
]
}
]
}Geeft elke order van de grossier, ongeacht de klant; de sleutel is per grossier en het platform controleert zelf of de order bij de vragende klant hoort.
| erpOrderId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "erpOrderId": "string",
- "erpOrderNumber": "string",
- "erpCustomerId": "string",
- "platformReference": "string",
- "customerReference": "string",
- "remark": "string",
- "source": "webshop",
- "orderedAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "statusCode": "open",
- "status": "string",
- "deliveryStatus": "pending",
- "isCredit": true,
- "delivery": {
- "method": "route",
- "methodCode": "string",
- "promisedAt": "2019-08-24T14:15:22Z",
- "promisedUntil": "2019-08-24T14:15:22Z",
- "routeCode": "string",
- "branchCode": "string",
- "instruction": "string"
}, - "payment": {
- "method": "account",
- "providerReference": "string",
- "amountPaid": 0
}, - "surcharges": [
- {
- "kind": "shipping",
- "code": "string",
- "description": "string",
- "amountNet": 0,
- "vatRate": 0
}
], - "totalNet": 0,
- "totalGross": 0,
- "documents": {
- "invoiceNumber": "string",
}, - "lines": [
- {
- "lineNo": 0,
- "platformLineRef": "string",
- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "description": "string",
- "quantityOrdered": 0,
- "quantityDelivered": 0,
- "quantityBackorder": 0,
- "unitPriceNet": 0,
- "unitPriceGross": 0,
- "vatRate": 0,
- "status": "accepted",
- "reason": "string",
- "priceCorrected": true,
- "requestedUnitPriceNet": 0,
- "recognized": true,
- "remark": "string",
- "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "source": {
- "kind": "ownStock",
- "branchCode": "string",
- "supplierCode": "string",
- "supplierName": "string",
- "expectedAtWholesaler": "2019-08-24T14:15:22Z"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "expectedAt": "2019-08-24T14:15:22Z",
- "promisedAt": "2019-08-24T14:15:22Z"
}
]
}Het document met de sleutel, voor het platform; het platform geeft het zelf aan de garage door. Het zusje van GET /invoices/{erpInvoiceId}/document. Bestaat het document (nog) niet, dan 404.
| erpOrderId required | string |
| kind required | string Enum: "packingSlip" "invoice" |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "title": "string",
- "status": 0,
- "detail": "string",
- "code": "validation_error",
- "requestId": "string",
- "errors": [
- {
- "field": "string",
- "message": "string"
}
]
}Met updatedSince is erpCustomerId optioneel (delta over alle klanten); zonder is hij verplicht. Zonder delta aflopend op factuurdatum, daarna id. unpaidOnly = open en partial, ook open creditnota's.
| erpCustomerId | string Verplicht zonder updatedSince. Onbekend = 404. |
| updatedSince | string <date-time> Alleen rijen gewijzigd op of na dit tijdstip (inclusief), op milliseconden en met offset; zonder offset = 400. Gebruik de |
| unpaidOnly | boolean Default: false |
| cursor | string Ondoorzichtige cursor uit |
| limit | integer [ 1 .. 500 ] Default: 100 |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "nextCursor": "string",
- "asOf": "2019-08-24T14:15:22Z",
- "totalCount": 0,
- "items": [
- {
- "erpInvoiceId": "string",
- "invoiceNumber": "string",
- "type": "invoice",
- "erpCustomerId": "string",
- "invoiceDate": "2019-08-24",
- "dueDate": "2019-08-24",
- "amountNet": 0,
- "amountGross": 0,
- "amountPaid": 0,
- "amountOpen": 0,
- "paymentStatus": "open",
- "orderNumbers": [
- "string"
], - "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Het document met de sleutel, voor het platform; het platform geeft het zelf aan de garage door. Daarnaast is er documentUrl (zonder sleutel, tijdgebonden), ook alleen voor het platform. Bestaat het document (nog) niet, dan 404.
| erpInvoiceId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "title": "string",
- "status": 0,
- "detail": "string",
- "code": "validation_error",
- "requestId": "string",
- "errors": [
- {
- "field": "string",
- "message": "string"
}
]
}Idempotent op platformReference, zoals een order. Elke regel verwijst naar een regel van een
eerdere order (erpOrderId of erpOrderNumber, plus orderLineNo of article). Staat het
artikel op meer regels van die order, dan 422 business_rule met het verzoek orderLineNo mee te
geven. Per orderregel hoogstens het geleverde aantal min eerder aangemelde retouren, per soort
(article, coreOnly) apart; afgewezen retouren tellen niet mee. Overschrijden is 422 met
errors[] per regel.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| platformReference required | string <= 64 characters |
| erpCustomerId required | string |
| remark | string <= 2000 characters |
| refundIban | string or null |
required | Array of ReturnLineCreate (object) or ReturnLineCreate (object) (ReturnLineCreate) non-empty |
{- "platformReference": "string",
- "erpCustomerId": "string",
- "remark": "string",
- "refundIban": "string",
- "lines": [
- {
- "lineNo": 1,
- "erpOrderId": "string",
- "erpOrderNumber": "string",
- "orderLineNo": 0,
- "article": {
- "erpArticleId": "string",
- "ean": "string",
- "articleNumber": "string",
- "brand": "string",
- "brands": [
- "string"
]
}, - "quantity": 1,
- "kind": "article",
- "reason": {
- "code": "string",
- "text": "string"
}, - "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "remark": "string"
}
]
}{- "erpReturnId": "string",
- "erpReturnNumber": "string",
- "erpCustomerId": "string",
- "platformReference": "string",
- "status": "announced",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "creditNoteNumber": "string",
- "refundIban": "string",
- "remark": "string",
- "lines": [
- {
- "lineNo": 0,
- "erpOrderId": "string",
- "erpOrderNumber": "string",
- "orderLineNo": 0,
- "erpArticleId": "string",
- "articleNumber": "string",
- "quantity": 1,
- "kind": "article",
- "status": "announced",
- "remark": "string",
- "reason": {
- "code": "string",
- "text": "string"
}, - "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "creditAmountNet": 0
}
]
}Twee gebruikswijzen, zoals bij orders. Delta (updatedSince): over alle klanten, of met
erpCustomerId per klant; oplopend op (updatedAt, erpReturnId), met dezelfde cursor- en
asOf-regels als orders en facturen. Zo haalt het platform retourwijzigingen periodiek op.
Per klant (zonder updatedSince): erpCustomerId verplicht, tenzij op platformReference
wordt gezocht; aflopend op aanmaakmoment, daarna id. Zo leest het platform live als de garage
zijn retouren opent. Een onbekende erpCustomerId is 404.
| erpCustomerId | string Verplicht zonder updatedSince en zonder platformReference. Onbekend = 404. |
| platformReference | string |
| updatedSince | string <date-time> Alleen rijen gewijzigd op of na dit tijdstip (inclusief), op milliseconden en met offset; zonder offset = 400. Gebruik de |
| cursor | string Ondoorzichtige cursor uit |
| limit | integer [ 1 .. 500 ] Default: 100 |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "nextCursor": "string",
- "asOf": "2019-08-24T14:15:22Z",
- "totalCount": 0,
- "items": [
- {
- "erpReturnId": "string",
- "erpReturnNumber": "string",
- "erpCustomerId": "string",
- "platformReference": "string",
- "status": "announced",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "creditNoteNumber": "string",
- "refundIban": "string",
- "remark": "string",
- "lines": [
- {
- "lineNo": 0,
- "erpOrderId": "string",
- "erpOrderNumber": "string",
- "orderLineNo": 0,
- "erpArticleId": "string",
- "articleNumber": "string",
- "quantity": 1,
- "kind": "article",
- "status": "announced",
- "remark": "string",
- "reason": {
- "code": "string",
- "text": "string"
}, - "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "creditAmountNet": 0
}
]
}
]
}| erpReturnId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "erpReturnId": "string",
- "erpReturnNumber": "string",
- "erpCustomerId": "string",
- "platformReference": "string",
- "status": "announced",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "creditNoteNumber": "string",
- "refundIban": "string",
- "remark": "string",
- "lines": [
- {
- "lineNo": 0,
- "erpOrderId": "string",
- "erpOrderNumber": "string",
- "orderLineNo": 0,
- "erpArticleId": "string",
- "articleNumber": "string",
- "quantity": 1,
- "kind": "article",
- "status": "announced",
- "remark": "string",
- "reason": {
- "code": "string",
- "text": "string"
}, - "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "creditAmountNet": 0
}
]
}De grossier legt in het platform vast welke leverancier bij welke code hoort. Op een inkooporder gebruikt het platform alleen codes uit deze lijst; voor een leverancier zonder code maakt het geen inkooporder in het ERP, maar koopt het zelf in.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "items": [
- {
- "supplierCode": "string",
- "name": "string",
- "purchaseOrderMode": "confirmed"
}
]
}Idempotent op platformReference; dat is de enige uniciteit. Een tweede inkooporder voor dezelfde
verkooporder en leverancier met een andere referentie is toegestaan. Het platform stuurt alleen een
supplierCode uit GET /suppliers; voor een leverancier zonder code in het ERP plaatst het geen
inkooporder, maar koopt het zelf in. Een leverancier die het ERP niet kent is 422 business_rule.
Het antwoord geeft per regel orderLineNo, description en expectedAtWholesaler terug.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| platformReference required | string <= 64 characters Idempotentiesleutel, bijv. ' |
| erpOrderId required | string De verkooporder waar deze inkoop bij hoort. |
| supplierCode required | string Code uit GET /suppliers; het platform stuurt geen andere. Onbekend = 422 business_rule. |
| mode required | string Enum: "confirmed" "draft" |
| expectedAtWholesaler | string or null <date-time> |
required | Array of objects non-empty |
{- "platformReference": "string",
- "erpOrderId": "string",
- "supplierCode": "string",
- "mode": "confirmed",
- "expectedAtWholesaler": "2019-08-24T14:15:22Z",
- "lines": [
- {
- "lineNo": 0,
- "orderLineNo": 0,
- "article": {
- "erpArticleId": "string",
- "ean": "string",
- "articleNumber": "string",
- "brand": "string",
- "brands": [
- "string"
]
}, - "description": "string",
- "quantity": 1,
- "unitPurchasePrice": 0,
- "supplierArticleNumber": "string",
- "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
]
}
]
}{- "erpPurchaseOrderId": "string",
- "erpPurchaseOrderNumber": "string",
- "erpOrderId": "string",
- "platformReference": "string",
- "supplierCode": "string",
- "status": "draft",
- "lines": [
- {
- "lineNo": 0,
- "orderLineNo": 0,
- "erpArticleId": "string",
- "description": "string",
- "quantity": 0,
- "quantityReceived": 0,
- "unitPurchasePrice": 0,
- "expectedAtWholesaler": "2019-08-24T14:15:22Z"
}
]
}| erpOrderId | string De verkooporder waar de inkooporders bij horen. |
| platformReference | string Terugvinden na een verloren antwoord. Eén van beide parameters is verplicht. |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "items": [
- {
- "erpPurchaseOrderId": "string",
- "erpPurchaseOrderNumber": "string",
- "erpOrderId": "string",
- "platformReference": "string",
- "supplierCode": "string",
- "status": "draft",
- "lines": [
- {
- "lineNo": 0,
- "orderLineNo": 0,
- "erpArticleId": "string",
- "description": "string",
- "quantity": 0,
- "quantityReceived": 0,
- "unitPurchasePrice": 0,
- "expectedAtWholesaler": "2019-08-24T14:15:22Z"
}
]
}
]
}Tijden in Europe/Amsterdam, zonder uitzonderingen (feestdagen). Een klant zonder routes krijgt een lege lijst routes, geen 404. Het schema geldt voor regels uit eigen voorraad (source.kind ownStock); voor regels die de grossier eerst bij een leverancier haalt, bepaalt het platform het levermoment zelf en geeft het dat per regel mee (promisedAt op de regel).
| erpCustomerId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "erpCustomerId": "string",
- "routeCode": "string",
- "routes": [
- {
- "departureTime": "string",
- "arrivalTime": "string",
- "arrivalUntil": "string",
- "weekdays": [
- 1
], - "cutoffMinutes": 0,
- "branchCode": "string",
- "remark": "string"
}
]
}De job is ten minste 24 uur op te vragen met GET /exports/{exportId}; het platform vraagt de status op met een oplopende tussenpoos tot 5 seconden. Onbekende branchCode = 400.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| dataset required | string Enum: "articles" "stock" |
| updatedSince | string <date-time> Leeg = volledige set. |
| branchCode | string |
{- "dataset": "articles",
- "updatedSince": "2019-08-24T14:15:22Z",
- "branchCode": "string"
}{- "exportId": "string",
- "dataset": "articles",
- "status": "pending",
- "requestedAt": "2019-08-24T14:15:22Z",
- "asOf": "2019-08-24T14:15:22Z",
- "rowCount": 0,
- "expiresAt": "2019-08-24T14:15:22Z",
- "error": "string"
}| exportId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "exportId": "string",
- "dataset": "articles",
- "status": "pending",
- "requestedAt": "2019-08-24T14:15:22Z",
- "asOf": "2019-08-24T14:15:22Z",
- "rowCount": 0,
- "expiresAt": "2019-08-24T14:15:22Z",
- "error": "string"
}Module testing: reset en beheerhandelingen voor de acceptatiescenario's (spec 8.4). Alleen met environment: test.
Zet alle testdata terug. Cursors van vóór de reset mogen 400 invalid_cursor geven.
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "asOf": "2019-08-24T14:15:22Z"
}Zet per genoemde vestiging de aanwezige en de gereserveerde voorraad, en eventueel expectedAt.
Vestigingen die niet in de aanvraag staan, blijven ongewijzigd. De voorraadrij krijgt een nieuwe
updatedAt, zoals bij een gewone mutatie. Op productie 501.
| erpArticleId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
required | Array of objects non-empty |
{- "levels": [
- {
- "branchCode": "string",
- "quantityOnHand": 0,
- "quantityReserved": 0,
- "expectedAt": "2019-08-24T14:15:22Z"
}
]
}{- "items": [
- {
- "branchCode": "string",
- "quantityFree": 0,
- "quantityOnHand": 0,
- "expectedAt": "2019-08-24T14:15:22Z",
- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "updatedAt": "2019-08-24T14:15:22Z"
}
]
}Zet per regel het geleverde aantal. Zonder deliveryStatus leidt het ERP de leverstatus af uit de
aantallen (regels met rejected tellen niet mee); met deliveryStatus neemt het die over.
statusCode volgt (processing of delivered). De order krijgt een nieuwe updatedAt. Op
productie 501.
| erpOrderId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| deliveryStatus | string (DeliveryStatus) Enum: "pending" "partial" "full" "cancelled" Optioneel; zonder leidt het ERP de leverstatus af uit de aantallen. |
required | Array of objects non-empty |
{- "deliveryStatus": "pending",
- "lines": [
- {
- "lineNo": 0,
- "quantityDelivered": 0
}
]
}{- "erpOrderId": "string",
- "erpOrderNumber": "string",
- "erpCustomerId": "string",
- "platformReference": "string",
- "customerReference": "string",
- "remark": "string",
- "source": "webshop",
- "orderedAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "statusCode": "open",
- "status": "string",
- "deliveryStatus": "pending",
- "isCredit": true,
- "delivery": {
- "method": "route",
- "methodCode": "string",
- "promisedAt": "2019-08-24T14:15:22Z",
- "promisedUntil": "2019-08-24T14:15:22Z",
- "routeCode": "string",
- "branchCode": "string",
- "instruction": "string"
}, - "payment": {
- "method": "account",
- "providerReference": "string",
- "amountPaid": 0
}, - "surcharges": [
- {
- "kind": "shipping",
- "code": "string",
- "description": "string",
- "amountNet": 0,
- "vatRate": 0
}
], - "totalNet": 0,
- "totalGross": 0,
- "documents": {
- "invoiceNumber": "string",
}, - "lines": [
- {
- "lineNo": 0,
- "platformLineRef": "string",
- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "description": "string",
- "quantityOrdered": 0,
- "quantityDelivered": 0,
- "quantityBackorder": 0,
- "unitPriceNet": 0,
- "unitPriceGross": 0,
- "vatRate": 0,
- "status": "accepted",
- "reason": "string",
- "priceCorrected": true,
- "requestedUnitPriceNet": 0,
- "recognized": true,
- "remark": "string",
- "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "source": {
- "kind": "ownStock",
- "branchCode": "string",
- "supplierCode": "string",
- "supplierName": "string",
- "expectedAtWholesaler": "2019-08-24T14:15:22Z"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "expectedAt": "2019-08-24T14:15:22Z",
- "promisedAt": "2019-08-24T14:15:22Z"
}
]
}Annuleert de order; daarna deliveryStatus en statusCode cancelled en een nieuwe updatedAt. Op productie 501.
| erpOrderId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
{- "erpOrderId": "string",
- "erpOrderNumber": "string",
- "erpCustomerId": "string",
- "platformReference": "string",
- "customerReference": "string",
- "remark": "string",
- "source": "webshop",
- "orderedAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "statusCode": "open",
- "status": "string",
- "deliveryStatus": "pending",
- "isCredit": true,
- "delivery": {
- "method": "route",
- "methodCode": "string",
- "promisedAt": "2019-08-24T14:15:22Z",
- "promisedUntil": "2019-08-24T14:15:22Z",
- "routeCode": "string",
- "branchCode": "string",
- "instruction": "string"
}, - "payment": {
- "method": "account",
- "providerReference": "string",
- "amountPaid": 0
}, - "surcharges": [
- {
- "kind": "shipping",
- "code": "string",
- "description": "string",
- "amountNet": 0,
- "vatRate": 0
}
], - "totalNet": 0,
- "totalGross": 0,
- "documents": {
- "invoiceNumber": "string",
}, - "lines": [
- {
- "lineNo": 0,
- "platformLineRef": "string",
- "erpArticleId": "string",
- "articleNumber": "string",
- "brand": "string",
- "ean": "string",
- "description": "string",
- "quantityOrdered": 0,
- "quantityDelivered": 0,
- "quantityBackorder": 0,
- "unitPriceNet": 0,
- "unitPriceGross": 0,
- "vatRate": 0,
- "status": "accepted",
- "reason": "string",
- "priceCorrected": true,
- "requestedUnitPriceNet": 0,
- "recognized": true,
- "remark": "string",
- "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "source": {
- "kind": "ownStock",
- "branchCode": "string",
- "supplierCode": "string",
- "supplierName": "string",
- "expectedAtWholesaler": "2019-08-24T14:15:22Z"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "expectedAt": "2019-08-24T14:15:22Z",
- "promisedAt": "2019-08-24T14:15:22Z"
}
]
}Zet de status van de retour volgens de toegestane overgangen (announced → received → credited;
announced of received → rejected). Een andere overgang is 422 business_rule. Bij credited mag
het gecrediteerde bedrag per regel mee; zonder rekent het ERP het zelf uit. De retour krijgt een
nieuwe updatedAt. Op productie 501.
| erpReturnId required | string |
| X-Request-Id | string <= 64 characters Correlatie-id van het platform; overnemen in antwoord en logging. Ontbreekt hij, dan maakt het ERP er zelf een; is hij langer dan 64 tekens, dan neemt het ERP hem toch over. |
| status required | string Enum: "received" "credited" "rejected" |
Array of objects Alleen bij |
{- "status": "received",
- "lines": [
- {
- "lineNo": 0,
- "creditAmountNet": 0
}
]
}{- "erpReturnId": "string",
- "erpReturnNumber": "string",
- "erpCustomerId": "string",
- "platformReference": "string",
- "status": "announced",
- "createdAt": "2019-08-24T14:15:22Z",
- "updatedAt": "2019-08-24T14:15:22Z",
- "creditNoteNumber": "string",
- "refundIban": "string",
- "remark": "string",
- "lines": [
- {
- "lineNo": 0,
- "erpOrderId": "string",
- "erpOrderNumber": "string",
- "orderLineNo": 0,
- "erpArticleId": "string",
- "articleNumber": "string",
- "quantity": 1,
- "kind": "article",
- "status": "announced",
- "remark": "string",
- "reason": {
- "code": "string",
- "text": "string"
}, - "vehicle": {
- "registration": "string",
- "vin": "stringstringstrin",
- "catalog": "tecdoc",
- "typeCode": "string",
- "brandCode": "string",
- "description": "string"
}, - "surcharges": [
- {
- "kind": "deposit",
- "code": "string",
- "description": "string",
- "amountPerUnit": 0,
- "vatRate": 0
}
], - "creditAmountNet": 0
}
]
}