CKAN API

CKAN API

[13] CKANWeb API のうち主要なものは他の同種のWebサービスにも実装され、 この分野の事実上の標準となっています。

[1] CKAN 本家のドキュメント:

URL

[16] http://demo.ckan.org/api/3/action/package_list のような URLパッケージの一覧を、 http://demo.ckan.org/api/3/action/package_show?id=adur_district_spending のような URL で特定のパッケージの情報を取得できます。 >>15

[17] 3版番号を表しますが、省略できます。つまり http://demo.ckan.org/api/action/package_list でもアクセスできます。 普通はこれで十分です。

[10] 表示用のページは body 要素data-site-root 属性があって、トップページの絶対URL が入っています。 これに /api/ 以下をつなげると APIURL になります。

[11] 多くのサイトは data-site-rootサーバー/ になっていますが、そうでない下位のディレクトリーに割り当てられているケースもしばしば遭遇します。

[12] また、 data-site-root の後に ja/ のように言語を指定したディレクトリーが続く URL でもアクセス可能です。 この場合のトップページは body 要素data-locale-root 属性URL になります。 API はこちらの URL を使ってもアクセスできますが、 言語がない場合と(おそらく)同じ応答を返していると思われます。

発見

[5] >>4 このサイトは https://ckan.odpt.org/api/ 以下がすべてリダイレクトになっています。 意図的に潰されているように感じられます。

[6] >>4 このサイトはそもそも CKAN の仕組みをほとんど使っておらず、 データファイルのある URL を説明文に書いています (大部分はアクセスが要申請で、ライセンスも非 OSS)。

プロトコル

[14] 未だに素のHTTPのみを使ってアクセスできるサーバーが稼働しているので注意が必要です。 CKAN

[24] 非保安輸送路経由で取得した情報は、通常の保安輸送路経由の情報と区別して、信頼できない情報として取り扱う必要があります。

[25] APIHTTPS でも、 API 経由で取得した URLhttp: URL のこともあり、注意が必要です。 CKAN資源

応答

[18] 正常な場合 HTTP 200 応答JSON データが返されます。 >>15

[19] JSONオブジェクトで、次の値を持ちます。

success
成功した場合は true となります。 >>15
result
結果になります。 >>15
help
説明ページの URL です。 実際のサーバーの応答を見ると、 外部からはアクセスできない内部的なURLになっていることがしばしばあります。 逆プロキシなど実際のネットワーク構成が設定に反映されていないのでしょう。 そのまま放置されているのは、誰も使っていない (し何に使うのかもよくわからないのでどうでもいい) ということなのでしょう。

エンドポイント

package_list

[21] package_list には offset, limit を指定できます。 どちらも整数です。どちらも省略可能です。 >>20

package_show

[23] package_show には id を指定します。 データ集合の ID または名前を表します。 >>20

パッケージ

[2] 今の CKANdataset (データ集合) と呼んでいるものが、 API では package (パッケージ) と呼ばれています。 CKANパッケージ

他の実装

[7] データカタログ横断検索システムCKAN API の一部と互換性のある独自の実装をしています。 >>8 表示ページの URLAPIURLpath の関係性が本家 CKAN とは少し違います。

[9] ほとんど同じなのに URL が微妙に違うのが使いづらいよねえ。 なんでこんなのにしたんだろ? それとも昔は CKAN API もそうだったのかな、そうだとしたら CKAN が邪悪ってことになるけど。どっちだろ?

メモ