Metadata-Version: 2.4
Name: netbox-custom-widget
Version: 0.2.0
Summary: NetBox plugin for custom API dashboard widgets - call any API and display results
Author-email: sieteunoseis <jeremy.worden@gmail.com>
License: Apache-2.0
Project-URL: Homepage, https://github.com/sieteunoseis/netbox-custom-widget
Project-URL: Repository, https://github.com/sieteunoseis/netbox-custom-widget
Project-URL: Issues, https://github.com/sieteunoseis/netbox-custom-widget/issues
Keywords: netbox,netbox-plugin,dashboard,widget,api
Classifier: Development Status :: 3 - Alpha
Classifier: Framework :: Django
Classifier: Intended Audience :: System Administrators
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: requests>=2.28.0
Provides-Extra: dev
Requires-Dist: black; extra == "dev"
Requires-Dist: flake8; extra == "dev"
Requires-Dist: isort; extra == "dev"
Dynamic: license-file

# NetBox Custom Widget

A NetBox plugin that provides configurable dashboard widgets for calling external APIs and displaying results. Similar to Homepage's Custom API widget.

## Features

- Call any HTTP API endpoint and display JSON results on your NetBox dashboard
- Configurable field mappings with dot-notation for nested JSON access
- Auto-refresh via HTMX at configurable intervals
- Adaptive color coding for status values (e.g., UCCE process monitoring)
- Pre-define endpoints in plugin configuration for automatic provisioning
- Full CRUD interface for managing API endpoints

## Installation

```bash
pip install netbox-custom-widget
```

Add to your NetBox configuration:

```python
PLUGINS = ['netbox_custom_widget']
```

## Configuration

Define API endpoints in your `plugins.py`:

```python
PLUGINS_CONFIG = {
    'netbox_custom_widget': {
        'verify_ssl': False,
        'endpoints': [
            {
                'name': 'My API Status',
                'url': 'https://api.example.com/status',
                'headers': {'Authorization': 'Bearer token123'},
                'mappings': [
                    {'field': 'status', 'label': 'Status', 'color': 'adaptive'},
                    {'field': 'uptime', 'label': 'Uptime', 'suffix': 'hours'},
                ],
                'display_mode': 'list',
                'refresh_interval': 30,
            },
        ],
    }
}
```

## Requirements

- NetBox >= 4.0.0
- Python >= 3.10
