Community Tip - Visit the PTCooler (the community lounge) to get to know your fellow community members and check out some of Dale's Friday Humor posts! X
Hi,
I try to create a thing that export things and data via "ThingWorx Git Extension" automatically via scheduler (for example every night). Exporting things is not a problem. But how can I programmatically export data? Is there any service or ressource that can do this?
Thanks in advance.
Solved! Go to Solution.
You can trigger DataExport as if you where on the Coposer:
var exportAllDataURL = "https://YOUR_SERVER/Thingworx/DataExporter/?Accept=application/octet-stream&repositoryName=SystemRepository&path=/Platform.Data&appKey="+AN_ADMINISTRATOR_API_KEY_THERES_A_SECURITY_RISK_HERE_BUT_THE_PETITION_ITS_DONE_ON_THE_SAME_SERVER+"&_="+Math.random(); var result = Resources["ContentLoaderFunctions"].GetText({ proxyScheme: undefined /* STRING */, headers: undefined /* JSON */, ignoreSSLErrors: true , useNTLM: undefined /* BOOLEAN */, workstation: undefined /* STRING */, useProxy: undefined /* BOOLEAN */, withCookies: undefined /* BOOLEAN */, proxyHost: undefined /* STRING */, url: exportAllDataURL , timeout: undefined /* NUMBER */, proxyPort: undefined /* INTEGER */, password: undefined /* STRING */, domain: undefined /* STRING */, username: undefined /* STRING */ });
You can trigger DataExport as if you where on the Coposer:
var exportAllDataURL = "https://YOUR_SERVER/Thingworx/DataExporter/?Accept=application/octet-stream&repositoryName=SystemRepository&path=/Platform.Data&appKey="+AN_ADMINISTRATOR_API_KEY_THERES_A_SECURITY_RISK_HERE_BUT_THE_PETITION_ITS_DONE_ON_THE_SAME_SERVER+"&_="+Math.random(); var result = Resources["ContentLoaderFunctions"].GetText({ proxyScheme: undefined /* STRING */, headers: undefined /* JSON */, ignoreSSLErrors: true , useNTLM: undefined /* BOOLEAN */, workstation: undefined /* STRING */, useProxy: undefined /* BOOLEAN */, withCookies: undefined /* BOOLEAN */, proxyHost: undefined /* STRING */, url: exportAllDataURL , timeout: undefined /* NUMBER */, proxyPort: undefined /* INTEGER */, password: undefined /* STRING */, domain: undefined /* STRING */, username: undefined /* STRING */ });
Nice. This seems to work. For which reason you put Math.random() at the end?
Usually it's done to prevent cache/proxy responses.
Big thank you :)
And is there any way to detect that the export is finished?
You will need to query Log Entries there's a message saying it.
Hmm parsing log entries seems not much fun.
I have a next problem. The security log says: "ApplicationKey Is Not Allowed As A URL Parameter." (error) and the ApplicationLog says: "The REST API was accessed using an appKey url parameter with a valid keyId" (warning).
Yes it's "fun" I mean you have a snippet to query Log Entries ;)
var result = Logs["The_desired_log"].QueryLogEntries...
About the warning/error you are getting it's normal, as starting ( I don't remember the TW version ) this isn't allowed - it's a security risk - and you will have to enable it on PlatformSubsystem "Allow Application Key as URL Parameter"