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.2.tar.gz (13.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for footprintsapi-1.0.2.tar.gz
Algorithm Hash digest
SHA256 1c36fae862cb81d60284b4d04e09c6440f31b98f64f929658cbeb5d2e4b38b4f
MD5 29746b0235c4dc4236e8856e08ddf535
BLAKE2b-256 e7fe53c80650daf180b54110305b6118286a53624f05f6c28bc286d16ee17bc7

See more details on using hashes here.

File details

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

File metadata

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

File hashes

Hashes for footprintsapi-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e455c1fc5e3576eb27f077bdad620f9496722c5c1c4ef2237a0ab10711f17e79
MD5 bb82e833a7b6ca5036baa5ed293a222f
BLAKE2b-256 402cb851dc327f7db89b16833ddf84557a63e1d2887cf1a5c2d5cbe876237ae0

See more details on using hashes here.

Supported by

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