Documentação API Integração FACMA

API REST desenvolvida em Django REST Framework para integração entre sistemas externos e o TOTVS RM.


Django REST Framework JWT TOTVS RM

URL Base:
https://integracao.facma.edu.br

🔐 Autenticação JWT

A API utiliza autenticação baseada em JWT (JSON Web Token). Antes de consumir os endpoints protegidos, o integrador deve solicitar um token de acesso.

Gerar Token de Acesso

POST /api/token/

Request




{
    "username": "usuario_api",
    "password": "senha"
}


Resposta






{
    "refresh": "token_refresh",
    "access": "token_access",

    "integrador": {
        "nome": "Integração FACMA",
        "ativo": true
    }
}



Utilização do Token

Todas as requisições protegidas devem enviar o token no Header HTTP:



Authorization: Bearer TOKEN_ACCESS


Renovar Token

POST /api/token/refresh/





{
    "refresh":"token_refresh"
}



Integração Malta

Endpoint destinado à integração com o CRM iCode no modelo Portal do Aluno, utilizado para sincronização de matrículas acadêmicas.

Autenticação
Este endpoint utiliza a mesma autenticação JWT dos demais serviços da API.

Endpoint

GET /api/integracao/malta/matriculas/

Parâmetros

Parâmetro Tipo Obrigatório Descrição
periodoletivo String Sim Código do período letivo.
enviado Boolean Não Indica se deseja registros enviados ou pendentes.
page Integer Não Número da página.
size Integer Não Quantidade máxima de registros retornados.

Exemplo

GET /api/integracao/malta/matriculas/?periodoletivo=2026.2&enviado=false&page=0&size=200

Resposta

{
    "content": [
        {
            "Unidade": 1,
            "Matricula": "202600123",
            "NomeAluno": "Maria Aparecida de Souza",
            "Cpf": "12345678909",
            "DataNascimento": "1998-04-12",
            "Email": "[email protected]",
            "Celular": "44999999999",
            "Curso": "DIR",
            "CursoNome": "Direito",
            "Serie": 3,
            "SerieNome": "3º Período",
            "Ano": 2026,
            "PeriodoLetivo": 1,
            "NivelEnsino": 5,
            "NivelEnsinoDescricao": "Graduação",
            "Polo": 10,
            "PoloNome": "Polo Centro",
            "IDMoodle": "48217",
            "DataMatricula": "2026-01-20",
            "SitFinal": 0,
            "SitFinalDescricao": "ATIVA",
            "SitEscolar": "MT",
            "SitEscolarDescricao": "MATRICULADO",
            "TipoMatricula": "N",
            "TipoMatriculaDescricao": "Novato",
            "Endereco": "Rua das Flores",
            "Numero": "123",
            "Complemento": "Apto 4",
            "Bairro": "Centro",
            "CEP": "64000000",
            "Municipio": 2211001,
            "MunicipioNome": "Teresina",
            "UF": "PI",
            "Campanha": "VEST2026",
            "CampanhaDescricao": "Vestibular 2026",
            "TipoIngresso": "V",
            "TipoIngressoDescricao": "Vestibular",
            "Operacao": "I"
        }
    ],
    "last": true,
    "totalElements": 1,
    "size": 200,
    "number": 0
}

Observações


📚 Matrícula Acadêmica

Endpoint responsável pelo processo completo de integração acadêmica com o TOTVS RM. O consumidor envia todas as informações necessárias para criação do aluno, cliente/fornecedor, habilitação, matrícula acadêmica e contrato em uma única requisição.

POST /integracao/malta/matricula-completa/

Fluxo interno executado pela API



1 - Validação dos dados recebidos

        ↓

2 - Cadastro Cliente / Fornecedor

        ↓

3 - Cadastro do Aluno

        ↓

4 - Criação da Habilitação

        ↓

5 - Execução da Matrícula Acadêmica

        ↓

6 - Atualização do Contrato

        ↓

7 - Retorno consolidado do processo



Payload



