ついかっとなって比較してみた
ATNDフォーマット
- ATND
- http://api.atnd.org/
- eventATND
- http://atnd.org/doc/api.html
- Zusaar
- http://www.zusaar.com/doc/api.html
- connpass
- http://connpass.com/about/api/
これらのAPIはリクエストとレスポンスがほとんど同じなので「ATNDフォーマット」と勝手に呼称しています。*1
リクエスト
| ATND | eventATND | Zusaar | connpass | ||
|---|---|---|---|---|---|
| event_id | イベントID | ○ | ○ | ○ | ○ |
| keyword | キーワード(AND) | ○ | ○ | ○ | ○ |
| keyword_or | キーワード(OR) | ○ | ○ | ○ | ○ |
| category | イベントカテゴリ―コード | × | ○ | × | × |
| category_detail | イベント詳細カテゴリ―コード | × | ○ | × | × |
| ym | イベント開催年月 | ○ | ○ | ○ | ○ |
| ymd | イベント開催年月日 | ○ | ○ | ○ | ○ |
| user_id | 参加者のユーザID | ○ | ○ | ○ | ○ |
| nickname | 参加者のニックネーム | ○ | ○ | ○ | ○ |
| twitter_id | 参加者のTwitter ID | ○ | ○ | × | × |
| facebook_id | 参加者のFacebook ID | × | ○ | × | × |
| google_plus_id | 参加者のGoogle+ ID | × | ○ | × | × |
| owner_id | 主催者のユーザID | ○ | ○ | ○ | ○ |
| owner_nickname | 主催者のニックネーム | ○ | ○ | ○ | ○ |
| owner_twitter_id | 主催者のTwitter ID | ○ | ○ | × | × |
| owner_facebook_id | 主催者のFacebook ID | × | ○ | × | × |
| owner_google_plus_id | 主催者のGoogle+ ID | × | ○ | × | × |
| series_id | シリーズID | × | × | ○ | ○ |
| start | 検索の開始位置 | ○ | ○ | ○ | ○ |
| order | 検索結果のソート順 | × | ○ | × | × |
| count | 取得件数 | ○ | ○ | ○ | ○ |
| format | レスポンス形式 | xml,json,jsonp,atom,ics | xml,json,jsonp,atom,ics | json, jsonp | json, jsonp |
| ATND | eventATND | Zusaar | connpass |
- connpassのリファレンスにはjsonしか書いていないですが、callbackを渡すとjsonpになります
- サンプル:http://connpass.com/api/v1/event/?callback=hoge
- ただしformat=jsonpにするとエラーになるので注意が必要
- ソート順を指定できるのはeventATNDのみなので、複数API対応させたい場合はクライアントサイドで頑張る必要があります
- もしくはAZusaar!!みたいに順不同にするかw
レスポンス
| ATND | eventATND | Zusaar | connpass | ||
|---|---|---|---|---|---|
| results_returned | 含まれる検索結果の件数 | ○ | ○ | ○ | ○ |
| results_available | 利用可能な検索結果の総件数 | ○ *2 | ○ | × | ○ *3 |
| results_start | 検索の開始位置 | ○ | ○ | ○ | ○ |
| event | [複数要素] | events | events | event | events |
| event_id | イベントID | ○ | ○ | ○ | ○ |
| title | タイトル | ○ | ○ | ○ | ○ |
| catch | キャッチコピー | ○ | ○ | ○ | ○ |
| description | 概要 | ○ | ○ | ○ | ○ |
| event_url | イベントページのURL | ○ | ○ | ○ | ○ |
| logo_image | イベントのロゴ画像 | × | ○ | × | × |
| started_at | イベント開催日時 | ○ | ○ | ○ | ○ |
| ended_at | イベント終了日時 | ○ | ○ | ○ | ○ |
| category | [複数要素] | × | ○ | × | × |
| code | カテゴリーコード | × | ○ | × | × |
| code_name | カテゴリー名 | × | ○ | × | × |
| detail_code | 詳細カテゴリーコード | × | ○ | × | × |
| detail_code_name | 詳細カテゴリー名 | × | ○ | × | × |
| pay_type | 無料/有料イベント | × | × | ○ | × |
| url | 参考URL | ○ | ○ | ○ | × |
| limit | 定員 | ○ | ○ | ○ | ○ |
| event_type | イベント参加タイプ | × | × | × | ○ |
| series | シリーズ | ||||
| id | シリーズID | × | × | × | ○ |
| title | シリーズタイトル | × | × | × | ○ |
| url | シリーズのURL | × | × | × | ○ |
| address | 開催場所 | ○ | ○ | ○ | ○ |
| place | 開催会場 | ○ | ○ | ○ | ○ |
| lat | 開催会場の緯度 | ○ | ○ | ○ | ○ |
| lon | 開催会場の経度 | ○ | ○ | ○ | ○ |
| owner_id | 主催者のID | ○ | ○ | ○ | ○ |
| owner_profile_url | 主催者のプロフィール | × | × | ○ | × |
| owner_nickname | 主催者のニックネーム | ○ | ○ | ○ | ○ |
| owner_twitter_id | 主催者のtwitter ID | ○ | ○ | × | × |
| owner_facebook_id | 主催者の Facebook ID | × | ○ | × | × |
| owner_google_plus_id | 主催者の Google+ ID | × | ○ | × | × |
| accepted | 参加者 | ○ | ○ | ○ | ○ |
| waiting | 補欠者 | ○ | ○ | ○ | ○ |
| updated_at | 更新日時 | ○ | ○ | ○ | ○ |
| owner_twitter_img | 主催者のTwitter画像 | ○ *4 | ○ | × | × |
| owner_facebook_img | 主催者のFacebook画像 | × | ○ | × | × |
| owner_google_plus_img | 主催者のGoogole+画像 | × | ○ | × | × |
| ATND | eventATND | Zusaar | connpass |
- レスポンスはリファレンスに書いてない要素もとれるので、書いてあることを鵜呑みにするより実際に叩いて調べた方がいいです
- ドキュメントが置いてけぼりになるなんてよくあること
- レスポンスの差異はイベントサイトの特色
- eventATND : カテゴリ
- connpass : シリーズ
- Zusaarのpay_typeとconnpassのevent_typeはほぼ同等
イベント配列について
- ATNDとeventATNDでは「event」と記載してるけど実際は「events」
- Zusaarはドキュメント通り「event」
- connpassはドキュメント通り「events」
というように微妙に食い違っているため、うまい具合ハンドリングしてやる必要があります
- 参考:AZusaar!!のソース
- https://github.com/sue445/azusaar_js/blob/master/src/event.js#L163