Metadata-Version: 2.4
Name: satxcloud
Version: 0.2.1
Summary: Typed Python client library for SatxCloud API
Project-URL: Homepage, https://docs.satx.cloud
Project-URL: Documentation, https://docs.satx.cloud
Project-URL: Issues, https://docs.satx.cloud
Project-URL: Changelog, https://docs.satx.cloud
Author: SatxCloud API Client Contributors
Maintainer: SatxCloud API Client Contributors
License: MIT
License-File: LICENSE
Keywords: api,client,satxcloud,vds
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: Software Development :: Libraries
Requires-Python: >=3.10
Provides-Extra: dev
Requires-Dist: build>=1.2.2; extra == 'dev'
Requires-Dist: pytest>=8.0.0; extra == 'dev'
Requires-Dist: twine>=6.0.1; extra == 'dev'
Description-Content-Type: text/markdown

# satxcloud

Typed Python client library for the SatxCloud API.

## Features

- Layered architecture: `client` -> `services` -> `transport`
- Typed dataclass models for core entities
- Explicit error hierarchy (`ApiError`, `TransportError`, `AuthenticationError`)
- Support for `X-API-Key` and `Bearer` auth modes
- Public endpoints available without API key

## Installation

```bash
pip install satxcloud
```

## Quick Start

```python
from satxcloud import SatxCloudClient, ApiError

client = SatxCloudClient(api_key="YOUR_KEY")

try:
    plans = client.catalog.list_plans()  # no auth required
    print(plans[0].id, plans[0].name)

    servers = client.servers.list_servers()  # auth required
    for s in servers:
        print(s.vmid, s.name, s.server_type, s.status)
except ApiError as e:
    print(e.status_code, e.error_code, e.message)
```

## Architecture

- `satxcloud.client.SatxCloudClient`: composition root and public facade
- `satxcloud.transport.HttpTransport`: HTTP concerns, auth headers, error mapping
- `satxcloud.services.catalog.CatalogService`: plans and availability
- `satxcloud.services.servers.ServersService`: server lifecycle operations
- `satxcloud.models`: typed API entities and operation results

## Service Methods

### Catalog

- `list_plans()`
- `plans_availability()`

### Servers

- `list_servers()`
- `create_server(...)`
- `server_details(vmid)`
- `server_status(vmid)`
- `start(vmid)`
- `stop(vmid)`
- `restart(vmid)`
- `renew(vmid, months=None)`
- `change_password(vmid, new_password=None)`
- `create_backup(vmid)`
- `list_backups(vmid)`
- `restore_backup(vmid, volid)`
- `delete_backup(vmid, volid)`
- `reinstall_os(vmid, template, password=None)`
