API Acadêmica

Integre dados de estudantes e finanças

Sobre a API

Para que serve a API Acadêmica

Uma API REST unificada para consultar e integrar dados acadêmicos e financeiros de instituições de ensino, com autenticação segura via JWT.

📘

Dados acadêmicos

Matrículas, inscrições, turmas, horários, notas e frequência dos estudantes, em tempo real.

💳

Dados financeiros

Cobranças, recebimentos, notas de crédito e facturas, de forma segura e auditável.

🔑

Autenticação JWT

Acesso protegido por tokens JWT, com renovação automática e escopos por tipo de usuário.

💻

Integração simples

Endpoints REST previsíveis, respostas em JSON e exemplos prontos em PHP e JavaScript.

Público

Quem pode utilizá-la

A API Acadêmica foi desenhada para quem quer construir soluções em cima de dados escolares e financeiros.

💻

Programadores

Que desejam criar aplicativos, dashboards ou integrações personalizadas.

🚀

Startups

Que constroem produtos educacionais ou financeiros voltados a escolas.

🏫

Escolas

Que querem integrar seus sistemas internos com portais e apps próprios.

🛠️

Clubes de tecnologia

Grupos estudantis que desenvolvem projetos práticos com dados reais.

🎓

Estudantes avançados

Que querem aprender integração de APIs em um caso de uso real.

Primeiros passos

Como obter acesso

Em quatro passos simples você já pode começar a consumir a API Acadêmica.

1

Obtenha usuário e senha

Estudantes já possuem credenciais na tabela usuario. Desenvolvedores solicitam as suas clicando no botão abaixo ou enviando um e-mail.

2

Autentique-se em /api/login

Envie usuario e senha para /api/login e receba um token JWT válido por tempo limitado.

3

Use o token nas chamadas

Envie o token em todas as requisições protegidas no cabeçalho Authorization: Bearer <token>.

4

Renove quando necessário

Antes do token expirar, use POST /api/refresh para obter um novo, sem precisar autenticar-se novamente.

Detalhes do fluxo de autenticação

Veja como solicitar o token em /api/login e como usá-lo nas chamadas seguintes.

POST /api/login

Descrição

Troca as credenciais do usuário (usuario e senha — já existentes na tabela usuario para estudantes, ou fornecidas pela equipe para desenvolvedores) por um token de acesso JWT. Esse token deve ser reutilizado em todas as requisições subsequentes até expirar.

Parâmetros de entrada

{
  "usuario": "string",
  "senha": "string"
}

Exemplo de resposta

{…}
"success": true,
"message": "Login realizado com sucesso",
"data": {…}
"token": "ZrDdZiiIP2lWJE4LQpNYl4wsWVHfty99MryusV9oAwQPiGfEdaWirc2U8OxEOoIW",
"expires_at": "2026-09-10T16:22:32.955225Z",
"usuario": {…}
"id": 126,
"usuario": "4024",
"nome": "Angelica Antonio Basilio",
"email": null,
"estudante": {…}
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
}
}
}
}

O campo data.usuario.estudante só aparece quando o login é de um estudante; para desenvolvedores, esse bloco pode vir vazio.

Exemplos de código

🐘 PHP (cURL)
// Passo 2: obter o token JWT
$ch = curl_init('https://api.academico.ac.mz/api/login');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'usuario' => 'seu-usuario',
    'senha'   => 'sua-senha'
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

$resp  = json_decode(curl_exec($ch), true);
$token = $resp['data']['token'];

// Passo 3: usar o token em chamadas protegidas
$ch2 = curl_init('https://api.academico.ac.mz/api/me');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$perfil = json_decode(curl_exec($ch2), true);
🟨 JavaScript (fetch)
// Passo 2: obter o token JWT
const loginResp = await fetch('https://api.academico.ac.mz/api/login', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    usuario: 'seu-usuario',
    senha: 'sua-senha'
  })
});
const { data } = await loginResp.json();
const token = data.token;

// Passo 3: usar o token em chamadas protegidas
const perfilResp = await fetch('https://api.academico.ac.mz/api/me', {
  headers: { Authorization: `Bearer ${token}` }
});
const perfil = await perfilResp.json();

Notas de implementação

  • Envie usuario e senha apenas por HTTPS; nunca transmita credenciais em texto plano.
  • Guarde o token (e o refresh_token) em memória ou em um cookie HttpOnly; evite localStorage em aplicações sensíveis.
  • Quando o token estiver próximo de expirar, use POST /api/refresh para renová-lo sem novo login.
  • Toda chamada às rotas Acadêmico, Financeiro e Perfil exige o cabeçalho Authorization: Bearer <token>.
🔑 Solicitar minha chave agora
Acesso à API

Autenticação e Acesso

Existem dois tipos de acesso à API Acadêmica, cada um com sua própria forma de obter credenciais. Depois de autenticado, o fluxo de uso do token é o mesmo para ambos.

🎓

Usuários / Estudantes

Já possuem usuário e senha cadastrados na tabela usuario. Basta autenticar-se diretamente com essas credenciais para obter o token JWT e começar a consumir a API.

💻

Desenvolvedores

Devem enviar um e-mail para chave.api@academico.ac.mz solicitando credenciais. A equipe responde com um usuário e senha exclusivos para autenticação como desenvolvedor.

Depois de obter usuário e senha — como estudante ou como desenvolvedor — o processo é o mesmo: autentique-se, receba o token JWT e utilize-o em todas as chamadas às rotas abaixo.

GET /api/user

Descrição

Retorna os dados do usuário autenticado — estudante ou desenvolvedor — a partir do token JWT enviado no cabeçalho. É a forma padrão de confirmar quem está autenticado antes de liberar o acesso à aplicação.

Cabeçalho (header)

{
  "Authorization": "Bearer <token>"
}

Exemplo de resposta

{
  "id": 1023,
  "usuario": "maria.silva",
  "nome": "Maria Silva",
  "tipo": "estudante",
  "email": "maria.silva@exemplo.com"
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/user');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Accept: application/json'
]);

$user = json_decode(curl_exec($ch), true);
print_r($user);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/user', {
  headers: {
    Authorization: `Bearer ${token}`,
    Accept: 'application/json'
  }
});
const user = await resp.json();
console.log(user);

Notas de implementação

  • O token é obtido no login (estudante ou desenvolvedor) e deve ser enviado em todas as chamadas protegidas.
  • O campo tipo distingue estudante de desenvolvedor, útil para adaptar a interface conforme o perfil.
  • Nunca inclua o token diretamente na URL — sempre no cabeçalho Authorization.
POST /api/refresh

Descrição

