Dash Enterprise features a command line interface (CLI) that allows you to perform some app management actions from the command line.
The CLI commands that you can run, as well as the output of some commands, are determined by your roles and app ownership on Dash Enterprise. Your permissions correspond to the
same as those applied when performing actions in the Dash Enterprise App Manager UI. To review the permissions that each role grants, go to Roles and Permissions.
The Dash Enterprise CLI notably simplifies app deployment, but also allows you to list, initialize, and update apps—among other actions—without opening the App Manager.
App deployment using the CLI is based on Git and is available regardless of how your administrator has configured authentication for Dash Enterprise. It uses HTTPS, so there is no need to set up SSH keys.
Before you install the Dash Enterprise CLI, make sure you have the following:
* Python:
* Supported: 3.6 - 3.12
* Recommended: 3.8 - 3.12
* Git (required for app deployment)
In Dash Enterprise Workspaces, these prerequisites are already met.
The Dash Enterprise CLI is available with the de-client package, which is included in dash-enterprise-libraries.
To begin using the CLI from your workstation, install the latest version with:
pip install dash-enterprise-libraries --extra-index-url <a href="https://<your-dash-enterprise-server>/packages">https://<your-dash-enterprise-server>/packages</a>
This also installs the latest versions of the following Dash Enterprise libraries: * Snapshot Engine * Dash Design Kit * Dash Enterprise Auth * Dash Embedded * Dash Notes * Dash User Analytics
If you have Python 3.6 or 3.7, the latest version of the Dash Enterprise CLI (de-client) that you can install is v1.2.5. We recommend upgrading to Python 3.8 or higher to use more recent versions.
You can use the CLI from any directory in the environment that you install it in. Note that no new files are added to the directory in which you install it.
The Dash Enterprise CLI and the libraries above come preinstalled in Dash Enterprise Workspaces.
Plotly releases new versions of the CLI that add and improve functionalities. You don’t need to wait for your administrator to upgrade Dash Enterprise in order to update the CLI.
Check your CLI version with:
de --version
The output is similar to:
de_client, version 1.8.0
Update the CLI by running:
pip install dash-enterprise-libraries --upgrade --upgrade-strategy eager --extra-index-url <a href="https://<your-dash-enterprise-server>/packages">https://<your-dash-enterprise-server>/packages</a>
--upgrade-strategy eager ensures that all dependencies of dash-enterprise-libraries are upgraded, including de-client.
If you have Python 3.6 or 3.7, the latest version of the Dash Enterprise CLI (de-client) that you can update to is v1.2.5. We recommend upgrading to Python 3.8 or higher to use more recent versions.
The entry point to the CLI is
de
The output is similar to
___ _ ___ _ _
| \ __ _ __| |_ | __|_ _| |_ ___ _ _ _ __ _ _(_)___ ___
| |) / _` (_-< ' \ | _|| ' \ _/ -_) '_| '_ \ '_| (_-</ -_)
|___/\__,_/__/_||_| |___|_||_\__\___|_| | .__/_| |_/__/\___|
|_|
Usage: de [OPTIONS] COMMAND [ARGS]
Get started by logging into Dash Enterprise. You'll need the hostname of
your instance, which is the URL that you go to in your browser to access
Dash Enterprise minus 'https,' like dash.example.com.
To log in:
$ de --host <HOSTNAME> login
Options:
--host TEXT Required if logging in for the first time
--keyfile TEXT Default: ~/.dash_enterprise/credentials.json
--token TEXT Encrypted keycloak token
--no-keyfile Use $DASH_ENTERPRISE_USERNAME and $DASH_ENTERPRISE_PASSWORD
for authentication. Only supports native Keycloak accounts.
--ca-path TEXT Path on disk to the root certificate for the signing
authority, if your DE instance uses internally-signed
certificates. This may be a `.pem` file. Alternatively, set
the $DASH_ENTERPRISE_CA_PATH environment variable.
--version Show the version and exit.
-h, --help Show this message and exit.
Commands:
apps Commands related to app management.
data-sources Commands related to data source management.
deploy Deploy an app at a given path.
docs Open docs in browser.
login Log in to Dash Enterprise.
logout Log out from Dash Enterprise.
run Start a Dash development server for a given app.
services Commands related to service management.
whoami Get information on the current logged-in user.
workspaces Commands related to workspace management.
Running CLI commands calls the Dash Enterprise Platform API. The Dash Enterprise Platform API is protected, and you can only call it if you are authorized. The authorization server is Keycloak. Over OAuth/Open ID Connect (OIDC), the CLI requests access and offline tokens from Keycloak for authorization. The access token lifespan is defined by the access token and offline token settings that your administrator has configured in Keycloak. By default, access tokens are valid for 24 hours and refreshed for 30 days.
There are two ways to log in to the CLI: via a browser-based flow, or by providing a username and password.
We recommend the username and password method for CI/CD workflows, and the browser-based flow otherwise. Note that the username and password method is only compatible with users who were created natively in Keycloak (not brokered from an identity provider).
To check which user is currently logged in:
de whoami
The output is similar to
Logged in as [jessica] to [example.plotly.host].
To log out:
de logout
Or, if you logged in using a credentials file other than ~/.dash_enterprise/credentials.json:
de --keyfile <path-to-keyfile> logout
where <path-to-keyfile> is the path to the credentials file you used to log in.
Logging out clears the contents of the credentials.json file (but does not delete it) if you logged in using the browser-based flow.
To initialize an app on Dash Enterprise:
de apps create --name <app-name>
where <app-name> is the name you want to give to the app.
The output is similar to
App <app-name> was initialized on [example.plotly.host].
The instructions below assume that you are using the CLI on your workstation. While CLI-based deployment works in Workspaces, we recommend one-click deploy to deploy from a workspace because it’s a single button click.
You can deploy an app to Dash Enterprise using the CLI even if the app is not initialized.
To deploy or redeploy an app:
de deploy <path> --name <app-name>
where <path> is the path to the app folder on your workstation and <app-name> is the name of the new or existing app (both are optional). If you don’t provide a path, Dash Enterprise uses the current directory. If you don’t provide an app name, Dash Enterprise uses the name of your app folder. Remember that the name is used in the app URL and cannot be changed later.
The behavior is as follows: * If the app isn’t initialized (and the name is available), you are prompted to confirm that you want to initialize it. It is then initialized and deployed, and you become the app owner. * If the app is initialized and not deployed, and you are its owner or co-owner, you are prompted to confirm that you want to overwrite it, and it is deployed. * If the app is initialized and deployed, and you are its owner or co-owner, you are prompted to confirm that you want to overwrite it, and it is redeployed.
Tip: You can use the
-yflag (de deploy -y) to automatically answer “Yes” to all prompts, which may be useful as part of a CI workflow.
All app deployments from the CLI are over HTTPS.
Internally, to deploy your app, the Dash Enterprise CLI creates a copy of your app folder in ~/AppData/Local/Temp, then runs git init, git add ., git commit, and git push -f in the temporary directory. This force pushes the files in your app folder such that if the app already exists on Dash Enterprise, it is fully overwritten to match your local app files. Any .gitignore files are respected. The temporary directory is then deleted.
Run de deploy --help for additional options.
To list the apps on Dash Enterprise:
de apps list
A list of apps that you own and co-own is displayed. If you have the admin role, then all apps are listed, regardless of which ones you own.
To check the existence of an app by name:
de apps exists --name <app-name>
where <app-name> is the name that you want to look up.
To check an app’s status as well as general information (new in version 1.10.0):
de apps info --name <app-name>
where <app-name> is the name of the app that you want to check.
To check the build status of a deployed app:
de apps status --name <app-name>
where <app-name> is the name of the app whose build status you want to check. You must be the app owner or a co-owner, or have the admin role, to obtain this information.
The output is queued, building, built, or failed. If the app has never been deployed, the output is This app has not been deployed and has no previous builds.
To check the build logs of an app’s most recent build:
de apps logs --name <app-name> --type build
where <app-name> is the name of the app whose build logs you want to check. You must be the app owner or a co-owner, or have the admin role, to obtain this information.
Only the most recent build’s logs are available. By default, the 200 most recent lines are displayed. To specify a different number of lines, use --count followed by the number of lines you want. For example, de apps logs --name my-app --type build --count 50.
To check an app’s runtime logs:
de apps logs --name <app-name> --type runtime
where <app-name> is the name of the app whose runtime logs you want to check. You must be the app owner or a co-owner, or have the admin role, to obtain this information.
By default, the logs for the web process are displayed. To specify a different process, use --process-name followed by the process as specified in the app’s Procfile. For example, de apps logs --name my-app --type runtime --process-name scheduler.
By default, the 200 most recent lines are displayed. To specify a different number of lines, use --count followed by the number of lines you want. For example, de apps logs --name my-app --type runtime --count 50.
New in version 1.10.0
To check which users have access to an app:
de apps users --name <app-name>
where <app-name> is the name of the app that you want to check.
Three lists are printed: owner, co-owners, and viewers.
Known issue: A list of
viewersis printed for apps that are Unauthenticated or Authenticated. The actual users who can view the app extend beyond this list (all users for Unauthenticated apps and all logged in users for Authenticated apps).
Known issue: The app owner appears in the
co-ownersandviewerslists.
New in version 1.10.0
You must have the admin role to transfer apps.
To transfer one app from a licensed user to another:
de apps transfer --name <app-name> --from-user <current-owner> --to-user <new-owner>
where <app-name> is the name of the app that you want to transfer, <current-owner> is the app’s current owner, and <new-owner> is the user that you want to transfer the app to.
To transfer all of a licensed user’s apps to another:
de apps transfer-all --from-user <current-owner> --to-user <new-owner>
where <current-owner> is the user whose apps you want to transfer and <new-owner> is the user that you want to transfer them to.
Unless otherwise noted, you must be the app owner or a co-owner, or have the admin role, to run the commands below.
New in version 1.10.0
To create a blank workspace (you must be the app owner):
de workspaces create --name <app-name>
where <app-name> is the name of the app that you want to create a workspace for.
The workspace is created with the default memory limit. To specify a custom memory limit (requires the admin role), add --memory-limit <memory-limit>, where <memory-limit> is the memory limit that you want to set in MiB (maximum 24576).
To create a workspace from a commit (you must be the app owner):
de workspaces create --name <app-name> --git-revision <git-revision>
where <app-name> is the name of the app that you want to create a workspace for and <git-revision> is the full Git revision to use.
The workspace is created with the default memory limit. To specify a custom memory limit (requires the admin role), add --memory-limit <memory-limit>, where <memory-limit> is the memory limit that you want to set in MiB (maximum 24576).
To view the status and general information about a workspace:
de workspaces info --name <app-name>
where <app-name> is the name of the app whose workspace you want to check.
To restart a workspace:
de workspaces update --name <app-name> --restart
where <app-name> is the name of the app whose workspace you want to restart. See the effects of restarting a workspace.
To rebuild a workspace (you must be the app owner or have the admin role):
de workspaces rebuild --name <app-name>
where <app-name> is the name of the app whose workspace you want to rebuild. See the effects of rebuilding a workspace.
To update a workspace’s memory limit (requires the admin role):
de workspaces update --name <app-name> --memory-limit <new-limit>
where <app-name> is the name of the app that the workspace belongs to and <new-limit> is the memory limit that you want to set in MiB (maximum 24576).
To delete a workspace (you must be the app owner or have the admin role):
de workspaces delete --name <app-name>
where <app-name> is the name of the app whose workspace you want to delete.
Note that workspaces can take up to three minutes to delete. There is a known issue where attempting to create a new workspace before the previous one has finished deleting can cause the new workspace to become stuck initializing.
To list the databases on Dash Enterprise:
de services list --type <database-type>
where <database-type> is redis, postgres, or all.
A list of services attached to apps that you own and co-own is displayed. If you have the admin role, then all services of the specified type are listed, regardless of which apps you own.
To check whether a specific app has a database attached:
de services exists --name <app-name> --type <database-type>
where <app-name> is the name of the app and <database-type> is redis or postgres.
The output is True when the app has the specified type of service attached and False when it does not.
To create and attach a database to an app:
de services create --name <app-name> --type <database-type>
where <app-name> is the name of the app that you want to attach the service to and <database-type> is redis or postgres.
To delete a database:
de services delete --name <app-name> --type <database-type>
where <app-name> is the name of the app whose database you want to delete and <database-type> is redis or postgres.
New in version 1.10.0
To set or update the memory limit of a Redis or Postgres database (requires the admin role):
de services update --name <app-name> --type <database-type> --memory-limit <memory-limit>
where <app-name> is the name of the app that the database belongs to, <database-type> is redis or postgres, and <memory-limit> is the memory limit that you want to set in MiB (maximum 24576).
To add an environment variable:
de apps update --name <app-name> --add-environment-variable <env-var>
where <app-name> is the name of the app that you want to edit and <env-var> is the key and value of the environment variable you want to add, in the format KEY=VALUE.
To update an environment variable:
de apps update --name <app-name> --add-environment-variable <env-var>
where <app-name> is the name of the app that you want to edit and <env-var> is the key and new value of the environment variable you want to update, in the format KEY=VALUE.
To remove an environment variable:
de apps update --name <app-name> --remove-environment-variable <env-var-key>
where <app-name> is the name of the app that you want to edit and <env-var-key> is the key of the environment variable you want to remove.
New in version 1.10.0
To change the Python version and rebuild for the change to take effect:
de apps update --name <app-name> --python-version <version> --rebuild
where <app-name> is the name of the app and <version> is the Python version (major and minor only) that you want the app to use. For example, 3.11.
See the supported Python versions.
To enable the persistent filesystem:
de apps update --name <app-name> --persistent-filesystem
where <app-name> is the name of the app that you want to edit.
To disable the persistent filesystem:
de apps update --name <app-name> --no-persistent-filesystem
where <app-name> is the name of the app that you want to edit.
New in version 1.10.0
To edit the replicas for an app’s autoscaling web process:
de apps update --name <app-name> --process-name web --min-replicas <min-replicas> --max-replicas <max-replicas>
where:
* <app-name> is the name of the app whose web process replicas you want to edit.
* <min-replicas> is the minimum number of replicas that you want to set (must be an integer greater than or equal to 1, cannot be greater than <max-replicas>).
* <max-replicas> is the maximum number of replicas that you want to set (must be an integer greater than or equal to 1, cannot be less than <min-replicas>).
Set the minimum and maximum replicas to the same value or use --replicas to disable autoscaling.
To edit the replicas for an app’s non-autoscaling web process (or any non-web process):
de apps update --name <app-name> --process-name <process-name> --replicas <replicas>
where:
* <app-name> is the name of the app whose process replicas you want to edit.
* <process-name> is the name of the process.
* <replicas> is the number of replicas that you want to set for the process (must be an integer greater than or equal to 1).
Tip: If you do not supply
--process-name, thewebprocess is assumed.
New in version 1.10.0
To set a custom memory limit for an app’s process:
de apps update --name <app-name> --process-name <process-name> --memory-limit <new-limit>
where:
* <app-name> is the name of the app.
* <process-name> is the name of the app process whose memory limit you want to change.
* <new-limit> is the memory limit that you want to set, in MiB (maximum 24576). For example, --memory-limit 3072.
Tip: If you do not supply
--process-name, thewebprocess is assumed.
To add a single co-owner:
de apps update --name <app-name> --add-co-owner <username>
where <app-name> is the name of the app that you want to edit and <username> is the username of the user that you want to add as a co-owner. This user must have a license seat.
To add all the members of a group as co-owners:
de apps update --name <app-name> --add-group-co-owner <group-name>
where <app-name> is the name of the app that you want to edit and <group-name> is the name of the group whose members you want to add as co-owners. All group members must have license seats.
To remove a single co-owner:
de apps update --name <app-name> --remove-co-owner <username>
where <app-name> is the name of the app that you want to edit and <username> is the username of the user that you want to remove as a co-owner.
To remove all the members of a group as co-owners:
de apps update --name <app-name> --remove-group-co-owner <group-name>
where <app-name> is the name of the app that you want to edit and <group-name> is the name of the group whose members you want to remove as co-owners.
To change the viewer access level to Restricted:
de apps update --name <app-name> --view-access restricted
where <app-name> is the name of the app whose viewer access level you want to change.
To change the viewer access level to Authenticated:
de apps update --name <app-name> --view-access authenticated
where <app-name> is the name of the app whose viewer access level you want to change.
To change the viewer access level to Unauthenticated:
de apps update --name <app-name> --view-access unauthenticated
where <app-name> is the name of the app whose viewer access level you want to change.
For details on viewer access, see Viewer Access.
To add a single viewer:
de apps update --name <app-name> --add-viewer <username>
where <app-name> is the name of the app that you want to edit and <username> is the username of the user that you want to add as a viewer.
To add all the members of a group as viewers:
de apps update --name <app-name> --add-group-viewer <group-name>
where <app-name> is the name of the app that you want to edit and <group-name> is the name of the group whose members you want to add as viewers.
To remove a single viewer:
de apps update --name <app-name> --remove-viewer <username>
where <app-name> is the name of the app that you want to edit and <username> is the username of the user that you want to remove as a viewer.
To remove all the members of a group as viewers:
de apps update --name <app-name> --remove-group-viewer <group-name>
where <app-name> is the name of the app that you want to edit and <group-name> is the name of the group whose members you want to remove as viewers.
To make an app visible in the Portal:
de apps update --name <app-name> --visible-on-portal
where <app-name> is the name of the app whose portal visibility you want to change.
To change an app’s rank in the Portal:
de apps update --name <app-name> --portal-rank <rank>
where <app-name> is the name of the app that you want to edit and <rank> is the rank that you want to set (must be an integer).
To make an app not visible in the Portal:
de apps update --name <app-name> --not-visible-on-portal
where <app-name> is the name of the app whose portal visibility you want to change.
To change an app’s title:
de apps update --name <app-name> --title <new-title>
where <app-name> is the name of the app that you want to edit and <new-title> is the title that you want to set. If the title contains spaces, be sure to use quotes (for example, --title "my title with spaces").
The current title, if any, is changed to the new title.
To change an app’s description:
de apps update --name <app-name> --description "<new-description>"
where <app-name> is the name of the app that you want to edit and <new-description> is the description that you want to set.
The current description, if any, is changed to the new description.
To change an app’s thumbnail:
de apps update --name <app-name> --thumbnail <path-to-file>
where <app-name> is the name of the app that you want to edit and <path-to-file> is the path to the image file you want to set as the thumbnail (must be a PNG or JPEG file of 100 KB or less).
The current thumbnail, if any, is changed to the new thumbnail.
To change the maintainer email for an app:
de apps update --name <app-name> --maintainer-email [email protected]
where <app-name> is the name of the app you want to edit, and replacing the example email address with the maintainer email address you want to set.
The current maintainer email address, if any, is changed to the new maintainer email address.
To add a tag:
de apps update --name <app-name> --tag <tag-name>
where <app-name> is the name of the app you want to edit and <tag-name> is the name of the tag you want to add.
You can only add one tag at a time.
To remove a tag:
de apps update --name <app-name> --remove-tag <tag-name>
where <app-name> is the name of the app you want to edit and <tag-name> is the name of the tag you want to remove.
You can only remove one tag at a time.
New in version 1.8.0
The apps restart command restarts all of an app’s processes and workspace (if any), as long as they are running. See Using Workspaces for details on what happens to your files when a workspace is restarted.
To restart an app’s processes and workspace:
de apps restart --name <app-name>
where <app-name> is the app whose processes and workspace you want to restart.
The output is similar to
Restarting workspace for app <app-name>
Restarting web for app <app-name>
Restarting worker for app <app-name>
To delete an app:
de apps delete --name <app-name>
where <app-name> is the name of the app you want to delete.
New in version 1.10.0
To test the connection to a data source that hasn’t been created yet:
de data-sources validate --type <data-source-type> --connection-info "<credentials>"
where:
* <data-source-type> is the data source type. Supported types are amazon-redshift, amazon-s3, azure-data-lake, custom, custom-sql, databricks, google-big-query, and snowflake.
* <credentials> is a JSON representation of the credentials for connecting to the data source.
To test the connection to an existing data source:
de data-sources validate --data-source <data-source-name>
where <data-source-name> is the name of the data source that you want to test connecting to.
To list the data sources on Dash Enterprise:
de data-sources list
A list of data sources that you have access to is displayed (if you have the admin role, all data sources are displayed).
The data sources are listed in descending creation date order. To filter the list, use --limit, --offset, --mine, or a combination.
* de data-sources list --limit 5 limits the results to the first 5 data sources.
* de data-sources list --offset 2 excludes the first 2 data sources.
* de data-sources list --mine displays only the data sources that you own.
To check the existence of a data source by name:
de data-sources exists --data-source <data-source-name>
where <data-source-name> is the data source name that you want to look up.
If the data source is Restricted and you do not have access to it, nor do you have the admin role, the output is similar to Data source [restricted-data] does not exist on [example.plotly.host] regardless of whether the data source exists.
To create a data source:
de data-sources create --data-source <data-source-name> --type <data-source-type> --auth-method <authentication-method> --connection-info "<credentials>" --description "<description>"
where:
* <data-source-name> is the name that you want to give to the new data source.
* <data-source-type> is the data source type. Supported types are amazon-redshift, amazon-s3, azure-data-lake, custom, custom-sql, databricks, google-big-query, and snowflake.
* <authentication-method> is the authentication method. Required for data source types that support more than one authentication method:
* Amazon Redshift: redshift-standard or aws-auth.
* Azure data lake: azure-microsoft-id or azure-sas-token.
* Databricks: databricks-pat (personal access token) or databricks-oauth (OAuth machine-to-machine).
* <credentials> is a JSON representation of the credentials for connecting to the data source, respecting the information required by the authentication method, if applicable.
* <description> is an optional description of the data source.
The data source is created with Restricted access by default. Use --viewers or --group-viewers to give access to specific users that have license seats. Alternatively, use --access authenticated to give access to all users with license seats. Note that an Authenticated data source cannot be changed to Restricted.
To view detailed information about an existing data source:
de data-sources info --data-source <data-source-name>
where <data-source-name> is the name of the data source.
To link a data source to an app:
de data-sources link --data-source <data-source-name> --name <app-name> --restart
where <data-source-name> is the name of the data source and <app-name> is the name of the app that you want to link it to. The app processes and workspace (if any) will restart for the change to take effect.
To unlink a data source from an app:
de data-sources unlink --data-source <data-source-name> --name <app-name> --restart
where <data-source-name> is the name of the data source and <app-name> is the name of the app that you want to unlink it from. The app processes and workspace (if any) will restart for the change to take effect.
To update a data source:
de data-sources update --data-source <data-source-name> <parameters-to-update> --restart
where <data-source-name> is the name of the data source and <parameters-to-update> is the information that you want to change about the data source (you can change more than one parameter at once). Supported changes are:
* --auth-method <new-authentication-method> updates the data source’s authentication method.
* where <new-authentication-method> can be:
* Amazon Redshift: redshift-standard or aws-auth.
* Azure data lake: azure-microsoft-id or azure-sas-token.
* Databricks: databricks-pat (personal access token) or databricks-oauth (OAuth machine-to-machine).
* --connection-info <new-credentials> updates the credentials used to connect to the data source. <new-credentials> must be a JSON representation of the new credentials for connecting to the data source, respecting the information required by the authentication method, if applicable.
* --access authenticated changes a Restricted data source to Authenticated (all users with license seats can access it). An Authenticated data source cannot be changed back to Restricted.
* --viewers <username1,username2...> or --group-viewers <group1,group2...> updates user access to a Restricted data source. Note that this is a replace operation, not an add operation.
* --description "<new-description>" sets a new description for the data source.
The app processes and workspace (if any) will restart for the change to take effect.
To delete a data source:
de data-sources delete --data-source <data-source-name>
where <data-source-name> is the name of the data source that you want to delete. Add --yes to automatically answer the confirmation prompt.
To open Dash and Dash Enterprise documentation:
de docs
Your browser opens to https://<your-dash-enterprise-server>/docs (if it does not open automatically, use the provided URL). Note that if you don’t have a license seat, this redirects to a “Forbidden” page. You can still view Dash Open Source documentation (as well as information about some Dash Enterprise capabilities) without a license seat by going to https://dash.plotly.com/.
In order to ensure high uptime, Dash Enterprise imposes a limit on the number of actions you can perform in a given time frame. This rate limit is specific to each user and is applied both to actions performed via the CLI and those performed through the App Manager.
The rate limit assigns points to each action and you consume these points when interacting with Dash Enterprise. Actions that create, modify, or delete resources on Dash Enterprise consume more points than actions like listing resources. When you have no remaining points, the limit is exceeded and an error similar to the following is displayed.
{
"error": {
"errors": [
{
"message": "Rate limit exceeded",
"stacktrace": {
"remainingPoints": 0,
"msBeforeNext": 9669,
"consumedPoints": 59,
"isFirstInDuration": false
},
"extensions": {
"code": "TOO_MANY_REQUESTS"
}
}
]
}
}
You’ll need to wait 60 seconds before you can continue.
If using the CLI as part of a CI/CD pipeline, follow these recommendations to avoid being disrupted by the rate limit: * Throttle the requests that your pipeline makes to Dash Enterprise * Make sure your code doesn’t create infinite loops * Handle errors
DASH_ENTERPRISE_USERNAME and DASH_ENTERPRISE_PASSWORD are not URL encoded, which causes CLI commands to fail. As a workaround, you can manually URL encode special characters (for example, replace @ with %40).certificate verify failed: unable to get local issuer certificate, this means that when configuring Dash Enterprise, your administrator has used a TLS/SSL full chain certificate whose root certificate was issued by an internal certificate authority (CA). Ask your administrator for the root certificate file, then do the following:--ca-path <path-to-root-ca> to your commands. For example, to deploy an app from your workstation, use de --ca-path <path-to-root-ca> deploy <path> --name <app-name>, where <path-to-root-ca> is the path to the root certificate file. Alternatively, you can set the environment variable DASH_ENTERPRISE_CA_PATH to this path.