API-CRM

Visão Geral

API de Integração para Parceiros - Documentação completa dos endpoints disponíveis para integração de contatos e gerenciamento de tokens.

Contatos:

Termos de Serviço: https://www.pmweb.com.br/


Autenticação

A API utiliza dois tipos de autenticação:

  1. Bearer Authentication (JWT)

  • Usado para endpoints de integração de contatos.

  • Header:

Authorization: Bearer {token}

Endpoints

Criar/Atualizar Contato

Cria ou atualiza um contato através da integração. Se o contato já existir (por Email, Id ou NumPessoa), ele será atualizado. Caso contrário, um novo contato será criado.

  • Endpoint: POST /integration/crm/

  • Autenticação: Bearer Token (JWT)

Request Body

{  

"Id": 0,  "NumPessoa": 0,  

"Email": "string (obrigatório)",  

"Nome": "string",  

"SobreNome": "string",  

"Cidade": "string",  

"Estado": "string",  

"Pais": "string",  

"Telefone": "string",  

"CPF": "string",  

"DiaNascimento": 0,  

"MesNascimento": 0,  

"AnoNascimento": 0,  

"Coringa1": "string",  

"Coringa2": "string",  

"Coringa3": "string",  

"Coringa4": "string",  

"Coringa5": "string", 

"Coringa6": "string",  

"Coringa7": "string",  

"Coringa8": "string",  

"Coringa9": "string",  

"Coringa10": "string",  

"Coringa11": "string",  

"Coringa12": "string",  

"Coringa13": "string",  

"Coringa14": "string",  

"Coringa15": "string",  

"Coringa16": "string",  

"Coringa17": "string",  

"Grupos": [    

   {      

      "Numgrupo": 0    

   }  

],  

"GruposAlternativos": [    

   {      

      "Numgrupo": 0    

   }  

],  

"RecebeEmail": true,  

"PoliticaConsentimento": {    

   "AceitouConsentimento": 0,    

   "NivelConsentimento": "string",    

   "TextoLegal": "string",    

   "Ip": "string",    

   "Navegador": "string",    

   "Origem": "string"  

}

}

Campos Obrigatórios:

  • Email (string, formato email)

  • Grupos (array com pelo menos um grupo)

Campos Opcionais:

  • Id: ID do contato (usado para atualização)

  • NumPessoa: Número da pessoa (usado para atualização)

  • Nome: Nome do contato

  • SobreNome: Sobrenome do contato

  • Cidade: Cidade

  • Estado: Estado/UF

  • Pais: País

  • Telefone: Telefone

  • CPF: CPF

  • DiaNascimento: Dia de nascimento (1-31)

  • MesNascimento: Mês de nascimento (1-12)

  • AnoNascimento: Ano de nascimento

  • Coringa1 a Coringa17: Campos customizados

  • GruposAlternativos: Grupos alternativos para atualização

  • RecebeEmail: Se o contato aceita receber emails (boolean)

  • PoliticaConsentimento: Dados de consentimento LGPD

  • AceitouConsentimento: 0 = Não aceitou, 1 = Aceitou

  • NivelConsentimento: Nível do consentimento (ex: Promocional, Transacional)

  • TextoLegal: Texto legal aceito

  • Ip: IP do usuário (preenchido automaticamente se não fornecido)

  • Navegador: User agent (preenchido automaticamente se não fornecido)

  • Origem: Origem da requisição (preenchido automaticamente se não fornecido)

Responses:

  • 201 Created - Novo contato criado

{  

"message": "Integração realizada.",  

"data": {    

   "Id": 12345,    

   "NumPessoa": 67890,    

   "HASHNUMPESSOA": "abc123def456"  

}

}


  • 200 OK - Contato atualizado

{  

"message": "Integração atualizada.",  

"data": {    

   "Id": 12345,    

   "NumPessoa": 67890,    

   "HASHNUMPESSOA": "abc123def456"  

}

}


  • 400 Bad Request - Dados inválidos

  • 401 Unauthorized - Token inválido ou não fornecido


Consultar Contato

Retorna os dados de um contato através do hash criptografado do NumPessoa. Este hash é retornado ao criar/atualizar um contato.

  • Endpoint: GET /integration/crm/{HASHNUMPESSOA}

  • Autenticação: Bearer Token (JWT)

Path Parameters:

  • HASHNUMPESSOA (string, obrigatório): Hash criptografado do NumPessoa retornado na criação/atualização do contato.

Responses:

  • 200 OK - Dados do contato

