Parte 2
Quando um lead preencher o formulário do nosso site, quero que isso crie uma empresa/pessoa com nome, email, telefone e a origem "Site". Também precisa gerar um novo negócio na 1a etapa para um vendedor aleatório
1. POST https://api.agendor.com.br/v3/organizations
{
"name": "Acme (Nome da Empresa)",
"ownerUser": 39970
}
Lembre-se de definir o header:
Content-type
com o valor:
application/json
O status code da resposta indica onde o problema está
Cliente enviou valores inválidos na requisição
Erro interno no servidor (provável bug na API)
{
"name": "William 2 (Nome da Pessoa)",
"leadOrigin": 9,
"userOwner": 70,
"category": 16,
"organization": 14166719,
"contact": {
"email": "lead@example.com",
"work": "(11) 98877-4455"
}
}
2. POST https://api.agendor.com.br/v3/people
GET https://api.agendor.com.br/v3/users
GET https://api.agendor.com.br/v3/lead_origins
Dica: Dá pra duplicar abas no Postman clicando com o botão direito na aba > Duplicate Tab
Assim, a nova aba já terá os headers Authorization e Content-Type
3. POST https://api.agendor.com.br/v3/people/{ID}/deals
{
"title": "Consultoria Enterprise",
"userOwner": 70,
"dealStage": 1
}
Quando um lead preencher o formulário do nosso site, quero que isso crie uma pessoa com nome, email, telefone e uma tarefa do tipo ligação para o vendedor responsável desse lead
Ah, tem lead que preenche o formulário mais de uma vez. Eles não podem ser duplicados no Agendor, ok?
{
"data": [
{
"id": 14324757,
"name": "William (Nome da Pessoa)",
"organization": {
"id": 8954650,
"name": "Acme (Nome da Empresa)"
},
"cpf": null,
"role": null,
"ranking": 0,
"description": null,
"birthday": null,
"avatar": null,
"createdAt": "2017-07-06T10:07:36.000Z",
"updatedAt": "2018-06-15T09:08:28.000Z",
"products": [],
"contact": {
"email": "lead@example.com",
"work": "(11) 3232-8080",
"mobile": "(11) 98877-4455",
"fax": null,
"ramal": null,
"radio": null,
"whatsapp": "+55 11 98888-7777",
"facebook": null,
"twitter": null,
"linkedIn": null,
"skype": null,
"instagram": null
},
"address": {
"country": null,
"district": null,
"streetName": null,
"streetNumber": null,
"additionalInfo": null,
"postalCode": null,
"state": null,
"city": null
},
"category": null,
"leadOrigin": {
"id": 9,
"name": "Site"
},
"author": {
"id": 70,
"name": "Tulio"
},
"ownerUser": {
"id": 39970,
"name": "T"
}
},
{
"id": 14328403,
"name": "William (Nome da Pessoa)",
"organization": {
"id": 8954650,
"name": "Acme (Nome da Empresa)"
},
"cpf": null,
"role": null,
"ranking": 0,
"description": null,
"birthday": null,
"avatar": null,
"createdAt": "2017-07-06T14:38:28.000Z",
"updatedAt": "2018-05-18T20:41:30.000Z",
"products": [],
"contact": {
"email": "lead@example.com",
"work": null,
"mobile": "(11) 98877-4455",
"fax": null,
"ramal": null,
"radio": null,
"whatsapp": null,
"facebook": null,
"twitter": null,
"linkedIn": null,
"skype": null,
"instagram": null
},
"address": {
"country": null,
"district": null,
"streetName": null,
"streetNumber": null,
"additionalInfo": null,
"postalCode": null,
"state": null,
"city": null
},
"category": null,
"leadOrigin": {
"id": 9,
"name": "Site"
},
"author": {
"id": 70,
"name": "Tulio"
},
"ownerUser": {
"id": 39970,
"name": "T"
}
},
{
"id": 14329441,
"name": "Rafael (Nome da Pessoa)",
"organization": {
"id": 8959072,
"name": "R Sports (Nome da Empresa)"
},
"cpf": null,
"role": null,
"ranking": 0,
"description": null,
"birthday": null,
"avatar": null,
"createdAt": "2017-07-06T16:28:20.000Z",
"updatedAt": "2018-06-11T19:42:47.000Z",
"products": [],
"contact": {
"email": "lead@example.com",
"work": null,
"mobile": "(11) 98877-4455",
"fax": null,
"ramal": null,
"radio": null,
"whatsapp": null,
"facebook": null,
"twitter": null,
"linkedIn": null,
"skype": null,
"instagram": null
},
"address": {
"country": null,
"district": null,
"streetName": null,
"streetNumber": null,
"additionalInfo": null,
"postalCode": null,
"state": null,
"city": null
},
"category": null,
"leadOrigin": {
"id": 9,
"name": "Site"
},
"author": {
"id": 39970,
"name": "T"
},
"ownerUser": {
"id": 70,
"name": "Tulio"
}
},
{
"id": 14329470,
"name": "Rafael (Nome da Pessoa)",
"organization": {
"id": 8959072,
"name": "R Sports (Nome da Empresa)"
},
"cpf": null,
"role": null,
"ranking": 0,
"description": null,
"birthday": null,
"avatar": null,
"createdAt": "2017-07-06T16:31:16.000Z",
"updatedAt": "2018-06-11T19:42:47.000Z",
"products": [],
"contact": {
"email": "lead@example.com",
"work": null,
"mobile": "(11) 98877-4455",
"fax": null,
"ramal": null,
"radio": null,
"whatsapp": null,
"facebook": null,
"twitter": null,
"linkedIn": null,
"skype": null,
"instagram": null
},
"address": {
"country": null,
"district": null,
"streetName": null,
"streetNumber": null,
"additionalInfo": null,
"postalCode": null,
"state": null,
"city": null
},
"category": null,
"leadOrigin": {
"id": 9,
"name": "Site"
},
"author": {
"id": 39970,
"name": "T"
},
"ownerUser": {
"id": 70,
"name": "Tulio"
}
},
{
"id": 14329504,
"name": "Rafael (Nome da Pessoa)",
"organization": {
"id": 8959072,
"name": "R Sports (Nome da Empresa)"
},
"cpf": null,
"role": null,
"ranking": 0,
"description": null,
"birthday": null,
"avatar": null,
"createdAt": "2017-07-06T16:35:38.000Z",
"updatedAt": "2018-06-11T19:42:47.000Z",
"products": [],
"contact": {
"email": "lead@example.com",
"work": null,
"mobile": "(11) 98877-4455",
"fax": null,
"ramal": null,
"radio": null,
"whatsapp": null,
"facebook": null,
"twitter": null,
"linkedIn": null,
"skype": null,
"instagram": null
},
"address": {
"country": null,
"district": null,
"streetName": null,
"streetNumber": null,
"additionalInfo": null,
"postalCode": null,
"state": null,
"city": null
},
"category": null,
"leadOrigin": {
"id": 9,
"name": "Site"
},
"author": {
"id": 39970,
"name": "T"
},
"ownerUser": {
"id": 70,
"name": "Tulio"
}
},
{
"id": 14329507,
"name": "Rafael (Nome da Pessoa)",
"organization": {
"id": 8959072,
"name": "R Sports (Nome da Empresa)"
},
"cpf": null,
"role": null,
"ranking": 0,
"description": null,
"birthday": null,
"avatar": null,
"createdAt": "2017-07-06T16:36:02.000Z",
"updatedAt": "2018-06-11T19:42:47.000Z",
"products": [],
"contact": {
"email": "lead@example.com",
"work": null,
"mobile": "(11) 98877-4455",
"fax": null,
"ramal": null,
"radio": null,
"whatsapp": null,
"facebook": null,
"twitter": null,
"linkedIn": null,
"skype": null,
"instagram": null
},
"address": {
"country": null,
"district": null,
"streetName": null,
"streetNumber": null,
"additionalInfo": null,
"postalCode": null,
"state": null,
"city": null
},
"category": null,
"leadOrigin": {
"id": 9,
"name": "Site"
},
"author": {
"id": 39970,
"name": "T"
},
"ownerUser": {
"id": 70,
"name": "Tulio"
}
},
{
"id": 14329517,
"name": "Rafael (Nome da Pessoa)",
"organization": {
"id": 8959072,
"name": "R Sports (Nome da Empresa)"
},
"cpf": null,
"role": null,
"ranking": 0,
"description": null,
"birthday": null,
"avatar": null,
"createdAt": "2017-07-06T16:36:24.000Z",
"updatedAt": "2018-06-11T19:42:47.000Z",
"products": [],
"contact": {
"email": "lead@example.com",
"work": null,
"mobile": "(11) 98877-4455",
"fax": null,
"ramal": null,
"radio": null,
"whatsapp": null,
"facebook": null,
"twitter": null,
"linkedIn": null,
"skype": null,
"instagram": null
},
"address": {
"country": null,
"district": null,
"streetName": null,
"streetNumber": null,
"additionalInfo": null,
"postalCode": null,
"state": null,
"city": null
},
"category": null,
"leadOrigin": {
"id": 9,
"name": "Site"
},
"author": {
"id": 39970,
"name": "T"
},
"ownerUser": {
"id": 70,
"name": "Tulio"
}
},
{
"id": 14329520,
"name": "Rafael (Nome da Pessoa)",
"organization": {
"id": 8959072,
"name": "R Sports (Nome da Empresa)"
},
"cpf": null,
"role": null,
"ranking": 0,
"description": null,
"birthday": null,
"avatar": null,
"createdAt": "2017-07-06T16:36:44.000Z",
"updatedAt": "2018-06-11T19:42:47.000Z",
"products": [],
"contact": {
"email": "lead@example.com",
"work": null,
"mobile": "(11) 98877-4455",
"fax": null,
"ramal": null,
"radio": null,
"whatsapp": null,
"facebook": null,
"twitter": null,
"linkedIn": null,
"skype": null,
"instagram": null
},
"address": {
"country": null,
"district": null,
"streetName": null,
"streetNumber": null,
"additionalInfo": null,
"postalCode": null,
"state": null,
"city": null
},
"category": null,
"leadOrigin": {
"id": 9,
"name": "Site"
},
"author": {
"id": 39970,
"name": "T"
},
"ownerUser": {
"id": 70,
"name": "Tulio"
}
},
{
"id": 14329524,
"name": "William (Nome da Pessoa)",
"organization": {
"id": 8954650,
"name": "Acme (Nome da Empresa)"
},
"cpf": null,
"role": null,
"ranking": 0,
"description": null,
"birthday": null,
"avatar": null,
"createdAt": "2017-07-06T16:37:03.000Z",
"updatedAt": "2018-05-18T20:41:30.000Z",
"products": [],
"contact": {
"email": "lead@example.com",
"work": null,
"mobile": "(11) 98877-4455",
"fax": null,
"ramal": null,
"radio": null,
"whatsapp": null,
"facebook": null,
"twitter": null,
"linkedIn": null,
"skype": null,
"instagram": null
},
"address": {
"country": null,
"district": null,
"streetName": null,
"streetNumber": null,
"additionalInfo": null,
"postalCode": null,
"state": null,
"city": null
},
"category": null,
"leadOrigin": {
"id": 9,
"name": "Site"
},
"author": {
"id": 70,
"name": "Tulio"
},
"ownerUser": {
"id": 39970,
"name": "T"
}
},
{
"id": 19752017,
"name": "William 2 (Nome da Pessoa)",
"organization": {
"id": 14166719,
"name": "Teste API"
},
"cpf": null,
"role": null,
"ranking": 0,
"description": null,
"birthday": null,
"avatar": null,
"createdAt": "2018-06-17T12:49:14.000Z",
"updatedAt": "2018-06-17T12:49:14.000Z",
"products": [],
"contact": {
"email": "lead@example.com",
"work": null,
"mobile": null,
"fax": null,
"ramal": null,
"radio": null,
"whatsapp": null,
"facebook": null,
"twitter": null,
"linkedIn": null,
"skype": null,
"instagram": null
},
"address": {
"country": "Brasil",
"district": null,
"streetName": null,
"streetNumber": null,
"additionalInfo": null,
"postalCode": null,
"state": null,
"city": null
},
"category": null,
"leadOrigin": null,
"author": {
"id": 70,
"name": "Tulio"
},
"ownerUser": null
}
],
"meta": {
"totalCount": 13
},
"links": {
"self": "https://api.agendor.com.br/v3/people?email=lead%40example.com",
"next": "https://api.agendor.com.br/v3/people?email=lead%40example.com&page=2"
}
}
1. GET https://api.agendor.com.br/v3/people?email=lead@example.com
Exemplo de resposta:
{
"text": "Ligar para o lead \n(tarefa criada via integração do site com o Agendor)",
"due_date": "2020-01-19T12:00:00Z",
"user": "70",
"type": "LIGACAO"
}
2. POST
https://api.agendor.com.br/v3/people/14324757/tasks
Crie empresas e pessoas via API e sem precisar buscar antes
Então sempre tem que buscar pela pessoa antes de inserir pra evitar duplicidade?
Eu agarantio!
POST https://api.agendor.com.br/v3/organization/upsert
POST https://api.agendor.com.br/v3/people/upsert
Busca se existe uma pessoa com o e-mail passado.
Se existir, atualiza ela. Se não existir, cria uma nova.
Busca se existe uma empresa com o cnpj ou nome passado.
Se existir, atualiza ela. Se não existir, cria uma nova.
Então, para inserir empresas e pessoas via API, sempre recomendar a rota /upsert para evitar duplicidade
Utilize a rota /people/upsert enviando o mesmo e-mail de uma pessoa que já existe mas passando outro nome
{
"name": "Bob Esponja Calça Quadrada",
"contact": {
"email": "bob@siricascudo.com",
"work": "(11) 98877-4455"
}
}
Exemplo:
Quero que a empresa ou pessoa seja cadastrada no meu ERP, toda vez que um negócio for ganho
Assim como o sistema dos nossos clientes podem fazer requisições para a API do Agendor, os Webhooks são uma forma da API do Agendor fazer requisições ao sistema dos clientes.
API do Agendor
Sistema do cliente
API do cliente
API do Agendor
Postman
(para testes)
???
(Como testar?)
Copie essa URL
E se a gente tivesse uma biblioteca no Postman já com todos os exemplos de uso da API?
A V2 é usada pelo sistema web em alguns lugares (ex: atividades). A ideia era tornar a V2 pública mais vimos que tinha muitos pontos a melhorar na arquitetura dela e criamos uma V3 (mas que reutilizou muito código da V2).
Não, mas a vida deles será mais fácil se eles usarem. As nossas bibliotecas para Postman são praticamente uma documentação mais completa.
Eles até podem testar diretamente pelo código ou usar outras ferramentas, mas o Postman vai ajudá-los a ganhar tempo.
Sim. Usando Webhooks e as rotas de criação (ex: /organizations/upsert).
Sim, criando webhooks com os eventos de negócios criados e de negócios ganhos.
"Obrigado, de nada e parabéns pra vocês!"