はじめに
Movable Type Data API とは?
Movable Type 6 から搭載されている Web API です。さまざまなプログラム言語から REST/JSON方式で Movable Type にアクセスし、データの取得や更新ができます。
Data API を使えば、CMSで管理しているデータを、サイト上で自由に呼び出したり、また、独自の管理画面やアプリの開発や、他のプラットフォームとの連携などを容易に行うことができます。
Movable Type 9 で提供している API の最新バージョンは v7 です。
利用方法
Movable Type 7 r.4605 / 6.5.3 / 6.3.11 以降では、初期状態で Data API によるアクセスが禁止されています。利用するには、システムと対象のサイトで、管理画面からアクセスを許可してください。設定の方法は、システムスコープで Data API を設定するおよびサイトスコープで Data API を設定するを参照してください。
各バージョンごとのエンドポイントについて
Movable Type Data API は、API の各バージョンごとに定められている エンドポイントと呼ばれる URI に対して POST, GET, PUT, DELETE の HTTP(s) 要求を送ることで動作します。
Data API のバージョンごとに、利用できるエンドポイントが違う場合がありますので、各エンドポイントを利用する際には、バージョンごとに定められているベースの URI として、リクエストを行ってください。
例: Data API v7を利用して、記事の一覧を取得する
https://example.com/mt-data-api.cgi/v7/sites/1/entries
| Movable Type のバージョン | Data API のバージョン | エンドポイント |
|---|---|---|
| Movable Type 7 | v4.0 | https://path/to/mt-data-api.cgi/v4/ |
| Movable Type 7 r.5401 以降 | v5.0 | https://path/to/mt-data-api.cgi/v5/ |
| Movable Type 7 r.5404 以降 | v6.0 | https://path/to/mt-data-api.cgi/v6/ |
| Movable Type クラウド版 8.6.0 以降、ソフトウェア版 8.8.0 以降、Movable Type 9 | v7.0 | https://path/to/mt-data-api.cgi/v7/ |
認証方式
Data API では、Movable Type のユーザー管理機能を利用して認証を行います。また、ユーザーの権限をもとに、各リクエストに対しての認可を行います。これにより、Data API と Movable Type でユーザーを一元管理することができます。
認証が必要なエンドポイントへリクエストを行なう場合、リクエストごとにアクセストークンを付与する必要があります。詳しくはクイック スタートガイドをご覧ください。
Data API をより安全に利用するために
Data API のアクセスを禁止する
Data API からのアクセスは、サイト単位、あるいはシステム全体で禁止できます。Data API を使わないサイトでは、アクセスを禁止したままにしてください。詳しい設定方法は、以下のドキュメントをご覧ください。
クロスオリジン制約を見直す
Web ブラウザ の JavaScript を利用して外部のサイトから Data API にアクセスした場合、Web ブラウザのセキュリティ上の仕様で初期状態ではデータを取得することはできませんが、DataAPICORSAllowOrigin にデータの取得を許可するアクセス元を指定することで、外部のサイトからもアクセスが可能になります。このとき、適切なオリジンを設定することで、不要なサイトからのアクセスを許可しないようにできます。詳しくは、DataAPICORSAllowOrigin 環境変数のドキュメントをご覧ください。
取得できる情報を制限する
Data APIを利用すると、Movable Type で管理されているサイトや記事の情報が取得できます(一部の情報はユーザー認証が必要です)。サイトによっては、公開されたくない情報も API 経由で取得できます。
例えば、サイトの名称や URL などは公開しているけれども、サイトの ID は API で取得させたくない。というような場合があるかもしれません。
このような場合は、DisableResourceField 環境変数を 適切に設定することで、API 経由で取得できる情報に制限を設けることができます。
例えば、ブログの ID を制限する場合は、以下の内容を mt-config.cgi に記述します。
DisableResourceField blog=id