# Template Manifest

## Template Manifest

{% tabs %}
{% tab title="Manifest Schema" %}

```javascript
{
  "bundleId": "<string>",
  "version": "<string>",
  "category": "<string>",
  "description": "<string>",
  "tags": "<string[]>",
  "template": {
    "name": "<string>",
    "displayName": "<string>",
    "defaultMessage": "<string>",
    "labels": "<string[]>",
    "icons": [
      {
        "size": "<number>",
        "url": "<string>",
        "name": "<string>",
        "type": "<string>",
        "contentId": "<string>"
      }
    ],
    "presentation": {
      "screenshots": "<string[]>",
      "cover": "<string>",
      "body": "<string>"
    },
    "plugins": "<string[]>",
    "branding": {
      "brandActivation": "<boolean>",
      "theming": "<boolean>",
      "defaultTheme": "<string>"
    },
    "screens": {
      "mobile": "<string>",
      "stage": "<string>"
    },
    "general": {
      "type": "<string>",
      "accessibility": "<string[]>",
      "hasModeration": "<boolean>",
      "isInteractive": "<boolean>",
      "isFeedContent": "<boolean>",
      "feedItemTitle": "<string>",
      "supportedLanguages": "<string[]>"
    },
    "provider": {
      "developer": "<string>",
      "org": "<string>",
      "support": "<string>"
    }
  }
}
```

{% endtab %}

{% tab title="manifest.json Example" %}

```javascript
{
  "bundleId": "com.stagecast.voting",
  "version": "1.2.1",
  "category": "crowd game",
  "description": "Create a poll and let your audience vote.",
  "tags": [
    "voting",
    "interaction"
  ],
  "template": {
    "name": "voting",
    "displayName": "Voting Moment",
    "defaultMessage": "",
    "labels": [
      "free",
      "basic"
    ],
    "icons": [
      {
        "size": 200,
        "url": "",
        "name": "voting.png",
        "type": "image/png",
        "contentId": ""
      }
    ],
    "presentation": {
      "screenshots": [],
      "cover": "",
      "body": "<h2>What the moment does</h2><p>A good old multiple choice voting - with instant result delivery!</p><h2>How to use the Moment at your event</h2><p>Use the Voting Moment to involve your audience in the outcome of the event! How about letting the audience vote for the favorite player of a match or what encore to perform after a concert?</p>"
    },
    "plugins": [
      "sponsors"
    ],
    "branding": {
      "brandActivation": true,
      "theming": true,
      "defaultTheme": ""
    },
    "screens": {
      "mobile": "mandatory",
      "stage": "optional"
    },
    "general": {
      "type": "html",
      "accessibility": [
        "stagecast app",
        "browser",
        "app integration"
      ],
      "hasModeration": false,
      "isInteractive": true,
      "isFeedContent": false,
      "feedItemTitle": "Voting",
      "supportedLanguages": [
        "en",
        "sv",
        "it"
      ]
    },
    "provider": {
      "developer": "Stagecast AB",
      "org": "Stagecast AB",
      "support": "support@stagecast.se"
    }
  }
}
```

{% endtab %}
{% endtabs %}

**Root Fields**:&#x20;

* **`bundleId`**: the unique template identifier. The suggested format is **`com.<org_name>.<moment_title>`** eg. **`com.stagecast.voting`**.&#x20;
* **`version`**: the current [semantic version](https://semver.org/) .
* **`category`**: the name of the category the template falls into. (currently available options:  `marketing`, `utils`, `crowd game`, `special effect` , if your moment doesn't fall into any of these categories, please propose one to our [support team](mailto:support@stagecast.se)).
* **`description`**: a brief description of the moment (no more than 140chars)
* **`tags`**: a list of tags that could make the search easier
* **`template`**: the template body

**Template fileds**:&#x20;

* **`name`**: the moment title in **`com.<org_name>.<moment_title>`**
* **`displayName`**: a nice name for smaller screens.&#x20;
* **`defaultMessage`**: the default message that will appear in the mobile push notifications. This default message can be disabled or overwritten by the event organizer;
* **`labels`**: a list of label to be applied to the template (eg. "free", "new" etc..)
* **`icons`**: the template icons as a list of objects in the following format&#x20;
  * size
  * url
  * name
  * type
  * contentId
* **`presentation`**&#x20;
  * **`screenshot`**: a list of screenshot that will be displayed in the moment description page&#x20;
  * **`cover`**: the template cover image for the description page
  * **`body`**: the html of the description page
* **`plugins`**: the list of supported plugins. Right now we only offer the **`sponsors`** and **`theming`** plugins
* **`branding`**:&#x20;
  * brandActivation:&#x20;
  * theming:&#x20;
  * defaultTheme: can be left empty&#x20;
* **`screens`**: the supported screen (**`mobile`**, **`results`**, **`moderation`**)
* **`general`**&#x20;
  * **`type`**: native or html. You are most likely implementing an **`html`** based moment, not a native one.
  * **`accessibility`**: where the moment runs.&#x20;
  * hasModeration:&#x20;
  * **`isInteractive`**: is it a full screen moment?
  * **`isFeedContent`**: is it a feed moment
  * **`feedItemTitle`**: only if it is a feed moment
  * **`supportedLanguages`**: the supported languages as a list of 2-char strings&#x20;
* **`provider`**&#x20;
  * **`developer`**: the developer name
  * **`org`**: the organization name
  * **`support`**: an email contact


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://dev-stagecast.gitbook.io/moments-sdk/documentation/bundling-and-deploying/template-manifest.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