Gera um novo token JWT a partir de um refresh_token válido, evitando pedir usuário e senha novamente quando a sessão expira. Recomendado para aplicações que mantêm o usuário logado por longos períodos.

Body (JSON)

{
  "refresh_token": "string"
}

Exemplo de resposta

{…}
"success": false,
"message": "Refresh token inválido ou expirado",
"errors": []
}

Exemplo real de erro quando o refresh_token é inválido ou já expirou. Em caso de sucesso, a resposta segue o mesmo formato do login, com um novo token.

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/refresh');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'refresh_token' => $refreshToken
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

$novo  = json_decode(curl_exec($ch), true);
$token = $novo['token'];
$refreshToken = $novo['refresh_token'];
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/refresh', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ refresh_token: refreshToken })
});
const { token, refresh_token, expires_in } = await resp.json();

Notas de implementação

  • Guarde o refresh_token em local seguro (cookie HttpOnly no servidor, nunca em localStorage).
  • Chame esta rota pouco antes do token atual expirar, com base no expires_in retornado no login.
  • Um refresh_token já utilizado ou expirado retorna 401 — nesse caso é necessário novo login completo.
POST /api/me/password-update

Descrição

Permite que o usuário autenticado (estudante ou desenvolvedor) atualize sua própria senha, exigindo a senha atual por segurança. Usado nas telas de configuração de conta de cada perfil.

Body (JSON)

{
  "senha_atual": "string",
  "nova_senha": "string"
}

Exemplo de resposta

{…}
"success": true,
"message": "Senha atualizada com sucesso",
"data": null
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/password-update');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'senha_atual' => 'senhaAtual123',
    'nova_senha'  => 'novaSenhaForte456'
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json'
]);

$resultado = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/password-update', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    senha_atual: 'senhaAtual123',
    nova_senha: 'novaSenhaForte456'
  })
});
const resultado = await resp.json();

Notas de implementação

  • Exija no cliente uma senha forte (mínimo 8 caracteres, letras e números) antes de enviar.
  • Após a troca, os tokens JWT anteriores são invalidados — reautentique o usuário em seguida.
  • Esta rota deve ser chamada apenas em conexões HTTPS, nunca em texto plano.
Referência

Endpoints disponíveis

Visão geral dos recursos expostos pela API. Veja a documentação detalhada abaixo para parâmetros e exemplos de código.

Método Rota Categoria Descrição
GET /api/user Autenticação Retorna os dados do usuário autenticado a partir do token JWT.
POST /api/refresh Autenticação Renova um token JWT próximo da expiração.
POST /api/me/password-update Autenticação Atualiza a senha do usuário autenticado.
GET /api/me/matriculas Acadêmico Lista as matrículas do estudante autenticado.
GET /api/me/curso Acadêmico Retorna os dados do curso do estudante autenticado.
GET /api/me/ensino Acadêmico Retorna o regime de ensino do estudante autenticado.
GET /api/me/inscricoes Acadêmico Lista as inscrições em disciplinas/turmas do estudante.
GET /api/me/turmas Acadêmico Lista as turmas e horários vinculados ao estudante.
GET /api/me/notas Acadêmico Retorna notas e frequência por disciplina.
GET /api/me/cobrancas Financeiro Lista cobranças (facturas) do estudante, tabela original.
GET /api/me/cobrancas-view Financeiro Lista cobranças (facturas) em aberto e pagas do estudante, já com dados relacionados.
GET /api/me/recebimentos Financeiro Histórico de pagamentos (recibos) recebidos, tabela original.
GET /api/me/recebimentos-view Financeiro Histórico de pagamentos recebidos, já com dados relacionados (view).
GET /api/me/notas-credito-view Financeiro Lista notas de crédito emitidas para o estudante, já com dados relacionados.
GET /api/me Perfil Retorna o perfil completo do usuário autenticado.
GET /api/me/instituicao Instituição Retorna os dados completos da instituição (contactos, dados bancários, parâmetros financeiros).
Referência completa

Documentação detalhada

Cada rota abaixo traz descrição, parâmetros, exemplo de resposta, código pronto em PHP e JavaScript, e notas de implementação. Clique em uma rota para expandir.

🔑

Autenticação

GET /api/user

Descrição

Retorna os dados básicos do usuário associado ao token JWT enviado no cabeçalho Authorization. Usado por qualquer aplicação cliente (web, mobile, integrações de terceiros) logo após o login, para confirmar identidade e tipo de conta antes de liberar o acesso à interface.

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{
  "id": 1023,
  "nome": "Maria Silva",
  "tipo": "estudante",
  "email": "maria.silva@exemplo.com"
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/user');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Accept: application/json'
]);

$user = json_decode(curl_exec($ch), true);
print_r($user);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/user', {
  headers: {
    Authorization: `Bearer ${token}`,
    Accept: 'application/json'
  }
});
const user = await resp.json();
console.log(user);

Notas de implementação

  • Requer o cabeçalho Authorization: Bearer {token} obtido no login.
  • Use esta rota para validar a sessão antes de renderizar áreas restritas.
  • Não armazene o token em localStorage em aplicações sensíveis; prefira cookies HttpOnly quando possível.
POST /api/refresh

Descrição

Gera um novo token JWT a partir de um refresh_token ainda válido, evitando que o usuário precise reautenticar com usuário e senha a cada expiração. Recomendado para aplicações que mantêm sessões longas, como apps mobile.

Parâmetros de entrada

{
  "refresh_token": "string"
}

Exemplo de resposta

{…}
"success": false,
"message": "Refresh token inválido ou expirado",
"errors": []
}

Exemplo real de erro quando o refresh_token é inválido ou já expirou. Em caso de sucesso, a resposta segue o mesmo formato do login, com um novo token.

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/refresh');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'refresh_token' => $refreshToken
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

$novo = json_decode(curl_exec($ch), true);
$token = $novo['data']['token'];
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/refresh', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ refresh_token: refreshToken })
});
const { data } = await resp.json();
token = data.token;

Notas de implementação

  • Chame esta rota pouco antes do token expirar (ex.: quando faltarem 5 minutos).
  • O token antigo é invalidado após o refresh bem-sucedido.
  • Se o token já expirou totalmente, esta rota retorna 401 — nesse caso é necessário login completo novamente.
POST /api/me/password-update

Descrição

Permite que o usuário autenticado altere sua própria senha, exigindo a senha atual por segurança. Usado em telas de configuração de conta.

Parâmetros de entrada

{
  "senha_atual": "string",
  "nova_senha": "string"
}

Exemplo de resposta

