Skip to content

Workday

flowtask.components.Workday

Location

Bases: BaseModel

Pydantic model for a Workday location record. raw_data holds the full SOAP response dict for any extra fields.

LocationType

LocationType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handler for the Workday Get_Locations operation.

execute async

execute(**kwargs)

Execute the Get_Locations operation and return a pandas DataFrame.

Supported parameters: - location_id: Specific location ID to fetch (uses Request_References) - location_name: Filter by location name (uses Request_Criteria) - location_type: Filter by location type - location_usage: Filter by location usage - inactive: Filter by inactive status (True/False)

get_active_locations async

get_active_locations()

Convenience method to get all active locations.

get_location_by_id async

get_location_by_id(location_id)

Convenience method to get a specific location by ID.

get_location_by_name async

get_location_by_name(location_name)

Convenience method to get a specific location by name.

get_locations_by_type async

get_locations_by_type(location_type)

Convenience method to get locations by type.

Organization

Bases: BaseModel

Complete organization model based on actual Workday payload.

OrganizationType

OrganizationType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handler for the Workday Get_Organizations operation.

execute async

execute(**kwargs)

Execute the Get_Organizations operation and return a pandas DataFrame.

Supported parameters: - organization_id: Specific organization ID to fetch (uses Request_References) - organization_id_type: Type of organization ID (WID, Organization_Reference_ID, Cost_Center_Reference_ID, etc.) - organization_type: Filter by organization type (Company, Cost Center, Custom, Matrix, Pay Group, Region, Retiree, Supervisory, etc.) - include_inactive: Include inactive organizations (True/False) - enable_transaction_log_lite: Enable transaction log lite (True/False)

get_active_organizations async

get_active_organizations()

Get only active organizations.

:return: DataFrame with active organizations data

get_all_organizations async

get_all_organizations(include_inactive=True)

Get all organizations (active and optionally inactive).

:param include_inactive: Whether to include inactive organizations :return: DataFrame with all organizations data

get_companies async

get_companies()

Get only company organizations.

:return: DataFrame with company organizations data

get_cost_centers async

get_cost_centers()

Get only cost center organizations.

:return: DataFrame with cost center organizations data

get_organization_by_cost_center_id async

get_organization_by_cost_center_id(cost_center_id)

Get a specific organization by Cost Center Reference ID.

:param cost_center_id: The organization Cost Center Reference ID to fetch :return: DataFrame with organization data

get_organization_by_id async

get_organization_by_id(organization_id, id_type='Organization_Reference_ID')

Get a specific organization by ID.

:param organization_id: The organization ID to fetch :param id_type: Type of ID (WID, Organization_Reference_ID, Cost_Center_Reference_ID, etc.) :return: DataFrame with organization data

get_organization_by_wid async

get_organization_by_wid(wid)

Get a specific organization by WID.

:param wid: The organization WID to fetch :return: DataFrame with organization data

get_organizations_by_type async

get_organizations_by_type(organization_type)

Get organizations filtered by type.

:param organization_type: Organization type (Company, Cost Center, Custom, Matrix, Pay Group, Region, Retiree, Supervisory, etc.) :return: DataFrame with organizations data

get_supervisory_organizations async

get_supervisory_organizations()

Get only supervisory organizations.

:return: DataFrame with supervisory organizations data

TimeBlock

Bases: BaseModel

Pydantic model for a Workday calculated time block record. raw_data holds the full SOAP response dict for any extra fields.

TimeBlockType

TimeBlockType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handler for the Workday Get_Calculated_Time_Blocks operation.

execute async

execute(**kwargs)

Execute the Get_Calculated_Time_Blocks operation and return a pandas DataFrame.

Supported parameters: - worker_id: Specific worker ID to fetch time blocks for - start_date: Start date for date range filter (YYYY-MM-DD) - end_date: End date for date range filter (YYYY-MM-DD) - time_block_id: Specific time block ID to fetch - status: Filter by status - supervisory_org: Filter by supervisory organization - include_deleted: Whether to include deleted time blocks (default: False)

get_time_blocks_by_date_range async

get_time_blocks_by_date_range(start_date, end_date, status=None)

Convenience method to get time blocks for a date range.

get_time_blocks_by_worker async

get_time_blocks_by_worker(worker_id, start_date=None, end_date=None)

