3.4 Full Example Manifest
Below is a more complete example that demonstrates multiple routes, nested routes, multiple canvases, controls, and a dataset with bridging entities:
<manifest xmlns="https://blueprint.retailys.com/blueprint.xsd">
<apps:section xmlns:apps="https://blueprint.retailys.com/blueprint.xsd">
<app id="pim" version="1.0" coreVersion="0.1">
<about>
<label>PIM (Product Information Management)</label>
<desc>Application for rich product data management.</desc>
<author>Retailys</author>
<url>https://pim.retailys.com</url>
<phone>+420123456789</phone>
<email>[email protected]</email>
</about>
<dependencies>
<apps>
<depends on="datanest" version="0.1"/>
<depends on="dashboard" version="0.1"/>
</apps>
</dependencies>
<interface base="https://pim.retailys.com" type="openapi">
<security>
<oauth2/>
</security>
<methods>
<ping url="/api/ping"/>
<enroll url="/api/enroll"/>
<remove url="/api/remove"/>
<section url="/api/section"/>
<response url="/api/response"/>
<alert url="/api/alert"/>
</methods>
</interface>
</app>
<gateway type="openapi" format="yaml" source="/openapi.yaml"/>
<section type="xsd" format="xml" source="/section.xsd"/>
</apps:section>
<datanest:section xmlns:datanest="https://blueprint.retailys.com/blueprint.xsd">
<entities>
<entity name="product" permissionable="true">
<label>Product</label>
<record>
<field name="name" type="string" required="true"
default="New product">
<label>Product Name</label>
</field>
<field name="sku" type="string">
<label>SKU (Primary Code)</label>
</field>
<field name="weight" type="number">
<label>Weight (kg)</label>
</field>
<field name="category" type="select" related="category">
<label>Category</label>
</field>
</record>
</entity>
<entity name="category" permissionable="true">
<label>Product Category</label>
<record>
<field name="name" type="string" required="true"
default="New category"/>
<field name="parent" type="select" related="category"/>
</record>
</entity>
</entities>
</datanest:section>
<dashboard:section xmlns:dashboard="https://blueprint.retailys.com/blueprint.xsd">
<icon type="svg" source="/icon.svg"/>
<routes>
<route name="products" node="menu" canvas="productsList">
<label>Products</label>
</route>
<route name="categories" node="menu" canvas="categoriesList">
<label>Product Categories</label>
</route>
</routes>
<canvases>
<canvas name="productsList">
<label>Product List</label>
<controls>
<tablegrid name="productsGrid" dataset="productsList"
width="1/1">
<label>Product Table</label>
</tablegrid>
</controls>
</canvas>
<canvas name="categoriesList">
<label>Product Categories</label>
<controls>
<tablegrid name="categoriesGrid" dataset="categoriesList"
width="1/1">
<label>Category Table</label>
</tablegrid>
</controls>
</canvas>
</canvases>
<datasets>
<dataset name="productsList">
<resources>
<resource from="product" resourceType="entity" as="product"/>
</resources>
<record>
<field name="name" resource="product.name"/>
<field name="sku" resource="product.sku"/>
<field name="weight" resource="product.weight"/>
<field name="category" resource="product.category.name"/>
</record>
</dataset>
<dataset name="categoriesList">
<resources>
<resource from="category" resourceType="entity" as="category"/>
</resources>
<record>
<field name="name" resource="category.name"/>
<field name="parent" resource="category.parent.name"/>
<field name="productCount" resource="count(category.product)"/>
</record>
</dataset>
</datasets>
</dashboard:section>
</manifest>
The
<dashboard:section>includes everything the Dashboard needs to set up your application:Routes:
Routes “products” ->
productsListand “categories” ->categoriesList
Canvases:
productsListwith a tablegridcategoriesListwith a tablegrid
Datasets:
productsList, pulling from aproductresource / entitycategoriesList, referencingcategories
Last updated