Skip to main content

Guia de Uso: Endpoint de Listagem Paginada de Talentos

Funcionalidades Principais​

Paginação​

O endpoint suporta paginação através do parâmetro exclusiveStartKey. Quando você recebe uma resposta, ela inclui um valor exclusiveStartKey que você deve usar na próxima requisição para obter a próxima pÔgina de resultados. Quando este valor for null, significa que você chegou ao final da lista.

Ordenação​

Você pode ordenar os talentos por data de criação (createdAt) ou data de atualização (updatedAt), em ordem crescente ou decrescente.

Filtragem​

Você pode filtrar talentos com base em uma data mínima de criação ou atualização.

Formato de Data​

Todas as datas (updatedAt e createdAt) devem seguir o formato ISO 8601: YYYY-MM-DDTHH:mm:ss.sssZ. Por exemplo: 2025-04-15T10:30:00.000Z

Como Usar​

Exemplo de Requisição​

{
"orderBy": {
"field": "updatedAt",
"direction": "desc"
},
"filter": {
"updatedAt": "2024-04-10T00:00:00.000Z"
}
}

Esta requisição retornarÔ talentos atualizados após 10 de abril de 2024, ordenados do mais recente para o mais antigo.

Exemplo de Resposta​

{
"items": [
{
"id": "123",
"name": "João Silva",
"email": "joao@exemplo.com",
"updatedAt": "2024-04-15T10:30:00.000Z",
"createdAt": "2024-03-20T08:15:00.000Z"
},
{
"id": "456",
"name": "Maria Santos",
"email": "maria@exemplo.com",
"updatedAt": "2024-04-12T14:45:00.000Z",
"createdAt": "2024-02-05T11:20:00.000Z"
}
],
"exclusiveStartKey": {
"tenantId": "empresa123",
"updatedAt": "2024-04-12T14:45:00.000Z",
"id": "456"
},
"orderBy": {
"field": "updatedAt",
"direction": "desc"
},
"filter": {
"updatedAt": "2024-04-10T00:00:00.000Z"
}
}

Paginação​

Para obter a próxima pÔgina, use o valor de exclusiveStartKey da resposta anterior:

{
"exclusiveStartKey": {
"tenantId": "empresa123",
"updatedAt": "2024-04-12T14:45:00.000Z",
"id": "456"
},
"orderBy": {
"field": "updatedAt",
"direction": "desc"
},
"filter": {
"updatedAt": "2024-04-10T00:00:00.000Z"
}
}

Regras Importantes​

  1. Filtro e Ordenação: Quando você usa filtro e ordenação, ambos devem referenciar o mesmo campo (ou ambos createdAt ou ambos updatedAt).

  2. Consistência: Mantenha os mesmos parâmetros de ordenação e filtro ao navegar entre pÔginas.

Exemplo de Implementação​

Aqui estƔ um exemplo de como consumir o endpoint atƩ que todas as pƔginas sejam recuperadas:

async function listAllTalents() {
const allTalents = [];
let exclusiveStartKey = null;

do {
const response = await fetch('/talents/paginated', {
method: 'POST',
headers: {
authorization: 'Bearer {{token}}',
'Content-Type': 'application/json'
},
body: JSON.stringify({
exclusiveStartKey,
orderBy: {
field: 'updatedAt',
direction: 'desc'
},
filter: {
updatedAt: '2024-04-10T00:00:00.000Z'
}
})
});

const data = await response.json();
allTalents.push(...data.items);
exclusiveStartKey = data.exclusiveStartKey;
} while (exclusiveStartKey !== null);

return allTalents;
}