Metadata-Version: 2.4
Name: helix-itsm-sdk
Version: 0.1.2
Summary: Python client for BMC Helix/Remedy HPD_IncidentInterface_WS (Incident + WorkInfo retrieval)
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.31
Requires-Dist: pydantic>=2.5
Requires-Dist: beautifulsoup4>=4.12
Requires-Dist: lxml>=5.0
Provides-Extra: dev
Requires-Dist: pytest>=8.0; extra == "dev"
Requires-Dist: python-dotenv>=1.0; extra == "dev"

# helix_itsm_sdk

Python client for BMC Helix/Remedy `HPD_IncidentInterface_WS` (Incident + WorkInfo retrieval).

PyPI distribution name: `helix-itsm-sdk`.
Import package name: `helix_itsm_sdk`.

See the design docs in the `helix-analytics` repo for the full rationale:

- `docs/design/python-helix-itsm-sdk-design.md` — architecture, confidence-tiered qualification coverage, capability parity matrix.
- `docs/guides/python-helix-itsm-sdk-dev-guide.md` — usage examples.
- `docs/design/python-helix-itsm-sdk-build-plan.md` — phased build plan and current status.

## Status: Phase 1 (gate-free)

The two proven operations — `HelpDesk_QueryList_Service` and `HelpDesk_GetWorkInfoList` —
are implemented via hand-built SOAP envelopes, matching the working `makereport.ps1`
reference implementation exactly. No WSDL or live Remedy credentials are required for
this phase; everything is unit-tested against synthetic fixtures.

Phase 2 (blocked on Remedy credentials) and Phase 3 (blocked on a WSDL snapshot) are
tracked in `python-helix-itsm-sdk-build-plan.md`.

## Install (PyPI)

```bash
pip install helix-itsm-sdk
```

Import path remains:

```python
from helix_itsm_sdk import HelixClient
```

## Local Development

```bash
pip install -e ".[dev]"
pytest
```

## Release (CLI only)

This repository publishes to PyPI when a tag like `v0.1.1` is pushed.

1. Update `version` in `pyproject.toml`.
2. Run:

```powershell
./scripts/release.ps1 -IncludeAllChanges
```

Notes:

- The script reads the version from `pyproject.toml`, creates tag `v<version>`, pushes `main`, then pushes the tag.
- If you prefer manual commits, commit first and run without `-IncludeAllChanges`.

## Quickstart

```python
from helix_itsm_sdk import HelixClient
from helix_itsm_sdk.auth import StaticCredentials
from helix_itsm_sdk.qualification import Field
from helix_itsm_sdk.pagination import paginate
from helix_itsm_sdk.operations.query_list import HelpDeskQueryListService

client = HelixClient(
    service_url="https://<host>/arsys/services/ARService?server=<server>&webService=HPD_IncidentInterface_WS",
    auth=StaticCredentials("username", "password"),
)

qual = (Field("Status") != "Cancelled") & Field("Assigned Group").in_(["Group A"])

for incident in paginate(HelpDeskQueryListService(qualification=qual.render()), client):
    print(incident.incident_number, incident.status)
```
