{ "info": { "author": "Dan Goscomb", "author_email": "dan@flowplex.co.uk", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "# PyDynamics\n\nClient and Query Builder for On-Premise Microsoft Dynamics CRM.\n\n## Getting an Auth Token\nThe first task would be to fetch an authentication token. To do this pass your username and password to the token.get() function along with the URL of your CRM instance.\n```python\nfrom pydynamics import token\ntok = token.get('https://crm.domain.com/', 'DOMAIN\\\\username', 'password')\n```\nThe returned token can then be used in subsequent client calls.\n\n## Create a client instance\nPass the token generated above to the Client constructor along with the API URL.\n```python\nfrom pydynamics.client import Client\nclient = Client(tok, 'https://crm.domain.com/INSTANCE/api/data/v8.1/')\n```\n\n## Building Queries\nThe package includes a query builder.\n\n### Select a single item\nThe below example returns a single contact record, selected on its GUID and selects 3 specific fields to return. the select() part is optional, a default field set will be returned if it is omitted.\n```python\nfrom pydynamics.querybuilder import QueryBuilder\nq = QueryBuilder('contacts').guid('1bf1c4cf-1ed1-e311-941c-0050568a018c').\\\n select(['firstname','lastname', 'emailaddress1'])\nresult = client.select(q)\n```\n\n### Select based on filters\nThe below example returns the first 2, based on the limit(), contacts that contain the string \"flowplex\" within the emailaddress1 field and implements ordering and return field selection.\n```python\nfrom pydynamics.querybuilder import QueryBuilder\nq = QueryBuilder('contacts').\\\n filter('emailaddress1', 'contains', 'flowplex', 'str').\\\n select(['firstname','lastname', 'emailaddress1']).\\\n order(['lastname'],'asc').limit(0 ,2)\nresult = client.select(q)\n```\n\n### Create a record\nThe below creates a contact entity with the data provided to the query builder. The GUID of the new item will be returned if successful.\n```python\nfrom pydynamics.querybuilder import QueryBuilder\nq = QueryBuilder('contacts').data({\n 'firstname': 'Dan',\n 'lastname': 'Test',\n 'emailaddress1': 'dan@fdsdsds.com'\n })\nguid = client.create(q)\n```\n\n### Update a record\nThe below updates the firstname field on the specific contact record.\n```python\nfrom pydynamics.querybuilder import QueryBuilder\nq = QueryBuilder('contacts').guid('1bf1c4cf-1ed1-e311-941c-0050568a018c').\\\n data({'firstname': 'Daniel'})\nclient.update(q)\n```", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/dangoscomb/pydynamics", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pydynamics", "package_url": "https://pypi.org/project/pydynamics/", "platform": "", "project_url": "https://pypi.org/project/pydynamics/", "project_urls": { "Homepage": "https://github.com/dangoscomb/pydynamics" }, "release_url": "https://pypi.org/project/pydynamics/0.0.8/", "requires_dist": null, "requires_python": ">=3", "summary": "Talk to On-Prem Dynamics CRM", "version": "0.0.8" }, "last_serial": 5676331, "releases": { "0.0.3": [ { "comment_text": "", "digests": { "md5": "cb643e5447a5c4d5c58bf2e5fa33b74f", "sha256": "45060cd9801d7c64c39335326adc1635f4833dd5a8e358169b2dd33ba96b43c8" }, "downloads": -1, "filename": "pydynamics-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "cb643e5447a5c4d5c58bf2e5fa33b74f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 5802, "upload_time": "2018-12-29T22:23:43", "url": "https://files.pythonhosted.org/packages/44/a4/517f4ed7ebeede8a57dc08fa7fd2a37aa62614efcdafea94be081cc4d5f0/pydynamics-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9eb0bbacb53589c7d8f1cd9d1f15742f", "sha256": "29496cc48ff0bc28e9cfa39aeaa7e08336e1229a222419acf4622dd21ddaba3b" }, "downloads": -1, "filename": "pydynamics-0.0.3.tar.gz", "has_sig": false, "md5_digest": "9eb0bbacb53589c7d8f1cd9d1f15742f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4091, "upload_time": "2018-12-29T22:23:45", "url": "https://files.pythonhosted.org/packages/d1/46/d9a4c3c43ed8f5f01434689df13117b0408fadb6817e3045dcf1a7204bd6/pydynamics-0.0.3.tar.gz" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "5c156d4012a945671d3580dfe2dcbf0e", "sha256": "1686e29100d3e5587e742d217298eee2d932118d4e954b456f6b54b56a2f3ad1" }, "downloads": -1, "filename": "pydynamics-0.0.4-py3-none-any.whl", "has_sig": false, "md5_digest": "5c156d4012a945671d3580dfe2dcbf0e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6568, "upload_time": "2018-12-30T10:47:55", "url": "https://files.pythonhosted.org/packages/6b/76/c4032f67034a33d773078affc0fb384e71294c3e322f5d8db47cac03724f/pydynamics-0.0.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b976f347188d584a522505799e7fec36", "sha256": "3ba5a2bb0ac6300ee7fba8c6269a55da612bbc77331f8344c7966bdc93d86b0a" }, "downloads": -1, "filename": "pydynamics-0.0.4.tar.gz", "has_sig": false, "md5_digest": "b976f347188d584a522505799e7fec36", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 4871, "upload_time": "2018-12-30T10:47:56", "url": "https://files.pythonhosted.org/packages/c4/ca/e236add144af6468a38e589849a8a4eb31b033aac81a5e7bd6160df0da6f/pydynamics-0.0.4.tar.gz" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "0b0ddd228f5e11fc3d373d6cf6a5f00e", "sha256": "338a2949f81c9be59e720cd7d7ea5eda9005d5ecfef1f1bb4356d2cf1bb20c3e" }, "downloads": -1, "filename": "pydynamics-0.0.5-py3-none-any.whl", "has_sig": false, "md5_digest": "0b0ddd228f5e11fc3d373d6cf6a5f00e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 7071, "upload_time": "2018-12-30T11:28:14", "url": "https://files.pythonhosted.org/packages/f8/9d/f89b11a1147ae9e232ce3a457a3dcbb2f47121dcc9c3907cb6d287c26579/pydynamics-0.0.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7d4f4f0bb8a9f573436d22ff7606609c", "sha256": "e10d785d2af22f7cefce43722d4ad1ca7a42609cf42be7af308b39d4145c57a0" }, "downloads": -1, "filename": "pydynamics-0.0.5.tar.gz", "has_sig": false, "md5_digest": "7d4f4f0bb8a9f573436d22ff7606609c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5432, "upload_time": "2018-12-30T11:28:15", "url": "https://files.pythonhosted.org/packages/7e/87/e8935aa54217b956dcbfcdf7d5ac7e01c5d1038238a8542d78048256bea6/pydynamics-0.0.5.tar.gz" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "e6a8572a3e99cc6e7b9a7109184cea40", "sha256": "0bc6b9f8f798eda63fc851d2c929b56c36fb8d7807e1252de4d4f3442acd9a47" }, "downloads": -1, "filename": "pydynamics-0.0.6.tar.gz", "has_sig": false, "md5_digest": "e6a8572a3e99cc6e7b9a7109184cea40", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5288, "upload_time": "2019-04-26T11:04:20", "url": "https://files.pythonhosted.org/packages/13/e7/4dfe96e91c46b886338cd46abfb4fe434a3aa12e2ea7ea217e5859f97113/pydynamics-0.0.6.tar.gz" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "cb97876da5aa351864dd3f415f41df27", "sha256": "2ab6f5eaacb169b384a98d345690325e1af072116238556b2be01b11900505ab" }, "downloads": -1, "filename": "pydynamics-0.0.7-py3-none-any.whl", "has_sig": false, "md5_digest": "cb97876da5aa351864dd3f415f41df27", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 6271, "upload_time": "2019-04-26T12:34:22", "url": "https://files.pythonhosted.org/packages/47/6a/0307e0e454f255f93826886017154d2870ecbfc53f8514aff7d3b31971ff/pydynamics-0.0.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "576ebe778f383438eb6d69fe3baab19c", "sha256": "881fbc45b41de63ac58afb64c6c5eef48e6f6d620e8e544219fb238f0fd7cec6" }, "downloads": -1, "filename": "pydynamics-0.0.7.tar.gz", "has_sig": false, "md5_digest": "576ebe778f383438eb6d69fe3baab19c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5448, "upload_time": "2019-04-26T12:34:26", "url": "https://files.pythonhosted.org/packages/05/98/2da45faaa8db66e223771ee4670a8167500eaa24f8f8f83492df2cd85575/pydynamics-0.0.7.tar.gz" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "d6eff01c4469e376e389dae4a2b97993", "sha256": "6de41250842d1d0e905eca090604d1132ef471b5cb18d05dc1f4baa4fc3624cf" }, "downloads": -1, "filename": "pydynamics-0.0.8.tar.gz", "has_sig": false, "md5_digest": "d6eff01c4469e376e389dae4a2b97993", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5444, "upload_time": "2019-08-14T10:44:31", "url": "https://files.pythonhosted.org/packages/4c/0e/40dfead9687982a1f6d35b221175f8c33793880affdb42382e3cd3aeb345/pydynamics-0.0.8.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d6eff01c4469e376e389dae4a2b97993", "sha256": "6de41250842d1d0e905eca090604d1132ef471b5cb18d05dc1f4baa4fc3624cf" }, "downloads": -1, "filename": "pydynamics-0.0.8.tar.gz", "has_sig": false, "md5_digest": "d6eff01c4469e376e389dae4a2b97993", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 5444, "upload_time": "2019-08-14T10:44:31", "url": "https://files.pythonhosted.org/packages/4c/0e/40dfead9687982a1f6d35b221175f8c33793880affdb42382e3cd3aeb345/pydynamics-0.0.8.tar.gz" } ] }