適当に書いてみました。
Twitterを参考にはしていますが、独自の部分も多分に混じっています。
こんな機能があるといいとか、ここら辺がおかしいと思うものがあればコメントお願いします。
用語
- ミニブログもしくはメッセージハブとは、ステータスを登録し、時系列で取り出すことができるウェブサービスである。
- 発言もしくはステータスとは、投稿された発言のことである。
- 投稿もしくはアップデートとは、データベースにステータスを登録することである。
- タイムラインとは条件に一致したステータスを時系列で並べたものである。
- 購読もしくはフォローとは指定ユーザーのステータスを自身のフレンズタイムラインに含めることである。
- フォロワーとは自身をフォローするユーザーのことである。
- フレンドとは自身がフォローするユーザーのことである。
アクセス手段
- ミニブログはHTTPプロトコルを通じて(X)HTMLを返すウェブアプリケーションまたはRESTを含むAPIとしてアクセスすることができる。
- 標準のウェブインターフェイスは簡素な(X)HTMLを返すようにすべきである。
- REST APIは以下の形式を返すようにすべきである。
- APIへのアクセスはHTTPプロトコルで定義される方式に従って認証される。
一般的にはBasic認証もしくはDigest認証が使用される。 - ステータスの著作権は投稿したユーザー(以下投稿者)に帰属する。
ただし、規約として権利の行使を制限することができる。 - APIの呼び出しにより得られた結果は投稿者の著作権以外により利用が制限されない。
- APIのURLは自由に設定できる。
- すべてのAPIはWSDL(ウェブサービス定義言語)として一覧が提供されるべきである。
実装されるべきAPI
- APIで使用される構造体として以下のものが定義される。
また、構造体は自由に拡張でき、クライアントは対応していないプロパティは無視しなければならない。 - User
ユーザー - id:long
ID - name:string
内部名 - displayName:string
表示名 - profile:string
プロフィール - iconUrl:string
アイコン画像のURL - registeredDate:date
登録日時
- Status
ステータス - id:long
ID - userId:long
ユーザーID - postedDate:datetime
投稿日時 - text:string
本文 - source:string
クライアントの種類 - relatedUserId:long
関連付けられたユーザーのID - relatedStatusId:long
関連付けられたステータスのID
- OperationResult
実行結果 - succeed:boolean
成功/失敗 - statusCode:int
ステータスコード - statusMessage:string
ステータスの説明 - tag
付加的なデータ
- ユーザは以下のタイムラインをStatusオブジェクトの配列として取得できる。
また、各タイムラインを効率的に取得するための工夫がなされるべきである。 - Friends
自身と自身がフォローしたユーザーのステータス。 - User(Resent)
自身または指定ユーザーのステータス。 - Replies
自分または自分の発言に関連付けられたステータス。 - Favorates
自分または指定ユーザーがお気に入りに登録したステータス。 - Public
全ユーザーのステータス。
- ユーザーは以下の操作を実行できる。
- Update:OperationResult
ステータスを投稿する。
以下の引数を取り、また投稿されたステータスをtagとして返すべきである。 - text:string
本文 - [source:string]
クライアントの種類
- RemoveStatus:OperationResult
自身の投稿したステータスを削除する。
以下のステータスを取る。 - statusId:long
削除するステータスのID
- BookmarkStatus:OperationResult
ステータスをお気に入りに追加する
以下のステータスを取る。 - statusId:long
追加するステータスのID
- GetFollowedUsers:User[]
フォローしたユーザーの配列を取得する。
以下の引数を取る。 - [userId:long]
対象となるユーザーのID。
省略時は自身。
- GetFriends:User[]
フレンドの配列を取得する。
以下の引数を取る。 - [userId:long]
対象となるユーザーのID。
省略時は自身。
- GetFollowers:User[]
フォロワーの配列を取得する。
以下の引数を取る。 - [userId:long]
対象となるユーザーのID。
省略時は自身。
- FollowUser:OperationResult
ユーザーをフォローする。
以下のステータスを取る。 - {userId:long}
フォローするユーザーのID - {userName:string}
フォローするユーザーの内部名
- UnfollowUser:OperationResult
ユーザーのフォローを解除する。
以下のステータスを取る。 - {userId:long}
フォローするユーザーのID - {userName:string}
フォローするユーザーの内部名
- APIは既存のAPIに干渉しない範囲で拡張できる。