Powershell script module for working with the Workday API, using raw XML.
Switch branches/tags
Nothing to show
Clone or download
Pull request Compare This branch is 4 commits ahead of treestryder:master.
darrenjrobinson New cmdlet Get-WorkdayWorkerPhoto
Get-WorkdayWorkerPhoto -WorkerId 1234 -WorkerType Employee_ID -PhotoPath 'C:\temp\workday'

Get-WorkdayWorkerAdv -WorkerType Employee_ID -WorkerId 1234 -IncludePhoto -PhotoPath 'C:\temp\Workday\photos'
Latest commit 5650d77 Oct 16, 2018
Permalink
Failed to load latest commit information.
en-US
samples
scripts
tests Added specific Workday version to every request. Apr 19, 2018
CHANGELOG.md
Install-WorkdayModule.ps1
License.txt
README.md
WorkdayApi.psd1
WorkdayApi.psm1

README.md

Workday SOAP API Powershell Script Module

Description

Provides simple methods for accessing the Workday SOAP API.

This simple Powershell Module has been written to fulfill my employer's Workday automation needs. I see this as a prototype, while I experiment with the best way to expose the complexities of the Workday API in a Powershell-y way. Thinking that the community might find it helpful and may even wish to comment or contribute, I have hosted the source on GitHub (https://github.com/treestryder/powershell_module_workdayapi).

Features

  • Easy command-line use, after setting default configuration options and securely saving them to the current user's profile.
  • Get Worker information for one or all workers.
  • Get / Set / Update Worker email.
  • Get / Set / Update Worker phone.
  • Upload Worker Photos.
  • Upload Worker Documents.
  • Run reports.
  • Trigger Integrations and retreive their status.
  • Submit arbitrary API calls.
  • A sample script to push A.D. changes to Workday (samples/Push_AD_to_Workday.ps1).

Examples

Set-WorkdayCredential
Set-WorkdayEndpoint -Endpoint Staffing        -Uri 'https://SERVICE.workday.com/ccx/service/TENANT/Staffing/v26.0'
Set-WorkdayEndpoint -Endpoint Human_Resources -Uri 'https://SERVICE.workday.com/ccx/service/TENANT/Human_Resources/v26.0'
Set-WorkdayEndpoint -Endpoint Integrations    -Uri 'https://SERVICE.workday.com/ccx/service/TENANT/Integrations/v26.0'
Save-WorkdayConfiguration

Set-WorkdayWorkerPhone -WorkerId 123 -WorkerType Employee_ID -Number '+1 (234) 987-6543'

Get-WorkdayWorkerPhone -WorkerId 123 -WorkerType Employee_ID | Format-Table

UsageType DeviceType Number           Extension Primary Public
--------- ---------- ------           --------- ------- ------
Home      Landline   1 (234) 567-8910             False  False
Work      Landline   1 (234) 987-6543              True  False


$response = Invoke-WorkdayRequest -Request '<bsvc:Server_Timestamp_Get xmlns:bsvc="urn:com.workday/bsvc" />' -Uri https://SERVICE.workday.com/ccx/service/TENANT/Human_Resources/v26.0
$response.Xml.Server_TimeStamp

wd                   version Server_Timestamp_Data        
--                   ------- ---------------------        
urn:com.workday/bsvc v25.1   2015-12-02T12:18:30.841-08:00


Get-Command -Module WorkdayApi | sort Name | Get-Help | Format-Table Name, Synopsis -AutoSize

Name                        Synopsis                                                                                
----                        --------                                                                                
Export-WorkdayDocument      Exports Workday Documents.
Get-WorkdayDate             Gets the current time and date from Workday.                                                        
Get-WorkdayEndpoint         Gets the default Uri value for all or a particular Endpoint.                            
Get-WorkdayIntegrationEvent Retrieves the status of a Workday Integration.                                          
Get-WorkdayReport           Returns the XML result from any Workday report, based on its URI.                       
Get-WorkdayWorker           Gets Worker information as Workday XML.                                                 
Get-WorkdayWorkerDocument   Gets Workday Worker Documents.                                                          
Get-WorkdayWorkerEmail      Returns a Worker's email addresses.                                                     
Get-WorkdayWorkerPhone      Returns a Worker's phone numbers.                                                       
Invoke-WorkdayRequest       Sends XML requests to Workday API, with proper authentication and receives XML response.
Remove-WorkdayConfiguration Removes Workday configuration file from the current user's Profile.                     
Save-WorkdayConfiguration   Saves default Workday configuration to a file in the current users Profile.             
Set-WorkdayCredential       Sets the default Workday API credentials.                                               
Set-WorkdayEndpoint         Sets the default Uri value for a particular Endpoint.                                   
Set-WorkdayWorkerDocument   Uploads a document to a Worker's records in Workday.                                    
Set-WorkdayWorkerEmail      Sets a Worker's email in Workday.                                                       
Set-WorkdayWorkerPhone      Sets a Worker's phone number in Workday.                                                
Set-WorkdayWorkerPhoto      Uploads an image file to Workday and set it as a Worker's photo.                        
Start-WorkdayIntegration    Starts a Workday Integration.                                                           
Update-WorkdayWorkerEmail   Updates a Worker's email in Workday, only if it is different.                           
Update-WorkdayWorkerPhone   Updates a Worker's phone number in Workday, only if it is different.                

Installation

The only dependency is Powershell version 4.

To install...

  • Download the files.
  • Execute the script Install-WorkdayModule.ps1

Fine Print

Please use with caution. This module could cause baldness, could warp time and space, could kill your puppy or, could do nothing at all. I am sharing what I am using as a starting point for a community developed solution.

Any and all contributions are more than welcome and appreciated.