1
resposta

[Dúvida] Login em API no Power BI em Linguagem M

Bom dia!

Aprendi a fazer a conexão em uma API JSON usando a linguagem M no Curso Dominando o Power BI. Abaixo escrevi o código que faz a requisição na API do ERP Sienge e faz os devidos tratamentos para que possa apresentar os dados todos tabelados.

Porém, esta API tem uma conexão web básica onde solicita login e senha, mas durante o curso fala sobre de uma forma vaga e confesso que não compreendi.

Gostaria da ajuda dos participantes do fórum como posso inserir as informações de login e senha dentro do código abaixo?

let
      Fonte = Json.Document(
        Web.Contents(
            "https://api.sienge.com.br",
                [
                    RelativePath =  "/{subdomain-do-cliente}/public/api/v1/sales-contracts?",
                        Query = [
                            limit = Number.ToText(200),
                            offset = Number.ToText(0)

                        ]
                ]
        )
    ),

    #"Requisição" =
        (numeroPagina) => 
            Json.Document(
                Web.Contents("https://api.sienge.com.br",
                    [
                        RelativePath = "/{subdomain-do-cliente}/public/api/v1/sales-contracts?",
                            Query = [
                                limit = Number.ToText(200),
                                offset = Number.ToText(numeroPagina)
                            ]
                    ]
                )
            ),

    #"Resultado" = Fonte[resultSetMetadata][count],

    #"Limit" = Fonte[resultSetMetadata][limit],

    #"Paginas" = Number.RoundUp(#"Resultado" / #"Limit"),    

    #"Tabela" = 
        Table.ExpandRecordColumn(
            Table.ExpandListColumn(
                Table.FromList(
                    List.Generate(
                        ()=> [ Pagina = 0, Consulta = try #"Requisição"(0)[results] otherwise null],
                        each [Pagina] < #"Paginas",
                        each [Consulta = try #"Requisição"([Pagina]+1)[results] otherwise null, Pagina = [Pagina]+1],
                        each [Consulta]
                    ), Splitter.SplitByNothing(), null, null, ExtraValues.Error

                ), "Column1"

            ), "Column1", 

            {"id", "enterpriseId", "receivableBillId", "number", "correctionType", "situation", "discountType", "cancellationReason", "discountPercentage", "value", "totalSellingValue", "contractDate", "issueDate", "cancellationDate", "creationDate", "lastUpdateDate", "proRataIndexer", "interestPercentage", "interestType", "fineRate", "lateInterestCalculationType", "dailyLateInterestValue", "containsRemadeInstallments", "externalId", "keysDeliveredAt", "brokers", "salesContractCustomers", "salesContractUnits", "paymentConditions", "links"}
        )
in
    #"Tabela"
1 resposta

Oi, Gleydson. Como você está?

Desculpe por demorar a te responder.

Para inserir as informações de login e senha na conexão com a API, você pode utilizar a função Web.Contents juntamente com o parâmetro Headers. Esse parâmetro permite que você envie informações adicionais na requisição HTTP, como o login e a senha.

Aqui está um rascunho de como pode ficar seu código:

let
    // Defina as informações de login e senha
    login = "seu_login",
    senha = "sua_senha",

    // Crie o cabeçalho com as informações de login e senha
    headers = [
        Authorization = "Basic " & Binary.ToText(Text.ToBinary(login & ":" & senha), BinaryEncoding.Base64)
    ],

    // Faça a requisição na API incluindo o cabeçalho
    Fonte = Json.Document(
        Web.Contents(
            "https://api.sienge.com.br",
            [
                Headers = headers,
                RelativePath = "/{subdomain-do-cliente}/public/api/v1/sales-contracts?",
                Query = [
                    limit = Number.ToText(200),
                    offset = Number.ToText(0)
                ]
            ]
        )
    ),

    // Restante do seu código...
in
    #"Tabela"

Lembre-se de substituir "seu_login" e "sua_senha" pelas suas informações de login e senha, respectivamente. Além disso, lembre-se de substituir "{subdomain-do-cliente}" pelo subdomínio correto do seu cliente.

Como é um caso específico, é necessário que sejam feitos testes e adequações. Além disso, consultar a documentação da API pode ajudar a entender o padrão de requisição.

Espero que dê tudo certo!

Abraços.