# Data Model: 012-remove-superset-tool

## Entities

### 1. Environment (Updated)
- **Source**: `backend/src/core/config_models.py`
- **Purpose**: Represents a Superset environment configuration, now incorporating all fields required for the `SupersetClient`.
- **Fields**:
    - `id`: `str` (Unique identifier)
    - `name`: `str` (Display name)
    - `url`: `str` (Base URL for API)
    - `username`: `str`
    - `password`: `str`
    - `verify_ssl`: `bool` (Default: `True`)
    - `timeout`: `int` (Default: `30`)
    - `is_default`: `bool` (Default: `False`)
    - `backup_schedule`: `Schedule`
- **Validation Rules**:
    - `url` must start with `http://` or `https://`.
    - `timeout` must be positive.

### 2. API Contract (SupersetClient)
- **Source**: `backend/src/core/superset_client.py`
- **Purpose**: Self-contained client for Superset API interactions.
- **Key Methods**:
    - `authenticate()`
    - `get_dashboards(query)`
    - `get_datasets(query)`
    - `get_databases(query)`
    - `export_dashboard(dashboard_id)`
    - `import_dashboard(file_name, dash_id, dash_slug)`
    - `delete_dashboard(dashboard_id)`
    - `get_databases_summary()`
    - `get_dashboards_summary()`

## State Transitions
- **Authentication**: Unauthenticated -> Authenticated (token stored in memory/client session).
- **Import/Export**: File System <-> Superset API.