{…}
"success": true,
"message": "Senha atualizada com sucesso",
"data": null
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/password-update');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'senha_atual' => 'senhaAtual123',
    'nova_senha'  => 'novaSenhaForte456'
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token,
    'Content-Type: application/json'
]);

$resultado = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/password-update', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${token}`,
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    senha_atual: 'senhaAtual123',
    nova_senha: 'novaSenhaForte456'
  })
});
const resultado = await resp.json();

Notas de implementação

  • Valide a força da nova senha no cliente antes de enviar (mínimo 8 caracteres, letras e números).
  • Após a troca, os tokens JWT anteriores são invalidados — reautentique o usuário.
  • Esta rota deve ser chamada apenas em conexões HTTPS.
📘

Acadêmico

GET /api/me/matriculas

Descrição

Lista todas as matrículas do estudante autenticado, incluindo ano letivo, curso e status (ativa, trancada, concluída). Útil para portais de aluno e apps de acompanhamento acadêmico.

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Matrículas do estudante autenticado",
"data": […]
{…},
"id": 5073,
"data_matricula": "17/03/2024",
"hora_matricula": "08:57:21",
"estado": "Activo",
"motivo": "",
"dia_anulamento": "17/03/2024",
"informacao": null,
"funcionario": "Arlindo Gundana",
"estudante": {…},
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
},
"ano_lectivo": {…},
"id": 8,
"ano": "2024",
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"nivel": {…},
"id": 1,
"nome": null,
"descricao": null
},
"curso": null
},
{…}
"id": 5840,
"data_matricula": "16/04/2025",
"hora_matricula": "08:17:01",
"estado": "Activo",
"motivo": "",
"dia_anulamento": "16/04/2025",
"informacao": null,
"funcionario": "Arlindo Gundana",
"estudante": {…},
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
},
"ano_lectivo": {…},
"id": 9,
"ano": "2025",
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"nivel": {…},
"id": 2,
"nome": null,
"descricao": null
},
"curso": null
}
]
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/matriculas');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$matriculas = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/matriculas', {
  headers: { Authorization: `Bearer ${token}` }
});
const matriculas = await resp.json();

Notas de implementação

  • Um estudante pode ter mais de uma matrícula ativa em cursos diferentes.
  • Combine com /api/me/turmas para montar o horário completo do estudante.
GET /api/me/curso

Descrição

Retorna os dados completos do curso do estudante autenticado: nome, código, direção pedagógica e o plano de ensino vigente (com o modelo de ensino associado).

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Curso do estudante autenticado",
"data": {…}
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
}
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/curso');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$curso = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/curso', {
  headers: { Authorization: `Bearer ${token}` }
});
const curso = await resp.json();

Notas de implementação

  • Útil para exibir o nome do curso e o plano de ensino sem precisar buscar o perfil completo.
  • O campo plano traz também o modelo_ensino (ex.: Clássico) aplicado ao curso.
GET /api/me/ensino

Descrição

Retorna o regime de ensino do estudante autenticado (ex.: Laboral, Pós-laboral, Diurno).

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Ensino do estudante autenticado",
"data": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/ensino');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$ensino = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/ensino', {
  headers: { Authorization: `Bearer ${token}` }
});
const ensino = await resp.json();

Notas de implementação

  • Combine com /api/me/curso e /api/me/turmas para montar o horário completo do estudante.
GET /api/me/inscricoes

Descrição

Retorna as inscrições do estudante em disciplinas e turmas específicas dentro de uma matrícula, incluindo o status de cada inscrição (confirmada, pendente, cancelada).

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{
  "inscricoes": [
    {
      "id": 3301,
      "disciplina": "Estruturas de Dados",
      "turma": "3A-ED",
      "status": "confirmada"
    }
  ]
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/inscricoes');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$inscricoes = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/inscricoes', {
  headers: { Authorization: `Bearer ${token}` }
});
const inscricoes = await resp.json();

Notas de implementação

  • O campo status permite distinguir inscrições ainda não confirmadas pela secretaria.
  • Ideal para exibir o plano de estudos do semestre atual.
GET /api/me/turmas

Descrição

