XML-RPC インターフェイス

# はじめに

開発者マニュアルに戻る

このドキュメントはNucleusが提供するXML-RPCインターフェイスと、生成されるエラーメッセージについての解説です。この仕様は将来変更される可能性があることに注意して下さい。

NucleusにおけるXML-RPCインターフェイスのURLは以下のようになります：
http://www.yourserver.com/yourpath/nucleus/xmlrpc/server.php

# Blogger API (XML-RPC)

NucleusはBlogger APIに対応しています。これはBloggerと通信するツールやサービスに対して、Nucleusとも通信できるようにするものです。Nucleusの仕様により、いくつかのパラメータに若干の違いがあります。これについては後述の説明を参照して下さい。呼び出しや応答のメソッドは、もちろん、Bloggerのものと同じ構造になっています。

ここに挙げたリストは利用できるメソッドの一覧です。クリックするとさらに詳しい情報を得ることができます（それぞれのリンク先はBlogger APIの仕様書やそのメーリングリストです）。

- blogger.newPost
- blogger.editPost
- blogger.getPost
- blogger.deletePost
- blogger.getUsersBlogs
- blogger.getRecentPosts
- blogger.getUserInfo
- blogger.getTemplate
- blogger.setTemplate

Nucleusは内部的に異なる実装を用いているため、パラメータの扱いに若干の違いがあります。概説すると：

- Appkeyは無視されます。
- Nucleusの場合は本文のあとにタイトルとカテゴリが続きます。Bloggerでは 'コンテンツ' と呼ばれるは本文だけが存在します。これらの追加されたパーツを利用可能にするため、`<title>`や`<category>`をNucleusに送るコンテンツに含めることができます。これらのタグは getRecentPosts の呼び出しでのみ追加されます。
- Bloggerで 'templates' と呼ばれているものに相当するのが、Nucleusの 'スキン' です。ひとつのシステムに複数のスキンを設定でき、それぞれのスキンをblogごとに使い分けることができます。メソッド blogger.setTemplate と blogger.getTemplate は、Nucleusのblog設定で選択されているblogのデフォルトスキンに影響します。'main' と 'archiveIndex' の二種類のテンプレートは、Nucleusの 'メインの目次ページ' と '月別アーカイブ一覧ページ' に相当します。（訳注： Blogger の仕様がわからないので、この項不確か)
- 項目 `publish` は、追加した項目がデフォルトでドラフトになるか公開になるかを決める箇所です。`blogger.editPost` を使う場合は、`publish` がドラフトと公開のどちらになっていても無視されます。
- `getUserInfo` を呼び出した場合、返値のうち 'lastname' は空になり、'firstname' にフルネームが入ります。これはNucleusが姓と名を分けない仕様になっていることに由来します。
- メソッド `getRecentPostst` は `authorName` と `title` を追加パラメータとして返します。Bloggerもまたこれらの値を返します（この仕様は文書化されていないようですが）。

# metaWeblog API

Nucleus v1.1以降、metaWeblog APIもサポートされました。これはBlogger APIの拡張版です。

Nucleus v2.5では `newMediaObject` と `getRecentPosts` の二つのメソッドにも対応しました（これらは最初のmetaWeblog仕様には存在しませんでした）。

利用可能なメソッド一覧は以下の通りです（specificationに詳しい情報があります）：

- metaWeblog.newPost
- metaWeblog.editPost
- metaWeblog.getPost
- metaWeblog.getCategories
- metaWeblog.newMediaObject (v2.5)
- metaWeblog.getRecentPosts (v2.5)

Nucleus v3.22以降、`mt_text_more` と `m_tallow_comment`もサポートされました。これはmetaWeblog API の拡張版です。つまりこれらの拡張機能をサポートするアプリケーション、例えば Ectoなど、を使用した場合、「続き」を編集することができ、アイテムにコメントを許可するかどうかを決定することができるようになる、ということです。

# Movable Type API

v2.5から、NucleusはMovable Type APIからのメソッドをサポートするようになりました。

利用できるメソッドの一覧を以下に示します：

- mt.supportedMethods
- mt.supportedTextFilters
- mt.publishPost
- mt.getCategoryList
- mt.getPostCategories
- mt.setPostCategories
- mt.getRecentPostTitles
- mt.getTrackbackPings

いくつかのノート：

- Nucleusはアイテムひとつにつき一つだけカテゴリを設定することができます。これは 'primary' 以外のカテゴリ設定項目はすべて無視されることを意味します。
- トラックバックはNucleusのコアではサポート対象外です（プラグインの導入によって利用することができるようになります）。このため、`mt.getTrackbackPings` のデフォルトの返値は空です。
- Nucleusはテキストフィルタを実装していません。このため、`mt.getSupportedTextFilters` は空の値を返します。

# エラーコード

以下に示すのは、それぞれのメソッドから得られるエラーの種類です：

エラーコード | エラーメッセージ
--- | ---
801 | Login Error ログインエラー（ユーザ名とパスワードの組み合わせが正しくないと推測されます）
802 | No Such Blog 指定されたBlogは存在しません
803 | Not a Team Member チームに登録されていません
804 | Cannot add Empty Items 空のアイテムは投稿できません
805 | Amount parameter must be in range 1..20 パラメータの値は 1..20 の範囲でなければなりません（getRecentItems
806 | No Such Item 指定されたアイテムは存在しません
807 | Not Allowed to Alter Item アイテム追加の権限がありません
808 | Invalid media type メディアタイプが不正です
809 | File is too large ファイルが大きすぎます（最大のアップロードファイルサイズ）
810 | Other error on newMediaObject newMediaObject で予期せぬエラーが発生しました（何が起きたのかもう少し情報が含まれるでしょう）
その他のコード < 100 | Errors encountered by the Useful Inc. XML-RPC implementation Usefil Inc. XML-RPC の実行でエラーが発生しました
その他のコード > 100 | Errors encountered by the XML parser XML パーサでエラーが発生しました