{
    "nome":"joão Miguel Alves de Sousa",
    "sobrenome":"Miguel Alves de Sousa",

    "cpf":"123.456.789-00",

    "data_nascimento":"2000-01-01",

    "email":"[email protected]",

    "email_pessoal":"",

    "telefone":"86999999999",

    "telefone2":"",

    "cep":"64000000",

    "endereco":"Rua Principal",

    "numero":"100",

    "bairro":"Centro",

    "cidade":"Teresina",

    "estado":"PI",

    "nacionalidade":10,

    "naturalidade":"Teresina",

    "estado_natal":"PI",


    "periodo_letivo":"2026.2",

    "cod_status":1,

    "cod_tipo_matricula":1,

    "cod_curso":"01",

    "cod_turno":1,

    "cod_plano_pgto":"BOLSA100%",

    "cod_bolsa":"36"
}


Campos da requisição

Campo Tipo Obrigatório Descrição
nome String Sim Nome do aluno
sobrenome String Sim Sobrenome do aluno
cpf String Sim CPF do aluno. A máscara é removida automaticamente.
data_nascimento Date Sim Formato YYYY-MM-DD
email Email Sim Email principal
telefone String Sim Telefone principal
cep String Sim CEP sem máscara
endereco String Sim Logradouro
cidade String Sim Nome da cidade
estado String Sim UF
periodo_letivo String Sim Período letivo da matrícula
cod_curso String Sim Código do curso
cod_turno Integer Sim Código do turno
cod_plano_pgto String Não Plano de pagamento
cod_bolsa String Não Código da bolsa
Consulta automática de município

A API utiliza o nome da cidade informado no campo cidade para localizar automaticamente no TOTVS RM:

  • Código interno do município
  • Nome padronizado
  • UF correspondente
O integrador não precisa enviar códigos internos do RM.

Resposta



{
    "cliente_fornecedor": true,

    "aluno": {
        "RA":"2610020906"
    },

    "matricula": {
        "status":"sucesso"
    },

    "contrato": {
        "CODCONTRATO":"85656"
    }
}


🔎 Consultas SQL

A API possui um módulo de Consultas SQL responsável por consultar informações diretamente no TOTVS RM antes da execução de determinados processos. Essas consultas são reutilizadas internamente pelos módulos de cadastro e matrícula, eliminando a necessidade de o integrador conhecer códigos internos do RM.

Endpoint Genérico

GET /api/consultasql/{codigo_consulta}/?NOMEMUNICIPIO={valor}

Executa uma Consulta SQL previamente cadastrada no TOTVS RM. O parâmetro codigo_consulta identifica a consulta que será executada. O código do sistema (G) é utilizado automaticamente pela API e não precisa ser informado pelo consumidor.

Parâmetros

Nome Tipo Obrigatório Descrição
codigo_consulta String Sim Código da Consulta SQL cadastrada no TOTVS RM (ex.: integracao.1).
NOMEMUNICIPIO String Depende da consulta Parâmetro utilizado pela consulta SQL. Os parâmetros variam conforme a consulta executada.

Exemplo

GET /api/consultasql/integracao.1/?NOMEMUNICIPIO=Teresina

Resposta


[
    {
        "CODMUNICIPIO": "11001",
        "NOMEMUNICIPIO": "Teresina",
        "CODETDMUNICIPIO": "PI"
    }
]

            

Níveis de Ensino

Retorna a lista de níveis de ensino cadastrados no TOTVS RM. Essa consulta é utilizada para que o sistema integrador obtenha os códigos disponíveis antes de realizar operações que dependam do nível de ensino.

GET /api/consultasql/niveis-ensino/

Esta consulta não recebe parâmetros.

Exemplo


GET /api/consultasql/niveis-ensino/

Resposta


