Challenge Questions
View and answer daily challenge questions.
Get Today's Question
Get the current day's question for a challenge subscription.
Endpoint
- Method: GET
- URL:
/api/challenges/{id}/questions
Request Headers
| Header | Value | Required |
|---|---|---|
| Accept | application/json | Yes |
| Authorization | Bearer YOUR_API_TOKEN | Yes |
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | Yes | ID of the challenge subscription |
Success Response
{
"success": true,
"message": "تم جلب البيانات بنجاح",
"data": {
"question": "Today's challenge question",
"day": 1,
"statistics": {
"completed": 150,
"active": 50,
"subscribed": 300
},
"progress_bar": 33.33,
"answered_questions": 10,
"total_questions": 30,
"question_status": "not_answered"
},
"status_code": 200
}
Error Responses
Unauthorized (401)
{
"success": false,
"message": "Unauthenticated",
"data": null,
"status_code": 401
}
No Active Subscription (404)
{
"success": false,
"message": "لم يتم العثور على اشتراك",
"data": null,
"status_code": 404
}
Answer Question
Submit an answer for today's challenge question.
Endpoint
- Method: POST
- URL:
/api/challenges/{id}/questions
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
| Authorization | Bearer YOUR_API_TOKEN | Yes |
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | Yes | ID of the challenge subscription |
Request Body Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| answer | string | Yes | Must be either "completed" or "incomplete" |
| notes | string | No | Optional notes about the answer |
Request Body Example
{
"answer": "completed",
"notes": "I completed today's challenge successfully!"
}
Success Response
{
"success": true,
"message": "تم إنشاء البيانات بنجاح",
"data": {
"subscription_status": "active",
"can_resubscribe": true
},
"status_code": 200
}
Error Responses
Unauthorized (401)
{
"success": false,
"message": "Unauthenticated",
"data": null,
"status_code": 401
}
No Active Subscription (404)
{
"success": false,
"message": "لم يتم العثور على اشتراك",
"data": null,
"status_code": 404
}
Already Answered (409)
{
"success": false,
"message": "تم الإجابة على السؤال مسبقاً",
"data": null,
"status_code": 409
}
Restart Challenge
Reset a challenge subscription to day 1 and clear all previous answers.
Endpoint
- Method: POST
- URL:
/api/challenges/{id}/restart
Request Headers
| Header | Value | Required |
|---|---|---|
| Accept | application/json | Yes |
| Authorization | Bearer YOUR_API_TOKEN | Yes |
URL Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| id | integer | Yes | ID of the challenge subscription |
Success Response
{
"success": true,
"message": "تم إنشاء البيانات بنجاح",
"data": null,
"status_code": 200
}
Error Responses
Unauthorized (401)
{
"success": false,
"message": "Unauthenticated",
"data": null,
"status_code": 401
}
No Subscription Found (404)
{
"success": false,
"message": "لم يتم العثور على اشتراك",
"data": null,
"status_code": 404
}
Example Implementation Flow
View Today's Question
- Get the user's API token from storage
- Get subscription ID from route/state
- Make GET request to
/api/challenges/{id}/questions - Upon success:
- Display today's question
- Show progress information
- Display answer options
- Show statistics if available
- Upon error:
- If unauthorized (401), redirect to login
- If no subscription (404), show subscription options
- Handle inactive subscriptions
Answer Question
- Get the user's API token from storage
- Prepare answer data:
- Validate answer type
- Include optional notes
- Make POST request to
/api/challenges/{id}/questions - Upon success:
- Show success message
- Update progress
- Enable next steps
- Handle completion if last question
- Upon error:
- If already answered (409), show previous answer
- If no subscription (404), guide to subscribe
- Handle validation errors
Restart Challenge
- Get the user's API token from storage
- Confirm restart with user
- Make POST request to
/api/challenges/{id}/restart - Upon success:
- Reset progress display
- Show day 1 question
- Clear previous answers
- Upon error:
- If no subscription (404), show subscription options
- Handle network errors
- Preserve state if failed