Perfil
Oclient.profile (WaProfileCoordinator) lê e grava campos de perfil da sua conta e os consulta para terceiros.
Foto de perfil
getProfilePicture(jid, type?, existingId?) retorna um WaProfilePictureResult — { url?, directPath?, id?, type? }. O segundo argumento escolhe entre a variante compacta 'preview' (default) e o original em alta resolução 'image'; ambos vêm no mesmo envelope, só os bytes por trás de url / directPath diferem. Passe o existingId cacheado para o servidor fazer short-circuit quando a foto não mudou (o resultado então volta sem o novo url/directPath).
Recado / texto de status
Push name
OpushName é o nome de exibição que os contatos veem para a sua conta em chats e listas de participantes de grupo. A mudança é aplicada às credenciais locais imediatamente (então client.getCredentials()?.pushName já reflete o novo valor) e é roteada por uma mutação de app-state; os contatos veem o novo nome na sua próxima mensagem enviada.
Modo temporário padrão
OsetDisappearingMode define a duração padrão de modo temporário aplicada a novos chats 1:1 iniciados por você. Chats existentes mantêm a configuração por chat.
Consultas em lote
Checar se um número está no WhatsApp
Resolva números de telefone para o LID e descubra se cada um está registrado no WhatsApp:Nomes de usuário
setUsername, setUsernameKey e resolveUsername rodam as mesmas regras locais que o WhatsApp aplica (comprimento, caracteres permitidos, formato de 4 dígitos para a chave) e lançam em falha antes de bater na rede — uma chamada que retorna sem lançar passou pela validação local, então um setUsername que retorna false estreita a causa a uma resposta do servidor (em uso, rate-limited).
Resolva um handle para o LID com resolveUsername. O resultado é uma union discriminada: 'found' traz o JID (mais isBusiness / pnJid quando aplicável), 'key-required' significa que o servidor reteve o JID até você fornecer a chave de 4 dígitos, e 'not-found' é terminal.
Privacidade
Oclient.privacy (WaPrivacyCoordinator) controla as categorias de privacidade e a lista de bloqueios.
Configurações de privacidade
WA_PRIVACY_SETTING_TO_CATEGORY, valores permitidos por setting em WA_PRIVACY_SETTING_VALUES — cada setting aceita apenas os valores que o WhatsApp Web aceita para ele. A lista completa: lastSeen, online, profilePicture, about, readReceipts, groupAdd, callAdd, messages, defenseMode, linkedProfiles, pix.
linkedProfilescontrola quem pode ver os perfis do Accounts Center vinculados a esta conta. Aceita os mesmos valores de visibilidade quelastSeen/profilePicture('all' | 'contacts' | 'contact_blacklist' | 'none'), deny-list incluída.pixcontrola quem pode ver a chave Pix no perfil (surface de pagamentos, só Brasil). Mesmos valores de visibilidade quelastSeen.
setPrivacySetting retorna o dhash que o servidor ecoa — o carimbo de versão da disallowed list dessa categoria, presente apenas enquanto a categoria estiver em 'contact_blacklist' (null caso contrário). Definir uma categoria como 'contact_blacklist' aqui apenas alterna o modo; popule a lista com setDisallowedList.
Lista de bloqueios
WaBlocklistResult agora carrega entries: readonly WaPrivacyListEntry[] ao lado de jids — mesma composição, com um handle username?: string por entrada, preenchido apenas quando o servidor identificou a entrada assim. Escritas de block / unblock conseguem endereçar um contato migrado por username ou display_name (a entrada resolve pelo mesmo caminho de lookup de identificador), em vez de cair no fallback unknown_identifier.
Listas de exceção
Para configurações escopadas a uma lista específica de contatos (por exemplo, “compartilhar com todos, exceto…”):setDisallowedList(category, input) carrega a mudança de modo e as entradas em uma única stanza (o servidor não tem endpoint separado para deny-list). Inputs aceitam phone jids, LID jids ou números puros e são resolvidos para as duas formas de endereçamento, do mesmo modo que blockUser. Um contato migrado pode ser endereçado por username ou display_name (via a resolução de identificador da própria entrada) em vez de cair no fallback unknown_identifier. O write é versionado por um dhash lido logo antes do envio; se outro device mutou a lista no meio, o servidor responde 409 e a chamada refetch o carimbo e retenta uma vez. As categorias elegíveis são expostas em WA_PRIVACY_DISALLOWED_LIST_CATEGORIES (about, groupAdd, lastSeen, profilePicture, linkedProfiles, pix).
O WaPrivacyDisallowedListResult espelha o WaBlocklistResult: entries: readonly WaPrivacyListEntry[] acompanha jids com a mesma composição, adicionando um username?: string por entrada quando o servidor identificou a entrada assim.
Reagindo a mudanças em outros devices
Uma mudança de privacidade feita no primário (ou em outro companion) aparece no eventoprivacy com o conjunto inteiro de categorias já atualizado, mais qualquer disallowed list que o servidor reportou como alterada. Os valores vêm de uma leitura fresca — nunca do payload da notificação — e uma rajada de mudanças no celular colapsa em um único evento, debounced 1s.
client.privacy.refreshFromAccountSync() para forçar um refresh você mesmo — o resultado é tanto retornado quanto re-emitido como evento privacy, então a view do client fica consistente independentemente de quem disparou. Chamadas concorrentes são deduplicadas.
Business
Oclient.business (WaBusinessCoordinator) lê perfis business e nomes verificados, e gerencia o seu próprio perfil business.
Conta business — necessária para editar seu próprio perfil ou foto de capa; os métodos de leitura funcionam para qualquer conta.
Business hours tipados
WaBusinessHoursDay e WaBusinessHoursMode são aliases de union ('sun' | 'mon' | …, 'open_24h' | 'specific_hours' | 'appointment_only'). Os valores também estão congelados em WA_BUSINESS_HOURS_DAYS e WA_BUSINESS_HOURS_MODES. Passar um mode desconhecido para editBusinessProfile agora lança um erro local claro em vez de o servidor responder 406 not-acceptable — dias fechados continuam sendo expressos omitindo-os da config, não por um mode dedicado.
Configurações de chat
As configurações por chat — silenciar, fixar, arquivar, lido, lock, favoritar, limpar, excluir — ficam emclient.chat e sincronizam entre seus dispositivos. Elas têm um guia próprio:
Gerenciando chats
Silencie, fixe, arquive, marque como lido, trave, favorite mensagens, limpe e exclua chats.
