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
-
Filtro e Ordenação: Quando você usa filtro e ordenação, ambos devem referenciar o mesmo campo (ou ambos
createdAtou ambosupdatedAt). -
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;
}