@@ -2,15 +2,85 @@ openapi: 3.0.0
2
2
info :
3
3
title : Qiita API v2
4
4
version : 0.0.1
5
- description : This document describes the Qiita API v2 specification.
5
+ description : |
6
+ ## 概要
7
+
8
+ このドキュメントではQiita API v2の仕様について説明します。
9
+
10
+ ## リクエスト
11
+
12
+ APIとの全ての通信にはHTTPSプロトコルを利用します。アクセス先のホストには、Qiitaのデータを利用する場合には `qiita.com` を利用し、Qiita Teamのデータを利用する場合には `*.qiita.com` を利用します ( `*` には所属しているTeamのIDが入ります)。
13
+
14
+ ## パラメータ
15
+
16
+ API v2へのリクエストには、GET、POST、PUT、PATCH、DELETEの5種類のHTTPメソッドを利用します。多くのAPIへのリクエストにはパラメータを含められますが、GETリクエストにパラメータを含める場合にはURIクエリを利用し、それ以外の場合にはリクエストボディを利用します。パラメータには、ページネーション用途など任意で渡すものと、投稿時の本文など必須のものが存在します。APIドキュメントには、各APIごとに送信可能なパラメータが記載されています。
17
+
18
+ ## 利用制限
19
+
20
+ 認証している状態ではユーザーごとに1時間に1000回まで、認証していない状態ではIPアドレスごとに1時間に60回までリクエストを受け付けます。
21
+
22
+ ## シングルサインオンを利用中のチームについて
23
+
24
+ シングルサインオンによる認証のみを許可しているQiita Teamのチームでは、セキュリティ上の理由から、チーム別アクセストークンでのみAPIを利用したアクセスが可能です。
25
+
26
+ ## ステータスコード
27
+
28
+ 200、201、204、400、401、403、404、500の8種類のステータスコードを利用します。GETまたはPATCHリクエストに対しては200を、POSTリクエストに対しては201を、PUTまたはDELETEリクエストに対しては204を返します。但し、エラーが起きた場合にはその他のステータスコードの中から適切なものを返します。
29
+
30
+ ## データ形式
31
+
32
+ APIとのデータの送受信にはJSONを利用します。JSONをリクエストボディに含める場合、リクエストのContent-Typeヘッダにapplication/jsonを指定してください。但し、GETリクエストにバラメータを含める場合にはURIクエリを利用します。また、PUTリクエストまたはDELETEリクエストに対してはレスポンスボディが返却されません。日時を表現する場合には、[ISO 8601](http://ja.wikipedia.org/wiki/ISO_8601) 形式の文字列を利用します。
33
+
34
+ ```
35
+ GET /api/v2/items?page=1&per_page=20 HTTP/1.1
36
+ ```
37
+
38
+ ## エラーレスポンス
39
+
40
+ エラーが発生した場合、エラーを表現するオブジェクトを含んだエラーレスポンスが返却されます。このオブジェクトには、エラーの内容を説明するmessageプロパティと、エラーの種類を表すtypeプロパティで構成されます。typeプロパティはエラーの種類ごとに一意な文字列で、`^[a-z0-9_]+$` というパターンで表現できます。
41
+
42
+ ```
43
+ {
44
+ "message": "Not found",
45
+ "type": "not_found"
46
+ }
47
+ ```
48
+
49
+ ## ページネーション
50
+
51
+ 一部の配列を返すAPIでは、全ての要素を一度に返すようにはなっておらず、代わりにページを指定できるようになっています。これらのAPIには、1から始まるページ番号を表すpageパラメータと、1ページあたりに含まれる要素数を表すper_pageパラメータを指定することができます。pageの初期値は1、pageの最大値は100に設定されています。また、per_pageの初期値は20、per_pageの最大値は100に設定されています。
52
+
53
+ ページを指定できるAPIでは、[Linkヘッダ](http://tools.ietf.org/html/rfc5988) を含んだレスポンスを返します。Linkヘッダには、最初のページと最後のページへのリンクに加え、存在する場合には次のページと前のページへのリンクが含まれます。個々のリンクにはそれぞれ、first、last、next、prevという値を含んだrel属性が紐付けられます。
54
+
55
+ ```
56
+ Link: <https://qiita.com/api/v2/users?page=1>; rel="first",
57
+ <https://qiita.com/api/v2/users?page=1>; rel="prev",
58
+ <https://qiita.com/api/v2/users?page=3>; rel="next",
59
+ <https://qiita.com/api/v2/users?page=6>; rel="last"
60
+ ```
61
+
62
+ また、ページを指定できるAPIでは、要素の合計数が `Total-Count` レスポンスヘッダに含まれます。
63
+
64
+ ```
65
+ Total-Count: 6
66
+ ```
67
+
68
+ ## JSON Schema
69
+
70
+ Qiita API v2では、APIのインターフェースを定義したJSON-Schemaを提供しています。このスキーマでは、APIでどのようなリソースが提供されているか、それらはどのようなプロパティを持っているか、それらがどのように表現されるか、及びどのような操作が提供されているかといった事柄が定義されています。スキーマには、次のURLでアクセスできます。
71
+
72
+ - https://qiita.com/api/v2/schema
73
+ - https://qiita.com/api/v2/schema?locale=en
74
+ - https://qiita.com/api/v2/schema?locale=ja
6
75
contact :
7
76
name : nanato12
8
77
url : ' https://github.com/nanato12'
9
78
email : admin@okj.info
79
+ termsOfService : ' https://github.com/nanato12/qiita-openapi'
10
80
servers :
11
81
- url : ' https://qiita.com'
12
82
description : When using data from Qiita
13
- - url : ' https://* .qiita.com'
83
+ - url : ' https://{team_id} .qiita.com'
14
84
description : When using Qiita Team data
15
85
security :
16
86
- Bearer : []
0 commit comments