A python module to interact with the Xurrent API.
Project description
Xurrent Module
This module is used to interact with the Xurrent API. It provides a set of classes to interact with the API.
Change Log
Contributing
Usage
Basic Usage
from xurrent.core import XurrentApiHelper
apitoken = "********"
baseUrl = "https://api.xurrent.qa/v1"
account = "account-name"
x_api_helper = XurrentApiHelper(baseUrl, apitoken, account)
# change log level (default: INFO)
x_api_helper.set_log_level("DEBUG")
# Plain API Call
uri = "/requests?subject=Example Subject"
x_api_helper.api_call(uri, 'GET')
# Convert node ID
x_api_helper.decode_api_id('ZmFiaWFuc3RlaW5lci4yNDEyMTAxMDE0MTJANG1lLWRlbW8uY29tL1JlcS83MDU3NTU') # fabiansteiner.241210101412@4me-demo.com/Req/705755
# this can be used to derive the ID from the nodeID
Configuration Items
# Example usage of ConfigurationItem class
from xurrent.configuration_items import ConfigurationItem
# Get a Configuration Item by ID
ci = ConfigurationItem.get_by_id(x_api_helper, <id>)
print(ci)
# List all Configuration Items
all_cis = ConfigurationItem.get_configuration_items(x_api_helper)
print(all_cis)
# List active Configuration Items
active_cis = ConfigurationItem.get_configuration_items(x_api_helper, predefinedFilter="active")
print(active_cis)
# Update a Configuration Item
updated_ci = ci.update({"name": "Updated Name", "status": "being_repaired"})
print(updated_ci)
# Create a new Configuration Item
# creating without specifying the label, takes the last ci of the product and increments the label
# example: "wdc-02" -> "wdc-03"
data = {"name": "New CI", "type": "software", "status": "in_production", "product_id": "<product_id>"}
new_ci = ConfigurationItem.create(x_api_helper, data)
print(new_ci)
# Archive a Configuration Item (must be in an allowed state)
try:
archived_ci = ci.archive()
print(archived_ci)
except ValueError as e:
print(f"Error: {e}")
# Trash a Configuration Item (must be in an allowed state)
try:
trashed_ci = ci.trash()
print(trashed_ci)
except ValueError as e:
print(f"Error: {e}")
# Restore a Configuration Item
restored_ci = ci.restore()
print(restored_ci)
People
from xurrent.people import Person
people = Person.get_by_id(x_api_helper, <id>)
api_user = Person.get_me(x_api_helper)
# get all people with a specific subject
people = Person.get_people(x_api_helper,queryfilter={
"name": "Werner"
})
# enable
people.enable()
#disable
people.disable()
#archive
people.archive()
#trash
people.trash()
#restore
people.restore()
Requests
from xurrent.requests import Request
request = Request.get_by_id(x_api_helper, <id>)
# get all requests with a specific subject
requests = Request.get_request(x_api_helper,queryfilter={
"subject": "Example Subject"
})
# close
request.close("closed")
# archive
request.archive()
#trash
request.trash()
#restore
request.restore()
Request Configuration Items
from src.xurrent.requests import Request
# Get Configuration Items for a Request
request_id = <request_id>
# Add a Configuration Item to a Request
ci_id = <ci_id>
try:
response = Request.add_ci_to_request_by_id(x_api_helper, request_id, ci_id)
print("CI added:", response)
except ValueError as e:
print(f"Error: {e}")
cis = Request.get_cis_by_request_id(x_api_helper, request_id)
print(cis)
# Remove a Configuration Item from a Request
try:
response = Request.remove_ci_from_request_by_id(x_api_helper, request_id, ci_id)
print("CI removed:", response)
except ValueError as e:
print(f"Error: {e}")
# Instance-based example
req = Request.get_by_id(x_api_helper, request_id)
# Add a CI to this request
try:
response = req.add_ci(ci_id)
print("CI added:", response)
except ValueError as e:
print(f"Error: {e}")
# Get CIs for this request
cis_instance = req.get_cis()
print(cis_instance)
# Remove a CI from this request
try:
response = req.remove_ci(ci_id)
print("CI removed:", response)
except ValueError as e:
print(f"Error: {e}")
Request Notes
from xurrent.requests import Request
request = Request.get_by_id(x_api_helper, <id>)
request_note = request.get_by_id(x_api_helper, <id>)
# get all request notes with a specific subject
request_notes = request.get_notes(x_api_helper, predefinedFilter="public")
request.add_note("This is a test note")
request.add_note({
"text": "This is a test note",
"internal": True
})
Tasks
from xurrent.tasks import Task
task = Task.get_by_id(x_api_helper, <id>)
# get all tasks with a specific subject
tasks = Task.get_task(x_api_helper,queryfilter={
"subject": "Example Subject"
})
# get workflow of task (use expand: True to get the full workflow object)
workflow = task.get_workflow(expand=True)
# or statically
workflow = Task.get_workflow_by_template_id(x_api_helper, <id>, expand=True)
# close
task.close()
#cancel
task.cancel() # only possible before the task is started
#reject
task.reject()
#approve
task.approve()
Teams
from xurrent.teams import Team
team = Team.get_by_id(x_api_helper, <id>)
# get all teams with a specific subject
teams = Team.get_team(x_api_helper,predifinedFilter="enabled")
# enable
team.enable()
#disable
team.disable()
#archive
team.archive()
#trash
team.trash()
#restore
team.restore()
Workflows
from xurrent.workflows import Workflow
workflow = Workflow.get_by_id(x_api_helper, <id>)
#close
workflow.close() # completion reason: completed, note: closed
# close with completion reason
workflow.close(completion_reason="withdrawn")
#close with completion reason and note
workflow.close(completion_reason="withdrawn", note="This is a test note")
Bulk Export
import csv
import io
#Request a bulk export of "people"
csvdata = x_api_helper.bulk_export("people")
#Iterate fetched export rows with the csv library, where row 1 defines the column names
for row in csv.DictReader(io.StringIO(csvdata)):
print(row["Employee Number"])
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xurrent-0.10.0.tar.gz.
File metadata
- Download URL: xurrent-0.10.0.tar.gz
- Upload date:
- Size: 28.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b1d2493360ca746c7754a1877b889cd16fcd9aa4ef1d74104c74d042d475cf76
|
|
| MD5 |
4764c67b9cf6380c6e126abce455403d
|
|
| BLAKE2b-256 |
95a789eac5302b0d9dc86a90cf420bd40b7249f047746d2aa3bd7f8a1f09c3d9
|
Provenance
The following attestation bundles were made for xurrent-0.10.0.tar.gz:
Publisher:
release.yml on fasteiner/xurrent-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xurrent-0.10.0.tar.gz -
Subject digest:
b1d2493360ca746c7754a1877b889cd16fcd9aa4ef1d74104c74d042d475cf76 - Sigstore transparency entry: 401768925
- Sigstore integration time:
-
Permalink:
fasteiner/xurrent-python@9a1f2f79fa4d0e8c423c44f0e419be982a07c344 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/fasteiner
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9a1f2f79fa4d0e8c423c44f0e419be982a07c344 -
Trigger Event:
push
-
Statement type:
File details
Details for the file xurrent-0.10.0-py3-none-any.whl.
File metadata
- Download URL: xurrent-0.10.0-py3-none-any.whl
- Upload date:
- Size: 32.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b2ec3acd834526409335fdb7c76bb60611f5bb2d607387ea08542b8a7d6d7e8c
|
|
| MD5 |
3cf54064d28500e3d46218d81a976ab8
|
|
| BLAKE2b-256 |
2d483b2b28b6b79dec3cf372aa752e9e669b4f1d681437d0fa849f6e8d202ca3
|
Provenance
The following attestation bundles were made for xurrent-0.10.0-py3-none-any.whl:
Publisher:
release.yml on fasteiner/xurrent-python
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
xurrent-0.10.0-py3-none-any.whl -
Subject digest:
b2ec3acd834526409335fdb7c76bb60611f5bb2d607387ea08542b8a7d6d7e8c - Sigstore transparency entry: 401768945
- Sigstore integration time:
-
Permalink:
fasteiner/xurrent-python@9a1f2f79fa4d0e8c423c44f0e419be982a07c344 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/fasteiner
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@9a1f2f79fa4d0e8c423c44f0e419be982a07c344 -
Trigger Event:
push
-
Statement type: