Using /api/dashboards to assign user groups to dashboards

Hi ,

We are trying to create dashboards using “/api/dashboards” api. While creating the dashboards , we also want to assign user groups to the dashboard.

The following is the json being posted ,

···

======================
{
“displayName”: “Chad”,
“name”: “Chad”,
“dashboardItems”: [
{
“chart”: {

            "id": "36041e3ee38"
        }
    },
    {
        "chart": {
            "id": "e7f643ca378"
        }
    }

],
"publicAccess": "--------",
"access": {
    "read": true,
    "manage": true,
    "update": true,
    "externalize": true,

    "write": true,
    "delete": true
},
"externalAccess": false,
"userGroupAccesses": [
  {
        "userGroup": {
            "id": "aede79b3fbf"

        }
    }

],
“id”: “abfd69cb586”
}

Though the above json , creates the dashboard , it does not assign the user group to it.

When I looked into the code ,

I saw that , HibernateGenericStore.java is a work in progress ,

==========

// TODO we might want to allow setting sharing props on save, but for now we null them out

        identifiableObject.setPublicAccess( null );
        identifiableObject.setUserGroupAccesses( new HashSet<UserGroupAccess>() );

==========

Is there any other way to assign user groups to dashboard ? Am I missing anything ?


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727

Hi

Are you OK with using two requests for this? we have a sharing API at /api/sharing that will do what you want

···

Morten

On Fri, Aug 29, 2014 at 3:10 AM, Sandesh Sukumar Doolipeta sandeshd@thoughtworks.com wrote:

Hi ,

We are trying to create dashboards using “/api/dashboards” api. While creating the dashboards , we also want to assign user groups to the dashboard.

The following is the json being posted ,

{
“displayName”: “Chad”,
“name”: “Chad”,
“dashboardItems”: [
{
“chart”: {

            "id": "36041e3ee38"
        }
    },
    {
        "chart": {
            "id": "e7f643ca378"
        }
    }



],
"publicAccess": "--------",
"access": {
    "read": true,
    "manage": true,
    "update": true,
    "externalize": true,



    "write": true,
    "delete": true
},
"externalAccess": false,
"userGroupAccesses": [
  {
        "userGroup": {
            "id": "aede79b3fbf"



        }
    }

],
“id”: “abfd69cb586”
}

Though the above json , creates the dashboard , it does not assign the user group to it.

When I looked into the code ,

I saw that , HibernateGenericStore.java is a work in progress ,

==========

// TODO we might want to allow setting sharing props on save, but for now we null them out

        identifiableObject.setPublicAccess( null );
        identifiableObject.setUserGroupAccesses( new HashSet<UserGroupAccess>() );

==========

Is there any other way to assign user groups to dashboard ? Am I missing anything ?


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727

Hi morten ,

Thanks for the reply :slight_smile: . Yes , I am okay with using two requests . Is there any documentation on the sharing api ? regarding its usage?

···

On Fri, Aug 29, 2014 at 12:22 PM, Morten Olav Hansen mortenoh@gmail.com wrote:

Hi

Are you OK with using two requests for this? we have a sharing API at /api/sharing that will do what you want


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727

Morten

On Fri, Aug 29, 2014 at 3:10 AM, Sandesh Sukumar Doolipeta sandeshd@thoughtworks.com wrote:

Hi ,

We are trying to create dashboards using “/api/dashboards” api. While creating the dashboards , we also want to assign user groups to the dashboard.

The following is the json being posted ,

{
“displayName”: “Chad”,
“name”: “Chad”,
“dashboardItems”: [
{
“chart”: {

            "id": "36041e3ee38"
        }
    },
    {
        "chart": {
            "id": "e7f643ca378"
        }
    }




],
"publicAccess": "--------",
"access": {
    "read": true,
    "manage": true,
    "update": true,
    "externalize": true,




    "write": true,
    "delete": true
},
"externalAccess": false,
"userGroupAccesses": [
  {
        "userGroup": {
            "id": "aede79b3fbf"




        }
    }

],
“id”: “abfd69cb586”
}

Though the above json , creates the dashboard , it does not assign the user group to it.

When I looked into the code ,

I saw that , HibernateGenericStore.java is a work in progress ,

==========

// TODO we might want to allow setting sharing props on save, but for now we null them out

        identifiableObject.setPublicAccess( null );
        identifiableObject.setUserGroupAccesses( new HashSet<UserGroupAccess>() );

==========

Is there any other way to assign user groups to dashboard ? Am I missing anything ?


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727

No, not really. But the API itself is quite simple, to get current sharing information, you just do:

/api/sharing/type=dashboard&id=ID (GET request)

and then to update, you can use (PUT/POST request):

/api/sharing/type=dashboard&id=ID

With your JSON payload

It’s probably easiest to just sniff on the POST with web inspector, and you will get an idea of the API, for example I set external, added a group, and set public read on a dashboard on our test server, and the resulting JSON was:

