※旧AtomPub APIについてはこちら
AtomPub (Atom Publishing Protocol) API はRFC 5023に基いた、ブログ投稿・編集用の API です。
このドキュメントでは、ライブドアブログでの仕様について説明します。
AtomPub API でできること、できないこと
記事の投稿や編集、画像の投稿などができます。AtomPub APIでできること
URL | get | post | put | delete |
---|---|---|---|---|
article | 記事の投稿 | 利用不可 | 利用不可 | |
article/ARTICLE_ID | ARTICLE_IDで指定された記事の取得 | 利用不可 | ARTICLE_IDで指定した記事の更新 | ARTICLE_IDで指定した記事の削除 |
category | 全記事カテゴリー情報の取得 | 利用不可 | 利用不可 | 利用不可 |
image | 利用不可 | 画像の投稿 | 利用不可 | 利用不可 |
image/IMAGE_ID | IMAGE_IDで指定した画像の取得 | 利用不可 | IMAGE_IDで指定した画像タイトルの更新 | IMAGE_IDで指定した画像の削除 |
AtomPub APIでできないこと
- 「続きを書く」及び「プライベート」部分の投稿・編集
- タグの付与及びその他オプション設定
「続きを書く」部分の投稿をする場合には旧Atom Pub APIをご利用ください。
APIへリクエストする際のURL
下記のいずれかのURLにリクエストを送ることで記事や画像の投稿ができます。BLOG_NAMEは対象としているブログのblog_nameを記載してください。(例:http://blog.livedoor.jp/staff/ の場合はstaff)
- https://livedoor.blogcms.jp/atompub/BLOG_NAME/article
- https://livedoor.blogcms.jp/atompub/BLOG_NAME/article/ARTICLE_ID
- https://livedoor.blogcms.jp/atompub/BLOG_NAME/category
- https://livedoor.blogcms.jp/atompub/BLOG_NAME/image
- https://livedoor.blogcms.jp/atompub/BLOG_NAME/image/IMAGE_ID
認証方法
現在以下の認証方法が提供されています。- Basic 認証(リクエスト先のURLがHTTPSの場合のみ利用可能)
- WSSE 認証(リクエスト先のURLがHTTP/HTTPSの両方で利用可能)
APIキーの取得方法
Basic認証、WSSE認証で利用するAPIキーはブログ管理画面のブログ設定>その他>API Keyのページにある「AtomPub用パスワード」です。APIキー(AtomPub用パスワード)は半角英数字10字です。
初回はAPIキー(AtomPub用パスワード)が存在しませんので、[発行する]で発行してください。
発行された状態で、[再発行する]をクリックすると、APIキー(AtomPub用パスワード)を再生成できます。
Basic 認証
Basic 認証は、RFC 2617に基いた認証方法です。
この認証方法を利用する場合は"APIへリクエストする際のURL"は、表示のとおりのスキーム名(https://)をご利用ください。
認証情報は下記の内容を入力してください。
- $username: ライブドアID(livedoor ID)
- $apikey: APIキー(AtomPub用パスワード)
Basic 認証の例 (Perl):
use v5.14; use LWP::UserAgent; use HTTP::Request::Common; use URI; use MIME::Base64; use Data::Dumper; my $root = 'https://livedoor.blogcms.jp/atompub/BLOG_NAME'; my $username = 'livedoor_ID'; my $apikey = 'API_KEY(AtomPub用パスワード)'; my $req = GET $root; my $authorization = 'Basic ' . encode_base64(join(":", $username, $apikey), ''); $req->header('Authorization', $authorization); my $ua = LWP::UserAgent->new; my $res = $ua->request($req); warn Dumper $res;
WSSE 認証
WSSE 認証は Atom Authentication で言及されている認証方法です。
この認証方法を利用する場合は、"APIへリクエストする際のURL"のスキーム名は https://、http://どちらでも利用できますが、https://の方を推奨します。
認証情報は下記の内容を入力してください。
- $username: ライブドアID(livedoor ID)
- $apikey: APIキー(AtomPub用パスワード)
WSSE 認証の例 (Perl):
use v5.14; use LWP::UserAgent; use HTTP::Request::Common; use URI; use MIME::Base64; use Digest::SHA1; use Data::Dumper; use DateTime::Format::W3CDTF; my $root = 'https://livedoor.blogcms.jp/atompub/BLOG_NAME'; my $username = 'livedoor_ID';
my $apikey = 'API_KEY(AtomPub用パスワード)'; my $time = DateTime::Format::W3CDTF->new->format_datetime(DateTime->now); my $nonce = Digest::SHA1::sha1( time() . {} . rand() . $$); my $digest = Digest::SHA1::sha1( $nonce . $time . $apikey ); my $wsse = sprintf('UsernameToken Username="%s", PasswordDigest="%s", Nonce="%s", Created="%s"', $username, encode_base64($digest, ''), encode_base64($nonce, ''), $time ); my $req = GET $root; $req->header('Authorization' => 'WSSE profile="UsernameToken"'); $req->header('X-WSSE' => $wsse); my $ua = LWP::UserAgent->new; my $res = $ua->request($req); warn Dumper $res;
記事の投稿方法
記事投稿用のXMLの例は下記の通りです。- https://livedoor.blogcms.jp/atompub/BLOG_NAME/article
- https://livedoor.blogcms.jp/atompub/BLOG_NAME/category
- https://livedoor.blogcms.jp/atompub/BLOG_NAME/image
<?xml version="1.0" encoding="UTF-8"?> <service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom" > <workspace> <atom:title>テストのblog</atom:title> <collection href="https://livedoor.blogcms.jp/atompub/test/article"> <atom:title>テストのblog - Entries</atom:title> <accept>application/atom+xml;type=entry</accept> <categories fixed="no" scheme="https://livedoor.blogcms.jp/atompub/test/category"> <atom:category term="日記"/> <atom:category term="趣味の話"/> </categories> </collection> <collection href="https://livedoor.blogcms.jp/atompub/test/image"> <atom:title>テストのblog - Images</atom:title> <accept>image/png</accept> <accept>image/jpeg</accept> <accept>image/gif</accept> </collection> </workspace> </service>
記事カテゴリについて
エントリ文書の POST 時に、category 要素を含めて投稿した場合、そのカテゴリを記事カテゴリとして設定します。
投稿時点でカテゴリが存在しない場合は、新たにカテゴリを作成した後に設定します。
ただし、ユーザが上限までカテゴリを設定している状態で、存在しないカテゴリを含むエントリ文書をポストした場合は、カテゴリを作成することができないため、そのカテゴリは無視します。
画像付き記事の投稿について
画像付きの記事を投稿する場合、まずはimageのURLを利用して画像をpostし、その後で、投稿した画像を記載した記事を投稿してください。
画像のタイトルを変更する場合
image/IMAGE_IDのURLでputメソッドを実行して変更する場合、Content-Typeをapplication/atom+xml;type=entryに設定してから利用してください。
Content-Typeの設定は、image/IMAGE_IDのURLでPUTをする時のみ設定が必要です。image/IMAGE_IDのURL以外でpostやputをする時には設定は不要です。
ARTICLE_ID、IMAGE_IDの取得方法
ARTICLE_ID、IMAGE_IDの取得方法は下記の通りです。ARTICLE_IDの取得方法
①/article/のURLでgetメソッドを実行し、記事の情報を取得する②<link rel="edit"〜〜title="記事タイトル"/>、または<id>
IMAGE_IDの取得方法
IMAGE_IDの取得は旧AtomPub APIを利用します。利用の詳細は(旧)Atom Pub APIについてを参照してください。①〜/image/のURLでgetメソッドを実行し、画像の情報を取得する
②