Convenience method to get time blocks for a specific worker.

TimeRequest

Bases: BaseModel

Pydantic model for a Workday time request record. raw_data holds the full SOAP response dict for any extra fields.

TimeRequestType

TimeRequestType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handles Get_Time_Requests operation for Workday Time Tracking API.

execute async

execute(**kwargs)

Execute the Get_Time_Requests operation.

get_time_request_by_id async

get_time_request_by_id(time_request_id)

Get a specific time request by ID.

get_time_requests_by_date_range async

get_time_requests_by_date_range(start_date, end_date)

Get all time requests within a date range.

get_time_requests_by_organization async

get_time_requests_by_organization(supervisory_organization_id, start_date=None, end_date=None)

Get time requests for a specific organization within an optional date range.

get_time_requests_by_worker async

get_time_requests_by_worker(worker_id, start_date=None, end_date=None)

Get time requests for a specific worker within an optional date range.

safe_serialize

safe_serialize(df)

Safely serialize the DataFrame for JSON output.

Workday

Workday(*, loop=None, job=None, stat=None, **kwargs)

Bases: SOAPClient, FlowComponent

Workday Component

Overview

The Workday class is a Flowtask component for the Workday SOAP API. It encapsulates all Workday-specific logic, including authentication, request/response handling, and data normalization.

Properties

type (str): Operation type to perform (e.g. 'get_workers', 'get_time_blocks') worker_id (str): Optional worker ID to fetch a specific worker use_storage (bool): Enable data storage functionality storage_path (str): Path where to store the data files

Returns:

Type Description

Returns a pandas DataFrame with the requested data.

Examples:

# Basic usage
Workday:
  type: get_workers 
  worker_id: "72037046323885"

# With storage enabled
Workday:
  type: get_workers
  use_storage: true
  storage_path: "/data/workday"

# Location hierarchy assignments with storage
Workday:
  type: get_location_hierarchy_assignments
  use_storage: true
  storage_path: "/data/workday"

# Organizations with storage
Workday:
  type: get_organizations
  organization_type: "Cost_Center"
  use_storage: true
  storage_path: "/data/workday"

add_metric

add_metric(key, value)

Add a metric to track

close async

close()

Cleanup resources

run async

run(operation=None, **kwargs)

Execute the component's main operation

serialize_object

serialize_object(obj)

Helper to serialize SOAP objects

start async

start(**kwargs)

Initialize the component

Worker

Bases: BaseModel

Pydantic model for a Workday worker record. raw_data holds the full SOAP response dict for any extra fields.

WorkerType

WorkerType(component, max_retries=5, retry_delay=0.2)

Bases: WorkdayTypeBase

Handler for the Workday Get_Workers operation, batching pages so that no more than max_parallel requests run concurrently.

:param component: Component instance :param max_retries: Maximum retry attempts (default: 5 for connection resilience) :param retry_delay: Base delay between retries in seconds (default: 0.5 for exponential backoff)

execute async

execute(**kwargs)

Execute the Get_Workers operation and return a pandas DataFrame.

If worker_id is provided, fetches only that one; otherwise fetches all pages in batches of at most max_parallel concurrent requests.

models

Location

Bases: BaseModel

Pydantic model for a Workday location record. raw_data holds the full SOAP response dict for any extra fields.

Organization

Bases: BaseModel

Complete organization model based on actual Workday payload.

TimeBlock

Bases: BaseModel

Pydantic model for a Workday calculated time block record. raw_data holds the full SOAP response dict for any extra fields.

TimeRequest

Bases: BaseModel

Pydantic model for a Workday time request record. raw_data holds the full SOAP response dict for any extra fields.

Worker

Bases: BaseModel

Pydantic model for a Workday worker record. raw_data holds the full SOAP response dict for any extra fields.

location

Location

Bases: BaseModel

Pydantic model for a Workday location record. raw_data holds the full SOAP response dict for any extra fields.

location_hierarchy_assignments

Pydantic models for Location Hierarchy Organization Assignments.

LocationHierarchyAssignment

Bases: BaseModel

Model for location hierarchy organization assignment.

LocationHierarchyAssignmentsResponse

Bases: BaseModel

Model for the complete location hierarchy assignments response.

LocationHierarchyReference

Bases: BaseModel

Model for location hierarchy reference.