{
    "niveis_ensino": [
        {
            "CODCURSO": "01",
            "NOME": "PEDAGOGIA",
            "NIVEL_ENSINO": "GRADUAÇÃO",
            "CODTURNO": 1,
            "TURNO": "EAD"
        },
        {
            "CODCURSO": "02",
            "NOME": "TEOLOGIA",
            "NIVEL_ENSINO": "GRADUAÇÃO",
            "CODTURNO": 1,
            "TURNO": "EAD"
        },
        {
            "CODCURSO": "01",
            "NOME": "PEDAGOGIA",
            "NIVEL_ENSINO": "GRADUAÇÃO",
            "CODTURNO": 13,
            "TURNO": "INTEGRAL"
        }

        // Demais cursos...
    ]
}

Campos Retornados

Campo Tipo Descrição
CODCURSO String Código do curso cadastrado no TOTVS RM.
NOME String Nome do curso.
NIVEL_ENSINO String Nível de ensino ao qual o curso pertence (ex.: Graduação).
CODTURNO Integer Código interno do turno no TOTVS RM.
TURNO String Descrição do turno (EAD, Matutino, Vespertino, Noturno, Integral etc.).
Importante

Cada registro representa uma combinação de curso, nível de ensino e turno cadastrada no TOTVS RM. O sistema integrador deve utilizar os valores retornados por esta consulta para preencher corretamente os parâmetros exigidos pelos demais endpoints da API, evitando o uso de códigos fixos.

Planos de Bolsas

Retorna os planos de bolsas disponíveis no TOTVS RM de acordo com o período letivo e o tipo de curso informado. Esta consulta deve ser utilizada pelo sistema integrador antes da realização da matrícula para identificar os códigos de bolsas válidos.

GET /api/consultasql/planos-bolsas/

Parâmetros

Nome Tipo Obrigatório Descrição
PERIODOLETIVO String Sim Código do período letivo da matrícula. Exemplo: 2026.2
CODTIPOCURSO Integer Sim Código do tipo de curso no TOTVS RM.

Exemplo


GET /api/consultasql/planos-bolsas/
?periodo_letivo=2026.2
&cod_tipo_curso=1

Resposta


{
    "PlanosBolsas": [
        {
            "CODBOLSA": "36",
            "DESCRICAO": "BOLSA 100%"
        },
        {
            "CODBOLSA": "20",
            "DESCRICAO": "BOLSA 50%"
        }
    ]
}

Campos Retornados

Campo Tipo Descrição
CODBOLSA String Código da bolsa utilizado no processo de matrícula.
DESCRICAO String Nome ou descrição da bolsa cadastrada no TOTVS RM.
Importante

O integrador deve consultar os planos de bolsas informando o período letivo e o tipo de curso antes de enviar o campo cod_bolsa no endpoint de matrícula completa. A API utiliza essa consulta para evitar o envio de códigos de bolsas inexistentes ou incompatíveis com a matrícula.

Grade

Retorna as Grades curriculares correspondente aos parâmetros informados pelo integrador. Esta consulta é utilizada para identificar corretamente as grades disponíveis no TOTVS RM antes da criação da matrícula.

GET /api/consultasql/grades/

Parâmetros

Nome Tipo Obrigatório Descrição
CODTIPOCURSO Integer Sim Código do tipo de curso.
CODCURSO String Sim Código do curso no TOTVS RM.
CODTURNO Integer Sim Código do turno.
CODGRADE String Sim Código da grade curricular.

Exemplo


GET /api/consultasql/grades/
?cod_tipo_curso=1
&cod_curso=01
&cod_turno=1

Resposta


{
    "Grades": {
        "cod_grade": "2024.1"
    }
}

Campos Retornados

Campo Tipo Descrição
cod_grade String Código da grade curricular.
Importante

A matrícula acadêmica depende de uma grade curricular válida no TOTVS RM. O integrador deve utilizar este endpoint para descobrir o CODGRADE correto antes de executar o processo de matrícula.

Consultas Disponíveis

