Pular para o conteúdo

Endpoints de Agendamentos

Agendamentos permitem automatizar ações de ligar/desligar em horários específicos.

Todos os endpoints requerem autenticação.

Authorization: Bearer <token>

{
"id": "550e8400-e29b-41d4-a716-446655440000",
"control_point_id": "cp-uuid",
"action": "ON",
"start_time": "2025-12-10T06:00:00Z",
"end_time": "2025-12-10T08:00:00Z",
"repeat_pattern": "WEEKLY",
"days_of_week": [1, 2, 3, 4, 5],
"is_active": true,
"description": "Aeração matinal - Dias úteis",
"created_at": "2025-11-21T10:30:00Z",
"updated_at": null
}

AçãoDescrição
ONLigar no horário especificado
OFFDesligar no horário especificado
PadrãoDescriçãoRequer
ONCEExecutar apenas uma vezstart_time
DAILYRepetir todos os diasstart_time
WEEKLYRepetir toda semanastart_time, days_of_week
MONTHLYRepetir todo mêsstart_time
YEARLYRepetir todo anostart_time

Para o padrão WEEKLY, os dias são representados como inteiros:

ValorDia
1Segunda-feira
2Terça-feira
3Quarta-feira
4Quinta-feira
5Sexta-feira
6Sábado
7Domingo

Regras de Validação:

  • Valores devem estar entre 1 e 7
  • Valores duplicados não são permitidos

Cria ou atualiza um agendamento para um ponto de controle.

ParâmetroTipoDescrição
control_point_idUUIDID do ponto de controle
POST /api/v1/control-points/cp-uuid/schedules
Authorization: Bearer <token>
Content-Type: application/json
{
"action": "ON",
"start_time": "2025-12-10T06:00:00Z",
"end_time": "2025-12-10T08:00:00Z",
"repeat_pattern": "WEEKLY",
"days_of_week": [1, 2, 3, 4, 5],
"is_active": true,
"description": "Aeração matinal - Dias úteis"
}
CampoTipoObrigatórioPadrãoDescrição
actionenum-Ação a executar (ON ou OFF)
start_timedatetime-Hora de início (ISO 8601)
end_timedatetime-Hora de término (opcional)
repeat_patternenumONCEPadrão de repetição
days_of_weekarray[int]-Dias da semana (1-7) para WEEKLY
is_activebooleantrueSe o agendamento está ativo
descriptionstring-Descrição do agendamento
{
"id": "schedule-uuid",
"control_point_id": "cp-uuid",
"action": "ON",
"start_time": "2025-12-10T06:00:00Z",
"end_time": "2025-12-10T08:00:00Z",
"repeat_pattern": "WEEKLY",
"days_of_week": [1, 2, 3, 4, 5],
"is_active": true,
"description": "Aeração matinal - Dias úteis",
"created_at": "2025-11-21T10:30:00Z",
"updated_at": null
}
StatusDetalhe
404Ponto de controle não encontrado
422Erro de validação (days_of_week inválidos, duplicados, etc.)

Lista os agendamentos de um ponto de controle.

ParâmetroTipoDescrição
control_point_idUUIDID do ponto de controle
GET /api/v1/control-points/cp-uuid/schedules
Authorization: Bearer <token>
[
{
"id": "schedule-uuid",
"control_point_id": "cp-uuid",
"action": "ON",
"start_time": "2025-12-10T06:00:00Z",
"end_time": "2025-12-10T08:00:00Z",
"repeat_pattern": "WEEKLY",
"days_of_week": [1, 2, 3, 4, 5],
"is_active": true,
"description": "Aeração matinal - Dias úteis"
}
]
StatusDetalhe
404Ponto de controle não encontrado

Atualiza um agendamento por ID (atualização parcial).

ParâmetroTipoDescrição
schedule_idUUIDID do agendamento
PATCH /api/v1/schedules/schedule-uuid
Authorization: Bearer <token>
Content-Type: application/json
{
"action": "OFF",
"is_active": false,
"description": "Descrição atualizada"
}

Todos os campos são opcionais:

CampoTipoDescrição
actionenumNova ação (ON / OFF)
start_timedatetimeNova hora de início
end_timedatetimeNova hora de término
repeat_patternenumNovo padrão de repetição
days_of_weekarray[int]Novos dias da semana
is_activebooleanAtivar/desativar agendamento
descriptionstringNova descrição

Retorna o objeto do agendamento atualizado.

StatusDetalhe
404Agendamento não encontrado ou não acessível
422Erro de validação

Exclui um agendamento.

ParâmetroTipoDescrição
schedule_idUUIDID do agendamento
DELETE /api/v1/schedules/schedule-uuid
Authorization: Bearer <token>

Sem corpo de resposta.

StatusDetalhe
404Agendamento não encontrado ou não acessível

{
"action": "ON",
"start_time": "2025-12-10T06:00:00Z",
"end_time": "2025-12-10T10:00:00Z",
"repeat_pattern": "DAILY",
"is_active": true,
"description": "Aeração matinal diária"
}
{
"action": "ON",
"start_time": "2025-12-10T08:00:00Z",
"end_time": "2025-12-10T18:00:00Z",
"repeat_pattern": "WEEKLY",
"days_of_week": [6, 7],
"is_active": true,
"description": "Aeração de fim de semana"
}
{
"action": "OFF",
"start_time": "2025-12-10T23:00:00Z",
"repeat_pattern": "ONCE",
"is_active": true,
"description": "Desligamento único"
}