Aulas (Classes)
Consultar aulas, horários e gerenciar reservas.
Aulas (Classes)
Endpoints para consultar aulas agendadas, grade horária, modalidades e gerenciar reservas de alunos.
Base URL
https://dashboard.octagym.ai/api/v1GET /api/v1/classes — Listar aulas agendadas
Retorna as instâncias de aulas agendadas, com filtros por data e status.
Query Parameters
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
date | string | — | Filtrar por data exata (YYYY-MM-DD) |
date_from | string | — | Data inicial do intervalo (YYYY-MM-DD) |
date_to | string | — | Data final do intervalo (YYYY-MM-DD) |
class_type_id | string | — | Filtrar por modalidade (UUID) |
status | string | — | scheduled, cancelled, completed |
Use date para buscar aulas de um dia específico, ou date_from + date_to para um intervalo.
Se nenhum filtro de data for informado, retorna as aulas dos próximos 7 dias.
Exemplo de Requisição
curl -X GET "https://dashboard.octagym.ai/api/v1/classes?date=2026-03-22" \
-H "Authorization: Bearer og_live_sua_chave_aqui" \
-H "Content-Type: application/json"curl -X GET "https://dashboard.octagym.ai/api/v1/classes?date_from=2026-03-22&date_to=2026-03-28" \
-H "Authorization: Bearer og_live_sua_chave_aqui" \
-H "Content-Type: application/json"curl -X GET "https://dashboard.octagym.ai/api/v1/classes?class_type_id=ct_uuid_001&status=scheduled" \
-H "Authorization: Bearer og_live_sua_chave_aqui" \
-H "Content-Type: application/json"Exemplo de Resposta
{
"success": true,
"data": [
{
"id": "cls_uuid_001",
"class_type_id": "ct_uuid_001",
"date": "2026-03-22",
"start_time": "07:00",
"end_time": "08:00",
"status": "scheduled",
"max_capacity": 25,
"current_bookings": 18,
"trainer_id": "tr_uuid_001",
"trainer_name": "Carlos Silva",
"store_id": "store_uuid_001",
"class_type": {
"id": "ct_uuid_001",
"name": "Spinning",
"description": "Aula de ciclismo indoor de alta intensidade",
"duration_minutes": 60,
"color": "#FF5722"
}
},
{
"id": "cls_uuid_002",
"class_type_id": "ct_uuid_002",
"date": "2026-03-22",
"start_time": "08:00",
"end_time": "09:00",
"status": "scheduled",
"max_capacity": 30,
"current_bookings": 12,
"trainer_id": "tr_uuid_002",
"trainer_name": "Mariana Oliveira",
"store_id": "store_uuid_001",
"class_type": {
"id": "ct_uuid_002",
"name": "Yoga",
"description": "Prática de yoga com foco em flexibilidade e respiração",
"duration_minutes": 60,
"color": "#4CAF50"
}
}
]
}GET /api/v1/classes/schedule — Listar grade horária
Retorna a grade horária recorrente (semanal) da academia, com as aulas organizadas por dia da semana e horário.
Exemplo de Requisição
curl -X GET "https://dashboard.octagym.ai/api/v1/classes/schedule" \
-H "Authorization: Bearer og_live_sua_chave_aqui" \
-H "Content-Type: application/json"Exemplo de Resposta
{
"success": true,
"data": [
{
"id": "sched_uuid_001",
"class_type_id": "ct_uuid_001",
"day_of_week": 1,
"start_time": "07:00",
"end_time": "08:00",
"max_capacity": 25,
"trainer_id": "tr_uuid_001",
"is_active": true,
"class_type": {
"id": "ct_uuid_001",
"name": "Spinning",
"color": "#FF5722"
}
},
{
"id": "sched_uuid_002",
"class_type_id": "ct_uuid_002",
"day_of_week": 1,
"start_time": "08:00",
"end_time": "09:00",
"max_capacity": 30,
"trainer_id": "tr_uuid_002",
"is_active": true,
"class_type": {
"id": "ct_uuid_002",
"name": "Yoga",
"color": "#4CAF50"
}
},
{
"id": "sched_uuid_003",
"class_type_id": "ct_uuid_001",
"day_of_week": 3,
"start_time": "07:00",
"end_time": "08:00",
"max_capacity": 25,
"trainer_id": "tr_uuid_001",
"is_active": true,
"class_type": {
"id": "ct_uuid_001",
"name": "Spinning",
"color": "#FF5722"
}
}
]
}O campo day_of_week segue o padrão: 0 = Domingo, 1 = Segunda, 2 = Terça, ..., 6 =
Sábado. Os resultados são ordenados por day_of_week e start_time.
POST /api/v1/classes/:id/book — Reservar vaga
Reserva uma vaga em uma aula para um aluno. Se a aula estiver lotada, o aluno será adicionado à lista de espera automaticamente.
Body (JSON)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
member_profile_id | string | Sim | UUID do aluno |
Exemplo de Requisição
curl -X POST "https://dashboard.octagym.ai/api/v1/classes/cls_uuid_001/book" \
-H "Authorization: Bearer og_live_sua_chave_aqui" \
-H "Content-Type: application/json" \
-d '{
"member_profile_id": "mp_uuid_001"
}'Exemplo de Resposta — Vaga confirmada
{
"success": true,
"data": {
"id": "bk_uuid_001",
"class_instance_id": "cls_uuid_001",
"member_profile_id": "mp_uuid_001",
"status": "confirmed",
"waitlist_position": null,
"booked_at": "2026-03-22T06:00:00Z"
}
}Exemplo de Resposta — Lista de espera
{
"success": true,
"data": {
"id": "bk_uuid_002",
"class_instance_id": "cls_uuid_001",
"member_profile_id": "mp_uuid_003",
"status": "waitlisted",
"waitlist_position": 2,
"booked_at": "2026-03-22T06:30:00Z"
}
}A reserva valida se o plano do aluno inclui aulas em grupo (has_group_classes) e se o limite
semanal de aulas (max_classes_per_week) não foi atingido. Caso contrário, retorna 422 Unprocessable Entity.
DELETE /api/v1/classes/:id/book — Cancelar reserva
Cancela a reserva de um aluno em uma aula. Se houver alunos na lista de espera, o próximo será promovido automaticamente.
Query Parameters
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
member_profile_id | string | Sim | UUID do aluno |
Exemplo de Requisição
curl -X DELETE "https://dashboard.octagym.ai/api/v1/classes/cls_uuid_001/book?member_profile_id=mp_uuid_001" \
-H "Authorization: Bearer og_live_sua_chave_aqui" \
-H "Content-Type: application/json"Exemplo de Resposta
{
"success": true,
"data": {
"id": "bk_uuid_001",
"status": "cancelled",
"cancelled_at": "2026-03-22T06:45:00Z",
"waitlist_promoted": true,
"promoted_member_id": "mp_uuid_003"
}
}GET /api/v1/class-types — Listar modalidades
Retorna as modalidades de aula disponíveis na academia, ordenadas por sort_order.
Exemplo de Requisição
curl -X GET "https://dashboard.octagym.ai/api/v1/class-types" \
-H "Authorization: Bearer og_live_sua_chave_aqui" \
-H "Content-Type: application/json"Exemplo de Resposta
{
"success": true,
"data": [
{
"id": "ct_uuid_001",
"name": "Spinning",
"description": "Aula de ciclismo indoor de alta intensidade",
"duration_minutes": 60,
"default_max_capacity": 25,
"calories_estimate": 500,
"color": "#FF5722",
"is_active": true,
"sort_order": 1
},
{
"id": "ct_uuid_002",
"name": "Yoga",
"description": "Prática de yoga com foco em flexibilidade e respiração",
"duration_minutes": 60,
"default_max_capacity": 30,
"calories_estimate": 200,
"color": "#4CAF50",
"is_active": true,
"sort_order": 2
},
{
"id": "ct_uuid_003",
"name": "Funcional",
"description": "Treino funcional com exercícios compostos",
"duration_minutes": 45,
"default_max_capacity": 20,
"calories_estimate": 400,
"color": "#2196F3",
"is_active": true,
"sort_order": 3
},
{
"id": "ct_uuid_004",
"name": "Muay Thai",
"description": "Arte marcial tailandesa — treino de técnica e condicionamento",
"duration_minutes": 60,
"default_max_capacity": 20,
"calories_estimate": 600,
"color": "#F44336",
"is_active": true,
"sort_order": 4
}
]
}