Lista as turmas nas quais o estudante está inscrito, com horários e salas, pronta para alimentar uma grade/calendário.

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Turmas atribuídas ao estudante autenticado",
"data": […]
{…},
"id": 14978,
"turma": {…},
"id": 158,
"nome": "19",
"nr_vaga": 0,
"observacao": "",
"ano_letivo_turma": 2024,
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"nivel": {…},
"id": 1,
"nome": null,
"descricao": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"sala": {…}
"id": 2,
"nome": null,
"capacidade": null,
"local": null
}
},
"matricula": {…}
"id": 5073,
"estado": "Activo",
"data": "17/03/2024",
"curso": null,
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"nivel": {…},
"id": 1,
"nome": null,
"descricao": null
},
"ano_lectivo": {…},
"id": 8,
"ano": "2024",
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"inscricoes": […]
{…},
"id": 55985,
"data_inscricao": "17/03/2024",
"funcionario": "Arlindo Gundana",
"observacao": null,
"estudante": {…},
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
},
"matricula": {…},
"id": 5073,
"data_matricula": "17/03/2024",
"hora_matricula": "08:57:21",
"estado": "Activo",
"motivo": "",
"dia_anulamento": "17/03/2024",
"informacao": null,
"funcionario": "Arlindo Gundana",
"estudante": {…},
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
},
"ano_lectivo": {…},
"id": 8,
"ano": "2024",
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"nivel": {…},
"id": 1,
"nome": null,
"descricao": null
},
"curso": null
},
"disciplina": {…},
"id": 1,
"id_Curso": 1,
"id_Nivel": 1,
"id_Periodo_Semeste": 1,
"nomeDisciplina": "Integração e Orientações Gerais",
"AbreviaturaDisciplina": "IOG",
"cargaHorariaSemal": "66",
"modulo": "Módulo 1",
"semTeste": "Sim",
"exameFinal": "",
"percentagemMediaFinal": "",
"percentegemExameFinal": "",
"pondTest": "",
"pondTrab": "",
"pondEstag": "",
"temEstagio": "Não",
"percentagemEstagio": "",
"percentagemTeoria": "",
"pondFreq": "66,70%",
"pondExame": "33,30%",
"descricao": "",
"temTrabalho": "Não",
"nrTeste": 2,
"nrEstagio": 0,
"campos_por_competencia": "1",
"descricao_unidade": null,
"codigo": null,
"nivel_qnqp": null,
"credito": 0,
"campo": null,
"subcampo": null,
"data_registo": null,
"data_revisao_registo": null,
"requisito": "10"
},
"periodo": {…},
"id": 1,
"nome": null,
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"ano_lectivo": {…}
"id": 8,
"ano": "2024",
"descricao": null,
"data_inicio": null,
"data_fim": null
}
},
{…}
"id": 55986,
"data_inscricao": "17/03/2024",
"funcionario": "Arlindo Gundana",
"observacao": null,
"estudante": {…},
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
},
"matricula": {…},
"id": 5073,
"data_matricula": "17/03/2024",
"hora_matricula": "08:57:21",
"estado": "Activo",
"motivo": "",
"dia_anulamento": "17/03/2024",
"informacao": null,
"funcionario": "Arlindo Gundana",
"estudante": {…},
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
},
"ano_lectivo": {…},
"id": 8,
"ano": "2024",
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"nivel": {…},
"id": 1,
"nome": null,
"descricao": null
},
"curso": null
},
"disciplina": {…},
"id": 2,
"id_Curso": 1,
"id_Nivel": 1,
"id_Periodo_Semeste": 1,
"nomeDisciplina": "Ciências Humanas",
"AbreviaturaDisciplina": "CH",
"cargaHorariaSemal": "66",
"modulo": "Módulo 2",
"semTeste": "Sim",
"exameFinal": "Não",
"percentagemMediaFinal": "",
"percentegemExameFinal": "",
"pondTest": "",
"pondTrab": "",
"pondEstag": "",
"temEstagio": "Não",
"percentagemEstagio": "",
"percentagemTeoria": "",
"pondFreq": "66,70%",
"pondExame": "33,30%",
"descricao": "",
"temTrabalho": "Não",
"nrTeste": 2,
"nrEstagio": 0,
"campos_por_competencia": "1",
"descricao_unidade": null,
"codigo": null,
"nivel_qnqp": null,
"credito": 0,
"campo": null,
"subcampo": null,
"data_registo": null,
"data_revisao_registo": null,
"requisito": "10"
},
"periodo": {…},
"id": 1,
"nome": null,
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"ano_lectivo": {…}
"id": 8,
"ano": "2024",
"descricao": null,
"data_inicio": null,
"data_fim": null
}
}
]
}
},
{…}
"id": 15919,
"turma": {…},
"id": 172,
"nome": "19*",
"nr_vaga": 0,
"observacao": "",
"ano_letivo_turma": 2025,
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"nivel": {…},
"id": 2,
"nome": null,
"descricao": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"sala": {…}
"id": 3,
"nome": null,
"capacidade": null,
"local": null
}
},
"matricula": {…}
"id": 5840,
"estado": "Activo",
"data": "16/04/2025",
"curso": null,
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"nivel": {…},
"id": 2,
"nome": null,
"descricao": null
},
"ano_lectivo": {…},
"id": 9,
"ano": "2025",
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"inscricoes": […]
{…},
"id": 65729,
"data_inscricao": "16/04/2025",
"funcionario": "Arlindo Gundana",
"observacao": null,
"estudante": {…},
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
},
"matricula": {…},
"id": 5840,
"data_matricula": "16/04/2025",
"hora_matricula": "08:17:01",
"estado": "Activo",
"motivo": "",
"dia_anulamento": "16/04/2025",
"informacao": null,
"funcionario": "Arlindo Gundana",
"estudante": {…},
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
},
"ano_lectivo": {…},
"id": 9,
"ano": "2025",
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"nivel": {…},
"id": 2,
"nome": null,
"descricao": null
},
"curso": null
},
"disciplina": {…},
"id": 10,
"id_Curso": 1,
"id_Nivel": 2,
"id_Periodo_Semeste": 3,
"nomeDisciplina": "Prática de Enfermagem III: Enfermagem Obstétrica e Enfermagem Pediátrica",
"AbreviaturaDisciplina": "EO & EP",
"cargaHorariaSemal": "342",
"modulo": "Módulo 10",
"semTeste": "Sim",
"exameFinal": "Não",
"percentagemMediaFinal": "",
"percentegemExameFinal": "",
"pondTest": "",
"pondTrab": "",
"pondEstag": "",
"temEstagio": "Sim",
"percentagemEstagio": "50,00%",
"percentagemTeoria": "50,00%",
"pondFreq": "66,70%",
"pondExame": "33,30%",
"descricao": "",
"temTrabalho": "Não",
"nrTeste": 4,
"nrEstagio": 3,
"campos_por_competencia": "1",
"descricao_unidade": null,
"codigo": null,
"nivel_qnqp": null,
"credito": 0,
"campo": null,
"subcampo": null,
"data_registo": null,
"data_revisao_registo": null,
"requisito": "10"
},
"periodo": {…},
"id": 3,
"nome": null,
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"ano_lectivo": {…}
"id": 9,
"ano": "2025",
"descricao": null,
"data_inicio": null,
"data_fim": null
}
},
{…}
"id": 65730,
"data_inscricao": "16/04/2025",
"funcionario": "Arlindo Gundana",
"observacao": null,
"estudante": {…},
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
},
"matricula": {…},
"id": 5840,
"data_matricula": "16/04/2025",
"hora_matricula": "08:17:01",
"estado": "Activo",
"motivo": "",
"dia_anulamento": "16/04/2025",
"informacao": null,
"funcionario": "Arlindo Gundana",
"estudante": {…},
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
},
"ano_lectivo": {…},
"id": 9,
"ano": "2025",
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"nivel": {…},
"id": 2,
"nome": null,
"descricao": null
},
"curso": null
},
"disciplina": {…},
"id": 11,
"id_Curso": 1,
"id_Nivel": 2,
"id_Periodo_Semeste": 3,
"nomeDisciplina": "Prática de Enfermagem IV: Enfermagem em Saúde Mental e Enfermagem Geriátrica",
"AbreviaturaDisciplina": "SM & G",
"cargaHorariaSemal": "206",
"modulo": "Módulo 11",
"semTeste": "Sim",
"exameFinal": "Não",
"percentagemMediaFinal": "",
"percentegemExameFinal": "",
"pondTest": "",
"pondTrab": "",
"pondEstag": "",
"temEstagio": "Sim",
"percentagemEstagio": "50,00%",
"percentagemTeoria": "50,00%",
"pondFreq": "66,70%",
"pondExame": "33,30%",
"descricao": "",
"temTrabalho": "Não",
"nrTeste": 2,
"nrEstagio": 2,
"campos_por_competencia": "1",
"descricao_unidade": null,
"codigo": null,
"nivel_qnqp": null,
"credito": 0,
"campo": null,
"subcampo": null,
"data_registo": null,
"data_revisao_registo": null,
"requisito": "10"
},
"periodo": {…},
"id": 3,
"nome": null,
"descricao": null,
"data_inicio": null,
"data_fim": null
},
"ano_lectivo": {…}
"id": 9,
"ano": "2025",
"descricao": null,
"data_inicio": null,
"data_fim": null
}
}
]
}
}
]
}

