The Workday Developer CLI, run as wdcli, is Workday's command-line tool for working with Extend apps and Integration apps from a terminal or a CI/CD pipeline. It can upload and download apps to and from App Hub, validate and preview them, deploy them to tenants and promote them between levels, and it is available to every Developer Site user.

What WDCLI is for

Workday positions it for three jobs: signing in to the Developer Site programmatically, scripting repeatable lifecycle steps, and building CI/CD pipelines. In practice that means the things you would otherwise click through on the Developer Site, such as uploading a new build or promoting an app to Implementation, can be run as commands and checked into a pipeline.

One caveat is stated in the documentation: not every command completes successfully if you do not have access to the Extend SKU. Workday does not list which commands those are. Is Workday Extend free? covers what a personal account includes.

Install WDCLI

All three installers come from the Developer Tools page at developer.workday.com/downloads.

Platform Installer to pick After installing
macOS macOS (Apple Silicon) or macOS (Intel) Run the installer, open a new terminal, run wdcli version
Windows Windows ARM64 or Windows x64 Run the installer, open a new command prompt, run wdcli version
Linux Linux x64 or Linux ARM64 Unpack with tar xzvf <package>.tar.gz, then run ./wdcli version from the wdcli/bin folder

The version printed should match the one you downloaded. On Linux, Workday suggests adding the unpacked bin folder to your PATH so that wdcli works from any directory.

Sign in

Workday's getting-started page gives the sign-in command as wdcli auth:login. The command reference writes the same command with a space: wdcli auth login. Both appear in Workday's own pages, so if one is rejected by your version, run wdcli help and use the form it prints.

A normal login needs a person: Workday prompts you to sign in and waits for you. Check who and where you are with wdcli whoami, and end the session with wdcli auth logout.

Sign in without a person, for pipelines

A pipeline cannot answer a login prompt, so Workday provides System User accounts. An administrator creates one on the Developer Site:

  1. Sign in to the Developer Site with an admin role and open the Users tab of the console.
  2. Select Add a User.
  3. For Company Role, choose System User, and fill in the other fields. If you leave the company email empty, Workday generates one. It does not need to exist, and no mail is sent to it.
  4. Save the Client ID and Client Secret that Workday shows.
  5. Store them in the environment variables WDCLI_CLIENT_ID and WDCLI_CLIENT_SECRET on the machine that runs the pipeline.
  6. Log in with wdcli auth login --system-user.

Two limits apply. A system user cannot run tenant-level operations such as deploying an app, which still needs a sign-in with tenant credentials. And a system user belongs to one organization and cannot be used across several.

The core commands

Workday groups the commands as below. The example arguments are the ones from Workday's reference.

Group Command What it does
General wdcli help, wdcli version, wdcli whoami Command list, version, current user and company
Config wdcli config set defaultCompanyShortId abcdef, wdcli config show Set or show saved defaults, so you do not repeat them
Account wdcli account list, wdcli account switch List your companies; switch company (a login starts in your primary one)
App wdcli app list cqbvyp List the apps of a company
App wdcli app create <appRefId>, wdcli app info <appRefId>, wdcli app versions <appRefId> Create an app, show its info, list its versions
App wdcli app upload Upload the app in a directory to App Hub
App wdcli app download <appRefId> --latest-version Download an app from App Hub to a directory
App wdcli app builds <appRefId>, wdcli app builds logs <buildId> List builds of a version; show one build's log
App wdcli app validate <appRefId> Validate App Builder components (Extend apps only)
App wdcli app preview <appRefId> Open a local preview; stop it with Ctrl+C (Extend apps only)
App wdcli app copy <appRefId> --name <newAppRefId> Copy a local app to a new directory under a new reference ID
App wdcli app deploy myAppRefId --tenant-alias example-alias --version 02 Deploy a version to a tenant
App wdcli app promote <appRefId> --level implementation Promote an app version to a level
Tenant wdcli tenant list, wdcli tenant login my-alias, wdcli tenant logout, wdcli tenant open <alias> List registered tenants, sign in to one, sign out, open it in a browser

Two details from the reference save time. app validate checks only App Builder components, so orchestrations still have to be validated in Orchestration Builder. And promotion from the CLI follows the same rules and deadlines as the Developer Site, including the promotion deadlines for Extend apps with model components.

The Integration apps reference adds wdcli tenant token, which displays the current tenanted access token. A tenant login covers one tenant at a time, and a new one replaces the previous.

Proxy settings

If your network sends outbound traffic through a proxy, WDCLI honors the standard proxy environment variables: http_proxy for both HTTP and HTTPS calls, https_proxy for HTTPS calls only, and no_proxy to remove proxy settings or exclude hosts. A proxy URL can include a port, for example http://proxy.example.com:8080, and credentials if the proxy requires them.

On Windows, add them under Environment Variables in system settings, or set them in the command prompt for one session before running a command. On macOS and Linux, export them in the shell profile, or in the terminal session you are about to use. Open a new terminal afterwards. Workday's page spells the variable names inconsistently in places, so confirm the names against your own proxy behavior if a first attempt does not take.

WDCLI and the legacy WCP CLI

Before WDCLI there was the WCP CLI, whose command is wcpcli. Workday states that it is no longer maintained and recommends WDCLI instead. You can keep using it until you move over, and wcpcli help prints its own documentation.

The command names changed along the way. The legacy tool used a colon between words, such as wcpcli apps:list, wcpcli apps:versions <app>, wcpcli auth:tenanted:login and wcpcli config:set, while the current reference writes wdcli app list, wdcli app versions, wdcli tenant login and wdcli config set. If an older script or blog post uses wcpcli, map each command to its wdcli equivalent from the reference before changing the script, and test it against a Development tenant first.

Sources checked