Date: 25/01/2026 21:45 Status: En attente validation
| Service | URL | API | Usage |
|---|---|---|---|
| Jellyfin | 192.168.1.199:8096 | REST | Bibliothèque médias, lecture, users |
| Ollama | 192.168.1.30:11434 | REST | Chat LLM, generate, embeddings |
| Portainer | 192.168.1.12:9443 | REST | Containers, stacks, images |
| GitLab | 192.168.1.196 | REST | Repos, pipelines, issues, MRs |
| Proxmox | 192.168.1.10:8006 | REST | VMs, containers, storage, backup |
| Service | URL | API | Usage |
|---|---|---|---|
| Grafana | 192.168.1.12:3000 | REST | Dashboards, datasources, alerts |
| Prometheus | 192.168.1.12:9090 | REST | Métriques, alerting rules |
| Pi-hole | 192.168.1.12:80 | REST | DNS, blocklists, stats |
| Supabase | 192.168.1.12:8200 | REST | Tables, auth, storage |
| Nextcloud | 192.168.1.51:8060 | WebDAV+REST | Fichiers, calendrier, contacts |
| Service | URL | API | Usage |
|---|---|---|---|
| ai-orchestrator | 192.168.1.12:5501 | REST | Tools IA, jobs queue |
| whisper-api | 192.168.1.12:9100 | REST | Transcription audio |
| yolo-api | 192.168.1.12:9200 | REST | Détection objets images |
| Open-WebUI | 192.168.1.12:3001 | REST | Chat history, models |
Ces outils sont déjà gérés par ai-orchestrator, pas besoin de connecteurs directs :
{
id: 'jellyfin',
name: 'Jellyfin',
base_url: 'http://192.168.1.199:8096',
auth_type: 'api_key', // X-Emby-Token header
endpoints: [
// Library
{ method: 'GET', path: '/Items', entity: 'item', action: 'list', summary: 'Get all items' },
{ method: 'GET', path: '/Items/{id}', entity: 'item', action: 'get', summary: 'Get item details' },
{ method: 'GET', path: '/Items/Latest', entity: 'item', action: 'list', summary: 'Get latest items' },
// Users
{ method: 'GET', path: '/Users', entity: 'user', action: 'list', summary: 'List users' },
{ method: 'GET', path: '/Users/{id}', entity: 'user', action: 'get', summary: 'Get user' },
// Sessions
{ method: 'GET', path: '/Sessions', entity: 'session', action: 'list', summary: 'Active sessions' },
// System
{ method: 'GET', path: '/System/Info', entity: 'system', action: 'get', summary: 'Server info' },
{ method: 'POST', path: '/System/Restart', entity: 'system', action: 'update', summary: 'Restart server' },
// Playback
{ method: 'POST', path: '/Sessions/{id}/Playing', entity: 'playback', action: 'create', summary: 'Start playback' },
{ method: 'POST', path: '/Sessions/{id}/Playing/Stop', entity: 'playback', action: 'delete', summary: 'Stop playback' },
// Libraries
{ method: 'GET', path: '/Library/VirtualFolders', entity: 'library', action: 'list', summary: 'List libraries' },
{ method: 'POST', path: '/Library/Refresh', entity: 'library', action: 'update', summary: 'Refresh all libraries' },
// Search
{ method: 'GET', path: '/Search/Hints', entity: 'search', action: 'list', summary: 'Search media' },
]
}
{
id: 'ollama',
name: 'Ollama',
base_url: 'http://192.168.1.30:11434',
auth_type: 'none',
endpoints: [
{ method: 'POST', path: '/api/generate', entity: 'completion', action: 'create', summary: 'Generate text' },
{ method: 'POST', path: '/api/chat', entity: 'chat', action: 'create', summary: 'Chat completion' },
{ method: 'POST', path: '/api/embeddings', entity: 'embedding', action: 'create', summary: 'Generate embeddings' },
{ method: 'GET', path: '/api/tags', entity: 'model', action: 'list', summary: 'List local models' },
{ method: 'POST', path: '/api/show', entity: 'model', action: 'get', summary: 'Show model info' },
{ method: 'POST', path: '/api/pull', entity: 'model', action: 'create', summary: 'Pull model' },
{ method: 'DELETE', path: '/api/delete', entity: 'model', action: 'delete', summary: 'Delete model' },
{ method: 'POST', path: '/api/copy', entity: 'model', action: 'create', summary: 'Copy model' },
]
}
{
id: 'portainer',
name: 'Portainer',
base_url: 'https://192.168.1.12:9443',
auth_type: 'bearer', // JWT token
endpoints: [
// Endpoints (environments)
{ method: 'GET', path: '/api/endpoints', entity: 'endpoint', action: 'list', summary: 'List environments' },
// Containers
{ method: 'GET', path: '/api/endpoints/{envId}/docker/containers/json', entity: 'container', action: 'list', summary: 'List containers' },
{ method: 'POST', path: '/api/endpoints/{envId}/docker/containers/{id}/start', entity: 'container', action: 'update', summary: 'Start container' },
{ method: 'POST', path: '/api/endpoints/{envId}/docker/containers/{id}/stop', entity: 'container', action: 'update', summary: 'Stop container' },
{ method: 'POST', path: '/api/endpoints/{envId}/docker/containers/{id}/restart', entity: 'container', action: 'update', summary: 'Restart container' },
{ method: 'GET', path: '/api/endpoints/{envId}/docker/containers/{id}/logs', entity: 'container', action: 'get', summary: 'Get logs' },
// Stacks
{ method: 'GET', path: '/api/stacks', entity: 'stack', action: 'list', summary: 'List stacks' },
{ method: 'POST', path: '/api/stacks/{id}/start', entity: 'stack', action: 'update', summary: 'Start stack' },
{ method: 'POST', path: '/api/stacks/{id}/stop', entity: 'stack', action: 'update', summary: 'Stop stack' },
// Images
{ method: 'GET', path: '/api/endpoints/{envId}/docker/images/json', entity: 'image', action: 'list', summary: 'List images' },
]
}
{
id: 'proxmox',
name: 'Proxmox VE',
base_url: 'https://192.168.1.10:8006',
auth_type: 'custom', // PVEAuthCookie + CSRFPreventionToken
endpoints: [
// Nodes
{ method: 'GET', path: '/api2/json/nodes', entity: 'node', action: 'list', summary: 'List nodes' },
{ method: 'GET', path: '/api2/json/nodes/{node}/status', entity: 'node', action: 'get', summary: 'Node status' },
// VMs
{ method: 'GET', path: '/api2/json/nodes/{node}/qemu', entity: 'vm', action: 'list', summary: 'List VMs' },
{ method: 'GET', path: '/api2/json/nodes/{node}/qemu/{vmid}/status/current', entity: 'vm', action: 'get', summary: 'VM status' },
{ method: 'POST', path: '/api2/json/nodes/{node}/qemu/{vmid}/status/start', entity: 'vm', action: 'update', summary: 'Start VM' },
{ method: 'POST', path: '/api2/json/nodes/{node}/qemu/{vmid}/status/stop', entity: 'vm', action: 'update', summary: 'Stop VM' },
{ method: 'POST', path: '/api2/json/nodes/{node}/qemu/{vmid}/status/shutdown', entity: 'vm', action: 'update', summary: 'Shutdown VM' },
// LXC
{ method: 'GET', path: '/api2/json/nodes/{node}/lxc', entity: 'container', action: 'list', summary: 'List LXC' },
{ method: 'POST', path: '/api2/json/nodes/{node}/lxc/{vmid}/status/start', entity: 'container', action: 'update', summary: 'Start LXC' },
{ method: 'POST', path: '/api2/json/nodes/{node}/lxc/{vmid}/status/stop', entity: 'container', action: 'update', summary: 'Stop LXC' },
// Storage
{ method: 'GET', path: '/api2/json/nodes/{node}/storage', entity: 'storage', action: 'list', summary: 'List storage' },
// Tasks
{ method: 'GET', path: '/api2/json/nodes/{node}/tasks', entity: 'task', action: 'list', summary: 'List tasks' },
// Cluster
{ method: 'GET', path: '/api2/json/cluster/resources', entity: 'resource', action: 'list', summary: 'All cluster resources' },
]
}
Utiliser l'API GitLab CE locale pour :