OrganizationAssignment

Bases: BaseModel

Model for organization assignment by type.

OrganizationReference

Bases: BaseModel

Model for organization reference in assignments.

OrganizationTypeReference

Bases: BaseModel

Model for organization type reference.

organizations

Organization

Bases: BaseModel

Complete organization model based on actual Workday payload.

time_block

TimeBlock

Bases: BaseModel

Pydantic model for a Workday calculated time block record. raw_data holds the full SOAP response dict for any extra fields.

time_request

TimeRequest

Bases: BaseModel

Pydantic model for a Workday time request record. raw_data holds the full SOAP response dict for any extra fields.

worker

ManagementChainLevel

Bases: BaseModel

Model for a single level in the management chain

Worker

Bases: BaseModel

Pydantic model for a Workday worker record. raw_data holds the full SOAP response dict for any extra fields.

parsers

parse_benefits_and_roles

parse_benefits_and_roles(worker_data)

Parse benefit enrollments, roles, and worker documents.

parse_business_site

parse_business_site(worker_data)

Parse business site summary data.

parse_compensation_data

parse_compensation_data(worker_data)

Parse the compensation details of the worker.

Extracts
  • wage (float)
  • compensation_effective_date (str)
  • compensation_guidelines (package / grade / profile IDs)
  • salary_and_hourly (list of elements)
  • compensation_summary (nested summary)
  • reason_references (mapping of reason type → ID)

parse_contact_data

parse_contact_data(worker_data)

Parse the contact information (email, address, phone) of the worker.

parse_employment_data

parse_employment_data(worker_data)

Parse employment-related details (position, hours, job profile).

parse_identification_data

parse_identification_data(worker_data)

Parse identification details (national ID, license, custom IDs).

parse_location_data

parse_location_data(location_data)

Parse the main location data from Workday response.

parse_management_chain_data

parse_management_chain_data(worker_data)

Parse management chain data from Worker_Management_Chain_Data.

parse_organization_data

parse_organization_data(org_data)

Parse organization data from Workday SOAP response.

:param org_data: Raw organization data from Workday :return: Parsed Organization model

parse_payroll_and_tax_data

parse_payroll_and_tax_data(worker_data)

Parse payroll and tax related data from Position_Data.

parse_personal_data

parse_personal_data(worker_data)

Parse the personal information of the worker.

parse_position_management_chain_data

parse_position_management_chain_data(worker_data)

Parse management chain data from Position_Management_Chains_Data. This is different from Worker_Management_Chain_Data and contains the actual management chain.

parse_time_block_data

parse_time_block_data(time_block_data)

Parse the main time block data from Workday response.

parse_time_request_data

parse_time_request_data(time_request_data)

Parse time request data from the SOAP response.

parse_worker_organization_data

parse_worker_organization_data(worker_data)

Parse worker organization information from worker data

parse_worker_status

parse_worker_status(worker_data)

Parse worker status details (active, hire/termination dates, eligibility), asegurando no romper si algún _Reference es None.

location_hierarchy_assignments_parsers

Parsers for Location Hierarchy Organization Assignments data.

parse_location_hierarchy_assignment
parse_location_hierarchy_assignment(assignment_data)

Parse location hierarchy organization assignment data.

Parameters:

Name Type Description Default
assignment_data Dict[str, Any]

Raw assignment data from the API (already Location_Hierarchy_Organization_Assignments_Data)

required

Returns:

Type Description
LocationHierarchyAssignment

Parsed LocationHierarchyAssignment object

parse_location_hierarchy_assignments_data
parse_location_hierarchy_assignments_data(raw_data)

Main parser function for location hierarchy assignments data.

Parameters:

Name Type Description Default
raw_data Dict[str, Any]

Raw data from the API response

required

Returns:

Type Description
Dict[str, Any]

Dictionary with parsed assignments and metadata

parse_location_hierarchy_assignments_response
parse_location_hierarchy_assignments_response(response_data)

Parse the complete location hierarchy assignments response.

Parameters:

Name Type Description Default
response_data Dict[str, Any]

Raw response data from the API

required

Returns:

Type Description
List[LocationHierarchyAssignment]

List of parsed LocationHierarchyAssignment objects

parse_location_hierarchy_reference
parse_location_hierarchy_reference(reference_data)

Parse location hierarchy reference data.

