Pular para o conteúdo principal
Use estes recursos para autenticação da conta, ciclo de vida da instância e billing. Para sessão WhatsApp, veja Sessão. Para chats, veja Chats. Para envio de mensagens, veja Mensagens.

Auth

client.Auth.GetAccessTokenAsync()

Obtém um JWT usando ClientToken e ClientSecret. O SDK cacheia e renova o token automaticamente.
var token = await client.Auth.GetAccessTokenAsync();
Retorno: string com o JWT de acesso (accessToken de POST /token).

Instâncias e billing

client.Instances.CreateAsync<TResponse>(request)

await client.Instances.CreateAsync<object>(new InstanceCreateRequest
{
    Name = "support",
    Webhook = "https://example.com/webhook",
    EventsSubscribe = new[] { "Message", "Connected" },
});
Retorno: InstancePublicCreateResponseId, Name, token, Url, Webhook, EventsSubscribe, Status, CreatedAt, UpdatedAt.

client.Instances.ListAsync<TResponse>(request?)

await client.Instances.ListAsync<object>(new InstanceListRequest
{
    Page = 1,
    PageSize = 20,
    Search = "support",
});
Retorno: pagina { Page, Size, Total, TotalPages, Content[], Summary }. Cada item de content segue o resumo publico da instancia (Id, Name, Status, etc.).

client.Instances.GetAsync<TResponse>(instanceId)

await client.Instances.GetAsync<object>("VZ...");
Retorno: mesmo formato resumido de um item de Instances.List() (Id, Name, token, Url, Webhook, Status, etc.).

client.Instances.UpdateAsync<TResponse>(instanceId, body, options?)

await client.Instances.UpdateAsync<object>(
    "VZ...",
    new { name = "support-updated" },
    new InstanceRequestOptions { InstanceToken = "instance-token" });
Retorno: instancia atualizada no mesmo formato resumido de Instances.Get().

client.Instances.RestartAsync<TResponse>(instanceId, options?)

await client.Instances.RestartAsync<object>("VZ...", new InstanceRequestOptions
{
    InstanceToken = "instance-token",
});
Retorno: InstanceActionResponseInstanceId, Status, Details.

client.Instances.DeleteAsync<TResponse>(instanceId, options?)

await client.Instances.DeleteAsync<object>("VZ...", new InstanceRequestOptions
{
    InstanceToken = "instance-token",
});
Retorno: corpo vazio em sucesso (204) ou envelope de erro padrao.

client.Instances.SubscribeAsync<TResponse>(instanceId, body?, options?)

await client.Instances.SubscribeAsync<object>(
    "VZ...",
    new { plan = "direct" },
    new InstanceRequestOptions { InstanceToken = "instance-token" });
Retorno: BillingHostedSessionUrl, SessionId, mode (direct ou checkout), SubscriptionId.

client.Instances.ResumeSubscriptionAsync<TResponse>(instanceId, options?)

await client.Instances.ResumeSubscriptionAsync<object>("VZ...", new InstanceRequestOptions
{
    InstanceToken = "instance-token",
});
Retorno: { Status: "ok" }.

client.Instances.CancelAsync<TResponse>(instanceId, options?)

await client.Instances.CancelAsync<object>("VZ...", new InstanceRequestOptions
{
    InstanceToken = "instance-token",
});
Retorno: { Message } confirmando cancelamento ou agendamento.

Chamadas avançadas

Use RequestAsync<TResponse>() quando precisar acessar um campo ou endpoint recém-publicado ainda não encapsulado por um método tipado.
await client.RequestAsync<object>(
    HttpMethod.Post,
    "/instances/VZ.../chat/send/text",
    new VZaps.Http.VZapsRequestOptions
    {
        InstanceToken = "instance-token",
        Body = new { phone = "5511999999999", message = "Olá" },
    });