March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
https://learn.microsoft.com/en-us/rest/api/power-bi/gateways/update-datasource
The Power BI REST API call mentioned above is a PATCH request that is used to change/update the datasource credentials.
Request body is the credentialDetails, whose format is different for different credentials type.
For basic credentials with username and password, it looks like the following -
{ "credentialDetails": { "credentialType": "Basic", "credentials": "{\"credentialData\":[{\"name\":\"username\", \"value\":\"john\"},{\"name\":\"password\", \"value\":\"*****\"}]}", "encryptedConnection": "Encrypted", "encryptionAlgorithm": "None", "privacyLevel": "None", "useEndUserOAuth2Credentials": "False" } }
For on-premise encrypted credentials -
{ "credentialDetails": { "credentialType": "Windows", "credentials": "AB....EF==", "encryptedConnection": "Encrypted", "encryptionAlgorithm": "RSA-OAEP", "privacyLevel": "None" } }
The problem I am facing is that the credentials I want to update is On-premise with "Windows" credential type with username and password. But I am not able to find the right json format for such a request. If anyone can help, please.
power BI rest API with python Power BI REST API Update datasource credentials
Solved! Go to Solution.
I found the answer. For using WIndows credentials, first the credentials need to be encrypted to a credential string.
The python example is given here - https://github.com/microsoft/PowerBI-Developer-Samples/tree/master/Python/Encrypt%20credentials
I found the answer. For using WIndows credentials, first the credentials need to be encrypted to a credential string.
The python example is given here - https://github.com/microsoft/PowerBI-Developer-Samples/tree/master/Python/Encrypt%20credentials
Hey @muhammed24 did you try to use the following format?
"credentials": "{\"credentialData\":[{\"name\":\"username\", \"value\":\"john\"},{\"name\":\"password\", \"value\":\"*****\"}]}"
Let me know if this works:)
@Anonymous
I tried your format. It is not working. Gave an PrimitiveValue error. Then I tried the same format within curly brackets and I get the following error.
{
"error": {
"code": "BadRequest",
"message": "Bad Request",
"details": [
{
"message": "The property 'credentials' does not exist on type 'Microsoft.PowerBI.ServiceContracts.Api.GatewayDatasource'. Make sure to only use property names that are defined by the type.",
"target": "datasourceDelta"
}
]
}
}
I see. This means that with "credentialtype" Windows we are not allow to use the format above. Did you try with Basic Credentials? https://learn.microsoft.com/en-us/rest/api/power-bi/gateways/update-datasource#basic-credentials-exa...
@Anonymous Yes I did. I tried various combinations too, it didn't work. But I learnt that we have to encrypt the Windows Username and password into a single string and use that as credential. So I am now trying to find the way to do that encryption in Python. (I made a new question)
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!