Cada item de matricula.inscricoes representa uma disciplina em que o estudante está inscrito nesta turma; a lista completa traz uma entrada por disciplina do semestre.

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/turmas');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$turmas = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/turmas', {
  headers: { Authorization: `Bearer ${token}` }
});
const turmas = await resp.json();

Notas de implementação

  • Os horários são retornados no fuso horário de Maputo (UTC+2).
  • Use em conjunto com bibliotecas de calendário (FullCalendar, react-big-calendar) para exibição visual.
GET /api/me/notas

Descrição

Retorna as notas e a frequência do estudante por disciplina, permitindo montar boletins e painéis de desempenho acadêmico.

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Pautas (notas) do estudante autenticado",
"data": […]
{…},
"id": 57736,
"docente": "Nenhum",
"testes": {…},
"t1": "12.00",
"t1_res": null,
"t2": "13.50",
"t2_res": null,
"t3": null,
"t3_res": null,
"t4": null,
"t4_res": null,
"t5": null,
"t5_res": null,
"t6": null,
"t6_res": null,
"t7": null,
"t7_res": null,
"t8": null,
"t8_res": null,
"t9": null,
"t9_res": null,
"t10": null,
"t10_res": null,
"t11": null,
"t11_res": null,
"mediaTeste": "12.75",
"exameTes": null,
"recTest": null,
"mediaFinalT": null
},
"trabalhos": {…},
"tr1": null,
"tr2": null,
"tr3": null,
"tr4": null,
"tr5": null,
"mediaTrabalho": null
},
"estagios": {…},
"estag1": null,
"estag1_res": null,
"estag2": null,
"estag2_res": null,
"estag3": null,
"estag3_res": null,
"estag4": null,
"estag4_res": null,
"estag5": null,
"estag5_res": null,
"estag6": null,
"estag6_res": null,
"estag7": null,
"estag7_res": null,
"estag8": null,
"estag8_res": null,
"estag9": null,
"estag9_res": null,
"estag10": null,
"estag10_res": null,
"estag11": null,
"estag11_res": null,
"estag12": null,
"estag12_res": null,
"mediaEstagio": null,
"exameEst": null,
"recEstagio": null,
"mediaFinalEstagio": null
},
"exames": {…},
"exameNormal": "10.50",
"exameRecorencia": null,
"exameEspecial": null,
"mediaFinal": "12.00",
"mediaFinalPorExtenso": null,
"mediaFinalNAredondada": 12
},
"observacoes": {…},
"teorica": null,
"estagio": null,
"nota": "ADMITIDA",
"final": "APROVADA",
"comportamento": null,
"responsavel": "Goriate"
},
"turma": {…},
"id": 158,
"nome": "19",
"nr_vaga": 0,
"observacao": "",
"ano_letivo_turma": 2024,
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"nivel": {…},
"id": 1,
"nome": null,
"descricao": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"sala": {…}
"id": 2,
"nome": null,
"capacidade": null,
"local": null
}
},
"disciplina": {…},
"id": 1,
"id_Curso": 1,
"id_Nivel": 1,
"id_Periodo_Semeste": 1,
"nomeDisciplina": "Integração e Orientações Gerais",
"AbreviaturaDisciplina": "IOG",
"cargaHorariaSemal": "66",
"modulo": "Módulo 1",
"semTeste": "Sim",
"exameFinal": "",
"percentagemMediaFinal": "",
"percentegemExameFinal": "",
"pondTest": "",
"pondTrab": "",
"pondEstag": "",
"temEstagio": "Não",
"percentagemEstagio": "",
"percentagemTeoria": "",
"pondFreq": "66,70%",
"pondExame": "33,30%",
"descricao": "",
"temTrabalho": "Não",
"nrTeste": 2,
"nrEstagio": 0,
"campos_por_competencia": "1",
"descricao_unidade": null,
"codigo": null,
"nivel_qnqp": null,
"credito": 0,
"campo": null,
"subcampo": null,
"data_registo": null,
"data_revisao_registo": null,
"requisito": "10"
},
"matricula": {…}
"id": 5073,
"estado": "Activo",
"ano_lectivo": "2024"
}
},
{…},
"id": 57737,
"docente": "Nenhum",
"testes": {…},
"t1": "10.00",
"t1_res": null,
"t2": "14.00",
"t2_res": null,
"t3": null,
"t3_res": null,
"t4": null,
"t4_res": null,
"t5": null,
"t5_res": null,
"t6": null,
"t6_res": null,
"t7": null,
"t7_res": null,
"t8": null,
"t8_res": null,
"t9": null,
"t9_res": null,
"t10": null,
"t10_res": null,
"t11": null,
"t11_res": null,
"mediaTeste": "12.00",
"exameTes": null,
"recTest": null,
"mediaFinalT": null
},
"trabalhos": {…},
"tr1": null,
"tr2": null,
"tr3": null,
"tr4": null,
"tr5": null,
"mediaTrabalho": null
},
"estagios": {…},
"estag1": null,
"estag1_res": null,
"estag2": null,
"estag2_res": null,
"estag3": null,
"estag3_res": null,
"estag4": null,
"estag4_res": null,
"estag5": null,
"estag5_res": null,
"estag6": null,
"estag6_res": null,
"estag7": null,
"estag7_res": null,
"estag8": null,
"estag8_res": null,
"estag9": null,
"estag9_res": null,
"estag10": null,
"estag10_res": null,
"estag11": null,
"estag11_res": null,
"estag12": null,
"estag12_res": null,
"mediaEstagio": null,
"exameEst": null,
"recEstagio": null,
"mediaFinalEstagio": null
},
"exames": {…},
"exameNormal": "6.75",
"exameRecorencia": "10.00",
"exameEspecial": null,
"mediaFinal": "11.00",
"mediaFinalPorExtenso": null,
"mediaFinalNAredondada": 11.33
},
"observacoes": {…},
"teorica": null,
"estagio": null,
"nota": "ADMITIDA",
"final": "APROVADA",
"comportamento": null,
"responsavel": "Goriate"
},
"turma": {…},
"id": 158,
"nome": "19",
"nr_vaga": 0,
"observacao": "",
"ano_letivo_turma": 2024,
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"nivel": {…},
"id": 1,
"nome": null,
"descricao": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"sala": {…}
"id": 2,
"nome": null,
"capacidade": null,
"local": null
}
},
"disciplina": {…},
"id": 2,
"id_Curso": 1,
"id_Nivel": 1,
"id_Periodo_Semeste": 1,
"nomeDisciplina": "Ciências Humanas",
"AbreviaturaDisciplina": "CH",
"cargaHorariaSemal": "66",
"modulo": "Módulo 2",
"semTeste": "Sim",
"exameFinal": "Não",
"percentagemMediaFinal": "",
"percentegemExameFinal": "",
"pondTest": "",
"pondTrab": "",
"pondEstag": "",
"temEstagio": "Não",
"percentagemEstagio": "",
"percentagemTeoria": "",
"pondFreq": "66,70%",
"pondExame": "33,30%",
"descricao": "",
"temTrabalho": "Não",
"nrTeste": 2,
"nrEstagio": 0,
"campos_por_competencia": "1",
"descricao_unidade": null,
"codigo": null,
"nivel_qnqp": null,
"credito": 0,
"campo": null,
"subcampo": null,
"data_registo": null,
"data_revisao_registo": null,
"requisito": "10"
},
"matricula": {…}
"id": 5073,
"estado": "Activo",
"ano_lectivo": "2024"
}
},
{…}
"id": 57738,
"docente": "Nenhum",
"testes": {…},
"t1": "10.00",
"t1_res": null,
"t2": "14.00",
"t2_res": null,
"t3": null,
"t3_res": null,
"t4": null,
"t4_res": null,
"t5": null,
"t5_res": null,
"t6": null,
"t6_res": null,
"t7": null,
"t7_res": null,
"t8": null,
"t8_res": null,
"t9": null,
"t9_res": null,
"t10": null,
"t10_res": null,
"t11": null,
"t11_res": null,
"mediaTeste": "12.00",
"exameTes": null,
"recTest": null,
"mediaFinalT": null
},
"trabalhos": {…},
"tr1": null,
"tr2": null,
"tr3": null,
"tr4": null,
"tr5": null,
"mediaTrabalho": null
},
"estagios": {…},
"estag1": null,
"estag1_res": null,
"estag2": null,
"estag2_res": null,
"estag3": null,
"estag3_res": null,
"estag4": null,
"estag4_res": null,
"estag5": null,
"estag5_res": null,
"estag6": null,
"estag6_res": null,
"estag7": null,
"estag7_res": null,
"estag8": null,
"estag8_res": null,
"estag9": null,
"estag9_res": null,
"estag10": null,
"estag10_res": null,
"estag11": null,
"estag11_res": null,
"estag12": null,
"estag12_res": null,
"mediaEstagio": null,
"exameEst": null,
"recEstagio": null,
"mediaFinalEstagio": null
},
"exames": {…},
"exameNormal": "10.00",
"exameRecorencia": null,
"exameEspecial": null,
"mediaFinal": "11.00",
"mediaFinalPorExtenso": null,
"mediaFinalNAredondada": 11.33
},
"observacoes": {…},
"teorica": null,
"estagio": null,
"nota": "ADMITIDA",
"final": "APROVADA",
"comportamento": null,
"responsavel": "Goriate"
},
"turma": {…},
"id": 158,
"nome": "19",
"nr_vaga": 0,
"observacao": "",
"ano_letivo_turma": 2024,
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"nivel": {…},
"id": 1,
"nome": null,
"descricao": null
},
"ensino": {…},
"id": 1,
"nome": "Laboral",
"descricao": ""
},
"sala": {…}
"id": 2,
"nome": null,
"capacidade": null,
"local": null
}
},
"disciplina": {…},
"id": 3,
"id_Curso": 1,
"id_Nivel": 1,
"id_Periodo_Semeste": 1,
"nomeDisciplina": "Introdução à Informática",
"AbreviaturaDisciplina": "IT",
"cargaHorariaSemal": "66",
"modulo": "Módulo 3",
"semTeste": "Sim",
"exameFinal": "Não",
"percentagemMediaFinal": "",
"percentegemExameFinal": "",
"pondTest": "",
"pondTrab": "",
"pondEstag": "",
"temEstagio": "Não",
"percentagemEstagio": "",
"percentagemTeoria": "",
"pondFreq": "66,70%",
"pondExame": "33,30%",
"descricao": "",
"temTrabalho": "Não",
"nrTeste": 2,
"nrEstagio": 0,
"campos_por_competencia": "1",
"descricao_unidade": null,
"codigo": null,
"nivel_qnqp": null,
"credito": 0,
"campo": null,
"subcampo": null,
"data_registo": null,
"data_revisao_registo": null,
"requisito": "10"
},
"matricula": {…}
"id": 5073,
"estado": "Activo",
"ano_lectivo": "2024"
}
}
]
}

