Update new API..

This commit is contained in:
2025-09-02 20:06:58 +09:00
parent 0acaa6ea1f
commit a8dc2ba3b1
6 changed files with 500 additions and 15 deletions

View File

@ -623,6 +623,133 @@ zekken_number=101&event_code=岐阜ロゲイニング2025
---
## 10. エントリー管理API
### 10.1 現在のエントリー情報取得
ユーザーの最新のエントリー情報を取得します。アプリとサーバー間のデータ同期に使用されます。
**エンドポイント**: `GET /user/current-entry-info/`
**認証**: 必須Token認証
**レスポンス(成功時)**:
```json
{
"id": 123,
"team": {
"id": 45,
"team_name": "サンプルチーム",
"owner": 67
},
"event": {
"id": 12,
"event_name": "岐阜ロゲイニング2025",
"start_datetime": "2025-09-15T10:00:00Z",
"end_datetime": "2025-09-15T16:00:00Z"
},
"category": {
"id": 1,
"category_name": "一般男子",
"duration": 180,
"num_of_member": 4
},
"zekken_number": 101,
"date": "2025-09-15T10:00:00Z",
"hasParticipated": false,
"hasGoaled": false
}
```
**レスポンス(エントリーなし)**:
```json
{
"message": "エントリー情報が見つかりません"
}
```
**レスポンス(認証エラー)**:
```json
{
"detail": "認証情報が提供されていません。"
}
```
### 10.2 エントリーステータス更新
エントリーの参加状況とゴール状況を更新します。後方互換性のため、新旧フィールド名の両方をサポートしています。
**エンドポイント**: `PUT /entry/{entry_id}/update-status/`
**認証**: 必須Token認証
**リクエストパラメータ(新フィールド名)**:
```json
{
"hasParticipated": true,
"hasGoaled": false
}
```
**リクエストパラメータ(旧フィールド名・後方互換性)**:
```json
{
"has_participated": true,
"has_goaled": false
}
```
**レスポンス(成功時)**:
```json
{
"id": 123,
"team": {
"id": 45,
"team_name": "サンプルチーム"
},
"event": {
"id": 12,
"event_name": "岐阜ロゲイニング2025"
},
"zekken_number": 101,
"hasParticipated": true,
"hasGoaled": false,
"updated_at": "2025-09-15T11:30:00Z"
}
```
**レスポンス(エラー時)**:
```json
{
"detail": "エントリーが見つかりません。"
}
```
**使用例**:
**現在のエントリー情報取得**:
```bash
curl -X GET "/user/current-entry-info/" \
-H "Authorization: Token <your_token>" \
-H "Content-Type: application/json"
```
**ステータス更新(参加開始)**:
```bash
curl -X PUT "/entry/123/update-status/" \
-H "Authorization: Token <your_token>" \
-H "Content-Type: application/json" \
-d '{"hasParticipated": true, "hasGoaled": false}'
```
**ステータス更新(ゴール完了)**:
```bash
curl -X PUT "/entry/123/update-status/" \
-H "Authorization: Token <your_token>" \
-H "Content-Type: application/json" \
-d '{"hasParticipated": true, "hasGoaled": true}'
```
---
## エラーコード一覧
| ステータスコード | 説明 |
@ -682,22 +809,37 @@ zekken_number=101&event_code=岐阜ロゲイニング2025
curl -X POST "/entry/" -H "Authorization: Token <token>" -d '{"team":1,"event":1,"category":1}'
```
7. **スタート**
7. **エントリー情報確認**
```bash
curl -X GET "/user/current-entry-info/" -H "Authorization: Token <token>"
```
8. **スタート前ステータス更新**
```bash
curl -X PUT "/entry/123/update-status/" -H "Authorization: Token <token>" -d '{"hasParticipated": true, "hasGoaled": false}'
```
9. **スタート**
```bash
curl -X POST "/start_from_rogapp" -d '{"event_code":"岐阜ロゲイニング2025","team_name":"サンプルチーム"}'
```
8. **チェックイン**
```bash
curl -X POST "/checkin_from_rogapp" -d '{"event_code":"岐阜ロゲイニング2025","team_name":"サンプルチーム","cp_number":1,"image":"https://example.com/photo1.jpg"}'
```
10. **チェックイン**
```bash
curl -X POST "/checkin_from_rogapp" -d '{"event_code":"岐阜ロゲイニング2025","team_name":"サンプルチーム","cp_number":1,"image":"https://example.com/photo1.jpg"}'
```
9. **ゴール**
```bash
curl -X POST "/goal_from_rogapp" -d '{"event_code":"岐阜ロゲイニング2025","team_name":"サンプルチーム","image":"https://example.com/goal.jpg"}'
```
11. **ゴール**
```bash
curl -X POST "/goal_from_rogapp" -d '{"event_code":"岐阜ロゲイニング2025","team_name":"サンプルチーム","image":"https://example.com/goal.jpg"}'
```
10. **証明書取得**
12. **ゴール後ステータス更新**
```bash
curl -X PUT "/entry/123/update-status/" -H "Authorization: Token <token>" -d '{"hasParticipated": true, "hasGoaled": true}'
```
13. **証明書取得**
```bash
curl "/download_scoreboard?zekken_number=101&event_code=岐阜ロゲイニング2025"
```
@ -725,6 +867,8 @@ zekken_number=101&event_code=岐阜ロゲイニング2025
3. **画像アップロード**: 画像ファイルは事前に適切なストレージにアップロードし、URLを指定してください
4. **時刻形式**: すべての時刻は ISO 8601 形式YYYY-MM-DDTHH:MM:SSZで指定してください
5. **エラーハンドリング**: APIからのエラーレスポンスを適切に処理してください
6. **エントリー情報同期**: アプリ起動時は `/user/current-entry-info/` でエントリー情報を同期してください
7. **ステータス更新**: エントリーステータス更新API は後方互換性のため新旧フィールド名をサポートしています
---
@ -804,6 +948,19 @@ zekken_number=101&event_code=岐阜ロゲイニング2025
- **参照**: `rog_entry` (チーム情報取得)
- **参照**: `rog_gpslog` (チェックイン画像URL)
#### 9. エントリー管理系API
**`/user/current-entry-info/` (現在のエントリー情報取得)**
- **参照**: `rog_entry` (ユーザーの最新エントリー情報)
- **参照**: `rog_team` (チーム基本情報)
- **参照**: `rog_newevent2` (イベント情報)
- **参照**: `rog_newcategory` (カテゴリ詳細情報)
- **参照**: `knox_authtoken` (ユーザー認証)
**`/entry/{entry_id}/update-status/` (エントリーステータス更新)**
- **参照**: `rog_entry` (対象エントリー検索)
- **更新**: `rog_entry` (hasParticipated/hasGoaled更新)
- **参照**: `knox_authtoken` (ユーザー認証・権限確認)
---
## テーブル別API使用一覧表