2

I'm running Mirth 3.6.1 with CKAN 2.8 and being a newbie to this I've run into an issue: Is there a way to access resources in private datasets in CKAN through API requests? I can't seem to do it.

I have an organization with a public dataset and I can can go through Mirth via the API router to the correct Mirth channel and get the data from CKAN, like normal, with an API request. But if I make the dataset private, it all falls apart. Even though I use the correct API-key. Although, that doesn't seem to make a difference. I get success true regardless of whether I use the API-key or not (or if it's even the correct key)

The API-key included in the request is that of the sysadmin.

When I directly access the CKAN resource through a CKAN-endpoint and the dataset is public, I get this response:

{
    "help": "https://URL/api/3/action/help_show?name=resource_search", (URL instead of real url)
    "success": true,
    "result": {
        "count": 1,
        "results": [
            {
                "mimetype": null,
                "cache_url": null,
                "state": "active",
                "hash": "REDACTED__", (sensitive data)
                "description": "",
                "format": "",
                "url": "https://URL/datastore/dump/0696c0a1-b249-4fd5-ba80-caf7046a650b", (URL instead of real url)
                "datastore_active": true,
                "created": "2019-03-19T00:30:04.313593",
                "cache_last_updated": null,
                "package_id": "11211598-34f8-4d67-ab34-b7fd590ae08d",
                "mimetype_inner": null,
                "last_modified": null,
                "position": 1,
                "revision_id": "17b85d36-4ec1-4645-b9b1-dcfe310a54e6",
                "size": null,
                "url_type": "datastore",
                "id": "0696c0a1-b249-4fd5-ba80-caf7046a650b",
                "resource_type": null,
                "name": "REDACTED" (sensitive data)
            }
        ]
    }
}

When the dataset is private, regardless of whether I include the API-key or not (or if it's even the real api-key), I get this response:

{
    "help": "https://URL/api/3/action/help_show?name=resource_search",
    "success": true,
    "result": {
        "count": 0,
        "results": []
    }
}

So, how can I do a resource_search for a resource in a private dataset?

Thanks in advance.

Gilles Heinesch
  • 2,889
  • 1
  • 22
  • 43
  • What is the API router? How is your mirth channel implemented? How are you making the request? Maybe your channel isn't passing through the header with the API key? – agermano Mar 22 '19 at 01:19

1 Answers1

3

Yes you can do that by using include_private:True in the dataset

Please see the below link https://docs.ckan.org/en/2.8/api/index.html#ckan.logic.action.get.package_search

Shubham Mahajan
  • 221
  • 1
  • 7
  • 1
    Just note that the behaviour is slightly different depending on user role. _"**include_private (bool) –** if True, private datasets will be included in the results. Only private datasets from the user’s organizations will be returned and sysadmins will be returned all private datasets. Optional, the default is False."_ – user3366016 Apr 29 '19 at 21:32