Exemplo com 3 de 17 registros retornados originalmente — a estrutura (testes, trabalhos, estágios, exames, observações, turma e disciplina) se repete para cada disciplina cursada.

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/notas');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$notas = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/notas', {
  headers: { Authorization: `Bearer ${token}` }
});
const notas = await resp.json();

Notas de implementação

  • As notas podem ser nulas para disciplinas ainda em curso — trate esse caso na interface.
  • A frequência é retornada em percentagem (0–100).
💳

Financeiro

GET /api/me/cobrancas

Descrição

Lista as cobranças (facturas de propinas, taxas, emolumentos) do estudante autenticado, direto da tabela original de facturas, sem os dados relacionados juntados. Requer o token JWT obtido no login.

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Cobranças do estudante autenticado (tabela original)",
"data": […]
{…}
"id": 10457,
"mes": "MARCO",
"data_doc": "2026-02-25",
"data_vencimento": "2026-03-05",
"debito": 4500,
"iva": 0.05,
"cod_doc": "9005926104570848450000",
"serie": 10,
"estado": "Pago",
"entidade": "90059",
"referencia": "26104570848",
"activa": "Activa",
"usuario": "eassis",
"data_actualizacao": "2026-09-13",
"documento": {…},
"id": 654,
"nome": "Taxa de propina mensal"
},
"ano_lectivo": {…},
"id": 10,
"ano": "2026"
},
"estudante": {…}
"id": 3212,
"nome": "Angélica António Basílio"
}
}
]
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/cobrancas');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$cobrancas = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/cobrancas', {
  headers: { Authorization: `Bearer ${token}` }
});
const cobrancas = await resp.json();

Notas de implementação

  • estado indica a situação da cobrança: Pago, Activa (em aberto) etc.
  • Os valores (debito) são retornados em Metical (MZN), sem formatação — formate no cliente.
  • Use /api/me/cobrancas-view para obter também os dados de estudante, curso, ensino e ano lectivo já juntados.
GET /api/me/cobrancas-view

Descrição

