Download OpenAPI specification:
ふるぷらユーザー向けAPI
新規ユーザーアカウントを作成します。
| name required | string <= 100 characters |
| email required | string <email> |
| password required | string <password> >= 8 characters |
{- "name": "ふるぷら太郎",
- "email": "yamada@furupura.jp",
- "password": "SecurePass123!"
}{- "message": "ユーザー登録が完了しました。メールアドレスに確認メールを送信しました。"
}メールに送信された認証トークンを使用してメールアドレスを認証します。
| userId required | integer <int64> ユーザーID |
| token required | string メール認証トークン |
{- "userId": 0,
- "token": "string"
}{- "message": "string",
- "verified": true
}メールアドレスとパスワードでログインします。
| email required | string <email> |
| password required | string <password> |
{- "email": "yamada@example.com",
- "password": "SecurePass123!"
}{- "user": {
- "userId": 1234567890123456800,
- "name": "山田太郎",
- "email": "yamada@example.com"
}, - "organization": {
- "organizationId": "123e4567-e89b-12d3-a456-426614174000",
- "name": "株式会社Example"
}, - "subscription": {
- "subscriptionId": "987fcdeb-51a2-43f1-b67e-5cde3210fedc",
- "name": "スタンダードプラン",
- "price": 5000,
- "maxItems": 100,
- "usedItems": 25,
- "itemPriceLimit": 50000,
- "description": "中規模事業者向けプラン"
}
}{- "user": {
- "userId": 0,
- "email": "user@example.com",
- "name": "string"
}, - "organization": {
- "organizationId": "string",
- "name": "string"
}, - "subscription": {
- "subscriptionId": "string",
- "name": "string",
- "price": 0,
- "maxItems": 0,
- "usedItems": 0,
- "itemPriceLimit": 0,
- "description": "string"
}, - "addresses": [
- {
- "postal_code": "string",
- "prefecture": "string",
- "city": "string",
- "street": "string",
- "building": "string",
- "addressId": "785d1fc4-8ab5-48f1-8685-117cac9865d6",
- "label": "string",
- "is_default": false
}
]
}プロフィール情報を部分的に更新します。
| name | string <= 100 characters |
string <email> メールアドレス | |
| password | string <password> >= 8 characters 新しいパスワード |
{- "name": "string",
- "email": "user@example.com",
- "password": "pa$$word"
}{- "user": {
- "userId": 0,
- "email": "user@example.com",
- "name": "string"
}, - "organization": {
- "organizationId": "string",
- "name": "string"
}, - "subscription": {
- "subscriptionId": "string",
- "name": "string",
- "price": 0,
- "maxItems": 0,
- "usedItems": 0,
- "itemPriceLimit": 0,
- "description": "string"
}, - "addresses": [
- {
- "postal_code": "string",
- "prefecture": "string",
- "city": "string",
- "street": "string",
- "building": "string",
- "addressId": "785d1fc4-8ab5-48f1-8685-117cac9865d6",
- "label": "string",
- "is_default": false
}
]
}現在のパスワードを確認します(プロフィール更新前の確認用)
| password required | string <password> 現在のパスワード |
{- "password": "pa$$word"
}{- "message": "string"
}公開されている商品の一覧を取得します。カテゴリや価格帯でフィルタリング可能です。
| keyword | string 検索キーワード(商品名・説明文で検索) |
| categorySlug | string カテゴリースラッグ |
| brandSlug | string ブランドスラッグ |
| minPrice | integer >= 0 最低価格 |
| maxPrice | integer >= 0 最高価格 |
| area | integer エリアID |
| gender | integer Enum: 1 2 3 4 性別(1:メンズ, 2:レディース, 3:ユニセックス, 4:キッズ) |
| sizes | Array of strings サイズラベル(カンマ区切り) |
| colors | Array of strings |
| condition | string 商品状態 |
| material | string 素材 |
| shopId | integer <int64> ショップID |
| tag | integer <int64> タグID |
| sortBy | string Default: "createdAt" Enum: "price" "name" "createdAt" ソート項目 |
| sortOrder | string Default: "DESC" Enum: "ASC" "DESC" ソート順 |
| page | integer >= 1 Default: 1 |
| pageSize | integer [ 1 .. 100 ] Default: 24 |
{- "products": [
- {
- "productId": 0,
- "categoryId": 0,
- "shopName": "string",
- "shopArea": 0,
- "name": "string",
- "description": "string",
- "price": 0,
- "originalPrice": 0,
- "category": {
- "categoryId": 0,
- "name": "string",
- "categorySlug": "string",
- "parentId": 0
}, - "brand": {
- "brandId": "string",
- "name": "string"
}, - "area": {
- "areaId": 0,
- "name": "string"
}
}
], - "meta": {
- "count": 0,
- "currentPage": 0,
- "pages": 0,
- "pageSize": 0
}
}{- "productId": 0,
- "categoryId": 0,
- "name": "string",
- "description": "string",
- "price": 0,
- "originalPrice": 0,
- "gender": 1,
- "sizeLabel": [
- 0
], - "color": [
- 0
], - "condition": "string",
- "material": "string",
- "status": "available",
- "category": {
- "categoryId": 0,
- "name": "string",
- "categorySlug": "string",
- "parentId": 0
}, - "brand": {
- "brandId": "string",
- "brandSlug": "string",
- "name": "string"
}, - "area": {
- "areaId": 0,
- "name": "string"
}, - "shop": {
- "shopSlug": "string",
- "shopId": 0,
- "shopName": "string",
- "shopArea": 0
}, - "tags": [
- {
- "tagId": "string",
- "name": "string"
}
]
}{- "1": {
- "categoryId": 1,
- "name": "ファッション",
- "categorySlug": "fashion",
- "parentId": null,
- "measurements": [
- "size",
- "color"
]
}, - "2": {
- "categoryId": 2,
- "name": "メンズファッション",
- "categorySlug": "mens-fashion",
- "parentId": 1,
- "measurements": [
- "size",
- "color",
- "fit"
]
}
}指定されたIDのカテゴリー情報を取得します
| categoryId required | integer Example: 1 カテゴリーID |
{- "categoryId": 1,
- "name": "ファッション",
- "categorySlug": "fashion",
- "parentId": null,
- "measurements": {
- "size": "string",
- "color": "string",
- "material": "string"
}
}指定されたスラッグのカテゴリー情報を取得します
| categorySlug required | string Example: fashion カテゴリースラッグ |
{- "categoryId": 1,
- "name": "ファッション",
- "categorySlug": "fashion",
- "parentId": null,
- "measurements": {
- "size": "string",
- "color": "string",
- "material": "string"
}
}[- {
- "tagId": 123456,
- "name": "おすすめ",
- "subname": "今月のおすすめ商品",
- "tagSlug": "recommended",
- "products": [
- {
- "productId": 123456,
- "name": "特産品セット",
- "price": 5000,
- "shopName": "ふるぷらマート",
}
]
}
]公開されているショップの一覧を取得します
| page | integer >= 1 Default: 1 ページ番号 |
| pageSize | integer [ 1 .. 100 ] Default: 20 1ページあたりの件数 |
| q | string 検索キーワード |
| areaId | integer <int64> エリアIDでフィルタリング |
| sortBy | string Default: "createdAt" Enum: "price" "name" "createdAt" ソートキー |
| sortOrder | string Default: "desc" Enum: "asc" "desc" ソート順 |
[- {
- "shopId": 123456,
- "name": "ふるぷらマート",
- "shopSlug": "furupura-mart",
- "description": "地域の特産品を扱うショップです",
- "areaId": "area_123456789"
}
]{- "shopId": 123456,
- "name": "ふるぷらマート",
- "shopSlug": "furupura-mart",
- "description": "地域の特産品を扱うショップです",
- "areaId": 123456,
- "area": {
- "areaId": 123456,
- "name": "東京都",
- "parentId": null
}
}{- "shopId": 123456,
- "name": "ふるぷらマート",
- "shopSlug": "furupura-mart",
- "description": "地域の特産品を扱うショップです",
- "areaId": 123456,
- "area": {
- "areaId": 123456,
- "name": "東京都",
- "parentId": null
}
}カートの商品から新規注文を作成
required | Array of objects |
required | object (ShippingAddress) |
| paymentMethod required | string 支払い方法 |
| itemsPrice required | number <float> 商品合計価格 |
| taxPrice required | number <float> 税金 |
| shippingPrice required | number <float> 送料 |
| totalPrice required | number <float> 合計金額 |
{- "orderItems": [
- {
- "productId": 0,
- "name": "string",
- "image": "string",
- "price": 0.1,
- "finalPrice": 0.1,
- "serviceOption": "buy",
- "rentalPeriod": "4days",
- "inStore": true,
- "wasRented": true,
- "useSubscription": true
}
], - "shippingAddress": {
- "postalCode": "123-4567",
- "prefecture": "東京都",
- "city": "渋谷区",
- "streetAddress": "渋谷1-2-3",
- "buildingName": "渋谷ビル 301号室"
}, - "paymentMethod": "string",
- "itemsPrice": 0.1,
- "taxPrice": 0.1,
- "shippingPrice": 0.1,
- "totalPrice": 0.1
}{- "order": {
- "orderId": 0,
- "userId": 0,
- "userName": "string",
- "paymentMethod": "string",
- "paymentIntentId": "string",
- "itemsPrice": 0.1,
- "taxPrice": 0.1,
- "shippingPrice": 0.1,
- "totalPrice": 0.1,
- "status": "pending",
- "paidAt": "2019-08-24T14:15:22Z",
- "canceledAt": "2019-08-24T14:15:22Z",
- "postalCode": "string",
- "prefecture": "string",
- "city": "string",
- "streetAddress": "string",
- "buildingName": "string"
}, - "usedItems": 0
}[- {
- "orderId": 0,
- "userId": 0,
- "userName": "string",
- "paymentMethod": "string",
- "paymentIntentId": "string",
- "itemsPrice": 0.1,
- "taxPrice": 0.1,
- "shippingPrice": 0.1,
- "totalPrice": 0.1,
- "status": "pending",
- "paidAt": "2019-08-24T14:15:22Z",
- "canceledAt": "2019-08-24T14:15:22Z",
- "postalCode": "string",
- "prefecture": "string",
- "city": "string",
- "streetAddress": "string",
- "buildingName": "string"
}
]指定された注文の詳細情報を取得
| orderId required | integer 注文ID |
{- "orderId": 0,
- "userId": 0,
- "userName": "string",
- "paymentMethod": "string",
- "paymentIntentId": "string",
- "itemsPrice": 0.1,
- "taxPrice": 0.1,
- "shippingPrice": 0.1,
- "totalPrice": 0.1,
- "status": "pending",
- "paidAt": "2019-08-24T14:15:22Z",
- "canceledAt": "2019-08-24T14:15:22Z",
- "postalCode": "string",
- "prefecture": "string",
- "city": "string",
- "streetAddress": "string",
- "buildingName": "string",
- "User": {
- "userId": 0,
- "name": "string",
- "email": "string"
}, - "PurchaseItems": [
- {
- "purchaseItemId": 0,
- "orderId": 0,
- "productId": 0,
- "shopId": 0,
- "name": "string",
- "image": "string",
- "price": 0.1,
- "finalPrice": 0.1,
- "inStore": true,
- "wasRented": true,
- "isDelivered": true,
- "deliveredAt": "2019-08-24T14:15:22Z",
- "isCanceled": true,
- "canceledAt": "2019-08-24T14:15:22Z",
- "description": "string"
}
], - "RentalItems": [
- {
- "rentalItemId": 0,
- "orderId": 0,
- "productId": 0,
- "shopId": 0,
- "userId": 0,
- "name": "string",
- "image": "string",
- "price": 0.1,
- "finalPrice": 0.1,
- "rentalPeriod": "4days",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "status": "rented",
- "inStore": true,
- "useSubscription": true,
- "isDelivered": true,
- "deliveredAt": "2019-08-24T14:15:22Z",
- "returnedAt": "2019-08-24T14:15:22Z",
- "isCanceled": true,
- "canceledAt": "2019-08-24T14:15:22Z",
- "description": "string"
}
], - "RentalExtensions": [
- {
- "rentalExtensionId": 0,
- "rentalItemId": 0,
- "orderId": 0,
- "shopId": 0,
- "fee": 0.1,
- "extensionPeriod": "3days",
- "startDate": "2019-08-24T14:15:22Z",
- "endDate": "2019-08-24T14:15:22Z",
- "price": 0.1,
- "overdue": true
}
]
}レンタル期間を延長
| rentalItemId required | integer レンタルアイテムID |
| extensionPeriod required | string Enum: "3days" "1week" 延長期間 |
{- "extensionPeriod": "3days"
}{- "message": "string"
}支払い処理の最終確認
| orderId required | integer 注文ID |
| paymentIntentId required | string Stripe PaymentIntent ID |
| totalPrice required | number <float> 合計金額 |
{- "paymentIntentId": "string",
- "totalPrice": 0.1
}{- "message": "string"
}{- "products": [
- {
- "productId": 0,
- "categoryId": 0,
- "shopName": "string",
- "shopArea": 0,
- "name": "string",
- "description": "string",
- "price": 0,
- "originalPrice": 0,
- "category": {
- "categoryId": 0,
- "name": "string",
- "categorySlug": "string",
- "parentId": 0
}, - "brand": {
- "brandId": "string",
- "name": "string"
}, - "area": {
- "areaId": 0,
- "name": "string"
}
}
], - "shops": [
- {
- "shopId": 123456,
- "name": "ふるぷらマート",
- "shopSlug": "furupura-mart",
- "description": "地域の特産品を扱うショップです",
- "areaId": "area_123456789"
}
]
}複数商品のお気に入り状態を一括確認します。参照系だから GET が原則だが、「複数 ID をまとめて送る」ために POST を妥協策として採用
| productIds required | Array of integers <int64> [ items <int64 > ] |
{- "productIds": [
- 0
]
}[- {
- "productId": 1,
- "isFavorite": true
}, - {
- "productId": 2,
- "isFavorite": false
}
]{- "userId": 0,
- "emailNotifications": {
- "enabled": true,
- "orderUpdates": true,
- "shippingUpdates": true,
- "promotions": true,
- "priceAlerts": false,
- "stockAlerts": false,
- "newsletter": false,
- "pointsExpiry": true,
- "accountSecurity": true
}, - "pushNotifications": {
- "enabled": false,
- "orderUpdates": true,
- "shippingUpdates": true,
- "promotions": false,
- "priceAlerts": false,
- "inAppMessages": true,
- "chatMessages": true
}, - "smsNotifications": {
- "enabled": false,
- "orderConfirmation": false,
- "shippingUpdates": false,
- "deliveryAlerts": false,
- "securityAlerts": true
}, - "lineNotifications": {
- "enabled": false,
- "lineId": "string",
- "orderUpdates": true,
- "shippingUpdates": true,
- "promotions": false
}, - "quietHours": {
- "enabled": false,
- "startTime": "22:00",
- "endTime": "07:00",
- "timezone": "Asia/Tokyo"
}
}ユーザーの通知設定を更新します。
object (EmailNotificationSettings) | |
object (PushNotificationSettings) | |
object (SmsNotificationSettings) | |
object (LineNotificationSettings) | |
object (QuietHours) |
{- "emailNotifications": {
- "enabled": true,
- "orderUpdates": true,
- "shippingUpdates": true,
- "promotions": true,
- "priceAlerts": false,
- "stockAlerts": false,
- "newsletter": false,
- "pointsExpiry": true,
- "accountSecurity": true
}, - "pushNotifications": {
- "enabled": false,
- "orderUpdates": true,
- "shippingUpdates": true,
- "promotions": false,
- "priceAlerts": false,
- "inAppMessages": true,
- "chatMessages": true
}, - "smsNotifications": {
- "enabled": false,
- "orderConfirmation": false,
- "shippingUpdates": false,
- "deliveryAlerts": false,
- "securityAlerts": true
}, - "lineNotifications": {
- "enabled": false,
- "lineId": "string",
- "orderUpdates": true,
- "shippingUpdates": true,
- "promotions": false
}, - "quietHours": {
- "enabled": false,
- "startTime": "22:00",
- "endTime": "07:00",
- "timezone": "Asia/Tokyo"
}
}{- "userId": 0,
- "emailNotifications": {
- "enabled": true,
- "orderUpdates": true,
- "shippingUpdates": true,
- "promotions": true,
- "priceAlerts": false,
- "stockAlerts": false,
- "newsletter": false,
- "pointsExpiry": true,
- "accountSecurity": true
}, - "pushNotifications": {
- "enabled": false,
- "orderUpdates": true,
- "shippingUpdates": true,
- "promotions": false,
- "priceAlerts": false,
- "inAppMessages": true,
- "chatMessages": true
}, - "smsNotifications": {
- "enabled": false,
- "orderConfirmation": false,
- "shippingUpdates": false,
- "deliveryAlerts": false,
- "securityAlerts": true
}, - "lineNotifications": {
- "enabled": false,
- "lineId": "string",
- "orderUpdates": true,
- "shippingUpdates": true,
- "promotions": false
}, - "quietHours": {
- "enabled": false,
- "startTime": "22:00",
- "endTime": "07:00",
- "timezone": "Asia/Tokyo"
}
}ユーザーへの通知一覧を取得します。
| page | integer >= 1 Default: 1 ページ番号 |
| pageSize | integer [ 1 .. 100 ] Default: 20 1ページあたりの件数 |
| type | string Enum: "order" "shipping" "promotion" "priceAlert" "stockAlert" "points" "security" "system" 通知タイプでフィルタ |
| readStatus | string Default: "all" Enum: "all" "read" "unread" 既読ステータスでフィルタ |
{- "data": [
- {
- "notificationId": 0,
- "userId": 0,
- "type": "order",
- "title": "string",
- "message": "string",
- "isRead": false,
- "readAt": "2019-08-24T14:15:22Z"
}
], - "pagination": {
- "page": 1,
- "per_page": 20,
- "total": 0,
- "total_pages": 0
}, - "unreadCount": 0
}指定した通知の詳細を取得します。
| notificationId required | integer <int64> |
{- "notificationId": 0,
- "userId": 0,
- "type": "order",
- "title": "string",
- "message": "string",
- "isRead": false,
- "readAt": "2019-08-24T14:15:22Z"
}指定した通知を既読にします。
| notificationIds required | Array of integers <int64> [ items <int64 > ] 既読にする通知ID |
{- "notificationIds": [
- 0
]
}{- "updatedCount": 0
}[- {
- "subscriptionPlanId": "4b92ad1d-59e2-484e-b3e4-a8317760e6e7",
- "name": "ベーシックプラン",
- "price": 3000,
- "maxItems": 5,
- "itemPriceLimit": 10000,
- "description": "月5点まで、1点10,000円以下の古着をレンタル可能"
}
]指定したサブスクリプションプランの詳細を取得します。
| subscriptionPlanId required | string <uuid> サブスクリプションプランID |
{- "subscriptionPlanId": "4b92ad1d-59e2-484e-b3e4-a8317760e6e7",
- "name": "ベーシックプラン",
- "price": 3000,
- "maxItems": 5,
- "itemPriceLimit": 10000,
- "description": "月5点まで、1点10,000円以下の古着をレンタル可能"
}指定したサブスクリプションプランに加入します。
| subscriptionPlanId required | string <uuid> サブスクリプションプランID |
{- "message": "サブスクリプションに加入しました。思う存分、古着を楽しみましょう!",
- "subscription": {
- "planId": "b3f60ba2-c1fd-4b3a-a23d-8e876e0ef75d",
- "name": "string",
- "usedItems": 2,
- "maxItems": 5,
- "itemPriceLimit": 10000
}
}