{"endpoints":{"\/building-types":{"GET":{"description":"Returns a list of all building types","response":{"statusCode":200,"body":"[ { id: int, displayName: string, availableSizeIds: int[] } ]"}}},"\/sizes":{"GET":{"description":"Returns a list of all sizes","response":{"statusCode":200,"body":"[ { id: int, displayName: string } ]"}}},"\/building-details\/:buildingId\/:sizeId":{"GET":{"description":"Returns the details of a specified building\/size combination","response":{"statusCode":200,"body":"{ baseCost: int, includedFeatures: FeatureDetails[] , optionalFeatures: FeatureDetails[] }"},"typeDefinitions":{"FeatureDetails":"{ featureId: int, displayName: string, infoText: string, cost: int }"}}},"\/saved-configs\/:basketId":{"GET":{"description":"Returns a list of the saved building configs for the given basketId","response":{"statusCode":200,"body":"{ id: int, configs: ConfigData[] }"},"typeDefinitions":{"ConfigData":"{ id: int, sizeId: int, buildingTypeId: int, selectedFeatureIds: int[] }"}},"DELETE":{"description":"Deletes the saved configs basket with the given basketId","response":{"statusCode":204,"body":null}}},"\/saved-configs":{"POST":{"description":"Creates or updates a saved configs basket with the given basketId. If \u0027id\u0027 property is missing, a new saved basket will be created, otherwise the SavedBasket entity with the given id will be updated. For each ConfigData object, if an \u0027id\u0027 is included but details have changed, the existing BuildingConfig entity will be updated. The new shape of the basket is applied in its entirety - any BuildingConfigs that are present in the database but not in the configs array will be deleted from the basket.","request":"{ id?: int, configs: ConfigPostData[] }","response":{"statusCode":201,"body":"[ savedBasketId: int ]"},"typeDefinitions":{"ConfigPostData":"{ id?: int, sizeId: int, buildingTypeId: int, selectedFeatureIds: int[] }"}}}}}