こんにちは、学生エンジニアのKawaguchiです。
今回は、curlだけでMovable Typeに記事を投稿する方法の応用編についてです。
Movable Type Data API ドキュメントの中から一部だけ紹介していきます。

条件付きで記事一覧を取得する方法

取得する記事数を指定する

何も指定しない場合は、デフォルトで10記事が取得されるのですが、

$ curl http://<your-host>/<path-to-mt>/mt-data-api.cgi/<mt-version>/sites/<site-id>/entries?limit=<取得したい記事数>

というように、entriesの後に、?limit=<取得したい記事数>を指定することで、記事数の指定ができます。
(その他の指定可能な条件はこちら)

カテゴリーを指定して投稿する

カテゴリーを指定して投稿するには、カテゴリーのidが必要となります。
流れとしては、カテゴリーの一覧を取得してから、カテゴリーのidを確認して、このidを記事を作成する時のData APIで指定します。

カテゴリーの一覧を取得する

$ curl http://<your-host>/<path-to-mt>/mt-data-api.cgi/<mt-version>/sites/<site-id>/categories

と実行すると、

{
  "totalResults" : "1",
  "items" : [
    {
    "basename" : "news",
    "parent" : "0",
    "archiveLink" : "http://example.com/news/index.html",
    "updatable" : false,
    "label" : "News",
    "class" : "category",
    "id" : 2,
    "blog" : {
      "id" : "1"
    },
    "description" : null
  ]
}

というようなJSONが返ってきます。

カテゴリーを指定して投稿

先ほど取得したJSONのレスポンスの中から、idを以下の通りに指定します。
また、アクセストークンを取得する方法は前回の記事に記載しております。

$ curl -X POST -H "X-MT-Authorization: MTAuth accessToken=<事前に取得したアクセストークン>" -d entry="{\"title\" : \"sample_title\", \"body\" : \"sample_body\", \"categories\":[{\"id\":2}]}" http://<your-host>/<path-to-mt>/mt-data-api.cgi/<mt-version>/sites/<site-id>/entries

投稿後の記事を削除・非公開にする方法

記事を削除する

-XにDELETEを指定して、削除したい記事のentry_idを指定すれば、削除することができます。

$ curl -X DELETE -H "X-MT-Authorization: MTAuth accessToken=<事前に取得したアクセストークン>" http://<your-host>/<path-to-mt>/mt-data-api.cgi/<mt-version>/sites/<site-id>/entries/<entry-id>

記事を非公開にする

記事が公開されている状態は、statusがPublishで、非公開の時はDraftとなっているので、
-XにPUTを指定して、-dのentryの中のstatusにDraftを指定します。そして、非公開にしたい記事のentry_idを指定すれば、非公開にすることができます。

$ curl -X PUT -H "X-MT-Authorization: MTAuth accessToken=<事前に取得したアクセストークン>" -d entry="{\"status\" : \"Draft\"}" http://<your-host>/<path-to-mt>/mt-data-api.cgi/<mt-version>/sites/<site-id>/entries/<entry-id>

まだまだ紹介しきれないほどData APIはたくさんあります!
みなさんも是非、Data APIを試してみてはいかがでしょうか?

Posted in RPA