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” -> productsList and “categories” -> categoriesList

    • Canvases:

      • productsList with a tablegrid

      • categoriesList with a tablegrid

    • Datasets:

      • productsList, pulling from a product resource / entity

      • categoriesList, referencing categories

Last updated