Lista as cobranças (facturas de propinas, taxas, emolumentos) do estudante autenticado, já com os dados de estudante, curso, ensino, documento e ano lectivo juntados (view vw_tesouraria_factura). Requer o token JWT obtido no login. Base para telas de "minhas pendências financeiras".

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Cobranças do estudante autenticado (view vw_tesouraria_factura)",
"data": […]
{…}
"estudante": {…},
"id": 3212,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"contacto": "842477274",
"email": "",
"curso_id": 1
},
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo_nacional": null,
"plano_id": 1
},
"ensino": {…},
"id": 1,
"nome": "Laboral"
},
"factura": {…},
"id": 10457,
"mes": "MARCO",
"data_doc": "2026-02-25",
"data_venc": "2026-03-05",
"debito": 4500,
"cod_doc": "9005926104570848450000",
"estado": "Pago",
"entidade": "90059",
"referencia": "26104570848",
"activa": "Activa",
"usuario": "eassis",
"data_actualizacao": "2026-09-13",
"disciplina_pro": null,
"motivo_anulacao": null,
"data_anulacao": null
},
"documento": {…},
"id": 654,
"nome": "Taxa de propina mensal",
"abreviatura": "TPM",
"tipo": "FACTURA",
"custo": 4500
},
"ano_lectivo": {…}
"id": 10,
"ano": "2026",
"observacao": "Ano Em Uso"
}
}
]
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/cobrancas-view');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$cobrancas = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/cobrancas-view', {
  headers: { Authorization: `Bearer ${token}` }
});
const cobrancas = await resp.json();

Notas de implementação

  • factura.estado indica a situação da cobrança: Pago, Activa (em aberto) etc.
  • Os valores (debito, custo) são retornados em Metical (MZN), sem formatação — formate no cliente.
  • Exige o cabeçalho Authorization: Bearer <token> obtido em /api/login.
GET /api/me/recebimentos

Descrição

Retorna o histórico de pagamentos (recibos) já recebidos e conciliados do estudante autenticado, direto da tabela original de recibos, com a factura associada a cada um.

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Recebimentos do estudante autenticado (tabela original)",
"data": […]
{…}
"id": 7474,
"factura_id": 10457,
"referenciarecibo": "26104570848",
"data": "2026-02-27",
"instante": "2026-09-13 05:52:56",
"estado_recibo": "Válido",
"valor_pago": 4500,
"responsavel_pag": "eassis",
"tipo_dc": "XX",
"data_envio": "2026-02-27",
"canal_pagamento": "ATM",
"hora_pagamento": "08:48:49",
"data_pagamento": "2026-02-27",
"tipo_origem": "RA",
"factura": {…}
"id": 10457,
"mes": "MARCO",
"debito": 4500,
"estado": "Pago",
"referencia": "26104570848"
}
}
]
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/recebimentos');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$recebimentos = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/recebimentos', {
  headers: { Authorization: `Bearer ${token}` }
});
const recebimentos = await resp.json();

Notas de implementação

  • Cada recebimento traz o campo factura com os dados básicos da cobrança quitada.
  • canal_pagamento identifica a origem do pagamento (ex.: ATM, ISPT).
  • Use /api/me/recebimentos-view para obter também os dados de estudante, curso e ano lectivo já juntados.
GET /api/me/recebimentos-view

Descrição

Retorna os recebimentos do estudante autenticado a partir da view vw_tesouraria_recibo, já com os dados de estudante, curso, ensino, documento e ano lectivo juntados — útil para gerar comprovativos e extratos completos sem chamadas adicionais.

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Recebimentos do estudante autenticado (view vw_tesouraria_recibo)",
"data": […]
{…}
"estudante": {…},
"id": 3212,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"contacto": "842477274",
"email": "",
"curso_id": 1
},
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo_nacional": null,
"plano_id": 1
},
"ensino": {…},
"id": 1,
"nome": "Laboral"
},
"factura": {…},
"id": 10457,
"mes": "MARCO",
"debito": 4500,
"estado": "Pago",
"referencia": "26104570848",
"iva": 0.05
},
"documento": {…},
"id": 654,
"nome": "Taxa de propina mensal",
"abreviatura": "TPM",
"tipo": "FACTURA",
"custo": 4500
},
"recibo": {…},
"id": 7474,
"referenciarecibo": "26104570848",
"data": "2026-02-27",
"instante": "2026-09-13 05:52:56",
"estado_recibo": "Válido",
"valor_pago": 4500,
"responsavel_pag": "eassis",
"tipo_dc": "XX",
"data_envio": "2026-02-27",
"canal_pagamento": "ATM",
"hora_pagamento": "08:48:49",
"data_pagamento": "2026-02-27",
"tipo_origem": "RA"
},
"ano_lectivo": {…}
"id": 10,
"ano": "2026",
"observacao": "Ano Em Uso"
}
}
]
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/recebimentos-view');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$recebimentosView = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/recebimentos-view', {
  headers: { Authorization: `Bearer ${token}` }
});
const recebimentosView = await resp.json();

Notas de implementação

  • Ideal para telas de extrato financeiro, pois evita ter que combinar dados de várias rotas.
  • O campo factura.iva traz a taxa de imposto aplicada, quando existir.
GET /api/me/notas-credito-view

Descrição

Lista as notas de crédito emitidas em favor do estudante autenticado (por exemplo, após um cancelamento ou ajuste financeiro), a partir da view vw_tesouraria_nota_de_credito, com estudante, curso, factura e documento já juntados.

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Notas de crédito do estudante autenticado (view vw_tesouraria_nota_de_credito)",
"data": […]
{…}
"estudante": {…},
"id": 3212,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"contacto": "842477274",
"email": "",
"curso_id": 1
},
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo_nacional": null,
"plano_id": 1
},
"ensino": {…},
"id": 1,
"nome": "Laboral"
},
"factura": {…},
"id": 10457,
"mes": "MARCO",
"debito": 4500,
"estado": "Pago",
"referencia": "26104570848"
},
"documento": {…},
"id": 654,
"nome": "Taxa de propina mensal",
"abreviatura": "TPM",
"tipo": "FACTURA",
"custo": 4500
},
"nota_credito": {…},
"id": 1,
"referencianota": "26104570848",
"data": "2026-08-13",
"instante": "2026-08-13 16:17:08",
"estado_nota": "Válida",
"valor_pago": 4500,
"responsavel_pag": "eassis",
"tipo_dc": "NC",
"data_envio": "2026-08-13",
"canal_pagamento": "ISPT",
"hora_pagamento": "18:17:08",
"data_pagamento": "2026-08-13",
"nr_rembolso": "0001",
"justificativa": "Falha",
"motivo_id": 6,
"documento_id": 663
},
"ano_lectivo": {…}
"id": 10,
"ano": "2026",
"observacao": "Ano Em Uso"
}
}
]
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/notas-credito-view');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$notasCredito = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/notas-credito-view', {
  headers: { Authorization: `Bearer ${token}` }
});
const notasCredito = await resp.json();

