{ "info": { "author": "Anthony Shaw", "author_email": "anthonyshaw@apache.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "# Python client for Workday\n\nThis is a Python client (2.7 or 3.4+) for communicating with one of the Workday XML/SOAP APIs.\n\n[![PyPI version](https://badge.fury.io/py/workday.svg)](https://badge.fury.io/py/workday)\n[![Build Status](https://travis-ci.com/tonybaloney/workday.svg?branch=master)](https://travis-ci.com/tonybaloney/workday)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/ambv/black)\n\n# Features\n\nThis client \n* facilitates the authentication to a Workday SOAP API (Workday Web Services) and the parsing of data.\n* supports Anonymous, Basic HTTP and WS-Security (which is the prefered configuration in Workday)\n* allows the setup of multiple WWS endpoints\n* native paging support for all responses from the API using Python iterators\n\n# Configuring WSDLs\n\nThe first parameter of the `WorkdayClient` constructor is a dictionary. This dictinary contains all the APIs you want to access and the endpoints of them.\n\nThe key used in the dictionary will then become a *property* of the client instance with the methods for that API.\n\n```python\nimport workday\n\napis = {\n 'talent': 'https://workday.com/tenant/434$sd.xml',\n 'hcm': 'https://workday.com/tenant/hcm$sd.xml'\n}\n\nclient = workday.WorkdayClient(\n wsdls=apis, \n authentication=... \n )\n\nusers = client.hcm.Get_Users()\n```\n\nAny calls to an API method will return an instance of `workday.client.WorkdayResponse`. \n\nIf you want to page results, an instance of `WorkdayResponse` is iterable, for example:\n\n```python\nresults = []\nfor certs in client.talent.Get_Certifications(): # Loops over all available pages\n results.extend(certs.data['Certification'])\nprint(results)\n```\n\nThe data will be in the `data` property of any API response.\n\n# Authentication Examples\n\nAll authentication methods are in the `workday.auth` module and the instance of them should be passed to the `WorkdayClient` constructor as the `authentication` argument.\n\n## No authentication\n\n```python\nfrom workday.auth import AnonymousAuthentication\n\nanon = AnonymousAuthentication()\n\nclient = workday.WorkdayClient(\n authentiation=anon,\n ...\n)\n```\n\n\n## WS-Security username/password\n\n```python\nfrom workday.auth import WsSecurityCredentialAuthentication\n\nauth = WsSecurityCredentialAuthentication('my_user@tenant_name', 'mypassword')\n\nclient = workday.WorkdayClient(\n authentiation=auth,\n ...\n)\n```\n\n## WS-Security X509-only authentication\n\n```python\nfrom workday.auth import WsSecurityCertificateAuthentication\n\nauth = WsSecurityCertificateAuthentication('/path/to/private.key', '/path/to/public.key')\n\nclient = workday.WorkdayClient(\n authentiation=auth,\n ...\n)\n```\n\n## WS-Security X509-only signed credentials (Recommended by Workday)\n\n```python\nfrom workday.auth import WsSecurityCertificateCredentialAuthentication\n\nauth = WsSecurityCertificateCredentialAuthentication(\n 'user@tenant',\n 'password',\n '/path/to/private.key',\n '/path/to/public.key')\n\nclient = workday.WorkdayClient(\n authentiation=auth,\n ...\n)\n```\n\n# Example\n\nThis simple example returns a list of dictionaries back from the Workday API for each configured language.\n\n```python\n\nimport workday\nfrom workday.auth import WsSecurityCredentialAuthentication\n\nclient = workday.WorkdayClient(\n wsdls={'talent': 'https://workday.com/tenant/434$sd.xml'}, \n authentication=WsSecurityCredentialAuthentication(config['user'], config['password']), \n )\n\nprint(client.talent.Get_Languages().data)\n```\n\n# Credits\n\nThis module was written by Anthony Shaw at Dimension Data\n\n# Contributions\n\nAlways welcome. See CONTRIBUTING.rst\n\n=======\nHistory\n=======\n\n0.4.0 (2018-06-27)\n------------------\n\n* Implemented paging by making WorkdayResponse objects iterable\n\n0.3.0 (2018-06-23)\n------------------\n\n* Added test framework, setup package for distribution\n\n0.2.0 (2018-06-22)\n------------------\n\n* WS-Security support\n* Protected WSDL support\n* Paging support\n\n0.1.0 (2018-06-22)\n------------------\n\n* First release on PyPI.\n* Template for Talent API (SOAP) method execution\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tonybaloney/workday", "keywords": "workday", "license": "Apache License (2.0)", "maintainer": "", "maintainer_email": "", "name": "workday", "package_url": "https://pypi.org/project/workday/", "platform": "", "project_url": "https://pypi.org/project/workday/", "project_urls": { "Homepage": "https://github.com/tonybaloney/workday" }, "release_url": "https://pypi.org/project/workday/0.4.0/", "requires_dist": [ "zeep (<4.0.0,>=3.0.0)", "requests", "six" ], "requires_python": "", "summary": "Python client for Workday tenants", "version": "0.4.0" }, "last_serial": 4005856, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "4500ae54733f6e488edef81eb2c97a4e", "sha256": "e54d3b53f1204995678f9dbc2d51de8d547f6e108b03c7323a40b9851891c4bc" }, "downloads": -1, "filename": "workday-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4500ae54733f6e488edef81eb2c97a4e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 2898, "upload_time": "2018-06-22T00:51:01", "url": "https://files.pythonhosted.org/packages/bd/dc/2edfcd44c9540bd49bde25e91db41b4b1af91c564a1f2577cef7eb6fc9a3/workday-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "beddfdc6a92ad6fc00aa8067e2413a8c", "sha256": "c9a84d9861bb2a102505feae3faf780856be210c8b072f7d997bd260e6b79f7b" }, "downloads": -1, "filename": "workday-0.1.0.tar.gz", "has_sig": false, "md5_digest": "beddfdc6a92ad6fc00aa8067e2413a8c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4460, "upload_time": "2018-06-22T00:51:03", "url": "https://files.pythonhosted.org/packages/1c/86/fb2628d8bf97c86b0f86bb03dc9132ee1d2bda843ffd4401090b335a2715/workday-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "7a6e167a000b5a9d1434b240154adb0b", "sha256": "e788204d50b9ea0bebb669637a88652f8ce66471c28dee9dfea32cf04627513c" }, "downloads": -1, "filename": "workday-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a6e167a000b5a9d1434b240154adb0b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 6869, "upload_time": "2018-06-22T06:09:07", "url": "https://files.pythonhosted.org/packages/83/80/ed6e67d624c1355514bb5bfa3e0cd8f7a8d37cc28ea49f76473c0dd13dba/workday-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0e23ba74ca7dc5f642e505eff5e3e6cc", "sha256": "e802299cda735838c89a823ef64570c7fe6a101df8f41bf17c97bb68b1de5c70" }, "downloads": -1, "filename": "workday-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0e23ba74ca7dc5f642e505eff5e3e6cc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9790, "upload_time": "2018-06-22T06:09:09", "url": "https://files.pythonhosted.org/packages/08/27/fe5e0a9b2a5909865e6dc39893fb2a237caad419ea9ad870869695b249ae/workday-0.2.0.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "d306de08ae44e0856acd1bca5d24c1ef", "sha256": "c7b52bc79529c70cb1a985c25ec6443616c97eeede542c896b9205dae4da0e0d" }, "downloads": -1, "filename": "workday-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d306de08ae44e0856acd1bca5d24c1ef", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 7088, "upload_time": "2018-06-23T10:01:38", "url": "https://files.pythonhosted.org/packages/c8/ed/91f3c893d3adbdf0e3e075d8070f30dd64e11556046857d8029a17f042c3/workday-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d2c09fe76fb90da2ac48be753e40678d", "sha256": "2879e5d495fdf644a9c3f381faacefaf404b434c2ca72014c64ea26132c15cde" }, "downloads": -1, "filename": "workday-0.3.0.tar.gz", "has_sig": false, "md5_digest": "d2c09fe76fb90da2ac48be753e40678d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 459895, "upload_time": "2018-06-23T10:01:42", "url": "https://files.pythonhosted.org/packages/74/d0/b309c900f9feb3ff51ca25f0caacd1df33867e6f7479efe7e150059af98d/workday-0.3.0.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "a5041c164219d24a811ba1ec67b50c98", "sha256": "89eb255271f94c9d6d72d770c0cd2f9cc41ac10cbe8e2d14c95597e6bc2dd9f6" }, "downloads": -1, "filename": "workday-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a5041c164219d24a811ba1ec67b50c98", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8641, "upload_time": "2018-06-27T03:20:27", "url": "https://files.pythonhosted.org/packages/5e/0f/ca5f885801258f69bbf8bbb2a018e45982dc7394036a4c21164bcd8502c2/workday-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc65d356daa19db49f62c46ea6993cef", "sha256": "c882b6c014b0db14fce0a66863e6f047477f787dafffcdeabd0083208807293c" }, "downloads": -1, "filename": "workday-0.4.0.tar.gz", "has_sig": false, "md5_digest": "cc65d356daa19db49f62c46ea6993cef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1002223, "upload_time": "2018-06-27T03:20:33", "url": "https://files.pythonhosted.org/packages/4c/4c/c488b0bcefdad0efcd70f8d0950f4aff18661ae4a3914de2c7fcbbe56b5f/workday-0.4.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "a5041c164219d24a811ba1ec67b50c98", "sha256": "89eb255271f94c9d6d72d770c0cd2f9cc41ac10cbe8e2d14c95597e6bc2dd9f6" }, "downloads": -1, "filename": "workday-0.4.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "a5041c164219d24a811ba1ec67b50c98", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8641, "upload_time": "2018-06-27T03:20:27", "url": "https://files.pythonhosted.org/packages/5e/0f/ca5f885801258f69bbf8bbb2a018e45982dc7394036a4c21164bcd8502c2/workday-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cc65d356daa19db49f62c46ea6993cef", "sha256": "c882b6c014b0db14fce0a66863e6f047477f787dafffcdeabd0083208807293c" }, "downloads": -1, "filename": "workday-0.4.0.tar.gz", "has_sig": false, "md5_digest": "cc65d356daa19db49f62c46ea6993cef", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 1002223, "upload_time": "2018-06-27T03:20:33", "url": "https://files.pythonhosted.org/packages/4c/4c/c488b0bcefdad0efcd70f8d0950f4aff18661ae4a3914de2c7fcbbe56b5f/workday-0.4.0.tar.gz" } ] }