API

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/v1

GET /api/v1/classes — Listar aulas agendadas

Retorna as instâncias de aulas agendadas, com filtros por data e status.

Query Parameters

ParâmetroTipoPadrãoDescrição
datestringFiltrar por data exata (YYYY-MM-DD)
date_fromstringData inicial do intervalo (YYYY-MM-DD)
date_tostringData final do intervalo (YYYY-MM-DD)
class_type_idstringFiltrar por modalidade (UUID)
statusstringscheduled, 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)

CampoTipoObrigatórioDescrição
member_profile_idstringSimUUID 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âmetroTipoObrigatórioDescrição
member_profile_idstringSimUUID 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
    }
  ]
}

On this page