sparkcrm, alinhada ao OpenAPI do gateway. A árvore de chamadas segue o padrão client.<recurso>.<método>().
Para autenticação, instalação e exemplos iniciais, veja Começar com TypeScript.
Visão geral do cliente
Entrypoints
Canais de entrada configurados na organização (WhatsApp Business, WhatsApp Lite, Instagram, Telegram).client.entrypoints.list(params?)
HTTP: GET /v1/entrypoints
Parâmetro (EntrypointListParams) | Tipo | Descrição |
|---|---|---|
platform | "whatsapp" | "whatsapp_lite" | "instagram" | "telegram" | Filtra por plataforma |
EntrypointListResponse com entrypoints[] (id, name, platform, funnelStepId, displayName?, state? em WhatsApp Lite).
client.entrypoints.retrieve(id)
HTTP: GET /v1/entrypoints/{id}
Retorno: EntrypointRetrieveResponse com entrypoint discriminado por platform (campos extras como isCoexistence no WhatsApp Business, state no Lite).
Forms (formulários)
Formulários de captação publicados com ID público de 16 caracteres. Conceito de produto: Formulários de captação.client.forms.retrieve(id)
HTTP: GET /v1/forms/{id}
Retorno: FormRetrieveResponse — form com name, description, flow (nós e conexões do canvas) e iframeEmbedAllowedOrigins.
client.forms.retrieveEmbedFramePolicy(id)
HTTP: GET /v1/forms/{id}/embed-frame-policy
Retorno: FormRetrieveEmbedFramePolicyResponse — lista de origens HTTPS permitidas para iframe (vazia = sem restrição por origem).
client.forms.submitResponse(id, body)
HTTP: POST /v1/forms/{id}/submit → 201
Campo (FormSubmitResponseParams) | Obrigatório | Descrição |
|---|---|---|
name | sim | Nome do lead |
phone | sim | Telefone (formato aceito pelo backend) |
answers | não | Respostas das perguntas (questionKey + value string ou string[]) |
FormSubmitResponseResponse — submissionId e outcomes[] com platform, leadId, chatId por destino WhatsApp.
Messaging
client.messaging.uploadMedia(body)
HTTP: POST /v1/messaging/media (multipart)
| Campo | Descrição |
|---|---|
files | Array de arquivos (Uploadable: File, Blob, buffer, stream conforme runtime) |
MessagingUploadMediaResponse — array por arquivo: { success: true, id, name, url } ou { success: false, name }.
Use os id retornados em sendMessage (mediaIds ou audioId).
client.messaging.chats.listMessages(chatId, params?)
HTTP: GET /v1/messaging/chats/{chatId}
| Parâmetro | Descrição |
|---|---|
limit | Tamanho da página (1–50; padrão 20) |
cursor | Cursor para mensagens mais antigas |
ChatListMessagesResponse — records[] (mensagem completa com text, type, status, media, sender, etc.) e nextCursor?.
Mensagens vêm mais recentes primeiro.
client.messaging.chats.sendMessage(chatId, body)
HTTP: POST /v1/messaging/chats/{chatId} → 204
Campo (ChatSendMessageParams) | Descrição |
|---|---|
text | Texto da mensagem |
mediaIds | IDs de mídia do upload |
audioId | Áudio único (sem text nem outras mídias) |
replyToId | Responder a uma mensagem |
delay | Atraso em segundos antes do envio |
instagramDelivery | "dm" | "comment_reply" | "private_reply" |
instagramSourceMessageId | ID da mensagem de origem no Instagram |
Enviar modelo de mensagem (templates)
HTTP: POST /v1/messaging/chats/{chatId}/templates → 204
Corpo (espelha SendPublicTemplateBodyDto na API):
| Campo | Obrigatório | Descrição |
|---|---|---|
templateId | sim | ID do modelo no Spark |
commonVariables | não | Variáveis manuais: var1, var2, … |
replyToId | não | Responder em thread |
Novas versões do
sparkcrm podem expor client.messaging.chats.sendTemplate(chatId, body) com o mesmo contrato. Confira o api.md da versão instalada.Tabela rápida de métodos
| Método SDK | Verbo / caminho |
|---|---|
entrypoints.list | GET /v1/entrypoints |
entrypoints.retrieve | GET /v1/entrypoints/{id} |
forms.retrieve | GET /v1/forms/{id} |
forms.retrieveEmbedFramePolicy | GET /v1/forms/{id}/embed-frame-policy |
forms.submitResponse | POST /v1/forms/{id}/submit |
messaging.uploadMedia | POST /v1/messaging/media |
messaging.chats.listMessages | GET /v1/messaging/chats/{chatId} |
messaging.chats.sendMessage | POST /v1/messaging/chats/{chatId} |
| Envio de template | POST /v1/messaging/chats/{chatId}/templates |
Requisições fora do catálogo tipado
O cliente expõeget, post, put, patch, delete com as mesmas opções de retry, timeout e cabeçalhos — útil para endpoints novos antes de uma release do SDK:
// @ts-expect-error ou via query / body / headers explícitos, conforme a documentação avançada.
Tipos principais exportados
Importe desparkcrm ou use o namespace SparkCRM:
| Área | Tipos úteis |
|---|---|
| Entrypoints | EntrypointListResponse, EntrypointRetrieveResponse, EntrypointListParams |
| Forms | FormRetrieveResponse, FormSubmitResponseParams, FormSubmitResponseResponse |
| Messaging | ChatListMessagesResponse, ChatSendMessageParams, MessagingUploadMediaParams, MessagingUploadMediaResponse |
| Webhooks | SparkWebhookBody, MessagesReceivedWebhook, MessagesSentWebhook, ChatsCreatedWebhook |
| Erros | APIError, RateLimitError, AuthenticationError, … |

