Skip to main content

An unofficial Python wrapper for the Science Logic EM7 API

Project description

An unofficial Python wrapper for the Science Logic EM7 API

GitHub: https://github.com/dougip/em7api/

PyPI: https://pypi.org/project/em7api/

Getting Started

Installation

Install from the PyPI repository

pip install em7api

Prerequisites

The following are required:

  • URI of an existing EM7 portal

  • username

  • password

Configuration file

Create a file named .em7api located in one of these locations:

  • Home directory: ~/.em7api

  • Present working directory: ./.em7api

File format:

[DEFAULT]
uri = https://em7.example.com
username = myEM7user
password = myEM7password

More than one environment can be configured by adding additional sections:

[DEFAULT]
uri = https://em7.example.com
username = myEM7user
password = myEM7password

[PRODUCTION]
uri = https://prod.em7.example.com
username = prodEM7user
password = prodEM7user

[DEV]
uri = https://dev.em7.example.com

Usage

Passing credentials to the constructor

The non-default environments can be chosen by passing the environment parameter to the constructor:

import em7api

dev_session = em7api.EM7API(environment='DEV', verify_ssl=False)

The credentials and URI can also be passed as parameters instead of configured in a file:

import em7api

session = em7api.EM7API(uri='https://em7.example.com', \
                       username='myEM7user', \
                       password = 'myEM7pass', \
                       verify_ssl=False)

verify_ssl option

If SSL verification fails, the API call will fail with an SSL error. The easiest way to deal with this is to disable ssl by setting verify_ssl to False when calling the constructor. The verify_ssl value just gets passed to requests’s verify value and can be either True, False, or the location of a CA_bundle. This is not disabled by default due to the obvious security implications.

import em7api

dev_session = em7api.EM7API(verify_ssl=False)

get

Read operations are done with a get. Doing a get with the URI of a resource will usually return a list of the related objects

print session.get('/api/account')

Each object will have its own URI, and doing a get on that will return details of that specific object

print session.get('/api/account/1')

limit parameter

By default, EM7 limits its search to 100. If the data set is greater than that, the limit parameter needs to be specified

print session.get('/api/powerpack', parameters={'limit': 200})

Filters

The filter parameter can be sent to filter the results. The available filters can be found in the API browser or in the API manual

print session.get('/api/powerpack', parameters={'limit': 1000, \
                                                'filter.0.name.begins_with': 'Science'})

More than one filter can be added. Each additional filter needs its number incremented.

print session.get('/api/powerpack', parameters={'limit': 1000, \
                                                'filter.0.name.begins_with': 'Science', \
                                                'filter.1.name.contains': 'EM7'})

post

Adding and updating objects is done with a post. The data dictionary contains the details that need to be set for the new or updated object. Whatever is not specified in the data dictionary will mostly be left alone or set to a default value. The following would add a new organization, specifying the company name and leaving the rest blank:

session.post('/api/organization', data={'company': 'My Company'})

To update an existing object, specify its own URI as the resource, and pass the changes in the data dictionary

session.post('/api/organization/1', data={'company': 'Your Company'})

put

Updates can also be done with a put. This is more restrictive, as it requires the object to already exist and requires a larger set of the objects’ details to be sent in the data dictionary, otherwise it will result in an error.

session.put('/api/organization/1', data={'company': 'Another Company', \
                                         'address': '', \
                                         'city': 'New York', \
                                         'state': 'NY', \
                                         'zip': '', \
                                         'country': 'US', \
                                         'contact_fname': '', \
                                         'contact_lname': '', \
                                         'title': '', \
                                         'dept': '', \
                                         'billing_id': '', \
                                         'crm_id': '', \
                                         'phone': '', \
                                         'fax': '', \
                                         'tollfree': '', \
                                         'email': '', \
                                         'date_create': None, \
                                         'date_edit': '', \
                                         'updated_by': '/api/account/1', \
                                         'theme': '1', \
                                         'longitude': '', \
                                         'latitude': '', \
                                         'notification_append': None})

delete

Objects can be removed with a delete.

session.delete('/api/organization/1')

Acknowledgments

This project relies on the requests module to make the API calls

License

This project is licensed under the MIT license

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

em7api-0.1.4.tar.gz (3.9 kB view details)

Uploaded Source

File details

Details for the file em7api-0.1.4.tar.gz.

File metadata

  • Download URL: em7api-0.1.4.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.3

File hashes

Hashes for em7api-0.1.4.tar.gz
Algorithm Hash digest
SHA256 0000725d27e2599621c8bd87eef718e09a9ad50599306fe133a98738ca082f78
MD5 356ed5d8ab6d47bdddc71f5ce3df0f44
BLAKE2b-256 60808d85ccedb45aaceec1ac14ac4a8397d9f46aa33cb44438c201011243a3a9

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