Qlik Community

Qlik Sense Integration, Extensions, & APIs

Discussion board where members can learn more about Integration, Extensions and API’s for Qlik Sense.

Not applicable

How to change App / AppObject owner using the API?

I'm using the REST API to duplicate an app with user internal\sa_repository. This means the duplicated app and its objects are owned by internal\sa_repository. Is it possible to change the ownerId on the app and its objects?


What I've tried...


I've performed the change of owner in QMC while having Fiddler running in the background. It appears to me that the endpoint is as follows:


https://[servername]/qrs/Selection/16c01704-74bd-4e1f-84e8-768ae8b150aa/App/Object/synthetic?xrfkey=...


The request type is PUT and the body contains an array of properties. I've noticed that the property named 'owner' has these values:


{

  "name": "owner",

  "value": "b6145ba2-66b5-4b71-a062-45d6d8b49469",

  "valueIsDifferent": false,

  "valueIsModified": true

},

... which leads me to believe that 'valueIsModified' is the input argument to the engine on what to change.

So I constructed a request body that is much smaller than the one that QMC generates:

URI: https://[servername]:4242/qrs/Selection/5d79c08e-6726-4e23-bc9f-c1f58b828092/App/Object/synthetic?Xr...

Body:

{

  "properties": [{

  "name": "owner",

  "value": "b6145ba2-66b5-4b71-a062-45d6d8b49469",

  "valueIsDifferent": false,

  "valueIsModified": true

  }],

  "type": "App.Object"

}

Unfortunately, I get the error message back:

[{

  "schemaPath": "Selection",

  "errorText": "Cannot find the item for the \"Get\" operation."

}]

I am sure that the appObject in the URI exists cause I see it in /qmc/appobjects.

What am I missing?

1 Solution

Accepted Solutions
s29124141
Contributor II

Re: How to change App / AppObject owner using the API?

  • First create a selection object with POST body with objectId as app Id

  {"items":[{"type":"App","objectID":"c0d3bc5b-6ea2-42ea-8ecb-3bc90077bb34"}]}

  • Then call synthetic endpoint. It should be PUT not GET. Remember to add LatestModifiedDate

URI: https://[servername]:4242/qrs/Selection/5d79c08e-6726-4e23-bc9f-c1f58b828092/App/synthetic?Xrfkey=aa...

Body:

{

  "properties": [{

  "name": "owner",

  "value": "b6145ba2-66b5-4b71-a062-45d6d8b49469",

  "valueIsModified": true

  }],

  "type": "App",

"LatestModifiedDate": CurrentTime

}

4 Replies
s29124141
Contributor II

Re: How to change App / AppObject owner using the API?

  • First create a selection object with POST body with objectId as app Id

  {"items":[{"type":"App","objectID":"c0d3bc5b-6ea2-42ea-8ecb-3bc90077bb34"}]}

  • Then call synthetic endpoint. It should be PUT not GET. Remember to add LatestModifiedDate

URI: https://[servername]:4242/qrs/Selection/5d79c08e-6726-4e23-bc9f-c1f58b828092/App/synthetic?Xrfkey=aa...

Body:

{

  "properties": [{

  "name": "owner",

  "value": "b6145ba2-66b5-4b71-a062-45d6d8b49469",

  "valueIsModified": true

  }],

  "type": "App",

"LatestModifiedDate": CurrentTime

}

Not applicable

Re: How to change App / AppObject owner using the API?

Hi praveena.

I should have marked the thread as closed a long time ago but this is essentially what I did in the end, thanks for your help though.

As for the URI I used qrs/Selection/{0}/App/Object/synthetic where {0} is the appId.

Also, for the value CurrentTime I had to format the resulting time as such:

DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ").

I'll mark your answer as the correct one.

Not applicable

Re: How to change App / AppObject owner using the API?

Hi

Being new to the QRS API I'm interested to know if this is a two step procedure if doing this using Postman.

Please can you explain a little more about the first step "First create a selection object" ?


Thanks


anewlands
New Contributor

Re: How to change App / AppObject owner using the API?

Hi Jack


We are also struggling to change the owner of an app through the QRS API for Qlik Sense.

From what I can gather online I need to use the URL qrs/Selection/{0}/App/synthetic where {0} is the app ID and send a PUT request.

You pass through a JSON object with the body:

{\"properties\": [{\"name\": \"owner\",\"value\": \"" + id + "\",\"valueIsModified\": true, \"valueIsdifferent\": true}],\"type\": \"App\",\"LatestModifiedDate\": \"" + DateTime.Now.ToString("yyyy-MM-ddTHH:mm:ss.fffZ") + "\"}

Where id is the id of the user you want the new owner to be.

I get a response saying this path is not valid, indicating possibly the URL is not valid.

s29124141