Metadata-Version: 2.4
Name: kc-sdk-python
Version: 0.2.0
Summary: Kvindo Cloud Python SDK — typed client for managing Kvindo Cloud infrastructure (VMs, S3, Kubernetes, load balancers, VPCs, PostgreSQL) via the REST API
Author: Kvindo
License-Expression: MIT
Project-URL: Homepage, https://cloud.kvindo.com
Project-URL: Repository, https://github.com/Kvindo/kc-sdk-python
Project-URL: Documentation, https://github.com/Kvindo/kc-sdk-python#readme
Project-URL: Bug Tracker, https://github.com/Kvindo/kc-sdk-python/issues
Keywords: kvindo,kvindo-cloud,cloud,cloud-api,iaas,infrastructure,infrastructure-as-code,sdk,api-client,rest-api,devops,vm,kubernetes,s3,object-storage,load-balancer,vpc,postgresql
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: System Administrators
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: System :: Systems Administration
Classifier: Topic :: Internet
Classifier: Typing :: Typed
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests
Requires-Dist: marshmallow-dataclass
Requires-Dist: py-ulid
Dynamic: license-file

# kc-sdk-python — Kvindo Cloud Python SDK

[![PyPI version](https://img.shields.io/pypi/v/kc-sdk-python)](https://pypi.org/project/kc-sdk-python/)
[![Python versions](https://img.shields.io/pypi/pyversions/kc-sdk-python)](https://pypi.org/project/kc-sdk-python/)
[![License: MIT](https://img.shields.io/pypi/l/kc-sdk-python)](LICENSE)

Official **Python SDK / client for the [Kvindo Cloud](https://cloud.kvindo.com) API** — manage
cloud infrastructure as code from Python: VMs, volumes, S3 object storage, Kubernetes, load
balancers, VPCs, VPNs, and managed PostgreSQL.

A thin, typed client over the REST API: one resource client per resource type, all sharing the
same create / read / update / delete / list contract.

## Install

```sh
pip install kc-sdk-python
```

Dependencies: `requests`, `marshmallow-dataclass`, `py-ulid`.

## Usage

```python
from kc_api import KcClient

client = KcClient("YOUR_API_TOKEN")  # api_url defaults to https://cloud-api.kvindo.ru

# List (label-filtered, paginated)
resp = client.vms.get_by_labels({"env": "prod"}, max_page_size=50)
for vm in resp.resources:
    print(vm["metadata"]["name"])

# Read one
vm = client.vms.read("01H...")
print(vm.resource)

# Create / update (async) then wait for it to reconcile
created = client.vms.create_or_update({
    "metadata": {"name": "my-vm", "folderId": "01H..."},
    "spec": {"offerId": "g3-1c2-100", "state": "running", ...},
})
status = client.vms.wait_request_satisfied(created.requestId, timeout_seconds=300)
assert status.succeeded

# Delete (optionally block until reconciled)
client.vms.delete("01H...", wait=True)
```

Create / update / delete are **asynchronous**: they return a `requestId`; poll
`read_request(requestId)` or use `wait_request_satisfied(...)`. Every response
object carries `errorMessage` / `errorCode` (a typed `KcApi*ErrorCode`) which are
`None` on success.

### Available resources

`KcClient` exposes one `KcResourceClient` per type, e.g. `client.vms`,
`client.volumes`, `client.s3_buckets`, `client.kubernetes`,
`client.load_balancers`, `client.vpcs`, `client.postgresql_standalones`,
`client.folders`, `client.transactions`, … (the surface mirrors the official
Kvindo Cloud API).

## Related projects

Part of the Kvindo Cloud developer toolchain:

- **[kc CLI](https://github.com/Kvindo/kc-cli)** — kubectl-style command-line client for Kvindo Cloud.
- **[terraform-provider-kvindo](https://github.com/Kvindo/terraform-provider-kvindo)** — Terraform provider ([Registry](https://registry.terraform.io/providers/kvindo/kvindo/latest)).
- **[Kvindo Cloud console](https://cloud.kvindo.com)** — web UI and API.

## License

MIT
