Package: workday
# Python client for WorkdayThis is a Python client (2.7 or 3.4+) for communicating with one of the Workday XML/SOAP APIs.[![PyPI version](https://badge.fury.io/py/workday.svg)](https://badge.fury.io/py/workday)[![Build Status](https://travis-ci.com/tonybaloney/workday.svg?branch=master)](https://travis-ci.com/tonybaloney/workday)[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)# FeaturesThis client* facilitates the authentication to a Workday SOAP API (Workday Web Services) and the parsing of data.* supports Anonymous, Basic HTTP and WS-Security (which is the prefered configuration in Workday)* allows the setup of multiple WWS endpoints* native paging support for all responses from the API using Python iterators# Configuring WSDLsThe first parameter of the `WorkdayClient` constructor is a dictionary. This dictinary contains all the APIs you want to access and the endpoints of them.The key used in the dictionary will then become a *property* of the client instance with the methods for that API.```pythonimport workdayapis = {'talent': 'https://workday.com/tenant/434$sd.xml','hcm': 'https://workday.com/tenant/hcm$sd.xml'}client = workday.WorkdayClient(wsdls=apis,authentication=...)users = client.hcm.Get_Users()```Any calls to an API method will return an instance of `workday.client.WorkdayResponse`.If you want to page results, an instance of `WorkdayResponse` is iterable, for example:```pythonresults = []for certs in client.talent.Get_Certifications():  # Loops over all available pagesresults.extend(certs.data['Certification'])print(results)```The data will be in the `data` property of any API response.# Authentication ExamplesAll authentication methods are in the `workday.auth` module and the instance of them should be passed to the `WorkdayClient` constructor as the `authentication` argument.## No authentication```pythonfrom workday.auth import AnonymousAuthenticationanon = AnonymousAuthentication()client = workday.WorkdayClient(authentiation=anon,...)```## WS-Security username/password```pythonfrom workday.auth import WsSecurityCredentialAuthenticationauth = WsSecurityCredentialAuthentication('my_user@tenant_name', 'mypassword')client = workday.WorkdayClient(authentiation=auth,...)```## WS-Security X509-only authentication```pythonfrom workday.auth import WsSecurityCertificateAuthenticationauth = WsSecurityCertificateAuthentication('/path/to/private.key', '/path/to/public.key')client = workday.WorkdayClient(authentiation=auth,...)```## WS-Security X509-only signed credentials (Recommended by Workday)```pythonfrom workday.auth import WsSecurityCertificateCredentialAuthenticationauth = WsSecurityCertificateCredentialAuthentication('user@tenant','password','/path/to/private.key','/path/to/public.key')client = workday.WorkdayClient(authentiation=auth,...)```# ExampleThis simple example returns a list of dictionaries back from the Workday API for each configured language.```pythonimport workdayfrom workday.auth import WsSecurityCredentialAuthenticationclient = workday.WorkdayClient(wsdls={'talent': 'https://workday.com/tenant/434$sd.xml'},authentication=WsSecurityCredentialAuthentication(config['user'], config['password']),)print(client.talent.Get_Languages().data)```# CreditsThis module was written by Anthony Shaw at Dimension Data# ContributionsAlways welcome. See CONTRIBUTING.rst=======History=======0.4.0 (2018-06-27)------------------* Implemented paging by making WorkdayResponse objects iterable0.3.0 (2018-06-23)------------------* Added test framework, setup package for distribution0.2.0 (2018-06-22)------------------* WS-Security support* Protected WSDL support* Paging support0.1.0 (2018-06-22)------------------* First release on PyPI.* Template for Talent API (SOAP) method execution