API

Alunos (Members)

Gerenciar alunos da academia via API.

Alunos (Members)

Endpoints para criar, listar, atualizar alunos e gerenciar medições corporais e check-ins.

Base URL

https://dashboard.octagym.ai/api/v1

GET /api/v1/members — Listar alunos

Retorna uma lista paginada de alunos da academia.

Query Parameters

ParâmetroTipoPadrãoDescrição
searchstringBusca por nome, email ou telefone
statusstringFiltrar por status: trial, active, frozen, cancelled
experience_levelstringFiltrar por nível de experiência
plan_idstringFiltrar por plano (UUID)
store_idstringFiltrar por unidade (UUID)
pageinteger1Número da página
page_sizeinteger20Itens por página (máximo 100)
sort_bystringcreated_atCampo para ordenação
sort_orderstringdescDireção: asc ou desc

Exemplo de Requisição

curl -X GET "https://dashboard.octagym.ai/api/v1/members?status=active&page=1&page_size=20" \
  -H "Authorization: Bearer og_live_sua_chave_aqui" \
  -H "Content-Type: application/json"

Exemplo de Resposta

{
  "success": true,
  "data": [
    {
      "id": "mp_uuid_001",
      "status": "active",
      "experience_level": "intermediate",
      "fitness_goals": ["hipertrofia", "condicionamento"],
      "preferred_training_time": "morning",
      "training_days_per_week": 5,
      "access_card_number": "A-1042",
      "biometric_enrolled": true,
      "created_at": "2026-01-15T08:30:00Z",
      "client": {
        "id": "cli_uuid_001",
        "full_name": "Ana Costa",
        "email": "ana.costa@email.com",
        "phone": "+5511999990001",
        "cpf": "123.456.789-00",
        "birth_date": "1995-06-20",
        "gender": "female"
      }
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 87,
    "pages": 5
  }
}

POST /api/v1/members — Criar aluno

Cria um novo aluno na academia. Internamente, cria um registro de client e um member_profile associado. O status inicial do aluno será trial.

Body (JSON)

CampoTipoObrigatórioDescrição
full_namestringSimNome completo do aluno
emailstringNãoEmail
phonestringNãoTelefone fixo
mobile_phonestringNãoCelular
cpfstringNãoCPF (com ou sem formatação)
birth_datestringNãoData de nascimento (YYYY-MM-DD)
genderstringNãomale, female ou other
fitness_goalsstring[]NãoObjetivos (ex: ["hipertrofia", "emagrecimento"])
experience_levelstringNãobeginner, intermediate, advanced
preferred_training_timestringNãomorning, afternoon, evening, night
training_days_per_weekintegerNãoQuantidade de dias por semana (1–7)
injuriesstring[]NãoLista de lesões (ex: ["joelho esquerdo"])
medical_conditionsstring[]NãoCondições médicas (ex: ["hipertensão"])
store_idstringNãoUUID da unidade (filial)

Exemplo de Requisição

curl -X POST "https://dashboard.octagym.ai/api/v1/members" \
  -H "Authorization: Bearer og_live_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "full_name": "Lucas Mendes",
    "email": "lucas.mendes@email.com",
    "mobile_phone": "+5511988887777",
    "cpf": "987.654.321-00",
    "birth_date": "1990-03-15",
    "gender": "male",
    "fitness_goals": ["hipertrofia", "ganho de força"],
    "experience_level": "beginner",
    "preferred_training_time": "evening",
    "training_days_per_week": 4,
    "injuries": [],
    "medical_conditions": []
  }'

Exemplo de Resposta

{
  "success": true,
  "data": {
    "id": "mp_uuid_002",
    "status": "trial",
    "experience_level": "beginner",
    "fitness_goals": ["hipertrofia", "ganho de força"],
    "preferred_training_time": "evening",
    "training_days_per_week": 4,
    "injuries": [],
    "medical_conditions": [],
    "created_at": "2026-03-22T10:00:00Z",
    "client": {
      "id": "cli_uuid_002",
      "full_name": "Lucas Mendes",
      "email": "lucas.mendes@email.com",
      "phone": null,
      "mobile_phone": "+5511988887777",
      "cpf": "987.654.321-00",
      "birth_date": "1990-03-15",
      "gender": "male"
    }
  }
}

O status inicial do aluno é sempre trial. Para ativá-lo, crie uma mensalidade associada a um plano.


GET /api/v1/members/:id — Buscar aluno