Parameters:

Name Type Description Default
reference_data Dict[str, Any]

Raw location hierarchy reference data

required

Returns:

Type Description
LocationHierarchyReference

Parsed LocationHierarchyReference object

parse_organization_assignment
parse_organization_assignment(assignment_data)

Parse organization assignment by type data.

Parameters:

Name Type Description Default
assignment_data Dict[str, Any]

Raw organization assignment data

required

Returns:

Type Description
OrganizationAssignment

Parsed OrganizationAssignment object

parse_organization_reference
parse_organization_reference(org_data)

Parse organization reference data.

Parameters:

Name Type Description Default
org_data Dict[str, Any]

Raw organization reference data

required

Returns:

Type Description
OrganizationReference

Parsed OrganizationReference object

parse_organization_type_reference
parse_organization_type_reference(type_data)

Parse organization type reference data.

Parameters:

Name Type Description Default
type_data Dict[str, Any]

Raw organization type reference data

required

Returns:

Type Description
OrganizationTypeReference

Parsed OrganizationTypeReference object

parse_response_results
parse_response_results(response_data)

Parse response results (pagination info).

Parameters:

Name Type Description Default
response_data Dict[str, Any]

Raw response data from the API

required

Returns:

Type Description
Dict[str, Any]

Dictionary with pagination information

location_parsers

parse_location_data
parse_location_data(location_data)

Parse the main location data from Workday response.

organization_parsers

parse_organization_data
parse_organization_data(org_data)

Parse organization data from Workday SOAP response.

:param org_data: Raw organization data from Workday :return: Parsed Organization model

parse_organizations_response
parse_organizations_response(response_data)

Parse the complete organizations response from Workday.

:param response_data: Raw response data from Workday :return: List of parsed Organization models

time_block_parsers

parse_time_block_data
parse_time_block_data(time_block_data)

Parse the main time block data from Workday response.

time_request_parsers

parse_time_request_data
parse_time_request_data(time_request_data)

Parse time request data from the SOAP response.

worker_parsers

parse_benefits_and_roles
parse_benefits_and_roles(worker_data)

Parse benefit enrollments, roles, and worker documents.

parse_business_site
parse_business_site(worker_data)

Parse business site summary data.

parse_compensation_data
parse_compensation_data(worker_data)

Parse the compensation details of the worker.

Extracts
  • wage (float)
  • compensation_effective_date (str)
  • compensation_guidelines (package / grade / profile IDs)
  • salary_and_hourly (list of elements)
  • compensation_summary (nested summary)
  • reason_references (mapping of reason type → ID)
parse_contact_data
parse_contact_data(worker_data)

Parse the contact information (email, address, phone) of the worker.

parse_employment_data
parse_employment_data(worker_data)

Parse employment-related details (position, hours, job profile).

parse_identification_data
parse_identification_data(worker_data)

Parse identification details (national ID, license, custom IDs).

parse_management_chain_data
parse_management_chain_data(worker_data)

Parse management chain data from Worker_Management_Chain_Data.

parse_payroll_and_tax_data
parse_payroll_and_tax_data(worker_data)

Parse payroll and tax related data from Position_Data.

parse_personal_data
parse_personal_data(worker_data)

Parse the personal information of the worker.

parse_position_management_chain_data
parse_position_management_chain_data(worker_data)

Parse management chain data from Position_Management_Chains_Data. This is different from Worker_Management_Chain_Data and contains the actual management chain.

parse_worker_organization_data
parse_worker_organization_data(worker_data)

Parse worker organization information from worker data

parse_worker_status
parse_worker_status(worker_data)

Parse worker status details (active, hire/termination dates, eligibility), asegurando no romper si algún _Reference es None.

types

LocationType

LocationType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handler for the Workday Get_Locations operation.

execute async
execute(**kwargs)

Execute the Get_Locations operation and return a pandas DataFrame.

Supported parameters: - location_id: Specific location ID to fetch (uses Request_References) - location_name: Filter by location name (uses Request_Criteria) - location_type: Filter by location type - location_usage: Filter by location usage - inactive: Filter by inactive status (True/False)

get_active_locations async
get_active_locations()

Convenience method to get all active locations.

get_location_by_id async
get_location_by_id(location_id)

Convenience method to get a specific location by ID.

