Qiita API v2 の概要(非公式)

Qiita API v2 の全体像を把握しやすいように下記をまとめました。

- Qiita APIとは
- 認証状態とユーザータイプによる違い
- 認証認可
- モデル一覧
- API一覧

APIの詳細は[Qiita公式のAPIドキュメント](http://qiita.com/api/v2/docs)を参照してください。

# Qiita APIとは

Qiita API は、Qiitaが提供しているサービスから様々なデータの取得、投稿やストックなどの操作ができるWeb-APIです。

# 認証状態とユーザータイプによる違い

Qiita APIはQiitaのアカウントがなくても使用できますが、アカウントの認証を行うことでより多くの機能が使用できます。

- 未認証  
  投稿やユーザーなどのデータ取得のみ実行できます。
- Qiitaアカウントで認証済み  
  投稿やストックなど、アカウントに紐付いた操作が実行できます。
- Qiita:Teamに所属するQiitaアカウントで認証済み(以下、Qiita:Teamアカウント)  
  所属しているチームのプロジェクトやテンプレートの操作が可能です。

## 認証認可

認証はアクセストークンをリクエストに含めることで行います。
アクセストークンは、OAuthを利用した認可フローか、ユーザの管理画面から発行できます。

詳細は公式ドキュメントの[認証認可](http://qiita.com/api/v2/docs#%E8%AA%8D%E8%A8%BC%E8%AA%8D%E5%8F%AF)を参照して下さい。

# モデル一覧

Qiita APIで取得／登録が可能なデータモデルの一覧と公式ドキュメントへのリンクです。
説明文は公式ドキュメントからそのまま引用しました。

## Qiitaアカウント向けモデル

- [コメント](http://qiita.com/api/v2/docs#%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88)  
  投稿に付けられたコメントを表します。
- [タギング](http://qiita.com/api/v2/docs#%E3%82%BF%E3%82%AE%E3%83%B3%E3%82%B0)  
  投稿とタグとの関連を表します。
- [タグ](http://qiita.com/api/v2/docs#%E3%82%BF%E3%82%B0)  
  投稿に付けられた個々のタグを表します。
- [ユーザ](http://qiita.com/api/v2/docs#%E3%83%A6%E3%83%BC%E3%82%B6)  
  Qiita上のユーザを表します。
- [投稿](http://qiita.com/api/v2/docs#%E6%8A%95%E7%A8%BF)  
  ユーザからの投稿を表します。
- [認証中のユーザ] (http://qiita.com/api/v2/docs#%E8%AA%8D%E8%A8%BC%E4%B8%AD%E3%81%AE%E3%83%A6%E3%83%BC%E3%82%B6)  
  現在のアクセストークンで認証中のユーザを表します。通常のユーザ情報よりも詳細な情報を含んでいます。

## Qiita:Teamアカウント向けモデル

- [いいね](http://qiita.com/api/v2/docs#%E3%81%84%E3%81%84%E3%81%AD)  
  投稿につけられた「いいね！」を表します。
- [グループ](http://qiita.com/api/v2/docs#%E3%82%B0%E3%83%AB%E3%83%BC%E3%83%97)  
  Qiita:Teamのグループを表します。
- [チーム](http://qiita.com/api/v2/docs#%E3%83%81%E3%83%BC%E3%83%A0)  
  Qiita:Team上で所属しているチームを表します。Qiita:Teamでのみ有効です。
- [テンプレート](http://qiita.com/api/v2/docs#%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88)  
  投稿のひな形に利用できるテンプレートを表します。Qiita:Teamでのみ有効です。
- [プロジェクト](http://qiita.com/api/v2/docs#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88)  
  Qiita:Team上でのプロジェクトを表します。Qiita:Teamでのみ有効です。
- [展開済みテンプレート](http://qiita.com/api/v2/docs#%E5%B1%95%E9%96%8B%E6%B8%88%E3%81%BF%E3%83%86%E3%83%B3%E3%83%97%E3%83%AC%E3%83%BC%E3%83%88)  
  テンプレートを保存する前に変数展開後の状態をプレビューできます。Qiita:Teamでのみ有効です。

# API一覧

APIの一覧と公式ドキュメントへのリンクです。

## 認証認可API

|メソッド|URI|内容|
|:---:|:-----------------------------------------------|:---|
|GET|[/api/v2/oauth/authorize](http://qiita.com/api/v2/docs#get-apiv2oauthauthorize)|OAuth認証画面を開きます。|
|POST|[/api/v2/access_tokens](http://qiita.com/api/v2/docs#post-apiv2access_tokens)|与えられた認証情報をもとに新しいアクセストークンを発行します。|
|DELETE|[/api/v2/access_tokens/:access_token](http://qiita.com/api/v2/docs#delete-apiv2access_tokensaccess_token)|指定されたアクセストークンを失効させ、それ以降利用できないようにします。|

## 未認証でも使用可能なAPI

|メソッド|URI|内容|
|:---:|:-----------------------------------------------|:---|
|GET|[/api/v2/comments/:comment_id](http://qiita.com/api/v2/docs#get-apiv2commentscomment_id)|コメントを取得します。|
|GET|[/api/v2/items/:item_id/comments](http://qiita.com/api/v2/docs#get-apiv2itemsitem_idcomments)|投稿に付けられたコメント一覧を投稿日時の降順で取得します。|
|GET|[/api/v2/tags](http://qiita.com/api/v2/docs#get-apiv2tags)|タグ一覧を作成日時の降順で返します。|
|GET|[/api/v2/tags/:tag_id](http://qiita.com/api/v2/docs#get-apiv2tagstag_id)|タグを取得します。|
|GET|[/api/v2/users/:user_id/following_tags](http://qiita.com/api/v2/docs#get-apiv2usersuser_idfollowing_tags)|ユーザがフォローしているタグ一覧をフォロー日時の降順で返します。|
|GET|[/api/v2/items/:item_id/stockers](http://qiita.com/api/v2/docs#get-apiv2itemsitem_idstockers)|投稿をストックしているユーザ一覧を、ストックした日時の降順で返します。|
|GET|[/api/v2/users](http://qiita.com/api/v2/docs#get-apiv2users)|全てのユーザの一覧を作成日時の降順で取得します。|
|GET|[/api/v2/users/:user_id](http://qiita.com/api/v2/docs#get-apiv2usersuser_id)|ユーザを取得します。|
|GET|[/api/v2/users/:user_id/followees](http://qiita.com/api/v2/docs#get-apiv2usersuser_idfollowees)|ユーザがフォローしているユーザ一覧を取得します。|
|GET|[/api/v2/users/:user_id/followers](http://qiita.com/api/v2/docs#get-apiv2usersuser_idfollowers)|ユーザをフォローしているユーザ一覧を取得します。|
|GET|[/api/v2/items](http://qiita.com/api/v2/docs#get-apiv2items)|投稿の一覧を作成日時の降順で返します。|
|GET|[/api/v2/items/:item_id](http://qiita.com/api/v2/docs#get-apiv2itemsitem_id)|投稿を取得します。|
|GET|[/api/v2/tags/:tag_id/items](http://qiita.com/api/v2/docs#get-apiv2tagstag_iditems)|指定されたタグが付けられた投稿一覧を、タグを付けた日時の降順で返します。|
|GET|[/api/v2/users/:user_id/items](http://qiita.com/api/v2/docs#get-apiv2usersuser_iditems)|指定されたユーザの投稿一覧を、作成日時の降順で返します。|
|GET|[/api/v2/users/:user_id/stocks](http://qiita.com/api/v2/docs#get-apiv2usersuser_idstocks)|指定されたユーザがストックした投稿一覧を、ストックした日時の降順で返します。|

## Qiitaアカウント向けAPI

|メソッド|URI|内容|
|:---:|:-----------------------------------------------|:---|
|DELETE|[/api/v2/comments/:comment_id](http://qiita.com/api/v2/docs#delete-apiv2commentscomment_id)|コメントを削除します。|
|PATCH|[/api/v2/comments/:comment_id](http://qiita.com/api/v2/docs#patch-apiv2commentscomment_id)|コメントを更新します。|
|DELETE|[ /api/v2/comments/:comment_id/thank](http://qiita.com/api/v2/docs#delete-apiv2commentscomment_idthank)|コメントからThankを外します。|
|PUT|[/api/v2/comments/:comment_id/thank](http://qiita.com/api/v2/docs#put-apiv2commentscomment_idthank)|コメントにThankを付けます。|
|POST|[/api/v2/items/:item_id/comments](http://qiita.com/api/v2/docs#post-apiv2itemsitem_idcomments)|投稿に対してコメントを投稿します。|
|DELETE|[/api/v2/tags/:tag_id/following](http://qiita.com/api/v2/docs#delete-apiv2tagstag_idfollowing)|タグのフォローを外します。|
|GET|[/api/v2/tags/:tag_id/following](http://qiita.com/api/v2/docs#get-apiv2tagstag_idfollowing)|タグをフォローしているかどうかを調べます。|
|PUT|[/api/v2/tags/:tag_id/following](http://qiita.com/api/v2/docs#put-apiv2tagstag_idfollowing)|タグをフォローします。|
|DELETE|[/api/v2/users/:user_id/following](http://qiita.com/api/v2/docs#delete-apiv2usersuser_idfollowing)|ユーザへのフォローを外します。|
|GET|[/api/v2/users/:user_id/following](http://qiita.com/api/v2/docs#get-apiv2usersuser_idfollowing)|ユーザをフォローしている場合に204を返します。|
|PUT|[/api/v2/users/:user_id/following](http://qiita.com/api/v2/docs#put-apiv2usersuser_idfollowing)|ユーザをフォローします。|
|GET|[/api/v2/authenticated_user/items](http://qiita.com/api/v2/docs#get-apiv2authenticated_useritems)|認証中のユーザの投稿の一覧を作成日時の降順で返します。|
|POST|[/api/v2/items](http://qiita.com/api/v2/docs#post-apiv2items)|新たに投稿を作成します。|
|DELETE|[/api/v2/items/:item_id](http://qiita.com/api/v2/docs#delete-apiv2itemsitem_id)|投稿を削除します。|
|PATCH|[/api/v2/items/:item_id](http://qiita.com/api/v2/docs#patch-apiv2itemsitem_id)|投稿を更新します。|
|DELETE|[/api/v2/items/:item_id/stock](http://qiita.com/api/v2/docs#delete-apiv2itemsitem_idstock)|投稿をストックから取り除きます。|
|GET|[/api/v2/items/:item_id/stock](http://qiita.com/api/v2/docs#get-apiv2itemsitem_idstock)|投稿をストックしているかどうかを調べます。|
|PUT|[/api/v2/items/:item_id/stock](http://qiita.com/api/v2/docs#put-apiv2itemsitem_idstock)|投稿をストックします。|
|GET|[/api/v2/authenticated_user](http://qiita.com/api/v2/docs#get-apiv2authenticated_user)|アクセストークンに紐付いたユーザを返します。|

## Qiita:Teamアカウント向けAPI

|メソッド|URI|内容|
|:---:|:-----------------------------------------------|:---|
|GET|[/api/v2/items/:item_id/likes](http://qiita.com/api/v2/docs#get-apiv2itemsitem_idlikes)|投稿につけられた「いいね！」を作成日時の降順で返します。|
|POST|[/api/v2/items/:item_id/taggings](http://qiita.com/api/v2/docs#post-apiv2itemsitem_idtaggings)|投稿にタグを追加します。Qiita:Teamでのみ有効です。|
|DELETE|[/api/v2/items/:item_id/taggings/:tagging_id](http://qiita.com/api/v2/docs#delete-apiv2itemsitem_idtaggingstagging_id)|投稿から指定されたタグを取り除きます。Qiita:Teamでのみ有効です。|
|GET|[/api/v2/teams](http://qiita.com/api/v2/docs#get-apiv2teams)|ユーザが所属している全てのチームを、チーム作成日時の降順で返します。|
|GET|[/api/v2/templates](http://qiita.com/api/v2/docs#get-apiv2templates)|チーム内のテンプレート一覧を返します。|
|DELETE|[/api/v2/templates/:template_id](http://qiita.com/api/v2/docs#delete-apiv2templatestemplate_id)|テンプレートを削除します。|
|GET|[/api/v2/templates/:template_id](http://qiita.com/api/v2/docs#get-apiv2templatestemplate_id)|テンプレートを取得します。|
|POST|[/api/v2/templates](http://qiita.com/api/v2/docs#post-apiv2templates)|新しくテンプレートを作成します。|
|PATCH|[/api/v2/templates/:template_id](http://qiita.com/api/v2/docs#patch-apiv2templatestemplate_id)|テンプレートを更新します。|
|GET|[/api/v2/projects](http://qiita.com/api/v2/docs#get-apiv2projects)|チーム内に存在するプロジェクト一覧をプロジェクト作成日時の降順で返します。|
|POST|[/api/v2/projects](http://qiita.com/api/v2/docs#post-apiv2projects)|プロジェクトを新たに作成します。|
|DELETE|[/api/v2/projects/:project_id](http://qiita.com/api/v2/docs#delete-apiv2projectsproject_id)|プロジェクトを削除します。|
|GET|[/api/v2/projects/:project_id](http://qiita.com/api/v2/docs#get-apiv2projectsproject_id)|プロジェクトを返します。
|PATCH|[/api/v2/projects/:project_id](http://qiita.com/api/v2/docs#patch-apiv2projectsproject_id)|プロジェクトを更新します。|
|POST|[/api/v2/expanded_templates](http://qiita.com/api/v2/docs#post-apiv2expanded_templates)|受け取ったテンプレート用文字列の変数を展開して返します。|
|DELETE|[/api/v2/items/:item_id/like](http://qiita.com/api/v2/docs#delete-apiv2itemsitem_idlike)|投稿への「いいね！」を取り消します。Qiita:Teamでのみ有効です。|
|PUT|[/api/v2/items/:item_id/like](http://qiita.com/api/v2/docs#put-apiv2itemsitem_idlike)|投稿に「いいね！」を付けます。Qiita:Teamでのみ有効です。|
|GET|[/api/v2/items/:item_id/like](http://qiita.com/api/v2/docs#get-apiv2itemsitem_idlike)|投稿に「いいね！」を付けているかどうかを調べます。|