Referência da API do Painel
URL Base: https://painel.mangati.com
Todos os endpoints estão sob /api. Requer um Token de Acesso gerado em Admin → Tokens de Acesso.
Authorization: Bearer <token_de_acesso>Painéis
Obter Painel
GET /api/panels/{id}
Authorization: Bearer <token_de_acesso>Retorna a configuração completa do painel, incluindo widgets, layout e fontes de dados.
Exemplo:
curl https://painel.mangati.com/api/panels/018e4f2b-7b3c-7000-8d2e-111111111111 \
-H "Authorization: Bearer TOKEN" \
-H "Accept: application/json"Resposta:
{
"id": "018e4f2b-7b3c-7000-8d2e-111111111111",
"name": "Recepção - Tela Principal",
"widgets": [
{
"type": "queue",
"position": { "x": 0, "y": 0, "width": 8, "height": 6 },
"config": { "app": "018e4f2c-..." }
},
{
"type": "clock",
"position": { "x": 8, "y": 0, "width": 4, "height": 2 }
}
]
}Cache: Público, 30 segundos.
Dispositivos
Obter Dispositivo
GET /api/devices/{id}
Authorization: Bearer <token_de_acesso>Retorna informações do dispositivo e o painel atribuído.
Resposta:
{
"id": "018e4f2d-...",
"name": "TV Recepção",
"panel": { "id": "018e4f2b-..." },
"os": "Android 13",
"browser": "Chrome 120"
}Obter Dispositivo por Código
GET /api/device-codes/{codigo}
Authorization: Bearer <token_de_acesso>Resolve um código de registro de dispositivo (exibido na tela) para um registro de dispositivo. Usado durante o cadastro.
Exemplo:
curl https://painel.mangati.com/api/device-codes/ABC123 \
-H "Authorization: Bearer TOKEN"Permissão de Dispositivo
GET /api/device-permissions/{id}
Authorization: Bearer <token_de_acesso>Retorna o registro de permissão que vincula um dispositivo à organização/painel.
Apps (Fontes de Dados)
Obter App
GET /api/apps/{id}
Authorization: Bearer <token_de_acesso>Retorna a configuração do app (ex.: detalhes de conexão com o NovoSGA, filtros de unidade/serviço).
Resposta:
{
"id": "018e4f2c-...",
"name": "NovoSGA - Unidade Central",
"type": "novosga",
"config": {
"baseUrl": "https://novosga.mangati.com",
"unidade": 1
}
}Playlists
Obter Playlist
GET /api/playlists/{id}
Authorization: Bearer <token_de_acesso>Retorna uma playlist de mídia (conteúdo rotativo para widgets de exibição).
Resposta:
{
"id": "018e4f2e-...",
"name": "Institucional",
"items": [
{ "type": "image", "url": "https://...", "duration": 10 },
{ "type": "video", "url": "https://...", "duration": 30 }
]
}Feeds
Obter Feed
GET /api/feeds/{id}
Authorization: Bearer <token_de_acesso>Retorna dados do feed (RSS ou fonte personalizada). As respostas são cacheadas.
Clima
Obter Previsão do Tempo
GET /api/weather-forecasts/{local}
Authorization: Bearer <token_de_acesso>Retorna dados de clima para um local. Cacheado para evitar limitação de requisições nas APIs externas.
Resposta:
{
"location": "São Paulo, BR",
"temperature": 24,
"condition": "partly_cloudy",
"humidity": 65,
"forecast": [
{ "day": "Seg", "high": 26, "low": 19, "condition": "sunny" },
{ "day": "Ter", "high": 23, "low": 18, "condition": "rain" }
]
}YouTube ao Vivo
Obter Status de Live
GET /api/youtube-lives/{id}
Authorization: Bearer <token_de_acesso>Retorna dados de embed da transmissão ao vivo.
Notificações de Painel
Listar Notificações
GET /api/notifications
Authorization: Bearer <token_de_acesso>Retorna notificações push ativas para os painéis da organização.
Exemplo de Integração em PHP
// Buscar configuração do painel para um dispositivo de exibição
$response = $client->get('https://painel.mangati.com/api/panels/' . $panelId, [
'headers' => [
'Authorization' => 'Bearer ' . $accessToken,
'Accept' => 'application/json',
],
]);
$panel = json_decode($response->getBody(), true);
foreach ($panel['widgets'] as $widget) {
// Renderizar cada widget com base em $widget['type']
}