Manifests

As part of the publishing process, rsconnect and rsconnect-python inspect your project environment and capture the information Connect needs to reconstruct it in a file called manifest.json. You can also generate manifest.json files by calling rsconnect::writeManifest() or rsconnect write manifest for use with git-backed deployment or for debugging.

manifest.json schema

version

The manifest schema version.

Type: integer

Allowed values: 1

locale

The locale of the client.

Type: string

platform

The client version of R, e.g., 4.4.2.

Type: string

metadata

Properties of the deployment.

appmode

Application framework.

Type: string

Allowed values:

  • api (plumber)
  • jupyter-static
  • jupyter-voila
  • jupyter
  • python-api (flask1)
  • python-bokeh
  • python-dash
  • python-fastapi2
  • python-gradio
  • python-shiny
  • python-streamlit
  • quarto-shiny
  • quarto-static
  • quarto
  • rmd-static
  • shiny
  • static
  • tensorflow-saved-model

content_category

Additional details for select app modes.

Type: string

Allowed values:

  • plot
  • site
  • pin

primary_rmd

Default document for R Markdown deployments.

Type: string

primary_html

Default document for static deployments.

Type: string

has_parameters

Allow R Markdown document parameter customization. Other types of R Markdown documents (Shiny, sites) may include a parameter definition in their YAML front matter, but customization of their parameters is not supported by Connect.

Type: boolean

entrypoint

The file that should treated as the content root.

For some Python frameworks, you can supply an optional module parameter. See understanding entrypoints for more details.

Type: string

python

Information about the client-side Python version and package manager details.

version

The client version of Python.

Type: string

package_manager

The package manager used by the client.

name

The name of the package manager in use.

Type: string

Allowed values: pip

version

The package manager version.

Type: string

package_file

The name of the file enumerating package dependencies.

Type: string

allow_uv

Permit the server to use uv to reconstruct the package environment.

Type: boolean

jupyter

Information about NBConvert options during notebook rendering.

hide_all_input

Direct NBConvert to hide code cells when rendering the output.

Type: boolean

hide_tagged_input

Direct NBConvert to hide the input of cells tagged with “hide_input”.

Type: boolean

quarto

Information about the client-side quarto version and engine.

version

The client Quarto version.

Type: string

engines

A list of of rendering engines

Type: string[]

Allowed values: ["knitr", "jupyter", "markdown"]

packages

An object where each key is an R package name and each value contains package metadata including source repository information and the package DESCRIPTION.

Type: object

environment

Information about the execution environment.

identifier

A GUID for a valid execution environment to use during build/execution.

Type: string

image

The name of an image to use during content build/execution, such as registry.example.com/sample/connect-content:latest.

Type: string

python

Python runtime settings.

requires

A PEP 440-style version string specifying Python version the server can match to execute the content.

Type: string

quarto

Quarto runtime settings.

requires

A PEP 440-style version string specifying Python version the server can match to execute the content.

Type: string

r

R runtime settings.

requires

A PEP 440-style version string specifying R version the server can match to execute the content.

Type: string

environment_management

Settings that determine whether Connect is responsible for environment reconstruction.

python

Whether Connect should perform a Python environment restore.

Connect will ignore the value in the manifest if Applications.ManifestEnvironmentManagementSelection is false. If no value is provided, Connect’s behavior is controlled by Python.EnvironmentManagement.

Type: boolean

r

Whether Connect should perform an R environment restore.

Connect will ignore the value in the manifest if Applications.ManifestEnvironmentManagementSelection is false.

If no value is provided, Connect’s behavior is controlled by R.EnvironmentManagement.

Type: boolean

extension

Metadata for applications for the Connect Gallery.

name

The extension name.

Type: string

title

The extension title.

Type: string

description

A brief description of what the extenion does.

Type: string

homepage

A link to a page with more details about the extension.

Type: string

category

Metadata for categorizing the extension in the Gallery UI.

Type: string

tags

Metadata for categorizing the extension in the Gallery UI.