{  

"message": "Ok",  

"data": {    

   "Contato": {      

      "Contatos_Empresa_Id": 12345,      

      "Email": "[email protected]",      

      "Nome": "João",      

      "SobreNome": "Silva",      

      "Cidade": "São Paulo",      

      "Estado": "SP",      

      "Pais": "Brasil",      

      "Telefone": "11999999999",      

      "CPF": "12345678900",      

      "DiaNascimento": 15,      

      "MesNascimento": 8,      

      "AnoNascimento": 1990,      

      "RecebeEmail": true,      

      "NumPessoa": 0,      

      "Grupos": [ { 

         "Numgrupo": 123,

         "NomeGrupo": "Newsletter"        

      },        

      {          

         "Numgrupo": 456,          

         "NomeGrupo": "Clientes VIP"        

      }]    

   }  

}

}


  • 400 Bad Request - Hash inválido ou erro ao descriptografar

  • 401 Unauthorized - Token inválido ou não fornecido

  • 404 Not Found - Não existe integração com este identificador


Schemas

Contact

{  

"Id": "number (opcional)",  

"NumPessoa": "number (opcional)",  

"Email": "string (obrigatório, formato email)",  

"Nome": "string",  

"SobreNome": "string",  

"Cidade": "string",  

"Estado": "string",  

"Pais": "string",  

"Telefone": "string",  

"CPF": "string",  

"DiaNascimento": "number (1-31)",  

"MesNascimento": "number (1-12)",  

"AnoNascimento": "number",  

"Grupos": [    

   {      

      "Numgrupo": "number"    

   }  

],  

"RecebeEmail": "boolean",  

"PoliticaConsentimento": {    

   "AceitouConsentimento": "number (0 ou 1)",    

   "NivelConsentimento": "string",    

   "TextoLegal": "string",    

   "Ip": "string",    

   "Navegador": "string",    

   "Origem": "string"  

   }

}


Error

{  

   "message": "string",  

   "error": "string",  

   "data": {}

}



Exemplos de Uso

Exemplo 1: Criar Novo Contato

curl -X POST https://api-pmwebcrm.pmweb.com.br/integration/crm/ \

-H "Authorization: Bearer YOUR_JWT_TOKEN" \

-H "Content-Type: application/json" \

-d '{

  "Email": "[email protected]",

  "Nome": "João",

  "SobreNome": "Silva",

  "Cidade": "São Paulo",

  "Estado": "SP",

  "Pais": "Brasil",

  "Telefone": "11987654321",

  "CPF": "12345678900",

  "DiaNascimento": 15,

  "MesNascimento": 8,

  "AnoNascimento": 1990,

  "Grupos": [

    { "Numgrupo": 123 },

    { "Numgrupo": 456 }

  ],

  "RecebeEmail": true,

  "PoliticaConsentimento": {

    "AceitouConsentimento": 1,

    "NivelConsentimento": "Promocional",

    "TextoLegal": "Aceito receber comunicações promocionais"

  }

}'


Exemplo 2: Atualizar Contato Existente

curl -X POST https://api-pmwebcrm.pmweb.com.br/integration/crm/ \

-H "Authorization: Bearer YOUR_JWT_TOKEN" \

-H "Content-Type: application/json" \

-d '{

  "Id": 12345,

  "Email": "[email protected]",

  "Nome": "João Pedro",

  "SobreNome": "Silva Santos",

  "Telefone": "11999887766",

  "GruposAlternativos": [

    { "Numgrupo": 789 }

  ],

  "RecebeEmail": true

}'


Exemplo 3: Consultar Contato

curl -X GET https://api-pmwebcrm.pmweb.com.br/integration/crm/abc123def456 \

-H "Authorization: Bearer YOUR_JWT_TOKEN"



Notas Importantes

  1. Segurança: O campo NumPessoa sempre retorna 0 nas consultas por motivos de segurança. Use o HASHNUMPESSOA para identificação.

  2. LGPD: Utilize o objeto PoliticaConsentimento para registrar o consentimento do usuário conforme a LGPD.

  3. Grupos: Ao criar um contato, use o campo Grupos. Para atualizar, você pode usar GruposAlternativos.

  4. Campos Customizados: Os campos Coringa1 a Coringa17 podem ser usados para armazenar informações customizadas específicas da sua integração.

  5. Atualização: Para atualizar um contato, forneça o Id, NumPessoa ou Email do contato existente.

© 2026 Letsbook. Todos os direitos reservados.

Powered by