Workday Report as a Service (RaaS) via Apideck Proxy API
This guide walks you through creating a Report as a Service (RaaS) in Workday and accessing it via the Apideck Proxy API.
Prerequisites
You’ll need:
A Workday account with permissions to create custom reports
An Integration System User (ISU) configured in Workday
A Workday connection in Apideck with:
username– ISU usernamepassword– ISU passwordtenant_id– e.g.acmeinhttps://impl.workday.com/acme/d/home.htmlwsdl_url– e.g.https://services1.myworkday.com/ccx/service
Step 1: Create a Custom Report in Workday
Sign in to Workday with an account that can create reports.
Open the Create Custom Report task
In the global search: “Create Custom Report”
Select the task to open the wizard
Configure report details
Report Name: A unique, descriptive name
Report Type: Select Advanced
This is required to expose the report as a web service
Enable as Web Service: ✅ Check this box
If this is not enabled, the report will not be accessible via REST.
Data Source: Select the Data Source, for example: Workers for HCM Reporting, which:
Uses Worker as the primary business object
Good default for employee/worker-related data
Add columns (fields)
(Optional) Add prompts (filters)
Go to the Prompts tab.
Use prompts if you want to filter the report via query parameters.
Examples:
Effective Date
Department
Worker Status (active / inactive)
6.Save the report
Click OK.
Note the exact report name – it will be used in the URL.
Step 2: Share the Report with the Integration System User (ISU)
Edit the custom report
Search for “Edit Custom Report”.
Select your newly created report.
Share with the ISU
Go to the Share tab.
Add your Integration System User (e.g.
testuser) to the authorized users.This is required for API access:
If the ISU doesn’t have access, you’ll typically see 401 or 403 errors.
Save
Click OK and verify the ISU is listed under authorized users.
Step 3: Get the Report URL
Open the report in Workday
Copy the Workday XML WSDL URL
Step 4: Access Report via Apideck Proxy API
The Apideck Proxy API allows you to access Workday Reports as a Service using SOAP with automatic credential injection via placeholders.
1. Downstream URL:
This is the Workday XML Report URL you copied in the previous step:
Example structure:
https://impl-services1.wd12.myworkday.com/ccx/service/customreport2/acme/reportownername/Employee_List_ReportWe support placeholders for connection-level fields only:
{username}
{password}
{tenant_id}
{wsdl_url}
We do not support placeholders for report owner and report name because Workday requires the exact report owner and report name in the URL, and these values vary per report - not per connection, so Apideck cannot interpolate them.
Example downstream URL with placeholders:
{wsdl_url}/customreport2/{tenant_id}/reportownername/Employee_List_ReportcURL example:
curl --location 'https://unify.apideck.com/proxy' \
--header 'x-apideck-consumer-id: test-consumer' \
--header 'x-apideck-app-id: YOUR_APP_ID' \
--header 'x-apideck-service-id: workday' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/soap+xml' \
--header 'Accept: application/xml' \
--header 'x-apideck-downstream-method: POST' \
--header 'x-apideck-downstream-url:{wsdl_url}/customreport2/{tenant_id}/reportownername/Employee_List_Report'Request Body Format
Your request body must contain a SOAP envelope using the WS-Security username/password token. Apideck automatically replaces {username}, {tenant_id}, and {password} with the Vault connection settings.
<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:wd="urn:com.workday.report/Employee_List_Report">
<soapenv:Header>
<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:UsernameToken wsu:Id="UsernameToken-">
<wsse:Username>{username}@{tenant_id}</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">{password}</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<wd:Execute_Report>
<wd:Report_Parameters>
</wd:Report_Parameters>
</wd:Execute_Report>
</soapenv:Body>
</soapenv:Envelope>Expected Response Format
Workday returns the raw XML and the actual structure depends on the fields/columns you configured in the report. A simple example:
<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/">
<env:Body>
<wd:Report_Data xmlns:wd="urn:com.workday.report/Employee_List_Report">
<wd:Report_Entry>
<wd:Worker_ID>12345</wd:Worker_ID>
<wd:First_Name>John</wd:First_Name>
<wd:Last_Name>Doe</wd:Last_Name>
<wd:Email>john.doe@example.com</wd:Email>
</wd:Report_Entry>
<wd:Report_Entry>
<wd:Worker_ID>67890</wd:Worker_ID>
<wd:First_Name>Jane</wd:First_Name>
<wd:Last_Name>Smith</wd:Last_Name>
<wd:Email>jane.smith@example.com</wd:Email>
</wd:Report_Entry>
</wd:Report_Data>
</env:Body>
</env:Envelope>





