Pular para conteúdo

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

  1. Autenticar e obter token
  2. Fazer requisição GET para listar usuários
  3. Processar a resposta

Passo 1: Autenticação

Primeiro, obtenha seu token de acesso:

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:

Python
# Endpoint de usuários
users_url = "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/"

# Headers com autenticação
headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

# Fazer requisição
response = requests.get(users_url, headers=headers)

if response.status_code == 200:
    users = response.json()
    print(f"✅ Requisição bem-sucedida!")
    print(f"Total de usuários: {users['count']}")
    print(f"\nPrimeiros 3 usuários:")
    for user in users['results'][:3]:
        print(f"  - {user['username']} ({user['email']})")
else:
    print(f"❌ Erro na requisição: {response.status_code}")
JavaScript
const usersUrl = "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/";

const headers = {
  'Authorization': `Bearer ${accessToken}`,
  'Content-Type': 'application/json'
};

const usersResponse = await fetch(usersUrl, { headers });

if (usersResponse.ok) {
  const users = await usersResponse.json();
  console.log('✅ Requisição bem-sucedida!');
  console.log('Total de usuários:', users.count);
  console.log('\nPrimeiros 3 usuários:');
  users.results.slice(0, 3).forEach(user => {
    console.log(`  - ${user.username} (${user.email})`);
  });
} else {
  console.error('❌ Erro na requisição:', usersResponse.status);
}
Bash
1
2
3
curl -X GET "https://apis.pontotel.com.br/pontotel/api/v4/usuarios/" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json"

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
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:

  1. Entender paginação →
  2. Conhecer outras entidades →
  3. Criar um usuário →
  4. Ver exemplos avançados →