Saltar a contenido

Primera Solicitud

Objetivo

En esta guía, harás tu primera solicitud exitosa a la API Pontotel: listar usuarios.

Lo que harás

  1. Autenticarte y obtener token
  2. Hacer solicitud GET para listar usuarios
  3. Procesar la respuesta

Paso 1: Autenticación

Primero, obtén tu token de acceso:

Python
import requests

# Endpoint de login
login_url = "https://apis.pontotel.com.br/pontotel/api/v4/login/"

# Credenciales
credentials = {
    "username": "tu_usuario",
    "password": "tu_contraseña"
}

# Hacer login
response = requests.post(login_url, json=credentials)

if response.status_code == 200:
    data = response.json()
    access_token = data["access_token"]
    print(f"✅ Token obtenido: {access_token[:20]}...")
else:
    print(f"❌ Error en login: {response.status_code}")
    print(response.json())
JavaScript
const loginUrl = "https://apis.pontotel.com.br/pontotel/api/v4/login/";

const credentials = {
  username: "tu_usuario",
  password: "tu_contraseña"
};

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 obtenido:', accessToken.substring(0, 20) + '...');
} else {
  console.error('❌ Error en login:', loginResponse.status);
}
Bash
curl -X POST "https://apis.pontotel.com.br/pontotel/api/v4/login/" \
  -H "Content-Type: application/json" \
  -d '{
    "username": "tu_usuario",
    "password": "tu_contraseña"
  }' \
  -o response.json

# Extraer token
TOKEN=$(cat response.json | jq -r '.access_token')
echo "✅ Token obtenido: ${TOKEN:0:20}..."

Paso 2: Listar Usuarios

Ahora usa el token para hacer tu primera solicitud:

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

# Encabezados con autenticación
headers = {
    "Authorization": f"Bearer {access_token}",
    "Content-Type": "application/json"
}

# Hacer solicitud
response = requests.get(users_url, headers=headers)

if response.status_code == 200:
    users = response.json()
    print(f"✅ ¡Solicitud exitosa!")
    print(f"Total de usuarios: {users['count']}")
    print(f"\nPrimeros 3 usuarios:")
    for user in users['results'][:3]:
        print(f"  - {user['username']} ({user['email']})")
else:
    print(f"❌ Error en la solicitud: {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('✅ ¡Solicitud exitosa!');
  console.log('Total de usuarios:', users.count);
  console.log('\nPrimeros 3 usuarios:');
  users.results.slice(0, 3).forEach(user => {
    console.log(`  - ${user.username} (${user.email})`);
  });
} else {
  console.error('❌ Error en la solicitud:', 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"

Paso 3: Entender la Respuesta

La respuesta estará en este 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": "Juan",
      "last_name": "García",
      "is_active": true,
      "date_joined": "2025-01-01T10:00:00Z"
    }
  ]
}

Campos de la Respuesta

Campo Descripción
count Total de registros disponibles
next URL para la siguiente página (null si no hay)
previous URL para la página anterior (null si no hay)
results Array con los datos de la página actual

Script Completo

Aquí está el código completo para copiar y probar:

Python
import requests

def primera_solicitud():
    # 1. Login
    login_url = "https://apis.pontotel.com.br/pontotel/api/v4/login/"
    credentials = {
        "username": "tu_usuario",
        "password": "tu_contraseña"
    }

    login_response = requests.post(login_url, json=credentials)
    login_response.raise_for_status()
    access_token = login_response.json()["access_token"]
    print(f"✅ ¡Autenticado exitosamente!")

    # 2. Listar usuarios
    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. Mostrar resultados
    print(f"\n📊 Total de usuarios: {users['count']}")
    print(f"📄 Usuarios en esta página: {len(users['results'])}")
    print(f"\n👥 Primeros usuarios:")
    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:
        primera_solicitud()
    except requests.exceptions.HTTPError as e:
        print(f"❌ Error HTTP: {e}")
    except Exception as e:
        print(f"❌ Error: {e}")

Posibles Errores

Error Causa Solución
401 Unauthorized Token inválido o expirado Hacer login nuevamente
403 Forbidden Sin permiso para acceder a usuarios Verificar permisos del usuario
429 Too Many Requests Demasiadas solicitudes Implementar rate limiting
500 Internal Server Error Error en el servidor Intentar nuevamente o contactar soporte

Próximos Pasos

¡Felicitaciones! 🎉 Hiciste tu primera solicitud exitosamente.

Ahora explora más:

  1. Entender paginación →
  2. Conocer otras entidades →
  3. Crear un usuario →
  4. Ver ejemplos avanzados →