Conectores
ERP
Bling
54 min
objetivo o conector bling permite integrar fluxos da plataforma fluid com o erp bling, utilizando a api v3 com autenticação oauth 2 0 com ele é possível consultar, criar e atualizar entidades do bling diretamente em seus fluxos de automação principais cenários sincronização de catálogo de produtos entre o bling e plataformas de e commerce consulta e criação de pedidos de venda e compra de forma automatizada gestão de contatos (clientes e fornecedores) via fluxo monitoramento de estoque com atualização em tempo real consulta e emissão de notas fiscais eletrônicas (nf e, nfc e, nfs e) configuração da conexão como configurar no painel da fluid acesse conexões > nova conexão > bling preencha os campos visíveis da conexão id do cliente identificador do aplicativo cadastrado no bling chave secreta do cliente chave secreta do aplicativo cadastrado no bling clique em salvar conexão a fluid abrirá automaticamente a tela de consentimento do bling para que você autorize o acesso após a autorização, a conexão será estabelecida e estará pronta para uso nos fluxos a conexão utiliza oauth 2 0 com authorization code o fluxo de autorização é iniciado automaticamente pela fluid — você não precisa configurar urls de token ou parâmetros adicionais requisitos (criando a conexão) para configurar a conexão, você precisa de um aplicativo cadastrado na central de extensões do bling (configurações > cadastro de aplicativos) o aplicativo fornecerá o id do cliente e a chave secreta do cliente necessários ao cadastrar o aplicativo no bling, informe a seguinte url de redirecionamento https //sandbox console fluidapi io campos da conexão campo tipo obrigatório descrição id do cliente string sim identificador do aplicativo cadastrado no bling chave secreta do cliente string sim chave secreta do aplicativo cadastrado no bling observações de segurança a chave secreta do cliente é sensível — trate a como uma senha nunca a exponha em logs ou repositórios a fluid gerencia automaticamente o ciclo de vida dos tokens oauth 2 0, incluindo o refresh quando necessário certifique se de que os escopos configurados no aplicativo bling correspondem às operações que você pretende executar nos fluxos a api v3 do bling pode exigir que o aplicativo passe pelo processo de homologação antes do uso em produção configurando um fluxo recurso produtos operação listar produtos retorna uma lista paginada de produtos cadastrados no bling, com suporte a filtros avançados campos da operação campo tipo obrigatório descrição página integer não número da página de resultados padrão 1 limite integer não registros por página padrão e máximo 100 critério integer não filtro de situação 1 ativo, 2 inativo, 3 excluído padrão 1 tipo string não tipo do produto p produto, s serviço, e composição padrão t (todos) código (sku) string não código(s) sku para filtrar separe múltiplos com vírgula, sem espaços id do contato integer não filtro por contato vinculado ao produto data de inclusão inicial datetime não data/hora inicial de inclusão formato yyyy mm dd hh\ mm\ ss data de inclusão final datetime não data/hora final de inclusão formato yyyy mm dd hh\ mm\ ss operação consultar produto retorna os detalhes completos de um produto específico pelo seu id campos da operação campo tipo obrigatório descrição id produto integer sim identificador único do produto no bling recurso pedidos de venda operação listar pedidos de venda retorna uma lista paginada de pedidos de venda com suporte a filtros por data, contato e situação campos da operação campo tipo obrigatório descrição página integer não número da página de resultados padrão 1 limite integer não registros por página padrão e máximo 100 id do contato integer não filtro por contato (cliente) vinculado ao pedido ids dos pedidos string não um ou mais ids de pedidos separe múltiplos com vírgula, sem espaços data de venda inicial date não data inicial da venda formato yyyy mm dd data de saída final date não data final de saída do pedido formato yyyy mm dd data de alteração inicial datetime não data/hora inicial da última alteração formato yyyy mm dd hh\ mm\ ss operação consultar pedido de venda retorna os detalhes completos de um pedido de venda específico pelo seu id campos da operação campo tipo obrigatório descrição id pedido integer sim identificador único do pedido de venda operação criar pedido de venda cria um novo pedido de venda no bling campos da operação campo tipo obrigatório descrição contato object sim objeto com o id do contato (cliente) vinculado ao pedido itens array sim lista de itens do pedido (produto, quantidade, valor unitário) data date não data do pedido formato yyyy mm dd padrão data atual loja object não objeto com o id da loja de origem do pedido observações string não observações internas do pedido estrutura do campo itens cada item do array deve conter\ produto id — id do produto no bling (obrigatório) quantidade — quantidade do item (obrigatório) valor — valor unitário do item caso omitido, utilizará o preço cadastrado no produto operação atualizar status do pedido de venda atualiza a situação de um pedido de venda existente campos da operação campo tipo obrigatório descrição id pedido integer sim identificador único do pedido de venda id situação integer sim id da nova situação obtido via operação listar situações do módulo atenção ao alterar situações algumas transições de situação no bling são irreversíveis (ex pedido cancelado ou faturado) valide as regras de negócio do bling antes de automatizar mudanças de status em produção recurso pedidos de compra operação listar pedidos de compra retorna uma lista paginada de pedidos de compra campos da operação campo tipo obrigatório descrição página integer não número da página de resultados padrão 1 limite integer não registros por página padrão e máximo 100 id do contato integer não filtro por fornecedor vinculado ao pedido de compra operação consultar pedido de compra retorna os detalhes completos de um pedido de compra específico campos da operação campo tipo obrigatório descrição id pedido integer sim identificador único do pedido de compra recurso contatos operação listar contatos retorna uma lista paginada de contatos (clientes e fornecedores) cadastrados no bling campos da operação campo tipo obrigatório descrição página integer não número da página de resultados padrão 1 limite integer não registros por página padrão e máximo 100 critério integer não filtro de situação 1 ativo, 2 inativo, 3 excluído padrão 1 data de inclusão inicial datetime não data/hora inicial de inclusão formato yyyy mm dd hh\ mm\ ss operação consultar contato retorna os detalhes completos de um contato específico pelo seu id campos da operação campo tipo obrigatório descrição id contato integer sim identificador único do contato no bling operação criar contato cria um novo contato (cliente ou fornecedor) no bling campos da operação campo tipo obrigatório descrição nome string sim nome ou razão social do contato tipo pessoa string não f física ou j jurídica cpf/cnpj string não documento do contato (apenas números) email string não endereço de e mail do contato telefone string não telefone de contato tipo object não objeto indicando se é cliente, fornecedor ou ambos operação atualizar contato atualiza os dados de um contato existente no bling campos da operação campo tipo obrigatório descrição id contato integer sim identificador único do contato a ser atualizado campos object sim objeto com os campos a serem atualizados (mesma estrutura do criar) recurso estoques operação consultar estoque retorna as informações de saldo em estoque de um produto específico campos da operação campo tipo obrigatório descrição id produto integer sim identificador único do produto no bling estoque por depósito a resposta inclui o saldo consolidado e o detalhamento por depósito cadastrado no bling utilize o campo depositos no retorno para verificar a distribuição do estoque recurso notas fiscais operação listar notas fiscais retorna uma lista paginada de notas fiscais eletrônicas (nf e) campos da operação campo tipo obrigatório descrição página integer não número da página de resultados padrão 1 limite integer não registros por página padrão e máximo 100 situação integer não filtro por situação da nota fiscal data de emissão inicial date não data inicial de emissão formato yyyy mm dd data de emissão final date não data final de emissão formato yyyy mm dd operação consultar nota fiscal retorna os detalhes completos de uma nota fiscal específica pelo seu id campos da operação campo tipo obrigatório descrição id nf integer sim identificador único da nota fiscal no bling recurso módulos e situações operação listar módulos retorna a lista de módulos disponíveis no bling com seus respectivos ids útil para identificar o idmodulosistema necessário na operação listar situações do módulo nenhum campo obrigatório operação listar situações do módulo retorna as situações disponíveis para um módulo específico do bling (ex situações de pedidos de venda, de compra, etc ) campos da operação campo tipo obrigatório descrição id módulo sistema integer sim identificador do módulo obtenha via operação listar módulos como usar módulos e situações o padrão recomendado é encadear dois passos no fluxo\ listar módulos → identifica o id do módulo desejado (ex pedidos de venda) listar situações do módulo → com o id obtido, retorna todas as situações disponíveis para aquele módulo isso garante que os ids de situação utilizados em outras operações (ex atualizar status do pedido) sejam sempre válidos e atualizados na prática neste tópico criaremos um exemplo de um fluxo utilizando o conector da bling o fluxo terá apenas um passo que será responsável pelo envio de um pedido para o sistema bling enviaremos um payload de entrada, que passará por uma transformação em nosso docid\ voqdaukjjknbswvrhbzqw , onde será validado algumas docid\ lgqsmyrxokym9hgjtotkl , e por fim montaremos o xml necessário para inserir o pedido na bling usando um docid\ treajh8tvdyh6ukyeaqzp passo 'envia pedido' este primeiro e unico passo irá inserir o pedido no sitema bling somente se todas as docid\ lgqsmyrxokym9hgjtotkl mandatórias forem atendidas assim ficará a parametrização do envia pedido para tratar os dados recebidos do payload de entrada usamos o docid\ voqdaukjjknbswvrhbzqw e por fim utilizamos o template para montar o xml da requisição que a operação espera assim ficou nosso de/para para mais informações sobre como tratamos de/paras clique em docid\ voqdaukjjknbswvrhbzqw se observar, alguns valores do nosso de/para estão sendo referenciado algumas rules, essas são rules internas, para mais informações acesse nossa documentação sobre docid\ lgqsmyrxokym9hgjtotkl assim ficou nossas rules \[ { "idrule" "clientenome", "rule" "{\\"cat\\" \[ {\\"var\\" \\"customer firstname\\"}, \\" \\", {\\"var\\" \\"customer lastname\\"} ]}", "type" "internal", "description" "concatena o primeiro e último nome do cliente " }, { "idrule" "1", "rule" "{ \\"if\\" \[{\\"==\\" \[ { \\"var\\" \\"status name\\" }, \\"status paid\\" ] }] }", "type" "mandatory" }, { "idrule" "verificatipopessoa", "rule" "{\\"if\\" \[{\\"missing\\" \[\\"customer companyname\\"]},\\"f\\", \\"j\\"]}", "type" "internal" }, { "idrule" "formapagamento", "rule" "{\\"if\\" \[{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"payment method ailospag\\"]}]},\\"2849028\\", {\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"payment method boleto\\"]}]},\\"2849032\\", {\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"payment method pix\\"]}]},\\"2849027\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"payment method deposit\\"]}]},\\"2849031\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"payment method creditcard mastercard\\"]}]},\\"2849055\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"'payment method creditcard visa\\"]}]},\\"2849058\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"'payment method creditcard americanexpress\\"]}]},\\"2849054\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"'payment method creditcard aura'\\"]}]},\\"2849043\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"'payment method creditcard bnds'\\"]}]},\\"2849033\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"'payment method creditcard dinners'\\"]}]},\\"2849048\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"payment method creditcard discover\\"]}]},\\"2849044\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"payment method creditcard elo\\"]}]},\\"2849049\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"payment method creditcard hipercard\\"]}]},\\"2849041\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"payment method creditcard jcb\\"]}]},\\"2849045\\",{\\"some\\" \[{\\"var\\" \\"paymentmethods\\"},{\\"==\\" \[{\\"var\\" \\" name\\"},\\"payment method creditcard oipaggo\\"]}]},\\"2849036\\"]}", "type" "internal" }, { "idrule" "fluid", "rule" "{ \\"if\\" \[{\\"==\\" \[ { \\"var\\" \\"shoppingstore referencecode\\" }, \\"fluid\\" ] }] }", "type" "mandatory" }, { "idrule" "desconto", "rule" "{ \\" \\" \[{ \\"var\\" \\"promotiondiscount\\" }, { \\"var\\" \\"shippingdiscount\\" } ] }", "type" "internal" }, { "idrule" "complemento", "rule" "{ \\"if\\" \[{\\"!!\\" \[ { \\"var\\" \\"customer address complement\\" }] },{ \\"var\\" \\"customer address complement\\" }, \\"\\"] }", "type" "internal" } ] e por fim, o template no formato esperado pela bling na aba propriedades informamos o nome do passo e a conexão criada com a credencial da bling conclusão com o passo configurado basta disparar o fluxo informando o payload de entrada, para este caso termos esse a seguir { "number" "2304449953", "total" 3611, "promotiondiscount" 0, "shippingipi" 0, "taxsubstitution" 0, "grossamount" 3611, "createdat" "2023 04 20 11 22 16", "updatedat" "2023 04 24 10 50 13", "deletedat" null, "shippingtotal" 0, "shippingdiscount" 0, "mastersale" { "number" "2304637439" }, "status" { "name" "status paid", "info" "comprador n\u00e3o tem cr\u00e9dito pr\u00e9 aprovado", "createdat" "2023 04 24 10 50 13", "updatedby" { "email" null, "isapi" false, "issystem" true } }, "items" \[ { "name" "iphone 11 64gb branco (3798643)", "quantity" 1, "unitprice" 3611, "totalprice" 3611, "promotiondiscount" 0, "grossamount" 3611, "taxsubstitution" 0, "trackingcode" null, "additionalto" null, "shippingipi" 0, "variant" { "id" 36617, "referencecode" "3798643", "productreferencecode" "3798643", "eancode" "194252097403", "presentation" "iphone 11 64gb branco", "url" "\\/loja\\/malibu shop\\/produto\\/3798643\\/3798643", "price" 3611, "promotionalprice" null, "master" true, "masterimage" null, "isfractionalstock" false, "stock" { "quantity" 9, "minimumquantity" 2, "enabled" true, "distributioncenter" { "referencecode" "malibu shop", "postcode" "85601000", "city" "francisco beltr\u00e3o", "state" "pr", "country" "brasil", "district" "centro", "street" "avenida j\u00falio assis cavalheiro", "complement" "", "number" 390 } }, "distributioncenterlist" \[ { "quantity" 9, "minimumquantity" 2, "enabled" true, "distributioncenter" { "referencecode" "malibu shop", "postcode" "85601000", "city" "francisco beltr\u00e3o", "state" "pr", "country" "brasil", "district" "centro", "street" "avenida j\u00falio assis cavalheiro", "complement" "", "number" 390 } } ], "pricelist" null, "dimensiongroup" { "height" 40, "width" 15, "depth" 15, "weight" 0 4 }, "additionaldeliverytime" 0, "availableat" null, "deletedat" null }, "shippingaddress" { "postcode" "89053180", "city" "blumenau", "state" "sc", "country" "brasil", "street" "rua soldado m\u00e1rio luiz bertolini", "district" "itoupava norte", "complement" "zouk", "number" 416 }, "promotionsapplied" \[], "taxsubstitutionapplied" null, "taxsubstitutionsapplied" \[], "shippingmethod" { "name" "bauer transportes", "referencecode" "343243224222", "referencecodeservice" null, "estimateddeliveryfrom" 3, "estimateddeliveryto" 5, "deliverytimefrom" null, "deliverytimeto" null, "price" 0, "originalprice" 0, "discountapplied" 0, "carrier" { "referencecode" "343243224222", "name" "bauer transportes" }, "observations" null, "quoteid" null, "gatewayinfo" \[] }, "properties" \[], "itemskit" \[], "giftlist" null, "bookingstartdate" null, "bookingenddate" null, "aliquotsapplied" \[], "aliquotstotal" 0 } ], "promotionsapplied" \[], "customer" { "firstname" "thauan", "lastname" "mendes", "gender" 1, "dateofbirth" "1995 01 16", "identitynumber" "04542582248", "primaryphone" "(91) 98569 1218", "secondphone" null, "address" { "postcode" "89053180", "city" "santo andré", "state" "sp", "country" "brasil", "street" "av joão pessoa", "district" "jardim utinga", "complement" "zouk", "number" 657 }, "createdat" "2023 04 20 10 18 35", "updatedat" "2023 04 21 02 07 55", "customertype" { "name" "cooperados viacredi", "referencecode" "cooperadosviacredi", "usestaxsubstitution" false, "pricelist" null }, "pricelist" null, "email" "thauan mendes\@fluidapi io" }, "user" { "responsible" "thauan mendes", "email" "thauan mendes\@fluidapi io" }, "paymentmethods" \[ { "name" "payment method negotiable", "installments" null, "amount" 3611, "discount" 0, "addition" 0, "boletorule" null, "interestvalue" 0, "boletourl" null, "creditcardtoken" null, "authorizationcode" null, "transactionid" null, "nsu" null, "pixpaymentkey" null } ], "ordergatewayinfo" null, "shoppingstore" { "id" 2181, "name" "malibu shop", "createdat" "2022 11 01 16 03 54", "updatedat" "2022 11 08 15 46 27", "referencecode" "fluid", "logourl" "\\/\\/d8vlg9z1oftyc cloudfront net\\/ailos\\/image\\/media\\/logo malibu shop 63616d9bad209 jpeg", "faviconurl" null, "primaryphone" "(46) 99983 4080", "domain" "", "email" "contato\@malibushop com br", "useremail" "contato\@malibushop com br", "cnpj" "43 827 066\\/0001 62", "stateregistration" "", "responsiblename" "lucas rodrigues rolin", "companyname" "tecbel importa\u00e7\u00e3o e exporta\u00e7\u00e3o ltda", "tradename" "malibu shop", "isenabled" true, "isactivated" true, "address" "avenida j\u00falio assis cavalheiro, 390, centro, francisco beltr\u00e3o, pr, 85601 000, brasil", "addressobject" null, "distributioncenter" { "referencecode" "malibu shop", "postcode" "85601000", "city" "francisco beltr\u00e3o", "state" "pr", "country" "brasil", "district" "centro", "street" "avenida j\u00falio assis cavalheiro", "complement" "", "number" 390 }, "descriptionlong" null, "descriptionshort" null, "socialmedia" { "facebookurl" null, "twitterurl" null, "youtubeurl" null, "googleplusurl" null, "instagramurl" null }, "attributevalues" \[ { "name" "segmento", "referencecode" "segmento", "value" "tecnologia" }, { "name" "whatsapp", "referencecode" "whatsapp", "value" "(46) 99983 4080" }, { "name" "li e aceito os termos de uso", "referencecode" "termos vendedor", "value" "sim" }, { "name" "ip cadastro", "referencecode" "ip cadastro vendedor", "value" "187 60 223 157" }, { "name" "vers\u00e3o termos de uso", "referencecode" "versao aceite termos vendedor", "value" "v1" }, { "name" "entrega produtos no prazo", "referencecode" "entrega produtos no prazo", "value" "n\u00e3o" }, { "name" "exibir n\u00famero whatsapp no an\u00fancio", "referencecode" "exibir whatsapp", "value" "sim" }, { "name" "cooperativa", "referencecode" "campo cooperativa", "value" "evolua" }, { "name" "selo 1 cdl blumenau", "referencecode" "selo 1 cdl blumenau", "value" "n\u00e3o" }, { "name" "selo 2 aemflo", "referencecode" "selo 2 aemflo", "value" "n\u00e3o" }, { "name" "selo 3", "referencecode" "selo 3", "value" "n\u00e3o" }, { "name" "selo 4", "referencecode" "selo 4", "value" "n\u00e3o" }, { "name" "selo 5", "referencecode" "selo 5", "value" "n\u00e3o" }, { "name" "selo 6", "referencecode" "selo 6", "value" "n\u00e3o" } ] }, "agent" null, "agents" null, "subscription" null, "attributevalues" \[ { "name" "e mail do cliente", "referencecode" "ailospag user email", "value" "thauan mendes\@fluidapi io" }, { "name" "cpf", "referencecode" "ailospag cpf", "value" "04542582248" }, { "name" "cooperativa", "referencecode" "ailospag coop name", "value" "viacredi" }, { "name" "vencimento 1\u00aa parcela", "referencecode" "ailospag venc parcela", "value" "1\u00ba parcela 20\\/5\\/2023" }, { "name" "parcelas", "referencecode" "ailospag valor parcela", "value" "18" } ] } após o disparo, o resultado do fluxo aparecerá em realtime no canvas ao clicar em detalhes, temos a requisição e a resposta retornada pela bling observações adicionais rate limit a api v3 do bling possui limites de requisições por minuto consulte a https //developer bling com br para os valores atuais e planeje fluxos de alto volume com paginação e controle de cadência paginação todas as operações de listagem utilizam paginação para processar grandes volumes, encadeie o conector em loops controlando o campo página escopos cada operação exige um escopo específico autorizado no aplicativo bling certifique se de que os escopos necessários estão habilitados antes de executar homologação aplicativos novos precisam passar pelo processo de homologação do bling antes de operar em contas de produção utilize o ambiente de testes para desenvolvimento e validação ids como referência na api v3, o id (inteiro) é o identificador padrão para todas as entidades diferentemente da v2, o código/sku não é mais utilizado como chave primária nas chamadas conclusão o conector bling integra a fluid ao erp bling utilizando a api v3 com oauth 2 0, permitindo automatizar operações de produtos, pedidos, contatos, estoques e notas fiscais de forma segura e escalável a autenticação via oauth garante controle granular de permissões por escopo, enquanto a estrutura rest da api v3 oferece respostas consistentes e previsíveis para construção de fluxos robustos