Skip to main content

Client Central Python API.

Project description

clientcentral-api-python

version Commitizen friendly semantic-release

Install

pip install clientcentral --user

Upgrading

pip install --user --upgrade clientcentral

A specific version can also be installed by adding the tag:

pip install --user --upgrade clientcentral==12.5.7

Requirements

This library was built and tested on Python 3.11 a minimal Python version of Python 3.7.x is required.

Python 2 is not supported.

Features

  • Object Oriented API
  • Querying
  • Lazy loading (Events)

Config

The token that will be used can either be sent as an environement variable:

CC_TOKEN=<TOKEN> python3 main.py

or parsed to the constructor:

cc = ClientCentral(production=True, token="123")

Example usage

import clientcentral.ticketformatting as tf
from clientcentral.clientcentral import ClientCentral

# Production 'false' will run on qa.cc
cc = ClientCentral(production=True)

# This will create a ticket in the Managed Services workspace.
# In this example custom_fields {"id": 17, "values": 0} refer to "Security related" -> "No"
# Theses values can be found by following the following instructions: https://clientcentral.io/support/cc/kb/articles/1661-tickets-api-creating-tickets
ticket = cc.create_ticket(subject="New awesome subject" ,
                          description="this is an awesome ticket",
                          account_vp=1,
                          customer_user_vp=1,
                          project_id=8,
                          workspace_id=16,
                          custom_fields_attributes=[{
                              "id": 17,
                              "values": 0
                          }, {
                              "id": 75,
                              "values": 363
                          }])

ticket.comment("<p>" + tf.bold("I am BOLD") + "</p>")

# Get the ticket's creator
print("Ticket creator: " + ticket.owner.name)

# Get the ticket's status
print("Ticket status:" + ticket.status.name)

# Print the ticket's description
print("Ticket description: " + ticket.description)

# Add a user to watchers
ticket.add_user_watcher(14012) # 14012 refers to the user id in this case its "Thomas Scholtz"

# Change the description of the ticket
ticket.description = "New and improved ticket description"

# Finally after making all changes commit them.
ticket.commit()

for comment in ticket.comments:
    if comment.created_by_user:
        print("Comment from: " + comment.created_by_user.name + " says: " + comment.comment)

# Ticket events, change_events and comments are lazy loaded.
for change_event in ticket.change_events:
    if change_event.created_by_user:
        print("Change by: " + str(change_event.created_by_user.name))
    for change in change_event.changes:
        print("Changed: " + str(change.name) + " from: " + str(change.from_value) + " to: " + str(change.to_value))

Example query

from clientcentral.clientcentral import ClientCentral
import clientcentral.query as operators

# Production 'false' will run on qa.clientcentral.io
cc = ClientCentral(production=True)

# This will return a list of all tickets that are:
# open,
# in workspace with id 87,
# created by the user with the email 'thomas@labs.epiuse.com',
# has not been updated since 2019-02-20,
# subject contains 'New awesome subject'
tickets = cc.query_tickets().filter_by(
            operators.and_( operators.statement("status.open"),
                            operators.comparison("workspace_id", "=", "87"),
                            operators.comparison("created_by_user.email", "=", "'thomas@labs.epiuse.com'"),
                            operators.comparison("updated_at", "<", "'2019-02-20'"),
                            operators.comparison("subject", "CONTAINS", "'New awesome subject'"))
                           ).all()

for ticket in tickets:
    # Get the ticket's creator
    print("Ticket creator: " + ticket.owner.name)

    # Get the ticket's status
    print("Ticket status:" + ticket.status.name)

    # Print the ticket's description
    print("Ticket description: " + ticket.description)

    # Ticket events, change_events and comments are lazy loaded.
    for comment in ticket.comments:
        if comment.created_by_user:
            print("Comment from: " + comment.created_by_user.name +
                  " says: " + comment.comment)
    for change_event in ticket.change_events:
        if change_event.created_by_user:
            print("Change by: " + str(change_event.created_by_user.name))
        for change in change_event.changes:
            print("Changed: " + str(change.name) + " from: " +
                  str(change.from_value) + " to: " + str(change.to_value))

Contributing

For this repository we are enforcing the use of Commitizen. Respective merge requests require to follow the format created from Commitizen. More info can be found at: http://commitizen.github.io/cz-cli/

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

clientcentral-12.5.7.tar.gz (64.0 kB view details)

Uploaded Source

Built Distribution

clientcentral-12.5.7-py3-none-any.whl (47.6 kB view details)

Uploaded Python 3

File details

Details for the file clientcentral-12.5.7.tar.gz.

File metadata

  • Download URL: clientcentral-12.5.7.tar.gz
  • Upload date:
  • Size: 64.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.12.2

File hashes

Hashes for clientcentral-12.5.7.tar.gz
Algorithm Hash digest
SHA256 5fbc6065462691dde6be8b1ca5f13e56e9fe17e365dc70b073cc756f9535c386
MD5 61cd3d455ebdc93fc7f3b6668c2d8ef3
BLAKE2b-256 fe2963bd7c82f708eaf971d3c98c946e1fdff81f2a0181e63d701e30898ef433

See more details on using hashes here.

File details

Details for the file clientcentral-12.5.7-py3-none-any.whl.

File metadata

File hashes

Hashes for clientcentral-12.5.7-py3-none-any.whl
Algorithm Hash digest
SHA256 6549648246dd3eec624ccaa7e55805f890339fb9d4a5d0bfa5b67efc5524a042
MD5 9bca8c81db1d0c30454eff525a73b5b6
BLAKE2b-256 60129d5846bcf70b79dac4c2fa0c0075c3bd0708a77311cb723f6b1d8d8e52b6

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