Type: string

minimumConnectVersion

The minimum Connect version required for the extension. Versions of Connect before 2025.04.0 do not have Gallery support.

Type: string

version

A version for the extension.

Type: string

files

An object where each key is a filename and each value contains metadata about that file, such as the MD5 checksum.

Type: object

users

Set by some clients for compatibility with older Connect servers.

Default: null

Allowed values: null

integration_requests

Array of OAuth integration descriptors to automatically match to existing integrations on the server and associate them with content upon deployment.

Connect processes these OAuth integration requests during content deployment. The specified integrations are matched to integrations available on the Connect server. If a matching integration is found, it will be used for the deployment. If no matching integration is found, the deployment fails with an error message indicating that the integration request could not be satisfied.

These fields can be used within an integration request to reference the desired OAuth integration:

Field Description Matching Type Example
name String identifier for the integration regex match "my-integration"
description Description of the integration regex match "My Azure Integration"
type Integration type exact match "azure"
guid Unique identifier for the integration exact match "123e4567-e89b-12d3-a456-426614174000"
auth_type Authentication type exact match "Viewer"
config Configuration settings for the integration key-value match "{"auth_mode": "Confidential"}"
Note

A “regex match” means that the specified value is treated as a regular expression pattern matched against the corresponding field. For example, if you specify "name": "Azure - ", it will match any integration with a name that contains "Azure - ", such as "Azure - prod", "Azure - dev", etc. This provides flexibility when targeting integrations across different environments where exact names might differ but follow a consistent pattern.

Possible values for type include:

  • azure
  • azure-openai
  • sharepoint
  • msgraph
  • bigquery
  • drive
  • sheets
  • vertex-ai
  • databricks
  • github
  • salesforce
  • snowflake
  • connect
  • aws
  • custom

Possible values for auth_type include:

  • Viewer
  • Service Account
  • Visitor API Key

An integration request can contain any combination of the fields listed above, and the correct combination will vary by situation.

Examples

Using the integration guid

If the content will only ever be deployed to a single server, the easiest way to make sure the correct OAuth integration gets automatically associated is by listing the OAuth integration guid in the integration request:


    // ...
    "integration_requests": [
        {"guid": "123e4567-e89b-12d3-a456-426614174000"}
    ]
    // ...
}

A Connect administrator can locate the guid for an OAuth integration by navigating to System > Integrations within Connect and then clicking on the desired integration. The guid is listed directly beneath the integration name in the resulting popup.

Using the exact integration name

Because the name field uses a regex match type, you might get unexpected results when trying to match an exact integration by name. To get an exact match on the integration name, use the following regex syntax:

{
    // ...
    "integration_requests": [
        {"name": "^my-integration$"}
    ]
    // ...
}
Using the name, auth_type, and config

Specifying multiple fields provides more precise targeting of integrations, especially when you need to distinguish between integrations that might have similar names but different configurations.

{
  // ...
  "integration_requests": [
    {
      "name": "custom-integration",
      "auth_type": "Viewer",
      "config": {
        "auth_mode": "Confidential"
      }
    }
  ]
  // ...
}

In this example, only an integration that matches all three criteria will be associated with the content.

Multiple integration requests

You can list multiple integration requests in the manifest, and they all will be associated with the content upon deployment.

{
    // ...
    "integration_requests": [
        {"name": "my-integration", "type": "azure"},
        {"name": "another-integration", "type": "aws"}
    ]
    // ...
}

Deployment

To use integration requests, you need to use a deployment method that respects an existing manifest.json file. The recommended approach is to use rsconnect deploy manifest. See the rsconnect-python docs for more information on this deployment method.

Notes:

  • rsconnect-python version 1.27.0+ is required
  • The R package rsconnect does not currently contain a deployment method that uses an existing manifest.json file.

Footnotes

  1. Other WSGI-compliant application frameworks may be served via this app mode.↩︎

  2. Other ASGI-compliant application frameworks may be served via this app mode. See other ASGI frameworks for more information.↩︎