get_location_by_name async
get_location_by_name(location_name)

Convenience method to get a specific location by name.

get_locations_by_type async
get_locations_by_type(location_type)

Convenience method to get locations by type.

OrganizationType

OrganizationType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handler for the Workday Get_Organizations operation.

execute async
execute(**kwargs)

Execute the Get_Organizations operation and return a pandas DataFrame.

Supported parameters: - organization_id: Specific organization ID to fetch (uses Request_References) - organization_id_type: Type of organization ID (WID, Organization_Reference_ID, Cost_Center_Reference_ID, etc.) - organization_type: Filter by organization type (Company, Cost Center, Custom, Matrix, Pay Group, Region, Retiree, Supervisory, etc.) - include_inactive: Include inactive organizations (True/False) - enable_transaction_log_lite: Enable transaction log lite (True/False)

get_active_organizations async
get_active_organizations()

Get only active organizations.

:return: DataFrame with active organizations data

get_all_organizations async
get_all_organizations(include_inactive=True)

Get all organizations (active and optionally inactive).

:param include_inactive: Whether to include inactive organizations :return: DataFrame with all organizations data

get_companies async
get_companies()

Get only company organizations.

:return: DataFrame with company organizations data

get_cost_centers async
get_cost_centers()

Get only cost center organizations.

:return: DataFrame with cost center organizations data

get_organization_by_cost_center_id async
get_organization_by_cost_center_id(cost_center_id)

Get a specific organization by Cost Center Reference ID.

:param cost_center_id: The organization Cost Center Reference ID to fetch :return: DataFrame with organization data

get_organization_by_id async
get_organization_by_id(organization_id, id_type='Organization_Reference_ID')

Get a specific organization by ID.

:param organization_id: The organization ID to fetch :param id_type: Type of ID (WID, Organization_Reference_ID, Cost_Center_Reference_ID, etc.) :return: DataFrame with organization data

get_organization_by_wid async
get_organization_by_wid(wid)

Get a specific organization by WID.

:param wid: The organization WID to fetch :return: DataFrame with organization data

get_organizations_by_type async
get_organizations_by_type(organization_type)

Get organizations filtered by type.

:param organization_type: Organization type (Company, Cost Center, Custom, Matrix, Pay Group, Region, Retiree, Supervisory, etc.) :return: DataFrame with organizations data

get_supervisory_organizations async
get_supervisory_organizations()

Get only supervisory organizations.

:return: DataFrame with supervisory organizations data

TimeBlockType

TimeBlockType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handler for the Workday Get_Calculated_Time_Blocks operation.

execute async
execute(**kwargs)

Execute the Get_Calculated_Time_Blocks operation and return a pandas DataFrame.

Supported parameters: - worker_id: Specific worker ID to fetch time blocks for - start_date: Start date for date range filter (YYYY-MM-DD) - end_date: End date for date range filter (YYYY-MM-DD) - time_block_id: Specific time block ID to fetch - status: Filter by status - supervisory_org: Filter by supervisory organization - include_deleted: Whether to include deleted time blocks (default: False)

get_time_blocks_by_date_range async
get_time_blocks_by_date_range(start_date, end_date, status=None)

Convenience method to get time blocks for a date range.

get_time_blocks_by_worker async
get_time_blocks_by_worker(worker_id, start_date=None, end_date=None)

Convenience method to get time blocks for a specific worker.

TimeRequestType

TimeRequestType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handles Get_Time_Requests operation for Workday Time Tracking API.

execute async
execute(**kwargs)

Execute the Get_Time_Requests operation.

get_time_request_by_id async
get_time_request_by_id(time_request_id)

Get a specific time request by ID.

get_time_requests_by_date_range async
get_time_requests_by_date_range(start_date, end_date)

Get all time requests within a date range.

get_time_requests_by_organization async
get_time_requests_by_organization(supervisory_organization_id, start_date=None, end_date=None)

Get time requests for a specific organization within an optional date range.

get_time_requests_by_worker async
get_time_requests_by_worker(worker_id, start_date=None, end_date=None)

Get time requests for a specific worker within an optional date range.

safe_serialize
safe_serialize(df)

Safely serialize the DataFrame for JSON output.

WorkerType

WorkerType(component, max_retries=5, retry_delay=0.2)

Bases: WorkdayTypeBase