{

“meta”: {

“allowPublicAccess”: true,

“allowExternalAccess”: true

},

“object”: {

“id”: “iMnYyBfSxmM”,

“name”: “Delivery”,

“publicAccess”: “r-------”,

“externalAccess”: true,

“user”: {

“id”: “GOLswS44mh8”,

“name”: “Tom Wakiki”

},

“userGroupAccesses”: [

{

“id”: “wl5cDMuUhmF”,

“name”: “Administrators”,

“access”: “r-------”

}

]

}

}

The meta object you can just ignore, but the rest of the API should be clear enough.

Please write back if you need more information, I don’t think anyone else is using the sharing API, so there might be some rough edges.

···


Morten

On Fri, Aug 29, 2014 at 2:14 PM, Sandesh Sukumar Doolipeta sandeshd@thoughtworks.com wrote:

Hi morten ,

Thanks for the reply :slight_smile: . Yes , I am okay with using two requests . Is there any documentation on the sharing api ? regarding its usage?

On Fri, Aug 29, 2014 at 12:22 PM, Morten Olav Hansen mortenoh@gmail.com wrote:

Hi

Are you OK with using two requests for this? we have a sharing API at /api/sharing that will do what you want


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727

Morten

On Fri, Aug 29, 2014 at 3:10 AM, Sandesh Sukumar Doolipeta sandeshd@thoughtworks.com wrote:

Hi ,

We are trying to create dashboards using “/api/dashboards” api. While creating the dashboards , we also want to assign user groups to the dashboard.

The following is the json being posted ,

{
“displayName”: “Chad”,
“name”: “Chad”,
“dashboardItems”: [
{
“chart”: {

            "id": "36041e3ee38"
        }
    },
    {
        "chart": {
            "id": "e7f643ca378"
        }
    }






],
"publicAccess": "--------",
"access": {
    "read": true,
    "manage": true,
    "update": true,
    "externalize": true,






    "write": true,
    "delete": true
},
"externalAccess": false,
"userGroupAccesses": [
  {
        "userGroup": {
            "id": "aede79b3fbf"






        }
    }

],
“id”: “abfd69cb586”
}

Though the above json , creates the dashboard , it does not assign the user group to it.

When I looked into the code ,

I saw that , HibernateGenericStore.java is a work in progress ,

==========

// TODO we might want to allow setting sharing props on save, but for now we null them out

        identifiableObject.setPublicAccess( null );
        identifiableObject.setUserGroupAccesses( new HashSet<UserGroupAccess>() );

==========

Is there any other way to assign user groups to dashboard ? Am I missing anything ?


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727

Hi,

note there is a small typo above, it should be:

/api/sharing?type=dashboard&id=ID

I have written up some docs here:

https://www.dhis2.org/doc/snapshot/en/user/html/ch32s37.html

Lars

···

On Fri, Aug 29, 2014 at 9:28 AM, Morten Olav Hansen mortenoh@gmail.com wrote:

No, not really. But the API itself is quite simple, to get current sharing information, you just do:

/api/sharing/type=dashboard&id=ID (GET request)

and then to update, you can use (PUT/POST request):

/api/sharing/type=dashboard&id=ID

With your JSON payload

It’s probably easiest to just sniff on the POST with web inspector, and you will get an idea of the API, for example I set external, added a group, and set public read on a dashboard on our test server, and the resulting JSON was:

{

“meta”: {

“allowPublicAccess”: true,

“allowExternalAccess”: true

},

“object”: {

“id”: “iMnYyBfSxmM”,

“name”: “Delivery”,

“publicAccess”: “r-------”,

“externalAccess”: true,

“user”: {

“id”: “GOLswS44mh8”,

“name”: “Tom Wakiki”

},

“userGroupAccesses”: [

{

“id”: “wl5cDMuUhmF”,

“name”: “Administrators”,

“access”: “r-------”

}

]

}

}

The meta object you can just ignore, but the rest of the API should be clear enough.

Please write back if you need more information, I don’t think anyone else is using the sharing API, so there might be some rough edges.


Morten

On Fri, Aug 29, 2014 at 2:14 PM, Sandesh Sukumar Doolipeta sandeshd@thoughtworks.com wrote:

Hi morten ,

Thanks for the reply :slight_smile: . Yes , I am okay with using two requests . Is there any documentation on the sharing api ? regarding its usage?

On Fri, Aug 29, 2014 at 12:22 PM, Morten Olav Hansen mortenoh@gmail.com wrote:

Hi

Are you OK with using two requests for this? we have a sharing API at /api/sharing that will do what you want


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727

Morten

On Fri, Aug 29, 2014 at 3:10 AM, Sandesh Sukumar Doolipeta sandeshd@thoughtworks.com wrote:

Hi ,

We are trying to create dashboards using “/api/dashboards” api. While creating the dashboards , we also want to assign user groups to the dashboard.

