[13] 
[[CKAN]] の [[Web API]] のうち主要なものは他の同種の[[Webサービス]]にも実装され、
この分野の[[事実上の標準]]となっています。

[1] [[CKAN]] 本家のドキュメント:

[REFS[
- [15] 
[CITE@en[API guide — [[CKAN]] 2.10.4 documentation]], [TIME[2024-03-13T10:50:27.000Z]], [TIME[2024-04-13T12:32:27.540Z]] <https://docs.ckan.org/en/2.10/api/index.html>
-- [20] 
[CITE@en[API guide — [[CKAN]] 2.10.4 documentation]], [TIME[2024-03-13T10:50:27.000Z]], [TIME[2024-04-13T12:45:49.135Z]] <https://docs.ckan.org/en/2.10/api/index.html#ckan.logic.action.get.package_list>
-- [22] 
[CITE@en[API guide — [[CKAN]] 2.10.4 documentation]], [TIME[2024-03-13T10:50:27.000Z]], [TIME[2024-04-13T12:47:09.552Z]] <https://docs.ckan.org/en/2.10/api/index.html#ckan.logic.action.get.package_show>

]REFS]

* URL

[16] 
[CODE[http://demo.ckan.org/api/3/action/package_list]]
のような [[URL]] で[[パッケージ]]の一覧を、
[CODE[http://demo.ckan.org/api/3/action/package_show?id=adur_district_spending]]
のような [[URL]] で特定の[[パッケージ]]の情報を取得できます。
[SRC[>>15]]

[17] 
[CODE[3]]
は[[版番号]]を表しますが、省略できます。つまり
[CODE[http://demo.ckan.org/api/action/package_list]]
でもアクセスできます。
普通はこれで十分です。

[10] 
表示用のページは [CODE[body]] [[要素]]に
[CODE[data-site-root]]
属性があって、トップページの[[絶対URL]]
が入っています。
これに [CODE[/api/]] 以下をつなげると [[API]] の [[URL]] になります。

[11] 
多くのサイトは
[CODE[data-site-root]]
が[[サーバー]]の
[CODE[/]]
になっていますが、そうでない下位の[[ディレクトリー]]に割り当てられているケースもしばしば遭遇します。

[12] 
また、
[CODE[data-site-root]] 
の後に 
[CODE[ja/]]
のように[[言語]]を指定した[[ディレクトリー]]が続く [[URL]] でもアクセス可能です。
この場合のトップページは [CODE[body]] [[要素]]の
[CODE[data-locale-root]]
[[属性]]の [[URL]] になります。
[[API]] はこちらの [[URL]] を使ってもアクセスできますが、
[[言語]]がない場合と(おそらく)同じ[[応答]]を返していると思われます。



** 発見

- [4] [CITE@ja[データセット - 公共交通オープンデータセンター データカタログサイト]], [TIME[2024-04-21T09:09:50.000Z]] <https://ckan.odpt.org/dataset>

[5] >>4 このサイトは
<https://ckan.odpt.org/api/>
以下がすべて[[リダイレクト]]になっています。
意図的に潰されているように感じられます。

[6] 
>>4 このサイトはそもそも [[CKAN]] の仕組みをほとんど使っておらず、
データファイルのある [[URL]] を説明文に書いています
(大部分はアクセスが要申請で、ライセンスも非 [[OSS]])。

** プロトコル

[14] 
未だに[[素のHTTP]]のみを使ってアクセスできるサーバーが稼働しているので注意が必要です。
[SEE[ [[CKAN]] ]]

[24] 
[[非保安輸送路]]経由で取得した情報は、通常の[[保安輸送路]]経由の情報と区別して、信頼できない情報として取り扱う必要があります。

[25] 
[[API]] が[[HTTPS]]
でも、
[[API]] 経由で取得した [[URL]] が [CODE[http:]] [[URL]] のこともあり、注意が必要です。
[SEE[ [[CKAN資源]] ]]

* 応答

[18] 
正常な場合 [[HTTP]] [CODE[200]] [[応答]]で [[JSON]] データが返されます。
[SRC[>>15]]

[19] 
[[JSON]] は[[オブジェクト]]で、次の値を持ちます。

[FIG(list members)[

:[F[[CODE[success]]]]: 成功した場合は [CODE[true]] となります。 [SRC[>>15]]
:[F[[CODE[result]]]]: 結果になります。 [SRC[>>15]]
:[F[[CODE[help]]]]:
説明ページの [[URL]] です。
実際のサーバーの応答を見ると、
外部からはアクセスできない内部的な[[URL]]になっていることがしばしばあります。
[[逆プロキシ]]など実際のネットワーク構成が設定に反映されていないのでしょう。
そのまま放置されているのは、誰も使っていない (し何に使うのかもよくわからないのでどうでもいい) 
ということなのでしょう。

]FIG]

* エンドポイント

** [CODE[package_list]]

[21] [CODE[package_list]] には [CODE[offset]], [CODE[limit]] を指定できます。
どちらも整数です。どちらも省略可能です。
[SRC[>>20]]

** [CODE[package_show]]

[23] [CODE[package_show]] には [CODE[id]] を指定します。
[[データ集合]]の ID または名前を表します。
[SRC[>>20]]

* パッケージ

[2] 今の [[CKAN]] は [[dataset]] ([[データ集合]]) と呼んでいるものが、
[[API]] では [[package]] ([[パッケージ]]) と呼ばれています。
[SEE[ [[CKANパッケージ]] ]]

* 他の実装

[7] 
[CITE[[[データカタログ横断検索システム]]]]
は
[[CKAN API]]
の一部と互換性のある独自の実装をしています。
[SRC[>>8]]
表示ページの [[URL]] と [[API]] の [[URL]] の [[path][URL path]] 
の関係性が本家 [[CKAN]] とは少し違います。

[9] 
ほとんど同じなのに [[URL]] が微妙に違うのが使いづらいよねえ。
なんでこんなのにしたんだろ?
それとも昔は [[CKAN API]] もそうだったのかな、そうだとしたら [[CKAN]]
が邪悪ってことになるけど。どっちだろ?

[REFS[

- [8] 
[CITE[[[データカタログ横断検索システム]] - データカタログ横断システム]], [TIME[2024-04-27T03:37:59.000Z]] <https://search.ckan.jp/api>

]REFS]

* メモ