Retorna o perfil completo de um aluno, incluindo dados do cliente, mensalidades ativas (com plano) e instrutores associados.

Exemplo de Requisição

curl -X GET "https://dashboard.octagym.ai/api/v1/members/mp_uuid_001" \
  -H "Authorization: Bearer og_live_sua_chave_aqui" \
  -H "Content-Type: application/json"

Exemplo de Resposta

{
  "success": true,
  "data": {
    "id": "mp_uuid_001",
    "status": "active",
    "experience_level": "intermediate",
    "fitness_goals": ["hipertrofia", "condicionamento"],
    "preferred_training_time": "morning",
    "training_days_per_week": 5,
    "access_card_number": "A-1042",
    "biometric_enrolled": true,
    "facial_enrolled": false,
    "medical_clearance": true,
    "medical_clearance_date": "2026-01-10",
    "medical_clearance_notes": "Liberado para todas as atividades",
    "created_at": "2026-01-15T08:30:00Z",
    "client": {
      "id": "cli_uuid_001",
      "full_name": "Ana Costa",
      "email": "ana.costa@email.com",
      "phone": "+5511999990001",
      "cpf": "123.456.789-00",
      "birth_date": "1995-06-20",
      "gender": "female"
    },
    "active_memberships": [
      {
        "id": "mem_uuid_001",
        "status": "active",
        "start_date": "2026-01-15",
        "end_date": "2026-07-15",
        "plan": {
          "id": "plan_uuid_001",
          "name": "Plano Semestral Premium",
          "billing_period": "semiannual"
        }
      }
    ],
    "trainer_assignments": [
      {
        "trainer_id": "tr_uuid_001",
        "trainer_name": "Carlos Silva",
        "assigned_at": "2026-01-20T09:00:00Z"
      }
    ]
  }
}

PATCH /api/v1/members/:id — Atualizar aluno

Atualiza campos específicos do perfil do aluno. Apenas os campos enviados serão alterados.

Campos permitidos

CampoTipoDescrição
statusstringtrial, active, frozen, cancelled
fitness_goalsstring[]Objetivos de treino
experience_levelstringbeginner, intermediate, advanced
preferred_training_timestringmorning, afternoon, evening, night
training_days_per_weekintegerDias por semana (1–7)
medical_clearancebooleanPossui atestado médico?
medical_clearance_datestringData do atestado (YYYY-MM-DD)
medical_clearance_notesstringObservações do atestado
injuriesstring[]Lista de lesões
medical_conditionsstring[]Condições médicas
access_card_numberstringNúmero do cartão de acesso
biometric_enrolledbooleanBiometria cadastrada?
facial_enrolledbooleanReconhecimento facial cadastrado?
referred_by_client_idstringUUID do cliente que indicou

Exemplo de Requisição

curl -X PATCH "https://dashboard.octagym.ai/api/v1/members/mp_uuid_001" \
  -H "Authorization: Bearer og_live_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "fitness_goals": ["hipertrofia", "condicionamento", "flexibilidade"],
    "training_days_per_week": 6,
    "medical_clearance": true,
    "medical_clearance_date": "2026-03-20",
    "medical_clearance_notes": "Liberado sem restrições"
  }'

Exemplo de Resposta

{
  "success": true,
  "data": {
    "id": "mp_uuid_001",
    "status": "active",
    "fitness_goals": ["hipertrofia", "condicionamento", "flexibilidade"],
    "training_days_per_week": 6,
    "medical_clearance": true,
    "medical_clearance_date": "2026-03-20",
    "medical_clearance_notes": "Liberado sem restrições",
    "updated_at": "2026-03-22T11:00:00Z"
  }
}

GET /api/v1/members/:id/checkins — Histórico de check-ins

Retorna o histórico de check-ins (entradas na academia) de um aluno, ordenado por data decrescente.

Query Parameters

ParâmetroTipoPadrãoDescrição
limitinteger30Quantidade de registros (máx 100)

Exemplo de Requisição

curl -X GET "https://dashboard.octagym.ai/api/v1/members/mp_uuid_001/checkins?limit=10" \
  -H "Authorization: Bearer og_live_sua_chave_aqui" \
  -H "Content-Type: application/json"

Exemplo de Resposta

