Skip to main content
Version: Released

Integrate with Ordering System

This section explain how to integrate the ordering system of the Home 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.

 

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 home project is finalized, saved and the consumer is ready to order and pay. The project needs to be transferred to the home 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 home and its scene including furnitures.

Two main objects are contained in metadata:
appdata - home applicative data: contains all information related to the data of the home project such as Bill of Material
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.

Home Applicative Data

Sample of appdata section:

"bom": 
{
[
{
(see "Bill of Material Reference" in "Developers Guide" section)
}
]
}

Refer to Bill of Material Reference.

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.

AttributeDescriptionData TypeExample
areaFloorArea of the floorNumber"areaFloor": 15.99
areaWallArea of the wallNumber"areaWall": 40
areaWallOutsideOutside area of the wallNumber"computedHeight": 44.72
exteriorsExterior objects in the projectObject"exteriors":
idId of the levelString"id": "CA65F1AA-C9FE-4B0D-BD79-D5CE12B6882F"
materialsMaterials (with id and area) used in the levelArray"materials": [{id: "4751", area: 44.72}]
nameName of the levelString"name": "HBMLevel-0"
nbFurnituresNumber of furniture in the levelNumber"nbFurnitures": 3
nbRealRoomsNumber of real rooms (closed) in the levelNumber"nbRealRooms": 1
nbRoomsNumber of rooms (closed/opened) in the levelNumber"nbRooms": 1
roomsParameters of the room described in the table below.Array"rooms" : [{name: "Room 1", areaFloor: 15.99, …}]
roomsTypeType of the roomArray"roomsType": [{id:"12", count:1}]
signedIndexIndex signed of the levelNumber"signedIndex": 0
Room parameters

The attributes below are used to describe a room in a level.

AttributeDescriptionData TypeExample
areaFloorArea of the floorNumber"areaFloor": 15.99
areaWallArea of the wallNumber"areaWall": 40
furnituresFurniture (with id and count) present in the roomArray"furnitures": [{id: "27", count: 1}, {id: "14103", count: 1}, {id: "28", count: 1}]
idId of the roomString"id": "CA65F1AA-C9FE-4B0D-BD79-D5CE12B6882F"
isRealRoomRoom whether it is closed or notBoolean"isRealRoom": true
materialsId 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}]}
nameName of the roomString"name": "Room 1"
nbFurnituresNumber of furniture in the roomNumber"nbFurniture": 3
typeIDId type of the roomString"typeID": "12"
userFurnituresFurniture (with id and count) that user has configured with external configuratorArray"userFurnitures": [{id: "27", count: 1}, {id: "14103", count: 1}, {id: "28", count: 1}]