The following is the json being posted ,

{
“displayName”: “Chad”,
“name”: “Chad”,
“dashboardItems”: [
{
“chart”: {

            "id": "36041e3ee38"
        }
    },
    {
        "chart": {
            "id": "e7f643ca378"
        }
    }







],
"publicAccess": "--------",
"access": {
    "read": true,
    "manage": true,
    "update": true,
    "externalize": true,







    "write": true,
    "delete": true
},
"externalAccess": false,
"userGroupAccesses": [
  {
        "userGroup": {
            "id": "aede79b3fbf"







        }
    }

],
“id”: “abfd69cb586”
}

Though the above json , creates the dashboard , it does not assign the user group to it.

When I looked into the code ,

I saw that , HibernateGenericStore.java is a work in progress ,

==========

// TODO we might want to allow setting sharing props on save, but for now we null them out

        identifiableObject.setPublicAccess( null );
        identifiableObject.setUserGroupAccesses( new HashSet<UserGroupAccess>() );

==========

Is there any other way to assign user groups to dashboard ? Am I missing anything ?


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727

Hi ,

Thanks for the quick replies :slight_smile: . I just tried using the sharing api , and it works as required.

@Lars , Thanks for the docs. :slight_smile:

···

On Fri, Aug 29, 2014 at 1:28 PM, Lars Helge Øverland larshelge@gmail.com wrote:

Hi,

note there is a small typo above, it should be:

/api/sharing?type=dashboard&id=ID

I have written up some docs here:

https://www.dhis2.org/doc/snapshot/en/user/html/ch32s37.html

Lars


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727

On Fri, Aug 29, 2014 at 9:28 AM, Morten Olav Hansen mortenoh@gmail.com wrote:

No, not really. But the API itself is quite simple, to get current sharing information, you just do:

/api/sharing/type=dashboard&id=ID (GET request)

and then to update, you can use (PUT/POST request):

/api/sharing/type=dashboard&id=ID

With your JSON payload

It’s probably easiest to just sniff on the POST with web inspector, and you will get an idea of the API, for example I set external, added a group, and set public read on a dashboard on our test server, and the resulting JSON was:

{

“meta”: {

“allowPublicAccess”: true,

“allowExternalAccess”: true

},

“object”: {

“id”: “iMnYyBfSxmM”,

“name”: “Delivery”,

“publicAccess”: “r-------”,

“externalAccess”: true,

“user”: {

“id”: “GOLswS44mh8”,

“name”: “Tom Wakiki”

},

“userGroupAccesses”: [

{

“id”: “wl5cDMuUhmF”,

“name”: “Administrators”,

“access”: “r-------”

}

]

}

}

The meta object you can just ignore, but the rest of the API should be clear enough.

Please write back if you need more information, I don’t think anyone else is using the sharing API, so there might be some rough edges.


Morten

On Fri, Aug 29, 2014 at 2:14 PM, Sandesh Sukumar Doolipeta sandeshd@thoughtworks.com wrote:

Hi morten ,

Thanks for the reply :slight_smile: . Yes , I am okay with using two requests . Is there any documentation on the sharing api ? regarding its usage?

On Fri, Aug 29, 2014 at 12:22 PM, Morten Olav Hansen mortenoh@gmail.com wrote:

Hi

Are you OK with using two requests for this? we have a sharing API at /api/sharing that will do what you want


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727

Morten

On Fri, Aug 29, 2014 at 3:10 AM, Sandesh Sukumar Doolipeta sandeshd@thoughtworks.com wrote:

Hi ,

We are trying to create dashboards using “/api/dashboards” api. While creating the dashboards , we also want to assign user groups to the dashboard.

The following is the json being posted ,

{
“displayName”: “Chad”,
“name”: “Chad”,
“dashboardItems”: [
{
“chart”: {

            "id": "36041e3ee38"
        }
    },
    {
        "chart": {
            "id": "e7f643ca378"
        }
    }








],
"publicAccess": "--------",
"access": {
    "read": true,
    "manage": true,
    "update": true,
    "externalize": true,








    "write": true,
    "delete": true
},
"externalAccess": false,
"userGroupAccesses": [
  {
        "userGroup": {
            "id": "aede79b3fbf"








        }
    }

],
“id”: “abfd69cb586”
}

Though the above json , creates the dashboard , it does not assign the user group to it.

When I looked into the code ,

I saw that , HibernateGenericStore.java is a work in progress ,

==========

// TODO we might want to allow setting sharing props on save, but for now we null them out

        identifiableObject.setPublicAccess( null );
        identifiableObject.setUserGroupAccesses( new HashSet<UserGroupAccess>() );

==========

Is there any other way to assign user groups to dashboard ? Am I missing anything ?


Sandesh DoolipetaApplication Developer
Email
sandeshd@thoughtworks.com

Telephone
9686062727