こちらのAtomPub APIは、予告なく提供を終了する場合があります。
こちらは旧形式のAtomPub APIです。「続きを書く」の機能が必要な場合はこちらをご利用ください。
※新しいAtomPub APIはこちら

API仕様

AtomPubプロトコルに準じます。また、後述する記事のエントリ文書には独自拡張タグを含みます。

AtomPub仕様解説ページ集

認証方式

WSSE認証を利用します。
ユーザ名には各プロバイダのユーザID、パスワードにはログインパスワードではなく、サービス側で各ユーザ毎に生成したAPI KEYを使用します。
API KEYはパスワードと同様の扱いですので、大切に保管してください。

API KEY

API KEYはブログ管理画面のブログ設定その他API Keyから確認できます。API KEYは半角英数字10字です。

初回はAPI KEYが存在しませんので、[発行する]でAPI KEYを作成してください。

エンドポイント

下記のいずれかのURIにGETリクエストを送ることで、そのユーザが使用可能なリソースのURIを取得することができます。

MEMBER_PROVIDERは操作しようとしているユーザが所属しているプロバイダ名です。

  • http://MEMBER_PROVIDER.blogcms.jp/atom/ (サービス文書URI)
  • http://MEMBER_PROVIDER.blogcms.jp/atom/service (サービス文書URI)

リソースURI

ユーザが使用可能なリソースURIには以下のものがあります。
(このリソースURIは、今後増減する可能性があります。)

  • http://MEMBER_PROVIDER.blogcms.jp/atom/BLOG_PROVIDER/BLOG_NAME/article (記事のコレクションURI)
  • http://MEMBER_PROVIDER.blogcms.jp/atom/BLOG_PROVIDER/BLOG_NAME/article/ARTICLE_ID (記事のメンバURI)
  • http://MEMBER_PROVIDER.blogcms.jp/atom/BLOG_PROVIDER/BLOG_NAME/category (カテゴリ文書URI)
  • http://MEMBER_PROVIDER.blogcms.jp/atom/BLOG_PROVIDER/BLOG_NAME/image (画像のコレクションURI)
  • http://MEMBER_PROVIDER.blogcms.jp/atom/BLOG_PROVIDER/BLOG_NAME/image/IMAGE_ID (画像のメンバURI)

BLOG_PROVIDERは対象のブログが所属しているプロバイダ名、BLOG_NAMEは対象としているブログのblog_name(例:http://blog.livedoor.jp/staff/ の場合はstaff)です。
ただし、ユーザと対象のブログが所属するプロバイダが同じ場合、BLOG_PROVIDERはプロバイダ名ではなく「blog」になります。
例: http://livedoor.blogcms.jp/atom/blog/staff/article/000000

プロバイダ情報

プロバイダ設定する値
livedoor Bloglivedoor
DLsite blogdlsite

エントリ文書と独自拡張

典型的なエントリ文書と独自拡張の例です。

<?xml version="1.0" encoding="utf-8"?>
<entry xmlns="http://www.w3.org/2005/Atom"
    xmlns:app="http://www.w3.org/2007/app"
    xmlns:blogcms="http://blogcms.jp/-/spec/atompub/1.0/">
    <title>Article Title</title>
    <link rel="alternate" type="text/html" 
       href="http://blog.livedoor.jp/staff/archives/000000.html" />
    <link rel="edit" type="application/atom+xml;type=entry" 
       href="http://livedoor.blogcms.jp/blog/staff/article/000000" title="Article Title" />
    <id>tag:example.org,2003:3.2397</id>
    <updated>2009-07-28T00:00:00+09:00</updated>
    <published>2009-07-28T00:00:00+09:00</published>
    <author><name>staff</name></author>
    <content type="text/html" xml:lang="ja"
        xml:base="http://blog.livedoor.jp/staff/archives/000000.html">
&lt;p&gt;記事本文&lt;/p&gt;
    </content>
    <category scheme="http://livedoor.blogcms.jp/blog/staff/category" term="お知らせ" />
    <blogcms:source>
        <blogcms:body><![CDATA[<p>記事本文</p>]]></blogcms:body>
        <blogcms:more><![CDATA[<p>記事追記部分</p>]]></blogcms:more>
        <blogcms:private><![CDATA[<p>記事プライベート部分</p>]]></blogcms:private>
    </blogcms:source>
    <app:control>
        <app:draft>yes</app:draft>
    </app:control>
</entry>
  • 基本的にAtomフォーマットのエントリ文書です。
  • atom:contentに書かれたテキストは全て「本文」として扱われます。
  • atom:contentを使用する場合、記事の投稿フォーマット設定に関わらず全て「HTML」として扱われます。自動改行や自動リンクも適用されません。
  • blogcms:sourceを使用する場合、記事の投稿フォーマット設定に従います。
  • DBに保存されているソースは「本文」「追記」「プライベート追記」は、それぞれblogcms:source以下にblogcms:body、blogcms:more、blogcms:privateとして含めます。
  • メンバURIにGETリクエストを送った場合、atom:contentとblogcms:source両方を含むエントリ文書を返します。
  • メンバURIにPOSTする際、atom:contentとblogcms:source両方を含む場合はblogcms:sourceを優先します。

記事カテゴリ

エントリ文書のPOST時に、categoryタグを含めて投稿した場合、そのカテゴリを記事カテゴリとして設定します。
投稿時点でカテゴリが存在しない場合は、新たにカテゴリを作成した後に設定します。
ただし、ユーザが上限までカテゴリを設定している状態で、存在しないカテゴリを含むエントリ文書をポストした場合は、カテゴリを作成することができないため、そのカテゴリは無視します。
カテゴリ単体で追加、表示、編集、削除する機能は現時点では提供していません。

画像リソースの扱い

画像付きの記事を投稿する場合、現時点では先に画像リソースを作成した後、返された画像リソースのURIを記事中に入れて投稿する、という手順になります。
将来的には、記事のエントリ文書中に画像リソースを埋め込み、記事投稿と同時に画像アップロードする機能を実装する予定です。