yodogawa 2.1.3 → 2.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +140 -94
- package/LICENSE +1 -1
- package/README.md +362 -263
- package/bin/checks/id-trace.js +137 -0
- package/bin/checks/links.js +59 -0
- package/bin/checks/placeholder.js +132 -0
- package/bin/checks/structure.js +127 -0
- package/bin/cli.js +51 -67
- package/bin/commands/doctor.js +128 -0
- package/bin/commands/install.js +58 -0
- package/bin/commands/new-task.js +117 -0
- package/bin/lib/check-cli.js +19 -0
- package/bin/lib/findings.js +31 -0
- package/bin/lib/markdown.js +103 -0
- package/bin/lib/project-spec.js +138 -0
- package/bin/lib/walk-md.js +23 -0
- package/package.json +68 -55
- package/skills/a-001-setup-doc-structure/SKILL.md +68 -68
- package/skills/a-001-setup-doc-structure/reference/directory-structure.md +75 -75
- package/skills/a-002-initialize-project/SKILL.md +145 -118
- package/skills/a-002-initialize-project/reference/hearing-questions.md +91 -41
- package/skills/a-002-initialize-project/reference/structure-check.md +12 -22
- package/skills/a-002a-slice-mvp-scope/SKILL.md +105 -0
- package/skills/a-002b-define-user-stories/SKILL.md +80 -0
- package/skills/a-002b-define-user-stories/reference/user-stories-guide.md +78 -0
- package/skills/a-003-create-scenarios/SKILL.md +97 -96
- package/{templates/project/02-behavior/01-scenarios.md → skills/a-003-create-scenarios/reference/detailed-gherkin-template.md} +413 -406
- package/skills/a-003-create-scenarios/reference/structure-check.md +20 -17
- package/skills/a-004-define-domain-model/SKILL.md +107 -98
- package/skills/a-004-define-domain-model/reference/event-storming-guide.md +33 -7
- package/skills/a-004-define-domain-model/reference/ubiquitous-language-guide.md +49 -0
- package/skills/a-005-create-domain-diagram/SKILL.md +18 -17
- package/skills/a-006-review-requirements-domain/SKILL.md +79 -29
- package/skills/a-006-review-requirements-domain/examples/review-report-template.md +40 -25
- package/skills/a-006-review-requirements-domain/reference/consistency-checks.md +67 -24
- package/skills/a-007-define-tech-stack/SKILL.md +99 -99
- package/skills/a-008-define-repository-structure/SKILL.md +96 -96
- package/skills/a-009-define-screen-design/SKILL.md +103 -103
- package/skills/a-010-define-design-system/SKILL.md +130 -130
- package/skills/a-011-define-data-model/SKILL.md +118 -118
- package/skills/a-012-define-api-spec/SKILL.md +105 -105
- package/skills/a-013-define-architecture/SKILL.md +98 -98
- package/skills/a-014-define-infrastructure/SKILL.md +118 -110
- package/skills/{a-002-initialize-project → a-014-define-infrastructure}/examples/nfr-baseline.md +2 -1
- package/{templates/project/01-requirements/04-non-functional-requirements.md → skills/a-014-define-infrastructure/examples/non-functional-requirements.md} +120 -115
- package/skills/a-015-review-design/SKILL.md +15 -11
- package/skills/a-015-review-design/examples/review-report-template.md +17 -29
- package/skills/a-015-review-design/reference/consistency-checks.md +5 -3
- package/skills/b-001-create-task-directory/SKILL.md +68 -68
- package/skills/b-002-create-task-definition/SKILL.md +114 -114
- package/skills/b-003-create-task-research/SKILL.md +130 -128
- package/skills/b-004-create-task-implementation/SKILL.md +98 -98
- package/skills/b-005-review-task/SKILL.md +40 -24
- package/skills/b-005-review-task/examples/review-report-template.md +25 -35
- package/skills/b-005-review-task/reference/assessment-criteria.md +79 -79
- package/skills/b-005-review-task/reference/consistency-checks.md +70 -11
- package/skills/c-001-implement-task/SKILL.md +186 -186
- package/skills/c-001-implement-task/reference/implementation-loop.md +65 -65
- package/skills/c-002-update-documentation/SKILL.md +159 -159
- package/skills/c-002-update-documentation/examples/project-doc-updates.md +4 -4
- package/skills/c-002-update-documentation/reference/doc-structure-and-checks.md +99 -97
- package/skills/d-001-review-retrospective/SKILL.md +93 -0
- package/skills/d-001-review-retrospective/examples/retrospective-report-template.md +50 -0
- package/skills/d-001-review-retrospective/reference/friction-point-mapping.md +30 -0
- package/templates/LESSONS.md +15 -0
- package/templates/project/01-requirements/01-product-brief.md +186 -0
- package/templates/project/01-requirements/02-mvp-scope.md +64 -0
- package/templates/project/01-requirements/03-parking-lot.md +29 -0
- package/templates/project/01-requirements/05-user-stories.md +28 -124
- package/templates/project/01-requirements/{02-features-implemented.md → 06-features-implemented.md} +77 -73
- package/templates/project/02-behavior/01-core-scenarios.md +80 -0
- package/templates/project/03-domain/01-domain-model.md +120 -339
- package/templates/project/03-domain/01-domain-sketch.md +90 -0
- package/templates/project/03-domain/02-ubiquitous-language.md +32 -153
- package/templates/project/04-design/01-tech-stack.md +367 -367
- package/templates/project/04-design/02-repository-structure.md +391 -391
- package/templates/project/04-design/03-screen-design.md +596 -596
- package/templates/project/04-design/04-design-system.md +261 -261
- package/templates/project/04-design/05-data-model.md +211 -211
- package/templates/project/04-design/06-api-spec.md +226 -226
- package/templates/project/04-design/07-architecture.md +183 -183
- package/templates/project/04-design/08-infrastructure.md +180 -180
- package/templates/project/AI_CONTEXT.md +55 -0
- package/templates/project/STAKEHOLDER-SUMMARY.md +66 -0
- package/templates/tasks/task-template/a-definition.md +143 -143
- package/templates/tasks/task-template/b-research.md +185 -185
- package/templates/tasks/task-template/c-implementation.md +200 -200
- package/templates/project/01-requirements/01-system-overview.md +0 -49
- package/templates/project/01-requirements/03-features-planned.md +0 -75
|
@@ -1,226 +1,226 @@
|
|
|
1
|
-
# API仕様
|
|
2
|
-
|
|
3
|
-
<!--
|
|
4
|
-
何を書くか: 認証方式、エンドポイント一覧、共通レスポンス形式
|
|
5
|
-
|
|
6
|
-
目的:
|
|
7
|
-
- フロントエンド・バックエンド間の基本契約を明確化
|
|
8
|
-
- API設計の全体像を把握
|
|
9
|
-
- 開発者間の認識統一
|
|
10
|
-
|
|
11
|
-
重要性:
|
|
12
|
-
- 高レベルなAPI設計の記録
|
|
13
|
-
- 詳細な仕様(リクエスト/レスポンスのスキーマ)はOpenAPI/Swaggerやコードで管理
|
|
14
|
-
|
|
15
|
-
記載のポイント:
|
|
16
|
-
- 認証方式の基本情報
|
|
17
|
-
- エンドポイント一覧(メソッド、パス、説明、認証要否)
|
|
18
|
-
- 共通のレスポンス形式(成功/エラー)
|
|
19
|
-
|
|
20
|
-
更新頻度:
|
|
21
|
-
- プロジェクト初期に基本設計を作成
|
|
22
|
-
- エンドポイント追加・削除時に更新
|
|
23
|
-
|
|
24
|
-
**詳細な実装仕様の管理**:
|
|
25
|
-
- リクエスト/レスポンスの詳細なJSONスキーマ → OpenAPI/Swagger
|
|
26
|
-
- バリデーションルール → コード(バリデーター)
|
|
27
|
-
- エラーコード詳細 → コード(エラーハンドラー)
|
|
28
|
-
- ページネーション、レート制限 → コードと運用ドキュメント
|
|
29
|
-
-->
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## 認証・認可
|
|
34
|
-
|
|
35
|
-
<!--
|
|
36
|
-
API のセキュリティ方式の基本情報
|
|
37
|
-
|
|
38
|
-
よくある認証方式:
|
|
39
|
-
- JWT (JSON Web Token): ステートレス、マイクロサービス向き
|
|
40
|
-
- OAuth 2.0: サードパーティ認証、権限委譲
|
|
41
|
-
- API Key: シンプル、内部API向き
|
|
42
|
-
- Session Cookie: ステートフル、Webアプリ向き
|
|
43
|
-
|
|
44
|
-
記載すべき内容:
|
|
45
|
-
- 認証方法(JWT, OAuth 2.0, API Key など)
|
|
46
|
-
- トークンの基本的な有効期限
|
|
47
|
-
- 認証フローの概要
|
|
48
|
-
- 権限スコープの種類
|
|
49
|
-
-->
|
|
50
|
-
|
|
51
|
-
| 項目 | 内容 |
|
|
52
|
-
|------|------|
|
|
53
|
-
| **認証方法** | <!-- 例: JWT Bearer Token --> |
|
|
54
|
-
| **トークン有効期限** | <!-- 例: アクセストークン: 1時間、リフレッシュトークン: 30日 --> |
|
|
55
|
-
| **トークン形式** | <!-- 例: Authorization: Bearer {token} --> |
|
|
56
|
-
| **権限スコープ** | <!-- 例: read, write, admin --> |
|
|
57
|
-
|
|
58
|
-
**認証フロー概要**:
|
|
59
|
-
<!-- 例:
|
|
60
|
-
1. POST /auth/login でログイン
|
|
61
|
-
2. アクセストークンとリフレッシュトークンを取得
|
|
62
|
-
3. 以降のリクエストで Authorization: Bearer {token} ヘッダーに含める
|
|
63
|
-
4. トークン期限切れ時は POST /auth/refresh でリフレッシュ
|
|
64
|
-
-->
|
|
65
|
-
|
|
66
|
-
---
|
|
67
|
-
|
|
68
|
-
## エンドポイント一覧
|
|
69
|
-
|
|
70
|
-
<!--
|
|
71
|
-
すべてのAPIエンドポイントを一覧化
|
|
72
|
-
|
|
73
|
-
テーブル構成:
|
|
74
|
-
【メソッド】
|
|
75
|
-
- HTTP メソッド(GET, POST, PUT, PATCH, DELETE)
|
|
76
|
-
- RESTful な使い分けを意識
|
|
77
|
-
|
|
78
|
-
【パス】
|
|
79
|
-
- エンドポイントの URL パス
|
|
80
|
-
- パスパラメータは {id}, {userId} のように記載
|
|
81
|
-
- 例: /api/users/{id}, /api/orders/{orderId}/items
|
|
82
|
-
|
|
83
|
-
【説明】
|
|
84
|
-
- エンドポイントの目的を1行で記載
|
|
85
|
-
- 例: 「ユーザー一覧を取得」「注文を作成」
|
|
86
|
-
|
|
87
|
-
【認証】
|
|
88
|
-
- 必要/不要/オプション
|
|
89
|
-
- 必要な権限スコープがあれば記載(例: admin, write)
|
|
90
|
-
|
|
91
|
-
【ステータス】
|
|
92
|
-
- 実装済み/未実装/非推奨(Deprecated)
|
|
93
|
-
- バージョニングで廃止予定のエンドポイントを記録
|
|
94
|
-
|
|
95
|
-
記載のベストプラクティス:
|
|
96
|
-
- リソースごとにグループ化(ユーザー関連、注文関連など)
|
|
97
|
-
- CRUD 操作を揃える(GET一覧, GET詳細, POST作成, PUT更新, DELETE削除)
|
|
98
|
-
- ページネーションやフィルタリングのパラメータを記載
|
|
99
|
-
- 非推奨(Deprecated)エンドポイントも記録し、移行先を明記
|
|
100
|
-
-->
|
|
101
|
-
|
|
102
|
-
### ユーザー管理
|
|
103
|
-
|
|
104
|
-
| メソッド | パス | 説明 | 認証 | ステータス |
|
|
105
|
-
|---------|------|------|------|-----------|
|
|
106
|
-
| <!-- GET --> | <!-- /api/users --> | <!-- ユーザー一覧取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
|
|
107
|
-
| <!-- GET --> | <!-- /api/users/{id} --> | <!-- ユーザー詳細取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
|
|
108
|
-
| <!-- POST --> | <!-- /api/users --> | <!-- ユーザー作成 --> | <!-- 必要(write) --> | <!-- 実装済み --> |
|
|
109
|
-
| <!-- PUT --> | <!-- /api/users/{id} --> | <!-- ユーザー更新(完全置換) --> | <!-- 必要(write) --> | <!-- 実装済み --> |
|
|
110
|
-
| <!-- PATCH --> | <!-- /api/users/{id} --> | <!-- ユーザー更新(部分更新) --> | <!-- 必要(write) --> | <!-- 実装済み --> |
|
|
111
|
-
| <!-- DELETE --> | <!-- /api/users/{id} --> | <!-- ユーザー削除 --> | <!-- 必要(admin) --> | <!-- 実装済み --> |
|
|
112
|
-
|
|
113
|
-
### 注文管理
|
|
114
|
-
|
|
115
|
-
| メソッド | パス | 説明 | 認証 | ステータス |
|
|
116
|
-
|---------|------|------|------|-----------|
|
|
117
|
-
| <!-- GET --> | <!-- /api/orders --> | <!-- 注文一覧取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
|
|
118
|
-
| <!-- GET --> | <!-- /api/orders/{id} --> | <!-- 注文詳細取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
|
|
119
|
-
| <!-- POST --> | <!-- /api/orders --> | <!-- 注文作成 --> | <!-- 必要(write) --> | <!-- 実装済み --> |
|
|
120
|
-
| <!-- POST --> | <!-- /api/orders/{id}/cancel --> | <!-- 注文キャンセル --> | <!-- 必要(write) --> | <!-- 実装済み --> |
|
|
121
|
-
|
|
122
|
-
### 認証
|
|
123
|
-
|
|
124
|
-
| メソッド | パス | 説明 | 認証 | ステータス |
|
|
125
|
-
|---------|------|------|------|-----------|
|
|
126
|
-
| <!-- POST --> | <!-- /api/auth/login --> | <!-- ログイン --> | <!-- 不要 --> | <!-- 実装済み --> |
|
|
127
|
-
| <!-- POST --> | <!-- /api/auth/logout --> | <!-- ログアウト --> | <!-- 必要 --> | <!-- 実装済み --> |
|
|
128
|
-
| <!-- POST --> | <!-- /api/auth/refresh --> | <!-- トークンリフレッシュ --> | <!-- 不要(リフレッシュトークン必要) --> | <!-- 実装済み --> |
|
|
129
|
-
|
|
130
|
-
---
|
|
131
|
-
|
|
132
|
-
## 共通レスポンス形式
|
|
133
|
-
|
|
134
|
-
<!--
|
|
135
|
-
全エンドポイントで統一するレスポンス形式
|
|
136
|
-
|
|
137
|
-
記載すべき内容:
|
|
138
|
-
- 成功時のレスポンス構造
|
|
139
|
-
- エラー時のレスポンス構造
|
|
140
|
-
- 主要なHTTPステータスコード
|
|
141
|
-
|
|
142
|
-
詳細な仕様(リクエスト/レスポンスの詳細なJSONスキーマ、
|
|
143
|
-
バリデーションルール、エラーコード定義)は OpenAPI/Swagger で管理します。
|
|
144
|
-
-->
|
|
145
|
-
|
|
146
|
-
### 成功レスポンス
|
|
147
|
-
|
|
148
|
-
**基本構造**:
|
|
149
|
-
|
|
150
|
-
```json
|
|
151
|
-
{
|
|
152
|
-
"data": { /* リソースデータ */ },
|
|
153
|
-
"meta": { /* メタデータ(ページネーション情報など) */ }
|
|
154
|
-
}
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
**単一リソース取得の例**:
|
|
158
|
-
|
|
159
|
-
```json
|
|
160
|
-
{
|
|
161
|
-
"data": {
|
|
162
|
-
"id": 1,
|
|
163
|
-
"email": "user@example.com",
|
|
164
|
-
"name": "User Name",
|
|
165
|
-
"created_at": "2024-01-01T00:00:00Z"
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
```
|
|
169
|
-
|
|
170
|
-
**リスト取得の例**:
|
|
171
|
-
|
|
172
|
-
```json
|
|
173
|
-
{
|
|
174
|
-
"data": [
|
|
175
|
-
{ "id": 1, "name": "User 1" },
|
|
176
|
-
{ "id": 2, "name": "User 2" }
|
|
177
|
-
],
|
|
178
|
-
"meta": {
|
|
179
|
-
"total": 100,
|
|
180
|
-
"limit": 20,
|
|
181
|
-
"offset": 0
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
```
|
|
185
|
-
|
|
186
|
-
### エラーレスポンス
|
|
187
|
-
|
|
188
|
-
**基本構造**:
|
|
189
|
-
|
|
190
|
-
```json
|
|
191
|
-
{
|
|
192
|
-
"error": {
|
|
193
|
-
"code": "ERROR_CODE",
|
|
194
|
-
"message": "Human-readable error message"
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
**バリデーションエラーの例**:
|
|
200
|
-
|
|
201
|
-
```json
|
|
202
|
-
{
|
|
203
|
-
"error": {
|
|
204
|
-
"code": "VALIDATION_ERROR",
|
|
205
|
-
"message": "Validation failed",
|
|
206
|
-
"details": [
|
|
207
|
-
{ "field": "email", "message": "Invalid email format" }
|
|
208
|
-
]
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### 主要なHTTPステータスコード
|
|
214
|
-
|
|
215
|
-
| ステータスコード | 説明 | 使用場面 |
|
|
216
|
-
|----------------|------|---------|
|
|
217
|
-
| **200 OK** | 成功 | GET, PUT, PATCH, DELETE の成功 |
|
|
218
|
-
| **201 Created** | リソース作成成功 | POST でのリソース作成成功 |
|
|
219
|
-
| **204 No Content** | 成功(レスポンスボディなし) | DELETE 成功時など |
|
|
220
|
-
| **400 Bad Request** | 不正なリクエスト | バリデーションエラー |
|
|
221
|
-
| **401 Unauthorized** | 認証エラー | トークン不正・期限切れ |
|
|
222
|
-
| **403 Forbidden** | 権限不足 | 認証済みだが権限不足 |
|
|
223
|
-
| **404 Not Found** | リソースが存在しない | 指定したIDのリソースが見つからない |
|
|
224
|
-
| **409 Conflict** | リソースの競合 | 既に存在するメールアドレスなど |
|
|
225
|
-
| **429 Too Many Requests** | レート制限超過 | リクエスト数が上限を超えた |
|
|
226
|
-
| **500 Internal Server Error** | サーバーエラー | サーバー内部エラー |
|
|
1
|
+
# API仕様
|
|
2
|
+
|
|
3
|
+
<!--
|
|
4
|
+
何を書くか: 認証方式、エンドポイント一覧、共通レスポンス形式
|
|
5
|
+
|
|
6
|
+
目的:
|
|
7
|
+
- フロントエンド・バックエンド間の基本契約を明確化
|
|
8
|
+
- API設計の全体像を把握
|
|
9
|
+
- 開発者間の認識統一
|
|
10
|
+
|
|
11
|
+
重要性:
|
|
12
|
+
- 高レベルなAPI設計の記録
|
|
13
|
+
- 詳細な仕様(リクエスト/レスポンスのスキーマ)はOpenAPI/Swaggerやコードで管理
|
|
14
|
+
|
|
15
|
+
記載のポイント:
|
|
16
|
+
- 認証方式の基本情報
|
|
17
|
+
- エンドポイント一覧(メソッド、パス、説明、認証要否)
|
|
18
|
+
- 共通のレスポンス形式(成功/エラー)
|
|
19
|
+
|
|
20
|
+
更新頻度:
|
|
21
|
+
- プロジェクト初期に基本設計を作成
|
|
22
|
+
- エンドポイント追加・削除時に更新
|
|
23
|
+
|
|
24
|
+
**詳細な実装仕様の管理**:
|
|
25
|
+
- リクエスト/レスポンスの詳細なJSONスキーマ → OpenAPI/Swagger
|
|
26
|
+
- バリデーションルール → コード(バリデーター)
|
|
27
|
+
- エラーコード詳細 → コード(エラーハンドラー)
|
|
28
|
+
- ページネーション、レート制限 → コードと運用ドキュメント
|
|
29
|
+
-->
|
|
30
|
+
|
|
31
|
+
---
|
|
32
|
+
|
|
33
|
+
## 認証・認可
|
|
34
|
+
|
|
35
|
+
<!--
|
|
36
|
+
API のセキュリティ方式の基本情報
|
|
37
|
+
|
|
38
|
+
よくある認証方式:
|
|
39
|
+
- JWT (JSON Web Token): ステートレス、マイクロサービス向き
|
|
40
|
+
- OAuth 2.0: サードパーティ認証、権限委譲
|
|
41
|
+
- API Key: シンプル、内部API向き
|
|
42
|
+
- Session Cookie: ステートフル、Webアプリ向き
|
|
43
|
+
|
|
44
|
+
記載すべき内容:
|
|
45
|
+
- 認証方法(JWT, OAuth 2.0, API Key など)
|
|
46
|
+
- トークンの基本的な有効期限
|
|
47
|
+
- 認証フローの概要
|
|
48
|
+
- 権限スコープの種類
|
|
49
|
+
-->
|
|
50
|
+
|
|
51
|
+
| 項目 | 内容 |
|
|
52
|
+
|------|------|
|
|
53
|
+
| **認証方法** | <!-- 例: JWT Bearer Token --> |
|
|
54
|
+
| **トークン有効期限** | <!-- 例: アクセストークン: 1時間、リフレッシュトークン: 30日 --> |
|
|
55
|
+
| **トークン形式** | <!-- 例: Authorization: Bearer {token} --> |
|
|
56
|
+
| **権限スコープ** | <!-- 例: read, write, admin --> |
|
|
57
|
+
|
|
58
|
+
**認証フロー概要**:
|
|
59
|
+
<!-- 例:
|
|
60
|
+
1. POST /auth/login でログイン
|
|
61
|
+
2. アクセストークンとリフレッシュトークンを取得
|
|
62
|
+
3. 以降のリクエストで Authorization: Bearer {token} ヘッダーに含める
|
|
63
|
+
4. トークン期限切れ時は POST /auth/refresh でリフレッシュ
|
|
64
|
+
-->
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## エンドポイント一覧
|
|
69
|
+
|
|
70
|
+
<!--
|
|
71
|
+
すべてのAPIエンドポイントを一覧化
|
|
72
|
+
|
|
73
|
+
テーブル構成:
|
|
74
|
+
【メソッド】
|
|
75
|
+
- HTTP メソッド(GET, POST, PUT, PATCH, DELETE)
|
|
76
|
+
- RESTful な使い分けを意識
|
|
77
|
+
|
|
78
|
+
【パス】
|
|
79
|
+
- エンドポイントの URL パス
|
|
80
|
+
- パスパラメータは {id}, {userId} のように記載
|
|
81
|
+
- 例: /api/users/{id}, /api/orders/{orderId}/items
|
|
82
|
+
|
|
83
|
+
【説明】
|
|
84
|
+
- エンドポイントの目的を1行で記載
|
|
85
|
+
- 例: 「ユーザー一覧を取得」「注文を作成」
|
|
86
|
+
|
|
87
|
+
【認証】
|
|
88
|
+
- 必要/不要/オプション
|
|
89
|
+
- 必要な権限スコープがあれば記載(例: admin, write)
|
|
90
|
+
|
|
91
|
+
【ステータス】
|
|
92
|
+
- 実装済み/未実装/非推奨(Deprecated)
|
|
93
|
+
- バージョニングで廃止予定のエンドポイントを記録
|
|
94
|
+
|
|
95
|
+
記載のベストプラクティス:
|
|
96
|
+
- リソースごとにグループ化(ユーザー関連、注文関連など)
|
|
97
|
+
- CRUD 操作を揃える(GET一覧, GET詳細, POST作成, PUT更新, DELETE削除)
|
|
98
|
+
- ページネーションやフィルタリングのパラメータを記載
|
|
99
|
+
- 非推奨(Deprecated)エンドポイントも記録し、移行先を明記
|
|
100
|
+
-->
|
|
101
|
+
|
|
102
|
+
### ユーザー管理
|
|
103
|
+
|
|
104
|
+
| メソッド | パス | 説明 | 認証 | ステータス |
|
|
105
|
+
|---------|------|------|------|-----------|
|
|
106
|
+
| <!-- GET --> | <!-- /api/users --> | <!-- ユーザー一覧取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
|
|
107
|
+
| <!-- GET --> | <!-- /api/users/{id} --> | <!-- ユーザー詳細取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
|
|
108
|
+
| <!-- POST --> | <!-- /api/users --> | <!-- ユーザー作成 --> | <!-- 必要(write) --> | <!-- 実装済み --> |
|
|
109
|
+
| <!-- PUT --> | <!-- /api/users/{id} --> | <!-- ユーザー更新(完全置換) --> | <!-- 必要(write) --> | <!-- 実装済み --> |
|
|
110
|
+
| <!-- PATCH --> | <!-- /api/users/{id} --> | <!-- ユーザー更新(部分更新) --> | <!-- 必要(write) --> | <!-- 実装済み --> |
|
|
111
|
+
| <!-- DELETE --> | <!-- /api/users/{id} --> | <!-- ユーザー削除 --> | <!-- 必要(admin) --> | <!-- 実装済み --> |
|
|
112
|
+
|
|
113
|
+
### 注文管理
|
|
114
|
+
|
|
115
|
+
| メソッド | パス | 説明 | 認証 | ステータス |
|
|
116
|
+
|---------|------|------|------|-----------|
|
|
117
|
+
| <!-- GET --> | <!-- /api/orders --> | <!-- 注文一覧取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
|
|
118
|
+
| <!-- GET --> | <!-- /api/orders/{id} --> | <!-- 注文詳細取得 --> | <!-- 必要(read) --> | <!-- 実装済み --> |
|
|
119
|
+
| <!-- POST --> | <!-- /api/orders --> | <!-- 注文作成 --> | <!-- 必要(write) --> | <!-- 実装済み --> |
|
|
120
|
+
| <!-- POST --> | <!-- /api/orders/{id}/cancel --> | <!-- 注文キャンセル --> | <!-- 必要(write) --> | <!-- 実装済み --> |
|
|
121
|
+
|
|
122
|
+
### 認証
|
|
123
|
+
|
|
124
|
+
| メソッド | パス | 説明 | 認証 | ステータス |
|
|
125
|
+
|---------|------|------|------|-----------|
|
|
126
|
+
| <!-- POST --> | <!-- /api/auth/login --> | <!-- ログイン --> | <!-- 不要 --> | <!-- 実装済み --> |
|
|
127
|
+
| <!-- POST --> | <!-- /api/auth/logout --> | <!-- ログアウト --> | <!-- 必要 --> | <!-- 実装済み --> |
|
|
128
|
+
| <!-- POST --> | <!-- /api/auth/refresh --> | <!-- トークンリフレッシュ --> | <!-- 不要(リフレッシュトークン必要) --> | <!-- 実装済み --> |
|
|
129
|
+
|
|
130
|
+
---
|
|
131
|
+
|
|
132
|
+
## 共通レスポンス形式
|
|
133
|
+
|
|
134
|
+
<!--
|
|
135
|
+
全エンドポイントで統一するレスポンス形式
|
|
136
|
+
|
|
137
|
+
記載すべき内容:
|
|
138
|
+
- 成功時のレスポンス構造
|
|
139
|
+
- エラー時のレスポンス構造
|
|
140
|
+
- 主要なHTTPステータスコード
|
|
141
|
+
|
|
142
|
+
詳細な仕様(リクエスト/レスポンスの詳細なJSONスキーマ、
|
|
143
|
+
バリデーションルール、エラーコード定義)は OpenAPI/Swagger で管理します。
|
|
144
|
+
-->
|
|
145
|
+
|
|
146
|
+
### 成功レスポンス
|
|
147
|
+
|
|
148
|
+
**基本構造**:
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"data": { /* リソースデータ */ },
|
|
153
|
+
"meta": { /* メタデータ(ページネーション情報など) */ }
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**単一リソース取得の例**:
|
|
158
|
+
|
|
159
|
+
```json
|
|
160
|
+
{
|
|
161
|
+
"data": {
|
|
162
|
+
"id": 1,
|
|
163
|
+
"email": "user@example.com",
|
|
164
|
+
"name": "User Name",
|
|
165
|
+
"created_at": "2024-01-01T00:00:00Z"
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**リスト取得の例**:
|
|
171
|
+
|
|
172
|
+
```json
|
|
173
|
+
{
|
|
174
|
+
"data": [
|
|
175
|
+
{ "id": 1, "name": "User 1" },
|
|
176
|
+
{ "id": 2, "name": "User 2" }
|
|
177
|
+
],
|
|
178
|
+
"meta": {
|
|
179
|
+
"total": 100,
|
|
180
|
+
"limit": 20,
|
|
181
|
+
"offset": 0
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### エラーレスポンス
|
|
187
|
+
|
|
188
|
+
**基本構造**:
|
|
189
|
+
|
|
190
|
+
```json
|
|
191
|
+
{
|
|
192
|
+
"error": {
|
|
193
|
+
"code": "ERROR_CODE",
|
|
194
|
+
"message": "Human-readable error message"
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**バリデーションエラーの例**:
|
|
200
|
+
|
|
201
|
+
```json
|
|
202
|
+
{
|
|
203
|
+
"error": {
|
|
204
|
+
"code": "VALIDATION_ERROR",
|
|
205
|
+
"message": "Validation failed",
|
|
206
|
+
"details": [
|
|
207
|
+
{ "field": "email", "message": "Invalid email format" }
|
|
208
|
+
]
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
### 主要なHTTPステータスコード
|
|
214
|
+
|
|
215
|
+
| ステータスコード | 説明 | 使用場面 |
|
|
216
|
+
|----------------|------|---------|
|
|
217
|
+
| **200 OK** | 成功 | GET, PUT, PATCH, DELETE の成功 |
|
|
218
|
+
| **201 Created** | リソース作成成功 | POST でのリソース作成成功 |
|
|
219
|
+
| **204 No Content** | 成功(レスポンスボディなし) | DELETE 成功時など |
|
|
220
|
+
| **400 Bad Request** | 不正なリクエスト | バリデーションエラー |
|
|
221
|
+
| **401 Unauthorized** | 認証エラー | トークン不正・期限切れ |
|
|
222
|
+
| **403 Forbidden** | 権限不足 | 認証済みだが権限不足 |
|
|
223
|
+
| **404 Not Found** | リソースが存在しない | 指定したIDのリソースが見つからない |
|
|
224
|
+
| **409 Conflict** | リソースの競合 | 既に存在するメールアドレスなど |
|
|
225
|
+
| **429 Too Many Requests** | レート制限超過 | リクエスト数が上限を超えた |
|
|
226
|
+
| **500 Internal Server Error** | サーバーエラー | サーバー内部エラー |
|