Skip to main content

Cherwell REST API Client and Library

Project description

PyPI version app

Cherwell API Client

Cherwell API

Getting Started

Installation

If necessary, upgrade pip:

python3 -m pip install --upgrade pip setuptools wheel twine

Install with PyPI:

pip3 install pycherwell --user

Install from source:

git clone https://github.com/greenpau/pycherwell.git
cd pycherwell
pip3 install -r requirements.txt --user
python3 setup.py install --user --record installed_files.txt

If necessary, uninstall pycherwell:

pip3 uninstall pycherwell
cat installed_files.txt | xargs sudo rm -rf

Configuration

LDAP Configuration file: ~/.cherwell/config:

[default]
client_id = "5d4f6f1b-f0de-4442-8791-4582816b04de"
auth_mode = "LDAP"
username = "MYDOMAIN\myappuser"
password = "xxxxxx"
host = "myapp.cherwellondemand.com"
port = "443"
protocol = "https"

LOCAL configuration file: ~/.cherwell/config:

[default]
client_id = "5d4f6f1b-f0de-4442-8791-4582816b04de"
auth_mode = "Internal"
username = "Cherwell\myappuser"
password = "xxxxxx"
host = "myapp.cherwellondemand.com"
port = "443"
protocol = "https"

Testing

The following command checks whether the services is available:

$ cherwell-client --get-service-info --debug

The expected output is:

{
    "service_info": {
        "api_version": "9.3.2",
        "csm_culture": "en-US",
        "csm_version": "9.3.2",
        "system_date_time": "2019-11-18 18:14:42.510452+00:00"
    }
}

Usage Instructions

Business Objects

The following commands fetches business object summaries. It is a reference to the IDs for business objects themselves, their fields, states, etc.

cherwell-client --get-business-object-summaries > business-object-summaries.json
{
    "business_object_summaries": [
        {
            "bus_ob_id": "fe838f7d1a8d4a748940dba7be76995c",
            "display_name": "Incident",
            "first_rec_id_field": "3910bef5813c421a92e4a68eea109a95",
            "group": false,
            "group_summaries": [],
            "lookup": false,
            "major": true,
            "name": "Incident",
            "rec_id_fields": "f5e8c54b647f48ad81e720132624001e",
            "state_field_id": "cb62a991a2cb4fd98cab26c3519b2d92",
            "states": "Pending,Closed,Reopened,New,In Progress,Resolved,Assigned",
            "supporting": false
        }
    ]
}

By default, the tool stores the returned business objects in ~/.cherwell/business_object.json. Subsequent requests return the content of that file, unless the invocation includes --rebase argument.

cherwell-client --get-business-object-summaries --rebase

Incidents

Search

The following command returns incidents owned by "Application Development" team:

cherwell-client --get-incidents --debug --search-condition "Owned By Team:eq:Application Development"

The following command returns CSV list containing incident ID, type and status of all "Pending" items for "Application Development" team:

cherwell-client --get-incidents \
  --search-condition "Status:eq:Pending" \
  --search-condition "Owned By Team:eq:Application Development" \
  --search-field "IncidentID" --search-field "IncidentType" \
  --search-field "Status" --format csv

The following command returns CSV list of unresolved and not closed items for "Application Development" team:

cherwell-client --get-incidents \
  --search-condition "Owned By Team:eq:Application Development" \
  --search-condition "Status:eq:Pending" \
  --search-condition "Status:eq:Assigned" \
  --search-condition "Status:eq:In Progress" \
  --search-condition "Status:eq:New" \
  --search-field "IncidentID" --search-field "IncidentType" --search-field "Status" \
  --search-field "Service" --search-field "Category"  --search-field "Subcategory" \
  --search-field "Customer Display Name" \
  --search-field "Owned By" \
  --search-field "Created Date Time" \
  --search-field "Short Description" \
  --format csv

The following command is a variation of the one above:

cherwell-client --get-incidents \
  --search-condition "Service:eq:Application Support" \
  --search-condition "Status:eq:Pending" \
  --search-condition "Status:eq:Assigned" \
  --search-condition "Status:eq:In Progress" \
  --search-condition "Status:eq:New" \
  --search-field "IncidentID" --search-field "IncidentType" --search-field "Status" \
  --search-field "Service" --search-field "Category"  --search-field "Subcategory" \
  --search-field "Customer Display Name" \
  --search-field "Owned By" \
  --search-field "Owned By Team" \
  --search-field "Created Date Time" \
  --search-field "Short Description" \
  --format csv

Query closed or resolved incidents starting on a specific day, e.g. 5/22/2020:

cherwell-client --get-incidents \
  --search-condition "Service:eq:Application Support" \
  --search-condition "Status:eq:Closed" \
  --search-condition "Status:eq:Resolved" \
  --search-condition "Stat_DateTimeResolved:gt:5/22/2020 4:33 AM" \
  --search-field "IncidentID" --search-field "IncidentType" --search-field "Status" \
  --search-field "Service" --search-field "Category"  --search-field "Subcategory" \
  --search-field "Customer Display Name" \
  --search-field "Owned By" \
  --search-field "Owned By Team" \
  --search-field "Created Date Time" \
  --search-field "Short Description" \
  --format csv

Query closed or resolved incidents in the last 7 days:

cherwell-client --get-incidents \
  --search-condition "Service:eq:Application Support" \
  --search-condition "Status:eq:Closed" \
  --search-condition "Status:eq:Resolved" \
  --search-condition "Stat_DateTimeResolved:gt:7 days ago" \
  --search-field "IncidentID" --search-field "IncidentType" --search-field "Status" \
  --search-field "Service" --search-field "Category"  --search-field "Subcategory" \
  --search-field "Customer Display Name" \
  --search-field "Owned By" \
  --search-field "Owned By Team" \
  --search-field "Created Date Time" \
  --search-field "Short Description" \
  --format csv

The following command returns information about Cherwell Incident 1234567:

cherwell-client --get-incident 1234567 --debug --format yaml

Creation

Create an incident:

cherwell-client --create-incident \
  --create-field "ShortDescription:Review Pull Request #9 in App Repo" \
  --create-field "Priority:3" \
  --create-field "IncidentType:Incident" \
  --create-field "Service:Application Development" \
  --create-field "Category:Code Review" \
  --create-field "Subcategory:Other" \
  --create-as "FullName:eq:Smith, John" \
  --debug

Create a service request:

cherwell-client --create-incident \
  --create-field "ShortDescription:Release app v1.0.0" \
  --create-field "Priority:3" \
  --create-field "IncidentType:Service Request" \
  --create-field "Service:Application Development" \
  --create-field "Category:Release Management" \
  --create-field "Subcategory:Release" \
  --create-as "FullName:eq:Smith, John" \
  --debug

The expected output is:

{
    "bus_ob_public_id": "293126",
    "bus_ob_rec_id": "362965e244b242c5a3ba5a2b320baaa54632acf12b",
    "cache_key": null,
    "error_code": null,
    "error_message": null,
    "field_validation_errors": [],
    "has_error": false,
    "notification_triggers": []
}

Teams

Get the list of teams:

cherwell-client --get-teams --format text

People

Get user information:

cherwell-client --get-requestors --search-condition "FullName:eq:Smith, John"
cherwell-client --get-requestors --search-condition "FirstName:eq:John" --search-condition "LastName:eq:Smith"

Journal

The following command outputs journal entries for incident 1234567:

cherwell-client --get-journal --incident-id 1234567 --format text

Additionally, journal entries could be filtered:

cherwell-client --get-journal --incident-id 1234567 --format text \
  --search-condition "Journal Type Name:eq:Journal - Note" \
  --search-condition "Journal Type Name:eq:Journal - Customer Request" \
  --search-condition "Journal Type Name:eq:Journal - History" \
  --search-condition "Created Date Time:gt:7 days ago"

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

pycherwell-1.0.9.tar.gz (157.3 kB view details)

Uploaded Source

Built Distribution

pycherwell-1.0.9-py3-none-any.whl (342.9 kB view details)

Uploaded Python 3

File details

Details for the file pycherwell-1.0.9.tar.gz.

File metadata

  • Download URL: pycherwell-1.0.9.tar.gz
  • Upload date:
  • Size: 157.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.8

File hashes

Hashes for pycherwell-1.0.9.tar.gz
Algorithm Hash digest
SHA256 69d4f50295a736820f75b635d366eea57714ad4ed7a7c435ddf0bc18aa42b8cc
MD5 ee6196a48074917a10b0b826f763f1df
BLAKE2b-256 d7ec5dd6ff2166534552af0f8b2a2cb0fa46651fa65b496d3d7e7b683a796ec9

See more details on using hashes here.

File details

Details for the file pycherwell-1.0.9-py3-none-any.whl.

File metadata

  • Download URL: pycherwell-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 342.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.5.0.1 requests/2.22.0 setuptools/45.1.0 requests-toolbelt/0.9.1 tqdm/4.41.1 CPython/3.6.8

File hashes

Hashes for pycherwell-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 90ff63a47ed5db16809c04a265b86a231e3605d6cc4340b0a0073799cf9d66ae
MD5 52b763ef097948979349465a8419e97d
BLAKE2b-256 4aaff2299b03efe13659d8cf02f7b2969fb0a6b1a94e9aa02650cd7b8227c526

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