Handler for the Workday Get_Workers operation, batching pages so that no more than max_parallel requests run concurrently.

:param component: Component instance :param max_retries: Maximum retry attempts (default: 5 for connection resilience) :param retry_delay: Base delay between retries in seconds (default: 0.5 for exponential backoff)

execute async
execute(**kwargs)

Execute the Get_Workers operation and return a pandas DataFrame.

If worker_id is provided, fetches only that one; otherwise fetches all pages in batches of at most max_parallel concurrent requests.

base

WorkdayTypeBase
WorkdayTypeBase(component, max_retries=3, retry_delay=0.5)

Bases: ABC

Base class for Workday operation types.

Provides
  • Default payload structure for all Workday operations.
  • Generic pagination logic with retries and logging.
  • Common SOAP response handling utilities.

:param component: Component instance (used for run, logger, metrics). :param max_retries: Maximum number of retry attempts per page on failure. :param retry_delay: Seconds to wait between retry attempts.

execute abstractmethod async
execute(**kwargs)

Execute the specific operation logic. Must be implemented by subclasses.

location_hierarchy_assignments

Get_Location_Hierarchy_Organization_Assignments operation handler.

This module handles the Get_Location_Hierarchy_Organization_Assignments operation which retrieves organization assignments for location hierarchies.

LocationHierarchyAssignmentsType
LocationHierarchyAssignmentsType(component, max_retries=5, retry_delay=2.0, **kwargs)

Bases: WorkdayTypeBase

Handler for Get_Location_Hierarchy_Organization_Assignments operation.

Retrieves organization assignments for location hierarchies.

:param component: Component instance :param max_retries: Maximum retry attempts (default: 5 for connection resilience) :param retry_delay: Delay between retries in seconds (default: 2.0 for API rate limiting) :param kwargs: Additional parameters

execute async
execute(**kwargs)

Execute Get_Location_Hierarchy_Organization_Assignments operation.

Parameters:

Name Type Description Default
**kwargs

Additional parameters including: - location_hierarchy_ids: List of location hierarchy IDs to fetch - location_hierarchy_id_type: Type of ID (WID, Organization_Reference_ID) - as_of_effective_date: Date for effective data - as_of_entry_datetime: Date/time for entry data - page: Page number for pagination - count: Number of results per page

{}

Returns:

Type Description
DataFrame

pandas DataFrame containing the location hierarchy organization assignments

get_all_assignments async
get_all_assignments(**kwargs)

Get all location hierarchy organization assignments.

Parameters:

Name Type Description Default
**kwargs

Additional parameters for filtering

{}

Returns:

Type Description
DataFrame

DataFrame with all location hierarchy organization assignments

get_assignments_by_location_hierarchy async
get_assignments_by_location_hierarchy(location_hierarchy_id, id_type='Organization_Reference_ID')

Get organization assignments for a specific location hierarchy.

Parameters:

Name Type Description Default
location_hierarchy_id str

The location hierarchy ID to fetch

required
id_type str

Type of ID (WID, Organization_Reference_ID)

'Organization_Reference_ID'

Returns:

Type Description
DataFrame

DataFrame with organization assignments for the location hierarchy

locations

LocationType
LocationType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handler for the Workday Get_Locations operation.

execute async
execute(**kwargs)

Execute the Get_Locations operation and return a pandas DataFrame.

Supported parameters: - location_id: Specific location ID to fetch (uses Request_References) - location_name: Filter by location name (uses Request_Criteria) - location_type: Filter by location type - location_usage: Filter by location usage - inactive: Filter by inactive status (True/False)

get_active_locations async
get_active_locations()

Convenience method to get all active locations.

get_location_by_id async
get_location_by_id(location_id)

Convenience method to get a specific location by ID.

get_location_by_name async
get_location_by_name(location_name)

Convenience method to get a specific location by name.

get_locations_by_type async
get_locations_by_type(location_type)

Convenience method to get locations by type.

organization_single

Get_Organization operation handler.

This module handles the Get_Organization operation which retrieves a specific organization by its ID (singular, not plural).

GetOrganization
GetOrganization(client, **kwargs)

Bases: WorkdayTypeBase

Handler for Get_Organization operation.

Retrieves a specific organization by its ID.

execute async
execute(organization_id, organization_id_type='Organization_Reference_ID', **kwargs)

