Metadata-Version: 2.4
Name: pyDetektia
Version: 4.1.0
Summary: Python wrapper library for the Detektia API.
Home-page: https://github.com/detektia/pyDetektia
Author: Detektia
Author-email: info@detektia.com
License: MIT
Description-Content-Type: text/markdown
License-File: LICENSE.txt
Requires-Dist: requests
Dynamic: author
Dynamic: author-email
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license
Dynamic: license-file
Dynamic: requires-dist
Dynamic: summary

# pyDetektia

Python wrapper library for the Detektia API.

## Package layout

```
pyDetektia/
  manager.py   ApiUser, ApiAdmin, ApiRoot
  errors.py    DetektiaAPIError, DetektiaConnectionError
```

## Classes

- **ApiUser** — read operations and actions. Base class.
- **ApiAdmin** — inherits ApiUser. Adds write operations.
- **ApiRoot** — inherits ApiAdmin. Adds user and organization management.

`ApiAdmin` requires being admin or root user. `ApiRoot` requires being root.

## Authentication

Create an instance by passing the API base URL (`ip`) and one of:

| Method | Example |
|--------|---------|
| Access token | `ApiUser(ip, token=token)` |
| Username + password | `ApiUser(ip, username=user, password=pwd)` |
| Offline refresh token | `ApiUser(ip, offline_token=offline_token)` |

### Obtain an offline token:

```python
from pyDetektia.manager import ApiUser

offline_token = ApiUser.get_offline_token(ip, username, password)

api = ApiUser(ip, offline_token=offline_token)
```

For admin/root operations use the same auth with `ApiAdmin` or `ApiRoot`.

## Errors

| Exception | When |
|-----------|------|
| `DetektiaAPIError` | API returned an error (4xx/5xx). Has `status_code` and `detail`. |
| `DetektiaConnectionError` | Network failure (unreachable host, timeout). |
| `ValueError` | Local checks in the library (e.g. wrong role, no auth method). |

Failed API calls raise automatically — no extra import needed in notebooks.

## ApiUser

Includes all methods below.

**Auth (classmethod)**

- `get_offline_token(ip, username, password)`

**Datasets**

- `get_datasets_metadata`
- `get_dataset`

**Properties**

- `get_properties_metadata`
- `get_property`

**Metrics**

- `get_metrics_metadata`
- `get_metric`

**Models**

- `get_models_metadata`
- `get_kinetics_metadata`
- `get_model_data`

**Exogenous**

- `get_exogenous_metadata`
- `get_exogenous_geometries`
- `get_exogenous_data`

**Assignations**

- `get_assignations_metadata`
- `get_assignation_data`

**Polygons**

- `get_polygon_layers`
- `get_polygon_geometries`
- `get_polygon_metrics`
- `get_polygon_data`
- `get_polygon_data_info`

**Actions**

- `run_action`

## ApiAdmin (additional methods)

Inherits all ApiUser methods.

**Datasets**

- `modify_dataset_metadata`
- `add_dataset`
- `delete_dataset`

**Properties**

- `add_property`
- `delete_property`

**Metrics**

- `add_metric`
- `delete_metric`

**Models**

- `add_model`
- `delete_model`

**Exogenous**

- `add_exogenous`
- `delete_exogenous`

**Assignations**

- `add_assignation`
- `delete_assignation`

**Polygons**

- `add_polygon_layer`
- `add_polygon_metrics`
- `delete_polygon_layer`
- `delete_polygon_metrics`

**Quota & credits**

- `get_assigned_quota`
- `get_consumed_quota`
- `get_credits`

## ApiRoot (additional methods)

Inherits all ApiAdmin and ApiUser methods.

**Users**

- `get_users`
- `create_user`
- `delete_user`
- `modify_role`

**Organization**

- `modify_quota`
- `modify_credits`
