Integrate with Ordering System
This section explain how to integrate the ordering system of the Kitchen Retailer. It focuses on what's happen when the consumer's project is finalized, saved and ready to order. The scenario presented is the integration with an in-store ordering system operated by the salesperson. This section does not address the online buying scenario which is described here Online Buying.
Ordering System integration
In this scenario, the consumer visits the store and works with the salesperson to mature his project. At the end of the session, the kitchen project is finalized, saved and the consumer is ready to order and pay. The project needs to be transferred to the kitchen retailer ordering system to proceed with ordering, payment and delivery. The integration between the ByMe platform and the ordering system can be provided by a software used by the salesperson. Using this software, the salesperson retrieves the project from its ID or select one project of the consumer, and then sends it to the ordering system. The software extracts the selected project from the ByMe platform with the product list and transmits it to the ordering system in the proper format. Once in the ordering system, the salesperson can ask the consumer to pay and then arrange for delivery.
Integration software is implemented using the following API.
▪ Retrieve a project from its ID : GET/projects/{projectUUID}.
▪ Retrieve user's projects : GET/projects/user/{userID}. This API provides basic filtering capabilities by date, name and lock status.
▪ Get the project metadata including the list of products : GET/projects/{ID}/metadata/{applicationID}. Project metadata is described below.
▪ Manipulate the project's lock state : PUT/actions/projects/{id}/lock}, PUT/actions/projects/{id}/unlock}.
Project Metadata
The project's metadata is generated when the project is saved from the planner. It is stored in the ByMe platform associated to the project. Project's metadata can be accessed by web services API GET/projects/{ID}/metadata/{applicationID}. It is not needed to open the project in the planner to retrieve the metadata.
Metadata project contains a set of data that describes and gives information about the kitchen and its scene including cabinets.
Two main objects are contained in metadata:
▪ appdata - kitchen applicative data: contains all information related to the data of the kitchen project such as Bill of Material, manufacturing exports (worktop, wall panel, wall edge strip) as well as information about templates and manual notes.
▪ core - core, levels and rooms: contains project geometry data such as room data, walls, and number of furniture.
The sections below give details for those objects.
Kitchen applicative data
Sample of appdata section
"bom": {
[
{
(see "Bill of Material Reference" in "Developers Guide" section)
},
...
]
},
"exportWallEdgeStrip": {
[
{
(see "Manufacturing Information" in "Developers Guide" section)
},
...
]
},
"exportWallPanel": {
[
{
(see "Manufacturing Information" in "Developers Guide" section)
},
...
]
},
"exportWorktop": {
[
{
(see "Manufacturing Information" in "Developers Guide" section)
},
...
]
},
"layoutChooseByUser": string – Template chosen by the user (in step 2),
"manualNotes": string – Manual notes contained in the project,
"nbSolutionPerTemplate": object – Number of solutions per template,
"version": number – Version of the linked application,
Refer to Bill of Material Reference and Manufacturing Information.
Core, Levels and Rooms
Sample of core section
"levels": [
{
(see "Level parameters and structure")
},
...
],
"name": string – Name of the project,
"outsideFurnitures": [] Array - Furniture outside the room,
"totalAreaFloor": number – Total area of the floor,
"totalAreaWall": number – Total area of the walls,
"totalAreaWallOutside": number – Total outside area of the walls,
"totalNbFloors": number – Number of floor in the project,
"totalNbFurnitures": number – Number of furniture in the project,
"totalNbRealRooms": number – Number of real rooms (closed/not closed) in the project,
"totalNbRooms": number – Number of rooms in the project
Level parameters and structure
The attributes below are used to describe a level.
Attribute | Description | Data Type | Example |
---|---|---|---|
areaFloor | Area of the floor | Number | "areaFloor": 15.99 |
areaWall | Area of the wall | Number | "areaWall": 40 |
areaWallOutside | Outside area of the wall | Number | "computedHeight": 44.72 |
exteriors | Exterior objects in the project | Object | "exteriors": {} |
id | Id of the level | String | "id": "CA65F1AA-C9FE-4B0D-BD79-D5CE12B6882F" |
materials | Materials (with id and area) used in the level | Array | "materials": [{id: "4751", area: 44.72}] |
name | Name of the level | String | "name": "HBMLevel-0" |
nbFurnitures | Number of furniture in the level | Number | "nbFurnitures": 3 |
nbRealRooms | Number of real rooms (closed) in the level | Number | "nbRealRooms": 1 |
nbRooms | Number of rooms (closed/opened) in the level | Number | "nbRooms": 1 |
rooms | Parameters of the room described in the table below. | Array | "rooms" : [{name: "Room 1", areaFloor: 15.99, …}] |
roomsType | Type of the room | Array | "roomsType": [{id:"12", count:1}] |
signedIndex | Index signed of the level | Number | "signedIndex": 0 |
Room parameters
The attributes below are used to describe a room in a level.
Attribute | Description | Data Type | Example |
---|---|---|---|
areaFloor | Area of the floor | Number | "areaFloor": 15.99 |
areaWall | Area of the wall | Number | "areaWall": 40 |
furnitures | Furniture (with id and count) present in the room | Array | "furnitures": [{id: "27", count: 1}, {id: "14103", count: 1}, {id: "28", count: 1}] |
id | Id of the room | String | "id": "CA65F1AA-C9FE-4B0D-BD79-D5CE12B6882F" |
isRealRoom | Room whether it is closed or not | Boolean | "isRealRoom": true |
materials | Id and area of each material used in the room (for floor and wall) | Array | "materials": {floor: [{id: "4296", area: 15.99999951171875}], wall: [{id: "4751", area: 40}]} |
name | Name of the room | String | "name": "Room 1" |
nbFurnitures | Number of furniture in the room | Number | "nbFurniture": 3 |
typeID | Id type of the room | String | "typeID": "12" |