Execute Get_Organization operation to retrieve a specific organization.

Parameters:

Name Type Description Default
organization_id str

The ID of the organization to retrieve

required
organization_id_type str

The type of ID (Organization_Reference_ID, WID, etc.)

'Organization_Reference_ID'
**kwargs

Additional parameters

{}

Returns:

Type Description
DataFrame

pandas DataFrame containing the organization data

get_organization_by_custom_id async
get_organization_by_custom_id(custom_id, **kwargs)

Get organization by Custom_Organization_Reference_ID.

Parameters:

Name Type Description Default
custom_id str

The Custom_Organization_Reference_ID

required
**kwargs

Additional parameters

{}

Returns:

Type Description
DataFrame

pandas DataFrame containing the organization data

get_organization_by_reference_id async
get_organization_by_reference_id(reference_id, **kwargs)

Get organization by Organization_Reference_ID.

Parameters:

Name Type Description Default
reference_id str

The Organization_Reference_ID

required
**kwargs

Additional parameters

{}

Returns:

Type Description
DataFrame

pandas DataFrame containing the organization data

get_organization_by_wid async
get_organization_by_wid(wid, **kwargs)

Get organization by WID.

Parameters:

Name Type Description Default
wid str

The WID of the organization

required
**kwargs

Additional parameters

{}

Returns:

Type Description
DataFrame

pandas DataFrame containing the organization data

organizations

OrganizationType
OrganizationType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handler for the Workday Get_Organizations operation.

execute async
execute(**kwargs)

Execute the Get_Organizations operation and return a pandas DataFrame.

Supported parameters: - organization_id: Specific organization ID to fetch (uses Request_References) - organization_id_type: Type of organization ID (WID, Organization_Reference_ID, Cost_Center_Reference_ID, etc.) - organization_type: Filter by organization type (Company, Cost Center, Custom, Matrix, Pay Group, Region, Retiree, Supervisory, etc.) - include_inactive: Include inactive organizations (True/False) - enable_transaction_log_lite: Enable transaction log lite (True/False)

get_active_organizations async
get_active_organizations()

Get only active organizations.

:return: DataFrame with active organizations data

get_all_organizations async
get_all_organizations(include_inactive=True)

Get all organizations (active and optionally inactive).

:param include_inactive: Whether to include inactive organizations :return: DataFrame with all organizations data

get_companies async
get_companies()

Get only company organizations.

:return: DataFrame with company organizations data

get_cost_centers async
get_cost_centers()

Get only cost center organizations.

:return: DataFrame with cost center organizations data

get_organization_by_cost_center_id async
get_organization_by_cost_center_id(cost_center_id)

Get a specific organization by Cost Center Reference ID.

:param cost_center_id: The organization Cost Center Reference ID to fetch :return: DataFrame with organization data

get_organization_by_id async
get_organization_by_id(organization_id, id_type='Organization_Reference_ID')

Get a specific organization by ID.

:param organization_id: The organization ID to fetch :param id_type: Type of ID (WID, Organization_Reference_ID, Cost_Center_Reference_ID, etc.) :return: DataFrame with organization data

get_organization_by_wid async
get_organization_by_wid(wid)

Get a specific organization by WID.

:param wid: The organization WID to fetch :return: DataFrame with organization data

get_organizations_by_type async
get_organizations_by_type(organization_type)

Get organizations filtered by type.

:param organization_type: Organization type (Company, Cost Center, Custom, Matrix, Pay Group, Region, Retiree, Supervisory, etc.) :return: DataFrame with organizations data

get_supervisory_organizations async
get_supervisory_organizations()

Get only supervisory organizations.

:return: DataFrame with supervisory organizations data

time_blocks

TimeBlockType
TimeBlockType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handler for the Workday Get_Calculated_Time_Blocks operation.

execute async
execute(**kwargs)

Execute the Get_Calculated_Time_Blocks operation and return a pandas DataFrame.

Supported parameters: - worker_id: Specific worker ID to fetch time blocks for - start_date: Start date for date range filter (YYYY-MM-DD) - end_date: End date for date range filter (YYYY-MM-DD) - time_block_id: Specific time block ID to fetch - status: Filter by status - supervisory_org: Filter by supervisory organization - include_deleted: Whether to include deleted time blocks (default: False)

