API REST

Integre o PalcoTimer com seus sistemas usando nossa API REST.

Introdução

A API REST do PalcoTimer permite criar, ler, atualizar e deletar recursos programaticamente. A URL base da API é:

https://app.palcotimer.com/api/v1

Todas as respostas são em JSON. Para ambientes de desenvolvimento, use

Autenticação

A maioria dos endpoints requer autenticação via Bearer Token. Inclua o token no header de cada requisição:

Authorization: Bearer seu_token_aqui

Obtenha seu token fazendo login na plataforma. O token é retornado no endpoint de login e armazenado automaticamente pelo frontend.

Alguns endpoints públicos (como GET de salas por short_code) não requerem autenticação.

Salas (Rooms)

Listar suas salas

GET /auth/rooms

# Resposta
[
  {
    "id": "uuid",
    "short_code": "ABC123",
    "name": "Minha Sala",
    "created_at": "2024-01-01T00:00:00Z",
    "updated_at": "2024-01-01T00:00:00Z"
  }
]

Criar sala

POST /rooms
Content-Type: application/json

{
  "name": "Nome da Sala"
}

# Resposta
{
  "id": "uuid",
  "short_code": "ABC123"
}

Obter sala por ID ou short_code

GET /rooms/{roomId}

# Resposta
{
  "id": "uuid",
  "short_code": "ABC123",
  "name": "Minha Sala",
  "settings": {...},
  "created_at": "2024-01-01T00:00:00Z"
}

Atualizar sala

PUT /rooms/{roomId}
Content-Type: application/json

{
  "name": "Novo Nome",
  "settings": {
    "color_normal": "#22c55e",
    "color_yellow": "#eab308",
    "color_red": "#ef4444"
  }
}

Timers

Listar timers de uma sala

GET /rooms/{roomId}/timers

# Resposta
[
  {
    "id": "uuid",
    "room_id": "uuid",
    "position": 0,
    "name": "Abertura",
    "speaker": "João Silva",
    "duration_ms": 300000,
    "appearance": "COUNTDOWN",
    "wrap_yellow_ms": 120000,
    "wrap_red_ms": 30000
  }
]

Criar timer

POST /rooms/{roomId}/timers
Content-Type: application/json

{
  "name": "Palestra 1",
  "speaker": "Maria Santos",
  "duration_ms": 600000,
  "appearance": "COUNTDOWN",
  "wrap_yellow_ms": 120000,
  "wrap_red_ms": 30000
}

Atualizar timer

PUT /rooms/{roomId}/timers/{timerId}
Content-Type: application/json

{
  "name": "Novo Nome",
  "duration_ms": 900000
}

Deletar timer

DELETE /rooms/{roomId}/timers/{timerId}

Mensagens

Listar mensagens

GET /rooms/{roomId}/messages

# Resposta
[
  {
    "id": "uuid",
    "text": "Faltam 5 minutos",
    "color": "yellow",
    "bold": true,
    "visible": false
  }
]

Criar mensagem

POST /rooms/{roomId}/messages
Content-Type: application/json

{
  "text": "Finalize agora",
  "color": "red",
  "bold": true,
  "uppercase": true
}

Mostrar/Esconder mensagem

PUT /rooms/{roomId}/messages/{messageId}
Content-Type: application/json

{
  "visible": true
}

Controle de Playback

Para controlar a reprodução dos timers (play, pause, stop, etc.), use a conexão WebSocket. Veja a documentação de

Em breve
Estamos desenvolvendo endpoints HTTP para controle simplificado, ideais para integrações com Stream Deck e sistemas externos. Em breve estará disponível.

Códigos de Erro

CódigoDescrição
400Requisição inválida
401Não autenticado
403Sem permissão
404Recurso não encontrado
409Conflito (ex: limite de salas atingido)
500Erro interno do servidor