Forum Discussion

ck_data_analyst's avatar
ck_data_analyst
Frequent Visitor
5 months ago
Solved

OAuth setup for Jira - Power BI Integration

Hi everyone, I'm looking for some guidance on an OAuth setup issue I'm currently facing for Jira to Power BI integration. I'm in the process of switching my dashboard from Basic Auth to OAuth using ...
  • v-aatheeque's avatar
    v-aatheeque
    5 months ago

    Hi ck_data_analyst 

    let

        ClientId        = client_id,
        ClientSecret    = client_secret,
        BoardId         = "856",
        MaxResults      = 100,

     

        TokenUrl  = "https://auth.atlassian.com/oauth/token",

     

        TokenBody =
            "grant_type=client_credentials" &
            "&client_id=" & ClientId &
            "&client_secret=" & ClientSecret &
            "&scope=" & Uri.EscapeDataString("read:jira-work read:jira-user"),

     

        TokenResponse =
            Json.Document(
                Web.Contents(
                    TokenUrl,
                    [
                        Headers=[#"Content-Type"="application/x-www-form-urlencoded"],
                        Content=Text.ToBinary(TokenBody)
                    ]
                )
            ),

     

        AccessToken = TokenResponse[access_token],
        CloudList =
            Json.Document(
                Web.Contents(
                    "https://api.atlassian.com/oauth/token/accessible-resources",
                    [
                        Headers=[
                            Authorization="Bearer " & AccessToken,
                            Accept="application/json"
                        ]
                    ]
                )
            ),

     

        CloudId = CloudList{0}[id],

     

        GetPage = (startAt as number) as record =>
            let
                QueryString = Uri.BuildQueryString(
                    [
                        maxResults = Text.From(MaxResults),
                        startAt    = Text.From(startAt)
                    ]
                ),

     

                FullUrl =
                    "https://api.atlassian.com/ex/jira/" &
                    CloudId &
                    "/rest/agile/1.0/board/" & BoardId & "/issue?" &
                    QueryString,

     

                Raw =
                    Web.Contents(
                        FullUrl,
                        [
                            Headers=[
                                Accept="application/json",
                                Authorization="Bearer " & AccessToken
                            ]
                        ]
                    ),

     

                Json = Json.Document(Raw)
            in
                Json,

     

        First     = GetPage(0),
        PageSize  = First[maxResults],
        Total     = First[total],

     

        PageCount = Number.RoundUp(Total / PageSize),
        IndexList = {0 .. PageCount - 1},

     

        AllPages =
            List.Transform(
                IndexList,
                each GetPage(_ * PageSize)[issues]
            ),

     

        AllIssues = List.Combine(AllPages),

     

        Table0 = Table.FromList(AllIssues, Splitter.SplitByNothing(), {"Column1"}),
        Final  = Table.ExpandRecordColumn(Table0, "Column1")
    in
        Final

     

     


    FYI : As Suggested In the above screenshot to Replace with your the client_id , client_secret and BoardId.

     

    Hope this helps!!

    Thank You.