Saltar para a documentação
C#

Paginação

Uma página, todas as páginas ou um item de cada vez.

Uma página

page.cs
var page = await client.Threads.ListAsync(folder: "inbox", limit: 25); foreach (var thread in page){    Console.WriteLine(thread["id"]);} if (page.HasMore){    var next = await client.Threads.ListAsync(folder: "inbox", limit: 25, cursor: page.NextCursor);     Console.WriteLine(next.Count);}

Um método ListAsync devolve uma Page com Items, HasMore e NextCursor, e foreach percorre os seus itens. Volte a passar NextCursor como cursor:, com os mesmos filtros, para ler a página seguinte.

Todas as páginas

all.cs
var failed = await client.Emails.ListAllAsync(status: new[] { "failed" }); Console.WriteLine($"{failed.Count} messages failed");

Um método ListAllAsync segue o cursor até ao fim e devolve todos os itens numa única lista. Uma falha em qualquer página faz falhar a chamada inteira.

Um item de cada vez

iterate.cs
await foreach (var contact in client.Contacts.IterateAsync(limit: 100)){    if ((string?)contact["email"] == "[email protected]")    {        break;    }} await foreach (var entry in client.Emails.IterateEventsAsync("msg_3f9a1c07d2b84e6a9c5b1f20")){    Console.WriteLine(entry["type"]);}

Um método IterateAsync devolve um IAsyncEnumerable<JsonObject>, que só pede a página seguinte quando o ciclo lá chega, por isso um break interrompe os pedidos. Cada lista paginada tem os três, com o nome da lista que percorrem: ListAllEventsAsync e IterateEventsAsync ao lado de ListEventsAsync.

Um percurso para quando a API repete um cursor que já seguiu, por isso nunca pode andar às voltas sem fim.