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:

  1. Enable OAuth 2.0 in your Workday tenant:

    1. Log in to Workday with administrative credentials
    2. Navigate to Security under Setup or Administration
    3. Search for Edit Tenant Setup – Security
    4. Scroll down to OAuth 2.0 Settings
    5. Check the OAuth 2.0 Clients Enabled checkbox
    6. Save the changes
  2. Create an Integration System User (ISU):

    1. Search for Create Integration System User
    2. Provide a Username and Password
    3. Leave Require New Password unchecked
    4. Set Session Timeout Minutes to 0 (zero) to prevent session expiration
    5. Click OK to save
  3. Create a Security Group:

    1. Search for Create Security Group
    2. Select Integration System Security Group from the Type dropdown
    3. Enter a name for the security group
    4. Add the Integration System User to this group
    5. Click OK to save
  4. Configure Security Group Permissions:

    1. Search for Maintain Permissions for Security Group
    2. Select your created security group
    3. 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
    4. Save the changes
  5. Register API Client:

    1. Search for Register API Client for Integrations
    2. Enter a Client Name (e.g., "Leena AI Integration")
    3. Select Non-Expiring Refresh Tokens if preferred
    4. Add required Scope (Functional Areas) based on your needs:
      • Staffing
      • Human Resources
      • Time Off and Leave
      • Benefits
      • Payroll
    5. In the Redirection URI field, enter the callback URL from Leena AI
    6. Select Include Workday Owned Scope checkbox
    7. Click OK to save
  6. Generate Refresh Token:

    1. Search for View API Clients
    2. Go to API Clients for Integration tab
    3. Find your created client and click the ellipsis (...)
    4. Select API Client > Manage Refresh Token for Integration
    5. Select the Integration System User created earlier
    6. Enable Generate New Refresh Token checkbox
    7. Click OK
    8. Copy the generated Refresh Token (displayed only once)
  7. 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)

  1. Create an Integration System User as described above
  2. Note the Username and Password
  3. Configure security group permissions as needed
  4. Note your Workday Web Services URL

Add Connection

Here is how to add a connection on Leena AI:

  1. Log in to your Leena AI workspace
  2. Navigate to Settings > Integrations
  3. Search for "Workday" and select it from the list
  4. 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:

FieldDescription
Base URLYour Workday instance URL (e.g., https://wd3.myworkday.com)
Tenant IDYour organization's Workday tenant identifier
Client IDOAuth application client ID from Workday
Client SecretOAuth application client secret from Workday
Refresh TokenThe refresh token generated in Workday

For Workday SOAP:

Configure the following fields:

FieldDescription
Authentication TypeSelect Basic Auth or OAuth 2.0
Base URLYour Workday Web Services URL
Tenant IDYour organization's Workday tenant identifier
VersionWorkday Web Services version (e.g., v43.2, v42.1)

For Basic Auth additionally:

FieldDescription
UsernameIntegration System User username
PasswordIntegration System User password

For OAuth 2.0 additionally:

FieldDescription
Client IDOAuth application client ID
Client SecretOAuth application client secret
Refresh TokenThe refresh token generated in Workday
  1. 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

NameDescription
WorkerThe Worker ID of the employee requesting time off
DatesArray of dates for the time off request
Time Off Type IDThe identifier for the type of leave being requested

Optional

NameDescription
Time Off Type DescriptorDescription of the time off type
Daily QuantityNumber of hours/days per day of absence
CommentAdditional comments for the request
DescriptionDescription for the time off request
AttachmentsSupporting documents (File Name with extension, File Data as URL or Base64)
Attachment CommentComment for the attachment
Attachment Category IDCategory 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

NameDescription
WorkerThe Worker ID of the employee

Optional

NameDescription
CategoryFilter by balance category
Effective fromDate from which to calculate balances
OffsetPagination offset
LimitMaximum 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

NameDescription
WorkerThe Worker ID of the employee

Optional

NameDescription
From DateStart date for filtering results
To DateEnd date for filtering results
StatusFilter by request status (Approved, Pending, Denied)
TimeOff TypeFilter by specific leave type
LimitMaximum number of results to return
OffsetPagination 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

NameDescription
WorkerThe Worker ID of the employee

Optional

NameDescription
CategoryFilter by absence category (Time Off, Leave of Absence, Absence Table)
Effective fromDate for eligibility check
OffsetPagination offset
LimitMaximum 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

NameDescription
From DateStart date for holiday search
To DateEnd date for holiday search
WorkerFilter holidays by worker's location/calendar
OffsetPagination offset
LimitMaximum 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

NameDescription
Business ProcessFilter by business process type
WorkerFilter by worker associated with the event
InitiatorFilter by who initiated the process
StatusFilter by event status
CreatedOn/AfterFilter events created on or after this date
CreatedOn/BeforeFilter events created on or before this date
InitiatedOn/AfterFilter events initiated on or after this date
InitiatedOn/BeforeFilter events initiated on or before this date
OffsetPagination offset
LimitMaximum 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

NameDescription
Event IDThe 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

NameDescription
Worker IDThe Worker ID whose inbox tasks to retrieve

Optional

NameDescription
OffsetPagination offset
LimitMaximum 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

NameDescription
Step IDThe unique identifier of the step to approve

Optional

NameDescription
CommentApproval 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

NameDescription
Step IDThe unique identifier of the step to deny

Optional

NameDescription
CommentDenial 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

NameDescription
Step IDThe unique identifier of the step to send back
ReasonReason for sending the step back

Optional

NameDescription
Sendback to IDThe 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

NameDescription
Event IDThe unique identifier of the event to cancel

Optional

NameDescription
CommentCancellation 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

NameDescription
ID TypeType of identifier (Worker ID or Person ID)
Worker ID / Person IDThe employee's identifier based on ID Type

Optional

NameDescription
OffsetPagination offset
LimitMaximum 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

NameDescription
ID TypeType of identifier (Worker ID or Person ID)
Worker ID / Person IDThe employee's identifier based on ID Type

Optional

NameDescription
OffsetPagination offset
LimitMaximum 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

NameDescription
ID TypeType of identifier (Worker ID or Person ID)
Worker ID / Person IDThe employee's identifier based on ID Type

Optional

NameDescription
EffectiveEffective date for the address
Primary only?Return only primary address
Public only?Return only public addresses
OffsetPagination offset
LimitMaximum 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

NameDescription
ID TypeType of identifier (Worker ID or Person ID)
Worker ID / Person IDThe employee's identifier based on ID Type

Optional

NameDescription
Primary only?Return only primary email
Public only?Return only public emails
OffsetPagination offset
LimitMaximum 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

NameDescription
Worker IDThe Worker ID of the employee
AddressArray of address objects to add or update

Address Object Fields:

NameDescription
Sub Resource IDID of existing address to update (omit for new)
Address IDAddress identifier
Country IDCountry code
Postal CodePostal/ZIP code
Country RegionState/Province/Region
CityCity name
Address Line 1Primary address line
Address Line 2Secondary 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

NameDescription
Worker IDThe Worker ID of the employee
EmailsArray 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

NameDescription
Worker IDThe Worker ID of the employee
PhonesArray 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

NameDescription
SearchSearch term for filtering workers
Include Terminated WorkersInclude terminated employees in results
LimitMaximum number of results to return
OffsetPagination 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

NameDescription
Worker IDThe Worker ID of the manager

Optional

NameDescription
OffsetPagination offset
LimitMaximum 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

NameDescription
Worker IDThe Worker ID of the employee

Optional

NameDescription
OffsetPagination offset
LimitMaximum 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

NameDescription
Worker IDThe Worker ID of the employee
Subresource IDThe 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:

DomainDescription
StaffingActions related to hiring, job changes, and organizational management
Benefits AdministrationOperations for benefits administration and enrollment
PayrollFunctions for processing payroll and managing payslips
CompensationActions for managing compensation plans and reviews
Compensation ReviewOperations for compensation review processes
LearningIntegrations with the Workday Learning module
Performance ManagementOperations for performance reviews
TalentTalent acquisition and management
Absence ManagementLeave and absence management operations
Human ResourcesCore HR operations
RecruitingRecruitment and hiring operations
Time TrackingTime 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:

  1. Form Mode: Fill in the dynamically generated form fields
  2. 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.