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:
- Sign in to the Developer Site with an admin role and open the Users tab of the console.
- Select Add a User.
- 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.
- Save the Client ID and Client Secret that Workday shows.
- Store them in the environment variables
WDCLI_CLIENT_IDandWDCLI_CLIENT_SECRETon the machine that runs the pipeline. - 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
- Workday Extend Developer Guide: Concept, Workday Developer CLI for Extend Apps
- Workday Extend Developer Guide: Get Started with the Workday Developer CLI for Extend Apps
- Workday Extend Developer Guide: Install the Workday Developer CLI for Extend Apps on macOS
- Workday Extend Developer Guide: Install the Workday Developer CLI for Extend Apps on Windows
- Workday Extend Developer Guide: Install the Workday Developer CLI for Extend Apps on Linux
- Workday Extend Developer Guide: Reference, Workday Developer CLI (WDCLI) for Extend Apps Commands
- Workday Extend Developer Guide: Set Up System User Accounts for WDCLI for Extend Apps
- Workday Extend Developer Guide: Reference, Proxy Server Settings for WDCLI for Extend Apps Commands
- Workday Extend Developer Guide: Reference, Legacy WCP CLI Commands for Extend Apps
- Workday Extend Developer Guide: Reference, Workday Developer CLI (WDCLI) Commands for Integration Apps