Удалить и очистить пакет в CKAN с помощью API?

Используя CKAN API, я могу удалить пакет (который помечает его как неактивный). Но как я могу удалить его (удалить из базы данных), используя API, а НЕ интерфейс администратора?

1 ответ

Решение

CKAN API в настоящее время не поддерживает очистку корзины, но вы можете автоматизировать отправку формы очистки администратора с помощью POST для /ckan-admin/trash с полезной нагрузкой "purge-packages=purge" в качестве администратора. Вот как в Python:

import urllib2

admin_api_key = '<my_admin_api_key>'
ckan_base = 'http://my_site.net'

request = urllib2.Request('{0}/ckan-admin/trash'.format(ckan_base))
request.add_header('Authorization', admin_api_key)
response = urllib2.urlopen(request, 'purge-packages=purge')
assert response.code == 200

Просто обновление для более новых версий CKAN.

Теперь вы можете выполнить очистку напрямую с помощью API.

https://docs.ckan.org/en/2.8/api/

import requests

api_token = 'Xxxx-XXXXX-xxx-xxx'
endpoint = 'http://<url>/api/3/action/dataset_purge'
headers = {'Content-type': 'application/json',
           'Authorization': api_token}

payload = {'id': 'id or name of dataset'}

res = requests.post(endpoint,
                    json=payload,
                    headers=headers)

print(res.status_code, res.reason)

Вы также можете проверить действия массового удаления ckanapi.

Другие вопросы по тегам