2.6 Example App Manifest

Below is an example manifest that illustrates how an application named pim could be set up. It includes:

  1. The <apps:section> with the application definition, interface endpoints, and dependencies.

  2. A large <datanest:section> enumerating entities for product management (e.g., product codes, categories, families, channels, assets, images, etc.).

<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>

</manifest>

When the Retailys core processes this manifest:

  • It reads <apps:section> to understand your application’s identity, version, and how to call your interface methods.

  • It forwards <datanest:section> to the Datanest module to set up (or update) the required entities and fields in the database.

Last updated