{ "info": { "author": "Jesus Rodriguez", "author_email": "jesus_enrique@rocketmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 1 - Planning", "Intended Audience :: Customer Service", "Intended Audience :: Developers", "Intended Audience :: Information Technology", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Topic :: Software Development :: Libraries" ], "description": "

FootprintsAPI

\n

A better Python wrapper for Footprints SOAP API.

\n\n## What is this wrapper for?\nThis wrapper integrates with Footprint's SOAP endpoints. What is Footprints? Check it our [here](https://www.footprintsservicedesk.com/).\n\n## Table of contents\n- [Quick Start](#quick-start)\n- [Local Deploy Steps](#local-deploy-steps)\n- [Notes](#notes)\n- [API Endpoints](#api-endpoints)\n- [To Do](#to-do)\n\n## Quick start\n\n- Download the repo.\n- Clone the repo: `https://github.com/Jesus-E-Rodriguez/footprintsapi.git`\n\nAdd as a project dependency:\n\n $ pip install footprintsapi\n\n\n## What's included\n\nThe download comes the following directories and files:\n```\nfootprintsapi/\n\u251c\u2500\u2500 DEPLOY.md\n\u251c\u2500\u2500 LICENSE\n\u251c\u2500\u2500 env.py.example\n\u251c\u2500\u2500 footprintsapi\n\u2502 \u251c\u2500\u2500 __init__.py\n\u2502 \u251c\u2500\u2500 exceptions.py\n\u2502 \u251c\u2500\u2500 footprints.py\n\u2502 \u251c\u2500\u2500 mixins\n\u2502 \u2502 \u251c\u2500\u2500 common.py\n\u2502 \u2502 \u251c\u2500\u2500 get.py\n\u2502 \u2502 \u251c\u2500\u2500 post.py\n\u2502 \u2502 \u2514\u2500\u2500 update.py\n\u2502 \u251c\u2500\u2500 models.py\n\u2502 \u251c\u2500\u2500 requester.py\n\u2502 \u2514\u2500\u2500 utils.py\n\u251c\u2500\u2500 pip-selfcheck.json\n\u251c\u2500\u2500 requirements\n\u2502 \u251c\u2500\u2500 base.txt\n\u2502 \u251c\u2500\u2500 local.txt\n\u2502 \u2514\u2500\u2500 test.txt\n\u251c\u2500\u2500 setup.py\n\u251c\u2500\u2500 test.py\n\u2514\u2500\u2500 tests\n \u251c\u2500\u2500 __init__.py\n \u251c\u2500\u2500 settings.py\n \u251c\u2500\u2500 test_requester.py\n \u251c\u2500\u2500 utils.py\n \u2514\u2500\u2500 wsdl\n \u251c\u2500\u2500 externalapiservices.wsdl\n \u251c\u2500\u2500 externalapiservices_schema.xsd\n \u2514\u2500\u2500 listContainerDefinitions.xml\n```\n\n## Local Deploy steps\n\nInstall the required dependencies:\n\n $ pip install -r requirements/local.txt\n\n## Notes\n\nFootprint's internal architecture is as follows:\n
\"Footprints
\n\nAn object oriented approach was taken with this project. As such, the SOAP endpoints are\ncalled through the use of a `Footprints` Object.\n\nInstantiate the object with the following attributes:\n\n```python\nfrom footprintsapi import Footprints\nimport env as settings\n\nattributes = {\n \"client_id\": settings.CLIENT_ID,\n \"client_secret\": settings.CLIENT_SECRET,\n \"base_url\": settings.BASE_URL\n}\n\nfp = Footprints(**attributes)\n```\n\nExample settings:\n```\nCLIENT_ID = \"Agent username\"\nCLIENT_SECRET = \"Agent password\"\nBASE_URL = \"https://{Your hostname here}/footprints/servicedesk/externalapisoap/ExternalApiServicePort?wsdl\"\n```\n\nAdditional attributes can also be passed in as needed. When the object is instantiated\nwith optional parameters, the functions that require those same parameters will automatically\nuse them if not passed in.\n\nFor testing purposes an example `wsdl` file has been included in `tests/wsdl/`. In order to get a deeper understanding of the Footprint's architecture the use of [SOAP UI](https://www.soapui.org/) is recommended. More documentation can be found in the [Web service definitions guide](https://docs.bmc.com/docs/fpsc121/files/495323458/669670276/3/1508751777198/API_Web_Services_definitions.pdf#createCI)\n\n\n## API Endpoints\n\nEndpoint | Method | Parameters (Bolded are required) | Returns | Additional Notes\n------------- | ------------- | ------------- | ------------- | -------------\n*\"createCI\"* | `fp.create_ci(...)` | **cmdb_definition_id**, cifields, status, submitter | CI ID | **cmdb_definition_id** can be found using `fp.list_container_definitions()`\n*\"createContact\"* | `fp.create_contact(...)` | **address_book_definition_id**, **contact_fields**, submitter | Contact ID | **address_book_definition_id** can be found using `fp.list_container_definitions()`\n*\"createItem\"* | `fp.create_item(...)` | **item_definition_id**, **item_fields**, quick_template_id, assignees, submitter | Contact ID | **item_definition_id** can be fetched by using `fp.list_container_definitions()`\n*\"createOrEditContact\"* | `fp.create_or_edit_contact(...)` | **address_book_definition_id**, **contact_fields**, contact_id, submitter | Contact ID | **address_book_definition_id** can be found using `fp.list_container_definitions()`\n*\"createTicket\"* | `fp.create_ticket(...)` | **ticket_definition_id**, **ticket_fields**, assignees, submitter, quick_template_id, contact_definition_id, select_contact | Ticket ID | **ticket_definition_id** can be found using `fp.list_item_definitions(container_definition_id)`. **ticket_definition_id** is only optional when it has already been passed into the `Footprints` ticket object.\n| *\"createTicketAndLinkAssets\"* | `fp.create_ticket_and_link_assets(...)` | **ticket_definition_id**, **ticket_fields**, assets_list, assignees, submitter | Ticket ID | See `createTicket` additional notes |\n*\"editCI\"* | `fp.update_ci(...)` | **cmdb_definition_id**, **ci_id**, ci_fields, status, submitter | CI ID | **cmdb_definition_id** can be found using `fp.list_container_definitions()`\n*\"editContact\"* | `fp.update_contact(...)` | **address_book_definition_id**, **contact_id**, **contact_fields**, submitter | Contact ID | See `createContact` additional notes\n*\"editItem\"* | `fp.update_item(...)` | **item_definition_id**, **item_id**, **item_fields**, assignees, submitter | Item ID | See `createItem` additional notes\n*\"editTicket\"* | `fp.update_ticket(...)` | **ticket_definition_id**, **ticket_id**, **ticket_fields** , contact_definition_id, select_contact, assignees, submitter | Ticket ID |\n*\"getContactAssociatedTickets\"* | `fp.get_contact_associated_tickets(...)` | **contact_definition_id**, **primary_key_value**, submitter | Sea of Tickets | **contact_definition_id** can be found using `fp.get_container_definitions()` typically the container definition id you are looking for will have a sub type name of Address Book. With the proper id, use `fp.get_item_definitions(container_definition_id)` which will display the `contact_definition_id`.\n*\"getItemDetails\"* | `fp.get_item(...)` | **item_definition_id**, **item_id**, fields_to_retrieve, submitter | Item Object |\n*\"getItemId\"* | `fp.get_item_id(...)` | **item_definition_id**, **item_number**, submitter | Item ID | The item id can optionally be prepended with your organizational prefix or left has a number. The organization prefix defaults to \"SR-\" upon object instantiation.\n*\"getTicketDetails\"* | `fp.get_ticket(...)` | **item_definition_id**, **item_number**, item_id, submitter, fields_to_retrieve | Ticket Object | The ticket object has all the returned ticket fields as attributes. As such common fields like the ticket title can be accessed by:
print(ticket.title)
You can modify the custom attributes that are included in the ticket object by modifying the `CustomAttributesMixin` found in:
from footprints.mixins.common import CustomAttributesMixin
\n*\"linkItems\"* | `fp.link_items(...)` | **first_item_definition_id**, **first_item_id**, **second_item_definition_id**, **second_item_id**, **link_type_name**, submitter | Dynamic Item Link ID | No assumptions are made regarding the linking of items. Both item definition ids and their respective item ids must be passed in. The list of acceptable **link_type_name**(s) can be found within the method documentation.\n*\"linkTickets\"* | `fp.link_tickets(...)` | **first_ticket_definition_id**, **first_ticket_id**, **second_ticket_definition_id**, **second_ticket_id**, **link_type_name**, submitter | Dynamic Item Link ID | See `linkItems` additional notes\n*\"listContainerDefinitions\"* | `fp.get_container_definitions(...)` | container_subtype_name, submitter | List of container dictionaries | Use this function to get the definition ids of various workspaces\n*\"listItemDefinitions\"* | `fp.get_item_definitions(...)` | item_definition_id, submitter | List of item dictionaries | Use this function to get the items within a workspace\n*\"listFieldDefinitions\"* | `fp.get_field_definitions(...)` | item_definition_id, submitter | List of field dictionaries | Use this function to get the fields relevant to an item\n*\"listQuickTemplates\"* | `fp.get_quick_templates(...)` | item_definition_id, submitter | List of dictionaries |\n*\"listSearches\"* | `fp.get_searches(...)` | item_type_name, submitter | List of dictionaries | You can use this parameter to retrieve item name only from the existing Saved Searches in the FootPrints application.\n*\"runSearch\"* | `fp.get_search(...)` | search_id, submitter | Dict | You can retrieve the item_type_name parameter to get the item ID to run the search query from the existing Saved Searches only. **Note: You must create Saved Searches in the FootPrints application before using the web service to run the search queries. You cannot create Saved Searches by using the web services.**\n\n## To Do\nCreate functional tests.\n\n\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/Jesus-E-Rodriguez/footprintsapi.git", "keywords": "", "license": "MIT License", "maintainer": "", "maintainer_email": "", "name": "footprintsapi", "package_url": "https://pypi.org/project/footprintsapi/", "platform": "", "project_url": "https://pypi.org/project/footprintsapi/", "project_urls": { "Homepage": "https://github.com/Jesus-E-Rodriguez/footprintsapi.git" }, "release_url": "https://pypi.org/project/footprintsapi/1.0.2/", "requires_dist": [ "appdirs (~=1.4.3)", "attrs (~=19.1.0)", "cached-property (~=1.5.1)", "certifi (~=2019.3.9)", "chardet (~=3.0.4)", "defusedxml (~=0.6.0)", "idna (~=2.8)", "isodate (~=0.6.0)", "lxml (~=4.3.3)", "pytz (~=2019.1)", "requests (~=2.21.0)", "requests-toolbelt (~=0.9.1)", "six (~=1.12.0)", "urllib3 (~=1.24.3)", "zeep (~=3.3.1)" ], "requires_python": ">=3.6", "summary": "API wrapper for the BMC (Numara) Footprints SOAP API", "version": "1.0.2" }, "last_serial": 5864592, "releases": { "1.0.2": [ { "comment_text": "", "digests": { "md5": "bb82e833a7b6ca5036baa5ed293a222f", "sha256": "e455c1fc5e3576eb27f077bdad620f9496722c5c1c4ef2237a0ab10711f17e79" }, "downloads": -1, "filename": "footprintsapi-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bb82e833a7b6ca5036baa5ed293a222f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16865, "upload_time": "2019-09-20T23:32:28", "url": "https://files.pythonhosted.org/packages/40/2c/b851dc327f7db89b16833ddf84557a63e1d2887cf1a5c2d5cbe876237ae0/footprintsapi-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29746b0235c4dc4236e8856e08ddf535", "sha256": "1c36fae862cb81d60284b4d04e09c6440f31b98f64f929658cbeb5d2e4b38b4f" }, "downloads": -1, "filename": "footprintsapi-1.0.2.tar.gz", "has_sig": false, "md5_digest": "29746b0235c4dc4236e8856e08ddf535", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 13314, "upload_time": "2019-09-20T23:32:31", "url": "https://files.pythonhosted.org/packages/e7/fe/53c80650daf180b54110305b6118286a53624f05f6c28bc286d16ee17bc7/footprintsapi-1.0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bb82e833a7b6ca5036baa5ed293a222f", "sha256": "e455c1fc5e3576eb27f077bdad620f9496722c5c1c4ef2237a0ab10711f17e79" }, "downloads": -1, "filename": "footprintsapi-1.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bb82e833a7b6ca5036baa5ed293a222f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6", "size": 16865, "upload_time": "2019-09-20T23:32:28", "url": "https://files.pythonhosted.org/packages/40/2c/b851dc327f7db89b16833ddf84557a63e1d2887cf1a5c2d5cbe876237ae0/footprintsapi-1.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "29746b0235c4dc4236e8856e08ddf535", "sha256": "1c36fae862cb81d60284b4d04e09c6440f31b98f64f929658cbeb5d2e4b38b4f" }, "downloads": -1, "filename": "footprintsapi-1.0.2.tar.gz", "has_sig": false, "md5_digest": "29746b0235c4dc4236e8856e08ddf535", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6", "size": 13314, "upload_time": "2019-09-20T23:32:31", "url": "https://files.pythonhosted.org/packages/e7/fe/53c80650daf180b54110305b6118286a53624f05f6c28bc286d16ee17bc7/footprintsapi-1.0.2.tar.gz" } ] }