1.9.1 Application Manifest

A manifest is an XML file that describes the application and contains configuration sections:

  • Example (product management simplified - product and category 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>
    
  • apps:section: The section where you define the application’s identity, version, interface endpoints for communicating with the core, plus (optionally) any public API endpoints to be exposed by the gateway.

  • datanest:section: A section used to define entities and fields so that Datanest can store them.

  • dashboard:section: A section used to define how your application’s data will appear in the Retailys Dashboard (routes, canvases, controls).

Manifest Blueprint:

  • An official XSD that outlines the overall structure (the <manifest> element, etc.) plus optional sections.

  • The core (Apps) combines partial blueprint definitions (exposed by various applications) into a final blueprint (XSD).

Last updated