/
Microsoft Power-BI

Microsoft Power-BI

This documentation helps you to integrate Wordbee API With Power-BI


How to create custom requests on PowerBi Desktop

Step 1

Open PowerBI Desktop:

Step 2

Create a new blank query, go to the header menu and select "New Source > Empty Query"


Step 3

"Edit Queries" in order to create new specific queries for Wordbee API:


Request samples:

Change the query like the next part.

Reference: https://docs.microsoft.com/en-us/power-bi/desktop-query-overview

API v1


  • Get projects

let
    /*****************************
    * Variables
    *****************************/
	url = "http://api.wordbee-translator.com:32490/api/connect?account=accountCode&pwd=XXXXXXX",
	urlProjectsList = "http://api.wordbee-translator.com:32490/projects?token=",
	GetXml = Web.Contents(url),        
	XmlToken = Xml.Tables(GetXml),
	AccessToken = XmlToken{0}[#"Element:Text"],


    /*****************************
    * Results
    *****************************/
	Source = Xml.Tables(Web.Contents(Text.Combine({urlProjectsList, AccessToken}))),
        _Table = Source{0}[Table],
        Table = Table.TransformColumnTypes(_Table,{{"ClientCompanyId", Int64.Type}, {"ClientName", type text}, {"CreationDate", type datetime}, {"DefaultRefMaterialAccess", Int64.Type}, {"InProgressDate", type datetime}, {"OnlineUrl", type text}, {"ProjectId", Int64.Type}, {"ProjectType", type text}, {"ReceivedDate", type datetime}, {"Reference", type text}, {"ResourceId", Int64.Type}, {"SourceLocale", type text}, {"Status_", Int64.Type}})
in
Table



API v2


  • Get persons labels

let
    /*****************************
    * Variables
    *****************************/
    url = "http://www.wordbee-translator.com/api/auth/token",
    urlPersonLabels = "http://www.wordbee-translator.com/api/persons/labels",


    /*****************************
    * Functions
    *****************************/
    GetJson = Web.Contents(url, [ Headers = [#"Accept"="application/json",    
											 #"Content-Type"="application/json;charset=UTF-8"],
								  Content = Text.ToBinary("{'accountid': 'accountCode', 'key': 'XXXX-XXXX-XXXX-XXXX-XXXXXXXX'}")
	]),        


    /*****************************
    * Results
    *****************************/
    FormatAsJson = Json.Document(GetJson),
    AccessToken = FormatAsJson,
    Source = Json.Document(Web.Contents(urlPersonLabels, [Headers=[#"Accept"="application/json",    
																   #"Content-Type"="application/json;charset=UTF-8",
																   #"X-Auth-AccountId"="accountCode",
																   #"X-Auth-Token"= AccessToken ]]))
in
	Source


  • Get Label and expands options for multiple lines

let
    /*****************************
    * Variables
    *****************************/
    url = "http://www.wordbee-translator.com/api/auth/token",
    urlPersonLabels = "http://www.wordbee-translator.com/api/persons/labels",


    /*****************************
    * Functions
    *****************************/
    GetJson = Web.Contents(url, [Headers = [#"Accept"="application/json",    
											#"Content-Type"="application/json;charset=UTF-8"],
								Content = Text.ToBinary("{'accountid': 'accountCode', 'key': 'XXXX-XXX-XXXX-XXX-XXXXXXXX'}")
								]),        
    FormatAsJson = Json.Document(GetJson),
    AccessToken = FormatAsJson,


    /*****************************
    * Results
    *****************************/
    Source = Json.Document(Web.Contents(urlPersonLabels, [Headers=[ #"Accept"="application/json",    
																	#"Content-Type"="application/json;charset=UTF-8",
																	#"X-Auth-AccountId"="accountCode",
																    #"X-Auth-Token"= AccessToken ]])),
    labels = Source[labels],
    #"Converti en table" = Table.FromList(labels, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
    #"Column1 développé" = Table.ExpandRecordColumn(#"Converti en table", "Column1", {"id", "name", "isSticky", "isStickyInLists", "options"}, {"Column1.id", "Column1.name", "Column1.isSticky", "Column1.isStickyInLists", "Column1.options"}),
    #"Column1.options développé" = Table.ExpandListColumn(#"Column1 développé", "Column1.options"),
    #"Column1.options développé1" = Table.ExpandRecordColumn(#"Column1.options développé", "Column1.options", {"name", "value", "htmlColor"}, {"Column1.options.name", "Column1.options.value", "Column1.options.htmlColor"})
in
    #"Column1.options développé1"
  • Get all jobs with pagiation

let
    /*****************************
    * Variables
    *****************************/
    url = "https://www.wordbee-translator.com/api/auth/token",
    urlJobsList = "https://www.wordbee-translator.com/api/jobs/list",
    maxItems = 200,
    apiKey = "XXXX-XXXX-XXXX-XXXX-XXXX",
    accountid = "XXXX",

    /*****************************
    * Functions
    *****************************/
    GetToken = Web.Contents(url, [Headers = [ #"Accept"="application/json",    
				              #"Content-Type"="application/json;charset=UTF-8"],
                                  Content = Text.ToBinary("{'accountid': '" & accountid &"', 'key': '" & apiKey & "'}")]),
								  
    AccessToken = Json.Document(GetToken),
    GetBody = (page, take) => "{'query': '{created}.Matches(""-2m"", "">="")', 'take': '" & Text.From(take) & "','skip': '" & Text.From(page * take) & "'}",
    GetPartial = (page, take) => 
		let body = GetBody(page, take),
  		Value = Json.Document(Web.Contents(urlJobsList, [ Headers=[ #"Accept"="application/json",    
                                                                            #"Content-Type"="application/json;charset=UTF-8",
                                                                            #"X-Auth-AccountId"= accountid,
                                                                            #"X-Auth-Token"= AccessToken ],
					    			 Content = Text.ToBinary(body) ]))
		in Value,
    GetRange = (page) => GetPartial(page, maxItems),
	
    /*****************************
    * Results
    *****************************/
    Total = GetPartial(0, 0)[total],
    PageCount   = Number.RoundUp(Total / maxItems),
    PageIndices = { 0 .. PageCount - 1 },
    Pages       = List.Transform(PageIndices, each GetRange(_)[rows]),
    Entities    = List.Union(Pages),
    Source       = Table.FromList(Entities, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in
	Source





Related content

jobs/list
jobs/list
Read with this
Connect using PUT
Connect using PUT
More like this
API Documentation
API Documentation
More like this
Overview
Overview
More like this
Authentication
Authentication
More like this
Connecting
Connecting
More like this

Copyright Wordbee - Buzzin' Outside the Box since 2008