Metadata-Version: 2.4
Name: duplo-ai-helpdesk-sdk
Version: 0.1.0
Summary: Python client for the DuploCloud AI HelpDesk API
Author-email: DuploCloud <infra+sdk@duplocloud.net>
License: MIT
Project-URL: Repository, https://github.com/duplocloud/ai-helpdesk-client-python
Keywords: OpenAPI,OpenAPI-Generator,DuploCloud,AI HelpDesk
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: urllib3<3.0.0,>=2.1.0
Requires-Dist: python-dateutil>=2.8.2
Requires-Dist: pydantic>=2
Requires-Dist: typing-extensions>=4.7.1
Dynamic: license-file

# duplo-ai-helpdesk-sdk

Python client for the DuploCloud AI HelpDesk API, generated from the studio
service's OpenAPI document with [openapi-generator](https://openapi-generator.tech)
(pydantic v2 models).

```sh
pip install duplo-ai-helpdesk-sdk
```

```python
from duplo_ai_helpdesk_sdk.models.workspace import Workspace
ws = Workspace.model_validate(payload)   # payload = a dict from the API
```

> This package is consumed by `duploctl` for request/response **model validation**.
> duploctl keeps its own HTTP client; the generated API/transport classes are not
> required for that use.

## Versioning

This SDK follows **independent SemVer**: its version is its own, not the backend's.

| Bump | When |
|------|------|
| **major** (`1.x.x` → `2.0.0`) | A regeneration breaks consumers — a model/field was removed or retyped. |
| **minor** (`1.0.x` → `1.1.0`) | Additive surface — new endpoints, models, or optional fields. |
| **patch** (`1.0.0` → `1.0.1`) | Generation/packaging only — generator bump, schema-id fix, metadata. No API-surface change. |

The version string is produced by `setuptools_scm` from this repo's **git tag**
(`vX.Y.Z` → `X.Y.Z`). There is no version to hand-edit.

### Provenance, not coupling

The SDK version is deliberately decoupled from the backend's `VERSION`. To see
which backend commit a given SDK build came from, read [`SDK_SOURCE.json`](./SDK_SOURCE.json):

```json
{
  "buildTimestamp": "2026-06-23T12:00:00Z",
  "builtFromApiSha": "<helpdesk backend commit SHA>",
  "builtFromApiRef": "main",
  "generatorVersion": "7.19.0"
}
```

## Releasing

1. Decide the bump (table above) and tag this repo:
   ```sh
   git tag v1.2.0 && git push origin v1.2.0
   ```
2. Run the **Trigger a release of the SDK** workflow, entering `1` / `2` / `0`
   and the target registry (`testpypi` first, then `pypi`).

The build checks out the tag, so `setuptools_scm` stamps the package as `1.2.0`.

Publishing uses **PyPI Trusted Publishing (OIDC)** — no API token is stored. The
trusted publisher must be registered once per index (PyPI and, if used, TestPyPI)
with Workflow name `release.yaml`.

## Regeneration

This repo's `duplo_ai_helpdesk_sdk/` package, `docs/`, and `requirements*.txt` are
generated; the files listed in `.openapi-generator-ignore` (this README,
`pyproject.toml`, CI, `LICENSE`, `SDK_SOURCE.json`) are hand-maintained and survive
regeneration. Regeneration is driven from the backend repo's
`scripts/generate-python-sdk.sh`.
