cancel
Showing results for 
Search instead for 
Did you mean: 
cancel
Showing results for 
Search instead for 
Did you mean: 

Community Tip - You can change your system assigned username to something more personal in your community settings. X

Export data from Valuestream/DataTable programmatically

drichter
15-Moonstone

Export data from Valuestream/DataTable programmatically

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.

ACCEPTED SOLUTION

Accepted Solutions

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 */
});

View solution in original post

8 REPLIES 8

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 */
});
drichter
15-Moonstone
(To:CarlesColl)

Nice. This seems to work. For which reason you put Math.random() at the end?

Usually it's done to prevent cache/proxy responses.

drichter
15-Moonstone
(To:drichter)

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.

drichter
15-Moonstone
(To:CarlesColl)

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"

Announcements


Top Tags