| Property | Type | Description | Notes | Required | Guide |
|---|---|---|---|---|---|
name | String | The name of App Design | An App Design can have many App Instances (Cards in Domo) - each App Instance has its own name. | Required | |
version | String | The version of your App Design. | Required | ||
size | Object | The size of your App. | Object with width and height properties defined on a scale of 1-6 | Required | |
fullpage | Boolean | Allows the app to be viewed in full page mode. | Optional | ||
datasetsMapping | List of Objects | A list of Datasets that the App Design uses. | Each object corresponds to one Dataset and should include an alias, dataSetId, and fields property. If the App Design doesn’t use Datasets, datasetsMapping can be an empty list [] | Required | |
collections | List of Objects | A list of AppDB collections that the App Design uses | Each object corresponds to one AppDB collection and should include a name, schema (optional), and syncEnabled property. If your App Design leverages AppDB collections, you’ll also need to setup a proxyId property in the manifest file. | Optional | AppDB API |
workflowMapping | List of Objects | A list of Workflows that the App Design uses. | Each object corresponds to one Workflow and should include an alias and parameters property. If your App Design leverages Workflows, you’ll also need to setup a proxyId property in the manifest file. | Optional | Hitting a Workflow from an App |
packageMapping | List of Objects | A list of Code Engine packages that the App Design uses. | Each object corresponds to one Code Engine package and should include an alias, parameters (if applicable), and output property. If your App Design leverages Code Engine packages, you’ll also need to setup a proxyId property in the manifest file. | Optional | Hitting Code Engine from an App |
ignore | List | Instructs the CLI to ignore certain files when publishing. | Accepts an array of glob patterns. | Optional | |
id | String | This is a unique identifier for your App Design. | It is added to the manifest automatically by the command line tool the first time you publish your design via domo publish. | Required | |
proxyId | String | This is an id of a card you want to impersonate. | It is required if you want to be able to develop locally against Domo Workflows, Code Engine, or AppDB. | Optional | Getting a proxyId |
Example Manifest
Here is an example demonstrating a complete manifest file.
id field is automatically added to the manifest by the domo command line tool the first time it is published via domo publish.
name
This is the name of the design as it will appear in Domo. This is the name that users will look for when creating a card that is based off of your design.
version
This is the current version of your design, and should follow semantic versioning guidelines.
MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes.Sometimes it can be helpful to display what version the app is running on. Since the version can be changed between building and deploying it’s better to get the version this way:
size
The size of the app cannot be defined in pixels. It can only be defined in Domo card sizes. To better understand how card sizing relates to pixels, see the chart below:
Card Size | Width (px) | Height (px) |
6 | 1400 | 1700 |
5 | 1165 | 1410 |
4 | 930 | 1120 |
3 | 695 | 830 |
2 | 460 | 540 |
1 | 225 | 250 |
0.5 | NA | 105 |
fullpage
The
fullpage property consists of a boolean value that can allow the app to be viewed in full page mode.
If you want you to build your app so that it is responsive, you can enable the fullpage property in your manifest file. When this property is enabled the iFrame that contains the Custom App will resize as the browser window size changes. This resizing is for the card Details view. You as a developer will need to respond to the resizing events and adjust your app’s presentation accordingly. Custom Apps that do not have the fullpage property set to ‘true’ will have the iFrame size remain constant. The fullpage property retains the Domo header, navigation, and card action options. In addition, any information displayed in the footer is available by scrolling to the bottom of the Custom App.
The fullpage property consists of a boolean value.
id
This is a unique identifier for your design. It is added to the manifest automatically by the command line tool the first time you publish your design via
domo publish.
ignore
This optional property instructs the CLI to ignore certain files when publishing. It accepts an array of glob patterns. Examples:
["*.css"] would ignore all CSS files.
["src/**/*", "sample/**/*"] would ignore everything in src/ and sample/ directories.
If your app contains a node_modules directory that will be ignored as well.
datasetsMapping
The
datasetsMapping property consists of a list of DataSet mappings that the design uses. Each DataSet mapping object has the following format.
- alias
- dataSetId
- fields
alias
The DataSet alias is the name that is used to refer to this DataSet. Since users can wire up their app to any DataSet they choose, an alias is needed for the design to refer to the DataSet. This alias is used by the design to request data using HTTP GET requests.sales, it may make a request like this.
dataSetId
This is the unique id representing the DataSet that is used to provide data to this alias. This id can be obtained by viewing the DataSet in Domo and looking at the url.fields
This property contains information about what fields are included in responses when a DataSet is requested. More specific information about thefields property is contained in the Field Mapping section below.
Field Mapping
Thefields property of a DataSet mapping may contain a list of fields, or columns, from the DataSet that the app uses.
A field object looks like this.
- alias
- columnName
field property is empty and does not contain any field objects, then all columns from the DataSet will be returned when the DataSet requests data. Since no field aliases are defined in this case, the original column names are used to index the data.
alias
This is the name used to refer to a specific column in a DataSet. When data is requested, it is returned in the following array-of-objects format.first, last, and age are the aliases that were defined in the manifest for the design that requested this data.
This allows the design to easily access the data by name like this.
fields property in a DataSet mapping is left empty (i.e. no field objects are defined), then the original column names from the DataSet will be used in place of the field alias.
columnName
This is the actual name of the column in the DataSet that the field alias gets mapped to.Getting a proxyId (Advanced)
Apps using DQL, writeback, or oAuth features are required to supply an proxyId as part of the proxy configuration. This includes use of AppDB, Workflows, and Code Engine. The
proxyId allows the proxy to know how to properly route requests. The proxyId can be found as part of the URL for the iframe in which your app is displayed. It will be of the form XXXXXXXX-XXXX-4XXX-XXXX-XXXXXXXXXXXX. To find the ID:
- Make sure the app has been published at least once with Domo Publish
- Publish a new card based on your app design, or navigate to an existing card made from your app design
- Right-click anywhere in the card and choose “Inspect element”
- Find the <iframe>that contains your app’s code. The URL should be of the form //.domoapps.prodX.domo.com?userId=…
- Copy the ID found between //and .domoapps. That is your app’s proxyId proxyIds tie apps to cards. If you delete the card from which you retrieved the proxyId, you will have to get a new one from another card created from your app design.
- Add proxyId=”XXXXXXXX-XXXX-4XXX-XXXX-XXXXXXXXXXXX” to your manifest after your designId.