Skip to main content

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

HeaderValueRequired
Acceptapplication/jsonYes
AuthorizationBearer YOUR_API_TOKENYes

URL Parameters

ParameterTypeRequiredDescription
idintegerYesID 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

HeaderValueRequired
Content-Typeapplication/jsonYes
Acceptapplication/jsonYes
AuthorizationBearer YOUR_API_TOKENYes

URL Parameters

ParameterTypeRequiredDescription
idintegerYesID of the challenge subscription

Request Body Parameters

ParameterTypeRequiredDescription
answerstringYesMust be either "completed" or "incomplete"
notesstringNoOptional 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

HeaderValueRequired
Acceptapplication/jsonYes
AuthorizationBearer YOUR_API_TOKENYes

URL Parameters

ParameterTypeRequiredDescription
idintegerYesID 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

  1. Get the user's API token from storage
  2. Get subscription ID from route/state
  3. Make GET request to /api/challenges/{id}/questions
  4. Upon success:
    • Display today's question
    • Show progress information
    • Display answer options
    • Show statistics if available
  5. Upon error:
    • If unauthorized (401), redirect to login
    • If no subscription (404), show subscription options
    • Handle inactive subscriptions

Answer Question

  1. Get the user's API token from storage
  2. Prepare answer data:
    • Validate answer type
    • Include optional notes
  3. Make POST request to /api/challenges/{id}/questions
  4. Upon success:
    • Show success message
    • Update progress
    • Enable next steps
    • Handle completion if last question
  5. Upon error:
    • If already answered (409), show previous answer
    • If no subscription (404), guide to subscribe
    • Handle validation errors

Restart Challenge

  1. Get the user's API token from storage
  2. Confirm restart with user
  3. Make POST request to /api/challenges/{id}/restart
  4. Upon success:
    • Reset progress display
    • Show day 1 question
    • Clear previous answers
  5. Upon error:
    • If no subscription (404), show subscription options
    • Handle network errors
    • Preserve state if failed