88 lines
3 KiB
Markdown
88 lines
3 KiB
Markdown
|
|
# API v2 Migration Guide
|
||
|
|
|
||
|
|
## Status: In Progress
|
||
|
|
|
||
|
|
The web app is being migrated to use API v2 exclusively. API v2 provides:
|
||
|
|
- Standard OAuth2/JWT Bearer token authentication
|
||
|
|
- RESTful endpoint patterns
|
||
|
|
- Better error handling with standard HTTP status codes
|
||
|
|
- Token refresh mechanism
|
||
|
|
|
||
|
|
## Backend Implementation Status
|
||
|
|
|
||
|
|
### ✅ Completed
|
||
|
|
- [x] Created `AuthApiV2` with OAuth2 endpoints
|
||
|
|
- [x] Created `JwtService` for token generation/verification
|
||
|
|
- [x] Created `authorizeV2` middleware for Bearer token auth
|
||
|
|
- [x] Created `PacksApiV2` basic structure
|
||
|
|
- [x] Mounted v2 APIs at `/api/v2` path
|
||
|
|
- [x] Separated v1 and v2 authorization middleware
|
||
|
|
|
||
|
|
### ⚠️ Needs Completion
|
||
|
|
- [ ] Fix JwtService HMAC-SHA256 implementation (use proper crypto library)
|
||
|
|
- [ ] Complete PacksApiV2 endpoints implementation
|
||
|
|
- [ ] Implement TestsApiV2
|
||
|
|
- [ ] Implement GamesApiV2
|
||
|
|
- [ ] Implement PurchasesApiV2
|
||
|
|
- [ ] Implement SubscriptionsApiV2
|
||
|
|
- [ ] Implement PromocodesApiV2
|
||
|
|
- [ ] Add comprehensive error responses
|
||
|
|
- [ ] Add API documentation (OpenAPI/Swagger)
|
||
|
|
|
||
|
|
## Web App Implementation Status
|
||
|
|
|
||
|
|
### ✅ Completed
|
||
|
|
- [x] Created `ApiConfigV2` with all v2 endpoints
|
||
|
|
- [x] Created `HttpRepositoryV2` with Bearer token auth
|
||
|
|
- [x] Updated `StorageModule` to use HttpRepositoryV2
|
||
|
|
- [x] Updated `AuthService` to use HttpRepositoryV2
|
||
|
|
- [x] Updated dependency injection to use v2
|
||
|
|
|
||
|
|
### ⚠️ Needs Completion
|
||
|
|
- [x] Update `GamesManager` to use HttpRepositoryV2
|
||
|
|
- [x] Update `TestManager` to use HttpRepositoryV2
|
||
|
|
- [ ] Update `StatisticsService` to use HttpRepositoryV2
|
||
|
|
- [x] Update `SubscriptionService` to use HttpRepositoryV2
|
||
|
|
- [x] Update `PromocodeService` to use HttpRepositoryV2
|
||
|
|
- [ ] Update `PackProgressService` to use HttpRepositoryV2
|
||
|
|
- [ ] Write unit tests for HttpRepositoryV2
|
||
|
|
- [ ] Update integration tests
|
||
|
|
|
||
|
|
## Backend Endpoints
|
||
|
|
|
||
|
|
### Authentication (`/api/v2/auth`)
|
||
|
|
- `POST /api/v2/auth/oauth/google` - Google OAuth
|
||
|
|
- `POST /api/v2/auth/refresh` - Refresh access token
|
||
|
|
- `GET /api/v2/auth/me` - Get current user
|
||
|
|
- `POST /api/v2/auth/logout` - Logout
|
||
|
|
|
||
|
|
### Packs (`/api/v2/packs`)
|
||
|
|
- `GET /api/v2/packs` - List packs (with pagination)
|
||
|
|
- `GET /api/v2/packs/{packId}` - Get pack details
|
||
|
|
- `GET /api/v2/packs/{packId}/cards` - Get pack cards
|
||
|
|
- `GET /api/v2/packs/{packId}/cards/{cardId}/image` - Get card image
|
||
|
|
- `GET /api/v2/packs/{packId}/tests` - Get pack tests
|
||
|
|
|
||
|
|
### Tests (`/api/v2/tests`)
|
||
|
|
- `GET /api/v2/tests/{testId}` - Get test
|
||
|
|
- `POST /api/v2/tests/{testId}/results` - Submit results
|
||
|
|
- `GET /api/v2/tests/{testId}/history` - Get attempt history
|
||
|
|
|
||
|
|
## Migration Steps
|
||
|
|
|
||
|
|
1. **Backend**: Complete JWT implementation and all v2 endpoints
|
||
|
|
2. **Web App**: Update all services to use HttpRepositoryV2
|
||
|
|
3. **Testing**: Write comprehensive tests for v2 endpoints
|
||
|
|
4. **Deployment**: Deploy backend v2 endpoints
|
||
|
|
5. **Verification**: Test end-to-end with web app
|
||
|
|
6. **Deprecation**: Mark v1 APIs as deprecated (keep for mobile app)
|
||
|
|
|
||
|
|
## Next Steps
|
||
|
|
|
||
|
|
1. Fix JWT service to use proper crypto library
|
||
|
|
2. Complete backend v2 endpoint implementations
|
||
|
|
3. Update web app services to use HttpRepositoryV2 methods
|
||
|
|
4. Write tests
|
||
|
|
5. Deploy and verify
|
||
|
|
|