Notas de implementação

  • nota_credito.justificativa explica o motivo do estorno/ajuste (ex.: "Falha").
  • nota_credito.nr_rembolso identifica o número do reembolso, quando aplicável.
  • Notas de crédito podem ser aplicadas automaticamente à próxima cobrança pendente.
👤

Perfil

GET /api/me

Descrição

Retorna o perfil completo do usuário autenticado: dados pessoais, tipo de conta, curso (se aplicável) e preferências. É a rota mais usada para montar a tela inicial de qualquer aplicação integrada.

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Perfil do usuário autenticado",
"data": {…}
"id": 126,
"usuario": "4024",
"nome": "Angelica Antonio Basilio",
"email": null,
"estudante": {…}
"id": 3212,
"ano": null,
"matricula": null,
"nomeCompleto": "Angélica António Basílio",
"sexo": "Femenino",
"dataNascimento": "1994-08-14",
"Naturalidade": "Tsangano",
"direFoto": "assets/image/estudante/foto-padrao.png",
"contacto": "842477274",
"email": "",
"curso": {…},
"id": 1,
"nome": "Enfermagem Geral",
"codigo": "EG",
"observacao": "",
"foto": null,
"diretor_diurno": "Manuel Penga Agostinho",
"diretor_nocturno": "Manuel Penga Agostinho",
"pedagogico": "Gilberto Franque",
"nivel_qnqp": null,
"creditos": null,
"plano": {…}
"id": 1,
"nome": "Plano de Ensino 2018",
"status": 1,
"data_inicio": "2018-01-10",
"data_fim": "2026-12-10",
"observacao": "Este plano de ensino adopta metodologias tradicionais, com foco na transmissão teórica dos conteúdos e avaliações periódicas. O objectivo é garantir uma base sólida de conhecimento nas disciplinas, acompanhada por provas e testes regulares ao longo do ano lectivo.",
"modelo_ensino": {…}
"id": 1,
"modelo": "Clássico",
"observacao": "Modelo de ensino tradicional"
}
}
},
"ensino": {…}
"id": 1,
"nome": "Laboral",
"descricao": ""
}
}
}
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$perfil = json_decode(curl_exec($ch), true);
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me', {
  headers: { Authorization: `Bearer ${token}` }
});
const perfil = await resp.json();

Notas de implementação

  • Diferente de /api/user, esta rota retorna dados estendidos de perfil (curso, data de criação, preferências).
  • Faça cache local do resultado por alguns minutos para reduzir chamadas repetidas.
🏢

Instituição

GET /api/me/instituicao

Descrição

Retorna os dados completos da instituição associada ao sistema: identificação, localização, contactos, dados bancários e parâmetros financeiros (propina, multa, dia limite, IVA). Útil para preencher cabeçalhos de documentos, facturas e telas institucionais sem precisar de valores fixos no cliente.

Parâmetros de entrada

Nenhum parâmetro obrigatório. Apenas o cabeçalho Authorization com o token JWT.

Exemplo de resposta

{…}
"success": true,
"message": "Instituição carregada com sucesso",
"data": {…}
"id": 1,
"nome": "INSTITUTO MÉDIO POLITÉCNICO ACADEMY",
"localizacao": "Tete, Rua 3 de Fevereiro - 1863",
"logotipo": "E:\Imagens\fia.jpg",
"conta": null,
"observacao": null,
"contacto1": "84 9999 333",
"contacto2": "www.suainstituicao.com",
"email": "admin@issv.com",
"fax": "84984444",
"telefone": "25866666",
"nuit": "400780001",
"iva": "1.05",
"desconto": "00.00%",
"banco": "Banco Comercial de Investimentos BCI",
"nrConta": "489488598888",
"nib": "9339039485495",
"provincia": "Tete",
"deposito": "Desativado",
"percentagemMulta": "30,00%",
"propina": "3750",
"diaLimite": "5",
"inicio": "Fevereiro",
"email_contabilidade": "contabilidade@sua_instituicao.ac.mz",
"email_registo_academico": "registo.academico@sua_instuicao.ac.mz"
}
}

Exemplos de código

🐘 PHP (cURL)
$ch = curl_init('https://api.academico.ac.mz/api/me/instituicao');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$instituicao = json_decode(curl_exec($ch), true);
echo $instituicao['data']['nome'];
🟨 JavaScript (fetch)
const resp = await fetch('https://api.academico.ac.mz/api/me/instituicao', {
  headers: { Authorization: `Bearer ${token}` }
});
const { data: instituicao } = await resp.json();
console.log(instituicao.nome);

Notas de implementação

  • Requer um token JWT válido no cabeçalho Authorization: Bearer <token>.
  • Retorna apenas uma instituição — a primeira encontrada no sistema.
  • O campo logotipo pode conter um caminho de ficheiro local ou dado binário, dependendo da configuração do servidor; trate o valor no cliente antes de exibi-lo como imagem.
  • Campos monetários e percentuais (propina, desconto, percentagemMulta, iva) vêm como texto — converta e formate no cliente conforme a necessidade.
Início rápido

Fluxo básico de integração

Autentique-se e consulte o perfil do usuário com poucas linhas de código.

🐘 PHP — Autenticação e consulta de perfil
// Autenticação
$ch = curl_init('https://api.academico.ac.mz/api/login');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
    'usuario' => 'seu-usuario',
    'senha'   => 'sua-senha'
]));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);

$resp  = json_decode(curl_exec($ch), true);
$token = $resp['data']['token'];

// Consulta de perfil
$ch2 = curl_init('https://api.academico.ac.mz/api/me');
curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch2, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer ' . $token
]);

$perfil = json_decode(curl_exec($ch2), true);
print_r($perfil);
🟨 JavaScript — Autenticação e consulta financeira
// Autenticação
const loginResp = await fetch('https://api.academico.ac.mz/api/login', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({
    usuario: 'seu-usuario',
    senha: 'sua-senha'
  })
});
const { data } = await loginResp.json();
const token = data.token;

// Consulta de cobranças
const financeiroResp = await fetch('https://api.academico.ac.mz/api/me/cobrancas', {
  headers: { Authorization: `Bearer ${token}` }
});
const cobrancas = await financeiroResp.json();
console.log(cobrancas);
📖 Ver documentação completa

Pronto para integrar?

Solicite sua chave de API, explore a documentação e comece sua integração hoje mesmo.