New Request
# Update Service Category
Updates the operational domain/category (Bike, Cab, Logistics, Ambulance) for the authenticated driver.
---
### Endpoint Overview
- **Method:** `PATCH`
- **Route:** `/api/v1/driver/service-category`
- **Authentication:** `Bearer Token (Driver JWT)`
- **Content-Type:** `application/json`
---
### Request Headers
| Header | Type | Required | Description |
| --- | --- | --- | --- |
| `Authorization` | `string` | **Yes** | Format: `Bearer` |
| `Content-Type` | `string` | **Yes** | Must be `application/json` |
---
### Request Body Schema
| Field | Data Type | Required | Default | Allowed Values / Constraints | Description |
| --- | --- | --- | --- | --- | --- |
| `service_category` | `enum` | **Yes** | — | `"BIKE""CAB""AMBULANCE""LOGISTICS"` | Operational domain selection |
#### Example Request Body
``` json
{
"service_category": "CAB"
}
```
---
### Response Body Schema (`200 OK`)
| Top-Level Key | Data Type | Description |
| --- | --- | --- |
| `message` | `string` | Confirmation message (`"Service category updated successfully"`) |
| `service_category` | `enum` | Updated service category (`"BIKE"`, `"CAB"`, `"AMBULANCE"`, `"LOGISTICS"`) |
| `driver` | `object` | Complete updated driver profile |
#### `driver` Object Fields
| Field | Data Type | Nullable | Allowed Values / Constraints | Description |
| --- | --- | --- | --- | --- |
| `id` | `string` | No | Prefixed with `drv_` | Unique driver account ID |
| `name` | `string` | Yes | Any string | Full name of driver |
| `phone` | `string` | No | E.164 string format | Registered phone number |
| `is_phone_verified` | `boolean` | No | `true`, `false` | Phone verification status |
| `email` | `string` | Yes | Valid email | Registered email address |
| `is_email_verified` | `boolean` | No | `true`, `false` | Email verification status |
| `gender` | `enum` | Yes | `"MALE"`, `"FEMALE"`, `null` | Driver gender |
| `date_of_birth` | `string` | Yes | ISO 8601 Timestamp | Driver date of birth |
| `profile_image_url` | `string` | Yes | Valid URL | Avatar image URL |
| `is_profile_complete` | `boolean` | No | `true`, `false` | Profile completion status |
| `status` | `enum` | No | `"PENDING_ONBOARDING""PENDING_APPROVAL""APPROVED""REJECTED""SUSPENDED""BLOCKED"` | Onboarding & approval state |
| `duty_status` | `enum` | No | `"OFFLINE""ONLINE""ON_TRIP"` | Real-time driver operational state |
| `rejection_reason` | `string` | Yes | Any string | Rejection reason if status is `REJECTED` |
| `rating` | `string` | No | Decimal string (e.g. `"4.85"`) | Driver rating |
| `total_trips` | `integer` | No | `>= 0` | Total completed trips count |
| `wallet_balance` | `string` | No | Decimal string (e.g. `"3250.00"`) | Driver wallet balance |
| `service_category` | `enum` | No | `"BIKE"`, `"CAB"`, `"AMBULANCE"`, `"LOGISTICS"` | Updated operational category |
| `city` | `string` | No | String | Operating city |
| `state` | `string` | Yes | String | Operating state |
| `language` | `string` | No | Default: `"en"` | Preferred interface language |
| `own_referral_code` | `string` | Yes | Prefixed with `CAP_` | Unique referral code |
| `referred_by_code` | `string` | Yes | String | Referral code used during signup |
| `vehicle_name` | `string` | Yes | String | Brand/make (e.g. `"Maruti Suzuki"`) |
| `vehicle_model` | `string` | Yes | String | Vehicle model (e.g. `"Swift Dzire"`) |
| `vehicle_color` | `string` | Yes | String | Vehicle color |
| `number_plate` | `string` | Yes | String | License number plate |
| `vehicle` | `object` | Yes | Sub-object or `null` | Vehicle details |
| `vehicle.id` | `string` | No | Prefixed with `veh_` | Vehicle ID |
| `vehicle.name` | `string` | No | String | Vehicle brand |
| `vehicle.model` | `string` | No | String | Vehicle model |
| `vehicle.color` | `string` | No | String | Vehicle color |
| `vehicle.number_plate` | `string` | No | String | Plate number |
| `is_active` | `boolean` | No | `true`, `false` | System active status |
| `is_blocked` | `boolean` | No | `true`, `false` | Account blocked flag |
| `last_login_at` | `string` | Yes | ISO 8601 Timestamp | Timestamp of last login |
| `created_at` | `string` | No | ISO 8601 Timestamp | Account registration timestamp |
| `updated_at` | `string` | No | ISO 8601 Timestamp | Timestamp of this update |
---
### Response Examples
#### 1\. `200 OK` — Success
``` json
{
"message": "Service category updated successfully",
"service_category": "CAB",
"driver": {
"id": "drv_8a7b6c5d4e",
"name": "Ravi Kumar",
"phone": "+919876543210",
"is_phone_verified": true,
"email": "ravi.kumar@example.com",
"is_email_verified": true,
"gender": "MALE",
"date_of_birth": "1992-05-15T00:00:00.000Z",
"profile_image_url": "https://example.com/profiles/ravi.jpg",
"is_profile_complete": true,
"status": "APPROVED",
"duty_status": "OFFLINE",
"rejection_reason": null,
"rating": "4.85",
"total_trips": 142,
"wallet_balance": "3250.00",
"service_category": "CAB",
"city": "Bengaluru",
"state": "Karnataka",
"language": "en",
"own_referral_code": "CAP_8X9K2",
"referred_by_code": null,
"vehicle_name": "Maruti Suzuki",
"vehicle_model": "Swift Dzire",
"vehicle_color": "White",
"number_plate": "KA-01-AB-1234",
"vehicle": {
"id": "veh_1a2b3c4d5e",
"name": "Maruti Suzuki",
"model": "Swift Dzire",
"color": "White",
"number_plate": "KA-01-AB-1234"
},
"is_active": true,
"is_blocked": false,
"last_login_at": "2026-09-21T04:45:00.000Z",
"created_at": "2026-08-10T12:00:00.000Z",
"updated_at": "2026-09-21T05:12:30.000Z"
}
}
```
#### 2\. `400 Bad Request` — Validation Error (Invalid Enum Value)
``` json
{
"success": false,
"message": "Validation failed: service_category: Invalid enum value. Expected 'BIKE' | 'CAB' | 'AMBULANCE' | 'LOGISTICS', received 'HELICOPTER'",
"errors": [
{
"field": "service_category",
"message": "Invalid enum value. Expected 'BIKE' | 'CAB' | 'AMBULANCE' | 'LOGISTICS', received 'HELICOPTER'"
}
]
}
```
#### 3\. `401 Unauthorized` — Missing / Expired Token / Session Revoked
``` json
{
"error": "Unauthorized",
"message": "Invalid or expired driver access token."
}
```
#### 4\. `403 Forbidden` — Account Blocked / Deactivated
``` json
{
"error": "Forbidden",
"message": "Driver account is blocked or deactivated."
}
```
#### 5\. `404 Not Found` — Driver Not Found
``` json
{
"error": "Driver not found"
}
```
#### 6\. `500 Internal Server Error`
``` json
{
"error": "Failed to update service category"
}
```
---
### Status Codes Reference
| HTTP Status Code | Condition |
| --- | --- |
| **`200 OK`** | Category successfully updated in database and returned with driver profile. |
| **`400 Bad Request`** | Missing `service_category` or invalid enum value. |
| **`401 Unauthorized`** | Missing, invalid, expired token or session revoked. |
| **`403 Forbidden`** | Driver account is deactivated or blocked. |
| **`404 Not Found`** | Driver ID from token does not exist in database. |
| **`500 Internal Server Error`** | Server or database query failure. |
Authentication
AuthorizationBearer
Bearer authentication of the form Bearer <token>, where token is your auth token.