※旧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):
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):
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の例は下記の通りです。
下記の部分は自分のブログの「APIへリクエストする際のURL」に書き換えてください。
- 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>〜</id>で囲まれている行の数値がARTICLE_IDです。
<title>テスト記事</title>
<link rel="alternate" type="text/html" href="http://test.blog.jp/archives/4291502.html" />
<link rel="edit" type="application/atom+xml;type=entry" href="https://livedoor.blogcms.jp/atompub/test/article/4291502" title="テスト記事" />
<id>tag:.blogcms.jp,2009-07-28:article-test.4291502</id>
IMAGE_IDの取得方法
IMAGE_IDの取得は旧AtomPub APIを利用します。
利用の詳細は(旧)Atom Pub APIについてを参照してください。
①〜/image/のURLでgetメソッドを実行し、画像の情報を取得する
②<id>〜</id>で囲まれている行の数値がIMAGE_IDです。
<title>テストの画像</title>
<id>tag:.blogcms.jp,2019-11-25:image-blog/test.10196893</id>
<updated>2019-11-25T13:10:01+09:00</updated>