Skip to main content

API wrapper for the BMC (Numara) Footprints SOAP API

Project description

FootprintsAPI

A better Python wrapper for Footprints SOAP API.

What is this wrapper for?

This wrapper integrates with Footprint's SOAP endpoints. What is Footprints? Check it our here.

Table of contents

Quick start

  • Download the repo.
  • Clone the repo: https://github.com/Jesus-E-Rodriguez/footprintsapi.git

Add as a project dependency:

$ pip install footprintsapi

What's included

The download comes the following directories and files:

footprintsapi/
├── DEPLOY.md
├── LICENSE
├── env.py.example
├── footprintsapi
│   ├── __init__.py
│   ├── exceptions.py
│   ├── footprints.py
│   ├── mixins
│   │   ├── common.py
│   │   ├── get.py
│   │   ├── post.py
│   │   └── update.py
│   ├── models.py
│   ├── requester.py
│   └── utils.py
├── pip-selfcheck.json
├── requirements
│   ├── base.txt
│   ├── local.txt
│   └── test.txt
├── setup.py
├── test.py
└── tests
    ├── __init__.py
    ├── settings.py
    ├── test_requester.py
    ├── utils.py
    └── wsdl
        ├── externalapiservices.wsdl
        ├── externalapiservices_schema.xsd
        └── listContainerDefinitions.xml

Local Deploy steps

Install the required dependencies:

    $ pip install -r requirements/local.txt

Notes

Footprint's internal architecture is as follows:

Footprints Architecture

An object oriented approach was taken with this project. As such, the SOAP endpoints are called through the use of a Footprints Object.

Instantiate the object with the following attributes:

from footprintsapi import Footprints
import env as settings

attributes = {
    "client_id": settings.CLIENT_ID,
    "client_secret": settings.CLIENT_SECRET,
    "base_url": settings.BASE_URL
}

fp = Footprints(**attributes)

Example settings:

CLIENT_ID = "Agent username"
CLIENT_SECRET = "Agent password"
BASE_URL = "https://{Your hostname here}/footprints/servicedesk/externalapisoap/ExternalApiServicePort?wsdl"

Additional attributes can also be passed in as needed. When the object is instantiated with optional parameters, the functions that require those same parameters will automatically use them if not passed in.

For 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 is recommended. More documentation can be found in the Web service definitions guide

API Endpoints

Endpoint Method Parameters (Bolded are required) Returns Additional Notes
"createCI" fp.create_ci(...) cmdb_definition_id, cifields, status, submitter CI ID cmdb_definition_id can be found using fp.list_container_definitions()
"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()
"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()
"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()
"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.
"createTicketAndLinkAssets" fp.create_ticket_and_link_assets(...) ticket_definition_id, ticket_fields, assets_list, assignees, submitter Ticket ID See createTicket additional notes
"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()
"editContact" fp.update_contact(...) address_book_definition_id, contact_id, contact_fields, submitter Contact ID See createContact additional notes
"editItem" fp.update_item(...) item_definition_id, item_id, item_fields, assignees, submitter Item ID See createItem additional notes
"editTicket" fp.update_ticket(...) ticket_definition_id, ticket_id, ticket_fields , contact_definition_id, select_contact, assignees, submitter Ticket ID
"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.
"getItemDetails" fp.get_item(...) item_definition_id, item_id, fields_to_retrieve, submitter Item Object
"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.
"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
"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.
"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
"listContainerDefinitions" fp.get_container_definitions(...) container_subtype_name, submitter List of container dictionaries Use this function to get the definition ids of various workspaces
"listItemDefinitions" fp.get_item_definitions(...) item_definition_id, submitter List of item dictionaries Use this function to get the items within a workspace
"listFieldDefinitions" fp.get_field_definitions(...) item_definition_id, submitter List of field dictionaries Use this function to get the fields relevant to an item
"listQuickTemplates" fp.get_quick_templates(...) item_definition_id, submitter List of dictionaries
"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.
"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.

To Do

Create functional tests.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

footprintsapi-1.0.5.tar.gz (13.4 kB view details)

Uploaded Source

Built Distribution

footprintsapi-1.0.5-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file footprintsapi-1.0.5.tar.gz.

File metadata

  • Download URL: footprintsapi-1.0.5.tar.gz
  • Upload date:
  • Size: 13.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.8

File hashes

Hashes for footprintsapi-1.0.5.tar.gz
Algorithm Hash digest
SHA256 3feda437a0f84828f7dd6bbe2a0cc1c56b1edbe1317a306898b971b3e5473d1e
MD5 0c1c7c992679a85855e7aa7f2c556e66
BLAKE2b-256 55ec49748d65f9fcc99b2bbfc02c2082ca3118d5d98ba0e1d2a719d6d3952bdd

See more details on using hashes here.

File details

Details for the file footprintsapi-1.0.5-py3-none-any.whl.

File metadata

  • Download URL: footprintsapi-1.0.5-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.21.0 setuptools/45.0.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.6.8

File hashes

Hashes for footprintsapi-1.0.5-py3-none-any.whl
Algorithm Hash digest
SHA256 3167b6cd7e11ebb9acffe764d821749329f689c51c31c888c9bf7deed8d42ba7
MD5 ed97d39d1e28e8d6c5f6758dc7de21dc
BLAKE2b-256 1ce00c1d2c558946180b84794b84ecbf217d721caa64a2f7904d2ecd902cb153

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page