Consulta Código RM Descrição
Último RA integracao Obtém o último Registro Acadêmico (RA) cadastrado no RM. A API incrementa automaticamente esse valor antes de executar uma nova matrícula.
Cidade / Estado integracao.1 Localiza o município utilizando o nome informado pelo integrador e retorna automaticamente o código interno da cidade, sua descrição padronizada e a UF correspondente.
Níveis de Ensino integracao.2 Retorna todos os níveis de ensino cadastrados no TOTVS RM, permitindo que o integrador obtenha seus respectivos códigos.
Planos de Bolsas integracao.7 Retorna os planos de bolsas disponíveis no TOTVS RM, permitindo ao integrador obter os códigos válidos utilizados no processo de matrícula.
Grade integracao.11 Localiza as grades curriculares disponíveis através do tipo de curso, curso e turno, retornando o CODGRADE necessário para matrícula.

Fluxo de utilização



            Sistema envia "cidade": "Teresina"

                    ↓

            Consulta SQL (integracao.1)

                    ↓

            TOTVS RM retorna:

            CODMUNICIPIO
            NOMEMUNICIPIO
            CODETDMUNICIPIO

                    ↓

            API complementa automaticamente o payload

                    ↓

            Mapper gera o objeto esperado pelo TOTVS RM

                
Importante

As Consultas SQL são utilizadas internamente pela API para enriquecer os dados enviados ao TOTVS RM. Dessa forma, o integrador precisa informar apenas os dados de negócio (como o nome da cidade), enquanto códigos internos do RM são resolvidos automaticamente durante o processamento.

🔄 Fluxo da Integração




1 - Sistema consumidor solicita JWT

        ↓

2 - API valida integrador

        ↓

3 - Consumidor envia payload único

        ↓

4 - Serializer valida matrícula completa

        ↓

5 - API executa:

    Cliente/Fornecedor

        ↓

    Aluno

        ↓

    Habilitação

        ↓

    Matrícula

        ↓

    Contrato


        ↓

6 - Retorno consolidado enviado ao consumidor




📌 Estrutura dos Endpoints




https://integracao.facma.edu.br

/api

├── token/
├── token/refresh/
│
├── integracao/
│
│   └── matricula-completa/
│
│
└── consultasql/
    └── niveis-ensino/



⚠️ Tratamento de Erros

400 - Bad Request

Dados enviados inválidos ou campos obrigatórios ausentes.



{
    "cpf":[
        "Este campo é obrigatório."
    ]
}


401 - Unauthorized

Token ausente, expirado ou inválido.



{
    "detail":
    "Authentication credentials were not provided."
}


403 - Forbidden

Integrador desativado ou sem permissão.



{
    "detail":
    "Integrador inativo ou não encontrado."
}


500 - Internal Server Error

Erro interno durante comunicação com TOTVS RM.

💻 Exemplos de Consumo

cURL - Gerar Token








curl --location \
https://integracao.facma.edu.br/api/token/ \
--header "Content-Type: application/json" \
--data '
{
 "username":"usuario",
 "password":"senha"
}
'





JavaScript Fetch









async function cadastrarAluno(){


const response =
await fetch(

"https://integracao.facma.edu.br/api/educacional/aluno/",

{

method:"POST",

headers:{

"Content-Type":"application/json",

"Authorization":
"Bearer TOKEN"

},


body:JSON.stringify({

nome:"João Silva",

cpf:"00000000000",

email:"[email protected]"

})


});


return await response.json();


}





Python Requests









import requests



url = "

https://integracao.facma.edu.br/api/educacional/aluno/

"



headers = {

"Authorization":
"Bearer TOKEN",

"Content-Type":
"application/json"

}



payload = {

"nome":
"João Silva",

"cpf":
"00000000000",

"email":
"[email protected]"

}



response = requests.post(

url,

json=payload,

headers=headers

)





cURL - Consultar Níveis de Ensino





curl --location \
https://integracao.facma.edu.br/api/consultasql/niveis-ensino/ \
--header "Authorization: Bearer TOKEN_ACCESS"


🔒 Segurança

Recurso Implementação
Autenticação JWT Bearer Token
Controle de acesso Integrador ativo
Validação Django REST Serializer
Comunicação HTTPS
Formato JSON