API仕様書テンプレート.md

# API仕様書

## 1. 概要

### 1.1 目的
[APIの目的と主な機能について簡潔に説明してください]

### 1.2 対象ユーザー
[このAPIが想定するユーザー層や利用シーンについて説明してください]

### 1.3 技術仕様
- **API形式**: [REST, GraphQL, SOAP, gRPC等]
- **データフォーマット**: [JSON, XML, Protocol Buffers等]
- **プロトコル**: [HTTP/HTTPS, WebSocket等]

## 2. 認証とアクセス制御

### 2.1 認証方式
[APIの認証方式について説明してください(API Key, OAuth 2.0, JWT等)]

例: Authorization: Bearer {token}


### 2.2 アクセス権限
[利用可能な権限レベルと各権限での操作範囲について説明してください]

### 2.3 レート制限
| プラン | リクエスト上限 | 期間 |
|--------|----------------|------|
| 無料   | [例: 100]      | [例: 1時間あたり] |
| 有料   | [例: 1000]     | [例: 1時間あたり] |

## 3. エンドポイント情報

### ベースURL

https://api.example.com/v1


### 3.1 リソース: [リソース名]

#### [HTTPメソッド] [パス]
[このエンドポイントの機能説明]

**URL**: `[完全なURLパス]`

## 4. リクエスト仕様

### 4.1 クエリパラメータ
| パラメータ名 | 必須 | 型     | 説明                   | デフォルト値 |
|------------|------|--------|------------------------|------------|
| [param1]   | はい  | string | [パラメータの説明]      | -          |
| [param2]   | いいえ | number | [パラメータの説明]      | [値]       |

### 4.2 リクエストヘッダー
| ヘッダー名          | 必須 | 説明                     |
|-------------------|------|--------------------------|
| Content-Type      | はい  | [例: application/json]   |
| Authorization     | はい  | [認証情報について説明]     |

### 4.3 リクエストボディ
[リクエストのボディ形式について説明してください(該当する場合)]

```json
{
  "property1": "value1",
  "property2": 123,
  "nestedObject": {
    "nestedProperty": "value"
  }
}

プロパティ詳細

プロパティ名 必須 説明 制約
property1 はい string [説明] [例: 最大50文字]
property2 いいえ number [説明] [例: 1から100の整数]
nestedObject いいえ object [説明] -

5. レスポンス仕様

5.1 成功レスポンス

ステータスコード: 200 OK

{
  "status": "success",
  "data": {
    "id": "12345",
    "name": "サンプル名",
    "createdAt": "2023-01-01T12:00:00Z"
  }
}

レスポンスフィールド

フィールド名 説明
status string リクエスト処理状態
data object レスポンスデータオブジェクト
data.id string リソースの一意識別子
data.name string リソース名
data.createdAt string 作成日時(ISO 8601形式)

5.2 エラーレスポンス

ステータスコード: [適切なエラーコード(400, 401, 403, 404, 500等)]

{
  "status": "error",
  "code": "ERROR_CODE",
  "message": "エラーメッセージ",
  "details": {
    "field": "エラーが発生したフィールド名",
    "reason": "エラーの詳細な理由"
  }
}

6. エラーハンドリング

6.1 エラーコード一覧

HTTPステータス エラーコード 説明 対処法
400 INVALID_REQUEST リクエストパラメータが不正 リクエスト内容を確認してください
401 UNAUTHORIZED 認証に失敗 認証情報を確認してください
403 FORBIDDEN 権限がない 適切な権限を取得してください
404 RESOURCE_NOT_FOUND リソースが見つからない IDを確認してください
429 RATE_LIMIT_EXCEEDED レート制限を超過 リクエスト頻度を下げてください
500 INTERNAL_ERROR サーバー内部エラー サポートに連絡してください

7. リソース定義

7.1 [リソース名]

[リソースの概要説明]

プロパティ

プロパティ名 説明
id string リソースの一意識別子 "12345"
name string リソースの名前 "サンプル名"
type enum リソースのタイプ "standard", "premium"
createdAt string 作成日時 "2023-01-01T12:00:00Z"

8. 実装例

8.1 cURL

curl -X GET "<https://api.example.com/v1/resources?param1=value1>" \\
     -H "Authorization: Bearer YOUR_API_TOKEN" \\
     -H "Content-Type: application/json"

8.2 JavaScript (fetch)

fetch('<https://api.example.com/v1/resources?param1=value1>', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  }
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

9. バージョン管理

9.1 現在のバージョン

API Version: v1

9.2 変更履歴

バージョン リリース日 変更内容
v1.0.0 2025-05-01 初期リリース

9.3 非推奨機能

機能 非推奨バージョン 削除予定バージョン 代替手段
/v1/old-endpoint v1.1.0 v2.0.0 /v1/new-endpoint を使用

10. 制限事項

10.1 パフォーマンス制限

10.2 利用条件

[APIの利用条件について説明してください]

10.3 セキュリティ上の注意点

11. サポート

11.1 連絡先

11.2 ドキュメント