Cherwell REST API Client and Library
Project description
Cherwell API Client
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 69d4f50295a736820f75b635d366eea57714ad4ed7a7c435ddf0bc18aa42b8cc |
|
MD5 | ee6196a48074917a10b0b826f763f1df |
|
BLAKE2b-256 | d7ec5dd6ff2166534552af0f8b2a2cb0fa46651fa65b496d3d7e7b683a796ec9 |
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90ff63a47ed5db16809c04a265b86a231e3605d6cc4340b0a0073799cf9d66ae |
|
MD5 | 52b763ef097948979349465a8419e97d |
|
BLAKE2b-256 | 4aaff2299b03efe13659d8cf02f7b2969fb0a6b1a94e9aa02650cd7b8227c526 |