Workday
Overview
The Workday connector enables your AI Colleagues to integrate with your organization's Workday Human Capital Management (HCM) platform, facilitating automated HR workflows, employee data management, time off requests, and business process approvals.
Workday is a leading cloud-based enterprise software platform for human capital management, financial management, and analytics. The Workday connector allows Leena AI to automate HR workflows, manage employee data, handle time off requests, process approvals, and interact with various HR domains seamlessly.
API Details
Leena AI integrates with Workday via both REST APIs and SOAP Web Services.
REST API Documentation: https://developer.workday.com/en-us/docs/rest-api
SOAP Web Services Documentation: https://community.workday.com/sites/default/files/file-hosting/productionapi/index.html
Setup
The Workday connector supports multiple authentication methods:
- OAuth 2.0 (REST API): Modern token-based authentication using refresh tokens
- OAuth 2.0 (SOAP API): Bearer token authentication for SOAP services
- Basic Authentication (SOAP API): Username/password authentication using WS-Security
Prerequisites
Before setting up the Workday connector, ensure you have:
- Administrator access to your Workday tenant
- Access to Workday Security Administration
- Ability to create Integration System Users (ISU) in Workday
- Ability to register API clients in Workday
- Access to your Leena AI workspace with connector management permissions
Get Credentials
For OAuth 2.0 Authentication (Recommended)
Here is how to create OAuth 2.0 credentials in Workday:
-
Enable OAuth 2.0 in your Workday tenant:
- Log in to Workday with administrative credentials
- Navigate to Security under Setup or Administration
- Search for Edit Tenant Setup – Security
- Scroll down to OAuth 2.0 Settings
- Check the OAuth 2.0 Clients Enabled checkbox
- Save the changes
-
Create an Integration System User (ISU):
- Search for Create Integration System User
- Provide a Username and Password
- Leave Require New Password unchecked
- Set Session Timeout Minutes to 0 (zero) to prevent session expiration
- Click OK to save
-
Create a Security Group:
- Search for Create Security Group
- Select Integration System Security Group from the Type dropdown
- Enter a name for the security group
- Add the Integration System User to this group
- Click OK to save
-
Configure Security Group Permissions:
- Search for Maintain Permissions for Security Group
- Select your created security group
- Add the required domain permissions based on the actions you need:
- Human Resources
- Staffing
- Time Off and Leave of Absence
- Business Process Administration
- Person Data
- Save the changes
-
Register API Client:
- Search for Register API Client for Integrations
- Enter a Client Name (e.g., "Leena AI Integration")
- Select Non-Expiring Refresh Tokens if preferred
- Add required Scope (Functional Areas) based on your needs:
- Staffing
- Human Resources
- Time Off and Leave
- Benefits
- Payroll
- In the Redirection URI field, enter the callback URL from Leena AI
- Select Include Workday Owned Scope checkbox
- Click OK to save
-
Generate Refresh Token:
- Search for View API Clients
- Go to API Clients for Integration tab
- Find your created client and click the ellipsis (...)
- Select API Client > Manage Refresh Token for Integration
- Select the Integration System User created earlier
- Enable Generate New Refresh Token checkbox
- Click OK
- Copy the generated Refresh Token (displayed only once)
-
Note your credentials:
- Client ID: Displayed after API client creation
- Client Secret: Displayed after API client creation (shown only once)
- Refresh Token: Generated in step 6
- Base URL: Your Workday tenant URL (e.g.,
https://wd3.myworkday.com) - Tenant ID: Your organization's tenant name
For Basic Authentication (SOAP API)
- Create an Integration System User as described above
- Note the Username and Password
- Configure security group permissions as needed
- Note your Workday Web Services URL
Add Connection
Here is how to add a connection on Leena AI:
- Log in to your Leena AI workspace
- Navigate to Settings > Integrations
- Search for "Workday" and select it from the list
- Choose the connector type:
- Workday REST: For REST API-based integrations
- Workday SOAP: For SOAP-based domain connectors
For Workday REST (OAuth 2.0):
Configure the following fields:
| Field | Description |
|---|---|
| Base URL | Your Workday instance URL (e.g., https://wd3.myworkday.com) |
| Tenant ID | Your organization's Workday tenant identifier |
| Client ID | OAuth application client ID from Workday |
| Client Secret | OAuth application client secret from Workday |
| Refresh Token | The refresh token generated in Workday |
For Workday SOAP:
Configure the following fields:
| Field | Description |
|---|---|
| Authentication Type | Select Basic Auth or OAuth 2.0 |
| Base URL | Your Workday Web Services URL |
| Tenant ID | Your organization's Workday tenant identifier |
| Version | Workday Web Services version (e.g., v43.2, v42.1) |
For Basic Auth additionally:
| Field | Description |
|---|---|
| Username | Integration System User username |
| Password | Integration System User password |
For OAuth 2.0 additionally:
| Field | Description |
|---|---|
| Client ID | OAuth application client ID |
| Client Secret | OAuth application client secret |
| Refresh Token | The refresh token generated in Workday |
- Click Save to complete the connection setup
Actions
The Workday connector supports a comprehensive set of actions across multiple categories:
Time Off and Absence Management
Request Timeoff
Submits a time off request for an employee in Workday. The Agent can leverage this action to create leave requests on behalf of employees, supporting various leave types and optional file attachments.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker | The Worker ID of the employee requesting time off |
| Dates | Array of dates for the time off request |
| Time Off Type ID | The identifier for the type of leave being requested |
Optional
| Name | Description |
|---|---|
| Time Off Type Descriptor | Description of the time off type |
| Daily Quantity | Number of hours/days per day of absence |
| Comment | Additional comments for the request |
| Description | Description for the time off request |
| Attachments | Supporting documents (File Name with extension, File Data as URL or Base64) |
| Attachment Comment | Comment for the attachment |
| Attachment Category ID | Category identifier for the attachment |
Here is a sample JSON input:
{
"worker": "21001",
"dates": ["2025-08-27", "2025-08-28", "2025-08-29"],
"timeOffTypeId": "d13a4dc6b82a01010174ce783f020038",
"dailyQuantity": 8,
"comment": "Annual vacation",
"attachments": [
{
"fileName": "leave_document.pdf",
"fileData": "https://example.com/documents/leave.pdf"
}
]
}Response
Upon successful submission, the action returns:
- Request confirmation status
- Time off request ID
- Business process event details
Get Balances
Retrieves the time off balances for an employee. This action allows employees and managers to check available leave entitlements across different time off plans.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker | The Worker ID of the employee |
Optional
| Name | Description |
|---|---|
| Category | Filter by balance category |
| Effective from | Date from which to calculate balances |
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"worker": "21001",
"effective": "2025-08-27",
"limit": 10,
"offset": 0
}Response
The action returns time off balance information including:
- Balance type/plan name
- Available balance
- Used balance
- Balance as of date
Get Timeoff Details
Retrieves detailed time off history for an employee with filtering options. This is useful for viewing past and pending leave requests.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker | The Worker ID of the employee |
Optional
| Name | Description |
|---|---|
| From Date | Start date for filtering results |
| To Date | End date for filtering results |
| Status | Filter by request status (Approved, Pending, Denied) |
| TimeOff Type | Filter by specific leave type |
| Limit | Maximum number of results to return |
| Offset | Pagination offset |
Here is a sample JSON input:
{
"worker": "21001",
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"Status": "Approved",
"limit": 20,
"offset": 0
}Response
The action returns a list of time off entries including:
- Time off entry ID
- Dates of absence
- Status
- Time off type
- Duration
- Comments
Get Eligible Absence Type
Retrieves the list of absence types an employee is eligible for. This helps ensure employees select the correct leave category when submitting requests.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker | The Worker ID of the employee |
Optional
| Name | Description |
|---|---|
| Category | Filter by absence category (Time Off, Leave of Absence, Absence Table) |
| Effective from | Date for eligibility check |
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"worker": "21001",
"category": "17bd6531c90c100016d4b06f2b8a07ce",
"effective": "2025-08-27"
}Response
The action returns eligible absence types including:
- Absence type ID
- Absence type name
- Category
- Eligibility status
Get Holiday Events
Retrieves holiday events from the Workday calendar for a specified date range.
Input Parameters
Optional
| Name | Description |
|---|---|
| From Date | Start date for holiday search |
| To Date | End date for holiday search |
| Worker | Filter holidays by worker's location/calendar |
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"fromDate": "2025-01-01",
"toDate": "2025-12-31",
"worker": "21001",
"limit": 50
}Response
The action returns holiday events including:
- Holiday name
- Holiday date
- Holiday type
Business Process and Approvals
Retrieve Business Process Events
Retrieves a list of business process events with filtering options. This allows managers to monitor and track workflow events such as time-off requests, job requisitions, and other HR processes.
Input Parameters
Optional
| Name | Description |
|---|---|
| Business Process | Filter by business process type |
| Worker | Filter by worker associated with the event |
| Initiator | Filter by who initiated the process |
| Status | Filter by event status |
| CreatedOn/After | Filter events created on or after this date |
| CreatedOn/Before | Filter events created on or before this date |
| InitiatedOn/After | Filter events initiated on or after this date |
| InitiatedOn/Before | Filter events initiated on or before this date |
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"businessProcess": "Time_Off",
"status": "In Progress",
"createdOnAfter": "2025-08-01",
"limit": 20,
"offset": 0
}Response
The action returns business process events including:
- Event ID
- Business process type
- Status
- Initiator
- Created date
- Subject worker
Retrieve Single Business Process Events
Retrieves detailed information about a specific business process event by its ID.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Event ID | The unique identifier of the business process event |
Here is a sample JSON input:
{
"eventId": "abc123xyz789"
}Response
The action returns detailed event information including:
- Event details
- Current status
- All associated steps
- Participants
- Timeline
Get Inbox Tasks of a Worker
Retrieves all pending inbox tasks for a specific worker. This helps managers view their actionable items.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker ID | The Worker ID whose inbox tasks to retrieve |
Optional
| Name | Description |
|---|---|
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"worker": "21001",
"limit": 20,
"offset": 0
}Response
The action returns inbox tasks including:
- Task ID
- Task type
- Subject
- Due date
- Priority
Approve Individual Business Process Event Step
Approves a specific step in a business process workflow. Managers can use this action to approve pending requests remotely.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Step ID | The unique identifier of the step to approve |
Optional
| Name | Description |
|---|---|
| Comment | Approval comment |
Here is a sample JSON input:
{
"stepId": "step123abc",
"comment": "Approved as requested"
}Response
Upon successful approval, the action returns:
- Approval confirmation
- Updated step status
- Next step information (if any)
Deny a Step
Denies a specific step in a business process workflow, effectively rejecting the request.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Step ID | The unique identifier of the step to deny |
Optional
| Name | Description |
|---|---|
| Comment | Denial reason/comment |
Here is a sample JSON input:
{
"stepId": "step123abc",
"comment": "Insufficient documentation provided"
}Response
Upon successful denial, the action returns:
- Denial confirmation
- Updated step status
Send Back a Step
Sends a step back to a previous actor in the workflow for revision.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Step ID | The unique identifier of the step to send back |
| Reason | Reason for sending the step back |
Optional
| Name | Description |
|---|---|
| Sendback to ID | The ID of the person/step to send back to |
Here is a sample JSON input:
{
"stepId": "step123abc",
"reason": "Please provide additional documentation",
"sendBackToId": "user456def"
}Response
The action returns:
- Send back confirmation
- Updated workflow status
Cancel a Business Process Event
Cancels an entire business process event.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Event ID | The unique identifier of the event to cancel |
Optional
| Name | Description |
|---|---|
| Comment | Cancellation reason |
Here is a sample JSON input:
{
"eventId": "event789xyz",
"comment": "Request no longer needed"
}Response
The action returns cancellation confirmation and updated event status.
Employee Profile and Contact Data
Get Legal Name of People
Retrieves the legal name information for a specified employee.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| ID Type | Type of identifier (Worker ID or Person ID) |
| Worker ID / Person ID | The employee's identifier based on ID Type |
Optional
| Name | Description |
|---|---|
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"idType": "WORKER",
"worker": "21001",
"limit": 10
}Response
The action returns legal name information including:
- First name
- Middle name
- Last name
- Name suffix/prefix
Get Preferred Name of People
Retrieves the preferred name information for a specified employee.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| ID Type | Type of identifier (Worker ID or Person ID) |
| Worker ID / Person ID | The employee's identifier based on ID Type |
Optional
| Name | Description |
|---|---|
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"idType": "WORKER",
"worker": "21001"
}Response
The action returns preferred name information.
Get Home Address of People
Retrieves home address information for a specified employee.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| ID Type | Type of identifier (Worker ID or Person ID) |
| Worker ID / Person ID | The employee's identifier based on ID Type |
Optional
| Name | Description |
|---|---|
| Effective | Effective date for the address |
| Primary only? | Return only primary address |
| Public only? | Return only public addresses |
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"idType": "WORKER",
"worker": "21001",
"primaryOnly": true
}Response
The action returns home address details including:
- Address lines
- City
- State/Region
- Postal code
- Country
Get Work Address of People
Retrieves work address information for a specified employee.
Input Parameters
Same as Get Home Address of People.
Here is a sample JSON input:
{
"idType": "WORKER",
"worker": "21001",
"primaryOnly": true
}Response
The action returns work address details.
Get Home Emails of People
Retrieves home email addresses for a specified employee.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| ID Type | Type of identifier (Worker ID or Person ID) |
| Worker ID / Person ID | The employee's identifier based on ID Type |
Optional
| Name | Description |
|---|---|
| Primary only? | Return only primary email |
| Public only? | Return only public emails |
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"idType": "WORKER",
"worker": "21001"
}Response
The action returns home email addresses.
Get Work Emails of People
Retrieves work email addresses for a specified employee.
Input Parameters
Same as Get Home Emails of People.
Response
The action returns work email addresses.
Get Home Phones of People
Retrieves home phone numbers for a specified employee.
Input Parameters
Same as Get Home Emails of People.
Response
The action returns home phone numbers.
Get Work Phones of People
Retrieves work phone numbers for a specified employee.
Input Parameters
Same as Get Home Emails of People.
Response
The action returns work phone numbers.
Update Home Address of People
Updates the home address for a specified employee. Supports bulk updates for multiple addresses.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker ID | The Worker ID of the employee |
| Address | Array of address objects to add or update |
Address Object Fields:
| Name | Description |
|---|---|
| Sub Resource ID | ID of existing address to update (omit for new) |
| Address ID | Address identifier |
| Country ID | Country code |
| Postal Code | Postal/ZIP code |
| Country Region | State/Province/Region |
| City | City name |
| Address Line 1 | Primary address line |
| Address Line 2 | Secondary address line |
Here is a sample JSON input:
{
"worker": "21001",
"addresses": [
{
"countryId": "US",
"postalCode": "94105",
"countryRegion": "CA",
"city": "San Francisco",
"addressLine1": "123 Main Street",
"addressLine2": "Apt 456"
}
]
}Response
Upon successful update, the action returns:
- Update confirmation
- Updated address details
Update Work Address of People
Updates the work address for a specified employee. Input parameters and response are similar to Update Home Address.
Update Home Emails of People
Updates home email addresses for a specified employee.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker ID | The Worker ID of the employee |
| Emails | Array of email objects to add or update |
Here is a sample JSON input:
{
"worker": "21001",
"emails": [
{
"emailAddress": "[email protected]"
}
]
}Response
The action returns update confirmation.
Update Work Emails of People
Updates work email addresses for a specified employee. Input parameters are similar to Update Home Emails.
Update Home Phones of People
Updates home phone numbers for a specified employee.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker ID | The Worker ID of the employee |
| Phones | Array of phone objects to add or update |
Here is a sample JSON input:
{
"worker": "21001",
"phones": [
{
"phoneNumber": "+1-555-123-4567",
"phoneType": "Mobile"
}
]
}Response
The action returns update confirmation.
Update Work Phones of People
Updates work phone numbers for a specified employee. Input parameters are similar to Update Home Phones.
Worker Information
Get Workers
Retrieves a list of workers from Workday with search and filter options.
Input Parameters
Optional
| Name | Description |
|---|---|
| Search | Search term for filtering workers |
| Include Terminated Workers | Include terminated employees in results |
| Limit | Maximum number of results to return |
| Offset | Pagination offset |
Here is a sample JSON input:
{
"search": "John",
"includeTerminatedWorkers": false,
"limit": 20,
"offset": 0
}Response
The action returns worker information including:
- Worker ID
- Name
- Job title
- Department
- Status
Get Direct Reports of a Worker
Retrieves all direct reports for a specific manager.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker ID | The Worker ID of the manager |
Optional
| Name | Description |
|---|---|
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"worker": "21001",
"limit": 50
}Response
The action returns a list of direct reports with their worker information.
Payroll
Get Payslips of a Worker
Retrieves payslip information for a specified employee.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker ID | The Worker ID of the employee |
Optional
| Name | Description |
|---|---|
| Offset | Pagination offset |
| Limit | Maximum number of results to return |
Here is a sample JSON input:
{
"worker": "21001",
"limit": 12
}Response
The action returns payslip information including:
- Payslip ID
- Pay period
- Gross pay
- Net pay
- Deductions
Get Individual Payslip of a Worker
Retrieves a specific payslip by its identifier.
Input Parameters
Mandatory
| Name | Description |
|---|---|
| Worker ID | The Worker ID of the employee |
| Subresource ID | The unique identifier of the payslip |
Here is a sample JSON input:
{
"worker": "21001",
"subresourceId": "payslip123"
}Response
The action returns detailed payslip information.
SOAP Domain Connectors
The Workday SOAP integration provides dynamic access to various HR and Finance domain connectors. Available domains include:
| Domain | Description |
|---|---|
| Staffing | Actions related to hiring, job changes, and organizational management |
| Benefits Administration | Operations for benefits administration and enrollment |
| Payroll | Functions for processing payroll and managing payslips |
| Compensation | Actions for managing compensation plans and reviews |
| Compensation Review | Operations for compensation review processes |
| Learning | Integrations with the Workday Learning module |
| Performance Management | Operations for performance reviews |
| Talent | Talent acquisition and management |
| Absence Management | Leave and absence management operations |
| Human Resources | Core HR operations |
| Recruiting | Recruitment and hiring operations |
| Time Tracking | Time and attendance management |
Dynamic Action Discovery
When using SOAP domain connectors, actions are dynamically discovered from your Workday instance. The system queries your tenant's WSDL to retrieve all available operations within a chosen domain, ensuring the options always match your specific Workday configuration.
Input Options
For SOAP actions, you can provide input in two ways:
- Form Mode: Fill in the dynamically generated form fields
- JSON Mode: Submit the request payload directly in JSON format
Here is a sample JSON input for a Staffing action:
{
"requestJson": {
"Hire_Employee_Request": {
"Business_Process_Parameters": {
"Auto_Complete": true,
"Run_Now": true
},
"Hire_Employee_Data": {
"Applicant_Reference": {
"ID": {
"_type": "Applicant_ID",
"_value": "APP-12345"
}
},
"Position_Reference": {
"ID": {
"_type": "Position_ID",
"_value": "P-001234"
}
},
"Hire_Date": "2025-09-01"
}
}
}
}Response
SOAP actions return the standard Workday SOAP response for the executed operation.
Updated 1 day ago
