Product Request
This guide explains how to interact with the Product Request API in the Sumaya369 web application. The API provides functionality for customers to request access to courses that require approval before purchase.
Check Product Request Availability
Verify if a customer can request access to a specific course. This endpoint checks various conditions including previous requests and course settings.
Endpoint
- Method: GET
- URL:
/v1/customer/check-can-request-product/{course_id}
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
| Authorization | Bearer token | Yes |
Success Response
{
"success": true,
"message": "يمكنك طلب المادة الان",
"data": null,
"status_code": 200
}
Error Responses
Cannot Request Product (422)
{
"success": false,
"message": "لايمكنك طلب المادة",
"errors": "لايمكنك طلب المادة",
"data": null,
"status_code": 422
}
Already Subscribed (422)
{
"success": false,
"message": "أنت مشترك في هذه المادة من قبل",
"errors": "أنت مشترك في هذه المادة من قبل",
"data": null,
"status_code": 422
}
Pending Request Exists (422)
{
"success": false,
"message": "طلبك قيد المراجعة",
"errors": "طلبك قيد المراجعة",
"data": null,
"status_code": 422
}
Get Product Request Questions
Retrieve the list of questions that need to be answered when requesting a product.
Endpoint
- Method: GET
- URL:
/v1/customer/product-request-questions
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
| Authorization | Bearer token | Yes |
Success Response
{
"success": true,
"message": "تم جلب البيانات بنجاح.",
"data": [
{
"id": "f926ed90-c6a3-11ef-90fb-c93dbd348906",
"question": "كم عمرك؟",
"is_affected": true,
"type": 2,
"answer_type": "radio",
"answers": [
{
"id": "0efebcd0-c6a5-11ef-8085-bf8b598375d6",
"answer": "أقل من 18",
"is_correct_answer": false
},
{
"id": "1718e870-c6a5-11ef-af3d-93a3e1abf527",
"answer": "أكبر من 18",
"is_correct_answer": true
}
]
},
{
"id": "04758fa0-c6a4-11ef-94dc-390c01ea7d2c",
"question": "متى بدأت رحلة تطوير وعيك؟",
"is_affected": true,
"type": 2,
"answer_type": "radio",
"answers": [
{
"id": "3188b240-c6a5-11ef-b70b-7700a0811817",
"answer": "أقل من سنة",
"is_correct_answer": false
},
{
"id": "2d38ff00-c6a5-11ef-8a83-25d489bbe0bb",
"answer": "اقل من 4 سنوات",
"is_correct_answer": false
},
{
"id": "26739cd0-c6a5-11ef-81eb-832b9247dd8e",
"answer": "5 سنوات فأكثر",
"is_correct_answer": true
}
]
},
{
"id": "156df140-c6a4-11ef-ae84-a712174e902a",
"question": "ماهي الأجساد المتطورة لديك؟",
"is_affected": true,
"type": 3,
"answer_type": "checkbox",
"answers": [
{
"id": "51282cc0-c6a5-11ef-9268-c5b96ab11649",
"answer": "الجسد المادي",
"is_correct_answer": true
},
{
"id": "569d4b80-c6a5-11ef-ac9a-712cc729cea9",
"answer": "الجسد المشاعري",
"is_correct_answer": true
},
{
"id": "5afa3380-c6a5-11ef-a170-33719f909f34",
"answer": "الجسد الفكري",
"is_correct_answer": true
},
{
"id": "5f278e70-c6a5-11ef-8c89-adcd8cb5ae64",
"answer": "الجسد الطاقي",
"is_correct_answer": true
},
{
"id": "634c4b10-c6a5-11ef-a5e5-a9cd9a34d6d4",
"answer": "الجسد الروحي",
"is_correct_answer": true
}
]
},
{
"id": "202cd9e0-c6a4-11ef-8ebb-fdff60d2e84e",
"question": "هل حصلت على مادة تنظيف الجسد الفكري وانتهيت من تطبيقاتها؟",
"is_affected": true,
"type": 2,
"answer_type": "radio",
"answers": [
{
"id": "76a4f950-c6a5-11ef-9a30-dbb6e6e6826d",
"answer": "نعم",
"is_correct_answer": true
},
{
"id": "7eb1af10-c6a5-11ef-8b83-97492e634de4",
"answer": "لا",
"is_correct_answer": false
}
]
},
{
"id": "278bb4e0-c6a4-11ef-8819-73689c918b39",
"question": "هل حصلت على مادة تنظيف المستقبل وانتهيت من تطبيقاتها؟",
"is_affected": true,
"type": 2,
"answer_type": "radio",
"answers": [
{
"id": "177950b0-c6a6-11ef-b979-ab599f37fdd4",
"answer": "نعم",
"is_correct_answer": true
},
{
"id": "1b8cfbc0-c6a6-11ef-95dc-652a478595ef",
"answer": "لا",
"is_correct_answer": false
}
]
},
{
"id": "572877d0-c6a4-11ef-a49c-a54d2434e72e",
"question": "ماهو أكبر تحدي لك في تطوير وعيك؟",
"is_affected": false,
"type": 1,
"answer_type": "text",
"answers": []
},
{
"id": "614a5580-c6a4-11ef-994f-eb6945c15f0a",
"question": "ما هو الشعور الذي أنت فيه أغلب الوقت؟",
"is_affected": false,
"type": 1,
"answer_type": "text",
"answers": []
},
{
"id": "678809b0-c6a4-11ef-8aaf-8f90555e88f5",
"question": "هل تعرف رسالة روحك؟",
"is_affected": false,
"type": 2,
"answer_type": "radio",
"answers": [
{
"id": "404664e0-c6a6-11ef-b63a-7d8da4d3d18c",
"answer": "لا",
"is_correct_answer": false
},
{
"id": "47d89940-c6a6-11ef-9382-adc893a9886e",
"answer": "نعم",
"is_correct_answer": true
}
]
},
{
"id": "6cb84a90-c6a4-11ef-a546-d13a22193a6e",
"question": "من هم المدربين الذين ساهموا في تطوير وعيك؟",
"is_affected": false,
"type": 1,
"answer_type": "text",
"answers": []
},
{
"id": "7423a150-c6a4-11ef-b326-8177b6659ca2",
"question": "ما هي المجالات التي تحتاج أن تطور نفسك فيها؟",
"is_affected": false,
"type": 1,
"answer_type": "text",
"answers": []
}
],
"status_code": 200
}
Submit Product Request
Submit a request for product access with answers to the required questions.
Endpoint
- Method: POST
- URL:
/v1/customer/product-request
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
| Authorization | Bearer token | Yes |
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
| productable_id | string | UUID of the course | Yes |
| questions | array | Array of question answers | Yes |
Success Response
{
"success": true,
"message": "تم جلب البيانات بنجاح.",
"data": {
"id": "57441620-f3e7-11ef-abd9-dbc43b33e92f",
"status": null,
"request_date": "2025-02-26T02:13:59.882659Z"
},
"status_code": 200
}
Error Responses
Already Sent Request (422)
{
"success": false,
"message": "عذراً لديك طلب لهذه الدورة قيد المراجعة",
"errors": "عذراً لديك طلب لهذه الدورة قيد المراجعة",
"data": null,
"status_code": 422
}
Already Subscribed (422)
{
"success": false,
"message": "أنت مشترك في هذه المادة من قبل",
"errors": "أنت مشترك في هذه المادة من قبل",
"data": null,
"status_code": 422
}
View Product Request
Retrieve details of a specific product request.
Endpoint
- Method: GET
- URL:
/v1/customer/product-request/{request_id}
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
| Authorization | Bearer token | Yes |
Success Response
{
"success": true,
"message": "تم جلب البيانات بنجاح.",
"data": {
"id": "57441620-f3e7-11ef-abd9-dbc43b33e92f",
"status": "pending",
"request_date": "2025-02-26 05:13:59"
},
"status_code": 200
}
Implementation Flow
-
Check Request Availability
- Verify if the course allows requests (can_request flag)
- Check if user is already subscribed
- Validate against previous requests:
- Pending requests within result period
- Rejected requests within reorder period
- Accepted requests
-
Product Request Submission
- Validate if user can create new request
- Check for existing subscription
- Create request with customer details and answers
- Set initial status as pending
Key Considerations
- Requests are only available for courses with can_request flag enabled
- System prevents duplicate requests within specified time periods
- Request periods are configurable through settings:
- request_question_period_results: Days to wait for results
- request_question_period_reorder: Days to wait before reordering after rejection
- Questions can be of different types (text, boolean, checkboks, number)
- All requests are initially set to pending status
- Customers cannot request access if they are already subscribed