Primeira Requisição Objetivo Neste guia, você vai fazer sua primeira requisição bem-sucedida à API Pontotel: listar usuários .
O que você vai fazer
Autenticar e obter token Fazer requisição GET para listar usuários Processar a resposta Passo 1: Autenticação Primeiro, obtenha seu token de acesso:
Python JavaScript cURL
Python import requests
# Endpoint de login
login_url = "https://apis.pontotel.com.br/pontotel/api/v4/login/"
# Credenciais
credentials = {
"username" : "seu_usuario" ,
"password" : "sua_senha"
}
# Fazer login
response = requests . post ( login_url , json = credentials )
if response . status_code == 200 :
data = response . json ()
access_token = data [ "access_token" ]
print ( f "✅ Token obtido: { access_token [: 20 ] } ..." )
else :
print ( f "❌ Erro no login: { response . status_code } " )
print ( response . json ())
JavaScript const loginUrl = "https://apis.pontotel.com.br/pontotel/api/v4/login/" ;
const credentials = {
username : "seu_usuario" ,
password : "sua_senha"
};
const loginResponse = await fetch ( loginUrl , {
method : 'POST' ,
headers : { 'Content-Type' : 'application/json' },
body : JSON . stringify ( credentials )
});
if ( loginResponse . ok ) {
const data = await loginResponse . json ();
const accessToken = data . access_token ;
console . log ( '✅ Token obtido:' , accessToken . substring ( 0 , 20 ) + '...' );
} else {
console . error ( '❌ Erro no login:' , loginResponse . status );
}
Bash curl -X POST "https://apis.pontotel.com.br/pontotel/api/v4/login/" \
-H "Content-Type: application/json" \
-d '{
"username": "seu_usuario",
"password": "sua_senha"
}' \
-o response.json
# Extrair token
TOKEN = $( cat response.json | jq -r '.access_token' )
echo "✅ Token obtido: ${ TOKEN : 0 : 20 } ..."
Passo 2: Listar Usuários Agora use o token para fazer sua primeira requisição:
Passo 3: Entender a Resposta A resposta será no formato:
JSON {
"count" : 150 ,
"next" : "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/?page=2" ,
"previous" : null ,
"results" : [
{
"id" : 1 ,
"username" : "usuario1" ,
"email" : "usuario1@example.com" ,
"first_name" : "João" ,
"last_name" : "Silva" ,
"is_active" : true ,
"date_joined" : "2025-01-01T10:00:00Z"
},
{
"id" : 2 ,
"username" : "usuario2" ,
"email" : "usuario2@example.com" ,
"first_name" : "Maria" ,
"last_name" : "Santos" ,
"is_active" : true ,
"date_joined" : "2025-01-02T11:30:00Z"
}
]
}
Campos da Resposta Campo Descrição count Total de registros disponíveis next URL para a próxima página (null se não houver) previous URL para a página anterior (null se não houver) results Array com os dados da página atual
Script Completo Aqui está o código completo para copiar e testar:
Python JavaScript
Python import requests
def primeira_requisicao ():
# 1. Login
login_url = "https://apis.pontotel.com.br/pontotel/api/v4/login/"
credentials = {
"username" : "seu_usuario" ,
"password" : "sua_senha"
}
login_response = requests . post ( login_url , json = credentials )
login_response . raise_for_status ()
access_token = login_response . json ()[ "access_token" ]
print ( f "✅ Autenticado com sucesso!" )
# 2. Listar usuários
users_url = "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/"
headers = { "Authorization" : f "Bearer { access_token } " }
users_response = requests . get ( users_url , headers = headers )
users_response . raise_for_status ()
users = users_response . json ()
# 3. Exibir resultados
print ( f " \n 📊 Total de usuários: { users [ 'count' ] } " )
print ( f "📄 Usuários nesta página: { len ( users [ 'results' ]) } " )
print ( f " \n 👥 Primeiros usuários:" )
for user in users [ 'results' ][: 5 ]:
status = "✅" if user [ 'is_active' ] else "❌"
print ( f " { status } { user [ 'username' ] : 20 } - { user [ 'email' ] } " )
return users
if __name__ == "__main__" :
try :
primeira_requisicao ()
except requests . exceptions . HTTPError as e :
print ( f "❌ Erro HTTP: { e } " )
except Exception as e :
print ( f "❌ Erro: { e } " )
JavaScript async function primeiraRequisicao () {
try {
// 1. Login
const loginUrl = "https://apis.pontotel.com.br/pontotel/api/v4/login/" ;
const credentials = {
username : "seu_usuario" ,
password : "sua_senha"
};
const loginResponse = await fetch ( loginUrl , {
method : 'POST' ,
headers : { 'Content-Type' : 'application/json' },
body : JSON . stringify ( credentials )
});
if ( ! loginResponse . ok ) {
throw new Error ( `Login failed: ${ loginResponse . status } ` );
}
const { access_token } = await loginResponse . json ();
console . log ( '✅ Autenticado com sucesso!' );
// 2. Listar usuários
const usersUrl = "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/" ;
const usersResponse = await fetch ( usersUrl , {
headers : { 'Authorization' : `Bearer ${ access_token } ` }
});
if ( ! usersResponse . ok ) {
throw new Error ( `Request failed: ${ usersResponse . status } ` );
}
const users = await usersResponse . json ();
// 3. Exibir resultados
console . log ( `\n📊 Total de usuários: ${ users . count } ` );
console . log ( `📄 Usuários nesta página: ${ users . results . length } ` );
console . log ( '\n👥 Primeiros usuários:' );
users . results . slice ( 0 , 5 ). forEach ( user => {
const status = user . is_active ? '✅' : '❌' ;
console . log ( ` ${ status } ${ user . username . padEnd ( 20 ) } - ${ user . email } ` );
});
return users ;
} catch ( error ) {
console . error ( '❌ Erro:' , error . message );
}
}
primeiraRequisicao ();
Possíveis Erros Erro Causa Solução 401 Unauthorized Token inválido ou expirado Fazer login novamente 403 Forbidden Sem permissão para acessar usuários Verificar permissões do usuário 429 Too Many Requests Muitas requisições Implementar rate limiting 500 Internal Server Error Erro no servidor Tentar novamente ou contatar suporte
Próximos Passos Parabéns! 🎉 Você fez sua primeira requisição com sucesso.
Agora explore mais:
Entender paginação → Conhecer outras entidades → Criar um usuário → Ver exemplos avançados →