Metadata-Version: 2.4
Name: dragoraapi
Version: 1.0.0
Summary: Official Dragora panel API client for Python. Supports user (dlpu_) and admin (dpla_) API keys.
Author: Dragora
License: MIT
Keywords: dragora,dragoraapi,game-panel,game-server,minecraft,api-client
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: requests>=2.20
Provides-Extra: test
Requires-Dist: pytest; extra == "test"

# dragoraapi (Python)

Official **Dragora** panel API client for Python. Authenticate with a Dragora
API key (`dlpu_...` for users, `dpla_...` for admins) or a legacy session token.

## Install

```bash
pip install dragoraapi          # from PyPI
# or locally:
pip install -e .
```

## Usage

```python
from dragoraapi import DragoraAPI

# Use an API key (recommended) — no session_key needed.
api = DragoraAPI(
    url="http://localhost:8050",
    api_key="dlpu_your-user-api-key",
)

# Or a session token:
api = DragoraAPI(
    url="http://localhost:8050",
    token="<session-token>",
    session_key="<session-key>",
)
```

### API keys

```python
# Create a key (plaintext returned once)
api.create_api_key("my-bot", admin=True, expires_days=30)
# => {"token": "dpla_...", "api_key": {...}, ...}

api.list_api_keys()          # your masked keys
api.list_all_api_keys()      # admin: every key
api.revoke_api_key(key_id)   # revoke
```

### Servers & resources

```python
api.servers()
api.server(10)
api.server_power(10, "start")   # start | stop | restart | kill
api.server_console(10, "say hello")
api.server_logs(10)

api.files(10, "/plugins")
api.read_file(10, "server.properties")
api.write_file(10, "server.properties", "...")

api.databases(10)
api.create_database(10, {"database_name": "web", "password": "x", "database_host_id": 1})

api.admin_stats()   # admin-only
api.admin_users()
```

## Errors

Non-2xx responses raise `DragoraAPIError(status, message, data)`:

```python
from dragoraapi import DragoraAPIError

try:
    api.admin_stats()
except DragoraAPIError as e:
    print(e.status, e.message)  # 403 ...
```

## Keys

- `dlpu_` = user-scoped API key
- `dpla_` = admin-scoped API key (valid only for admin users; grants access to
  `/panel/admin/*` and `/panel/nodes/*` endpoints)

## License

MIT
