Pular para conteúdo

Primeira requisição

Objetivo

Neste guia, você vai fazer sua primeira requisição bem-sucedida à API Pontotel: listar jornadas.

O que você vai fazer

  1. Autenticar e obter token
  2. Fazer requisição GET para listar jornadas
  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 jornadas

Agora use o token para fazer sua primeira requisição:

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

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

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

if response.status_code == 200:
    data = response.json()
    print(f"✅ Requisição bem-sucedida!")
    print(f"Total de jornadas: {data['total']}")
    print(f"\nPrimeiras 3 jornadas:")
    for jornada in data['itens'][:3]:
        print(f"  - [{jornada['codigo']}] {jornada['nome']}")
else:
    print(f"❌ Erro na requisição: {response.status_code}")
JavaScript
const jornadasUrl = "https://apis.pontotel.com.br/pontotel/api/v4/jornadas/";

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

const jornadasResponse = await fetch(jornadasUrl, { headers });

if (jornadasResponse.ok) {
  const data = await jornadasResponse.json();
  console.log('✅ Requisição bem-sucedida!');
  console.log('Total de jornadas:', data.total);
  console.log('\nPrimeiras 3 jornadas:');
  data.itens.slice(0, 3).forEach(jornada => {
    console.log(`  - [${jornada.codigo}] ${jornada.nome}`);
  });
} else {
  console.error('❌ Erro na requisição:', jornadasResponse.status);
}
Bash
1
2
3
curl -X GET "https://apis.pontotel.com.br/pontotel/api/v4/jornadas/" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json"

Passo 3: Entender a resposta

A resposta será no formato:

JSON
{
  "itens": [
    {
      "id": "1d3fc7947bee78a5179720a",
      "codigo": "0001",
      "ehJornadaDeTrabalho": true,
      "nome": "jornada de trabalho 08h x 18h",
      "entrada": "08:00",
      "pausa": "12:00",
      "retorno": "13:00",
      "saida": "18:00",
      "duracaoLegal": null,
      "tipoPagamento": "extra",
      "temPresencaObrigatoria": true,
      "regraDeCalculo": null,
      "criadoEm": "2025-09-23T17:00:57.767000-03:00",
      "ultimaModificacaoEm": "2025-09-23T17:00:57.767000-03:00",
      "removidoEm": null,
      "deletado": false
    }
  ],
  "total": 239,
  "pagina": 0,
  "por_pagina": 1,
  "ordenacao": [],
  "filtros": []
}

Campos da resposta

Campo Descrição
itens Array com os itens da página atual (nesse caso, jornadas)
total Total de registros disponíveis
pagina Índice da página atual (começa em 0)
por_pagina Quantidade de itens por página
ordenacao Critérios de ordenação aplicados
filtros Filtros aplicados na consulta

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 jornadas
    jornadas_url = "https://apis.pontotel.com.br/pontotel/api/v4/jornadas/"
    headers = {"Authorization": f"Bearer {access_token}"}

    jornadas_response = requests.get(jornadas_url, headers=headers)
    jornadas_response.raise_for_status()
    data = jornadas_response.json()

    # 3. Exibir resultados
    print(f"\n📊 Total de jornadas: {data['total']}")
    print(f"📄 Jornadas nesta página: {len(data['itens'])}")
    print(f"\n📋 Primeiras jornadas:")
    for jornada in data['itens'][:5]:
        tipo = "✅" if jornada['ehJornadaDeTrabalho'] else "🔄"
        print(f"  {tipo} [{jornada['codigo']}] {jornada['nome']:40} {jornada['entrada']} - {jornada['saida']}")

    return data

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 jornadas
    const jornadasUrl = "https://apis.pontotel.com.br/pontotel/api/v4/jornadas/";
    const jornadasResponse = await fetch(jornadasUrl, {
      headers: { 'Authorization': `Bearer ${access_token}` }
    });

    if (!jornadasResponse.ok) {
      throw new Error(`Request failed: ${jornadasResponse.status}`);
    }

    const data = await jornadasResponse.json();

    // 3. Exibir resultados
    console.log(`\n📊 Total de jornadas: ${data.total}`);
    console.log(`📄 Jornadas nesta página: ${data.itens.length}`);
    console.log('\n📋 Primeiras jornadas:');
    data.itens.slice(0, 5).forEach(jornada => {
      const tipo = jornada.ehJornadaDeTrabalho ? '✅' : '🔄';
      console.log(`  ${tipo} [${jornada.codigo}] ${jornada.nome}${jornada.entrada} às ${jornada.saida}`);
    });

    return data;
  } catch (error) {
    console.error('❌ Erro:', error.message);
  }
}

primeiraRequisicao();

Próximos passos

Parabéns! Você fez sua primeira requisição com sucesso.

Agora explore mais: