Plugins update automation.
Hello,
I'm trying to automate plugins upgrade through REST API. However, I'm facing some issues you might help with.
First, I cannot filter plugins based on their Origin. In the web UI, Origin appears either as Builtin, Store or Local dev, for instance :
I've filtered out Local dev using the "isDev" field. But I cannot find a corresponding field for Origin. Do you know a way to list only plugins coming from the store, either through REST API or a field I could filter reponse on ?
Second, according to documentation (https://doc.dataiku.com/dss/api/14/rest/#plugins-plugin-post-1), calling updateFromStore should return 204 on success. However, I only get 200 while performing some manual tests :
$ curl -i -s -H "Authorization: Bearer REDACTED" -H "Content-Type: application/json" -X POST https://REDACTED/public/api/plugins/document-question-answering/actions/updateFromStore
HTTP/1.1 200 OK
Server: nginx/1.14.1
Date: Wed, 03 Dec 2025 11:34:11 GMT
Content-Type: application/json;charset=utf-8
Transfer-Encoding: chunked
Connection: keep-alive
DSS-Version: 14.2.2
DSS-API-Version: 1
version-id: 14.2.2
DKU-Call-BackendTime: 60
Which one should be the expected behavior ?
Thank you for your help.
Kind regards,
Cédric
Best Answer
-
Alexandru Dataiker, Dataiku DSS Core Designer, Dataiku DSS ML Practitioner, Dataiku DSS Adv Designer, Registered Posts: 1,384 DataikerHi Cedric,
Indeed, the public API doesn't currently show the origin field. This is only available via the internal API.
Using 'isDev': False is your best option. Note that doing an update "update_from_store"
https://developer.dataiku.com/latest/api-reference/python/plugins.html#dataikuapi.dss.plugin.DSSPlugin.update_from_store
On a built-in plugin would have no impact it should just return :
Updated plugin: default-samples | Result: {'success': False, 'needsReload': False, 'needsRestart': False, 'installationError': {'errorType': 'com.dataiku.dip.exceptions.CodedException', 'message': 'Plugin has since been removed from the store.', 'detailedMessage': 'Plugin has since been removed from the store.'…The list of built-in plugins is pretty static, so you could hard-code it if needed to skip these.
import dataiku client = dataiku.api_client() for plugin in client.list_plugins(): plugin_obj = client.get_plugin(plugin['id']) is_dev = plugin.get('isDev', False) if not is_dev: future = plugin_obj.update_from_store() result = future.wait_for_result() print("Updated plugin:", plugin['id'], "| Result:", result)
Answers
-
Hello Alexandru,
Thank you for the info.
Kind regards,
Cedric
