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.
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" |
userFurnitures | Furniture (with id and count) that user has configured with external configurator | Array | "userFurnitures": [{id: "27", count: 1}, {id: "14103", count: 1}, {id: "28", count: 1}] |