# API Contracts: 012-remove-superset-tool

## SupersetClient Internal API

The `SupersetClient` will provide the following methods for internal backend use:

### `get_dashboards(query: Optional[Dict] = None) -> Tuple[int, List[Dict]]`
- **Purpose**: Fetches paginated dashboards.
- **Contract**:
  - `query`: Optional filters and pagination parameters.
  - Returns: `(total_count, dashboard_list)`.

### `export_dashboard(dashboard_id: int) -> Tuple[bytes, str]`
- **Purpose**: Exports a dashboard as a ZIP file.
- **Contract**:
  - `dashboard_id`: ID of the dashboard.
  - Returns: `(zip_content, filename)`.

### `import_dashboard(file_name: Union[str, Path], dash_id: Optional[int] = None, dash_slug: Optional[str] = None) -> Dict`
- **Purpose**: Imports a dashboard from a ZIP file.
- **Contract**:
  - `file_name`: Path to ZIP.
  - `dash_id`/`dash_slug`: Optional identifiers for delete-retry logic.
  - Returns: API response dictionary.

## Configuration Models (Pydantic)

### `Environment`
```python
class Environment(BaseModel):
    id: str
    name: str
    url: str
    username: str
    password: str
    verify_ssl: bool = True
    timeout: int = 30
    is_default: bool = False
    backup_schedule: Schedule = Field(default_factory=Schedule)