Sign Up
This guide explains how to implement user registration in the Mentor Calwe application.
Personal Information
Endpoint
- Method: POST
- URL:
/v1/coach/register
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
| first_name | string | User's first name | Yes |
| middle_name | string | User's middle name | Yes |
| last_name | string | User's last name | Yes |
| string | User's email address | Yes | |
| email_confirmation | string | User's email address confirmation | Yes |
| password | string | User's password | Yes |
| password_confirmation | string | User's password confirmation | Yes |
| phone | string | User's phone | Yes |
| gender | string | User's gender | Yes |
| birth_date | string | User's birth date | Yes |
| nationality_id | string | User's national | Yes |
| country_id | string | User's country | Yes |
| residence_place | string | User's residence place | Yes |
| avatar | string | User's avatar | Yes |
| accept_terms | string | User's accept terms | Yes |
Success Response
{
"success": true,
"message": "تم التسجيل بنجاح.",
"data": {
"id": "uuid",
"firstName": "Ahmed",
"lastName": "Mohammed",
"email": "emample@gmail.com",
"birthDate": "1993-12-31",
"phone": "966000000000",
"gender": "MALE",
"isPhoneVerified": false,
"nationalityId": "uuid",
"countryId": "uuid",
"residencePlace": "city",
"acceptTerms": true
},
"statusCode": 200
}
Error Responses
Email And Phone Are Already Exists (422)
{
"success": false,
"message": "حدث خطأ في البيانات المرسلة يرجى التحقق منها.",
"errors": {
"email": "قيمة البريد الإلكتروني مُستخدمه من قبل.",
"phone": "قيمة رقم الهاتف مُستخدمه من قبل."
},
"data": [],
"statusCode": 422
}
Invalid Email Format (422)
{
"success": false,
"message": "حدث خطأ في البيانات المرسلة يرجى التحقق منها.",
"errors": {
"email": "صيغة البريد الإلكتروني غير صحيحة."
},
"data": [],
"statusCode": 422
}
Update Personal Information
Endpoint
- Method: POST
- URL:
/v1/coach/update-register/{coach}
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
| first_name | string | User's first name | Yes |
| middle_name | string | User's middle name | Yes |
| last_name | string | User's last name | Yes |
| string | User's email address | Yes | |
| password | string | User's password | Yes |
| password_confirmation | string | User's password confirmation | Yes |
| phone | string | User's phone | Yes |
| gender | string | User's gender | Yes |
| birth_date | string | User's birth date | Yes |
| nationality_id | string | User's national | Yes |
| country_id | string | User's country | Yes |
| residence_place | string | User's residence place | Yes |
| accept_terms | string | User's accept terms | Yes |
Success Response
{
"success": true,
"message": "تم التسجيل بنجاح.",
"data": {
"id": "uuid",
"firstName": "Ahmed",
"lastName": "Mohammed",
"email": "emample@gmail.com",
"birthDate": "1993-12-31",
"phone": "966000000000",
"gender": "MALE",
"isPhoneVerified": false,
"nationalityId": "uuid",
"countryId": "uuid",
"residencePlace": "city",
"acceptTerms": true,
},
"statusCode": 200
}
Error Responses
Email And Phone Are Already Exists (422)
{
"success": false,
"message": "حدث خطأ في البيانات المرسلة يرجى التحقق منها.",
"errors": {
"email": "قيمة البريد الإلكتروني مُستخدمه من قبل.",
"phone": "قيمة رقم الهاتف مُستخدمه من قبل."
},
"data": [],
"statusCode": 422
}
Invalid Email Format (422)
{
"success": false,
"message": "حدث خطأ في البيانات المرسلة يرجى التحقق منها.",
"errors": {
"email": "صيغة البريد الإلكتروني غير صحيحة."
},
"data": [],
"statusCode": 422
}
Phone Verification
Endpoint
- Method: POST
- URL:
/v1/coach/phone-verification
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
| phone_verified_code | string | Verification code received via phone | Yes |
Success Response
{
"success": true,
"message": "تم التحقق من الكود بنجاح",
"data": {
"phone": "566333222",
"isPhoneVerified": true
},
"statusCode": 200
}
Error Responses
Invalid Code (422)
{
"success": false,
"message": "كود التفعيل غير صحيح",
"data": [],
"statusCode": 301
}
Professional Information
Endpoint
- Method: POST
- URL:
/v1/coach/register-professional-data/{coach}
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
| about | string | About Mentor | No |
| qualified_id | string | Mentor's qualified | Yes |
| coach_level_id | string | Mentor's level | Yes |
| degree_id | string | Mentor's degree | Yes |
| university | string | Mentor's university | Yes |
| certificate_name | string | Mentor's certificate name | Yes |
| specialization | string | Mentor's specialization | Yes |
| languages_ids | string | Mentor's languages | Yes |
| categories_ids | string | Mentor's categories | Yes |
| certificate_files | file | Mentor's certificate files | No |
| cv_file | file | Mentor's cv file | No |
| has_accreditation | bool | Mentor's has accreditation | No |
| years_of_experience | string | Mentor's years of experience | Yes |
| experiences | string | Mentor's experiences | Yes |
| interests | string | Mentor's interests | No |
| achievements | string | Mentor's achievements | No |
| community_participation | string | Mentor's community participation | No |
| avatar | file | User's avatar | No |
| experience_file | file | User's avatar | No |
Success Response
{
"success": true,
"message": "تم التسجيل بنجاح.",
"data": {
"id": "uuis",
"about": "string",
"university": "string",
"coachLevelId": "uuid",
"avatar": "https:avatar.png",
"certificateFiles": [
{
"id": 787,
"name": "image.png",
"type": "png",
"link": "https://image.png"
}
],
"cvFile": null,
"categories": ["uuid"],
"languages": ["uuid"],
"degrees": ["uuid"],
"qualifications": ["uuid"],
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9...",
"tokenType": "Bearer",
"experienceFiles": null
},
"statusCode": 200
}
Error Responses
Validation (422)
{
"success": false,
"message": "حدث خطأ في البيانات المرسلة يرجى التحقق منها.",
"errors": {
"certificateFiles": "certificate files حقل مطلوب",
},
"data": [],
"statusCode": 422
}
Payment Method Type
Endpoint
- Method: POST
- URL:
/v1/coach/payment-method-type
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
| payment_type | string | Mentor's payment method type | Yes |
| coach_id | string | Mentor's id | No |
| acknowledgment | string | Acknowledgment | Yes |
| phone | string | Mentor's payment method phone | No |
| string | Mentor's payment method email | No |
Success Response
{
"success": true,
"message": "تم التسجيل بنجاح.",
"data": {
"id": "uuid",
"paymentType": 1,
"accountIdentifier": "566333000",
"coachId": "uuid"
},
"statusCode": 200
}
Activate Email Account
Endpoint
- Method: POST
- URL:
/v1/coach/activate-account
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
| string | Email address used in signup request | Yes | |
| token | string | Verification code received via email | Yes |
Success Response
{
"success": true,
"message": "تم تفعيل بريدك الإلكتروني بنجاح.",
"data": {
"email": "exaple@gmail.com"
},
"statusCode": 200
}
Error Responses
Invalid Code (422)
{
"success": false,
"message": "رمز التنشيط هذا غير صالح.",
"errors": {
"token": "رمز التنشيط هذا غير صالح."
},
"data": [],
"statusCode": 422
}
Resend Activate Email Account
Endpoint
- Method: POST
- URL:
/v1/coach/resend-activation-email
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
Request Body
| Parameter | Type | Description | Required |
|---|---|---|---|
| string | Email address used in signup request | Yes |
Success Response
{
"success": true,
"message": "تم إرسال رسالة التفعيل إلى بريدك الإلكتروني",
"data": [],
"statusCode": 200
}
Resend Verification Phone Code
Endpoint
- Method: POST
- URL:
/v1/mentor/resend-verification-phone-code
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
| Authorization | Bearer token | Yes |
Success Response
{
"success": true,
"message": "تم إرسال رمز التحقق بنجاح",
"data": [],
"statusCode": 200
}
Error Responses
Unauthorized (401)
{
"success": false,
"message": "غير مصرح",
"data": null,
"statusCode": 401
}
Too Many Requests (429)
{
"success": false,
"message": "تم تجاوز عدد المحاولات المسموح بها",
"data": null,
"statusCode": 429
}
Change Phone Number
Endpoint
- Method: POST
- URL:
/v1/mentor/change-phone-number
Request Headers
| Header | Value | Required |
|---|---|---|
| Content-Type | application/json | Yes |
| Accept | application/json | Yes |
| Authorization | Bearer token | Yes |
Request Body
| Parameter | Type | Description | Required | Validation Rules |
|---|---|---|---|---|
| phone | string | New phone number | Yes | required, phone:SA,unique:mentors,phone |
Success Response
{
"success": true,
"message": "تم تغيير رقم الهاتف بنجاح",
"data": [],
"statusCode": 200
}
Error Responses
Validation Error (422)
{
"success": false,
"message": "بيانات غير صحيحة",
"data": {
"phone": [
"رقم الهاتف غير صحيح",
"رقم الهاتف مسجل مسبقاً"
]
},
"statusCode": 422
}
Important Notes
Registration Process
- Multi-step registration process
- Personal information required first
- Professional information required second
- Email and phone verification required
- Terms acceptance mandatory
- Profile completion tracking
Personal Information
- All fields are required
- Email must be unique
- Phone must be unique
- Password must meet security requirements
- Birth date validation
- Gender selection required
- Nationality and country selection
- Avatar upload supported
Professional Information
- Multiple file uploads supported
- Certificate files required
- CV file optional
- Experience files optional
- Multiple languages selection
- Multiple categories selection
- Years of experience required
- Detailed experience description
Verification System
- Email verification required
- Phone verification required
- Verification codes expire
- Limited resend attempts
- Rate limiting applied
- Verification status tracking
- Automatic reminders
Payment Information
- Multiple payment methods supported
- Account verification required
- Payment details encryption
- Secure storage
- Regular validation
- Update history tracking
Security Features
- Password hashing
- Token-based authentication
- Rate limiting
- Session management
- Activity logging
- Fraud prevention
- Data encryption
User Experience
- Clear validation messages
- Progress tracking
- Step-by-step guidance
- Error handling
- Status notifications
- Profile completion indicators
Data Management
- Secure data storage
- Regular backups
- Data retention policies
- Privacy compliance
- Data validation
- Update tracking
Technical Requirements
- File size limits
- Supported file types
- Image optimization
- Cache management
- Performance optimization
- Error logging
Compliance
- Terms acceptance
- Privacy policy
- Data protection
- User consent
- Regulatory compliance
- Audit logging