{"openapi":"3.0.3","info":{"title":"Vensy Public API","description":"API server-to-server para mensagens WhatsApp e gerenciamento do CRM, autenticada por API key.","version":"1.0.0"},"components":{"securitySchemes":{"sessionCookie":{"type":"apiKey","in":"cookie","name":"vensy.session_token"},"bearerApiKey":{"type":"http","scheme":"bearer","bearerFormat":"vsk_live_...","description":"API key criada no workspace; o tenant é derivado da chave."}},"schemas":{}},"paths":{"/api/v1/messages/":{"post":{"operationId":"sendApiMessage","summary":"Envia uma mensagem WhatsApp","tags":["Public API"],"description":"Aceita texto, mídia, localização ou template e autentica com uma API key Vensy.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["to"],"properties":{"to":{"type":"string","minLength":5,"maxLength":32,"description":"Telefone de destino em E.164."},"channelCode":{"type":"string","minLength":1,"maxLength":80,"description":"Código do canal. Quando omitido, a Vensy escolhe um cartucho apto pela rotação."},"type":{"type":"string","enum":["text","image","audio","video","document","location","TEXT","IMAGE","AUDIO","VIDEO","DOCUMENT","LOCATION"],"default":"text","description":"Tipo da mensagem. Valores em maiúsculas também são aceitos."},"text":{"type":"string","minLength":1,"maxLength":4096},"caption":{"type":"string","minLength":1,"maxLength":4096},"mediaUrl":{"type":"string","format":"uri"},"mediaBase64":{"type":"string","minLength":1,"description":"Conteúdo Base64 sem o prefixo data:."},"mediaMimeType":{"type":"string","minLength":1,"maxLength":255},"mediaFileName":{"type":"string","minLength":1,"maxLength":255},"location":{"type":"object","additionalProperties":false,"required":["latitude","longitude"],"properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"name":{"type":"string","minLength":1,"maxLength":120},"address":{"type":"string","minLength":1,"maxLength":300}}},"template":{"type":"object","additionalProperties":false,"description":"Identifique o template por id ou pelo par name + language. A API rejeita seletores incompletos.","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":512},"language":{"type":"string","minLength":1,"maxLength":32}},"anyOf":[{"required":["id"]},{"required":["name","language"]}]},"bodyVariables":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":1024},"description":"Variáveis do corpo na ordem {{1}}, {{2}}, … do template aprovado."},"headerParameter":{"oneOf":[{"type":"object","additionalProperties":false,"required":["kind","text"],"properties":{"kind":{"type":"string","enum":["text"]},"text":{"type":"string","minLength":1,"maxLength":1024}}},{"type":"object","additionalProperties":false,"required":["kind","format"],"properties":{"kind":{"type":"string","enum":["media"]},"format":{"type":"string","enum":["IMAGE","VIDEO","DOCUMENT"]},"url":{"type":"string","minLength":1,"format":"uri"},"mediaBase64":{"type":"string","minLength":1},"mimeType":{"type":"string","minLength":1},"fileName":{"type":"string","minLength":1}},"anyOf":[{"required":["url"]},{"required":["mediaBase64"]}]}]},"buttonParameters":{"type":"array","maxItems":10,"items":{"type":"object","additionalProperties":false,"required":["index","subType","value"],"properties":{"index":{"type":"integer","minimum":0},"subType":{"type":"string","enum":["url","copy_code"]},"value":{"type":"string","minLength":1,"maxLength":2048}}}}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":false,"description":"Chave única por operação. Repetir a mesma chave devolve o resultado original sem duplicar o disparo."},{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"x-idempotency-key","required":false,"description":"Alias legado de Idempotency-Key."},{"schema":{"type":"string","enum":["respond-async"]},"in":"header","name":"prefer","required":false,"description":"Use respond-async para persistir o disparo e receber 202 sem aguardar o provedor."}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["messageId","providerMessageId","outreachId","firingChannelId","conversationId","status","createdAt","idempotencyReplayed","apiKeyId"],"properties":{"messageId":{"type":"string","nullable":true},"providerMessageId":{"type":"string","nullable":true},"outreachId":{"type":"string"},"firingChannelId":{"type":"string"},"conversationId":{"type":"string","nullable":true},"status":{"type":"string","enum":["sent","queued"]},"createdAt":{"type":"string","format":"date-time"},"idempotencyReplayed":{"type":"boolean"},"apiKeyId":{"type":"string"}}}}}},"202":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["messageId","providerMessageId","outreachId","firingChannelId","conversationId","status","createdAt","idempotencyReplayed","apiKeyId"],"properties":{"messageId":{"type":"string","nullable":true},"providerMessageId":{"type":"string","nullable":true},"outreachId":{"type":"string"},"firingChannelId":{"type":"string"},"conversationId":{"type":"string","nullable":true},"status":{"type":"string","enum":["sent","queued"]},"createdAt":{"type":"string","format":"date-time"},"idempotencyReplayed":{"type":"boolean"},"apiKeyId":{"type":"string"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}}}}},"/api/v1/messages/template":{"post":{"operationId":"sendApiTemplateMessage","summary":"Envia um template WhatsApp Oficial","tags":["Public API"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["to","template"],"properties":{"to":{"type":"string","minLength":5,"maxLength":32,"description":"Telefone de destino em E.164."},"channelCode":{"type":"string","minLength":1,"maxLength":80,"description":"Código de um canal WhatsApp Cloud ativo."},"template":{"type":"object","additionalProperties":false,"description":"Identifique o template por id ou pelo par name + language. A API rejeita seletores incompletos.","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":512},"language":{"type":"string","minLength":1,"maxLength":32}},"anyOf":[{"required":["id"]},{"required":["name","language"]}]},"bodyVariables":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":1024},"description":"Variáveis do corpo na ordem {{1}}, {{2}}, … do template aprovado."},"headerParameter":{"oneOf":[{"type":"object","additionalProperties":false,"required":["kind","text"],"properties":{"kind":{"type":"string","enum":["text"]},"text":{"type":"string","minLength":1,"maxLength":1024}}},{"type":"object","additionalProperties":false,"required":["kind","format"],"properties":{"kind":{"type":"string","enum":["media"]},"format":{"type":"string","enum":["IMAGE","VIDEO","DOCUMENT"]},"url":{"type":"string","minLength":1,"format":"uri"},"mediaBase64":{"type":"string","minLength":1},"mimeType":{"type":"string","minLength":1},"fileName":{"type":"string","minLength":1}},"anyOf":[{"required":["url"]},{"required":["mediaBase64"]}]}]},"buttonParameters":{"type":"array","maxItems":10,"items":{"type":"object","additionalProperties":false,"required":["index","subType","value"],"properties":{"index":{"type":"integer","minimum":0},"subType":{"type":"string","enum":["url","copy_code"]},"value":{"type":"string","minLength":1,"maxLength":2048}}}}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":false,"description":"Chave única por operação. Repetir a mesma chave devolve o resultado original sem duplicar o disparo."},{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"x-idempotency-key","required":false,"description":"Alias legado de Idempotency-Key."},{"schema":{"type":"string","enum":["respond-async"]},"in":"header","name":"prefer","required":false,"description":"Use respond-async para persistir o disparo e receber 202 sem aguardar o provedor."}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["messageId","providerMessageId","conversationId","outreachId","firingChannelId","templateName","language","status","createdAt","idempotencyReplayed","apiKeyId"],"properties":{"messageId":{"type":"string","nullable":true},"providerMessageId":{"type":"string","nullable":true},"conversationId":{"type":"string","nullable":true},"outreachId":{"type":"string","nullable":true},"firingChannelId":{"type":"string"},"templateName":{"type":"string"},"language":{"type":"string"},"status":{"type":"string","enum":["sent","queued"]},"createdAt":{"type":"string","format":"date-time"},"idempotencyReplayed":{"type":"boolean"},"apiKeyId":{"type":"string"}}}}}},"400":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"409":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"422":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"502":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}}}}},"/api/v1/messages/{id}":{"get":{"operationId":"getApiMessageStatus","summary":"Consulta o status de entrega de uma mensagem enviada","tags":["Public API"],"parameters":[{"schema":{"type":"string","minLength":1},"in":"path","name":"id","required":true,"description":"ID da mensagem no provedor retornado no envio."}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["providerMessageId","conversationId","contentType","direction","ack","ackName","status","error","createdAt"],"properties":{"providerMessageId":{"type":"string"},"conversationId":{"type":"string","nullable":true},"contentType":{"type":"string","enum":["TEXT","IMAGE","AUDIO","VIDEO","DOCUMENT","LOCATION"]},"direction":{"type":"string","enum":["OUTBOUND"]},"ack":{"type":"integer","nullable":true},"ackName":{"type":"string","nullable":true},"error":{"type":"string","nullable":true},"status":{"type":"string","enum":["sent","delivered","read","failed"]},"createdAt":{"type":"string","format":"date-time"}}}}}},"401":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"403":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"404":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"429":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"500":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}},"503":{"description":"Default Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["code","error"],"properties":{"code":{"type":"string","description":"Código estável e legível por máquina."},"error":{"type":"string","description":"Mensagem de erro destinada a diagnóstico."},"details":{"description":"Contexto adicional quando disponível.","type":"object","additionalProperties":true,"nullable":true}}}}}}}}},"/api/v1/integrations/crm/leads":{"post":{"operationId":"intakeCrmLead","summary":"Cadastra contato e negócio idempotentemente","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"required":["source","externalId","phoneE164","pipelineId","pipelineStageId"],"properties":{"source":{"type":"string","minLength":1,"maxLength":100},"externalId":{"type":"string","minLength":1,"maxLength":200},"phoneE164":{"type":"string","minLength":1,"maxLength":40},"pipelineId":{"type":"string","minLength":1,"maxLength":200},"pipelineStageId":{"type":"string","minLength":1,"maxLength":200},"ownerMembershipId":{"type":"string","minLength":1,"maxLength":200},"tagId":{"type":"string","minLength":1,"maxLength":200},"matchPolicy":{"type":"string","enum":["reuse-open","new-opportunity"]},"title":{"type":"string","minLength":1,"maxLength":200},"customName":{"type":"string","maxLength":500},"companyName":{"type":"string","maxLength":500},"jobTitle":{"type":"string","maxLength":500},"cityName":{"type":"string","maxLength":500},"stateCode":{"type":"string","maxLength":500},"countryCode":{"type":"string","maxLength":500},"leadSource":{"type":"string","maxLength":500},"email":{"type":"string","format":"email"},"notes":{"type":"string","maxLength":20000}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/contacts":{"get":{"operationId":"publicCrmListContacts","summary":"Lista contatos do CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","parameters":[{"schema":{"type":"string"},"in":"query","name":"cursor","required":false},{"schema":{"type":"integer","minimum":1,"maximum":100},"in":"query","name":"limit","required":false},{"schema":{"type":"string","maxLength":200},"in":"query","name":"q","required":false},{"schema":{"type":"string","enum":["true","false"]},"in":"query","name":"archived","required":false},{"schema":{"type":"string","format":"date-time"},"in":"query","name":"updatedAfter","required":false},{"schema":{"type":"string"},"in":"query","name":"phoneE164","required":false},{"schema":{"type":"string","format":"email","maxLength":254},"in":"query","name":"email","required":false},{"schema":{"type":"string"},"in":"query","name":"tagId","required":false}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}},"post":{"operationId":"publicCrmCreateContact","summary":"Cria um contato no CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["phoneE164"],"properties":{"phoneE164":{"type":"string"},"ownerEmail":{"type":"string","format":"email"},"customName":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"companyName":{"anyOf":[{"type":"string"},{"type":"null"}]},"companyId":{"anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}]},"leadSource":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelineStageId":{"type":"string"},"tagIds":{"type":"array","maxItems":50,"items":{"type":"string"}},"customFields":{"type":"object","additionalProperties":true}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/contacts/{id}":{"get":{"operationId":"publicCrmGetContact","summary":"Obtém um contato do CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"operationId":"publicCrmArchiveContact","summary":"Arquiva um contato no CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}},"patch":{"operationId":"publicCrmUpdateContact","summary":"Atualiza um contato no CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"customName":{"anyOf":[{"type":"string"},{"type":"null"}]},"email":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"companyName":{"anyOf":[{"type":"string"},{"type":"null"}]},"companyId":{"anyOf":[{"type":"string"},{"type":"null"}]},"jobTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"birthday":{"anyOf":[{"type":"string"},{"type":"null"}]},"leadSource":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelineStageId":{"type":"string"},"tagIds":{"type":"array","maxItems":50,"items":{"type":"string"}},"customFields":{"type":"object","additionalProperties":true}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/contacts/{id}/restore":{"post":{"operationId":"publicCrmRestoreContact","summary":"Restaura um contato arquivado","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/contacts/{id}/tags":{"put":{"operationId":"publicCrmReplaceContactTags","summary":"Substitui as tags de um contato","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["tagIds"],"properties":{"tagIds":{"type":"array","maxItems":50,"items":{"type":"string"}}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/contacts/{id}/custom-fields":{"put":{"operationId":"publicCrmReplaceContactCustomFields","summary":"Atualiza campos personalizados por chave","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["values"],"properties":{"values":{"type":"object","additionalProperties":true}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/companies":{"get":{"operationId":"publicCrmListCompanies","summary":"Lista empresas do CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}},"post":{"operationId":"publicCrmCreateCompany","summary":"Cria uma empresa no CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["name"],"properties":{"name":{"type":"string"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}]},"website":{"anyOf":[{"type":"string"},{"type":"null"}]},"industry":{"anyOf":[{"type":"string"},{"type":"null"}]},"employeeRange":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"customFields":{"type":"object","additionalProperties":true}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/companies/{id}":{"get":{"operationId":"publicCrmGetCompany","summary":"Obtém uma empresa do CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"operationId":"publicCrmArchiveCompany","summary":"Arquiva uma empresa no CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}},"patch":{"operationId":"publicCrmUpdateCompany","summary":"Atualiza uma empresa no CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"name":{"type":"string"},"domain":{"anyOf":[{"type":"string"},{"type":"null"}]},"website":{"anyOf":[{"type":"string"},{"type":"null"}]},"industry":{"anyOf":[{"type":"string"},{"type":"null"}]},"employeeRange":{"anyOf":[{"type":"string"},{"type":"null"}]},"city":{"anyOf":[{"type":"string"},{"type":"null"}]},"state":{"anyOf":[{"type":"string"},{"type":"null"}]},"country":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]},"customFields":{"type":"object","additionalProperties":true}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/companies/{id}/restore":{"post":{"operationId":"publicCrmRestoreCompany","summary":"Restaura uma empresa arquivada","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/companies/{id}/custom-fields":{"put":{"operationId":"publicCrmReplaceCompanyCustomFields","summary":"Atualiza campos personalizados de uma empresa","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["values"],"properties":{"values":{"type":"object","additionalProperties":true}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/deals":{"get":{"operationId":"publicCrmListDeals","summary":"Lista negócios do CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}},"post":{"operationId":"publicCrmCreateDeal","summary":"Cria um negócio no CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["pipelineId","title","contactId"],"properties":{"pipelineId":{"type":"string"},"pipelineStageId":{"type":"string"},"title":{"type":"string"},"valueMinor":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"currency":{"type":"string","minLength":3,"maxLength":3},"contactId":{"type":"string"},"ownerMembershipId":{"type":"string"},"expectedCloseAt":{"type":"string","format":"date-time"}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/deals/{id}":{"get":{"operationId":"publicCrmGetDeal","summary":"Obtém um negócio do CRM","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"responses":{"200":{"description":"Default Response"}}},"patch":{"operationId":"publicCrmUpdateDeal","summary":"Atualiza um negócio com locking otimista","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"minProperties":1,"properties":{"title":{"type":"string"},"valueMinor":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}]},"ownerMembershipId":{"anyOf":[{"type":"string"},{"type":"null"}]},"pipelineId":{"type":"string"},"pipelineStageId":{"type":"string"},"expectedCloseAt":{"anyOf":[{"type":"string"},{"type":"null"}]}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/deals/{id}/won":{"post":{"operationId":"publicCrmWinDeal","summary":"Marca um negócio como ganho","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"lostReason":{"type":"string"},"pipelineId":{"type":"string"},"pipelineStageId":{"type":"string"}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/deals/{id}/lost":{"post":{"operationId":"publicCrmLoseDeal","summary":"Marca um negócio como perdido","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"lostReason":{"type":"string"},"pipelineId":{"type":"string"},"pipelineStageId":{"type":"string"}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/deals/{id}/reopen":{"post":{"operationId":"publicCrmReopenDeal","summary":"Reabre um negócio","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"lostReason":{"type":"string"},"pipelineId":{"type":"string"},"pipelineStageId":{"type":"string"}}}}}},"parameters":[{"schema":{"type":"string","minLength":8,"maxLength":128},"in":"header","name":"idempotency-key","required":true},{"schema":{"type":"string"},"in":"path","name":"id","required":true}],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/crm/configuration":{"get":{"operationId":"publicCrmGetConfiguration","summary":"Lista pipelines, tags e campos personalizados","tags":["CRM Integration"],"description":"O workspace é derivado da API key. Escritas exigem Idempotency-Key.","security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/webhooks/endpoints/":{"get":{"operationId":"listWebhookEndpointsApiKey","summary":"Lista os endpoints de webhook do workspace","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}},"post":{"operationId":"createWebhookEndpointApiKey","summary":"Cria um endpoint de webhook de saída","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/webhooks/endpoints/{endpointId}":{"get":{"operationId":"getWebhookEndpointApiKey","summary":"Detalhe de um endpoint de webhook","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"endpointId","required":true}],"responses":{"200":{"description":"Default Response"}}},"delete":{"operationId":"deleteWebhookEndpointApiKey","summary":"Exclui um endpoint de webhook","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"endpointId","required":true}],"responses":{"200":{"description":"Default Response"}}},"patch":{"operationId":"updateWebhookEndpointApiKey","summary":"Atualiza URL, descrição, eventos, headers ou status","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"endpointId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/webhooks/endpoints/{endpointId}/regenerate-secret":{"post":{"operationId":"regenerateWebhookSecretApiKey","summary":"Regenera o segredo do endpoint (invalida o anterior)","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"endpointId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/webhooks/endpoints/{endpointId}/test":{"post":{"operationId":"sendWebhookTestEventApiKey","summary":"Envia um evento de teste assinado para o endpoint","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"endpointId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/webhooks/endpoints/{endpointId}/enable":{"post":{"operationId":"enableWebhookEndpointApiKey","summary":"Reativa um endpoint DISABLED_FAILING","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"endpointId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/webhooks/endpoints/{endpointId}/deliveries":{"get":{"operationId":"listWebhookDeliveriesApiKey","summary":"Log de entregas do endpoint","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"endpointId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/webhooks/deliveries/{deliveryId}":{"get":{"operationId":"getWebhookDeliveryApiKey","summary":"Detalhe de uma entrega, com as tentativas","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"deliveryId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/webhooks/deliveries/{deliveryId}/resend":{"post":{"operationId":"resendWebhookDeliveryApiKey","summary":"Reenvia uma entrega (reusa o corpo gravado)","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"parameters":[{"schema":{"type":"string"},"in":"path","name":"deliveryId","required":true}],"responses":{"200":{"description":"Default Response"}}}},"/api/v1/integrations/webhooks/event-types/":{"get":{"operationId":"listWebhookEventTypesApiKey","summary":"Catálogo dos tipos de evento disponíveis","tags":["Webhooks"],"security":[{"bearerApiKey":[]}],"responses":{"200":{"description":"Default Response"}}}}},"servers":[{"url":"https://vensy.com.br","description":"Produção"}],"tags":[{"name":"Public API","description":"Integrações server-to-server autenticadas por API key"},{"name":"CRM Integration","description":"Gerenciamento público de contatos, empresas e negócios"}]}