Media Order B2C and Shipment (CEP)
- 1 Revision
- 2 Introduction
- 3 Authentication & Authorisation
- 4 Webservice information
- 5 Overview webservices
- 6 Operations
- 7 Response messages
- 7.1 MediaOrderB2C
- 8 Process flows
- 8.1 Happy flow
- 8.2 Alternative Flow 1 – multiple shipments
- 8.3 Alternative Flow 2 – multiple shipments due to partial backorder
- 8.4 Alternative Flow 3 – customer cancellation
- 8.5 Alternative Flow 4 – partial customer cancellation
- 8.6 Alternative Flow 5 – CB order reject
- 8.7 Alternative Flow 6 – partial CB cancellation
- 8.8 Alternative Flow 7 – order during service window
- 8.9 Alternative Flow 8 – cancel during service window
- 9 Volume, limits and performance requirements
- 9.1 Timing
- 9.2 Volume
- 9.3 Performance
- 10 Order simulation for test purpose
Revision
Date | Description |
|
---|---|---|
Mar 4, 2025 | New version due to move to a new server. URL change and new yaml versions MediaOrderB2C and MediaShipment Functional changes:
|
|
Jun 2, 2023 | Added extra information authorisation: “Basic ”||"Base64 encoding of username and password joined by a single colon : " |
|
May 3, 2022 | Media Order B2C: Yaml file version 1.3.0. Changelog version 1.2.0 to version 1.3.0:
MediaShipment: Yaml file version 1.0.0 version 1.1.0. Changelog version 1.0.0 to version 1.1.0:
|
|
Jan 25, 2022 | Test and order simulation added |
|
Dec 15, 2021 | Add Tag matrix for Green and Standard option |
|
Oct 19, 2021 | Update yaml file MediaOrderNotify v.1.0.2.yaml |
|
Aug 19, 2021 | Update generic error messages |
|
May 7, 2021 | Align with updated order notifications |
|
Nov 12, 2020 | Update yaml file MediaOrderB2C v1.2.0.yaml |
|
Jun 8, 2020 | Update MediaOrderB2C version; Correct resource for notifyOrder and notityShipment |
|
Apr 28, 2020 | Update yaml versions |
|
Mar 12, 2020 | Add volume limits and error messages; Correct typo in process flow diagrams |
|
Jan 13, 2020 | Add flows and sequence diagrams |
|
Nov 11, 2019 | Add operations |
|
Aug 30, 2019 | Initial document |
|
Introduction
This document contains a description of the standard interfaces for implementation of data exchange with CB via webservices.
Tag matrix for Green and Standard option | |
CB has two options for submitting e-commerce orders:
| |
The entire set for the standard data exchange with CB consists of the following documents and files: | |
File versus webservice. Communication about orders is based on the receiving channel, i.e. file base communication is used for orders received via file based interfaces and webservice communication is used for orders received via the webservice MediaOrderB2C. Order are processed independent from the receiving channel | |
The mapping from file based to webservice based messages | |
File based | Webservice operation |
OPDNAW | placeOrder |
ANNOPD | cancelOrder |
UITOPD | notifyOrder / getOrderStatus + notifyShipment / getShippingUnit |
NUITOP | notifyOrder / getOrderStatus |
Migration strategy from batch file to webservice | |
Suggested migration strategy from batch file to webservice:
|
Authentication & Authorisation
MediaOrderB2C and Shipment | Header-parameters "Username" + "Password" |
Webservice information
Webservice approache | REST - Representational State Transfer | |
MediaOrderB2C | OpenAPI Specification |
|
Resource | Orders | |
Operations provided by CB: | ||
placeOrder | Send one (1) order to CB | |
cancelOrderLine | Cancel one (1) orderline | |
getOrderStatus | Retrieve the status if one (1) order | |
MediaOrderNotify | OpenAPI Specification |
|
Resource: | Notifications | |
Operations provided by you: | ||
notifyOrder | CB calls your webservice to inform you about status updates of an order | |
Authentication mode | CB supports:
| |
MediaShipment | Definition |
|
Resource | ShippingUnits | |
Operations provided by CB: | ||
getShippingUnit | Retrieve the shipment information for a shipping unit | |
MediaShipmentNotify | Definition: |
|
Resource: | Notifications | |
Operations provided by you: | ||
notifyShipment | CB calls your webservice to inform you about shipment for your order | |
Authentication mode | CB supports:
| |
Content type | The content /body in the request and response has to be, will be in json format | |
‘Optional’ parameter | For any optional Attribute ons of th following options applies:
An optional parameter may therefore never be filled with the value null | |
URL Test
| MediaOrderB2C base: https://media.tst.cb-api.nl/mediaorderb2c
MediaShipment base: https://media.tst.cb-api.nl/mediashipment
| |
URL Production
| MediaOrderB2C base: https://media.cb-api.nl/mediaorderb2c
MediaShipment base: https://media.cb-api.nl/mediashipment
| |
Supported SSL/TLS protocols | TLS 1.2 | |
TLS 1.3 |
Overview webservices
This chapter gives an overview of the available interaction patterns for data exchange with CB. The figure below gives an high level overview of the CB system landscape and the available webservice operations.
The webservices provide online creation and cancelation of media orders at CB. Changes to an order (other than cancel) are not available. Resending an order is possible only when the order was not accepted by CB earlier.
Operations
Order - placeOrder
The operation placeOrder supports sending one order for a customer. An order can contain multiple orderlines, each for a specific title. Confirmation of the operation is provided with a http-response-code.
Check order identification (Requestor Order Id)
The identification of an order is used to check if an order already exists in the CB systems. If this is the case the new order is rejected. Only open orders are taken into account, so closed/cancelled orders are ignored.
Order type
The operation is available for order types ShipBuyer (LNAFN), ShipOwner (LNEIG) and ShipSecundaryOwner (LMEONE).
Sender and Owner
In the common scenario for media orders the sender requests CB to ship titles owned by a publisher to a consumer. This scenario identifies the publisher as owner, the sender (shop) as buyer from the owner and the consumer as receiver (and buying from the shop). An alternative scenario is secondary ownership, in this alternative scenario the sender (shop) already purchased titles from the publisher and requests CB to ship from its own stock.
Party
Because parties where goods have to be delivered are not known by CB the PartyType “ReceiverAddress,” is mandatory and all name and address information must be provided.
Values added services (VAS)
VAS activities can be controlled by means of special handling instructions for the order.
Examples of instructions:
Wrap the books in gift paper
Add leaflet to the package
Available special handling instructions must be agreed upon in advance by requestor and CB.
Order - cancelOrderLine
The operation cancelOrderLine supports cancellation of one orderline. Cancellation is available until the orderline is released for production (“vrijgegeven”). Confirmation of the operation is provided with a http-response-code. The operation requires the OrderId and OrderLineId as input and is available for orders entered via webservices only.
Order - getOrderStatus
When the status of an order or orderline is changed a notifyOrder message is sent. This is the preferred trigger to call the operation getOrderStatus.
The operation getOrderStatus provides the status summary of the requested order. An order can contain multiple orderlines, each for a specific product. The status of every orderline is reported separately. An orderline can also be reported in multiple statuses, for instance when part of the quantity is available and ready for production and the remaining quantity is in backorder. If (a part of) the order is not delivered, the status includes an explanation why.
The operation requires the OrderId as input and available for orders entered via webservices only.
Available statuses for notifyOrder:
New Order is accepted after being received during the service window
InProgress Order(line) passed validation
ProductionReady Order(line) is ready for pick/pack in warehouse
Warning Order processing started with an issue for at least one orderline
Processed Order is finished with shipment
Cancelled Order is finished without shipment
Shipment - getShippingUnit
When a shipment is ready to be shipped a notifyShipment message is sent per available shipping unit. The operation getShippingUnit provides the contents of the shipping unit and the relation to order and orderlines. An order can be shipped in multiple shipping units.
The operation requires the ShippingUnitId as input.
Available statuses for notifyShipment:
Processed ShippingUnit is ready for shipping
Response messages
MediaOrderB2C | |||||
---|---|---|---|---|---|
HTTP code | Error code | Description/Message | getOrderStatus | placeOrder | cancelOrderLine |
200 |
| Request executed |
|
|
|
204 |
| Request executed |
|
|
|
206 |
| Request executed with pending status |
|
|
|
400 |
| Request failed |
|
|
|
401 |
| Not authorised |
|
|
|
404 |
| Order not found |
|
|
|
HTTP code | Error code | Description/Message | getOrderStatus | placeOrder | cancelOrderLine |
CEP-*** | CEP-002 | The request does not comply with the yaml definition; Value is not one of the possible/allowed values [instance value (\"1234567890\") not found in enum (possible values: [\"SecundaryOwnerStock\",\"SecundaryOrPrimary\",\"PrimaryOwnerStock\",\"PrimaryOrSecundary\"]), format attribute \"decimal\" not supported, format attribute \"int32\" not supported] |
|
|
|
CEP-002 | The request does not comply with the yaml definition; Value does not meet regex [ECMA 262 regex \"^[^#]*$\" does not match input string \"#\", format attribute \"int32\" not supported] |
|
|
| |
CEP-002 | The request does not comply with the yaml definition; Value does not meet set minimum or maximum value [numeric instance is lower than the required minimum (minimum: 6000000, found: 123), format attribute \"decimal\" not supported, format attribute \"int32\" not supported] |
|
|
| |
CEP-003 | Authentication/Authorisation error You are not authenticated |
|
|
| |
WMO-*** | WMO-00503 | The request encountered a mapping error, mainly due to incorrect shipment date(s); Delivery period and delivery date cannot both be given If Delivery is specified, then either DeliveryDate or DeliveryPeriod must be supplied |
|
|
|
WMO-00508 | The request encountered a mapping error, mainly due to incorrect shipment date(s); Date must be in the future The DeliveryDate is in the past |
|
|
| |
WMO-00509 | The request encountered a mapping error, mainly due to incorrect shipment date(s); Invalid date Invalid date for Delivery/DeliveryPeriod/Till: <Submitted ShipmentPeriod.Till> compared to Delivery/DeliveryPeriod/From <Submitted ShipmentPeriod.From> |
|
|
| |
WMO-00510 | The request encountered a mapping error, mainly due to incorrect shipment date(s); Date must be in the future The Delivery/DeliveryPeriod/From is in the past |
|
|
| |
WMO-00511 | The request encountered a mapping error, mainly due to incorrect shipment date(s); Date must be in the pastThe The Delivery/DeliveryPeriod/Till is in the past |
|
|
| |
HTTP code | Error code | Description/Message | getOrderStatus | placeOrder | cancelOrderLine |
OMS-*** |
|
|
| ||
OMS-01268 | Order not found <OrderId> |
|
|
| |
OMS-01342 | Orderline was already cancelled |
|
|
| |
OMS-01269 | Unable to cancel order. Order already processed |
|
|
| |
OMS-01378 | Crossdock orderline can not be cancelled |
|
|
| |
OMS-01373 | Unable to cancel orderline. Orderline already promoted to the Warehouse |
|
|
|
Process flows
This chapter contains the identified flows when using webservices to order physical books at CB. The most common and regular scenario is describes in the happy flow. In addition 7 frequent scenarios are described in alternative flows.
Happy flow
The customer orders one or more products, stock is available and the order is shipped in one shipment.
Flow description:
The customer puts one or more products in the shopping basket
The shop forwards the order to CB with the operation placeOrder
CB verifies and accepts the order, the shop is notified with the operation notifyOrder and status event In Progress
CB assigns stock to the order
CB prepares for logistic processing of the order. Cancellation of the order is not possible anymore, the shop is notified with the operation notifyOrder and status event ProductionReady
The shop can retrieve the order process status to see which orderlines are ready for production and cannot be cancelled anymore
CB executes pick and pack for the order and creates a shipment. The shop is notified with the operation notifyShipment and status event Processed
The shop can retrieve the shipment details (including tracking number and a list of products) per shipping unit and can inform the customer.
Alternative Flow 1 – multiple shipments
The customer orders multiple products and stock is available for all products. At pick and pack multiple shipping units are created. The order is shipped in multiple shipments.
Flow description:
The customer puts multiple products in the shopping basket
The shop forwards the order to CB with the operation placeOrder
CB verifies and accepts the order, the shop is notified with the operation notifyOrder and status event In Progress
CB prepares for logistic processing of the order. The shop is notified with the operation notifyOrder and status event ProductionReady
The shop can retrieve the order process status to see which orderline(s) are ready for production and cannot be cancelled anymore
CB executes pick and pack for orderline 1 and creates a shipment. The shop is notified with the operation notifyShipment and status event Processed
The shop can retrieve the shipment details (including tracking number and a list of products) per shipping unit and can inform the customer
CB executes pick and pack for orderline 2 and creates a shipment. The shop is notified with the operation notifyShipment and status event Processed
The shop can retrieve the shipment details (including tracking number and a list of products) per shipping unit and can inform the customer
Alternative Flow 2 – multiple shipments due to partial backorder
The customer orders multiple products and stock is available for at least one product. Also at least one product is in backorder. The order is shipped in multiple shipments.
Flow description:
The customer puts multiple products in the shopping basket
The shop forwards the order to CB with the operation placeOrder
CB verifies and accepts the order, the shop is notified with the operation notifyOrder and status event In Progress
CB prepares for logistic processing of orderline 1. The shop is notified with the operation notifyOrder and status event ProductionReady
The shop can retrieve the order process status to see which orderline(s) are ready for production and cannot be cancelled anymore
CB executes pick and pack for orderline 1 and creates a shipment. The shop is notified with the operation notifyShipment and status event Processed
The shop can retrieve the shipment details (including tracking number and a list of products) per shipping unit and can inform the customer
CB received stock for orderline 2, assigns stock and prepares for logistic processing of orderline The shop is notified with the operation notifyOrder and status event ProductionReady
The shop can retrieve the order process status to see which orderline(s) are ready for production and cannot be cancelled anymore
CB executes pick and pack for orderline 2 and creates a shipment. The shop is notified with the operation notifyShipment and status event Processed
The shop can retrieve the shipment details (including tracking number and a list of products) per shipping unit and can inform the customer.
Alternative Flow 3 – customer cancellation
The customer orders one or more products, but decides to cancel the order shortly after ordering.
Flow description:
The customer puts one or more products in the shopping basket
The shop forwards the order to CB with the operation placeOrder. The operation confirms acceptance of the order
CB verifies the order, the shop is notified with the operation notifyOrder and status event In Progress
The customer decides to cancel the order at the shop
The shop forwards the cancel request per orderline to CB with the operation cancelOrderLine. The operation confirms acceptance of the cancellation
CB informs the shop that the complete order is cancelled with the operation notifyOrder and status event Cancelled
The shop confirms the cancellation to the customer.
Alternative Flow 4 – partial customer cancellation
The customer orders multiple products, but decides to cancel at least one of the orderlines but not all shortly after ordering.
Flow description:
The customer puts multiple products in the shopping basket
The shop forwards the order to CB with the operation placeOrder. The operation confirms acceptance of the order
CB verifies the order, the shop is notified with the operation notifyOrder and status event In Progress
The customer decides to cancel orderline 1 in the shop
The shop forwards the cancel request for orderline 1 to CB with the operation cancelOrderLine.The operation confirms acceptance of the cancellation
CB informs the shop that an orderline is cancelled with the operation notifyOrder and status event Cancelled
The shop confirms the cancellation to the customer
CB prepares for logistic processing of orderline 2. The shop is notified with the operation notifyOrder and status event ProductionReady
CB executes pick and pack for orderline 2 and creates a shipment. The shop is notified with the operation notifyShipment and status event Processed
The shop can retrieve the shipment details (including tracking number and a list of products) per shipping unit and can inform the customer.
Alternative Flow 5 – CB order reject
The customer orders one or more products, but the order is not accepted by CB due to unknown products.
Flow description:
The customer puts multiple products in the shopping basket
The shop forwards the order to CB with the operation placeOrder. The operation confirms rejection of the order
Alternative Flow 6 – partial CB cancellation
The customer orders multiple products and stock is available for at least one product. Also stock is not available for at least one product and backlog is not allowed.
Flow description:
The customer puts multiple products in the shopping basket
The shop forwards the order to CB with the operation placeOrder. The operation confirms acceptance of the order
CB verifies the order and identifies that orderline 1 is not available, the shop is notified with the operation notifyOrder and status event Cancelled
CB identifies that orderline 2 is available, the shop is notified with the operation notifyOrder and status event InProgress
The shop retrieves the order process status to see which orderline(s) are not available
CB prepares for logistic processing of orderline 2. The shop is notified with the operation notifyOrder and status event ProductionReady
CB executes pick and pack for orderline 2 and creates a shipment. The shop is notified with the operation notifyShipment and status event Processed
The shop can retrieve the shipment details (including tracking number and a list of products) per shipping unit and can inform the customer
Alternative Flow 7 – order during service window
The customer orders one or more products during the service window. Stock is available for all products.
Flow description:
The customer puts one or more products in the shopping basket
The shop forwards the order to CB with the operation placeOrder. The operation confirms receipt of the order during the service window
CB verifies the order, the shop is notified with the operation notifyOrder and status event InProgress
CB prepares for logistic processing of the order. The shop is notified with the operation notifyOrder and status event ProductionReady
The shop can retrieve the order process status with operation getOrderStatus to see which orderline(s) are ready for production and cannot be cancelled anymore
CB executes pick and pack for the order and creates a shipment. The shop is notified with the operation notifyShipment and status event Processed
The shop can retrieve the shipment details (including tracking number and a list of products) per shipping unit and can inform the customer
Alternative Flow 8 – cancel during service window
The customer orders one or more products, but decides to cancel the order during the service window.
Flow description:
The customer puts multiple products in the shopping basket
The shop forwards the order to CB with the operation placeOrder. The operation confirms acceptance of the order
CB verifies the order, the shop is notified with the operation notifyOrder and status event In Progress
The customer decides to cancel the order in the shop
The shop forwards the cancel request per orderline to CB with the operation cancelOrderLine. The operation confirms receipt of the cancellation request during the service window
CB confirms a successful cancellation of the order after the service window ended. The shop is notified with the operation notifyOrder and status event Cancelled
The shop confirms the cancellation to the customer
Volume, limits and performance requirements
Timing
Webservice requests are processed realtime, i.e. an order is registered immediately when the webservice call is executed. Order processing at CB is based on scheduled processes and not primarily triggered by the webservice request.
Responses to the requester are send in Near-Realtime (NRT) with an average delay of 2 to 3 minutes. The regular maximum delay is 5 minutes, in exceptions running up to 10 minutes. During this timeframe the orderstatus has reached a status that is not yet reported to the requestor.
Volume
Webservice requests are limited to a maximum of 10 requests per service per second per requestor.
Performance
The media webservices comply with the generic CB webservice performance requirements:
Average response time within 2 seconds during prime-time (08:00-01:00 CET)
Response within 3 seconds for 99,95% of the requests during prime-time
Response within 6 seconds for 99% of the requests outside prime-time
Order simulation for test purpose
In order to test the web service independently as much as possible, a test order based on a few characteristics, that the customer provides, must be processed fully automatically. The functionality described here is available on CB's test environment, but not on the production environment.
Operation of order simulation web service MediaOrderB2C
The order simulation functionality is built into the order handling and processing.
Simulation characteristic
An order is included in the order simulation on the basis of a test characteristic in the order. The attribute identifier is:
Test attribute is: $CB*TST
The attribute is 7 positions long. The maximum length of command reference fields supported is 10 positions. The remaining 3 positions are reserved for additional command instructions.
The customer can specify this attribute in one of the two order reference fields:
BuyerReference
OwnerReference
The customer can choose which field is used for the characteristic. The other field remains available for the customer's reference. A customer who wants to use both order reference fields in production for his own references must, in order to apply the order simulation, choose which of the two fields is “sacrificed” for the characteristic.
Order Instructions
By default one ShippingUnitID is created for each order, independent of the number of order lines, ordered copies and dimensions of the items. We simulate that everything fits into one ShippingUnitID, which gives the customer a clear expectation of the result of the order. In practice, not everything fits in a ShippingUnitID, so the customer can indicate in the order how many ShippingUnitID's CB need to create.
Test characteristic addition for more than one ShippingUnitID
This is optional and is placed after the test attribute with: Cnn
Where nn stands for the number of ShippingUnitID's (2 to 99). For instance:
$CB*TSTC3 => Test feature + request for 3 ShippingUnitID's
$CB*TSTC05 => Test feature + request for 5 ShippingUnitID's
$CB*TSTC15 => Test feature + request for 15 ShippingUnitID's
The maximum number of ShippingUnitID's to be made is equal to the number of copies ordered (i.e. 1 copy per ShippingUnitID). If more ShippingUnitID's are requested than there are ordered copies in an order, a ShippingUnitID is created for each ordered copy. No error message or warning is given
Orderline instruction
By default, for each OrderLine, the number of copies ordered is also included in the ShippingUnitID as delivered. In practice, various scenarios are possible, as a result of which a different number of copies is delivered. The order simulation supports one scenario, a shortage ('manco') situation. The customer can indicate at the Orderline how many copies are reported missing.
Scenario 'Shortage' situation
This is optional and comes with the shortage attribute: $MANCO;n
The customer can specify this attribute in one of the two order reference fields at Orderline level:
BuyerReference
OwnerReference
Where n stands for the number of ShippingUnitID's (2 to 99). For instance:
$MANCO;1 => Request for 1 copy shortage with this order line
$MANCO;5 => Request for 5 copy shortage with this order line
The maximum number of shortages is the number of copies ordered. If more shortages are requested than there are ordered copies in a OrderLine, then 0 (null) copies delivered are reported. No error message or warning is given. No new OrderLine for the missing copies is created. The intended situation is to deliver less than requested. Backordering is not supported in order simulation.
Test articles
Articles available for test | ||||
ISBN | Titel | DiscountCode | ProductAvailability | Stock YES/NO |
---|---|---|---|---|
9789029511537 | MediaOrderB2C Title 1 | A | Reprint/Herdruk | NO |
9789029585071 | MediaOrderB2C Title 2 | A | Announced/Aangekondigd | NO |
9789063055998 | MediaOrderB2C Title 3 | O | Not available/Uitverkocht | NO |
9789045119731 | MediaOrderB2C Title 4 | S | In stock/Verschenen | YES |
9789045119755 | MediaOrderB2C Title 5 | A | In stock/Verschenen | YES |
9789025307349 | MediaOrderB2C Title 6 | A | In stock/Verschenen | YES |
9789025308339 | MediaOrderB2C Title 7 | A | In stock/Verschenen | YES |
9789025309640 | MediaOrderB2C Title 8 | A | In stock/Verschenen | YES |
9789025309954 | MediaOrderB2C Title 9 | A | In stock/Verschenen | YES |
9789029505598 | MediaOrderB2C Title 10 | A | In stock/Verschenen | YES |
9789029506182 | MediaOrderB2C Title 11 | A | In stock/Verschenen | YES |
9789029506335 | MediaOrderB2C Title 12 | A | In stock/Verschenen | YES |
9789029506885 | MediaOrderB2C Title 13 | A | In stock/Verschenen | YES |
ONIX file with Product records: Testarticles-ini-1van1_onx.xml |
Results for customer
The customer is informed almost immediately when the order status is changed. The diagram below shows which stages are defined and which web service operations are used to communicate or make information available to the customer.
Description:
The customer places one or more items in the shopping cart of a shop
The webshop submits the order to CB
CB checks the order and if accepted, CB sends an order notification with status event “In Progress”
CB reserves stock and releases the order (line) for logistics. The order line cannot be cancelled from that moment on. CB sends an order notification with status event “ProductionReady”
The webshop can retrieve the status of the order to see which order lines have been released
CB performs the order simulation and sends a shipment notification per shipment unit with status event “Processed”
The webhop can retrieve the details of each shipment unit and thus inform the customer.