get_time_blocks_by_date_range async
get_time_blocks_by_date_range(start_date, end_date, status=None)

Convenience method to get time blocks for a date range.

get_time_blocks_by_worker async
get_time_blocks_by_worker(worker_id, start_date=None, end_date=None)

Convenience method to get time blocks for a specific worker.

time_requests

TimeRequestType
TimeRequestType(component, max_retries=3, retry_delay=0.5)

Bases: WorkdayTypeBase

Handles Get_Time_Requests operation for Workday Time Tracking API.

execute async
execute(**kwargs)

Execute the Get_Time_Requests operation.

get_time_request_by_id async
get_time_request_by_id(time_request_id)

Get a specific time request by ID.

get_time_requests_by_date_range async
get_time_requests_by_date_range(start_date, end_date)

Get all time requests within a date range.

get_time_requests_by_organization async
get_time_requests_by_organization(supervisory_organization_id, start_date=None, end_date=None)

Get time requests for a specific organization within an optional date range.

get_time_requests_by_worker async
get_time_requests_by_worker(worker_id, start_date=None, end_date=None)

Get time requests for a specific worker within an optional date range.

safe_serialize
safe_serialize(df)

Safely serialize the DataFrame for JSON output.

workers

WorkerType
WorkerType(component, max_retries=5, retry_delay=0.2)

Bases: WorkdayTypeBase

Handler for the Workday Get_Workers operation, batching pages so that no more than max_parallel requests run concurrently.

:param component: Component instance :param max_retries: Maximum retry attempts (default: 5 for connection resilience) :param retry_delay: Base delay between retries in seconds (default: 0.5 for exponential backoff)

execute async
execute(**kwargs)

Execute the Get_Workers operation and return a pandas DataFrame.

If worker_id is provided, fetches only that one; otherwise fetches all pages in batches of at most max_parallel concurrent requests.

utils

ensure_list

ensure_list(val)

Convert a potentially singular value to a list.

extract_by_type

extract_by_type(ids, desired_type)

Given a list of {'_value_1':…, 'type':…} dicts (or a single dict), return the _value_1 whose type matches desired_type, or None.

first

first(v)

Helper to get first item of a list or dict, or empty dict if neither.

safe_serialize

safe_serialize(val)

Serialize Decimal, list or dict into JSON-friendly string, or return empty string if None.

utils

ensure_list
ensure_list(val)

Convert a potentially singular value to a list.

extract_by_type
extract_by_type(ids, desired_type)

Given a list of {'_value_1':…, 'type':…} dicts (or a single dict), return the _value_1 whose type matches desired_type, or None.

extract_nested
extract_nested(data, path)

Helper to extract nested data from a dict given a list of keys.

first
first(v)

Helper to get first item of a list or dict, or empty dict if neither.

safe_serialize
safe_serialize(val)

Serialize Decimal, list or dict into JSON-friendly string, or return empty string if None.

workday

Workday

Workday(*, loop=None, job=None, stat=None, **kwargs)

Bases: SOAPClient, FlowComponent

Workday Component

Overview

The Workday class is a Flowtask component for the Workday SOAP API. It encapsulates all Workday-specific logic, including authentication, request/response handling, and data normalization.

Properties

type (str): Operation type to perform (e.g. 'get_workers', 'get_time_blocks') worker_id (str): Optional worker ID to fetch a specific worker use_storage (bool): Enable data storage functionality storage_path (str): Path where to store the data files

Returns:

Type Description

Returns a pandas DataFrame with the requested data.

Examples:

# Basic usage
Workday:
  type: get_workers 
  worker_id: "72037046323885"

# With storage enabled
Workday:
  type: get_workers
  use_storage: true
  storage_path: "/data/workday"

# Location hierarchy assignments with storage
Workday:
  type: get_location_hierarchy_assignments
  use_storage: true
  storage_path: "/data/workday"

# Organizations with storage
Workday:
  type: get_organizations
  organization_type: "Cost_Center"
  use_storage: true
  storage_path: "/data/workday"
add_metric
add_metric(key, value)

Add a metric to track

close async
close()

Cleanup resources

run async
run(operation=None, **kwargs)

Execute the component's main operation

serialize_object
serialize_object(obj)

Helper to serialize SOAP objects

start async
start(**kwargs)

Initialize the component