Skip to main content

dayforce-client

PyPI version PyPI - Status Build Status PyPI - Python Version PyPI - License

dayforce-client is a python SDK for interfacing with the Dayforce REST API and SFTP server.

Installation

$ pip3 install dayforce-client

Basic Usage (Rest API)

The main interface to the Dayforce REST API is the Dayforce class. You can instantiate the Dayforce class by supplying a few authentication and configuration arguments:

import os

from dayforce_client.client import Dayforce

DAYFORCE_USERNAME = os.environ["DAYFORCE_USERNAME"]
DAYFORCE_PASSWORD = os.environ["DAYFORCE_PASSWORD"]
DAYFORCE_CLIENT_NAMESPACE = os.environ["DAYFORCE_CLIENT_NAMESPACE"]

df = Dayforce(username=DAYFORCE_USERNAME,
              password=DAYFORCE_PASSWORD,
              client_namespace=DAYFORCE_CLIENT_NAMESPACE)

All get_ methods on the Dayforce class will return a DayforceReponse object. A DayforceReponse object contains the Dayforce instance used to make the call, the parameters used in the request, and the response received from the API:

resp = df.get_employee_details(xrefcode='12345')
print(resp.client)
print(type(resp.client))
print(resp.params)
print(type(resp.resp))
print(resp.resp.url)
print(resp.resp.status_code)
print(resp.resp.ok)
print(resp.resp.elapsed)

...


Dayforce(username='your-username', client_namespace='your-client-namespace', dayforce_release=57, api_version='V1', url='https://usr57-services.dayforcehcm.com/Api/your-client-namespace/V1')
<class 'dayforce_client.client.Dayforce'>
{}
<class 'requests.models.Response'>
https://usr57-services.dayforcehcm.com/Api/your-client-namespace/V1/Employees/12345
200
True
0:00:00.550066

Query Parameters

Certain methods also accept keyword arguments that will be used as query parameters for the request:

resp = df.get_employee_details(xrefcode='12345', expand='WorkAssignments')
print(resp.resp.url)

Output:

https://usr57-services.dayforcehcm.com/Api/your-client-namespace/V1/Employees/12345?expand=WorkAssignments

Accessing Response Content

Response contents can accessed using .get() syntax:

resp = df.get_employee_details(xrefcode='12345')
print(resp.get("Data"))

Pagination

Responses can also optionally be paginated using iteration syntax:

for page in df.get_employee_raw_punches():
  for raw_punch in page.get("Data"):
    print(raw_punch)

Yielding Resource Records

Optionally, you can use the DayforceResponse .yield_records() method to handle response pagination and yieliding resource records. The method will paginate the response and iterate through response content to yield single resource records for the given resource and the corresponding DayforceResponse instance:

for page, employee in df.get_employees().yield_records():
    print(employee)
    print(page)

...

{'XRefCode': '12345'}
DayforceResponse(client=Dayforce(username='your-username', client_namespace='your-client-namespace', dayforce_release=57, api_version='V1', url='https://usr57-services.dayforcehcm.com/Api/your-client-namespace/V1'), params={}, resp=<Response [200]>)
{'XRefCode': '67891'}
DayforceResponse(client=Dayforce(username='your-username', client_namespace='your-client-namespace', dayforce_release=57, api_version='V1', url='https://usr57-services.dayforcehcm.com/Api/your-client-namespace/V1'), params={}, resp=<Response [200]>)

Basic Usage (SFTP client)

client = DayforceSFTP(
  hostname='foo01.dayforcehcm.com',
  username='mycompany',
  password='sekret',
  disable_host_key_checking=True,
)
client.connect()

Using disable_host_key_checking is discouraged, however. Instead, use ssh-keyscan to retrieve a known-good key (better yet, see if Dayforce will provide it to you!) and pass it in to the construtor.

ssh-keyscan foo01.dayforcehcm.com
# foo01.dayforcehcm.com:22 SSH-2.0-9.99 FlowSsh: Bitvise SSH Server (WinSSHD)
foo01.dayforcehcm.com ssh-rsa AAAAB3...snip...XYZ
client = DayforceSFTP(
  hostname='foo01.dayforcehcm.com',
  username='mycompany',
  password='sekret',
  host_key='AAAAB3...snip...XYZ',
)
client.connect()

Batch Imports

Dayforce provides the ability to batch import data via SFTP. This client wraps up most of the business logic around this process, and exposes a simple, high-level API.

from dayforce import DayforceSFTP, ImportError, ImportPending

client = DayforceSFTP(hostname=...)
with client.connect():
  batch_token = client.put_import('./local/path/to/batch-20191225T000000.csv', type='KpiTargetImport')
  while True:
    try:
      client.raise_for_import_status(batch_token)
      print('batch import succeeded')
      break
    except ImportPending e:
      sleep 10
      continue
    except ImportError e:
      print('batch import failed')
      break

Development

python3 -m venv install .venv
source .venv/bin/activate
make dev_install
make test

Release files for dayforce-client 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dayforce-client 2.0.0
File Size Uploaded
dayforce_client-2.0.0.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dayforce-client 2.0.0
File Interpreter ABI Platform
dayforce_client-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size:15.4 kB

Release files / dayforce_client-2.0.0.tar.gz

Download URL dayforce_client-2.0.0.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
25f43e822634a3514a89227547ba943111591b981bc78bec076297bc9b6584e5
BLAKE2b-256 checksum
How to use checksums
9857e0b3a5023ddeae26a6d5975e46bf31ccabb2883410675a447731ac2a9ac1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.10

Release files / dayforce_client-2.0.0-py3-none-any.whl

Download URL dayforce_client-2.0.0-py3-none-any.whl
Size 8.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
53aabfb5f1db7fd491f47b560ffc9c23e99f02a1b87bbcf0e1c4cb8382bea8e0
BLAKE2b-256 checksum
How to use checksums
d52196305093f5e2bb669435f7ffb10b21abd60766073e21fc6b84306b780fa9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.8.10

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

1.1.0

2 release files

1.0.1

2 release files

1.0.0

1 release file

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page