{
  "success": true,
  "data": [
    {
      "id": "chk_uuid_001",
      "checkin_at": "2026-03-22T07:15:00Z",
      "checkout_at": "2026-03-22T08:45:00Z",
      "method": "biometric",
      "device_name": "Catraca Principal",
      "store_id": "store_uuid_001"
    },
    {
      "id": "chk_uuid_002",
      "checkin_at": "2026-03-21T06:50:00Z",
      "checkout_at": "2026-03-21T08:20:00Z",
      "method": "card",
      "device_name": "Catraca Principal",
      "store_id": "store_uuid_001"
    }
  ]
}

GET /api/v1/members/:id/measurements — Listar medições corporais

Retorna as medições corporais registradas para o aluno, ordenadas por data decrescente.

Exemplo de Requisição

curl -X GET "https://dashboard.octagym.ai/api/v1/members/mp_uuid_001/measurements" \
  -H "Authorization: Bearer og_live_sua_chave_aqui" \
  -H "Content-Type: application/json"

Exemplo de Resposta

{
  "success": true,
  "data": [
    {
      "id": "meas_uuid_001",
      "measured_at": "2026-03-15T10:00:00Z",
      "weight_kg": 78.5,
      "height_cm": 175,
      "body_fat_pct": 18.2,
      "muscle_mass_pct": 42.1,
      "chest_cm": 98,
      "waist_cm": 82,
      "hip_cm": 96,
      "left_arm_cm": 33,
      "right_arm_cm": 33.5,
      "left_thigh_cm": 56,
      "right_thigh_cm": 56.5,
      "left_calf_cm": 37,
      "right_calf_cm": 37,
      "notes": "Avaliação trimestral"
    },
    {
      "id": "meas_uuid_002",
      "measured_at": "2026-01-15T10:00:00Z",
      "weight_kg": 82.0,
      "height_cm": 175,
      "body_fat_pct": 22.5,
      "muscle_mass_pct": 38.0,
      "chest_cm": 100,
      "waist_cm": 88,
      "hip_cm": 99,
      "left_arm_cm": 32,
      "right_arm_cm": 32,
      "left_thigh_cm": 55,
      "right_thigh_cm": 55,
      "left_calf_cm": 36,
      "right_calf_cm": 36,
      "notes": "Avaliação inicial"
    }
  ]
}

POST /api/v1/members/:id/measurements — Registrar medição corporal

Registra uma nova medição corporal para o aluno. Todos os campos são opcionais — envie apenas os que foram medidos.

Body (JSON)

CampoTipoDescrição
weight_kgnumberPeso em quilogramas
height_cmnumberAltura em centímetros
body_fat_pctnumberPercentual de gordura corporal
muscle_mass_pctnumberPercentual de massa muscular
chest_cmnumberCircunferência do peito (cm)
waist_cmnumberCircunferência da cintura (cm)
hip_cmnumberCircunferência do quadril (cm)
left_arm_cmnumberCircunferência do braço E (cm)
right_arm_cmnumberCircunferência do braço D (cm)
left_thigh_cmnumberCircunferência da coxa E (cm)
right_thigh_cmnumberCircunferência da coxa D (cm)
left_calf_cmnumberCircunferência da panturrilha E (cm)
right_calf_cmnumberCircunferência da panturrilha D (cm)
notesstringObservações

Exemplo de Requisição

curl -X POST "https://dashboard.octagym.ai/api/v1/members/mp_uuid_001/measurements" \
  -H "Authorization: Bearer og_live_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{
    "weight_kg": 77.0,
    "body_fat_pct": 17.5,
    "muscle_mass_pct": 43.0,
    "chest_cm": 99,
    "waist_cm": 80,
    "notes": "Boa evolução no trimestre"
  }'

Exemplo de Resposta

{
  "success": true,
  "data": {
    "id": "meas_uuid_003",
    "member_profile_id": "mp_uuid_001",
    "measured_at": "2026-03-22T14:30:00Z",
    "weight_kg": 77.0,
    "height_cm": null,
    "body_fat_pct": 17.5,
    "muscle_mass_pct": 43.0,
    "chest_cm": 99,
    "waist_cm": 80,
    "hip_cm": null,
    "left_arm_cm": null,
    "right_arm_cm": null,
    "left_thigh_cm": null,
    "right_thigh_cm": null,
    "left_calf_cm": null,
    "right_calf_cm": null,
    "notes": "Boa evolução no trimestre"
  }
}

Para acompanhar a evolução dos alunos, compare as medições ao longo do tempo. A ordem de retorno é sempre da mais recente para a mais antiga.

On this page