Skip to content

Commit c50a043

Browse files
authored
Add Overview (#3)
1 parent 122ba8a commit c50a043

File tree

2 files changed

+109
-4
lines changed

2 files changed

+109
-4
lines changed

README.md

+37-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,37 @@
1-
# qiita-openapi
2-
Qiita OpenAPI
1+
# Qiita API v2 OpenAPI
2+
3+
このリポジトリは以下のドキュメントから作成したものです。
4+
5+
<https://qiita.com/api/v2/docs>
6+
7+
## CI
8+
9+
CIには `spectral` を使用しています。
10+
11+
<https://github.com/stoplightio/spectral>
12+
13+
## License
14+
15+
```plain
16+
MIT License
17+
18+
Copyright (c) 2024 nanato12
19+
20+
Permission is hereby granted, free of charge, to any person obtaining a copy
21+
of this software and associated documentation files (the "Software"), to deal
22+
in the Software without restriction, including without limitation the rights
23+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
24+
copies of the Software, and to permit persons to whom the Software is
25+
furnished to do so, subject to the following conditions:
26+
27+
The above copyright notice and this permission notice shall be included in all
28+
copies or substantial portions of the Software.
29+
30+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
31+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
32+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
33+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
34+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
35+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
36+
SOFTWARE.
37+
```

openapi.yml

+72-2
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,85 @@ openapi: 3.0.0
22
info:
33
title: Qiita API v2
44
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
675
contact:
776
name: nanato12
877
url: 'https://github.com/nanato12'
978
email: admin@okj.info
79+
termsOfService: 'https://github.com/nanato12/qiita-openapi'
1080
servers:
1181
- url: 'https://qiita.com'
1282
description: When using data from Qiita
13-
- url: 'https://*.qiita.com'
83+
- url: 'https://{team_id}.qiita.com'
1484
description: When using Qiita Team data
1585
security:
1686
- Bearer: []

0 commit comments

Comments
 (0)