Documentação
Confira abaixo os principais itens da documentação da nossa API:
Descubra o poder da API da Imoblist
Seja bem-vindo à API da Imoblist, o portal definitivo para acessar recursos e funcionalidades incríveis do nosso ecossistema imobiliário. Com nossa API, você terá acesso a um conjunto abrangente de recursos projetados para tornar a integração com a nossa plataforma e o gerenciamento de dados mais fácil e eficiente.
Nossa API é baseada no padrão RESTful, uma abordagem amplamente adotada para o desenvolvimento de APIs. No entanto, aqui na Imoblist, implementamos uma variante exclusiva chamada BREAD (Browse, Read, Edit, Add, Delete), que simplifica ainda mais o gerenciamento dos dados. O BREAD oferece uma abordagem intuitiva e poderosa para navegar, visualizar, editar, adicionar e deletar dados, proporcionando uma experiência única de interação com a nossa plataforma.
Para começar a aproveitar todo o potencial da nossa API, você precisará obter um token de validação. Aqui, valorizamos a segurança e, por isso, o token é fornecido exclusivamente pela nossa equipe, sob demanda do cliente. Além disso, para garantir uma camada adicional de segurança, algumas rotas da API requerem autenticação do usuário, que é realizada por meio desta API para permitir o acesso a rotas mais sensíveis.
Estamos empenhados em fornecer a você uma experiência API de alto nível, combinando a segurança e a eficiência que você espera da Imoblist. Com nossa API, você poderá criar integrações poderosas entre a sua aplicação e a nossa plataforma, automatizar processos e enriquecer sua experiência imobiliária online.
Abra as portas para um mundo de possibilidades com a API da Imoblist. Explore, inove e transforme sua aplicação em uma poderosa ferramenta imobiliária com a nossa API. Conecte-se ao nosso portal imobiliário e descubra todas as vantagens de integração disponíveis para impulsionar seu negócio. Nossa API permite que você se conecte com facilidade a outros sistemas, CRMs e portais, seja para obter imóveis de nossos clientes ou gerenciar leads, anúncios e outras parcerias estratégicas. Como atendemos exclusivamente imobiliárias, corretores e parceiros selecionados, nossa estrutura foi projetada para simplificar a comunicação entre nossos clientes e seus clientes finais. Desfrute da facilidade de integração com nossa plataforma e ofereça uma experiência imobiliária excepcional aos seus usuários.
Rotas
A API da Imoblist oferece um conjunto abrangente de rotas para acesso e gerenciamento de recursos imobiliários. Segue abaixo a estrutura do roteamento da API:
https://app.imoblist.com/{action}/{method}/{token}
Aqui está o significado de cada parâmetro:
- ACTION: indica a entidade ou funcionalidade desejada, como por exemplo: Realestate, Lead, Account, entre outras disponíveis.
- METHOD: representa o tipo de operação a ser realizada: Browse, Read, Edit, Add e Delete.
- TOKEN: o token de validação necessário para acessar a API e garantir a segurança dos dados.
Na Imoblist, personalizamos o token de acesso para cada cliente, permitindo um controle granular sobre as ações e métodos disponíveis, garantindo assim uma API segura e confiável.
Com as rotas da API, você poderá obter imóveis, gerenciar leads, realizar ações específicas de acordo com a entidade desejada e muito mais. Explore as possibilidades e integre seu sistema com facilidade através da nossa API.
A API pode responder com diferentes códigos de status HTTP para indicar o resultado da solicitação. Abaixo está uma tabela com os códigos de status mais comuns e suas descrições:
Código | Descrição |
---|---|
200 | OK - A solicitação foi bem-sucedida. |
201 | Criado - O registro foi criado com sucesso. |
204 | Sem Conteúdo - A solicitação foi processada com sucesso, mas não há conteúdo para retornar. |
400 | Solicitação Inválida - A solicitação possui parâmetros inválidos ou está faltando informações obrigatórias. |
401 | Não Autorizado - A solicitação requer autenticação ou as credenciais fornecidas são inválidas. |
403 | Acesso Negado - A solicitação foi proibida por motivos de permissão ou autorização. |
404 | Não Encontrado - O recurso solicitado não foi encontrado. |
500 | Erro Interno do Servidor - Ocorreu um erro inesperado no servidor. |
A API utilizará o código de status apropriado para cada resposta, fornecendo informações sobre o resultado da solicitação.
Token
A segurança é uma prioridade para nós, e para garantir um acesso controlado aos recursos da API, utilizamos tokens de validação. Um token é um código exclusivo gerado pela nossa equipe, que permite validar e autorizar as requisições feitas à API.
Para garantir a segurança das suas solicitações, é necessário incluir o token de validação em todas as requisições feitas à API. Isso permite que nosso sistema verifique a autenticidade da requisição e conceda ou negue o acesso aos recursos solicitados.
Além disso, todas as requisições feitas com o token são registradas em nosso sistema de logs. Esse registro detalhado das solicitações nos permite monitorar e analisar o uso da API, garantindo uma maior segurança e transparência. Esses logs também fornecem informações valiosas que nos auxilia em análises e tomadas de decisões estratégicas baseadas nos dados das consultas realizadas em nossa API.
Autenticação
Para acessar as rotas restritas, é necessário realizar um POST em /auth/login
, enviando um payload JSON contendo o telefone ou email e a senha de acesso para autenticação. Além disso, é imprescindível incluir o token de validação url e na header o token de autenticação como "Bearer token".
-
POST /auth/login
Payload JSON:{ "email": "example@example.com", "phone": "1234567890", "password": "mypassword" }
Em caso de sucesso, a API retornará uma resposta JSON com a chave "success" definida como true e a mensagem de sucesso. Em caso de erro, a API retornará uma resposta JSON com a chave "success" definida como false e a mensagem de erro correspondente.
Exemplo de resposta de sucesso:
{ "success": true, "message": "Authentication successful.", "data": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." }
Exemplo de resposta de erro:
{ "success": false, "error": [ "O campo email é obrigatório quando telefone não está presente.", "O campo telefone é obrigatório quando email não está presente.", "O campo telefone deve ser um número de telefone válido.", "O campo email deve ser um endereço de e-mail válido.", ] }
{ "success": false, "error": "These credentials do not match our records." }
Filtros
É possível filtrar os registros da API usando filtros personalizados. Você pode enviar os filtros através de uma requisição GET
ou POST
com um payload JSON.
Aqui está um exemplo de como você pode formatar o JSON para enviar os filtros:
-
GET/POST
Payload JSON:{ "campo1": "valor1", "campo2": { "clause": "orWhere", "operator": "=", "value": "valor2" }, "campo3": { "clause": "whereBetween", "value": ["2023-01-01", "2023-12-31"] }, "campo4": { "clause": "whereIn", "value": [1, 2, 3] }, "relacionamento.campo1": "valor1", "relacionamento.campo2": { "clause": "where", "operator": "like", "value": "valor2" } }
Quando nenhum clause
for informado, o valor padrão é where
. Isso significa que o filtro será aplicado como uma cláusula "where" na consulta.
Quando nenhum operator
for informado, o valor padrão é =
. Isso significa que o filtro será aplicado como uma comparação de igualdade na consulta.
As seguintes cláusulas podem ser usadas para filtrar os registros:
where
Filtra registros com base em uma condição.orWhere
Filtra registros com base em uma condição alternativa.whereIn
Filtra registros onde um campo está contido em um conjunto de valores.whereNotIn
Filtra registros onde um campo não está contido em um conjunto de valores.whereNull
Filtra registros onde um campo é nulo.whereNotNull
Filtra registros onde um campo não é nulo.whereBetween
Filtra registros onde um campo está dentro de um intervalo específico.whereNotBetween
Filtra registros onde um campo está fora de um intervalo específico.
Os seguintes operadores podem ser usados para compor as condições dos filtros:
=
Igual a um valor.!=
Diferente de um valor.<
Menor que um valor.>
Maior que um valor.<=
Menor ou igual a um valor.>=
Maior ou igual a um valor.like
Correspondência de padrão.not like
Não corresponde a um padrão.in
Está contido em um conjunto de valores.not in
Não está contido em um conjunto de valores.between
Está dentro de um intervalo específico.not between
Não está dentro de um intervalo específico.
Ordenação
Além dos filtros, você também pode especificar a ordenação dos resultados. Para isso, você pode incluir o parâmetro order na sua solicitação GET. O parâmetro order pode ter dois formatos:
-
Formato 1: Como uma string que representa o nome da coluna a ser ordenada. Por exemplo,
order=name
. -
Formato 2: Como um array de objetos que contêm o campo
field
(nome da coluna) e opcionalmente o campodirection
(direção da ordenação). Por exemplo:order[0][field]=name&order[0][direction]=asc&order[1][field]=age&order[1][direction]=desc
.
Caso você não especifique a direção da ordenação, o padrão será asc
. O resultado será retornado ordenado de acordo com os critérios definidos.
Exemplo de requisição GET com ordenação:
GET /realestate/browse/TOKEN?order=name&direction=desc
Exemplo de requisição GET com ordenação em formato de array:
GET /realestate/browse/TOKEN?order[0][field]=name&order[0][direction]=asc&order[1][field]=age&order[1][direction]=desc
Observe que você pode incluir múltiplos critérios de ordenação, fornecendo vários objetos no array order.
É importante ressaltar que a ordenação só está disponível no método Navegar
.
Método: Navegar
Por meio do recurso de navegação (Browse), você pode obter resultados paginados com base nos filtros personalizados aplicados à consulta. Este recurso permite explorar a API de forma flexível e receber apenas os dados relevantes.
Para utilizar a funcionalidade de navegação, você deve fazer uma solicitação GET
para a rota desejada, passando os filtros e parâmetros necessários. Os filtros devem ser informados como discutido anteriormente, e você também pode adicionar os seguintes parâmetros:
- page: Utilizado para informar o número da página desejada. O padrão é a página 1.
- per_page: Utilizado para definir a quantidade de registros por página. O padrão é 15 registros, e o máximo é 50 registros.
A API retornará os resultados correspondentes aos filtros aplicados, de acordo com a página solicitada e a quantidade de registros por página definida. O resultado será retornado no formato paginado para facilitar a navegação e a obtenção dos dados.
Exemplo de requisição GET para navegar pelos resultados:
GET /realestate/browse/TOKEN?page=2&per_page=20
Exemplo de resposta paginada:
{ "success": true, "message": "Query performed succesfully.", "data": { "current_page": 2, "data": [ // Dados da página 2 ], "first_page_url": "http://api.exemplo.com/.../TOKEN?page=1", "from": 21, "last_page": 5, "last_page_url": "http://api.exemplo.com/.../TOKEN?page=5", "next_page_url": "http://api.exemplo.com/.../TOKEN?page=3", "path": "http://api.exemplo.com/.../TOKEN", "per_page": 20, "prev_page_url": "http://api.exemplo.com/.../TOKEN?page=1", "to": 40, "total": 100 } }
A resposta paginada inclui informações sobre a página atual, os dados retornados, links para a primeira página, a última página, a próxima página e a página anterior, além de informações sobre a quantidade total de registros e a quantidade de registros exibidos por página.
Método: Ler
Por meio da operação de leitura (Read), você pode obter um único resultado com base no ID ou UUID do registro. Essa operação permite recuperar informações específicas da API, aplicando filtros se necessário.
Você pode fazer uma solicitação GET
ou POST
para a rota desejada, passando o ID ou UUID do registro como parâmetro obrigatório. Além disso, você pode adicionar filtros opcionais para refinar a consulta.
A API retornará o resultado correspondente ao ID ou UUID fornecido, juntamente com as informações solicitadas. Certifique-se de fornecer o ID ou UUID correto para obter os dados desejados.
Exemplo de requisição GET
para ler um registro:
-
GET /realestate/read/TOKEN?id=12345
Exemplo de requisição POST
para ler um registro:
-
POST /realestate/read/TOKEN
-
Payload JSON:
{ "id": "12345" }
Exemplo de resposta:
{ "success": true, "message": "Query performed succesfully.", "data": { // Dados do registro com o ID fornecido } }
Exemplo de resposta de erro:
{ "success": false, "error": [ "O campo id é obrigatório." ] }
{ "success": false, "error": "This method only accepts GET and POST." }
Método: Editar
O recurso de edição (Edit) permite modificar um registro existente na API com base no seu ID ou UUID. Com essa funcionalidade, você pode atualizar as informações dos registros de forma simples e eficiente.
Para realizar uma operação de edição, você deve fazer uma solicitação PUT
para a rota desejada, fornecendo o ID ou UUID do registro como parâmetro obrigatório. Além disso, outros parâmetros podem ser obrigatórios, dependendo das regras específicas de cada ação de edição.
Certifique-se de fornecer os dados corretos e válidos para a atualização do registro desejado. Os campos e valores esperados podem variar de acordo com a estrutura de dados e as regras de validação da API.
Exemplo de requisição PUT
para editar um registro:
-
PUT /realestate/edit/TOKEN
-
Payload JSON:
{ "id": "12345", // Outros parâmetros obrigatórios para a edição }
Exemplo de resposta:
{ "success": true, "message": "Record updated successfully." }
Exemplo de resposta de erro:
{ "success": false, "error": [ "O campo id é obrigatório.", "O campo email é obrigatório.", "O campo telefone é obrigatório." ] }
{ "success": false, "error": "This method only accepts PUT." }
Método: Adicionar
O recurso de adicionar (Add) permite inserir um novo registro na API. Com essa funcionalidade, você pode criar novos registros com os dados desejados, seguindo as regras e estrutura de dados da API.
Para adicionar um novo registro, você deve fazer uma solicitação POST
para a rota desejada, fornecendo os parâmetros necessários para a criação do registro. As regras específicas de cada ação podem variar, exigindo parâmetros obrigatórios específicos.
Certifique-se de fornecer os dados corretos e válidos para a criação do registro desejado. Os campos e valores esperados podem variar de acordo com a estrutura de dados e as regras de validação da API.
Exemplo de requisição POST
para adicionar um registro:
-
POST /realestate/add/TOKEN
-
Payload JSON:
{ "email": "example@example.com", // Outros parâmetros obrigatórios para a adição do registro }
Exemplo de resposta:
{ "success": true, "message": "Record added successfully." }
Exemplo de resposta de erro:
{ "success": false, "error": [ "O campo email é obrigatório.", "O campo telefone é obrigatório." ] }
{ "success": false, "error": "This method only accepts POST." }
Método: Deletar
O método de deleção permite remover um registro específico da API. Para utilizar esse método, você deve fazer uma solicitação DELETE
para a rota desejada, informando o parâmetro obrigatório id
ou uuid
que identifica o registro a ser excluído.
É importante ressaltar que a API utiliza a funcionalidade de "soft deletes", ou seja, quando você solicita a exclusão de um registro, ele é movido para uma lixeira virtual. Se você solicitar novamente a exclusão do mesmo registro, ele será permanentemente removido ("force delete").
Exemplo de requisição DELETE
para deletar um registro:
-
DELETE /realestate/delete/TOKEN?id=12345
Ao fazer a solicitação de exclusão, certifique-se de fornecer o TOKEN
adequado para autenticação ou autorização. Além disso, substitua o valor 12345
pelo ID ou UUID do registro que você deseja excluir.
A resposta da API será um objeto JSON indicando o resultado da operação de deleção. Verifique a resposta para garantir que o registro tenha sido excluído com sucesso.
Exemplo de resposta:
{ "success": true, "message": "Record deleted succesfully." }
Exemplo de resposta de erro:
{ "success": false, "error": [ "O campo id é obrigatório." ] }
{ "success": false, "error": "This method only accepts DELETE." }
Ação: Imóveis
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
Requisição publicas:
-
GET /realestate/browse/TOKEN
-
GET/POST /realestate/read/TOKEN?uuid=abc123
Requisição autenticadas:
-
PUT /realestate/edit/TOKEN?uuid=abc123
-
POST /realestate/add/TOKEN
-
DELETE /realestate/delete/TOKEN?uuid=abc123
Parâmetro | Tipo | Obrigatório | Anotações |
---|---|---|---|
uuid | string | read / edit / delete | |
listing_code | string | ||
for_sale | boolean | edit / add | |
for_rent | boolean | edit / add | |
for_season | boolean | edit / add | |
status | enum | opções: published, unpublished, restricted, downloaded. | |
period_season | enum | opções: daily, weekly, monthly, quarterly, yearly. | |
description | string | ||
description_rent | string | ||
description_sale | string | ||
description_season | string | ||
bedrooms | integer | edit / add | |
suites | integer | edit / add | |
bathrooms | integer | edit / add | |
parking_spaces | integer | edit / add | |
is_featured | integer | edit / add | |
new_development | integer | edit / add | |
video_url | string | ||
virtual_tour_script | string | ||
virtual_tour_url | string | ||
exclusivity | enum | opções: exclusivity, authorization, not_informed. | |
exclusivity_start | datetime | ||
exclusivity_end | datetime | ||
situation | enum | opções: new, used, renovated, off_plan, under_construction, ready_to_move. | |
face | enum | opções: east, north, west, south, northeast, northwest, southeast, southwest, not_informed. | |
construction_year | integer | ||
reform_year | integer | ||
need_reform | boolean | edit / add | |
mcmv | boolean | edit / add | |
credit_card_rent | boolean | edit / add | |
credit_card_season | boolean | edit / add | |
financing | boolean | edit / add | |
funded | boolean | edit / add | |
electricity_registration | string | ||
water_registration | string | ||
gas_registration | string | ||
street | string | edit / add | |
number | string | ||
complement | string | ||
neighborhood | string | edit / add | |
zip_code | string | edit / add | |
city | string | edit / add | |
state | string | edit / add | |
country | string | edit / add | |
zoning | string | ||
tower | string | ||
floor | string | ||
door | string | ||
lat | decimal | 00.0 | |
lng | decimal | 00.0 | |
show_address | enum | opções: all, city, neighborhood, street, default. | |
area_private | decimal | 0.0000 | |
area_useful | decimal | 0.0000 | |
area_common | decimal | 0.0000 | |
area_building | decimal | 0.0000 | |
area_land | decimal | 0.0000 | |
area_total | decimal | 0.0000 | |
price_sale | decimal | 0.00 | |
price_rent | decimal | 0.00 | |
price_season | decimal | 0.00 | |
price_tax | decimal | 0.00 | |
price_condominium | decimal | 0.00 | |
show_tax | enum | opções: tax_and_condominium, tax, condominium. | |
pay_tax | enum | opções: not_informed, owner, tenant, real_estate_or_agent. | |
created_at | datetime | ||
updated_at | datetime | ||
features.id | integer | edit / add | |
features.name | string | edit / add | |
usagetypes.id | integer | edit / add | |
usagetypes.name | string | edit / add | |
type.id | integer | edit / add | |
type.name | string | edit / add | |
subtype.id | integer | edit / add | |
subtype.name | string | edit / add | |
guarantees.id | integer | edit / add | |
guarantee.name | string | edit / add | |
condominium.uuid | string | ||
condominium.name | string | ||
account.uuid | string | edit / add | |
account.social_name | string | ||
account.creci | string |
Condomínios
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
Requisição publicas:
-
GET /condominium/browse/TOKEN
-
GET/POST /condominium/read/TOKEN?uuid=abc123
Requisição autenticadas:
-
PUT /condominium/edit/TOKEN?uuid=abc123
-
POST /condominium/add/TOKEN
-
DELETE /condominium/delete/TOKEN?uuid=abc123
Parâmetro | Tipo | Obrigatório | Anotações |
---|---|---|---|
uuid | string | read / edit / delete | |
name | string | edit / add | |
description | string | ||
built_year | datetime | ||
street | string | edit / add | |
number | string | ||
complement | string | ||
neighborhood | string | edit / add | |
zip_code | string | edit / add | |
city | string | edit / add | |
state | string | edit / add | |
country | string | edit / add | |
lat | decimal | edit / add | 00.0 |
lng | decimal | edit / add | 00.0 |
created_at | datetime | edit / add | |
updated_at | datetime | edit / add | |
features.id | integer | edit / add | |
features.name | string | edit / add |
Endereços
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
Requisição publicas para paises:
-
GET /get_address_country/browse/TOKEN
-
GET/POST /get_address_country/read/TOKEN?id=123
Requisição publicas para estados:
-
GET /get_address_state/browse/TOKEN
-
GET/POST /get_address_state/read/TOKEN?id=123
Requisição publicas para cidades:
-
GET /get_address_city/browse/TOKEN
-
GET/POST /get_address_city/read/TOKEN?id=123
Requisição publicas para bairros:
-
GET /get_address_neighborhood/browse/TOKEN
-
GET/POST /get_address_neighborhood/read/TOKEN?id=123
Parâmetro | Tipo | Obrigatório | Anotações |
---|---|---|---|
id | integer | read | |
name | string | browse / read |
Relacionamentos
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
Requisição publicas para tipos:
-
GET /get_realestate_type/browse/TOKEN
-
GET/POST /get_realestate_type/read/TOKEN?id=123
-
GET /get_realestate_subtype/browse/TOKEN
-
GET/POST /get_realestate_subtype/read/TOKEN?id=123
Requisição publicas para finalidades:
-
GET /get_realestate_usagetype/browse/TOKEN
-
GET/POST /get_realestate_usagetype/read/TOKEN?id=123
Requisição publicas para garantias:
-
GET /get_realestate_guarantee/browse/TOKEN
-
GET/POST /get_realestate_guarantee/read/TOKEN?id=123
Requisição publicas para comodidades:
-
GET /get_realestate_feature/browse/TOKEN
-
GET/POST /get_realestate_feature/read/TOKEN?id=123
-
GET /get_realestate_feature_group/browse/TOKEN
-
GET/POST /get_realestate_feature_group/read/TOKEN?id=123
Parâmetro | Tipo | Obrigatório | Anotações |
---|---|---|---|
id | integer | read | |
name | string | browse / read |
Ação: Contas
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
Ação: Lead
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
Ação: Clientes
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
Ação: Usuários
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.