Creating the Manifest File¶
This topic describes how to create the manifest file for an application package.
About the Manifest File¶
The Snowflake Native App Framework requires that every application package contains a manifest file. This file defines properties required by the application package, including the location of the setup script and version definitions.
The manifest file has the following requirements:
The name of the manifest file must be
The manifest file must be uploaded to a named stage so that it is accessible when creating an application package or Snowflake Native App.
The manifest file must exist at the root of the directory structure on the named stage.
Manifest File Reference¶
The following are the valid properties that the
manifest.yml file can contain:
Specifies the version of the manifest file.
Defines a block containing parameters related to a version.
Specifies the logical name of the version. This name is used in SQL commands that manage versions.
Specifies a name for the version that is displayed to consumers.
Specifies a comment for the version. This comment is only visible when the provider runs the SHOW VERSIONS command.
Defines a block related to resources that are distributed from this version of the package.
Specifies a path to a readme file that provides an overview of the Snowflake Native App in markdown format. In the case of a Streamlit app, if no value is specified for the
default_streamlitproperty, the contents of this file is displayed to consumers when viewing the installed Snowflake Native App.
The location of this file is specified relative to the location of the
Specifies the path and filename of the SQL script that is run when the Snowflake Native App is installed. If you do not specify a value, the default value is
setup.sqlin the same directory as the
If the Snowflake Native App includes a Streamlit app, this property specifies the schema and name of the default Streamlit app available to consumers.
Required if the Snowflake Native App includes a Streamlit app. Optional, otherwise.
Specifies if the Snowflake Native App can run UDFs and stored procedures. The default value of this property is
Specifies a block containing configuration properties for the Snowflake Native App.
Specifies the logging level to use for the installed Snowflake Native App. Refer to Setting Log Level for information on supported values for this property.
Specifies the trace event level to use for the installed Snowflake Native App. When a provider enables tracing, a Snowflake Native App automatically captures the start and end times for all queries and stored procedure calls.
Publishing a Snowflake Native App with the
trace_levelproperty set to a value other than
OFFmight expose calls to hidden stored procedures to any user in the consumer account who can view the event table.
See Setting Trace Level for the supported values of the
Defines a block containing the privileges that the consumer must grant when the Snowflake Native App is installed.
Default: an empty list
- <privilege name>:
Specifies the name of the privilege.
Provides a description of the privilege being requested. The text specified in
descriptionis displayed to the consumer when the privilege is displayed in Snowsight using the Python Permission SDK.
You should provide as much information possible about why the Snowflake Native App needs this privilege and if the privilege is required or optional.
Defines a block containing the references defined by the provider. The consumer must bind these references to objects within their account.
- - <reference name>:
Specifies the name of the reference.
Provides a description of the reference that the consumer can view when the Snowflake Native App is installed.
Specifies the privileges required by the reference.
Specifies the type of object associated with the reference, for example, an a schema and table, or an API integration.
Specifies that more than one object is associated with the reference.
Specifies the name of the callback function used to call the reference.
Manifest File Example¶
The following example shows a typical manifest file with values specified for all supported properties:
manifest_version: 1 # required version: name: hello_snowflake label: "v1.0" comment: "The first version of a Snowflake Native App" artifacts: readme: readme.md setup_script: scripts/setup.sql default_streamlit: streamlit/ux_schema.homepage_streamlit extension_code: true configuration: log_level: debug trace_level: always privileges: - EXECUTE TASK: description: "Run ingestion tasks for replicating Redshift data" - EXECUTE MANAGED TASK: description: "To run serverless ingestion tasks for replicating Redshift data" - CREATE WAREHOUSE: description: "To create warehouses for executing tasks" - MANAGE WAREHOUSES: description: "To manage warehouses for optimizing the efficiency of your accounts" - CREATE DATABASE: description: "To create sink databases for replicating Redshift data" - IMPORTED PRIVILEGES ON SNOWFLAKE DB: description: "To access account_usage views" references: - enrichment_table: label: "Enrichment Table" description: "Select table with audience data to enrich with Ramp IDs" privileges: - SELECT - INSERT - UPDATE object_type: Table multi_valued: true register_callback: config.register_reference