JitsuFlow API Documentation

API概要

JitsuFlow APIは、ブラジリアン柔術の道場運営と練習管理を効率化するためのRESTful APIです。

ベースURL

https://api.jitsuflow.app

注意: すべてのAPIリクエストにはHTTPSを使用してください。

認証

JitsuFlow APIはJWT(JSON Web Token)ベースの認証を使用します。

ログイン

POST /api/auth/login

リクエストボディ

{
  "email": "user@example.com",
  "password": "your_password"
}

レスポンス

{
  "token": "eyJhbGciOiJI...",
  "user": {
    "id": 1,
    "email": "user@example.com",
    "name": "山田太郎",
    "role": "student"
  }
}

認証ヘッダー

認証が必要なエンドポイントには、以下のヘッダーを含めてください:

Authorization: Bearer YOUR_JWT_TOKEN

エンドポイント

ユーザー管理

POST /api/auth/register

新規ユーザー登録

{
  "email": "user@example.com",
  "password": "password123",
  "name": "山田太郎"
}
GET /api/users/profile 要認証

現在のユーザー情報を取得

道場管理

GET /api/dojos

登録道場の一覧を取得

クエリパラメータ
  • city - 都市でフィルタリング
  • limit - 取得件数(デフォルト: 10)
GET /api/dojos/:id

特定の道場の詳細情報を取得

予約システム

POST /api/bookings 要認証

新規予約を作成

{
  "dojo_id": 1,
  "class_date": "2025-01-20",
  "class_time": "19:00",
  "class_type": "beginner"
}
GET /api/bookings 要認証

ユーザーの予約一覧を取得

DELETE /api/bookings/:id 要認証

予約をキャンセル(24時間前まで)

動画コンテンツ

GET /api/videos 要認証

動画一覧を取得

クエリパラメータ
  • category - カテゴリでフィルタリング
  • is_premium - プレミアムコンテンツのみ
GET /api/videos/:id 要認証

動画の詳細情報と再生URLを取得

ECショップ

GET /api/products

商品一覧を取得(46商品)

クエリパラメータ
  • category - gi, belt, protector, apparel, equipment, training, healing
  • brand - SWEEP, YAWARA
POST /api/cart 要認証

商品をカートに追加

{
  "product_id": 1,
  "quantity": 1
}

決済処理

POST /api/payments/create-payment-intent 要認証

Stripe決済インテントを作成

{
  "amount": 15000,
  "currency": "jpy",
  "description": "SWEEP 柔術着 A2"
}
POST /api/payments/create-subscription 要認証

プレミアム会員登録

{
  "price_id": "price_premium_monthly",
  "customer_email": "user@example.com"
}

レート制限

APIには以下のレート制限が適用されます:

  • 1分間に100リクエストまで
  • 制限を超えると429エラーが返されます
  • ヘッダーで残りリクエスト数を確認可能
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 95
X-RateLimit-Reset: 1642089600

エラーハンドリング

JitsuFlow APIは一貫したエラーレスポンス形式を使用します。

エラーレスポンス形式

{
  "error": "エラータイプ",
  "message": "詳細なエラーメッセージ",
  "code": "ERROR_CODE"
}

HTTPステータスコード

コード 説明
200 成功
201 作成成功
400 不正なリクエスト
401 認証エラー
403 アクセス拒否
404 リソースが見つかりません
429 レート制限超過
500 サーバーエラー

サンプルコード

JavaScript (Fetch API)

// ログイン
const login = async () => {
  const response = await fetch('https://api.jitsuflow.app/api/auth/login', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      email: 'user@example.com',
      password: 'password123'
    })
  });
  
  const data = await response.json();
  const token = data.token;
  
  // トークンを保存
  localStorage.setItem('jitsuflow_token', token);
};

// 認証付きリクエスト
const getBookings = async () => {
  const token = localStorage.getItem('jitsuflow_token');
  
  const response = await fetch('https://api.jitsuflow.app/api/bookings', {
    headers: {
      'Authorization': `Bearer ${token}`
    }
  });
  
  return await response.json();
};

cURL

# ログイン
curl -X POST https://api.jitsuflow.app/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"user@example.com","password":"password123"}'

# 認証付きリクエスト
curl https://api.jitsuflow.app/api/bookings \
  -H "Authorization: Bearer YOUR_JWT_TOKEN"