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
createdAt
ou 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;
}