All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.11.0 - 2026-04-13
- Core: support OAuth client credentials authentication via
client_idandclient_secretinXurrentApiHelperwhile maintaining API key compatibility. - Core: The OAuth token endpoint now dynamically determines the domain from
base_url, preserving any regional subdomains to ensure consistency between API and OAuth endpoints. - Core: When using OAuth, if a 401 Unauthorized error is received, the token is automatically refreshed and the API call is retried once. If authentication still fails after token refresh, an explicit HTTPError is raised.
0.10.0 - 2025-08-16
- Core: Added bulk_export() function to dowload bulk record data
- Core: Switched to a requests.session object to enable persistent connection recycling.
- Core: Provide options to disable pagination and prevent api result's JSON parsing (in association with bulk_export).
- Core: do not prepend the base_url to the uri of an api_call if a protocol is already included (i.e. uri is already fully-formed).
0.9.1 - 2025-06-13
- Introduced a new step
Determine Effective Versionto compute a more accurate version number depending on whether Python files were changed:- If Python files changed, uses
gitversion's semantic version (semVer). - If no Python files changed, forces a patch bump based on the previous tag.
- If Python files changed, uses
- The
effective_versionoutput is now used consistently across:- The
Update CHANGELOG.mdstep. - The commit message for updating
pyproject.toml. - The Git tag and GitHub Release.
- The
pyproject.tomlversion field.
- The
- Adjusted the condition for the
Build release distributionsstep to run only if Python files changed. - Simplified and cleaned up various comments in the workflow for better readability and maintainability.
0.9.0 - 2025-06-13
- GitHub Actions Workflow
- Modified the version bump logic in
.github/workflows/release.ymlto apply major/minor/patch logic only if Python files have changed. If no Python files changed, the workflow now forces a patch bump to prevent unintended major or minor releases.
- Modified the version bump logic in
0.8.0 - 2025-06-13
-
Added a step to detect if any Python files were changed (
check-python-changes) in the release workflow. -
The
releaseandpublish to PyPIsteps now only run if Python files were changed. -
The workflow now supports Python 3.12 and Python 3.13 in addition to 3.9–3.11.
-
In the Dev Container:
- Added GitHub Actions support extension.
- Added VSCode Icons extension.
- Added Markdown All in One extension.
- Added Markdown Checkbox extension.
- Added Markdown Preview GitHub Styles extension.
-
In the VSCode workspace recommendations:
- Added GitHub Actions extension to
.vscode/extensions.json.
- Added GitHub Actions extension to
- Improved release workflow logic to skip release and publish steps if no Python files were changed.
0.7.0 - 2025-06-13
- Introduced a new Visual Studio Code development container configuration to streamline the development environment.
- Uses the base Ubuntu image from Microsoft's devcontainers.
- Adds common development utilities via
common-utilsfeature. - Installs VS Code extensions:
elagil.pre-commit-helperms-python.python
- Runs
.devcontainer/setup.shpost container creation for environment setup.
- Added a setup script for the development container:
- Installs Poetry package manager.
- Installs all project dependencies, including development dependencies.
- Activates the Poetry virtual environment and opens a shell.
- Installs pre-commit hooks for code quality enforcement.
- Updated instructions for activating the Poetry virtual environment:
- Changed from
poetry shelltoeval $(poetry env activate)for improved shell compatibility and automation.
- Changed from
- Added badges to the top of the README for enhanced project visibility:
- PyPI version badge.
- PyPI downloads badge.
- GPL v3 License badge.
- Added new dependency:
shellpackage (^1.0.1) for enhanced shell scripting and command execution capabilities within the project.
0.6.0 - 2025-02-24
- Ensure that version numbers in ChangeLog and releases are in sync
0.5.0 - 2025-02-24
- Corrected ReadMe links
0.4.0 - 2025-02-24
- Add automatic release notes generation, github release
- Build fully automated release on push on main
- Switch to using "Keep a Changelog" ChangeLog format
- Change versioning to use semantic versioning (change log had to be updated as well)
0.0.2-beta.12 - 2025-02-12
- configuration_items: add class ConfigurationItem
- configuration_items: add static methods: get_configuration_items, get_by_id
- Request: add class method get_cis_by_request_id to retrieve configuration items associated with a request by its ID.
- Request: add class method add_cis_to_request_by_id to link configuration items to a request by its ID.
- Request: add class method remove_cis_from_request_by_id to unlink configuration items from a request by its ID.
- Request: add instance method get_cis to retrieve configuration items associated with the current request instance.
- Request: add instance method add_cis to link configuration items to the current request instance.
- Request: add instance method remove_cis to unlink configuration items from the current request instance.
- Core: fix issue where 204 status code was not handled correctly
- Core: paging, ensure that '<>' gets removed
0.0.2-beta.11 - 2025-01-08
- Core: add function decode_api_id and encode_api_id to convert between nodeID and normal ID
0.0.2-beta.10 - 2024-12-18
- Core: add enum LogLevel
- Core: add method set_log_level to change the log level
- Core: init: parameter for logger has been added, if not provided, a new logger will be created
0.0.2-beta.9 - 2024-12-11
- Request, Workflow, Task, Person, Team: add non static methods: ref_str() --> return a reference string
- Request: add RequestCategory enum
- core: JSONSerializableDict: handle datetime and list of objects
- Workflow: add WorkflowCategory enum
- Workflow: use WorkflowCategory and WorkflowStatus enums on instantiation
- Team: add Team class
- Team: add enum TeamPredefinedFilter
- People: add non static methods: get_teams
- Tests: add tests for Request
- Tests: add pre-commit hooks yaml file
- Person, Workflow, Task: inherit JsonSerializableDict --> make serializable
- Request: close: make it possible to close a without a note (using default note)
- Request: request.created_by, request.requested_by, request.requested_for, request.member are now Person objects
- Workflow: workflow.manager is now a Person object
0.0.2-beta.8 - 2024-12-10
- Core: __append_per_page: exclude auto append for /me
- Request: request.workflow is now a Workflow object instead of a dict --> request.workflow.id instead of request.workflow['id']
0.0.2-beta.7 - 2024-12-10
- Task:
__update_object__fixed
0.0.2-beta.6 - 2024-12-10
- Task: Fix update method
0.0.2-beta.5 - 2024-12-10
- Task: Fix update method
0.0.2-beta.4 - 2024-12-10
- People: add non static methods: enable, archive, trash, restore
- People: add static methods: create, get_people
- Workflows: add static methods: get_workflows
0.0.2-beta.3 - 2024-12-06
- Task: add non static methods: get_workflow, close, approve, reject, cancel, create
- Workflow: add non static methods: create_task
0.0.2-beta.2 - 2024-12-06
- Task: add base functionality for tasks
- Workflow: add methods: get_task_by_template_id, get_tasks
- Workflow: update: add check for possible status values
- Request: add static method: update_by_id
- Workflow: Fix toString / str method
- Request: renamed get_request to get_requests
- Workflow: get_workflow_task_by_template_id now returns a Task object List
0.0.2-beta.1 - 2024-12-06
- Workflow: add base functionality for workflows
- People: add base functionality for people
- core: automatically get api user person object (optional, default: True)
0.0.2-beta.0 - 2024-12-05
- Request: add methods: archive, trash, restore
- Request: Fix get_request, get_notes method
0.0.1 - 2024-12-05
- Pagination: auto pagination get requests
- Retry-after: auto retry after 429 status code
- custom fields conversion (from and to object/dict)