{"openapi":"3.0.0","info":{"title":"Psycho Taxi App - Public API","version":"1.0","description":"The single, unified API for all client applications."},"servers":[{"url":"https://backend.carna.psycho.agency"},{"url":"http://localhost:3001"}],"tags":[{"name":" ","description":""},{"name":" ","description":""},{"name":" ","description":""},{"name":" ","description":""},{"name":" ","description":""},{"name":" ","description":""},{"name":" ","description":""},{"name":" ","description":""},{"name":" ","description":""},{"name":" ","description":""}],"paths":{"/user-ms/v1/user/me":{"get":{"operationId":"UserController_getUserProfile_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get user profile","tags":["User"]},"patch":{"operationId":"UserController_updateUserProfile_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UpdateUserProfileWithFileDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Update user profile","tags":["User"]},"delete":{"operationId":"UserController_deleteUserAccount_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Soft delete user account","tags":["User"]}},"/user-ms/v1/user/me/fcm-token":{"post":{"operationId":"UserController_updateFcmToken_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateFcmTokenDto"}}}},"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Update FCM token","tags":["User"]}},"/user-ms/v1/admin/user":{"get":{"operationId":"AdminUserController_getAllUsers_v1","parameters":[{"name":"id","required":false,"in":"query","description":"Filter by user ID","schema":{"type":"string"}},{"name":"phoneNumber","required":false,"in":"query","description":"Filter by phone number","schema":{"type":"string"}},{"name":"firstName","required":false,"in":"query","description":"Filter by first name","schema":{"type":"string"}},{"name":"lastName","required":false,"in":"query","description":"Filter by last name","schema":{"type":"string"}},{"name":"email","required":false,"in":"query","description":"Filter by email address","schema":{"type":"string"}},{"name":"gender","required":false,"in":"query","description":"Filter by gender","schema":{"example":"FEMALE","type":"string","enum":["MALE","FEMALE","OTHER"]}},{"name":"roleId","required":false,"in":"query","description":"Filter by role ID","schema":{"type":"string"}},{"name":"verificationStatus","required":false,"in":"query","description":"Filter by verification status","schema":{"example":"PENDING","type":"string","enum":["PENDING","APPROVED","REJECTED","BLOCKED","NEEDS_VERIFICATION","SUSPENDED","DISABLED"]}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullUserResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get all users","tags":["Admin-User"]}},"/user-ms/v1/admin/user/{userId}":{"get":{"operationId":"AdminUserController_getUserById_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FullUserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get user by id","tags":["Admin-User"]},"patch":{"operationId":"AdminUserController_updateUserAccount_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Update user account","tags":["Admin-User"]},"delete":{"operationId":"AdminUserController_deleteUserAccount_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Soft delete user account","tags":["Admin-User"]}},"/user-ms/v1/admin/user/{userId}/hard":{"delete":{"operationId":"AdminUserController_hardDeleteUserAccount_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Hard delete user and all related data","tags":["Admin-User"]}},"/user-ms/v1/internal/user/batch":{"get":{"description":"Retrieves multiple user profiles in a single request. Designed for microservice-to-microservice communication to prevent N+1 query problems.","operationId":"InternalUserController_batchGetUsers_v1","parameters":[{"name":"ids","required":true,"in":"query","description":"Comma-separated list of user UUIDs (e.g., uuid-1,uuid-2,uuid-3)","schema":{"example":"123e4567-e89b-12d3-a456-426614174000,123e4567-e89b-12d3-a456-426614174001","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserBatchResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Batch fetch user profiles","tags":["Internal-User"]}},"/user-ms/v1/internal/user/get-by-phone-number":{"get":{"description":"Retrieves a user profile by phone number. Designed for payment microservice","operationId":"InternalUserController_getUserByPhoneNumber_v1","parameters":[{"name":"phoneNumber","required":true,"in":"query","description":"User phone number (e.g., +212612345678)","schema":{"example":"+212612345678","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get user by phone number","tags":["Internal-User"]}},"/user-ms/v1/role":{"get":{"operationId":"RoleController_findAllPaging_v1","parameters":[{"name":"id","required":false,"in":"query","description":"Filter by role ID","schema":{"type":"string"}},{"name":"name","required":false,"in":"query","description":"Filter by role name","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get all roles","tags":["Role"]}},"/user-ms/v1/role/{roleId}":{"get":{"operationId":"RoleController_findById_v1","parameters":[{"name":"roleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get a role by id","tags":["Role"]}},"/user-ms/v1/ms/token":{"post":{"operationId":"MicroserviceClientController_getToken_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MsTokenRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MsTokenResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Obtain an access token for a microservice client","tags":["Microservice Client"]}},"/user-ms/v1/internal/token/fcm/batch":{"get":{"description":"Retrieves multiple user fcm tokens in a single request. Designed for microservice-to-microservice communication to prevent N+1 query problems.","operationId":"InternalTokenController_batchGetFcmTokens_v1","parameters":[{"name":"ids","required":true,"in":"query","description":"Comma-separated list of user UUIDs (e.g., uuid-1,uuid-2,uuid-3)","schema":{"example":"123e4567-e89b-12d3-a456-426614174000,123e4567-e89b-12d3-a456-426614174001","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TokenBatchResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Batch fetch fcm tokens","tags":["Internal-Token"]}},"/user-ms/v1/driver-profile/self-register":{"post":{"operationId":"DriverProfileController_selfRegisterDriver_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/SelfRegisterDriverDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterDriverResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Self-register as a driver (vehicle, driverProfile, KYC)","tags":["Driver Profile"]}},"/user-ms/v1/driver-profile/{userId}":{"get":{"operationId":"DriverProfileController_findByUserId_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverProfileResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get driver profile by user id","tags":["Driver Profile"]}},"/user-ms/v1/admin/driver":{"post":{"operationId":"AdminDriverController_registerDriver_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/RegisterDriverDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterDriverResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Register a new driver (user, vehicle, driverProfile, KYC)","tags":["Admin-Driver"]},"get":{"operationId":"AdminDriverController_findAllPaging_v1","parameters":[{"name":"userId","required":false,"in":"query","description":"Filter by user id","schema":{"type":"string"}},{"name":"phoneNumber","required":false,"in":"query","description":"User phone number","schema":{"type":"string"}},{"name":"vehicleId","required":false,"in":"query","description":"Filter by vehicle id","schema":{"type":"string"}},{"name":"licenseNumber","required":false,"in":"query","description":"Filter by license number","schema":{"type":"string"}},{"name":"nationalNumber","required":false,"in":"query","description":"Filter by national number","schema":{"type":"string"}},{"name":"driverType","required":false,"in":"query","description":"Filter by driver type","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverProfileResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get all drivers","tags":["Admin-Driver"]}},"/user-ms/v1/admin/driver/{userId}":{"get":{"operationId":"AdminDriverController_findByUserId_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverProfileResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get driver profile by user id","tags":["Admin-Driver"]}},"/user-ms/v1/admin/driver/{driverId}":{"patch":{"operationId":"AdminDriverController_updateDriverProfileByDriverId_v1","parameters":[{"name":"driverId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UpdateDriverProfileWithFileDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverProfileResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Allows admin to Update a driver profile by (user) driver id","tags":["Admin-Driver"]}},"/user-ms/v1/internal/driver/batch":{"get":{"description":"Retrieves multiple enriched driver profiles including user, driver, and vehicle data in a single request. Designed for microservice-to-microservice communication to prevent N+1 query problems.","operationId":"InternalDriverController_batchGetDriverProfiles_v1","parameters":[{"name":"ids","required":true,"in":"query","description":"Comma-separated list of driver user UUIDs (e.g., uuid-1,uuid-2,uuid-3)","schema":{"example":"123e4567-e89b-12d3-a456-426614174000,123e4567-e89b-12d3-a456-426614174001","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverProfileBatchResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Batch fetch enriched driver profiles","tags":["Internal-Driver"]}},"/user-ms/v1/vehicle/{vehicleId}":{"get":{"operationId":"VehicleController_findById_v1","parameters":[{"name":"vehicleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VehicleResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get a vehicle by id","tags":["Vehicle"]}},"/user-ms/v1/admin/vehicle":{"get":{"operationId":"AdminVehicleController_findAllPaging_v1","parameters":[{"name":"make","required":false,"in":"query","description":"Filter by manufacturer (English)","schema":{"type":"string"}},{"name":"makeAr","required":false,"in":"query","description":"Filter by manufacturer (Arabic)","schema":{"type":"string"}},{"name":"model","required":false,"in":"query","description":"Filter by model (English)","schema":{"type":"string"}},{"name":"modelAr","required":false,"in":"query","description":"Filter by model (Arabic)","schema":{"type":"string"}},{"name":"vehicleType","required":false,"in":"query","description":"Filter by vehicle type","schema":{"example":"SUV","type":"string","enum":["SEDAN","FOUR_X_FOUR","SUV","TRUCK"]}},{"name":"color","required":false,"in":"query","description":"Filter by color (English)","schema":{"type":"string"}},{"name":"colorAr","required":false,"in":"query","description":"Filter by color (Arabic)","schema":{"type":"string"}},{"name":"licensePlate","required":false,"in":"query","description":"Filter by license plate","schema":{"type":"string"}},{"name":"plateCity","required":false,"in":"query","description":"Filter by plate city","schema":{"example":"ALEPPO","type":"string","enum":["DAMASCUS","RIF_DIMASHQ","ALEPPO","HOMS","HAMA","LATTAKIA","TARTOUS","IDLIB","DARAA","AS_SUWAYDA","DEIR_EZZOR","RAQQA","AL_HASAKAH","QUNEITRA","ARIANA","BEN_AROUS","MANOUBA","NABEUL","ZAGHOUAN","BIZERTE","BEJA","JENDOUBA","KEF","SILIANA","SOUSSE","MONASTIR","MAHDIA","SFAX","KAIROUAN","KASSERINE","SIDI_BOUZID","GABES","MEDENINE","TATAOUNINE","GAFSA","TOZEUR","KEBILI"]}},{"name":"minMakeYear","required":false,"in":"query","description":"Minimum manufacturing year","schema":{"type":"number"}},{"name":"maxMakeYear","required":false,"in":"query","description":"Maximum manufacturing year","schema":{"type":"number"}},{"name":"minSeatsCount","required":false,"in":"query","description":"Minimum seats count","schema":{"type":"number"}},{"name":"maxSeatsCount","required":false,"in":"query","description":"Maximum seats count","schema":{"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VehicleResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get all vehicles","tags":["Admin-Vehicle"]}},"/user-ms/v1/admin/vehicle/{vehicleId}":{"get":{"operationId":"AdminVehicleController_findById_v1","parameters":[{"name":"vehicleId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VehicleResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get a vehicle by id","tags":["Admin-Vehicle"]}},"/user-ms/v1/user-configuration":{"post":{"operationId":"UserConfigurationController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateUserConfigurationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConfigurationResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["user-configuration"]},"get":{"operationId":"UserConfigurationController_findAll_v1","parameters":[{"name":"name","required":false,"in":"query","description":"Filter by configuration name","schema":{"example":"MAX_BIDS_PER_DRIVER","type":"string"}},{"name":"isEnabled","required":false,"in":"query","description":"Filter by isEnabled flag","schema":{"example":true,"type":"boolean"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConfigurationResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["user-configuration"]}},"/user-ms/v1/user-configuration/{id}":{"get":{"operationId":"UserConfigurationController_getById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConfigurationResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["user-configuration"]},"patch":{"operationId":"UserConfigurationController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateUserConfigurationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserConfigurationResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["user-configuration"]}},"/user-ms/v1/auth/send-otp":{"post":{"operationId":"AuthController_sendOtp_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneNumberLoginDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PhoneNumberLoginResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Send OTP to user phone number","tags":["Auth"]}},"/user-ms/v1/auth/verify-otp":{"post":{"operationId":"AuthController_verifyOtp_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyPhoneNumberOtpDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Verify OTP for phone number login","tags":["Auth"]}},"/user-ms/v1/auth/dashboard/login":{"post":{"operationId":"AuthController_dashboardLogin_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailLoginDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailLoginResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Dashboard admin login with 2FA","tags":["Auth"]}},"/user-ms/v1/auth/dashboard/verify-email-otp":{"post":{"operationId":"AuthController_verifyEmailOtp_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyEmailOtpDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Verify email OTP","tags":["Auth"]}},"/user-ms/v1/auth/dashboard/resend-email-otp":{"post":{"operationId":"AuthController_resendEmailOtp_v1","parameters":[{"name":"X-Pre-Auth-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Resend email OTP","tags":["Auth"]}},"/user-ms/v1/auth/logout":{"post":{"operationId":"AuthController_logout_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Logout using a specific token","tags":["Auth"]}},"/user-ms/v1/auth/logout-all":{"post":{"operationId":"AuthController_logoutAll_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Logout from all devices","tags":["Auth"]}},"/user-ms/v1/auth/refresh-token":{"post":{"operationId":"AuthController_refreshToken_v1","parameters":[{"name":"refresh-token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Refresh access token using refresh token","tags":["Auth"]}},"/user-ms/v1/auth/user/reset-password/{userId}":{"post":{"operationId":"AuthController_resetUserPassword_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetUserPasswordDto"}}}},"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Allows Admin to forcibly reset another user's password","tags":["Auth"]}},"/user-ms/v1/auth/reset-password":{"post":{"operationId":"AuthController_resetMyPassword_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetUserPasswordDto"}}}},"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Allows Admin to reset his own password","tags":["Auth"]}},"/user-ms/v1/otp-provider":{"get":{"operationId":"OtpProviderController_getAllBooths_v1","parameters":[{"name":"id","required":false,"in":"query","description":"Filter by OTP provider ID","schema":{"type":"string"}},{"name":"name","required":false,"in":"query","description":"Filter by provider name","schema":{"type":"string"}},{"name":"providerType","required":false,"in":"query","description":"Filter by provider type","schema":{"example":"MAIL","type":"string","enum":["SMS","MAIL","WHATSAPP"]}},{"name":"isActive","required":false,"in":"query","description":"Filter by active status","schema":{"type":"boolean"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtpProviderResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"fetch all providers","tags":["Otp Provider"]}},"/user-ms/v1/otp-provider/{providerId}":{"get":{"operationId":"OtpProviderController_findById_v1","parameters":[{"name":"providerId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OtpProviderResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get a provider by id","tags":["Otp Provider"]}},"/user-ms/v1/admin/admins":{"post":{"operationId":"AdminController_createAdminUser_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAdminUserDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Create a new administrative user","tags":["Admin"]}},"/user-ms/v1/admin/modify-permissions/{userId}":{"post":{"operationId":"AdminController_modifyUserPermissions_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ModifyUserPermissionsDto"}}}},"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Modify user permissions (grant or revoke)","tags":["Admin"]}},"/user-ms/v1/admin/change-role/to-admin/{userId}":{"post":{"operationId":"AdminController_changeRoleToAdmin_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeRoleToAdminDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Change user role to admin","tags":["Admin"]}},"/user-ms/v1/admin/change-role/to-booth/{userId}":{"post":{"operationId":"AdminController_changeRoleToBooth_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterBoothInfoDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Change user role to booth","tags":["Admin"]}},"/user-ms/v1/admin/change-role/to-driver/{userId}":{"post":{"operationId":"AdminController_changeRoleToDriver_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/switchToDriverDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Change user role to driver","tags":["Admin"]}},"/user-ms/v1/admin/change-role/to-kyc-operator/{userId}":{"post":{"operationId":"AdminController_changeRoleToKycOperator_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeRoleToKycOperatorDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Change user role to KYC operator","tags":["Admin"]}},"/user-ms/v1/admin/change-role/to-passenger/{userId}":{"post":{"operationId":"AdminController_changeRoleToPassenger_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Change user role to passenger","tags":["Admin"]}},"/user-ms/v1/booth/me":{"get":{"operationId":"BoothController_findById_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoothResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get my booth","tags":["Booth"]}},"/user-ms/v1/admin/booth":{"post":{"operationId":"AdminBoothController_createBooth_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterBoothDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterBoothResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Allows the admin to create a new booth with operator","tags":["Admin-Booth"]},"get":{"operationId":"AdminBoothController_getAllBooths_v1","parameters":[{"name":"name","required":false,"in":"query","description":"Filter by booth name (partial or full)","schema":{"type":"string"}},{"name":"operatorUserId","required":false,"in":"query","description":"Filter by operator user id (UUID)","schema":{"type":"string"}},{"name":"minLatitude","required":false,"in":"query","description":"Filter by minimum latitude","schema":{"minimum":-90,"maximum":90,"type":"number"}},{"name":"maxLatitude","required":false,"in":"query","description":"Filter by maximum latitude","schema":{"minimum":-90,"maximum":90,"type":"number"}},{"name":"minLongitude","required":false,"in":"query","description":"Filter by minimum longitude","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"maxLongitude","required":false,"in":"query","description":"Filter by maximum longitude","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"canCashIn","required":false,"in":"query","description":"Filter by cash-in support","schema":{"type":"boolean"}},{"name":"canCashOut","required":false,"in":"query","description":"Filter by cash-out support","schema":{"type":"boolean"}},{"name":"secondaryPhoneNumber","required":false,"in":"query","description":"Filter by secondary phone number","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoothResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Allows the admin to get all booths","tags":["Admin-Booth"]}},"/user-ms/v1/admin/booth/{boothId}":{"patch":{"operationId":"AdminBoothController_updateBooth_v1","parameters":[{"name":"boothId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBoothDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoothResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Allows the admin to update a booth","tags":["Admin-Booth"]},"get":{"operationId":"AdminBoothController_findById_v1","parameters":[{"name":"boothId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoothResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get booth by id","tags":["Admin-Booth"]}},"/user-ms/v1/role-change-history":{"get":{"operationId":"RoleChangeHistoryController_findAll_v1","parameters":[{"name":"userId","required":false,"in":"query","description":"Filter by target user ID","schema":{"type":"string"}},{"name":"actorId","required":false,"in":"query","description":"Filter by actor/admin who made the change","schema":{"type":"string"}},{"name":"oldRoleId","required":false,"in":"query","description":"Filter by old role ID","schema":{"type":"string"}},{"name":"newRoleId","required":false,"in":"query","description":"Filter by new role ID","schema":{"type":"string"}},{"name":"fromDate","required":false,"in":"query","description":"Filter by start date (ISO 8601)","schema":{"example":"2025-01-01T00:00:00Z","type":"string"}},{"name":"toDate","required":false,"in":"query","description":"Filter by end date (ISO 8601)","schema":{"example":"2025-12-31T23:59:59Z","type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleChangeHistoryResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get all role change history records with filters","tags":["Role Change History"]}},"/user-ms/v1/role-change-history/{id}":{"get":{"operationId":"RoleChangeHistoryController_findById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoleChangeHistoryResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get role change history record by ID","tags":["Role Change History"]}},"/user-ms/v1/sos/trigger":{"post":{"operationId":"SosEventController_triggerSos_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSosEventDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SosEventResponseDtoData"}}}}},"summary":"User - Trigger SOS event (store, notify, fire event)","tags":["SOS Events"]}},"/user-ms/v1/admin/sos/events":{"get":{"operationId":"AdminSosEventController_findAllPaging_v1","parameters":[{"name":"userId","required":false,"in":"query","description":"Filter by user ID who triggered the SOS event","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","description":"Filter by SOS event status","schema":{"type":"string","enum":["ACTIVE","ACKNOWLEDGED","RESOLVED","FALSE_ALARM"]}},{"name":"resolvedByUserId","required":false,"in":"query","description":"Filter by user ID who resolved the SOS event","schema":{"type":"string"}},{"name":"triggeredAfter","required":false,"in":"query","description":"Filter by events triggered after this date (ISO 8601)","schema":{"example":"2025-01-01T00:00:00Z","type":"string"}},{"name":"triggeredBefore","required":false,"in":"query","description":"Filter by events triggered before this date (ISO 8601)","schema":{"example":"2025-12-31T23:59:59Z","type":"string"}},{"name":"resolvedAfter","required":false,"in":"query","description":"Filter by events resolved after this date (ISO 8601)","schema":{"example":"2025-01-01T00:00:00Z","type":"string"}},{"name":"resolvedBefore","required":false,"in":"query","description":"Filter by events resolved before this date (ISO 8601)","schema":{"example":"2025-12-31T23:59:59Z","type":"string"}},{"name":"resolutionNotes","required":false,"in":"query","description":"Filter by resolution notes (partial match)","schema":{"type":"string"}},{"name":"minLatitude","required":false,"in":"query","description":"Filter by minimum latitude","schema":{"minimum":-90,"maximum":90,"type":"number"}},{"name":"maxLatitude","required":false,"in":"query","description":"Filter by maximum latitude","schema":{"minimum":-90,"maximum":90,"type":"number"}},{"name":"minLongitude","required":false,"in":"query","description":"Filter by minimum longitude","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"maxLongitude","required":false,"in":"query","description":"Filter by maximum longitude","schema":{"minimum":-180,"maximum":180,"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SosEventResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Allows admin to List all SOS events","tags":["Admin-Sos-Event"]}},"/user-ms/v1/admin/sos/events/{eventId}":{"get":{"operationId":"AdminSosEventController_findById_v1","parameters":[{"name":"eventId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SosEventResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get a SOS event by id","tags":["Admin-Sos-Event"]}},"/user-ms/v1/admin/sos/events/{eventId}/status":{"patch":{"operationId":"AdminSosEventController_updateSosStatus_v1","parameters":[{"name":"eventId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSosStatusDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SosEventResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Admin - Update status/resolution of a specific SOS event","tags":["Admin-Sos-Event"]}},"/user-ms/v1/analysis/driver/active":{"get":{"description":"Returns the count of active drivers within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getActiveDrivers_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get active drivers count","tags":["Analysis-User MS"]}},"/user-ms/v1/analysis/driver/disabled":{"get":{"description":"Returns the count of disabled drivers within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getDisabledDrivers_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get disabled drivers count","tags":["Analysis-User MS"]}},"/user-ms/v1/analysis/driver/new-registered":{"get":{"description":"Returns the count of newly registered drivers within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getNewRegisteredDrivers_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get new registered drivers count","tags":["Analysis-User MS"]}},"/user-ms/v1/analysis/sos/triggered":{"get":{"description":"Returns the count of triggered SOS alerts within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getTriggeredSos_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get triggered SOS count","tags":["Analysis-User MS"]}},"/user-ms/v1/analysis/user/active":{"get":{"description":"Returns the count of active users within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getActiveUsers_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get active users count","tags":["Analysis-User MS"]}},"/user-ms/v1/analysis/user/disabled":{"get":{"description":"Returns the count of disabled users within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getDisabledUsers_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get disabled users count","tags":["Analysis-User MS"]}},"/user-ms/v1/analysis/user/new-registered":{"get":{"description":"Returns the count of newly registered users within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getNewRegisteredUsers_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get new registered users count","tags":["Analysis-User MS"]}},"/trip-ms/v1/trips/active/me":{"get":{"operationId":"TripController_findMyActiveTrip_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"userType","required":true,"in":"query","description":"userType should be either PASSENGER or DRIVER","schema":{"example":"PASSENGER","type":"string","enum":["PASSENGER","DRIVER","ADMIN","BOOTH_OPERATOR","KYC_OPERATOR","SUPER_ADMIN","SYSTEM","USER_MS","TRIP_MS","TRIP_BID_MS","PAYMENT_MS","LOCATION_QUERY_MS","LOCATION_PERSISTENCE_MS","LOCATION_INGESTION_MS","NOTIFICATIONS_MS","KYC_MS","GATEWAY_MS"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Gets active trip if exists for a user by his token","tags":["Trip"]}},"/trip-ms/v1/trips/user/me":{"get":{"operationId":"TripController_findAllByUserToken_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"tripStatus","required":false,"in":"query","description":"Filter by trip status","schema":{"example":"DRIVER_ON_THE_WAY","type":"string","enum":["DRIVER_ON_THE_WAY","DRIVER_ARRIVED","IN_PROGRESS","TRIP_COMPLETED","TRIP_CANCELLED","TRIP_PAUSED","PAYMENT_FAILED"]}},{"name":"passengerId","required":false,"in":"query","description":"Filter by passenger ID","schema":{"type":"string"}},{"name":"driverId","required":false,"in":"query","description":"Filter by driver ID","schema":{"type":"string"}},{"name":"paymentGatewayId","required":false,"in":"query","description":"Filter by payment gateway ID","schema":{"type":"string"}},{"name":"currencyCode","required":false,"in":"query","description":"Filter by currency code","schema":{"example":"SYP","type":"string"}},{"name":"minAgreedFare","required":false,"in":"query","description":"Minimum agreed fare","schema":{"example":10,"type":"number"}},{"name":"maxAgreedFare","required":false,"in":"query","description":"Maximum agreed fare","schema":{"example":100,"type":"number"}},{"name":"minCurrentFee","required":false,"in":"query","description":"Minimum current fee","schema":{"example":5,"type":"number"}},{"name":"maxCurrentFee","required":false,"in":"query","description":"Maximum current fee","schema":{"example":50,"type":"number"}},{"name":"minFinalFee","required":false,"in":"query","description":"Minimum final fee","schema":{"example":10,"type":"number"}},{"name":"maxFinalFee","required":false,"in":"query","description":"Maximum final fee","schema":{"example":100,"type":"number"}},{"name":"createdFrom","required":false,"in":"query","description":"Filter by trips created after this date","schema":{"format":"date-time","type":"string"}},{"name":"createdTo","required":false,"in":"query","description":"Filter by trips created before this date","schema":{"format":"date-time","type":"string"}},{"name":"completedFrom","required":false,"in":"query","description":"Filter by trips completed after this date","schema":{"format":"date-time","type":"string"}},{"name":"completedTo","required":false,"in":"query","description":"Filter by trips completed before this date","schema":{"format":"date-time","type":"string"}},{"name":"minActualDistance","required":false,"in":"query","description":"Minimum actual distance in meters","schema":{"example":1000,"type":"number"}},{"name":"maxActualDistance","required":false,"in":"query","description":"Maximum actual distance in meters","schema":{"example":50000,"type":"number"}},{"name":"minEstimatedDuration","required":false,"in":"query","description":"Minimum estimated duration in seconds","schema":{"example":300,"type":"number"}},{"name":"maxEstimatedDuration","required":false,"in":"query","description":"Maximum estimated duration in seconds","schema":{"example":3600,"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves a list of past trips for the authenticated user by his token","tags":["Trip"]}},"/trip-ms/v1/trips/driver/active":{"get":{"description":"Retrieves all drivers currently in an active trip (not cancelled or completed) with their last known locations. Useful for showing heat-maps for admins.","operationId":"TripController_getActiveDrivers_v1","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActiveDriverResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get all active drivers with their locations","tags":["Trip"]}},"/trip-ms/v1/trips/calculateCancellationFee":{"post":{"description":"Allows a user to calculate their cancellation fee amount based on driver distance traveled","operationId":"TripController_calculateCancellationFee_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculateCancellationFeeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancellationFeeResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"Trip status does not allow cancellation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Calculate cancellation fee for a trip","tags":["Trip"]}},"/trip-ms/v1/trips/cancel":{"post":{"description":"Allows a user to cancel a trip","operationId":"TripController_cancelTrip_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelTripDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancellationFeeResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"Trip status does not allow cancellation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Cancel a trip","tags":["Trip"]}},"/trip-ms/v1/trips/active/{userId}":{"get":{"operationId":"TripController_findActiveTrip_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Gets active trip if exists for a user by his id","tags":["Trip"]}},"/trip-ms/v1/trips/status/{tripId}":{"patch":{"description":"Allows a DRIVER to change the status of a trip. ADMIN and SUPER_ADMIN can also update any trip status.","operationId":"TripController_updateTripStatus_v1","parameters":[{"name":"tripId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTripStatusDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripResponseDtoData"}}}},"400":{"description":"Trip is already completed/cancelled, or invalid status transition","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"403":{"description":"User not authorized to update this trip","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"Status transition not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Update trip status","tags":["Trip"]}},"/trip-ms/v1/trips/{tripId}/complete":{"post":{"description":"Completes a trip, calculates final fee, captures payment, and updates driver stats. Only DRIVER (associated with trip) or ADMIN can complete trips.","operationId":"TripController_completeTrip_v1","parameters":[{"name":"tripId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripResponseDtoData"}}}},"400":{"description":"Payment capture failed or invalid trip state","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"403":{"description":"User not authorized to complete this trip","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"Status transition not allowed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Complete a trip","tags":["Trip"]}},"/trip-ms/v1/trips/{tripId}/complete/update-payment-method":{"patch":{"description":"Allows a passenger to select a different payment method for a completed trip whose initial payment failed. If the new method is Cash, publishes an event and waits for driver to complete. If digital, retries payment immediately.","operationId":"TripController_updatePaymentMethodForCompletedTrip_v1","parameters":[{"name":"tripId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePaymentMethodDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripResponseDtoData"}}}},"400":{"description":"Payment retry failed or payment gateway not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"403":{"description":"User is not the passenger for this trip","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"Trip status is not PAYMENT_FAILED","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Update payment method for a completed trip with failed payment","tags":["Trip"]}},"/trip-ms/v1/trips":{"get":{"description":"Returns trips with optional filters, sorting, and pagination.","operationId":"TripController_findAll_v1","parameters":[{"name":"tripStatus","required":false,"in":"query","description":"Filter by trip status","schema":{"example":"DRIVER_ON_THE_WAY","type":"string","enum":["DRIVER_ON_THE_WAY","DRIVER_ARRIVED","IN_PROGRESS","TRIP_COMPLETED","TRIP_CANCELLED","TRIP_PAUSED","PAYMENT_FAILED"]}},{"name":"passengerId","required":false,"in":"query","description":"Filter by passenger ID","schema":{"type":"string"}},{"name":"driverId","required":false,"in":"query","description":"Filter by driver ID","schema":{"type":"string"}},{"name":"paymentGatewayId","required":false,"in":"query","description":"Filter by payment gateway ID","schema":{"type":"string"}},{"name":"currencyCode","required":false,"in":"query","description":"Filter by currency code","schema":{"example":"SYP","type":"string"}},{"name":"minAgreedFare","required":false,"in":"query","description":"Minimum agreed fare","schema":{"example":10,"type":"number"}},{"name":"maxAgreedFare","required":false,"in":"query","description":"Maximum agreed fare","schema":{"example":100,"type":"number"}},{"name":"minCurrentFee","required":false,"in":"query","description":"Minimum current fee","schema":{"example":5,"type":"number"}},{"name":"maxCurrentFee","required":false,"in":"query","description":"Maximum current fee","schema":{"example":50,"type":"number"}},{"name":"minFinalFee","required":false,"in":"query","description":"Minimum final fee","schema":{"example":10,"type":"number"}},{"name":"maxFinalFee","required":false,"in":"query","description":"Maximum final fee","schema":{"example":100,"type":"number"}},{"name":"createdFrom","required":false,"in":"query","description":"Filter by trips created after this date","schema":{"format":"date-time","type":"string"}},{"name":"createdTo","required":false,"in":"query","description":"Filter by trips created before this date","schema":{"format":"date-time","type":"string"}},{"name":"completedFrom","required":false,"in":"query","description":"Filter by trips completed after this date","schema":{"format":"date-time","type":"string"}},{"name":"completedTo","required":false,"in":"query","description":"Filter by trips completed before this date","schema":{"format":"date-time","type":"string"}},{"name":"minActualDistance","required":false,"in":"query","description":"Minimum actual distance in meters","schema":{"example":1000,"type":"number"}},{"name":"maxActualDistance","required":false,"in":"query","description":"Maximum actual distance in meters","schema":{"example":50000,"type":"number"}},{"name":"minEstimatedDuration","required":false,"in":"query","description":"Minimum estimated duration in seconds","schema":{"example":300,"type":"number"}},{"name":"maxEstimatedDuration","required":false,"in":"query","description":"Maximum estimated duration in seconds","schema":{"example":3600,"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves a paginated list of all trips in the system","tags":["Trip"]}},"/trip-ms/v1/trips/user/{userId}":{"get":{"operationId":"TripController_findAllByUserId_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"tripStatus","required":false,"in":"query","description":"Filter by trip status","schema":{"example":"DRIVER_ON_THE_WAY","type":"string","enum":["DRIVER_ON_THE_WAY","DRIVER_ARRIVED","IN_PROGRESS","TRIP_COMPLETED","TRIP_CANCELLED","TRIP_PAUSED","PAYMENT_FAILED"]}},{"name":"passengerId","required":false,"in":"query","description":"Filter by passenger ID","schema":{"type":"string"}},{"name":"driverId","required":false,"in":"query","description":"Filter by driver ID","schema":{"type":"string"}},{"name":"paymentGatewayId","required":false,"in":"query","description":"Filter by payment gateway ID","schema":{"type":"string"}},{"name":"currencyCode","required":false,"in":"query","description":"Filter by currency code","schema":{"example":"SYP","type":"string"}},{"name":"minAgreedFare","required":false,"in":"query","description":"Minimum agreed fare","schema":{"example":10,"type":"number"}},{"name":"maxAgreedFare","required":false,"in":"query","description":"Maximum agreed fare","schema":{"example":100,"type":"number"}},{"name":"minCurrentFee","required":false,"in":"query","description":"Minimum current fee","schema":{"example":5,"type":"number"}},{"name":"maxCurrentFee","required":false,"in":"query","description":"Maximum current fee","schema":{"example":50,"type":"number"}},{"name":"minFinalFee","required":false,"in":"query","description":"Minimum final fee","schema":{"example":10,"type":"number"}},{"name":"maxFinalFee","required":false,"in":"query","description":"Maximum final fee","schema":{"example":100,"type":"number"}},{"name":"createdFrom","required":false,"in":"query","description":"Filter by trips created after this date","schema":{"format":"date-time","type":"string"}},{"name":"createdTo","required":false,"in":"query","description":"Filter by trips created before this date","schema":{"format":"date-time","type":"string"}},{"name":"completedFrom","required":false,"in":"query","description":"Filter by trips completed after this date","schema":{"format":"date-time","type":"string"}},{"name":"completedTo","required":false,"in":"query","description":"Filter by trips completed before this date","schema":{"format":"date-time","type":"string"}},{"name":"minActualDistance","required":false,"in":"query","description":"Minimum actual distance in meters","schema":{"example":1000,"type":"number"}},{"name":"maxActualDistance","required":false,"in":"query","description":"Maximum actual distance in meters","schema":{"example":50000,"type":"number"}},{"name":"minEstimatedDuration","required":false,"in":"query","description":"Minimum estimated duration in seconds","schema":{"example":300,"type":"number"}},{"name":"maxEstimatedDuration","required":false,"in":"query","description":"Maximum estimated duration in seconds","schema":{"example":3600,"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves a list of past trips for a user by his id","tags":["Trip"]}},"/trip-ms/v1/trips/{tripId}":{"get":{"operationId":"TripController_findTripById_v1","parameters":[{"name":"tripId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves the full details of a specific trip","tags":["Trip"]}},"/trip-ms/v1/internal/trips/batch":{"get":{"description":"Retrieves multiple trips in a single request. Designed for microservice-to-microservice communication to prevent N+1 query problems.","operationId":"InternalTripController_batchGetTrips_v1","parameters":[{"name":"ids","required":true,"in":"query","description":"Comma-separated list of trip UUIDs (e.g., uuid-1,uuid-2,uuid-3)","schema":{"example":"123e4567-e89b-12d3-a456-426614174000,123e4567-e89b-12d3-a456-426614174001","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Batch fetch trips","tags":["Internal-Trip"]}},"/trip-ms/v1/internal/trips/active/{userId}":{"get":{"description":"Checks if a user has an active trip either as a DRIVER or PASSENGER. Returns 200 with boolean if active trip exists, 404 if no active trip.","operationId":"InternalTripController_checkActiveTrip_v1","parameters":[{"name":"userId","required":true,"in":"path","description":"User UUID to check for active trips","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}}],"responses":{"200":{"description":"User has an active trip now either as a PASSENGER or as a DRIVER. Should not create another trip.","content":{"application/json":{"schema":{"type":"object","properties":{"hasActiveTrip":{"type":"boolean","example":true}}}}}},"404":{"description":"User doesn't have any ongoing trip now. Can proceed with creating a new bid/trip.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Check if user has an active trip","tags":["Internal-Trip"]}},"/trip-ms/v1/trip-configuration":{"post":{"operationId":"TripConfigurationController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTripConfigurationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripConfigurationResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-configuration"]},"get":{"operationId":"TripConfigurationController_findAll_v1","parameters":[{"name":"name","required":false,"in":"query","description":"Filter by configuration name","schema":{"example":"MAX_BIDS_PER_DRIVER","type":"string"}},{"name":"isEnabled","required":false,"in":"query","description":"Filter by isEnabled flag","schema":{"example":true,"type":"boolean"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripConfigurationResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-configuration"]}},"/trip-ms/v1/trip-configuration/{id}":{"get":{"operationId":"TripConfigurationController_getById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripConfigurationResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-configuration"]},"patch":{"operationId":"TripConfigurationController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTripConfigurationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripConfigurationResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-configuration"]}},"/trip-ms/v1/driver/daily-stats":{"get":{"description":"Retrieves daily statistics (trip count, distance, time) for the driver based on their token","operationId":"DriverStatsDailyController_getDailyStats_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverStatsDailyResponseDtoData"}}}},"404":{"description":"No daily statistics found for the driver","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get daily statistics for the authenticated driver","tags":["Driver Stats Daily"]}},"/trip-ms/v1/driver/daily-stats/{id}":{"get":{"description":"Retrieves daily statistics (trip count, distance, time) for the driver based on their id","operationId":"DriverStatsDailyController_getDailyStatsById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverStatsDailyResponseDtoData"}}}},"404":{"description":"No daily statistics found for the driver","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get daily statistics for a driver by his id","tags":["Driver Stats Daily"]}},"/trip-ms/v1/admin/trip-pricing/cache-manager/sync":{"post":{"description":"Manually trigger sync of pricing configurations and fetch from the trip-bid ms","operationId":"TripPricingController_syncPricingConfigs_v1","parameters":[],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Manually trigger sync","tags":["Admin-Trip Pricing-Cache Manager"]}},"/trip-ms/v1/admin/trip-pricing/cache-manager/invalidate":{"post":{"description":"Invalidate cache","operationId":"TripPricingController_invalidateCache_v1","parameters":[],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Invalidate cache","tags":["Admin-Trip Pricing-Cache Manager"]}},"/trip-ms/v1/admin/trip-pricing/cache-manager/stats":{"get":{"description":"Get cached pricing configurations statistics","operationId":"TripPricingController_getCacheStats_v1","parameters":[],"responses":{"200":{"description":""},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get cached pricing configurations statistics","tags":["Admin-Trip Pricing-Cache Manager"]}},"/trip-ms/v1/admin/trip-pricing/cache-manager/configs":{"get":{"description":"Get all cached pricing configurations","operationId":"TripPricingController_getAllConfigs_v1","parameters":[],"responses":{"200":{"description":""},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get all cached pricing configurations","tags":["Admin-Trip Pricing-Cache Manager"]}},"/trip-ms/v1/webhooks/trip-pricing/cache-manager/refresh":{"post":{"description":" Endpoint for trip-bidding-ms to notify about pricing config changes","operationId":"WebhookTripPricingController_handlePricingConfigUpdate_v1","parameters":[],"responses":{"201":{"description":""},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Endpoint for trip-bidding-ms to notify trip-ms about pricing config changes (used internally)","tags":["Webhook-Trip Pricing-Cache Manager"]}},"/trip-ms/v1/trip-frequency/nearby":{"get":{"description":"Returns a list of frequent trips for the passenger within a configurable radius (default 2km) from the provided pickup location, ordered by frequency count","operationId":"TripFrequencyController_getFrequentTrips_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"latitude","required":true,"in":"query","description":"Latitude of the current pickup location","schema":{"minimum":-90,"maximum":90,"example":33.5138,"type":"number"}},{"name":"longitude","required":true,"in":"query","description":"Longitude of the current pickup location","schema":{"minimum":-180,"maximum":180,"example":36.2765,"type":"number"}},{"name":"limit","required":false,"in":"query","description":"Maximum number of frequent trips to return","schema":{"minimum":1,"maximum":20,"default":4,"example":4,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripFrequencyResponseDtoArrayData"}}}}},"summary":"Get frequent trips for authenticated passenger based on current location","tags":["Trip Frequency"]}},"/trip-ms/v1/trips/saved-places":{"post":{"operationId":"SavedPlaceController_create_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSavedPlaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedPlaceResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Create a new saved place","tags":["Saved Place"]}},"/trip-ms/v1/trips/saved-places/me":{"get":{"operationId":"SavedPlaceController_findAllByUserId_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"isHome","required":false,"in":"query","description":"Filter by home location","schema":{"example":true,"type":"boolean"}},{"name":"isWork","required":false,"in":"query","description":"Filter by work location","schema":{"example":false,"type":"boolean"}},{"name":"name","required":false,"in":"query","description":"Filter by place name (case-insensitive partial match)","schema":{"example":"Coffee","type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedPlaceResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get all saved places for a user","tags":["Saved Place"]}},"/trip-ms/v1/trips/saved-places/{savedPlaceId}":{"get":{"operationId":"SavedPlaceController_findById_v1","parameters":[{"name":"savedPlaceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedPlaceResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get saved place by ID","tags":["Saved Place"]},"patch":{"operationId":"SavedPlaceController_update_v1","parameters":[{"name":"savedPlaceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSavedPlaceDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedPlaceResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Update a saved place","tags":["Saved Place"]},"delete":{"operationId":"SavedPlaceController_delete_v1","parameters":[{"name":"savedPlaceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Saved place deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Delete a saved place","tags":["Saved Place"]}},"/trip-ms/v1/trips/admin/saved-places":{"get":{"operationId":"AdminSavedPlaceController_findAllPaging_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"isHome","required":false,"in":"query","description":"Filter by home location","schema":{"example":true,"type":"boolean"}},{"name":"isWork","required":false,"in":"query","description":"Filter by work location","schema":{"example":false,"type":"boolean"}},{"name":"name","required":false,"in":"query","description":"Filter by place name (case-insensitive partial match)","schema":{"example":"Coffee","type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedPlaceResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get all saved places in the system","tags":["Admin-Saved Place"]}},"/trip-ms/v1/trips/admin/saved-places/{savedPlaceId}":{"get":{"operationId":"AdminSavedPlaceController_findById_v1","parameters":[{"name":"savedPlaceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SavedPlaceResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get saved place by ID","tags":["Admin-Saved Place"]},"delete":{"operationId":"AdminSavedPlaceController_delete_v1","parameters":[{"name":"savedPlaceId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"Saved place deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Delete a saved place","tags":["Admin-Saved Place"]}},"/trip-ms/v1/trips/passenger/{tripId}/rate":{"post":{"operationId":"RatingController_rateTripAsPassenger_v1","parameters":[{"name":"tripId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateTripDto"}}}},"responses":{"201":{"description":"Trip rated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}},"400":{"description":"Trip not completed or already rated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"404":{"description":"Trip not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Allows a passenger to submit a rating for a completed trip.","tags":["Rating"]}},"/trip-ms/v1/trips/driver/{tripId}/rate":{"post":{"operationId":"RatingController_rateTripAsDriver_v1","parameters":[{"name":"tripId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateTripDto"}}}},"responses":{"201":{"description":"Trip rated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}},"400":{"description":"Trip not completed or already rated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"404":{"description":"Trip not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Allows a driver to submit a rating for a completed trip.","tags":["Rating"]}},"/trip-ms/v1/trips/user-rating/{userId}":{"get":{"operationId":"RatingController_getRatingStatsByUserId_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatingStatsResponseDtoData"}}}},"404":{"description":"Rating stats not found for the user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get rating statistics for a user by their userId","tags":["Rating"]}},"/trip-ms/v1/trips/admin/user-rating/{userId}":{"patch":{"operationId":"AdminRatingController_updateAvgRatingByAdmin_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAvgRatingDto"}}}},"responses":{"200":{"description":"Average rating updated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}},"404":{"description":"Rating stats not found for the user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Allows an admin to update the average rating for a user","tags":["Admin-Rating"]}},"/trip-ms/v1/internal/trips/user-rating/batch":{"get":{"description":"Retrieves multiple rating statistics in a single request. Designed for microservice-to-microservice communication to prevent N+1 query problems.","operationId":"InternalRatingController_batchGetRatingStats_v1","parameters":[{"name":"ids","required":true,"in":"query","description":"Comma-separated list of user UUIDs (e.g., uuid-1,uuid-2,uuid-3)","schema":{"example":"123e4567-e89b-12d3-a456-426614174000,123e4567-e89b-12d3-a456-426614174001","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatingStatsResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Batch fetch rating statistics","tags":["Internal-Rating"]}},"/trip-ms/v1/analysis/driver/active-hours":{"get":{"description":"Returns the average On-Trip Time within the specified date range. If no dates are provided, returns the average from the beginning of time.","operationId":"AnalysisController_getDriverActiveHours_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverActiveHoursAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Calculates the average On-Trip Time per driver by summing the duration of their completed trips.","tags":["Analysis-Trip MS"]}},"/trip-ms/v1/analysis/driver/trip-count":{"get":{"description":"Returns the number of drivers who have completed more than X trips within the period. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getDriverTripCount_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}},{"name":"minTrips","required":false,"in":"query","description":"Minimum number of trips per driver","schema":{"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverTripCountAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Returns the number of drivers who have completed more than X trips within the period","tags":["Analysis-Trip MS"]}},"/trip-ms/v1/analysis/driver/active-trip-distance":{"get":{"description":"Returns the number of drivers who have completed trips totaling at least the specified distance (in meters) within the specified time period.  Only completed trips are counted.","operationId":"AnalysisController_getDriverActiveDistance_v1","parameters":[{"name":"minDistanceMeters","required":false,"in":"query","description":"Minimum distance in meters that drivers must have traveled","schema":{"default":50000,"example":50000,"type":"number"}},{"name":"startDate","required":false,"in":"query","description":"Start date for the analysis period (ISO 8601 format)","schema":{"format":"date-time","example":"2024-01-01T00:00:00Z","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date for the analysis period (ISO 8601 format)","schema":{"format":"date-time","example":"2024-01-31T23:59:59Z","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverDistanceAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Returns the count of drivers who have traveled at least X meters within Y days","tags":["Analysis-Trip MS"]}},"/trip-ms/v1/analysis/trip/average-price":{"get":{"description":"Returns the average price of trips within the specified date range. If no dates are provided, returns the average from the beginning of time.","operationId":"AnalysisController_getAverageTripPrice_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripAveragePriceResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get average completed trip prices by currency","tags":["Analysis-Trip MS"]}},"/trip-ms/v1/analysis/trip/cancelled":{"get":{"description":"Returns the count of cancelled trips within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getCancelledTrips_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get cancelled trips count","tags":["Analysis-Trip MS"]}},"/trip-ms/v1/analysis/trip/completed":{"get":{"description":"Returns the count of completed trips within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getCompletedTrips_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get completed trips count","tags":["Analysis-Trip MS"]}},"/trip-ms/v1/analysis/trip/distance-meter":{"get":{"description":"Returns the total distance traveled in meters within the specified date range. If no dates are provided, returns the total from the beginning of time.","operationId":"AnalysisController_getTripDistanceMeter_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}},{"name":"maxMeters","required":false,"in":"query","description":"Maximum distance threshold in meters","schema":{"default":20000,"example":1000,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripDistanceAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get total trip distance in meters","tags":["Analysis-Trip MS"]}},"/trip-ms/v1/analysis/trip/duration-seconds":{"get":{"description":"Returns the total duration of trips in seconds within the specified date range. If no dates are provided, returns the total from the beginning of time.","operationId":"AnalysisController_getTripDurationSeconds_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}},{"name":"maxSeconds","required":false,"in":"query","description":"Maximum trip duration in seconds","schema":{"default":1800,"example":600,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripDurationAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get total trip duration in seconds","tags":["Analysis-Trip MS"]}},"/trip-ms/v1/analysis/trip/heatmap-hours":{"get":{"description":"Returns the distribution of trips by hour of day within the specified date range. If no dates are provided, returns data from the beginning of time.","operationId":"AnalysisController_getTripHeatmapHours_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripHeatmapHoursResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get trip heatmap by hours","tags":["Analysis-Trip MS"]}},"/trip-ms/v1/analysis/trip/payment-gateway":{"get":{"description":"Returns the count of trips grouped by payment gateway within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getTripPaymentGateway_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripPaymentGatewayAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get trip count by payment gateway","tags":["Analysis-Trip MS"]}},"/trip-ms/v1/analysis/trip/trip-count":{"get":{"description":"Returns the total number of trips created within a specific period, regardless of their status (Completed, Cancelled, Ongoing).If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getTripCount_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get total trip count","tags":["Analysis-Trip MS"]}},"/trip-bidding-ms/v1/coupon/validate":{"post":{"operationId":"CouponController_validateMyCoupon_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateCouponDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["coupon"]}},"/trip-bidding-ms/v1/coupon":{"post":{"operationId":"CouponController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCouponDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["coupon"]},"get":{"operationId":"CouponController_findAll_v1","parameters":[{"name":"code","required":false,"in":"query","description":"Filter by coupon code (exact or partial)","schema":{"type":"string"}},{"name":"enabled","required":false,"in":"query","description":"Filter by coupon enabled status","schema":{"type":"boolean"}},{"name":"type","required":false,"in":"query","description":"Filter by coupon type","schema":{"example":"FIXED","type":"string","enum":["FIXED","PERCENTAGE"]}},{"name":"minDiscount","required":false,"in":"query","description":"Minimum discount value","schema":{"example":10,"type":"number"}},{"name":"maxDiscount","required":false,"in":"query","description":"Maximum discount value","schema":{"example":50,"type":"number"}},{"name":"status","required":false,"in":"query","description":"Filter by coupon status","schema":{"example":"ACTIVE","type":"string","enum":["ACTIVE","EXPIRED","USED","DISABLED","PENDING","LIMITED"]}},{"name":"startDateFrom","required":false,"in":"query","description":"Filter by coupons starting after this date","schema":{"format":"date-time","type":"string"}},{"name":"startDateTo","required":false,"in":"query","description":"Filter by coupons starting before this date","schema":{"format":"date-time","type":"string"}},{"name":"expiryDateFrom","required":false,"in":"query","description":"Filter by coupons expiring after this date","schema":{"format":"date-time","type":"string"}},{"name":"expiryDateTo","required":false,"in":"query","description":"Filter by coupons expiring before this date","schema":{"format":"date-time","type":"string"}},{"name":"minUsageCount","required":false,"in":"query","description":"Filter by minimum usage count","schema":{"type":"number"}},{"name":"maxUsageCount","required":false,"in":"query","description":"Filter by maximum usage count","schema":{"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["coupon"]}},"/trip-bidding-ms/v1/coupon/{id}":{"get":{"operationId":"CouponController_findOne_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["coupon"]},"patch":{"operationId":"CouponController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCouponDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["coupon"]}},"/trip-bidding-ms/v1/coupon_usage":{"get":{"operationId":"CouponUsageController_findAll_v1","parameters":[{"name":"couponId","required":false,"in":"query","description":"Filter by coupon ID","schema":{"example":"550e8400-e29b-41d4-a716-446655440000","type":"string"}},{"name":"userId","required":false,"in":"query","description":"Filter by user ID","schema":{"example":"550e8400-e29b-41d4-a716-446655440000","type":"string"}},{"name":"bidId","required":false,"in":"query","description":"Filter by associated bid ID","schema":{"example":"acde070d-8c4c-4f0d-9d8a-162843c10333","type":"string"}},{"name":"tripId","required":false,"in":"query","description":"Filter by associated trip ID","schema":{"example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","type":"string"}},{"name":"minDiscountAmount","required":false,"in":"query","description":"Minimum discount amount","schema":{"example":10.5,"type":"number"}},{"name":"maxDiscountAmount","required":false,"in":"query","description":"Maximum discount amount","schema":{"example":50,"type":"number"}},{"name":"startDate","required":false,"in":"query","description":"Filter usages created after this date","schema":{"format":"date-time","example":"2025-09-01T00:00:00Z","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"Filter usages created before this date","schema":{"format":"date-time","example":"2025-09-15T23:59:59Z","type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCouponUsageDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["coupon_usage"]}},"/trip-bidding-ms/v1/coupon_usage/{id}":{"get":{"operationId":"CouponUsageController_findOne_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GetCouponUsageDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["coupon_usage"]}},"/trip-bidding-ms/v1/coupon_usage/{bidId}":{"patch":{"operationId":"CouponUsageController_update_v1","parameters":[{"name":"bidId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCouponUsageDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponUsageResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["coupon_usage"]}},"/trip-bidding-ms/v1/trip-bid/driver/active-bids":{"get":{"operationId":"TripBidController_getActiveBidsForDriver_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBidResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bid"]}},"/trip-bidding-ms/v1/trip-bid/calculateFee":{"post":{"operationId":"TripBidController_calculateFee_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculateFeeDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalculateFeeResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bid"]}},"/trip-bidding-ms/v1/trip-bid/accept/{bidId}":{"post":{"operationId":"TripBidController_acceptBid_v1","parameters":[{"name":"bidId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AcceptBidDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBidResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bid"]}},"/trip-bidding-ms/v1/trip-bid/driver/{bidId}/skip":{"patch":{"operationId":"TripBidController_skipBidAsDriver_v1","parameters":[{"name":"bidId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkipBidAsDriverDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBidResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bid"]}},"/trip-bidding-ms/v1/trip-bid/passenger/{bidId}/skip":{"patch":{"operationId":"TripBidController_skipBidAsPassenger_v1","parameters":[{"name":"bidId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SkipBidAsPassengerDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBidResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bid"]}},"/trip-bidding-ms/v1/trip-bid/counter/{bidId}":{"patch":{"operationId":"TripBidController_counterBid_v1","parameters":[{"name":"bidId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CounterBidDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBidResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bid"]}},"/trip-bidding-ms/v1/trip-bid/{bidId}/cancel":{"delete":{"operationId":"TripBidController_cancelBid_v1","parameters":[{"name":"bidId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBidResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bid"]}},"/trip-bidding-ms/v1/trip-bid/{bidId}":{"get":{"operationId":"TripBidController_getBidById_v1","parameters":[{"name":"bidId","required":true,"in":"path","schema":{"type":"string"}},{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBidResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bid"]}},"/trip-bidding-ms/v1/trip-bid":{"post":{"operationId":"TripBidController_create_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTripBidDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBidResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bid"]}},"/trip-bidding-ms/v1/trip-pricing":{"post":{"operationId":"TripPricingConfigurationController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTripPricingConfigurationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripPricingConfigurationResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-pricing"]},"get":{"operationId":"TripPricingConfigurationController_findAll_v1","parameters":[{"name":"driverType","required":false,"in":"query","description":"Filter by driver type (Classic, Comfort, Vip)","schema":{"example":"CLASSIC","type":"string","enum":["CLASSIC","COMFORT","VIP","WOMAN","TAXI","VAN"]}},{"name":"countyId","required":false,"in":"query","description":"Filter by county UUID","schema":{"example":"123e4567-e89b-12d3-a456-426614174000","type":"string"}},{"name":"startTimeFrom","required":false,"in":"query","description":"Filter by configurations starting after this time","schema":{"example":"06:00:00+02:00","type":"string"}},{"name":"startTimeTo","required":false,"in":"query","description":"Filter by configurations starting before this time","schema":{"example":"10:00:00+02:00","type":"string"}},{"name":"endTimeFrom","required":false,"in":"query","description":"Filter by configurations ending after this time","schema":{"example":"18:00:00+02:00","type":"string"}},{"name":"endTimeTo","required":false,"in":"query","description":"Filter by configurations ending before this time","schema":{"example":"23:59:59Z","type":"string"}},{"name":"minBaseFare","required":false,"in":"query","description":"Filter by minimum base fare","schema":{"example":1000,"type":"number"}},{"name":"maxBaseFare","required":false,"in":"query","description":"Filter by maximum base fare","schema":{"example":10000,"type":"number"}},{"name":"minPricePerKm","required":false,"in":"query","description":"Filter by minimum per-km fare","schema":{"example":50,"type":"number"}},{"name":"maxPricePerKm","required":false,"in":"query","description":"Filter by maximum per-km fare","schema":{"example":500,"type":"number"}},{"name":"minPricePerMinute","required":false,"in":"query","description":"Filter by minimum per-minute fare","schema":{"example":10,"type":"number"}},{"name":"maxPricePerMinute","required":false,"in":"query","description":"Filter by maximum per-minute fare","schema":{"example":200,"type":"number"}},{"name":"minMinimumFare","required":false,"in":"query","description":"Filter by minimum total fare","schema":{"example":500,"type":"number"}},{"name":"maxMinimumFare","required":false,"in":"query","description":"Filter by maximum total fare","schema":{"example":10000,"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripPricingConfigurationResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-pricing"]}},"/trip-bidding-ms/v1/trip-pricing/{id}":{"get":{"operationId":"TripPricingConfigurationController_getById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripPricingConfigurationResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-pricing"]},"patch":{"operationId":"TripPricingConfigurationController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTripPricingConfigurationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripPricingConfigurationResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-pricing"]},"delete":{"operationId":"TripPricingConfigurationController_remove_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}}},"tags":["trip-pricing"]}},"/trip-bidding-ms/v1/service-county":{"post":{"operationId":"ServiceCountyController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateServiceCountyDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceCountyResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Service County"]},"get":{"operationId":"ServiceCountyController_findAll_v1","parameters":[{"name":"name","required":false,"in":"query","description":"Filter by county name (partial match)","schema":{"example":"Damascus","type":"string"}},{"name":"isActive","required":false,"in":"query","description":"Filter by active status","schema":{"example":true,"type":"boolean"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\",\"name\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceCountyResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Service County"]}},"/trip-bidding-ms/v1/service-county/{id}":{"get":{"operationId":"ServiceCountyController_findOne_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceCountyResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Service County"]},"patch":{"operationId":"ServiceCountyController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateServiceCountyDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceCountyResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Service County"]},"delete":{"operationId":"ServiceCountyController_remove_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"bearer":[]}],"tags":["Service County"]}},"/trip-bidding-ms/v1/trip-bidding-configuration":{"post":{"operationId":"TripBiddingConfigurationController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTripBiddingConfigurationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBiddingConfigurationResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bidding-configuration"]},"get":{"operationId":"TripBiddingConfigurationController_findAll_v1","parameters":[{"name":"name","required":false,"in":"query","description":"Filter by configuration name","schema":{"example":"MAX_BIDS_PER_DRIVER","type":"string"}},{"name":"isEnabled","required":false,"in":"query","description":"Filter by isEnabled flag","schema":{"example":true,"type":"boolean"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBiddingConfigurationResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bidding-configuration"]}},"/trip-bidding-ms/v1/trip-bidding-configuration/{id}":{"get":{"operationId":"TripBiddingConfigurationController_getById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBiddingConfigurationResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bidding-configuration"]},"patch":{"operationId":"TripBiddingConfigurationController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTripBiddingConfigurationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripBiddingConfigurationResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["trip-bidding-configuration"]}},"/trip-bidding-ms/v1/static-pricing-rules":{"post":{"description":"Create a new zone-based static pricing rule with a center point and radius","operationId":"StaticPricingRuleController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateStaticPricingRuleDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticPricingRuleResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"Rule with this name already exists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Create a new static pricing rule","tags":["Static Pricing Rules"]},"get":{"description":"Retrieve a paginated list of static pricing rules with optional filters","operationId":"StaticPricingRuleController_findAllPaging_v1","parameters":[{"name":"name","required":false,"in":"query","description":"Filter by rule name (partial match)","schema":{"type":"string"}},{"name":"currencyCode","required":false,"in":"query","description":"Filter by currency code","schema":{"example":"USD","type":"string"}},{"name":"minFixedPrice","required":false,"in":"query","description":"Filter by minimum fixed price","schema":{"example":20,"type":"number"}},{"name":"maxFixedPrice","required":false,"in":"query","description":"Filter by maximum fixed price","schema":{"example":100,"type":"number"}},{"name":"minRadiusMeters","required":false,"in":"query","description":"Filter by minimum radius in meters","schema":{"example":1000,"type":"number"}},{"name":"maxRadiusMeters","required":false,"in":"query","description":"Filter by maximum radius in meters","schema":{"example":10000,"type":"number"}},{"name":"applyToPickup","required":false,"in":"query","description":"Filter by rules that apply to pickup","schema":{"type":"boolean"}},{"name":"applyToDropoff","required":false,"in":"query","description":"Filter by rules that apply to dropoff","schema":{"type":"boolean"}},{"name":"minPriority","required":false,"in":"query","description":"Filter by minimum priority","schema":{"example":0,"type":"number"}},{"name":"maxPriority","required":false,"in":"query","description":"Filter by maximum priority","schema":{"example":100,"type":"number"}},{"name":"isActive","required":false,"in":"query","description":"Filter by active status","schema":{"type":"boolean"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticPricingRuleResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get all static pricing rules with pagination","tags":["Static Pricing Rules"]}},"/trip-bidding-ms/v1/static-pricing-rules/{id}":{"get":{"description":"Retrieve a single static pricing rule by its unique ID","operationId":"StaticPricingRuleController_getById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticPricingRuleResponseDtoData"}}}},"404":{"description":"Static pricing rule not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get static pricing rule by ID","tags":["Static Pricing Rules"]},"patch":{"description":"Update an existing static pricing rule by ID","operationId":"StaticPricingRuleController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateStaticPricingRuleDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StaticPricingRuleResponseDtoData"}}}},"404":{"description":"Static pricing rule not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Update a static pricing rule","tags":["Static Pricing Rules"]},"delete":{"description":"Permanently delete a static pricing rule by ID","operationId":"StaticPricingRuleController_remove_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"404":{"description":"Static pricing rule not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}}},"summary":"Delete a static pricing rule","tags":["Static Pricing Rules"]}},"/trip-bidding-ms/v1/static-pricing-rules/check-location":{"post":{"description":"Verify if a given location falls within any active pricing zone","operationId":"StaticPricingRuleController_checkLocationInZone_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckLocationDto"}}}},"responses":{"200":{"description":"Returns true if location is in any zone, false otherwise","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DataResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Check if location is in a pricing zone","tags":["Static Pricing Rules"]}},"/trip-bidding-ms/v1/analysis/coupon-usages":{"get":{"description":"Returns the total usage count of coupons grouped by coupon code. If no dates are provided, defaults to the current month.","operationId":"AnalysisController_getCouponUsagesAnalysis_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouponUsagesAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get coupon usage statistics","tags":["Analysis-Trip Bid MS"]}},"/trip-bidding-ms/v1/analysis/trip/used-coupon":{"get":{"description":"Returns the number of trips that actually used a coupon and the total subsidy cost. Only counts coupon usages that resulted in real trips. If no dates are provided, defaults to today.","operationId":"AnalysisController_getTripsUsedCouponAnalysis_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripUsedCouponAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get trips that used coupons","tags":["Analysis-Trip Bid MS"]}},"/location-query-ms/v1/drivers/nearby":{"get":{"operationId":"LocationController_getNearbyDrivers_v1","parameters":[{"name":"latitude","required":true,"in":"query","description":"Latitude of the location","schema":{"example":"37.1344","type":"number"}},{"name":"longitude","required":true,"in":"query","description":"Longitude of the location","schema":{"example":"36.2021","type":"number"}},{"name":"status","required":false,"in":"query","description":"Driver status","schema":{"example":"available","type":"string"}},{"name":"vehicleType","required":false,"in":"query","description":"Vehicle type filter","schema":{"example":"car","type":"string"}},{"name":"driverType","required":false,"in":"query","description":"Driver type filter","schema":{"example":"full-time","type":"string"}},{"name":"minRating","required":false,"in":"query","description":"Minimum rating filter","schema":{"example":"4.5","type":"number"}},{"name":"radiusMeters","required":false,"in":"query","description":"Radius Meters","schema":{"example":"450","type":"number"}},{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ResponseOfNearbyDriverResponseDto","allOf":[{"$ref":"#/components/schemas/DataArrayResponse"},{"properties":{"status":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/NearbyDriverResponseDto"}},"totalResults":{"type":"number"}}}]}}}}},"tags":["Location Query | Nearby Drivers"]}},"/location-query-ms/v1/drivers/admin/nearby":{"get":{"operationId":"LocationController_getAdminNearbyDrivers_v1","parameters":[{"name":"latitude","required":true,"in":"query","description":"Latitude of the location","schema":{"example":37.1344,"type":"number"}},{"name":"longitude","required":true,"in":"query","description":"Longitude of the location","schema":{"example":36.2021,"type":"number"}},{"name":"status","required":false,"in":"query","description":"Driver status","schema":{"example":"available","type":"string"}},{"name":"vehicleType","required":false,"in":"query","description":"Vehicle type filter","schema":{"example":"SEDAN","type":"string","enum":["SEDAN","FOUR_X_FOUR","SUV","TRUCK"]}},{"name":"driverType","required":false,"in":"query","description":"Driver type filter","schema":{"example":"CLASSIC","type":"string","enum":["CLASSIC","COMFORT","VIP","TAXI","WOMAN","VAN"]}},{"name":"minRating","required":false,"in":"query","description":"Minimum rating filter","schema":{"example":4.5,"type":"number"}},{"name":"radiusMeters","required":false,"in":"query","description":"Radius in Meters","schema":{"example":450,"type":"number"}},{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"title":"ResponseOfAdminNearbyDriverResponseDto","allOf":[{"$ref":"#/components/schemas/DataArrayResponse"},{"properties":{"status":{"type":"string"},"data":{"type":"array","items":{"$ref":"#/components/schemas/AdminNearbyDriverResponseDto"}},"totalResults":{"type":"number"}}}]}}}}},"tags":["Location Query | Nearby Drivers"]}},"/location-ingestion-ms/v1/location/update":{"post":{"operationId":"LocationController_createLocation_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateLocationDto"}}}},"responses":{"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}}},"tags":["location"]}},"/payment-ms/v1/admin/payments/currencies":{"post":{"description":"Adds a new supported currency to the platform","operationId":"AdminCurrencyController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCurrencyDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Create a new currency","tags":["Admin-Currency"]}},"/payment-ms/v1/payments/currencies":{"get":{"description":"Returns a paginated list of all currency in the system. Administrators use this endpoint to review available currency along with their status and metadata.","operationId":"CurrencyController_getCurrencies_v1","parameters":[{"name":"code","required":false,"in":"query","description":"Filter by currency code","schema":{"example":"USD","type":"string"}},{"name":"name","required":false,"in":"query","description":"Filter by currency name","schema":{"example":"United States Dollar","type":"string"}},{"name":"symbol","required":false,"in":"query","description":"Filter by currency symbol","schema":{"example":"$","type":"string"}},{"name":"decimalPlaces","required":false,"in":"query","description":"Filter by decimal places","schema":{"example":2,"type":"number"}},{"name":"isActive","required":false,"in":"query","description":"Filter by active status","schema":{"example":true,"type":"boolean"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CurrencyResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Retrieve all configured currency","tags":["Currency"]}},"/payment-ms/v1/admin/payments/payment-gateway":{"post":{"description":"Registers a new payment gateway for the platform.","operationId":"AdminPaymentGatewayController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePaymentGatewayRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentGatewayResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Create a new payment gateway","tags":["Admin-Payment Gateway"]}},"/payment-ms/v1/admin/payments/payment-gateway/{id}":{"patch":{"description":"Updates an existing payment gateway by its ID.","operationId":"AdminPaymentGatewayController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePaymentGatewayRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentGatewayResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Update a payment gateway","tags":["Admin-Payment Gateway"]},"delete":{"description":"Deletes a payment gateway by its ID.","operationId":"AdminPaymentGatewayController_delete_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}}},"summary":"Delete a payment gateway","tags":["Admin-Payment Gateway"]}},"/payment-ms/v1/payments/payment-gateway":{"get":{"description":"Retrieves a list of all payment gateways.","operationId":"PaymentGatewayController_findAllPaging_v1","parameters":[{"name":"id","required":false,"in":"query","description":"Filter by payment gateway ID","schema":{"type":"string"}},{"name":"providerKey","required":false,"in":"query","description":"Filter by provider key","schema":{"example":"stripe","type":"string"}},{"name":"name","required":false,"in":"query","description":"Filter by gateway name","schema":{"example":"Stripe","type":"string"}},{"name":"type","required":false,"in":"query","description":"Filter by gateway type","schema":{"example":"DIGITAL","type":"string","enum":["PHYSICAL","DIGITAL","INTERNAL_WALLET"]}},{"name":"isActive","required":false,"in":"query","description":"Filter by active status","schema":{"example":true,"type":"boolean"}},{"name":"createdFrom","required":false,"in":"query","description":"Filter by payment gateways created after this date","schema":{"format":"date-time","type":"string"}},{"name":"createdTo","required":false,"in":"query","description":"Filter by payment gateways created before this date","schema":{"format":"date-time","type":"string"}},{"name":"updatedFrom","required":false,"in":"query","description":"Filter by payment gateways updated after this date","schema":{"format":"date-time","type":"string"}},{"name":"updatedTo","required":false,"in":"query","description":"Filter by payment gateways updated before this date","schema":{"format":"date-time","type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentGatewayResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get All Payment Gateways","tags":["Payment Gateway"]}},"/payment-ms/v1/payments/payment-gateway/{gatewayId}":{"get":{"description":"Retrieves a payment gateway by its ID.","operationId":"PaymentGatewayController_findById_v1","parameters":[{"name":"gatewayId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentGatewayResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get Payment Gateway by ID","tags":["Payment Gateway"]}},"/payment-ms/v1/admin/payment-intents":{"get":{"operationId":"AdminPaymentIntentController_getPaymentIntents_v1","parameters":[{"name":"X-User-Token","in":"header","description":"Driver access token","required":true,"schema":{"type":"string"}},{"name":"tripId","required":false,"in":"query","description":"Filter by trip ID","schema":{"example":"uuid-string","type":"string"}},{"name":"gatewayPaymentIntentId","required":false,"in":"query","description":"Filter by gateway payment intent ID","schema":{"example":"pi_1234567890","type":"string"}},{"name":"status","required":false,"in":"query","description":"Filter by payment status","schema":{"example":"CAPTURED","type":"string","enum":["AUTHORIZED","CAPTURED","CAPTURED_PENDING","CANCELLED","FAILED"]}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentIntentResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves details of payment intents, useful for debugging payment issues.","tags":["Admin-Payment Intent"]}},"/payment-ms/v1/internal/payments/authorize":{"post":{"description":"This is a critical step in the \"Authorize and Capture\" flow. The Trip Bidding MS calls this endpoint before creating a bid. The service attempts to place a hold on the passenger's selected payment method. If the authorization fails, the entire ride request is rejected.","operationId":"PaymentIntentController_authorize_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizePaymentIntentRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthorizePaymentIntentResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"To place a temporary \"hold\" (authorization) on a passenger's funds before a trip begins.","tags":["Internal-Payment Intent"]}},"/payment-ms/v1/internal/payments/capture":{"post":{"description":"This is the primary endpoint for the initial trip settlement attempt. Called by the Trip Microservice immediately after a trip moves to COMPLETED.","operationId":"PaymentIntentController_finalizePayment_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinalizePaymentRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialTransactionResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Finalizes the payment for a completed trip, moving funds from \"authorized\" to \"captured\" and settling all internal accounts.","tags":["Internal-Payment Intent"]}},"/payment-ms/v1/internal/payments/retry":{"post":{"operationId":"PaymentIntentController_retryPayment_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RetryPaymentRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentIntentResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"To attempt a direct charge for a trip using potentially updated payment details, typically after a previous capture attempt failed.","tags":["Internal-Payment Intent"]}},"/payment-ms/v1/internal/payments/payment-intent/cancel":{"post":{"description":"Cancels a PaymentIntent that was authorized but not yet captured. This releases any holds on the passenger's funds. Called by Trip Bidding or Trip Microservice when a bid fails or expires. This endpoint is idempotent - multiple calls have the same effect.","operationId":"PaymentIntentController_cancelPaymentIntent_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelPaymentIntentRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CancelPaymentIntentResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"Payment intent already captured and cannot be cancelled","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Cancel a previously authorized PaymentIntent","tags":["Internal-Payment Intent"]}},"/payment-ms/v1/transactions/me":{"get":{"description":"Retrieves a paginated list of the authenticated user's financial transactions from the master ledger. Returns transactions filtered by user role: PASSENGER sees PASSENGER_PAYMENT, PASSENGER_WALLET_TOPUP, PASSENGER_REFUND. DRIVER sees DRIVER_EARNING, DRIVER_PAYOUT, DRIVER_DEPOSIT. BOOTH_OPERATOR sees BOOTH_COMMISSION, BOOTH_PAYOUT.","operationId":"FinancialTransactionController_getMyFinancialTransactions_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"tripId","required":false,"in":"query","description":"Filter by trip ID","schema":{"type":"string"}},{"name":"actorId","required":false,"in":"query","description":"Filter by actor ID","schema":{"type":"string"}},{"name":"subjectId","required":false,"in":"query","description":"Filter by subject ID","schema":{"type":"string"}},{"name":"type","required":false,"in":"query","description":"Filter by type","schema":{"type":"string"}},{"name":"startDate","required":false,"in":"query","description":"Filter by start date","schema":{"type":"string"}},{"name":"endDate","required":false,"in":"query","description":"Filter by end date","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialTransactionResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get My Transaction History","tags":["Financial Transactions"]}},"/payment-ms/v1/admin/transactions/{id}":{"get":{"description":"Retrieves a financial-transaction by ID.","operationId":"AdminFinancialTransactionController_getById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialTransactionResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get Financial Transaction by ID (Admin)","tags":["Admin-Financial Transactions"]}},"/payment-ms/v1/admin/transactions":{"get":{"description":"Retrieves a paginated list of all financial-transactions with filters.","operationId":"AdminFinancialTransactionController_getFinancialTransactions_v1","parameters":[{"name":"tripId","required":false,"in":"query","description":"Filter by trip ID","schema":{"type":"string"}},{"name":"actorId","required":false,"in":"query","description":"Filter by actor ID","schema":{"type":"string"}},{"name":"subjectId","required":false,"in":"query","description":"Filter by subject ID","schema":{"type":"string"}},{"name":"type","required":false,"in":"query","description":"Filter by type","schema":{"type":"string"}},{"name":"startDate","required":false,"in":"query","description":"Filter by start date","schema":{"type":"string"}},{"name":"endDate","required":false,"in":"query","description":"Filter by end date","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialTransactionResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get All Financial Transactions (Admin)","tags":["Admin-Financial Transactions"]}},"/payment-ms/v1/internal/payments/user/payment-method":{"get":{"description":"Retrieves a user payment method by ID. Designed for microservice-to-microservice communication","operationId":"InternalUserPaymentMethodController_getUserPaymentMethod_v1","parameters":[{"name":"paymentMethodId","required":true,"in":"query","description":"The payment method ID","schema":{"example":"pm-uuid-1","type":"string"}},{"name":"userId","required":true,"in":"query","description":"The user ID that owns the payment method","schema":{"example":"user-uuid-1","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentMethodResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get a user payment method by ID (for M2M communication)","tags":["Internal-User Payment Method"]}},"/payment-ms/v1/user/payment-methods":{"get":{"description":"The passenger app calls this to display the list of saved cards that the user can choose from when requesting a ride.","operationId":"UserPaymentMethodController_getAllUserPaymentMethods_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"id","required":false,"in":"query","description":"Filter by payment method ID","schema":{"type":"string"}},{"name":"cardBrand","required":false,"in":"query","description":"Filter by card brand","schema":{"example":"Visa","type":"string"}},{"name":"last4","required":false,"in":"query","description":"Filter by last 4 digits of card","schema":{"example":"4242","type":"string"}},{"name":"status","required":false,"in":"query","description":"Filter by payment method status","schema":{"example":"VERIFIED","type":"string","enum":["PENDING_VERIFICATION","VERIFIED","DISABLED"]}},{"name":"expiryMonth","required":false,"in":"query","description":"Filter by expiry month","schema":{"minimum":1,"maximum":12,"example":12,"type":"number"}},{"name":"expiryYear","required":false,"in":"query","description":"Filter by expiry year","schema":{"example":2025,"type":"number"}},{"name":"minExpiryYear","required":false,"in":"query","description":"Filter by minimum expiry year","schema":{"example":2024,"type":"number"}},{"name":"maxExpiryYear","required":false,"in":"query","description":"Filter by maximum expiry year","schema":{"example":2030,"type":"number"}},{"name":"isDefault","required":false,"in":"query","description":"Filter by default payment method status","schema":{"example":true,"type":"boolean"}},{"name":"createdFrom","required":false,"in":"query","description":"Filter by payment methods created after this date","schema":{"format":"date-time","type":"string"}},{"name":"createdTo","required":false,"in":"query","description":"Filter by payment methods created before this date","schema":{"format":"date-time","type":"string"}},{"name":"updatedFrom","required":false,"in":"query","description":"Filter by payment methods updated after this date","schema":{"format":"date-time","type":"string"}},{"name":"updatedTo","required":false,"in":"query","description":"Filter by payment methods updated before this date","schema":{"format":"date-time","type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UserPaymentMethodResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves a list of all saved payment methods for the authenticated passenger (or user).","tags":["User Payment Method"]}},"/payment-ms/v1/admin/wallets/commission":{"get":{"description":"For administrators to view the pre-paid balances of all drivers,Allows searching by driver ID or filtering by balance thresholds. ","operationId":"AdminDriverCommissionWalletController_getWallets_v1","parameters":[{"name":"driverId","required":false,"in":"query","schema":{"type":"string"}},{"name":"minBalance","required":false,"in":"query","schema":{"type":"number"}},{"name":"maxBalance","required":false,"in":"query","schema":{"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverCommissionWalletResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves a paginated list of all driver commission wallets, with filtering.","tags":["Admin-Driver Commission Wallet"]}},"/payment-ms/v1/wallet/commission":{"get":{"description":"Called by the Driver App to display the driver's current pre-paid balance, which is used to pay commissions.Includes balances for all currencies the driver might hold.","operationId":"DriverCommissionWalletController_getMyWallets_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverCommissionWalletResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Retrieves the current balance of the authenticated driver's pre-paid commission wallet.","tags":["Driver Commission Wallet"]}},"/payment-ms/v1/internal/wallet/commission/batch/negative-balance":{"get":{"description":"Retrieves a list of driver IDs who have negative commission wallet balance. Designed for microservice-to-microservice communication to check multiple drivers in a single request.","operationId":"InternalDriverCommissionWalletController_batchCheckNegativeBalance_v1","parameters":[{"name":"ids","required":true,"in":"query","description":"Comma-separated list of driver UUIDs (e.g., uuid-1,uuid-2,uuid-3)","schema":{"example":"123e4567-e89b-12d3-a456-426614174000,123e4567-e89b-12d3-a456-426614174001","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchCheckNegativeBalanceResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Batch check drivers with negative commission wallet balance","tags":["Internal-Driver Commission Wallet"]}},"/payment-ms/v1/internal/wallet/commission/accounts/{driverId}":{"get":{"description":"Retrieves all Driver's commission wallets, Designed for microservice-to-microservice communication","operationId":"InternalDriverCommissionWalletController_batchGetDriverCommissionWallets_v1","parameters":[{"name":"driverId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverCommissionWalletResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Retrieves all Driver's commission wallets.","tags":["Internal-Driver Commission Wallet"]}},"/payment-ms/v1/admin/wallets/earnings":{"get":{"operationId":"AdminDriverEarningsAccountController_getEarningsAccounts_v1","parameters":[{"name":"driverId","required":false,"in":"query","schema":{"type":"string"}},{"name":"minBalance","required":false,"in":"query","schema":{"type":"number"}},{"name":"maxBalance","required":false,"in":"query","schema":{"type":"number"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverEarningsAccountResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Admin-Driver Earnings Accounts"]}},"/payment-ms/v1/wallet/earnings":{"get":{"description":"Called by the Driver App to display the amount the company currently owes the driver from completed non-cash trips, which is eligible for payout.Includes balances for all currencies","operationId":"DriverEarningsAccountController_getMyEarningsAccounts_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverEarningsAccountResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves the current balance of the authenticated driver's withdraw-able earnings account.","tags":["Driver Earnings Accounts"]}},"/payment-ms/v1/wallet/earnings/today":{"get":{"description":"Called by the Driver App to display today's earnings breakdown by currency. Includes driver earnings (amount deposited to earnings account) and total earnings (driver earnings + company commission from completed trips).","operationId":"DriverEarningsAccountController_getTodayEarnings_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TodayEarningsResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves the authenticated driver's earnings for today.","tags":["Driver Earnings Accounts"]}},"/payment-ms/v1/payment-configuration":{"post":{"operationId":"PaymentConfigurationController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePaymentConfigurationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentConfigurationResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"tags":["payment-configuration"]},"get":{"operationId":"PaymentConfigurationController_findAll_v1","parameters":[{"name":"name","required":false,"in":"query","description":"Filter by configuration name","schema":{"example":"MAX_BIDS_PER_DRIVER","type":"string"}},{"name":"isEnabled","required":false,"in":"query","description":"Filter by isEnabled flag","schema":{"example":true,"type":"boolean"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentConfigurationResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"tags":["payment-configuration"]}},"/payment-ms/v1/payment-configuration/{id}":{"get":{"operationId":"PaymentConfigurationController_getById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentConfigurationResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"tags":["payment-configuration"]},"patch":{"operationId":"PaymentConfigurationController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePaymentConfigurationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentConfigurationResponseDtoData"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"tags":["payment-configuration"]}},"/payment-ms/v1/driver-active-plan":{"get":{"operationId":"DriverActivePlanController_findAllPaging_v1","parameters":[{"name":"driverId","required":false,"in":"query","schema":{"example":"456e7890-e89b-12d3-a456-426614174111","type":"string"}},{"name":"planId","required":false,"in":"query","schema":{"example":"789e0123-e89b-12d3-a456-426614174222","type":"string"}},{"name":"dateFrom","required":false,"in":"query","schema":{"example":"2024-01-01","type":"string"}},{"name":"dateTo","required":false,"in":"query","schema":{"example":"2024-12-31","type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverActivePlanResponseDtoPagingData"}}}}},"security":[{"access-token":[]}],"summary":"Get all driver active plans with pagination and filters","tags":["Driver Active Plans"]},"post":{"operationId":"DriverActivePlanController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDriverActivePlanDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverActivePlanResponseDtoData"}}}},"400":{"description":"Invalid input data"},"409":{"description":"Driver already has an active plan"}},"security":[{"access-token":[]}],"summary":"Create a new driver active plan","tags":["Driver Active Plans"]}},"/payment-ms/v1/driver-active-plan/driver/{driverId}":{"get":{"operationId":"DriverActivePlanController_findByDriverId_v1","parameters":[{"name":"driverId","required":true,"in":"path","description":"Driver UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverActivePlanResponseDtoData"}}}},"404":{"description":"Active plan not found for driver"}},"security":[{"access-token":[]}],"summary":"Get active plan for a specific driver","tags":["Driver Active Plans"]},"delete":{"operationId":"DriverActivePlanController_delete_v1","parameters":[{"name":"driverId","required":true,"in":"path","description":"Driver UUID","schema":{"type":"string"}}],"responses":{"200":{"description":"Driver active plan deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}},"404":{"description":"Active plan not found for driver"}},"security":[{"access-token":[]}],"summary":"Delete driver active plan","tags":["Driver Active Plans"]}},"/payment-ms/v1/driver-active-plan/driver/{driverId}/switch":{"patch":{"description":"Switches the driver to a new plan, resets trip counter to 0, and sets startDate to now.","operationId":"DriverActivePlanController_switchPlan_v1","parameters":[{"name":"driverId","required":true,"in":"path","description":"Driver UUID","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SwitchDriverPlanDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverActivePlanResponseDtoData"}}}},"404":{"description":"Active plan or new plan not found"}},"security":[{"access-token":[]}],"summary":"Switch driver to a new commission plan","tags":["Driver Active Plans"]}},"/payment-ms/v1/commission-plan":{"get":{"operationId":"CommissionPlanController_findAllPaging_v1","parameters":[{"name":"name","required":false,"in":"query","schema":{"example":"Standard","type":"string"}},{"name":"isSignupDefault","required":false,"in":"query","schema":{"example":true,"type":"boolean"}},{"name":"isFallbackDefault","required":false,"in":"query","schema":{"example":true,"type":"boolean"}},{"name":"dateFrom","required":false,"in":"query","schema":{"example":"2024-01-01","type":"string"}},{"name":"dateTo","required":false,"in":"query","schema":{"example":"2024-12-31","type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommissionPlanResponseDtoPagingData"}}}}},"security":[{"access-token":[]}],"summary":"Get all commission plans with pagination and filters","tags":["Commission Plans"]},"post":{"operationId":"CommissionPlanController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCommissionPlanDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommissionPlanResponseDtoData"}}}},"400":{"description":"Invalid input data"}},"security":[{"access-token":[]}],"summary":"Create a new commission plan","tags":["Commission Plans"]}},"/payment-ms/v1/commission-plan/signup-default":{"get":{"operationId":"CommissionPlanController_getSignupDefault_v1","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommissionPlanResponseDtoData"}}}},"404":{"description":"No signup default commission plan found"}},"security":[{"access-token":[]}],"summary":"Get the default signup commission plan","tags":["Commission Plans"]}},"/payment-ms/v1/commission-plan/fallback-default":{"get":{"operationId":"CommissionPlanController_getFallbackDefault_v1","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommissionPlanResponseDtoData"}}}},"404":{"description":"No fallback default commission plan found"}},"security":[{"access-token":[]}],"summary":"Get the fallback default commission plan","tags":["Commission Plans"]}},"/payment-ms/v1/commission-plan/{id}":{"get":{"operationId":"CommissionPlanController_findById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommissionPlanResponseDtoData"}}}},"404":{"description":"Commission plan not found"}},"security":[{"access-token":[]}],"summary":"Get commission plan by ID","tags":["Commission Plans"]},"patch":{"operationId":"CommissionPlanController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCommissionPlanDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CommissionPlanResponseDtoData"}}}},"400":{"description":"Invalid input data"},"404":{"description":"Commission plan not found"}},"security":[{"access-token":[]}],"summary":"Update a commission plan","tags":["Commission Plans"]},"delete":{"operationId":"CommissionPlanController_delete_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"Commission plan deleted successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}},"400":{"description":"Cannot delete default plans"},"404":{"description":"Commission plan not found"},"409":{"description":"Cannot delete plan with active drivers"}},"security":[{"access-token":[]}],"summary":"Delete a commission plan","tags":["Commission Plans"]}},"/payment-ms/v1/payout/operator":{"get":{"description":"The primary endpoint for operators/admins to view the queue of pending payout requests and the history of processed ones.","operationId":"OperatorPayoutsController_getPayoutRequests_v1","parameters":[{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["PENDING","APPROVED","REJECTED","COMPLETED"]}},{"name":"driverId","required":false,"in":"query","schema":{"type":"string"}},{"name":"operatorId","required":false,"in":"query","description":"Operator ID who approved/rejected (if applicable)","schema":{"type":"string"}},{"name":"dateFrom","required":false,"in":"query","schema":{"type":"string"}},{"name":"dateTo","required":false,"in":"query","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutRequestResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves a paginated list of all payout requests (driver and booth), with filtering","tags":["Payout"]}},"/payment-ms/v1/payout/driver/request":{"post":{"description":"For a driver to request a withdrawal of their accumulated earnings.","operationId":"OperatorPayoutsController_requestDriverPayout_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePayoutRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutRequestResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"For a driver to request a withdrawal of their accumulated earnings.","tags":["Payout"]}},"/payment-ms/v1/payout/{id}/operator":{"patch":{"description":"For an admin to approve or reject a pending driver payout request.","operationId":"OperatorPayoutsController_reviewPayout_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePayoutRequestStatusDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutRequestResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"For an admin to approve or reject a pending driver payout request.","tags":["Payout"]}},"/payment-ms/v1/payout/booth/request":{"post":{"description":"This endpoint is used when a driver physically visits a booth to withdraw their earnings in cash. The Booth Operator initiates the request.The system verifies that the driver has sufficient earnings and creates a PENDING payout request.","operationId":"OperatorPayoutsController_requestBoothPayout_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBoothPayoutRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoothPayoutRequestResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Allows a Booth Operator to request a payout on behalf of a driver (cash withdrawal).","tags":["Payout"]}},"/payment-ms/v1/payout/me":{"get":{"description":"Called by the Driver App to show the history and status of their requests to withdraw earnings.","operationId":"OperatorPayoutsController_getMyPayoutRequests_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["PENDING","APPROVED","REJECTED","COMPLETED"]}},{"name":"driverId","required":false,"in":"query","schema":{"type":"string"}},{"name":"operatorId","required":false,"in":"query","description":"Operator ID who approved/rejected (if applicable)","schema":{"type":"string"}},{"name":"dateFrom","required":false,"in":"query","schema":{"type":"string"}},{"name":"dateTo","required":false,"in":"query","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PayoutRequestResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves a paginated list of the authenticated driver's payout requests.","tags":["Payout"]}},"/payment-ms/v1/payments/booth/deposits":{"post":{"description":"A booth operator uses this endpoint after receiving cash from a driver.This action credits the driver's commission wallet and logs the corresponding transactions in the ledgers","operationId":"BoothOperatorAccountController_deposit_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepositCommissionWalletDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DepositCommissionWalletResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"For a booth operator to add funds to a driver's pre-paid commission wallet.","tags":["Booth Operator Account"]}},"/payment-ms/v1/admin/booth/settle":{"post":{"description":"Booth Operators collect cash from drivers (`POST /payments/booth/deposits`). This increases their `cash_on_hand`(Liability).\nPeriodically, the operator must deposit this accumulated cash into the Company's Bank Account.\nWhen the Finance Team/Admin verifies the bank transaction, they call this endpoint.\nThis action reduces the operator's debt to the system, allowing them to continue operations if they have a \"Max Cash Liability\" limit.","operationId":"AdminBoothOperatorAccountController_settleCashLiability_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettleBoothCashRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SettleBoothCashResponseDtoData"}}}},"400":{"description":"Invalid amount (<=0), currency mismatch, or validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"404":{"description":"Booth operator account not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Decreases a Booth Operator's cash_on_hand liability after an Admin confirms\nreceipt of a physical bank deposit or wire transfer from that operator.","tags":["Admin-Booth Operator Account"]}},"/payment-ms/v1/admin/booth/balance/{operatorId}":{"get":{"description":"Retrieves a Booth Operator's current wallet balance.","operationId":"AdminBoothOperatorAccountController_getBoothOperatorAccountBalance_v1","parameters":[{"name":"operatorId","required":true,"in":"path","schema":{"type":"string"}},{"name":"currencyCode","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoothOperatorAccountResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves a Booth Operator's current wallet balance.","tags":["Admin-Booth Operator Account"]}},"/payment-ms/v1/internal/wallet/booth/accounts/{operatorId}":{"get":{"description":"Retrieves all Booth Operator's wallets, Designed for microservice-to-microservice communication","operationId":"InternalBoothOperatorAccountController_batchGetBoothOperatorAccounts_v1","parameters":[{"name":"operatorId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoothOperatorAccountResponseDtoArrayData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Retrieves all Booth Operator's wallets.","tags":["Internal-Booth Operator Account"]}},"/payment-ms/v1/wallet/my-balance":{"get":{"description":"Retrieves the authenticated user's current wallet balance based on their active role context (loggedInAs claim from JWT). Automatically creates a wallet with 0.00 balance if it does not exist (lazy creation). Queries different wallet tables based on role: PASSENGER -> passenger_wallets, DRIVER -> driver_earnings_accounts, BOOTH -> booth_operator_accounts.","operationId":"WalletController_getMyBalance_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}},{"name":"currency","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MyBalanceResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Retrieve authenticated user current wallet balance","tags":["Wallet"]}},"/payment-ms/v1/wallet/transfer-funds":{"post":{"description":"Allows a user to transfer funds from their earnings account (Driver or Booth) to their Passenger wallet. The source account must have sufficient balance. The passenger wallet will be created automatically if it does not exist. Role validation: DRIVER_EARNINGS requires DRIVER role, BOOTH_EARNINGS requires BOOTH_OPERATOR role.","operationId":"WalletController_transferFunds_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferFundsRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransferFundsResponseDtoData"}}}},"400":{"description":"Invalid request or insufficient balance","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"403":{"description":"User does not have required role for the source account","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Transfer funds between user accounts","tags":["Wallet"]}},"/payment-ms/v1/admin/wallet/compensate":{"post":{"description":"Adds funds to a user's internal account (Earnings or Commission) as a bonus, compensation, or manual adjustment from the company.\nSupports multiple user types (DRIVER, BOOTH_OPERATOR, KYC_OPERATOR) and multiple target accounts (EARNINGS, COMMISSION).\nCONSTRAINT: The COMMISSION account target is valid only for users of type DRIVER.\nUnlike trip payments, this money is drawn from the Company's implicit funds.\nIn the immutable ledger, this is recorded as a generic \"Expense\" for the company and a \"Credit\" for the user.","operationId":"AdminWalletController_compensateUser_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompensateUserRequestDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompensateUserResponseDtoData"}}}},"400":{"description":"Invalid combination (e.g., Booth + Commission), invalid amount (<=0), empty reason, or validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"403":{"description":"Missing admin:compensate permission","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"404":{"description":"User account not found for specified user/currency combination","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"[ADMIN] Compensate user with manual funds injection","tags":["Admin-Wallet"]}},"/payment-ms/v1/referral/invite":{"post":{"operationId":"ReferralController_inviteReferral_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteReferralDto"}}}},"responses":{"200":{"description":"Referral invitation sent successfully.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}},"400":{"description":"User is already registered or bad request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"404":{"description":"Referral campaign not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"Duplicate/pending invite.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Initiates a referral by logging the target phone number. It triggers an SMS invitation via the Notification Service.","tags":["Referral"]}},"/payment-ms/v1/admin/financials/balance":{"get":{"description":"Retrieves the company's financial balance using pre-calculated snapshots for historical data and real-time ledger queries for the current day. Supports two scenarios: 1) Lifetime Balance (no dates): Returns current total company balance across all time. 2) Date Range (startDate + optional endDate): Returns financial summary for a specific period. Results can be filtered by currency code. Only accessible by Super Admin users.","operationId":"CompanyFinancialSnapshotController_getBalance_v1","parameters":[{"name":"currencyCode","required":false,"in":"query","description":"The currency code to filter the financial snapshot by","schema":{"example":"USD","type":"string"}},{"name":"startDate","required":false,"in":"query","description":"The start date to filter the financial snapshot by","schema":{"example":"2022-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"The end date to filter the financial snapshot by","schema":{"example":"2022-12-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialSnapshotResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get Company Financial Balance","tags":["Company Financial Snapshots"]}},"/payment-ms/v1/analysis/user/registration-via-invite":{"get":{"description":"Returns the count of user registration via invite within the specified date range. If no dates are provided, returns the total count from the beginning of time.","operationId":"AnalysisController_getUserRegistrationViaInviteCount_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get user registration via invite count","tags":["Analysis-Payment MS"]}},"/payment-ms/v1/analysis/earnings/trip":{"get":{"description":"Returns the financial breakdown of trips: GMV vs. Company Revenue vs. Driver Earnings.","operationId":"AnalysisController_getTripEarnings_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TripEarningsAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get trip earnings breakdown","tags":["Analysis-Payment MS"]}},"/payment-ms/v1/analysis/earnings/driver":{"get":{"description":"Returns total earnings credited to drivers. Optionally filter by driverId.","operationId":"AnalysisController_getDriverEarnings_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}},{"name":"driverId","required":false,"in":"query","description":"Filter by a specific driverId","schema":{"example":"driver_123","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverEarningsAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get net earnings for drivers","tags":["Analysis-Payment MS"]}},"/payment-ms/v1/analysis/earnings/company":{"get":{"operationId":"AnalysisController_getCompanyEarnings_v1","parameters":[{"name":"startDate","required":false,"in":"query","description":"Start date of the analysis period in ISO format","schema":{"example":"2025-01-01","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"End date of the analysis period in ISO format","schema":{"example":"2025-01-31","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyEarningsAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get company revenue, expenses, and net profit","tags":["Analysis-Payment MS"]}},"/payment-ms/v1/analysis/booth/cash-in-hand":{"get":{"operationId":"AnalysisController_getBoothCashInHand_v1","parameters":[],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BoothCashInHandAnalysisResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get live booth cash liability (cash in hand)","tags":["Analysis-Payment MS"]}},"/payment-ms/v1/referral-campaign":{"get":{"description":"Retrieves a list of all referral campaigns.","operationId":"ReferralCampaignController_findAllPaging_v1","parameters":[{"name":"id","required":false,"in":"query","description":"Filter by campaign ID","schema":{"example":"campaign-uuid-123","type":"string"}},{"name":"name","required":false,"in":"query","description":"Filter by campaign name (partial match)","schema":{"example":"Winter","type":"string"}},{"name":"currencyCode","required":false,"in":"query","description":"Filter by currency code","schema":{"example":"SYP","type":"string"}},{"name":"targetWallet","required":false,"in":"query","description":"Filter by target wallet","schema":{"example":"PASSENGER_WALLET","type":"string","enum":["PASSENGER_WALLET","DRIVER_EARNINGS"]}},{"name":"isActive","required":false,"in":"query","description":"Filter by active status","schema":{"example":true,"type":"boolean"}},{"name":"isDefault","required":false,"in":"query","description":"Filter by default status","schema":{"example":false,"type":"boolean"}},{"name":"createdFrom","required":false,"in":"query","description":"Filter campaigns created from this date","schema":{"format":"date-time","example":"2024-01-01T00:00:00Z","type":"string"}},{"name":"createdTo","required":false,"in":"query","description":"Filter campaigns created until this date","schema":{"format":"date-time","example":"2024-12-31T23:59:59Z","type":"string"}},{"name":"updatedFrom","required":false,"in":"query","description":"Filter campaigns updated from this date","schema":{"format":"date-time","example":"2024-01-01T00:00:00Z","type":"string"}},{"name":"updatedTo","required":false,"in":"query","description":"Filter campaigns updated until this date","schema":{"format":"date-time","example":"2024-12-31T23:59:59Z","type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralCampaignResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get All Referral Campaigns","tags":["Referral Campaign"]},"post":{"description":"Registers a new referral campaign for the platform.","operationId":"ReferralCampaignController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReferralCampaignRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralCampaignResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Create a new referral campaign","tags":["Referral Campaign"]}},"/payment-ms/v1/referral-campaign/{id}":{"get":{"description":"Retrieves a referral campaign by its ID.","operationId":"ReferralCampaignController_findById_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralCampaignResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get Referral Campaign by ID","tags":["Referral Campaign"]},"patch":{"description":"Updates an existing referral campaign by its ID.","operationId":"ReferralCampaignController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateReferralCampaignRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReferralCampaignResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Update a referral campaign","tags":["Referral Campaign"]},"delete":{"description":"Deletes a referral campaign by its ID.","operationId":"ReferralCampaignController_delete_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Delete a referral campaign","tags":["Referral Campaign"]}},"/reference-ms/v1/domains":{"post":{"operationId":"DomainController_create_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDomainDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Create a new domain","tags":["Domain"]},"get":{"operationId":"DomainController_findAll_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"name","required":false,"in":"query","description":"Domain name","schema":{"type":"string"}},{"name":"description","required":false,"in":"query","description":"Domain description","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get all domains","tags":["Domain"]}},"/reference-ms/v1/domains/{id}":{"patch":{"operationId":"DomainController_update_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDomainDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Update domain by id","tags":["Domain"]},"delete":{"operationId":"DomainController_remove_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Soft delete domain by id","tags":["Domain"]},"get":{"operationId":"DomainController_findOne_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DomainResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get domain by id","tags":["Domain"]}},"/reference-ms/v1/categories":{"post":{"operationId":"CategoryController_create_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCategoryDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCategoryDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Create a new category","tags":["Category"]},"get":{"operationId":"CategoryController_findAll_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"domainId","required":false,"in":"query","description":"Domain ID","schema":{"type":"string"}},{"name":"name","required":false,"in":"query","description":"Category name","schema":{"type":"string"}},{"name":"description","required":false,"in":"query","description":"Category description","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get all categories","tags":["Category"]}},"/reference-ms/v1/categories/{id}":{"patch":{"operationId":"CategoryController_update_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCategoryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Update category by id","tags":["Category"]},"delete":{"operationId":"CategoryController_remove_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Soft delete category by id","tags":["Category"]},"get":{"operationId":"CategoryController_findOne_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get category by id","tags":["Category"]}},"/reference-ms/v1/tags":{"post":{"operationId":"TagController_create_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTagDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTagDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Create a new tag","tags":["Tag"]},"get":{"operationId":"TagController_findAll_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"name","required":false,"in":"query","description":"Tag name","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get all tags","tags":["Tag"]}},"/reference-ms/v1/tags/{id}":{"patch":{"operationId":"TagController_update_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateTagDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Update tag by id","tags":["Tag"]},"delete":{"operationId":"TagController_remove_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Soft delete tag by id","tags":["Tag"]},"get":{"operationId":"TagController_findOne_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TagResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get tag by id","tags":["Tag"]}},"/reference-ms/v1/entries":{"post":{"operationId":"EntryController_create_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateEntryDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Create a new entry","tags":["entries"]},"get":{"operationId":"EntryController_findAll_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"title","required":false,"in":"query","description":"Title","schema":{"type":"string"}},{"name":"summary","required":false,"in":"query","description":"Summary","schema":{"type":"string"}},{"name":"story","required":false,"in":"query","description":"Story","schema":{"type":"string"}},{"name":"rootCause","required":false,"in":"query","description":"Root cause","schema":{"type":"string"}},{"name":"solution","required":false,"in":"query","description":"Solution","schema":{"type":"string"}},{"name":"recommendation","required":false,"in":"query","description":"Recommendation","schema":{"type":"string"}},{"name":"severity","required":false,"in":"query","description":"Severity level","schema":{"type":"string","enum":["LOW","MEDIUM","HIGH","CRITICAL"]}},{"name":"impactLevel","required":false,"in":"query","description":"Impact level","schema":{"type":"string","enum":["INFO","WARNING","DANGER","BLOCKER"]}},{"name":"visibility","required":false,"in":"query","description":"Visibility","schema":{"type":"string","enum":["INTERNAL","TEAM","MANAGMENT","PARTNERS","GOVERNMENT","PUBLIC"]}},{"name":"domainIds","required":false,"in":"query","description":"Filter by domain id","schema":{"type":"array","items":{"type":"string"}}},{"name":"categoryIds","required":false,"in":"query","description":"Category ID","schema":{"type":"array","items":{"type":"string"}}},{"name":"tagName","required":false,"in":"query","description":"Filter by tag ids","schema":{"type":"array","items":{"type":"string"}}},{"name":"createdBy","required":false,"in":"query","description":"Created by","schema":{"type":"string"}},{"name":"updatedBy","required":false,"in":"query","description":"Updated by","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get all entries","tags":["entries"]}},"/reference-ms/v1/entries/{id}":{"get":{"operationId":"EntryController_findOne_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Get entry by id","tags":["entries"]},"patch":{"operationId":"EntryController_update_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateEntryDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EntryResponseDtoData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Update entry by id","tags":["entries"]},"delete":{"operationId":"EntryController_remove_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Delete entry by id","tags":["entries"]}},"/reference-ms/v1/entries/{id}/attachments":{"post":{"operationId":"AttachmentController_uploadAttachment_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/UploadAttachmentDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadAttachmentDtoData"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Upload attachment files to an entry ","tags":["Attachment"]}},"/reference-ms/v1/attachments/{attachmentId}":{"delete":{"operationId":"AttachmentController_deleteAttachment_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"attachmentId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Delete a file by ID attachment","tags":["Attachment"]}},"/notification-ms/v1/users/online-drivers":{"get":{"operationId":"UserController_getOnlineDrivers_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnlineDriverResponseDtoPagingData"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"summary":"Get Online drivers in the system","tags":["users"]}},"/notification-ms/v1/fcm/send-to-topic":{"post":{"operationId":"FcmNotificationController_sendToTopic_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendToTopicDto"}}}},"responses":{"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}}},"tags":["FCM"]}},"/notification-ms/v1/fcm/send-to-user/{userId}":{"post":{"operationId":"FcmNotificationController_sendToUser_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}},{"name":"userId","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendToUserDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendToUserResponseDto"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["FCM"]}},"/notification-ms/v1/notification":{"post":{"operationId":"NotificationController_create_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateNotificationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationResponseDtoData"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notification"]},"get":{"operationId":"NotificationController_getNotifications_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationResponseDtoPagingData"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notification"]}},"/notification-ms/v1/notification/{id}/read":{"patch":{"operationId":"NotificationController_markRead_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationResponseDtoData"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notification"]}},"/notification-ms/v1/notification/read-all":{"patch":{"operationId":"NotificationController_markAllRead_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":""},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notification"]}},"/notification-ms/v1/notification/unread-count":{"get":{"operationId":"NotificationController_unreadCount_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UnreadCountResponseDtoData"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["Notification"]}},"/notification-ms/v1/user-language":{"post":{"operationId":"UserLanguageController_updateUserPreferredLanguage_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLanguageDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDtoData"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["User Language"]},"get":{"operationId":"UserLanguageController_getUserPreferredLanguage_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDtoData"}}}},"400":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"409":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["User Language"]}},"/notification-ms/v1/subscriptions/trips/subscribe/{tripId}":{"post":{"operationId":"SubscriptionsController_subscribeAdmin_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}},{"name":"tripId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["subscriptions/trips"]}},"/notification-ms/v1/subscriptions/trips/unsubscribe/{tripId}":{"post":{"operationId":"SubscriptionsController_unsubscribeAdmin_v1","parameters":[{"name":"X-User-Token","in":"header","required":true,"schema":{"type":"string"}},{"name":"tripId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubscriptionResponseDto"}}}},"406":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"500":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}}},"tags":["subscriptions/trips"]}},"/notification-ms/v1/mqtt/auth":{"post":{"operationId":"MqttController_authenticate_v1","parameters":[],"responses":{"200":{"description":""}},"tags":["Mqtt"]}},"/notification-ms/v1/mqtt/client/connected":{"post":{"operationId":"MqttController_handleClientConnected_v1","parameters":[{"name":"x-mqtt-token","in":"header","description":"MQTT TOKEN","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientConnectedWebhook"}}}},"responses":{"200":{"description":""}},"tags":["Mqtt"]}},"/notification-ms/v1/mqtt/client/disconnected":{"post":{"operationId":"MqttController_handleClientDisconnected_v1","parameters":[{"name":"x-mqtt-token","in":"header","description":"MQTT TOKEN","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientDisconnectedWebhook"}}}},"responses":{"200":{"description":""}},"tags":["Mqtt"]}},"/notification-ms/v1/redis-cleanup/admin/cleanup-stale-connections":{"post":{"description":"Scans all user:connection:* keys and deletes those with lastSeenAt older than 24 hours.","operationId":"RedisCleanupController_triggerCleanup_v1","parameters":[{"name":"X-User-Token","in":"header","description":"Admin JWT Token","required":true,"schema":{"type":"string"}}],"responses":{"201":{"description":"Cleanup operation completed"}},"summary":"Clean up stale user connections older than 24h","tags":["Redis Admin"]}},"/notification-ms/v1/redis-cleanup/admin/cleanup/{resource}":{"delete":{"operationId":"RedisCleanupController_cleanupResource_v1","parameters":[{"name":"X-User-Token","in":"header","description":"Admin JWT Token","required":true,"schema":{"type":"string"}},{"name":"resource","required":true,"in":"path","schema":{"enum":["user:profile:*","user:fcm:*","driver:profile:*","driver:fcm:*","user:connection:*","trip:subscribers:*","routing:driver:*","user_lang_*"],"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CleanupResponseDto"}}}}},"summary":"Full cleanup of a specific Redis resource pattern","tags":["Redis Admin"]}},"/notification-ms/v1/redis-cleanup/admin/cleanup/{resource}/{userId}":{"delete":{"description":"Only works for user-scoped resources.","operationId":"RedisCleanupController_cleanupUserResource_v1","parameters":[{"name":"X-User-Token","in":"header","description":"Admin JWT Token","required":true,"schema":{"type":"string"}},{"name":"resource","required":true,"in":"path","schema":{"enum":["user:profile:*","user:fcm:*","driver:profile:*","driver:fcm:*","user:connection:*","trip:subscribers:*","routing:driver:*","user_lang_*"],"type":"string"}},{"name":"userId","required":true,"in":"path","description":"The ID of the user whose data should be cleared","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CleanupResponseDto"}}}}},"summary":"Cleanup a specific user data for a Redis resource","tags":["Redis Admin"]}},"/kyc-ms/v1/kyc-configuration":{"get":{"operationId":"KycConfigurationController_findAll_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"isEnabled","required":false,"in":"query","description":"Is the configuration enabled","schema":{"type":"string","enum":["true","false"]}},{"name":"isCashed","required":false,"in":"query","description":"Is the configuration cached","schema":{"type":"string","enum":["true","false"]}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycConfigurationResponseDtoPagingData"}}}}},"security":[{"access-token":[]}],"tags":["KycConfiguration"]}},"/kyc-ms/v1/kyc-configuration/{id}":{"patch":{"operationId":"KycConfigurationController_update_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKycConfigurationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycConfigurationResponseDtoData"}}}}},"security":[{"access-token":[]}],"tags":["KycConfiguration"]},"get":{"operationId":"KycConfigurationController_getById_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycConfigurationResponseDtoData"}}}}},"security":[{"access-token":[]}],"tags":["KycConfiguration"]}},"/kyc-ms/v1/kyc/verifications":{"post":{"operationId":"KycController_create_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateKycVerificationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycVerificationResponseDtoData"}}}}},"security":[{"access-token":[]}],"summary":"Create KYC verification","tags":["KYC"]},"get":{"operationId":"KycController_list_v1","parameters":[{"name":"kycStatus","required":false,"in":"query","description":"Filter by KYC status (optional)","schema":{"enum":["PENDING","APPROVED","REJECTED"],"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycVerificationResponseDtoPagingData"}}}}},"security":[{"access-token":[]}],"summary":"List KYC verifications (paging)","tags":["KYC"]}},"/kyc-ms/v1/kyc/verifications/self/documents/batch":{"post":{"operationId":"KycController_batchUploadSelfDocuments_v1","parameters":[{"name":"X-User-Token","required":true,"in":"header","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/BatchUploadDocumentsDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchUploadResponseDtoData"}}}}},"security":[{"access-token":[]}],"tags":["KYC"]}},"/kyc-ms/v1/kyc/verifications/{id}/documents/batch":{"post":{"operationId":"KycController_batchUploadDocuments_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"$ref":"#/components/schemas/BatchUploadDocumentsDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchUploadResponseDtoData"}}}}},"security":[{"access-token":[]}],"tags":["KYC"]}},"/kyc-ms/v1/kyc/verifications/documents/{fileId}/view":{"get":{"operationId":"KycController_viewDocument_v1","parameters":[{"name":"fileId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"image/jpeg":{"schema":{"type":"string","format":"binary"}},"image/png":{"schema":{"type":"string","format":"binary"}},"application/pdf":{"schema":{"type":"string","format":"binary"}}}}},"security":[{"access-token":[]}],"summary":"View a KYC document by file ID","tags":["KYC"]}},"/kyc-ms/v1/kyc/verifications/documents/{fileId}/delete":{"delete":{"operationId":"KycController_delete_v1","parameters":[{"name":"fileId","required":true,"in":"path","schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Delete a file by ID","tags":["KYC"]}},"/kyc-ms/v1/kyc/verifications/{id}/status":{"patch":{"operationId":"KycController_update_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateKycVerificationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}},"404":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponseDto"}}}},"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MessageResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Update KYC verification (status, rejection, operator)","tags":["KYC"]}},"/kyc-ms/v1/kyc/verifications/user/{userId}":{"get":{"operationId":"KycController_getVerificationByUserId_v1","parameters":[{"name":"userId","required":true,"in":"path","schema":{"type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycVerificationResponseDtoPagingData"}}}}},"security":[{"access-token":[]}],"summary":"Get a Lis KYC verification By user Id","tags":["KYC"]}},"/kyc-ms/v1/kyc/verifications/{id}":{"get":{"operationId":"KycController_getOne_v1","parameters":[{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KycVerificationResponseDtoData"}}}}},"security":[{"access-token":[]}],"summary":"Get a single KYC verification","tags":["KYC"]}},"/logging-ms/v1/logs":{"get":{"operationId":"SystemLogController_findAll_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"level","required":false,"in":"query","description":"Level","schema":{"type":"string","enum":["SEVERE","NORMAL","OTHER"]}},{"name":"userId","required":false,"in":"query","description":"userId","schema":{"type":"string"}},{"name":"loggedInAs","required":false,"in":"query","description":"logged In As","schema":{"type":"string"}},{"name":"requestedApi","required":false,"in":"query","description":"Requested Api Path","schema":{"type":"string"}},{"name":"method","required":false,"in":"query","description":"Method","schema":{"type":"string"}},{"name":"ipAddress","required":false,"in":"query","description":"Ip Address","schema":{"type":"string"}},{"name":"statusCode","required":false,"in":"query","description":"Status Code","schema":{"type":"string"}},{"name":"startDate","required":false,"in":"query","description":"Created by","schema":{"format":"date-time","type":"string"}},{"name":"endDate","required":false,"in":"query","description":"Updated by","schema":{"format":"date-time","type":"string"}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\",\"level\",\"statusCode\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemLogResponseDtoPagingData"}}}}},"security":[{"access-token":[]}],"summary":"Get all domains","tags":["SystemLog"]},"delete":{"operationId":"SystemLogController_deleteByRange_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeleteSystemLogDto"}}}},"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Delete logs by date range","tags":["SystemLog"]}},"/logging-ms/v1/logs/{id}":{"delete":{"operationId":"SystemLogController_remove_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"default":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"access-token":[]}],"summary":"Soft delete domain by id","tags":["SystemLog"]},"get":{"operationId":"SystemLogController_findOne_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SystemLogResponseDtoData"}}}}},"security":[{"access-token":[]}],"summary":"Get domain by id","tags":["SystemLog"]}},"/logging-ms/v1/log-configuration":{"get":{"operationId":"LogConfigurationController_findAll_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"isEnabled","required":false,"in":"query","description":"Is the configuration enabled","schema":{"type":"string","enum":["true","false"]}},{"name":"page","required":false,"in":"query","description":"Page number to retrieve","schema":{"minimum":1,"default":1,"example":1,"type":"number"}},{"name":"perPage","required":false,"in":"query","description":"Number of items per page","schema":{"minimum":1,"default":10,"example":10,"type":"number"}},{"name":"sort","required":false,"in":"query","explode":false,"description":"param to sort in format: ?sort=property:(asc|desc), allowed: [\"createdAt\"]","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogConfigurationResponseDtoPagingData"}}}}},"security":[{"access-token":[]}],"summary":"Get all Log Configurations","tags":["LogConfiguration"]}},"/logging-ms/v1/log-configuration/{id}":{"get":{"operationId":"LogConfigurationController_findOne_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogConfigurationResponseDtoData"}}}}},"security":[{"access-token":[]}],"summary":"Get log configuration by id","tags":["LogConfiguration"]},"patch":{"operationId":"LogConfigurationController_update_v1","parameters":[{"name":"x-user-token","in":"header","description":"User access token","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateLogConfigurationDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogConfigurationResponseDtoData"}}}}},"security":[{"access-token":[]}],"summary":"Update log configuration by id","tags":["LogConfiguration"]}},"/logging-ms/v1/app/version/check":{"get":{"operationId":"AppVersionController_check_v1","parameters":[{"name":"appType","required":true,"in":"query","description":"The app type","schema":{"type":"string","enum":["DRIVER","PASSENGER"]}},{"name":"platform","required":true,"in":"query","description":"The platform for which to check the version","schema":{"type":"string","enum":["ANDROID","IOS"]}},{"name":"version","required":true,"in":"query","description":"The version to check","schema":{"example":"1.0.0","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckVersionResponseDtoData"}}}}},"summary":"Check app version and update requirements","tags":["AppVersion"]}},"/logging-ms/v1/app/version/control/login":{"get":{"operationId":"AppVersionAdminController_loginPage_v1","parameters":[],"responses":{"200":{"description":""}},"tags":["AppVersionAdmin"]},"post":{"operationId":"AppVersionAdminController_login_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EmailLoginDto"}}}},"responses":{"201":{"description":""}},"tags":["AppVersionAdmin"]}},"/logging-ms/v1/app/version/control/verify":{"post":{"operationId":"AppVersionAdminController_verify_v1","parameters":[],"responses":{"201":{"description":""}},"tags":["AppVersionAdmin"]}},"/logging-ms/v1/app/version/control/app-versions":{"get":{"operationId":"AppVersionAdminController_index_v1","parameters":[],"responses":{"200":{"description":""}},"tags":["AppVersionAdmin"]},"post":{"operationId":"AppVersionAdminController_update_v1","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAppVersionDto"}}}},"responses":{"201":{"description":""}},"tags":["AppVersionAdmin"]}},"/logging-ms/v1/app/version/control/logout":{"post":{"operationId":"AppVersionAdminController_logout_v1","parameters":[],"responses":{"201":{"description":""}},"tags":["AppVersionAdmin"]}}},"components":{"schemas":{"ErrorResponseDto":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"ERROR","description":"Response status indicator"},"message":{"type":"string","description":"Human-readable message describing the operation result"}},"required":["status","message"]},"DataResponseDto":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"type":"object","description":"The data payload"}},"required":["status","data"]},"FileType":{"type":"string","enum":["DRIVER_LICENSE_FRONT","DRIVER_LICENSE_BACK","NATIONAL_LICENSE_FRONT","NATIONAL_LICENSE_BACK","PASSPORT_PICTURE","CRIMINAL_RECORD_CERTIFICATE","CAR_INSURANCE","VEHICLE_REGISTRATION_FRONT","VEHICLE_REGISTRATION_BACK","AUTHORIZATION_LETTER_FRONT","AUTHORIZATION_LETTER_BACK"],"description":"Logical file type"},"FileEntity":{"type":"object","properties":{"id":{"type":"string","description":"Unique file identifier (UUID v4)"},"originalName":{"type":"string","description":"Original filename as uploaded"},"storageKey":{"type":"string","description":"Storage path or key in bucket"},"fileType":{"description":"Logical file type","allOf":[{"$ref":"#/components/schemas/FileType"}]},"mimeType":{"type":"string","description":"MIME type of file"},"sizeBytes":{"format":"int64","type":"integer","description":"File size in bytes (serialized bigint)"},"createdAt":{"type":"string","description":"Creation timestamp","format":"date-time","readOnly":true},"updatedAt":{"type":"string","description":"Update timestamp","format":"date-time","readOnly":true}},"required":["id","originalName","storageKey","fileType","mimeType","sizeBytes","createdAt","updatedAt"]},"TokenEntity":{"type":"object","properties":{"id":{"type":"string","description":"Token ID","example":"123e4567-e89b-12d3-a456-426614174000"},"userId":{"type":"string","description":"User ID","example":"123e4567-e89b-12d3-a456-426614174000"},"accessToken":{"type":"string","description":"Access token","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"},"refreshToken":{"type":"string","description":"Refresh token","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"},"fcmToken":{"type":"object","description":"FCM token","example":"fcm-token"},"createdAt":{"format":"date-time","type":"string","description":"Created at","example":"2023-01-01T00:00:00.000Z"},"updatedAt":{"format":"date-time","type":"string","description":"Updated at","example":"2023-01-01T00:00:00.000Z"}},"required":["id","userId","accessToken","refreshToken","fcmToken","createdAt","updatedAt"]},"UserResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the user"},"phoneNumber":{"type":"string","description":"User phone number (unique)"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"email":{"type":"string","description":"User email address (unique)"},"gender":{"type":"string","description":"User gender"},"birthdate":{"format":"date-time","type":"string","description":"User birthdate"},"customRoleName":{"type":"string","description":"Custom role name for the user"},"roleId":{"type":"string","description":"Role ID associated with the user"},"verificationStatus":{"type":"string","description":"User verification status","example":"Pending","default":"Pending"},"imageId":{"type":"string","description":"Profile image file ID"},"tfaSecret":{"type":"string","description":"Two-factor authentication secret"},"sosNumber":{"type":"string","description":"SOS number"},"secondarySosNumber":{"type":"string","description":"Secondary SOS number"},"profileImage":{"description":"User profile image","allOf":[{"$ref":"#/components/schemas/FileEntity"}]},"tokens":{"description":"User tokens (access, refresh, FCM)","type":"array","items":{"$ref":"#/components/schemas/TokenEntity"}}},"required":["id","phoneNumber","roleId","verificationStatus","tfaSecret"]},"UserResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"UserResponseDto data object","allOf":[{"$ref":"#/components/schemas/UserResponseDto"}]}},"required":["status","data"]},"UpdateUserProfileWithFileDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"User phone number (unique)"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"email":{"type":"string","description":"User email address (unique)"},"gender":{"type":"string","example":"MALE","description":"User gender","enum":["MALE","FEMALE","OTHER"]},"birthdate":{"format":"date-time","type":"string","description":"User birthdate in ISO 8601 format (YYYY-MM-DD)","example":"1990-01-15"},"customRoleName":{"type":"string","description":"Custom role name for the user","example":"Senior Administrator"},"sosNumber":{"type":"string","description":"SOS number"},"secondarySosNumber":{"type":"string","description":"Secondary SOS number"},"profileImage":{"type":"string","format":"binary","description":"Profile image file"}},"required":["phoneNumber"]},"SuccessResponseDto":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"ERROR","description":"Response status indicator"},"message":{"type":"string","description":"Human-readable message describing the operation result"}},"required":["status","message"]},"UpdateFcmTokenDto":{"type":"object","properties":{"fcmToken":{"type":"string","example":"d7hGg5s2xyz...","description":"Firebase Cloud Messaging token"}},"required":["fcmToken"]},"GetUserDto":{"type":"object","properties":{"id":{"type":"string","description":"Filter by user ID"},"phoneNumber":{"type":"string","description":"Filter by phone number"},"firstName":{"type":"string","description":"Filter by first name"},"lastName":{"type":"string","description":"Filter by last name"},"email":{"type":"string","description":"Filter by email address"},"gender":{"type":"string","description":"Filter by gender","example":"FEMALE","enum":["MALE","FEMALE","OTHER"]},"roleId":{"type":"string","description":"Filter by role ID"},"verificationStatus":{"type":"string","description":"Filter by verification status","example":"PENDING","enum":["PENDING","APPROVED","REJECTED","BLOCKED","NEEDS_VERIFICATION","SUSPENDED","DISABLED"]}}},"PagingMeta":{"type":"object","properties":{"total":{"type":"number","example":100,"description":"Total number of items across all pages"},"lastPage":{"type":"number","example":10,"description":"Last page number"},"currentPage":{"type":"number","example":1,"description":"Current page number"},"perPage":{"type":"number","example":10,"description":"Number of items per page"},"prev":{"type":"object","example":null,"nullable":true,"description":"Previous page number (null if on first page)"},"next":{"type":"object","example":2,"nullable":true,"description":"Next page number (null if on last page)"}},"required":["total","lastPage","currentPage","perPage"]},"PagingDataResponseDto":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of data items","type":"array","items":{"type":"array"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"PermissionEntity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the permission"},"name":{"type":"string","description":"Permission name (unique)"},"description":{"type":"string","description":"Permission description"},"createdAt":{"format":"date-time","type":"string","description":"Permission creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"Permission last update timestamp"}},"required":["id","name","description","createdAt","updatedAt"]},"RoleEntity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the role"},"name":{"type":"string","description":"Role name (unique)"},"createdAt":{"format":"date-time","type":"string","description":"Role creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"Role last update timestamp"},"permissions":{"description":"Role permissions","nullable":true,"type":"array","items":{"$ref":"#/components/schemas/PermissionEntity"}}},"required":["id","name","createdAt","updatedAt","permissions"]},"UserGrantedPermissionEntity":{"type":"object","properties":{"userId":{"type":"string","description":"User ID"},"permissionId":{"type":"string","description":"Permission ID"},"grantedBy":{"type":"object","description":"ID of admin who granted this permission","nullable":true},"expiresAt":{"type":"object","description":"Expiration timestamp for this permission","nullable":true},"createdAt":{"format":"date-time","type":"string","description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"Last update timestamp"},"permission":{"description":"Permission details","allOf":[{"$ref":"#/components/schemas/PermissionEntity"}]}},"required":["userId","permissionId","grantedBy","expiresAt","createdAt","updatedAt"]},"FullUserResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the user"},"phoneNumber":{"type":"string","description":"User phone number (unique)"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"email":{"type":"string","description":"User email address (unique)"},"gender":{"type":"string","description":"User gender"},"birthdate":{"format":"date-time","type":"string","description":"User birthdate"},"customRoleName":{"type":"string","description":"Custom role name for the user"},"roleId":{"type":"string","description":"Role ID associated with the user"},"verificationStatus":{"type":"string","description":"User verification status","example":"Pending","default":"Pending"},"imageId":{"type":"string","description":"Profile image file ID"},"tfaSecret":{"type":"string","description":"Two-factor authentication secret"},"sosNumber":{"type":"string","description":"SOS number"},"secondarySosNumber":{"type":"string","description":"Secondary SOS number"},"createdAt":{"format":"date-time","type":"string","description":"User creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"User last update timestamp"},"role":{"description":"User role","allOf":[{"$ref":"#/components/schemas/RoleEntity"}]},"profileImage":{"description":"User profile image","allOf":[{"$ref":"#/components/schemas/FileEntity"}]},"userGrantedPermissions":{"description":"User granted permissions","type":"array","items":{"$ref":"#/components/schemas/UserGrantedPermissionEntity"}},"tokens":{"description":"User tokens (access, refresh, FCM)","type":"array","items":{"$ref":"#/components/schemas/TokenEntity"}}},"required":["id","phoneNumber","roleId","verificationStatus","tfaSecret","createdAt","updatedAt"]},"FullUserResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of FullUserResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/FullUserResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"FullUserResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"FullUserResponseDto data object","allOf":[{"$ref":"#/components/schemas/FullUserResponseDto"}]}},"required":["status","data"]},"UpdateUserDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"User phone number (unique)"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"email":{"type":"string","description":"User email address (unique)"},"gender":{"type":"string","example":"MALE","description":"User gender","enum":["MALE","FEMALE","OTHER"]},"birthdate":{"format":"date-time","type":"string","description":"User birthdate in ISO 8601 format (YYYY-MM-DD)","example":"1990-01-15"},"customRoleName":{"type":"string","description":"Custom role name for the user","example":"Senior Administrator"},"roleId":{"type":"string","description":"Role ID associated with the user"},"verificationStatus":{"type":"string","description":"User verification status","example":"PENDING","enum":["PENDING","APPROVED","REJECTED","BLOCKED","NEEDS_VERIFICATION","SUSPENDED","DISABLED"]},"sosNumber":{"type":"string","description":"SOS number"},"secondarySosNumber":{"type":"string","description":"Secondary SOS number"}}},"DataArrayResponseDto":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"The data payload","type":"array","items":{"type":"string"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"UserBatchResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the user"},"phoneNumber":{"type":"string","description":"User phone number (unique)"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"email":{"type":"string","description":"User email address (unique)"},"gender":{"type":"string","description":"User gender"},"birthdate":{"format":"date-time","type":"string","description":"User birthdate"},"customRoleName":{"type":"string","description":"Custom role name for the user"},"roleId":{"type":"string","description":"Role ID associated with the user"},"verificationStatus":{"type":"string","description":"User verification status","example":"Pending","default":"Pending"},"imageId":{"type":"string","description":"Profile image file ID"},"tfaSecret":{"type":"string","description":"Two-factor authentication secret"},"sosNumber":{"type":"string","description":"SOS number"},"secondarySosNumber":{"type":"string","description":"Secondary SOS number"},"profileImage":{"description":"User profile image","allOf":[{"$ref":"#/components/schemas/FileEntity"}]},"tokens":{"description":"User tokens (access, refresh, FCM)","type":"array","items":{"$ref":"#/components/schemas/TokenEntity"}},"fcmTokens":{"description":"List of FCM tokens for push notifications (one per device)","example":["fcm-token-abc123","fcm-token-def456","fcm-token-ghi789"],"type":"array","items":{"type":"string"}}},"required":["id","phoneNumber","roleId","verificationStatus","tfaSecret","fcmTokens"]},"UserBatchResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of UserBatchResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/UserBatchResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"RoleResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the role"},"name":{"type":"string","description":"Role name (unique)"},"permissions":{"description":"Role permissions","nullable":true,"type":"array","items":{"$ref":"#/components/schemas/PermissionEntity"}}},"required":["id","name","permissions"]},"RoleResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of RoleResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/RoleResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"RoleResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"RoleResponseDto data object","allOf":[{"$ref":"#/components/schemas/RoleResponseDto"}]}},"required":["status","data"]},"MsTokenRequestDto":{"type":"object","properties":{"client_id":{"type":"string","description":"The unique client ID of the microservice","example":"550e8400-e29b-41d4-a716-446655440000"},"client_secret":{"type":"string","description":"The client secret for authentication","example":"d8cea3725d6795685f7e92c1ccb3fd92042ddea1935325b9886fafc3ba632f16"}},"required":["client_id","client_secret"]},"MsTokenResponseDto":{"type":"object","properties":{"access_token":{"type":"string","description":"JWT access token for microservice authentication","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}},"required":["access_token"]},"MsTokenResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"MsTokenResponseDto data object","allOf":[{"$ref":"#/components/schemas/MsTokenResponseDto"}]}},"required":["status","data"]},"TokenBatchResponseDto":{"type":"object","properties":{"userId":{"type":"string","description":"User UUID","example":"123e4567-e89b-12d3-a456-426614174000"},"fcmTokens":{"description":"Array of FCM tokens for this user","example":["fcm-token-1","fcm-token-2"],"type":"array","items":{"type":"string"}}},"required":["userId","fcmTokens"]},"TokenBatchResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of TokenBatchResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/TokenBatchResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"RegisterDriverProfileDto":{"type":"object","properties":{"licenseNumber":{"type":"string","description":"Unique license number"},"nationalNumber":{"type":"string","description":"Unique national number"},"visibleName":{"type":"string","description":"Visible name"},"driverType":{"type":"string","enum":["CLASSIC","COMFORT","VIP","TAXI","WOMAN","VAN"],"example":"TAXI","description":"Driver type — defaults to region config if not provided"},"driverTier":{"type":"string","enum":["BASIC","BRONZE","SILVER","GOLD"],"example":"BASIC","description":"Driver tier — defaults to region config if not provided"}},"required":["licenseNumber","nationalNumber","visibleName"]},"RegisterDriverVehicleDto":{"type":"object","properties":{"make":{"type":"string","example":"Honda","description":"Vehicle manufacturer (English)"},"makeAr":{"type":"string","example":"هوندا","description":"Vehicle manufacturer (Arabic)"},"model":{"type":"string","example":"Civic","description":"Vehicle model (English)"},"modelAr":{"type":"string","example":"سيفيك","description":"Vehicle model (Arabic)"},"vehicleType":{"type":"string","example":"SEDAN","description":"Vehicle type (e.g. SEDAN, 4x4, SUV, TRUCK)","enum":["SEDAN","FOUR_X_FOUR","SUV","TRUCK"]},"color":{"type":"string","example":"Blue","description":"Vehicle color (English)"},"colorAr":{"type":"string","example":"أزرق","description":"Vehicle color (Arabic)"},"licensePlate":{"type":"string","example":"ABC-123","description":"Unique license plate number"},"seatsCount":{"type":"number","example":4,"description":"Number of seats"},"plateCity":{"type":"string","example":"DAMASCUS","description":"Plate city","enum":["DAMASCUS","RIF_DIMASHQ","ALEPPO","HOMS","HAMA","LATTAKIA","TARTOUS","IDLIB","DARAA","AS_SUWAYDA","DEIR_EZZOR","RAQQA","AL_HASAKAH","QUNEITRA","ARIANA","BEN_AROUS","MANOUBA","NABEUL","ZAGHOUAN","BIZERTE","BEJA","JENDOUBA","KEF","SILIANA","SOUSSE","MONASTIR","MAHDIA","SFAX","KAIROUAN","KASSERINE","SIDI_BOUZID","GABES","MEDENINE","TATAOUNINE","GAFSA","TOZEUR","KEBILI"]},"makeYear":{"type":"number","example":2018,"description":"Manufacturing year"}},"required":["make","makeAr","model","modelAr","vehicleType","color","colorAr","licensePlate","seatsCount","plateCity","makeYear"]},"SelfRegisterDriverDto":{"type":"object","properties":{"driverProfile":{"$ref":"#/components/schemas/RegisterDriverProfileDto"},"vehicle":{"$ref":"#/components/schemas/RegisterDriverVehicleDto"},"workImage":{"type":"string","format":"binary","description":"Work image file"},"frontImage":{"type":"string","format":"binary","description":"Vehicle front image file"},"peripheralImage":{"type":"string","format":"binary","description":"Vehicle peripheral image file"}},"required":["driverProfile","vehicle"]},"DriverProfileSlimResponseDto":{"type":"object","properties":{"userId":{"type":"string","description":"User id (also primary key)"},"vehicleId":{"type":"string","description":"Vehicle id (unique)"},"licenseNumber":{"type":"string","description":"Unique driver license number"},"nationalNumber":{"type":"string","description":"Unique national number"},"workImageId":{"type":"object","description":"Work image file id (optional, unique)"},"visibleName":{"type":"string","description":"Visible driver name"},"driverType":{"type":"string","description":"Driver type, e.g. CLASSIC, COMFORT, VIP, TAXI, WOMAN, VAN"},"driverTier":{"type":"string","description":"Driver tier","example":"Basic"},"isEnabled":{"type":"boolean","description":"Is driver profile enabled","example":true},"workImage":{"description":"Driver work image","allOf":[{"$ref":"#/components/schemas/FileEntity"}]}},"required":["userId","vehicleId","licenseNumber","nationalNumber","visibleName","driverType","driverTier","isEnabled"]},"VehicleFileEntity":{"type":"object","properties":{"id":{"type":"string","description":"Vehicle file ID","example":"123e4567-e89b-12d3-a456-426614174000"},"vehicleId":{"type":"string","description":"Vehicle ID","example":"123e4567-e89b-12d3-a456-426614174000"},"fileId":{"type":"string","description":"File ID","example":"123e4567-e89b-12d3-a456-426614174000"},"file":{"description":"File details","allOf":[{"$ref":"#/components/schemas/FileEntity"}]},"createdAt":{"format":"date-time","type":"string","description":"Creation timestamp","example":"2024-01-01T00:00:00.000Z"},"updatedAt":{"format":"date-time","type":"string","description":"Last update timestamp","example":"2024-01-01T00:00:00.000Z"}},"required":["id","vehicleId","fileId","createdAt","updatedAt"]},"VehicleResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"a3b5f0e9-8d7f-4a6a-9c89-0c3f77f2cabc","description":"Unique identifier for the vehicle"},"make":{"type":"string","example":"Honda","description":"Vehicle manufacturer (English)"},"makeAr":{"type":"string","example":"هوندا","description":"Vehicle manufacturer (Arabic)"},"model":{"type":"string","example":"Civic","description":"Vehicle model (English)"},"modelAr":{"type":"string","example":"سيفيك","description":"Vehicle model (Arabic)"},"vehicleType":{"type":"string","example":"SEDAN","description":"Vehicle type (e.g. SEDAN, FOUR_X_FOUR, SUV, TRUCK)"},"color":{"type":"string","example":"Blue","description":"Vehicle color (English)"},"colorAr":{"type":"string","example":"أزرق","description":"Vehicle color (Arabic)"},"licensePlate":{"type":"string","example":"ABC-123","description":"Unique license plate number"},"seatsCount":{"type":"number","example":4,"description":"Number of seats"},"plateCity":{"type":"string","example":"DAMASCUS","description":"Plate city (e.g. DAMASCUS, ALEPPO, HOMS...)"},"makeYear":{"type":"number","example":2018,"description":"Manufacturing year"},"frontImageId":{"type":"string","example":"uuid-front-image","description":"Optional file id for front image"},"peripheralImageId":{"type":"string","example":"uuid-peripheral-image","description":"Optional file id for peripheral image"},"vehicleFiles":{"description":"Vehicle files","type":"array","items":{"$ref":"#/components/schemas/VehicleFileEntity"}}},"required":["id","make","makeAr","model","modelAr","vehicleType","color","colorAr","licensePlate","seatsCount","plateCity","makeYear"]},"RegisterDriverResponseDto":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/UserResponseDto"},"driverProfile":{"$ref":"#/components/schemas/DriverProfileSlimResponseDto"},"vehicle":{"$ref":"#/components/schemas/VehicleResponseDto"}},"required":["user","driverProfile","vehicle"]},"RegisterDriverResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"RegisterDriverResponseDto data object","allOf":[{"$ref":"#/components/schemas/RegisterDriverResponseDto"}]}},"required":["status","data"]},"VehicleEntity":{"type":"object","properties":{"id":{"type":"string","example":"a3b5f0e9-8d7f-4a6a-9c89-0c3f77f2cabc","description":"Unique identifier for the vehicle"},"make":{"type":"string","example":"Honda","description":"Vehicle manufacturer (English)"},"makeAr":{"type":"string","example":"هوندا","description":"Vehicle manufacturer (Arabic)"},"model":{"type":"string","example":"Civic","description":"Vehicle model (English)"},"modelAr":{"type":"string","example":"سيفيك","description":"Vehicle model (Arabic)"},"vehicleType":{"type":"string","example":"SEDAN","description":"Vehicle type (e.g. SEDAN, FOUR_X_FOUR, SUV, TRUCK)"},"color":{"type":"string","example":"Blue","description":"Vehicle color (English)"},"colorAr":{"type":"string","example":"أزرق","description":"Vehicle color (Arabic)"},"licensePlate":{"type":"string","example":"ABC-123","description":"Unique license plate number"},"seatsCount":{"type":"number","example":4,"description":"Number of seats"},"plateCity":{"type":"string","example":"DAMASCUS","description":"Plate city (e.g. DAMASCUS, ALEPPO, HOMS...)"},"makeYear":{"type":"number","example":2018,"description":"Manufacturing year"},"frontImageId":{"type":"string","example":"uuid-front-image","description":"Optional file id for front image"},"peripheralImageId":{"type":"string","example":"uuid-peripheral-image","description":"Optional file id for peripheral image"},"createdAt":{"format":"date-time","type":"string","example":"2025-09-06T12:00:00Z","description":"Creation date of the vehicle"},"updatedAt":{"format":"date-time","type":"string","example":"2025-09-06T12:30:00Z","description":"Last update date of the vehicle"},"vehicleFiles":{"description":"Vehicle files","type":"array","items":{"$ref":"#/components/schemas/VehicleFileEntity"}}},"required":["id","make","makeAr","model","modelAr","vehicleType","color","colorAr","licensePlate","seatsCount","plateCity","makeYear","createdAt","updatedAt"]},"DriverProfileResponseDto":{"type":"object","properties":{"userId":{"type":"string","description":"User id (also primary key)"},"vehicleId":{"type":"string","description":"Vehicle id (unique)"},"licenseNumber":{"type":"string","description":"Unique driver license number"},"nationalNumber":{"type":"string","description":"Unique national number"},"workImageId":{"type":"object","description":"Work image file id (optional, unique)"},"visibleName":{"type":"string","description":"Visible driver name"},"driverType":{"type":"string","description":"Driver type, e.g. CLASSIC, COMFORT, VIP, TAXI, WOMAN, VAN"},"driverTier":{"type":"string","description":"Driver tier","example":"Basic"},"isEnabled":{"type":"boolean","description":"Is driver profile enabled","example":true},"workImage":{"description":"Driver work image","allOf":[{"$ref":"#/components/schemas/FileEntity"}]},"vehicle":{"description":"Associated vehicle","allOf":[{"$ref":"#/components/schemas/VehicleEntity"}]},"user":{"description":"Associated user","allOf":[{"$ref":"#/components/schemas/UserResponseDto"}]}},"required":["userId","vehicleId","licenseNumber","nationalNumber","visibleName","driverType","driverTier","isEnabled","vehicle","user"]},"DriverProfileResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"DriverProfileResponseDto data object","allOf":[{"$ref":"#/components/schemas/DriverProfileResponseDto"}]}},"required":["status","data"]},"RegisterDriverUserDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"User phone number (unique)"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"email":{"type":"string","description":"User email address (unique)"},"gender":{"type":"string","example":"MALE","description":"User gender","enum":["MALE","FEMALE","OTHER"]},"birthdate":{"format":"date-time","type":"string","description":"User birthdate in ISO 8601 format (YYYY-MM-DD)","example":"1990-01-15"},"customRoleName":{"type":"string","description":"Custom role name for the user","example":"Senior Administrator"},"sosNumber":{"type":"string","description":"SOS number"},"secondarySosNumber":{"type":"string","description":"Secondary SOS number"}},"required":["phoneNumber"]},"RegisterDriverDto":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/RegisterDriverUserDto"},"driverProfile":{"$ref":"#/components/schemas/RegisterDriverProfileDto"},"vehicle":{"$ref":"#/components/schemas/RegisterDriverVehicleDto"},"workImage":{"type":"string","format":"binary","description":"Work image file"},"frontImage":{"type":"string","format":"binary","description":"Vehicle front image file"},"peripheralImage":{"type":"string","format":"binary","description":"Vehicle peripheral image file"}},"required":["user","driverProfile","vehicle"]},"DriverProfileResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of DriverProfileResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/DriverProfileResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateDriverProfileDto":{"type":"object","properties":{"licenseNumber":{"type":"string","description":"Unique license number"},"nationalNumber":{"type":"string","description":"Unique national number"},"visibleName":{"type":"string","description":"Visible name"},"driverType":{"type":"string","enum":["CLASSIC","COMFORT","VIP","TAXI","WOMAN","VAN"],"example":"CLASSIC","description":"Driver type"},"driverTier":{"type":"string","enum":["BASIC","BRONZE","SILVER","GOLD"],"example":"BASIC","description":"Driver tier"}}},"UpdateDriverProfileVehicleDto":{"type":"object","properties":{"make":{"type":"string","example":"Honda","description":"Vehicle manufacturer (English)"},"makeAr":{"type":"string","example":"هوندا","description":"Vehicle manufacturer (Arabic)"},"model":{"type":"string","example":"Civic","description":"Vehicle model (English)"},"modelAr":{"type":"string","example":"سيفيك","description":"Vehicle model (Arabic)"},"vehicleType":{"type":"string","example":"SEDAN","description":"Vehicle type (e.g. SEDAN, 4x4, SUV, TRUCK)","enum":["SEDAN","FOUR_X_FOUR","SUV","TRUCK"]},"color":{"type":"string","example":"Blue","description":"Vehicle color (English)"},"colorAr":{"type":"string","example":"أزرق","description":"Vehicle color (Arabic)"},"licensePlate":{"type":"string","example":"ABC-123","description":"Unique license plate number"},"seatsCount":{"type":"number","example":4,"description":"Number of seats"},"plateCity":{"type":"string","example":"DAMASCUS","description":"Plate city","enum":["DAMASCUS","RIF_DIMASHQ","ALEPPO","HOMS","HAMA","LATTAKIA","TARTOUS","IDLIB","DARAA","AS_SUWAYDA","DEIR_EZZOR","RAQQA","AL_HASAKAH","QUNEITRA","ARIANA","BEN_AROUS","MANOUBA","NABEUL","ZAGHOUAN","BIZERTE","BEJA","JENDOUBA","KEF","SILIANA","SOUSSE","MONASTIR","MAHDIA","SFAX","KAIROUAN","KASSERINE","SIDI_BOUZID","GABES","MEDENINE","TATAOUNINE","GAFSA","TOZEUR","KEBILI"]},"makeYear":{"type":"number","example":2018,"description":"Manufacturing year"}}},"UpdateDriverProfileWithFileDto":{"type":"object","properties":{"driverProfile":{"$ref":"#/components/schemas/UpdateDriverProfileDto"},"vehicle":{"$ref":"#/components/schemas/UpdateDriverProfileVehicleDto"},"workImage":{"type":"string","format":"binary","description":"Work image file"},"frontImage":{"type":"string","format":"binary","description":"Vehicle front image file"},"peripheralImage":{"type":"string","format":"binary","description":"Vehicle peripheral image file"}}},"DriverProfileBatchResponseDto":{"type":"object","properties":{"userId":{"type":"string","description":"User id (also primary key)"},"vehicleId":{"type":"string","description":"Vehicle id (unique)"},"licenseNumber":{"type":"string","description":"Unique driver license number"},"nationalNumber":{"type":"string","description":"Unique national number"},"workImageId":{"type":"object","description":"Work image file id (optional, unique)"},"visibleName":{"type":"string","description":"Visible driver name"},"driverType":{"type":"string","description":"Driver type, e.g. CLASSIC, COMFORT, VIP, TAXI, WOMAN, VAN"},"driverTier":{"type":"string","description":"Driver tier","example":"Basic"},"isEnabled":{"type":"boolean","description":"Is driver profile enabled","example":true},"workImage":{"description":"Driver work image","allOf":[{"$ref":"#/components/schemas/FileEntity"}]},"vehicle":{"description":"Associated vehicle","allOf":[{"$ref":"#/components/schemas/VehicleEntity"}]},"user":{"description":"Associated user with FCM tokens","allOf":[{"$ref":"#/components/schemas/UserBatchResponseDto"}]}},"required":["userId","vehicleId","licenseNumber","nationalNumber","visibleName","driverType","driverTier","isEnabled","vehicle","user"]},"DriverProfileBatchResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of DriverProfileBatchResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/DriverProfileBatchResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"VehicleResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"VehicleResponseDto data object","allOf":[{"$ref":"#/components/schemas/VehicleResponseDto"}]}},"required":["status","data"]},"VehicleResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of VehicleResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/VehicleResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"CreateUserConfigurationDto":{"type":"object","properties":{"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Unique configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether this configuration is enabled","default":true},"value":{"type":"string","example":"5","description":"Configuration value as string (nullable)"}},"required":["name","isEnabled"]},"UserConfigurationResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique ID of the trip bidding configuration"},"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether the configuration is enabled"},"value":{"type":"object","example":"5","description":"Value of the configuration (string)","nullable":true}},"required":["id","name","isEnabled","value"]},"UserConfigurationResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"UserConfigurationResponseDto data object","allOf":[{"$ref":"#/components/schemas/UserConfigurationResponseDto"}]}},"required":["status","data"]},"UserConfigurationResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of UserConfigurationResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/UserConfigurationResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateUserConfigurationDto":{"type":"object","properties":{"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Unique configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether this configuration is enabled","default":true},"value":{"type":"string","example":"5","description":"Configuration value as string (nullable)"}}},"PhoneNumberLoginDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"User phone number","example":"+963937339374"},"providerId":{"type":"string","description":"Provider ID","example":"123e4567-e89b-12d3-a456-426614174000"}},"required":["phoneNumber"]},"PhoneNumberLoginResponseDto":{"type":"object","properties":{"message":{"type":"string","description":"Success message"},"retryAfterMinutes":{"type":"number","description":"Minutes to wait before requesting another OTP","example":5},"isNewUser":{"type":"boolean","description":"Indicates if the user is new","example":true}},"required":["message","retryAfterMinutes","isNewUser"]},"PhoneNumberLoginResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"PhoneNumberLoginResponseDto data object","allOf":[{"$ref":"#/components/schemas/PhoneNumberLoginResponseDto"}]}},"required":["status","data"]},"VerifyPhoneNumberOtpDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"User phone number","example":"+963937339374"},"otp":{"type":"string","description":"OTP code","example":"555555"},"loggedInAs":{"type":"string","description":"loggedInAs role","example":"PASSENGER","enum":["PASSENGER","DRIVER","ADMIN","BOOTH_OPERATOR","KYC_OPERATOR","SUPER_ADMIN","USER_MS","TRIP_MS","TRIP_BID_MS","PAYMENT_MS","LOCATION_QUERY_MS","LOCATION_PERSISTENCE_MS","LOCATION_INGESTION_MS","NOTIFICATIONS_MS","KYC_MS","GATEWAY_MS","REFERENCE_MS","LOGGING_MS"]},"fcmToken":{"type":"string","description":"FCM token for push notifications","example":"fcm-token-1234567890"}},"required":["phoneNumber","otp"]},"AuthResponseDto":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/UserResponseDto"},"accessToken":{"type":"string","description":"JWT access token"},"refreshToken":{"type":"string","description":"JWT refresh token"}},"required":["user","accessToken","refreshToken"]},"AuthResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"AuthResponseDto data object","allOf":[{"$ref":"#/components/schemas/AuthResponseDto"}]}},"required":["status","data"]},"EmailLoginDto":{"type":"object","properties":{"email":{"type":"string","description":"Admin email address","example":"superadmin@carna.com"},"password":{"type":"string","description":"Admin password","example":"aaaassss"}},"required":["email","password"]},"VerifyEmailLoginResponseDto":{"type":"object","properties":{"twoFactorRequired":{"type":"boolean","description":"Indicates if two-factor authentication is required","example":true},"deliveryMethod":{"type":"string","description":"Method used to deliver the OTP (delivered via email)","example":"MAIL","enum":["SMS","MAIL","WHATSAPP"]},"preAuthToken":{"type":"string","description":"Temporary pre-authentication token to verify identity","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjM0NTY3ODkwIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"}},"required":["twoFactorRequired","deliveryMethod","preAuthToken"]},"VerifyEmailLoginResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"VerifyEmailLoginResponseDto data object","allOf":[{"$ref":"#/components/schemas/VerifyEmailLoginResponseDto"}]}},"required":["status","data"]},"VerifyEmailOtpDto":{"type":"object","properties":{"preAuthToken":{"type":"string","description":"Pre-Auth Token","example":"token"},"otp":{"type":"string","description":"OTP Code","example":"123456"}},"required":["preAuthToken","otp"]},"ResetUserPasswordDto":{"type":"object","properties":{"newPassword":{"type":"string","example":"aNewSecureP@ssword!ForJane456","description":"The new password for the user. Must meet system password complexity requirements."}},"required":["newPassword"]},"OtpProviderResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique identifier for the OTP provider"},"name":{"type":"string","example":"Twilio SMS","description":"Unique name of the OTP provider"},"providerType":{"type":"string","example":"SMS","description":"Type of the OTP provider (SMS, MAIL, or whatsapp)"},"isActive":{"type":"boolean","example":true,"description":"Whether the OTP provider is currently active"}},"required":["id","name","providerType","isActive"]},"OtpProviderResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of OtpProviderResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/OtpProviderResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"OtpProviderResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"OtpProviderResponseDto data object","allOf":[{"$ref":"#/components/schemas/OtpProviderResponseDto"}]}},"required":["status","data"]},"CreateAdminUserDto":{"type":"object","properties":{"firstName":{"type":"string","description":"The new admin's first name","example":"Jane"},"lastName":{"type":"string","description":"The new admin's last name","example":"Doe"},"email":{"type":"string","description":"The new admin's email address, which will be their login identifier","example":"jane.doe@psycho.com"},"phoneNumber":{"type":"string","description":"The new admin's contact phone number","example":"+15551234567"},"initialPassword":{"type":"string","description":"A temporary or permanent password for the new admin. Must meet complexity requirements","example":"aVeryStrongInitialP@ssword123","minLength":8},"roleId":{"type":"string","description":"The id of the administrative role to assign (e.g., the ID for the 'ADMIN' or 'KYC_OPERATOR' role)","example":"role-uuid-for-admin"},"customRoleName":{"type":"string","description":"Optional custom role name to display for the user","example":"Senior Administrator"},"birthdate":{"format":"date-time","type":"string","description":"The new admin's birthdate in ISO 8601 format (YYYY-MM-DD)","example":"1990-01-15"}},"required":["firstName","lastName","email","phoneNumber","initialPassword","roleId"]},"AddPermissionDto":{"type":"object","properties":{"permissionId":{"type":"string","description":"Permission UUID to add","example":"permission-uuid-123"},"expiresAt":{"type":"string","description":"Optional expiration date for this permission","nullable":true}},"required":["permissionId"]},"ModifyUserPermissionsDto":{"type":"object","properties":{"addedPermissions":{"description":"List of permissions to add","nullable":true,"type":"array","items":{"$ref":"#/components/schemas/AddPermissionDto"}},"removedPermissionsIds":{"description":"List of permission IDs to remove","nullable":true,"type":"array","items":{"type":"string"}}}},"ChangeRoleToAdminDto":{"type":"object","properties":{"email":{"type":"string","description":"Email for login - required if user does not have an email","example":"admin@example.com"},"password":{"type":"string","description":"New password for login","example":"SecurePassword123!"}},"required":["password"]},"RegisterBoothInfoDto":{"type":"object","properties":{"name":{"type":"string","example":"Beit Al-Wali Booth","description":"Name of the booth"},"locationLatitude":{"type":"number","example":36.2021,"description":"Latitude of the booth location","minimum":-90,"maximum":90},"locationLongitude":{"type":"number","example":37.1344,"description":"Longitude of the booth location","minimum":-180,"maximum":180},"locationDescription":{"type":"string","example":"Near central station, beside the big mall","description":"Description of booth location"},"canCashIn":{"type":"boolean","example":true,"description":"Can booth accept cash-in?"},"canCashOut":{"type":"boolean","example":false,"description":"Can booth accept cash-out?"},"secondaryPhoneNumber":{"type":"string","description":"Optional secondary contact phone number","example":"+15551234567"}},"required":["name","locationLatitude","locationLongitude","locationDescription","canCashIn","canCashOut"]},"switchToDriverDto":{"type":"object","properties":{"driverProfile":{"$ref":"#/components/schemas/RegisterDriverProfileDto"},"vehicle":{"$ref":"#/components/schemas/RegisterDriverVehicleDto"},"workImage":{"type":"string","format":"binary","description":"Work image file"},"frontImage":{"type":"string","format":"binary","description":"Vehicle front image file"},"peripheralImage":{"type":"string","format":"binary","description":"Vehicle peripheral image file"}},"required":["driverProfile","vehicle"]},"ChangeRoleToKycOperatorDto":{"type":"object","properties":{"email":{"type":"string","description":"Email for login - required if user does not have an email","example":"kyc@example.com"},"password":{"type":"string","description":"New password for login","example":"SecurePassword123!"}},"required":["password"]},"BoothResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"a3b5f0e9-8d7f-4a6a-9c89-0c3f77f2cabc","description":"Unique identifier for the booth"},"name":{"type":"string","example":"Beit Al-Wali Booth","description":"Name of the booth"},"locationLatitude":{"type":"number","example":33.5138,"description":"Latitude of the booth location"},"locationLongitude":{"type":"number","example":36.2765,"description":"Longitude of the booth location"},"operatorUserId":{"type":"string","example":"uuid-of-user","description":"Operator user id assigned to this booth"},"locationDescription":{"type":"string","example":"Mazzeh","description":"description of location"},"canCashIn":{"type":"boolean","example":true,"description":"Whether the booth can handle cash-in transactions"},"canCashOut":{"type":"boolean","example":false,"description":"Whether the booth can handle cash-out transactions"},"secondaryPhoneNumber":{"type":"string","description":"secondary contact phone number","nullable":true},"isEnabled":{"type":"boolean","example":true,"description":"Whether the booth is enabled"}},"required":["id","name","locationLatitude","locationLongitude","operatorUserId","locationDescription","canCashIn","canCashOut","isEnabled"]},"BoothResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"BoothResponseDto data object","allOf":[{"$ref":"#/components/schemas/BoothResponseDto"}]}},"required":["status","data"]},"RegisterBoothOperatorDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"User phone number (unique)"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"email":{"type":"string","description":"User email address (unique)"},"gender":{"type":"string","example":"MALE","description":"User gender","enum":["MALE","FEMALE","OTHER"]},"birthdate":{"format":"date-time","type":"string","description":"User birthdate in ISO 8601 format (YYYY-MM-DD)","example":"1990-01-15"},"customRoleName":{"type":"string","description":"Custom role name for the user","example":"Senior Administrator"},"sosNumber":{"type":"string","description":"SOS number"},"secondarySosNumber":{"type":"string","description":"Secondary SOS number"}},"required":["phoneNumber"]},"RegisterBoothDto":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/RegisterBoothOperatorDto"},"booth":{"$ref":"#/components/schemas/RegisterBoothInfoDto"}},"required":["user","booth"]},"RegisterBoothResponseDto":{"type":"object","properties":{"user":{"$ref":"#/components/schemas/UserResponseDto"},"booth":{"$ref":"#/components/schemas/BoothResponseDto"}},"required":["user","booth"]},"RegisterBoothResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"RegisterBoothResponseDto data object","allOf":[{"$ref":"#/components/schemas/RegisterBoothResponseDto"}]}},"required":["status","data"]},"UpdateBoothDto":{"type":"object","properties":{"name":{"type":"string","example":"Beit Al-Wali Booth","description":"Name of the booth"},"locationLatitude":{"type":"number","example":36.2021,"description":"Latitude of the booth location","minimum":-90,"maximum":90},"locationLongitude":{"type":"number","example":37.1344,"description":"Longitude of the booth location","minimum":-180,"maximum":180},"operatorUserId":{"type":"string","example":"a3b5f0e9-8d7f-4a6a-9c89-0c3f77f2cabc","description":"Operator user id (UUID)"},"locationDescription":{"type":"string","example":"Near central station, beside the big mall","description":"Description of booth location"},"canCashIn":{"type":"boolean","example":true,"description":"Can booth accept cash-in?"},"canCashOut":{"type":"boolean","example":false,"description":"Can booth accept cash-out?"},"secondaryPhoneNumber":{"type":"string","description":"Optional secondary contact phone number","example":"+15551234567"},"isEnabled":{"type":"boolean","example":true,"description":"Whether the booth is enabled"}}},"BoothResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of BoothResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/BoothResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"RoleChangeHistoryResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"a3b5f0e9-8d7f-4a6a-9c89-0c3f77f2cabc","description":"Unique identifier for the role change history record"},"userId":{"type":"string","example":"b4c6g1f0-9e8g-5b7b-0d90-1d4g88g3dbcd","description":"The target user whose role was changed"},"actorId":{"type":"string","example":"c5d7h2g1-0f9h-6c8c-1e01-2e5h99h4ecde","description":"The admin/actor who performed the role change","nullable":true},"oldRoleId":{"type":"string","example":"d6e8i3h2-1g0i-7d9d-2f12-3f6i00i5fdef","description":"The previous role ID"},"newRoleId":{"type":"string","example":"e7f9j4i3-2h1j-8e0e-3g23-4g7j11j6gfeg","description":"The new role ID"},"changeReason":{"type":"string","example":"Promoted to manager position","description":"Reason for the role change","nullable":true},"createdAt":{"format":"date-time","type":"string","example":"2025-01-18T12:00:00Z","description":"Creation date of the role change record"}},"required":["id","userId","oldRoleId","newRoleId","createdAt"]},"RoleChangeHistoryResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of RoleChangeHistoryResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/RoleChangeHistoryResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"RoleChangeHistoryResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"RoleChangeHistoryResponseDto data object","allOf":[{"$ref":"#/components/schemas/RoleChangeHistoryResponseDto"}]}},"required":["status","data"]},"CreateSosEventDto":{"type":"object","properties":{"latitude":{"type":"number","description":"Latitude at the time of trigger","example":36.2021,"minimum":-90,"maximum":90},"longitude":{"type":"number","description":"Longitude at the time of trigger","example":36.2021,"minimum":-180,"maximum":180},"triggeredAt":{"format":"date-time","type":"string","description":"Timestamp user triggered SOS","example":"2025-10-01T12:30:00Z"}},"required":["latitude","longitude","triggeredAt"]},"DriverProfileEntity":{"type":"object","properties":{"userId":{"type":"string","description":"User id (also primary key)"},"vehicleId":{"type":"string","description":"Vehicle id (unique)"},"licenseNumber":{"type":"string","description":"Unique driver license number"},"nationalNumber":{"type":"string","description":"Unique national number"},"workImageId":{"type":"object","description":"Work image file id (optional, unique)"},"visibleName":{"type":"string","description":"Visible driver name"},"driverType":{"type":"string","description":"Driver type, e.g. CLASSIC, COMFORT, VIP, TAXI, WOMAN, VAN"},"driverTier":{"type":"string","description":"Driver tier","example":"Basic"},"isEnabled":{"type":"boolean","description":"Is driver profile enabled","example":true},"createdAt":{"format":"date-time","type":"string","description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"Last update timestamp"},"workImage":{"description":"Driver work image","allOf":[{"$ref":"#/components/schemas/FileEntity"}]},"vehicle":{"description":"Associated vehicle","allOf":[{"$ref":"#/components/schemas/VehicleEntity"}]},"user":{"description":"Associated user","allOf":[{"$ref":"#/components/schemas/UserEntity"}]}},"required":["userId","vehicleId","licenseNumber","nationalNumber","visibleName","driverType","driverTier","isEnabled","createdAt","updatedAt","vehicle","user"]},"UserEntity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the user"},"phoneNumber":{"type":"string","description":"User phone number (unique)"},"firstName":{"type":"string","description":"User first name"},"lastName":{"type":"string","description":"User last name"},"email":{"type":"string","description":"User email address (unique)"},"gender":{"type":"string","description":"User gender"},"birthdate":{"format":"date-time","type":"string","description":"User birthdate"},"customRoleName":{"type":"string","description":"Custom role name for the user"},"roleId":{"type":"string","description":"Role ID associated with the user"},"verificationStatus":{"type":"string","description":"User verification status","example":"Pending","default":"Pending"},"imageId":{"type":"string","description":"Profile image file ID"},"tfaSecret":{"type":"string","description":"Two-factor authentication secret"},"sosNumber":{"type":"string","description":"SOS number"},"secondarySosNumber":{"type":"string","description":"Secondary SOS number"},"createdAt":{"format":"date-time","type":"string","description":"User creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"User last update timestamp"},"role":{"description":"User role","allOf":[{"$ref":"#/components/schemas/RoleEntity"}]},"profileImage":{"description":"User profile image","allOf":[{"$ref":"#/components/schemas/FileEntity"}]},"driverProfile":{"description":"Driver profile if user is a driver","allOf":[{"$ref":"#/components/schemas/DriverProfileEntity"}]},"userGrantedPermissions":{"description":"User granted permissions","type":"array","items":{"$ref":"#/components/schemas/UserGrantedPermissionEntity"}},"tokens":{"description":"User tokens (access, refresh, FCM)","type":"array","items":{"$ref":"#/components/schemas/TokenEntity"}}},"required":["id","phoneNumber","roleId","verificationStatus","tfaSecret","createdAt","updatedAt"]},"SosEventResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the event"},"userId":{"type":"string","description":"UUID of user who triggered SOS"},"latitude":{"type":"object","description":"Latitude at the time of trigger"},"longitude":{"type":"object","description":"Longitude at the time of trigger"},"status":{"type":"string","description":"Status of SOS event"},"triggeredAt":{"format":"date-time","type":"string","description":"Exact timestamp event was initiated"},"resolvedAt":{"type":"object","description":"Timestamp when event marked resolved or false alarm"},"resolvedByUserId":{"type":"object","description":"User UUID of the admin who resolved the event"},"resolutionNotes":{"type":"object","description":"Notes entered by the resolving admin"},"user":{"description":"User who triggered SOS","allOf":[{"$ref":"#/components/schemas/UserEntity"}]},"resolvedByUser":{"description":"Admin user who resolved the event","allOf":[{"$ref":"#/components/schemas/UserEntity"}]}},"required":["id","userId","status","triggeredAt","user"]},"SosEventResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"SosEventResponseDto data object","allOf":[{"$ref":"#/components/schemas/SosEventResponseDto"}]}},"required":["status","data"]},"SosEventResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of SosEventResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/SosEventResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateSosStatusDto":{"type":"object","properties":{"status":{"type":"string","example":"ACTIVE","description":"The SOS Event Status","enum":["ACTIVE","ACKNOWLEDGED","RESOLVED","FALSE_ALARM"]},"resolutionNotes":{"type":"string","description":"Resolution notes to store, if any"}},"required":["status"]},"AnalysisPeriodDto":{"type":"object","properties":{"start":{"type":"string","description":"Start date of the analysis period","example":"2025-01-01"},"end":{"type":"string","description":"End date of the analysis period","example":"2025-01-31"}},"required":["start","end"]},"AnalysisResponseDto":{"type":"object","properties":{"count":{"type":"number","description":"Total count for the specified criteria","example":1540},"period":{"description":"Analysis period (only included if startDate and endDate are provided)","allOf":[{"$ref":"#/components/schemas/AnalysisPeriodDto"}]}},"required":["count"]},"AnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"AnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/AnalysisResponseDto"}]}},"required":["status","data"]},"GeoPoint":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude","example":40.73061},"long":{"type":"number","description":"Longitude","example":-73.935242}},"required":["lat","long"]},"TripResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trip"},"bidId":{"type":"string","description":"Bid ID associated with this trip"},"passengerId":{"type":"string","description":"Passenger user ID"},"driverId":{"type":"string","description":"Driver user ID"},"driverType":{"type":"string","description":"Driver type"},"tripStatus":{"type":"string","description":"Current status of the trip","example":"IN_PROGRESS","default":"DRIVER_ON_THE_WAY","enum":["DRIVER_ON_THE_WAY","DRIVER_ARRIVED","IN_PROGRESS","TRIP_COMPLETED","TRIP_CANCELLED","TRIP_PAUSED","PAYMENT_FAILED"]},"pickupCoordinates":{"description":"Pickup location coordinates (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"dropoffCoordinates":{"description":"Dropoff location coordinates (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"initialDriverCoordinates":{"description":"Initial driver location coordinates when trip started (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"agreedFare":{"type":"number","description":"Agreed fare amount for the trip","example":25.5},"currentFee":{"type":"number","description":"Current fee accumulated during the trip","example":0,"default":0},"finalFee":{"type":"number","description":"Final fee charged for the trip","example":28.75},"paymentGatewayId":{"type":"string","description":"Payment gateway ID used for this trip"},"passengerPaymentId":{"type":"string","description":"Passenger payment method ID"},"currencyCode":{"type":"string","description":"Currency code for the trip fare","example":"USD"},"encodedPolyline":{"type":"string","description":"Encoded polyline representing the trip route"},"actualDistanceMeters":{"type":"number","description":"Actual distance traveled in meters","example":5000},"estimatedDurationSeconds":{"type":"number","description":"Estimated duration of the trip in seconds","example":900},"estimatedDistanceMeters":{"type":"number","description":"Estimated distance of the trip in meters","example":900},"lastKnownLocation":{"description":"Last known location of the driver during the trip (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"pickupAddress":{"type":"object","description":"Pickup address of the trip","example":"123 Main St, Anytown, USA"},"dropoffAddress":{"type":"object","description":"Dropoff address of the trip","example":"456 Elm St, Anytown, USA"},"staticPriceRuleId":{"type":"object","description":"Static price rule ID for the trip","example":"1234567890"},"countyId":{"type":"object","description":"County UUID for the trip"},"driverToPickupPolyline":{"type":"object","description":"Polyline of the driver to pickup location"},"driverToPickupDistanceMeters":{"type":"object","description":"Distance from driver to pickup location in meters","example":100},"driverToPickupDurationSeconds":{"type":"object","description":"Duration from driver to pickup location in seconds","example":300},"createdAt":{"format":"date-time","type":"string","description":"Trip creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"Trip last update timestamp"},"completedAt":{"format":"date-time","type":"string","description":"Trip completion timestamp"}},"required":["id","bidId","passengerId","driverId","driverType","tripStatus","pickupCoordinates","dropoffCoordinates","initialDriverCoordinates","agreedFare","currentFee","paymentGatewayId","currencyCode","encodedPolyline","actualDistanceMeters","estimatedDurationSeconds","estimatedDistanceMeters","createdAt","updatedAt"]},"TripResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TripResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripResponseDto"}]}},"required":["status","data"]},"TripResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of TripResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/TripResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"ActiveDriverResponseDto":{"type":"object","properties":{"driverId":{"type":"string","description":"Driver ID"},"passengerId":{"type":"string","description":"Passenger ID"},"lastKnownLocation":{"description":"Last known location of the driver during the trip (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]}},"required":["driverId","passengerId"]},"ActiveDriverResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of ActiveDriverResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/ActiveDriverResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"CalculateCancellationFeeDto":{"type":"object","properties":{"tripId":{"type":"string","description":"The ID of the trip to calculate cancellation fee for","example":"123e4567-e89b-12d3-a456-426614174000"}},"required":["tripId"]},"CancellationFeeResponseDto":{"type":"object","properties":{"cancellationFeeToken":{"type":"string","description":"JWT encoded cancellation data","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."}},"required":["cancellationFeeToken"]},"CancellationFeeResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CancellationFeeResponseDto data object","allOf":[{"$ref":"#/components/schemas/CancellationFeeResponseDto"}]}},"required":["status","data"]},"CancelTripDto":{"type":"object","properties":{"cancellationFeeToken":{"type":"string","description":"JWT token containing cancellation fee details from /calculateCancellationFee","example":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."},"reasonMessage":{"type":"string","description":"Optional reason message for cancellation","example":"Emergency situation"},"reasonCode":{"type":"string","description":"Optional reason code for cancellation (usually static enum from front-end)","example":"CANCEL_AFTER_ARRIVAL"}},"required":["cancellationFeeToken","reasonMessage","reasonCode"]},"UpdateTripStatusDto":{"type":"object","properties":{"newStatus":{"type":"string","description":"The new status to transition to","enum":["DRIVER_ON_THE_WAY","DRIVER_ARRIVED","IN_PROGRESS","TRIP_COMPLETED","TRIP_CANCELLED","TRIP_PAUSED","PAYMENT_FAILED"],"example":"DRIVER_ARRIVED"},"driverCurrentLatitude":{"type":"number","description":"Current driver latitude (nullable)","example":33.5138,"minimum":-90,"maximum":90},"driverCurrentLongitude":{"type":"number","description":"Current driver longitude (nullable)","example":36.2765,"minimum":-180,"maximum":180}},"required":["newStatus"]},"UpdatePaymentMethodDto":{"type":"object","properties":{"paymentGatewayId":{"type":"string","description":"Payment gateway ID (e.g., for CASH or card)","example":"pg-uuid-cash"},"userPaymentMethodId":{"type":"object","description":"User payment method ID (null for Cash/Wallet, UUID for card)","example":null,"nullable":true}},"required":["paymentGatewayId"]},"TripResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of TripResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/TripResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"CreateTripConfigurationDto":{"type":"object","properties":{"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Unique configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether this configuration is enabled","default":true},"value":{"type":"string","example":"5","description":"Configuration value as string (nullable)"}},"required":["name","isEnabled"]},"TripConfigurationResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique ID of the trip bidding configuration"},"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether the configuration is enabled"},"value":{"type":"object","example":"5","description":"Value of the configuration (string)","nullable":true}},"required":["id","name","isEnabled","value"]},"TripConfigurationResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TripConfigurationResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripConfigurationResponseDto"}]}},"required":["status","data"]},"TripConfigurationResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of TripConfigurationResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/TripConfigurationResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateTripConfigurationDto":{"type":"object","properties":{"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Unique configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether this configuration is enabled","default":true},"value":{"type":"string","example":"5","description":"Configuration value as string (nullable)"}}},"DriverStatsDailyResponseDto":{"type":"object","properties":{"driverId":{"type":"string","description":"Driver ID"},"date":{"format":"date-time","type":"string","description":"Date for the statistics"},"tripCount":{"type":"number","description":"Total number of trips completed on this date","example":15},"totalDistMeters":{"type":"number","description":"Total distance traveled in meters on this date","example":50000},"totalTimeSeconds":{"type":"number","description":"Total time spent on trips in seconds on this date","example":18000}},"required":["driverId","date","tripCount","totalDistMeters","totalTimeSeconds"]},"DriverStatsDailyResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"DriverStatsDailyResponseDto data object","allOf":[{"$ref":"#/components/schemas/DriverStatsDailyResponseDto"}]}},"required":["status","data"]},"TripEntity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trip"},"bidId":{"type":"string","description":"Bid ID associated with this trip"},"passengerId":{"type":"string","description":"Passenger user ID"},"driverId":{"type":"string","description":"Driver user ID"},"driverType":{"type":"string","description":"Driver type"},"tripStatus":{"type":"string","description":"Current status of the trip","example":"IN_PROGRESS","default":"DRIVER_ON_THE_WAY","enum":["DRIVER_ON_THE_WAY","DRIVER_ARRIVED","IN_PROGRESS","TRIP_COMPLETED","TRIP_CANCELLED","TRIP_PAUSED","PAYMENT_FAILED"]},"pickupCoordinates":{"description":"Pickup location coordinates (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"dropoffCoordinates":{"description":"Dropoff location coordinates (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"initialDriverCoordinates":{"description":"Initial driver location coordinates when trip started (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"agreedFare":{"type":"number","description":"Agreed fare amount for the trip","example":25.5},"currentFee":{"type":"number","description":"Current fee accumulated during the trip","example":0,"default":0},"finalFee":{"type":"number","description":"Final fee charged for the trip","example":28.75},"paymentGatewayId":{"type":"string","description":"Payment gateway ID used for this trip"},"passengerPaymentId":{"type":"string","description":"Passenger payment method ID"},"currencyCode":{"type":"string","description":"Currency code for the trip fare","example":"USD"},"encodedPolyline":{"type":"string","description":"Encoded polyline representing the trip route"},"actualDistanceMeters":{"type":"number","description":"Actual distance traveled in meters","example":5000},"estimatedDurationSeconds":{"type":"number","description":"Estimated duration of the trip in seconds","example":900},"estimatedDistanceMeters":{"type":"number","description":"Estimated distance of the trip in meters","example":900},"lastKnownLocation":{"description":"Last known location of the driver during the trip (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"pickupAddress":{"type":"object","description":"Pickup address of the trip","example":"123 Main St, Anytown, USA"},"dropoffAddress":{"type":"object","description":"Dropoff address of the trip","example":"456 Elm St, Anytown, USA"},"staticPriceRuleId":{"type":"object","description":"Static price rule ID for the trip","example":"1234567890"},"countyId":{"type":"object","description":"County UUID for the trip"},"driverToPickupPolyline":{"type":"object","description":"Polyline of the driver to pickup location"},"driverToPickupDistanceMeters":{"type":"object","description":"Distance from driver to pickup location in meters","example":100},"driverToPickupDurationSeconds":{"type":"object","description":"Duration from driver to pickup location in seconds","example":300},"createdAt":{"format":"date-time","type":"string","description":"Trip creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"Trip last update timestamp"},"completedAt":{"format":"date-time","type":"string","description":"Trip completion timestamp"}},"required":["id","bidId","passengerId","driverId","driverType","tripStatus","pickupCoordinates","dropoffCoordinates","initialDriverCoordinates","agreedFare","currentFee","paymentGatewayId","currencyCode","encodedPolyline","actualDistanceMeters","estimatedDurationSeconds","estimatedDistanceMeters","createdAt","updatedAt"]},"TripFrequencyResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the trip frequency record"},"tripId":{"type":"string","description":"Trip ID associated with this frequency record"},"userId":{"type":"string","description":"User ID for whom this trip is frequent"},"pickupCoordinates":{"description":"Pickup location coordinates (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"dropoffCoordinates":{"description":"Dropoff location coordinates (GeoJSON Point format)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"count":{"type":"number","description":"Number of times this trip route has been taken","example":5},"trip":{"description":"The associated trip","allOf":[{"$ref":"#/components/schemas/TripEntity"}]}},"required":["id","tripId","userId","pickupCoordinates","dropoffCoordinates","count","trip"]},"TripFrequencyResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of TripFrequencyResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/TripFrequencyResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"CreateSavedPlaceDto":{"type":"object","properties":{"latitude":{"type":"number","description":"Latitude coordinate of the saved place","example":40.73061,"minimum":-90,"maximum":90},"longitude":{"type":"number","description":"Longitude coordinate of the saved place","example":-73.935242,"minimum":-180,"maximum":180},"name":{"type":"string","description":"Custom name for the saved place","example":"Favorite Coffee Shop","default":"place"},"isHome":{"type":"boolean","description":"Mark this location as home address. Only one home location allowed per user.","example":false,"default":false},"isWork":{"type":"boolean","description":"Mark this location as work address. Only one work location allowed per user.","example":false,"default":false}},"required":["latitude","longitude"]},"SavedPlaceResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the saved place"},"userId":{"type":"string","description":"User ID who owns this saved place"},"placeCoordinates":{"description":"Place location coordinates (PostGIS Point)","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"name":{"type":"object","description":"Name of the saved place","example":"Favorite Coffee Shop","default":"place"},"isHome":{"type":"boolean","description":"Whether this is the home location","example":false,"default":false},"isWork":{"type":"boolean","description":"Whether this is the work location","example":false,"default":false}},"required":["id","userId","placeCoordinates","isHome","isWork"]},"SavedPlaceResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"SavedPlaceResponseDto data object","allOf":[{"$ref":"#/components/schemas/SavedPlaceResponseDto"}]}},"required":["status","data"]},"SavedPlaceResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of SavedPlaceResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/SavedPlaceResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateSavedPlaceDto":{"type":"object","properties":{"latitude":{"type":"number","description":"Latitude coordinate of the saved place","example":40.73061,"minimum":-90,"maximum":90},"longitude":{"type":"number","description":"Longitude coordinate of the saved place","example":-73.935242,"minimum":-180,"maximum":180},"name":{"type":"string","description":"Custom name for the saved place","example":"Favorite Coffee Shop","default":"place"},"isHome":{"type":"boolean","description":"Mark this location as home address. Only one home location allowed per user.","example":false,"default":false},"isWork":{"type":"boolean","description":"Mark this location as work address. Only one work location allowed per user.","example":false,"default":false}}},"RateTripDto":{"type":"object","properties":{"userId":{"type":"string","description":"User ID of the passenger or driver rating the trip","example":"123e4567-e89b-12d3-a456-426614174000"},"rate":{"type":"number","description":"Rating value (1-5 stars)","example":5,"minimum":1,"maximum":5},"comment":{"type":"string","description":"Optional comment for the rating","example":"Impressive, very nice, ...Now let's see Paul Allen's trip"}},"required":["userId","rate"]},"RatingStatsResponseDto":{"type":"object","properties":{"userId":{"type":"string","description":"User ID"},"avgRating":{"type":"number","description":"Average rating","example":4.5},"total":{"type":"number","description":"Total number of ratings","example":100},"countStar1":{"type":"number","description":"Count of 1-star ratings","example":5},"countStar2":{"type":"number","description":"Count of 2-star ratings","example":10},"countStar3":{"type":"number","description":"Count of 3-star ratings","example":15},"countStar4":{"type":"number","description":"Count of 4-star ratings","example":30},"countStar5":{"type":"number","description":"Count of 5-star ratings","example":40}},"required":["userId","avgRating","total","countStar1","countStar2","countStar3","countStar4","countStar5"]},"RatingStatsResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"RatingStatsResponseDto data object","allOf":[{"$ref":"#/components/schemas/RatingStatsResponseDto"}]}},"required":["status","data"]},"UpdateAvgRatingDto":{"type":"object","properties":{"avgRating":{"type":"number","description":"New average rating value","example":4.5,"minimum":0,"maximum":5}},"required":["avgRating"]},"RatingStatsResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of RatingStatsResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/RatingStatsResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"DriverActiveHoursAnalysisResponseDto":{"type":"object","properties":{"averageOnTripHours":{"type":"number","example":12.5,"description":"Average active hours per driver"},"period":{"description":"Analysis period","allOf":[{"$ref":"#/components/schemas/AnalysisPeriodDto"}]},"note":{"type":"string","example":"Calculated based on duration of completed trips."}},"required":["averageOnTripHours","period","note"]},"DriverActiveHoursAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"DriverActiveHoursAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/DriverActiveHoursAnalysisResponseDto"}]}},"required":["status","data"]},"DriverTripCountAnalysisResponseDto":{"type":"object","properties":{"driverCount":{"type":"number","example":142},"threshold":{"type":"number","example":10},"period":{"description":"Analysis period","allOf":[{"$ref":"#/components/schemas/AnalysisPeriodDto"}]}},"required":["driverCount","threshold","period"]},"DriverTripCountAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"DriverTripCountAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/DriverTripCountAnalysisResponseDto"}]}},"required":["status","data"]},"DriverDistanceDetail":{"type":"object","properties":{"driverId":{"type":"string","description":"Driver ID","example":"550e8400-e29b-41d4-a716-446655440000"},"totalDistanceMeters":{"type":"number","description":"Total distance traveled by the driver in meters","example":125000}},"required":["driverId","totalDistanceMeters"]},"DriverDistanceAnalysisResponseDto":{"type":"object","properties":{"drivers":{"description":"List of drivers who have traveled at least the specified distance","type":"array","items":{"$ref":"#/components/schemas/DriverDistanceDetail"}},"driverCount":{"type":"number","description":"Number of drivers who qualified","example":42},"minDistanceMeters":{"type":"number","description":"Minimum distance threshold in meters","example":50000},"period":{"description":"Analysis period","allOf":[{"$ref":"#/components/schemas/AnalysisPeriodDto"}]},"notes":{"type":"string","description":"Additional information about the analysis","example":"Based on actual distance traveled in completed trips"}},"required":["drivers","driverCount","minDistanceMeters","period","notes"]},"DriverDistanceAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"DriverDistanceAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/DriverDistanceAnalysisResponseDto"}]}},"required":["status","data"]},"TripAveragePriceItemResponseDto":{"type":"object","properties":{"currency":{"type":"string","example":"USD"},"averagePrice":{"type":"number","example":15.5}},"required":["currency","averagePrice"]},"TripAveragePriceResponseDto":{"type":"object","properties":{"data":{"description":"List of average prices for each currency","type":"array","items":{"$ref":"#/components/schemas/TripAveragePriceItemResponseDto"}},"period":{"description":"Analysis period","allOf":[{"$ref":"#/components/schemas/AnalysisPeriodDto"}]}},"required":["data","period"]},"TripAveragePriceResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TripAveragePriceResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripAveragePriceResponseDto"}]}},"required":["status","data"]},"TripDistanceAnalysisResponseDto":{"type":"object","properties":{"count":{"type":"number","description":"Number of trips below the distance threshold","example":150},"thresholdMeters":{"type":"number","description":"Distance threshold in meters","example":3000},"period":{"description":"Analysis period","allOf":[{"$ref":"#/components/schemas/AnalysisPeriodDto"}]}},"required":["count","thresholdMeters","period"]},"TripDistanceAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TripDistanceAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripDistanceAnalysisResponseDto"}]}},"required":["status","data"]},"TripDurationAnalysisResponseDto":{"type":"object","properties":{"count":{"type":"number","description":"Number of trips below the duration threshold","example":150},"thresholdSeconds":{"type":"number","description":"Applied duration threshold in seconds","example":600},"period":{"description":"Analysis period","allOf":[{"$ref":"#/components/schemas/AnalysisPeriodDto"}]}},"required":["count","thresholdSeconds","period"]},"TripDurationAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TripDurationAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripDurationAnalysisResponseDto"}]}},"required":["status","data"]},"HourCountItemDto":{"type":"object","properties":{"hour":{"type":"number","description":"Hour of day (0-23)","example":18,"minimum":0,"maximum":23},"count":{"type":"number","description":"Number of trips during this hour","example":500}},"required":["hour","count"]},"TripHeatmapHoursResponseDto":{"type":"object","properties":{"data":{"description":"Distribution of trips by hour of day","type":"array","items":{"$ref":"#/components/schemas/HourCountItemDto"}},"period":{"description":"Analysis period","allOf":[{"$ref":"#/components/schemas/AnalysisPeriodDto"}]}},"required":["data","period"]},"TripHeatmapHoursResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TripHeatmapHoursResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripHeatmapHoursResponseDto"}]}},"required":["status","data"]},"PaymentGatewayItemDto":{"type":"object","properties":{"gatewayId":{"type":"string","description":"Payment gateway ID","example":"pg-uuid-cash"},"count":{"type":"number","description":"Number of trips using this payment gateway","example":1500}},"required":["gatewayId","count"]},"TripPaymentGatewayAnalysisResponseDto":{"type":"object","properties":{"gateways":{"description":"List of payment gateways with their usage counts","type":"array","items":{"$ref":"#/components/schemas/PaymentGatewayItemDto"}},"period":{"description":"Analysis period","allOf":[{"$ref":"#/components/schemas/AnalysisPeriodDto"}]}},"required":["gateways","period"]},"TripPaymentGatewayAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TripPaymentGatewayAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripPaymentGatewayAnalysisResponseDto"}]}},"required":["status","data"]},"ValidateCouponDto":{"type":"object","properties":{"code":{"type":"string","example":"WELCOME10","description":"The coupon code to validate"}},"required":["code"]},"CouponResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique identifier for the coupon"},"code":{"type":"string","example":"SUMMER2025","description":"Unique coupon code"},"enabled":{"type":"boolean","example":true,"description":"Whether the coupon is currently enabled"},"type":{"type":"string","example":"FIXED","description":"Type of the coupon (FIXED or PERCENTAGE)"},"discountValue":{"type":"number","example":"50","description":"Discount value (either a fixed amount or a percentage)"},"status":{"type":"string","example":"ACTIVE","description":"Current status of the coupon (ACTIVE, EXPIRED, USED, DISABLED, PENDING, LIMITED)"},"startDate":{"format":"date-time","type":"string","example":"2025-06-01T00:00:00Z","description":"The date when the coupon becomes valid"},"expiryDate":{"format":"date-time","type":"string","example":"2025-12-31T23:59:59Z","description":"The date when the coupon expires"},"usageLimit":{"type":"number","example":100,"description":"Maximum number of times this coupon can be used (nullable)","nullable":true},"userUsageLimit":{"type":"number","example":1,"description":"Maximum number of times a single user can use this coupon"},"usageCount":{"type":"number","example":25,"description":"Number of times this coupon has been used"}},"required":["id","code","enabled","type","discountValue","status","startDate","expiryDate","usageLimit","userUsageLimit","usageCount"]},"CouponResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"CouponResponseDto data object","allOf":[{"$ref":"#/components/schemas/CouponResponseDto"}]}},"required":["status","data"]},"CreateCouponDto":{"type":"object","properties":{"code":{"type":"string","example":"WELCOME10","description":"Unique coupon code that customers will use at checkout"},"enabled":{"type":"boolean","example":true,"description":"Whether the coupon is currently enabled or disabled","default":true},"type":{"type":"string","example":"FIXED","description":"Type of the coupon: fixed amount or percentage discount","enum":["FIXED","PERCENTAGE"]},"discountValue":{"type":"number","example":50,"description":"Discount value (either a fixed amount or a percentage)"},"status":{"type":"string","example":"ACTIVE","description":"Current status of the coupon: ACTIVE, EXPIRED, USED, DISABLED, PENDING, or LIMITED","default":"ACTIVE","enum":["ACTIVE","EXPIRED","USED","DISABLED","PENDING","LIMITED"]},"startDate":{"format":"date-time","type":"string","example":"2025-09-01T00:00:00.000Z","description":"Start date when the coupon becomes valid"},"expiryDate":{"format":"date-time","type":"string","example":"2025-12-31T23:59:59.000Z","description":"Expiry date when the coupon is no longer valid"},"usageLimit":{"type":"number","example":100,"description":"Maximum number of times this coupon can be used. Optional — if not provided, coupon has no limit."},"userUsageLimit":{"type":"number","example":1,"description":"Maximum number of times a single user can use this coupon","default":1}},"required":["code","enabled","type","discountValue","status","startDate","expiryDate","userUsageLimit"]},"CouponResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"Array of CouponResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/CouponResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateCouponDto":{"type":"object","properties":{"code":{"type":"string","example":"WELCOME10","description":"Unique coupon code that customers will use at checkout"},"enabled":{"type":"boolean","example":true,"description":"Whether the coupon is currently enabled or disabled","default":true},"type":{"type":"string","example":"FIXED","description":"Type of the coupon: fixed amount or percentage discount","enum":["FIXED","PERCENTAGE"]},"discountValue":{"type":"number","example":50,"description":"Discount value (either a fixed amount or a percentage)"},"status":{"type":"string","example":"ACTIVE","description":"Current status of the coupon: ACTIVE, EXPIRED, USED, DISABLED, PENDING, or LIMITED","default":"ACTIVE","enum":["ACTIVE","EXPIRED","USED","DISABLED","PENDING","LIMITED"]},"startDate":{"format":"date-time","type":"string","example":"2025-09-01T00:00:00.000Z","description":"Start date when the coupon becomes valid"},"expiryDate":{"format":"date-time","type":"string","example":"2025-12-31T23:59:59.000Z","description":"Expiry date when the coupon is no longer valid"},"usageLimit":{"type":"number","example":100,"description":"Maximum number of times this coupon can be used. Optional — if not provided, coupon has no limit."},"userUsageLimit":{"type":"number","example":1,"description":"Maximum number of times a single user can use this coupon","default":1}}},"GetCouponUsageDto":{"type":"object","properties":{"couponId":{"type":"string","description":"Filter by coupon ID","example":"550e8400-e29b-41d4-a716-446655440000"},"userId":{"type":"string","description":"Filter by user ID","example":"550e8400-e29b-41d4-a716-446655440000"},"bidId":{"type":"string","description":"Filter by associated bid ID","example":"acde070d-8c4c-4f0d-9d8a-162843c10333"},"tripId":{"type":"string","description":"Filter by associated trip ID","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6"},"minDiscountAmount":{"type":"number","description":"Minimum discount amount","example":10.5},"maxDiscountAmount":{"type":"number","description":"Maximum discount amount","example":50},"startDate":{"format":"date-time","type":"string","description":"Filter usages created after this date","example":"2025-09-01T00:00:00Z"},"endDate":{"format":"date-time","type":"string","description":"Filter usages created before this date","example":"2025-09-15T23:59:59Z"}}},"GetCouponUsageDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"Array of GetCouponUsageDto objects","type":"array","items":{"$ref":"#/components/schemas/GetCouponUsageDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"GetCouponUsageDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"GetCouponUsageDto data object","allOf":[{"$ref":"#/components/schemas/GetCouponUsageDto"}]}},"required":["status","data"]},"UpdateCouponUsageDto":{"type":"object","properties":{"tripId":{"type":"string","example":"ec2846a0-91c6-11f0-8e87-3f2fa233444b","description":"Trip ID to attach to the coupon usage"}},"required":["tripId"]},"CouponEntity":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique identifier for the coupon"},"code":{"type":"string","example":"SUMMER2025","description":"Unique coupon code"},"enabled":{"type":"boolean","example":true,"description":"Whether the coupon is currently enabled"},"type":{"type":"string","example":"FIXED","description":"Type of the coupon (FIXED or PERCENTAGE)"},"discountValue":{"type":"number","example":"50","description":"Discount value (either a fixed amount or a percentage)"},"status":{"type":"string","example":"ACTIVE","description":"Current status of the coupon (ACTIVE, EXPIRED, USED, DISABLED, PENDING, LIMITED)"},"startDate":{"format":"date-time","type":"string","example":"2025-06-01T00:00:00Z","description":"The date when the coupon becomes valid"},"expiryDate":{"format":"date-time","type":"string","example":"2025-12-31T23:59:59Z","description":"The date when the coupon expires"},"usageLimit":{"type":"number","example":100,"description":"Maximum number of times this coupon can be used (nullable)","nullable":true},"userUsageLimit":{"type":"number","example":1,"description":"Maximum number of times a single user can use this coupon"},"usageCount":{"type":"number","example":25,"description":"Number of times this coupon has been used"},"createdAt":{"format":"date-time","type":"string","example":"2025-09-06T12:00:00Z","description":"Date when the coupon was created"},"updatedAt":{"format":"date-time","type":"string","example":"2025-09-06T12:30:00Z","description":"Date when the coupon was last updated"}},"required":["id","code","enabled","type","discountValue","status","startDate","expiryDate","usageLimit","userUsageLimit","usageCount","createdAt","updatedAt"]},"CouponUsageResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique identifier for the coupon usage"},"couponId":{"type":"string","example":"acde070d-8c4c-4f0d-9d8a-162843c10333","description":"Used coupon ID"},"userId":{"type":"string","example":"550e8400-e29b-41d4-a716-446655440000","description":"User ID"},"bidId":{"type":"string","example":"550e8400-e29b-41d4-a716-446655440000","description":"Related bid ID"},"tripId":{"type":"string","example":"ec2846a0-91c6-11f0-8e87-3f2fa233444b","description":"Related trip ID"},"discountAmount":{"type":"number","example":5000.5,"description":"Discount amount applied"},"coupon":{"description":"Associated coupon","allOf":[{"$ref":"#/components/schemas/CouponEntity"}]}},"required":["id","couponId","userId","discountAmount"]},"CouponUsageResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"CouponUsageResponseDto data object","allOf":[{"$ref":"#/components/schemas/CouponUsageResponseDto"}]}},"required":["status","data"]},"EligibleDriver":{"type":"object","properties":{"driverId":{"type":"string","example":"driver-uuid-1"},"latitude":{"type":"number","example":10.123456},"longitude":{"type":"number","example":20.654321},"currentPrice":{"type":"object","example":150.5,"description":"Current price of the bid (nullable)","nullable":true}},"required":["driverId","latitude","longitude","currentPrice"]},"TripBidResponseDto":{"type":"object","properties":{"bidId":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique identifier for the bid"},"passengerId":{"type":"string","example":"a12b3c4d-56ef-78gh-90ij-klmnopqrstuv","description":"The ID of the passenger who requested the ride"},"bidStatus":{"type":"string","example":"SEARCHING","description":"Current status of the bid"},"pickupLatitude":{"type":"number","example":33.512345,"description":"Passenger pickup latitude"},"pickupLongitude":{"type":"number","example":36.312345,"description":"Passenger pickup longitude"},"destinationLatitude":{"type":"number","example":33.623456,"description":"Passenger drop-off latitude"},"destinationLongitude":{"type":"number","example":36.423456,"description":"Passenger drop-off longitude"},"pickupAddress":{"type":"object","description":"Human-readable pickup location address provided by the passenger","example":"King Fahd Road, Al Olaya District, Riyadh, Saudi Arabia"},"destinationAddress":{"type":"object","description":"Human-readable drop-off location address where the passenger wants to be dropped","example":"Dubai Mall, Downtown Dubai, United Arab Emirates"},"winnerDriverId":{"type":"object","example":"b21c3d4e-67fg-89hi-01jk-lmnopqrstuvw","description":"Driver who won the bid (nullable)","nullable":true},"winnerDriverStartLatitude":{"type":"object","example":33.512345,"description":"Driver start latitude upon acceptance (nullable)","nullable":true},"winnerDriverStartLongitude":{"type":"object","example":36.312345,"description":"Driver start longitude upon acceptance (nullable)","nullable":true},"eligibleDrivers":{"example":[{"driverId":"driver-uuid-1","latitude":10.123456,"longitude":20.654321},{"driverId":"driver-uuid-2","latitude":11.123456,"longitude":21.654321}],"description":"Array of drivers offered this bid, with coordinates (stored as JSON in Redis)","nullable":true,"type":"array","items":{"$ref":"#/components/schemas/EligibleDriver"}},"encodedPolyline":{"type":"string","example":"encoded_polyline_string_here","description":"Route from Google Route API, encoded"},"counterCount":{"type":"number","example":2,"description":"Number of times this bid has been countered"},"estimatedDurationSeconds":{"type":"number","example":1200,"description":"Estimated duration in seconds from route API"},"estimatedDistanceMeters":{"type":"number","example":3200,"description":"Estimated distance in meters from route API"},"paymentGatewayId":{"type":"string","example":"d12f3e4b-56gh-78ij-90kl-mnopqrstuvwx","description":"Payment gateway ID used by passenger"},"passengerPaymentMethodId":{"type":"string","example":"d12f3e4b-56gh-78ij-90kl-mnopqrstuvwx","description":"Payment method ID used by passenger"},"currencyCode":{"type":"string","example":"SYP","description":"Currency code"},"initialPrice":{"type":"number","example":150.5,"description":"Initial price of the bid"},"minimumAllowedPrice":{"type":"number","example":120,"description":"Minimum allowed price for this bid"},"maximumAllowedPrice":{"type":"number","example":200,"description":"Maximum allowed price for this bid"},"isStaticPrice":{"type":"boolean","example":false,"description":"Is static price"},"staticPriceId":{"type":"object","example":"d12f3e4b-56gh-78ij-90kl-mnopqrstuvwx","description":"Static price ID"},"staticPrice":{"type":"object","example":150.5,"description":"Static price"},"staticPriceName":{"type":"object","example":"Static Price Name","description":"Static price name"},"driverType":{"type":"string","example":"CLASSIC","description":"Driver type chosen for this bid"},"countyId":{"type":"object","example":"d12f3e4b-56gh-78ij-90kl-mnopqrstuvwx","description":"County UUID"},"bidJwtData":{"type":"string","example":"d12f3e4b-56gh-78ij-90kl-mnopqrstuvwx","description":"JWT token for bid that holds data"},"expiresAt":{"format":"date-time","type":"string","example":"2025-09-20T12:00:00Z","description":"Bid expiration timestamp"}},"required":["bidId","passengerId","bidStatus","pickupLatitude","pickupLongitude","destinationLatitude","destinationLongitude","pickupAddress","destinationAddress","winnerDriverId","winnerDriverStartLatitude","winnerDriverStartLongitude","eligibleDrivers","encodedPolyline","counterCount","estimatedDurationSeconds","estimatedDistanceMeters","paymentGatewayId","passengerPaymentMethodId","currencyCode","initialPrice","minimumAllowedPrice","maximumAllowedPrice","isStaticPrice","staticPriceId","staticPrice","staticPriceName","driverType","countyId","bidJwtData","expiresAt"]},"TripBidResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"Array of TripBidResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/TripBidResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"CalculateFeeDto":{"type":"object","properties":{"pickupLatitude":{"type":"number","description":"Pickup latitude","example":33.5138},"pickupLongitude":{"type":"number","description":"Pickup longitude","example":36.2765},"dropoffLatitude":{"type":"number","description":"Dropoff latitude","example":33.521},"dropoffLongitude":{"type":"number","description":"Dropoff longitude","example":36.291},"driverType":{"type":"string","description":"Type of driver (Classic, Comfort, Vip)","enum":["CLASSIC","COMFORT","VIP","WOMAN","TAXI","VAN"],"example":"CLASSIC"},"timestamp":{"format":"date-time","type":"string","description":"Timestamp of the trip request (ISO 8601 format)","example":"2025-10-01T12:30:00Z"},"couponCode":{"type":"string","description":"Coupon code applied to the trip (nullable)","example":"WELCOME50"},"pickupAddress":{"type":"string","description":"Human-readable pickup location address provided by the passenger","example":"King Fahd Road, Al Olaya District, Riyadh, Saudi Arabia"},"destinationAddress":{"type":"string","description":"Human-readable drop-off location address where the passenger wants to be dropped","example":"Dubai Mall, Downtown Dubai, United Arab Emirates"}},"required":["pickupLatitude","pickupLongitude","dropoffLatitude","dropoffLongitude","driverType","timestamp"]},"CalculateFeeResponseDto":{"type":"object","properties":{"bidJwtData":{"type":"string"}},"required":["bidJwtData"]},"CalculateFeeResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"CalculateFeeResponseDto data object","allOf":[{"$ref":"#/components/schemas/CalculateFeeResponseDto"}]}},"required":["status","data"]},"AcceptBidDto":{"type":"object","properties":{"driverId":{"type":"string","example":"driver-uuid-1","description":"The ID of the driver whos bid is accepted"}},"required":["driverId"]},"TripBidResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"TripBidResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripBidResponseDto"}]}},"required":["status","data"]},"SkipBidAsDriverDto":{"type":"object","properties":{"driverId":{"type":"string","example":"driver-uuid-1","description":"The ID of the driver who wants to skip the bid"}},"required":["driverId"]},"SkipBidAsPassengerDto":{"type":"object","properties":{"driverId":{"type":"string","example":"driver-uuid-1","description":"The ID of the driver to be removed from the eligible drivers list"}},"required":["driverId"]},"CounterBidDto":{"type":"object","properties":{"newPrice":{"type":"number","example":22000.5},"driverLat":{"type":"number","example":35.6895},"driverLong":{"type":"number","example":139.6917},"timestamp":{"type":"string","example":"2025-09-22T10:00:00.000Z"}},"required":["newPrice","driverLat","driverLong","timestamp"]},"CreateTripBidDto":{"type":"object","properties":{"paymentGatewayId":{"type":"string","example":"123e4567-e89b-12d3-a456-426614174000","description":"ID of the payment gateway"},"passengerPaymentMethodId":{"type":"string","example":"123e4567-e89b-12d3-a456-426614174000","description":"ID of the passenger payment method"},"chosenPrice":{"type":"number","example":150.5,"description":"Chosen price of the bid"},"bidJwtData":{"type":"string"}},"required":["paymentGatewayId","chosenPrice","bidJwtData"]},"GeoMultiPolygon":{"type":"object","properties":{"type":{"type":"string","description":"GeoJSON type","example":"MultiPolygon"},"coordinates":{"description":"Array of polygon coordinates","example":[[[[33.5138,36.2765],[33.5138,36.3765],[33.6138,36.3765],[33.6138,36.2765],[33.5138,36.2765]]]],"type":"array","items":{"type":"string"}}},"required":["type","coordinates"]},"ServiceCountyEntity":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique identifier for the service county"},"name":{"type":"string","example":"Damascus","description":"Name of the service county"},"boundary":{"description":"Geographic boundary in GeoJSON MultiPolygon format","allOf":[{"$ref":"#/components/schemas/GeoMultiPolygon"}]},"isActive":{"type":"boolean","example":true,"description":"Whether the service county is active"},"createdAt":{"format":"date-time","type":"string","example":"2025-01-15T12:00:00Z","description":"Date when the service county was created"},"updatedAt":{"format":"date-time","type":"string","example":"2025-01-19T12:30:00Z","description":"Date when the service county was last updated"}},"required":["id","name","boundary","isActive","createdAt","updatedAt"]},"TripPricingConfigurationResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique ID of the pricing configuration"},"driverType":{"type":"string","example":"CLASSIC","description":"Driver type"},"countyId":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"County UUID"},"baseFare":{"type":"number","example":"4162.00","description":"Base fare"},"pricePerKm":{"type":"number","example":"2929.00","description":"Price per km"},"pricePerMinute":{"type":"number","example":"347.00","description":"Price per minute"},"minimumFare":{"type":"number","example":"14000.00","description":"Minimum fare"},"county":{"description":"County associated with this pricing configuration","allOf":[{"$ref":"#/components/schemas/ServiceCountyEntity"}]},"startTime":{"type":"string","example":"06:00:00+00:00","description":"Start time (HH:mm:ss+TZ)"},"endTime":{"type":"string","example":"18:00:00+00:00","description":"End time (HH:mm:ss+TZ)"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","driverType","countyId","baseFare","pricePerKm","pricePerMinute","minimumFare","county","startTime","endTime","createdAt","updatedAt"]},"CreateTripPricingConfigurationDto":{"type":"object","properties":{"driverType":{"type":"string","example":"CLASSIC","description":"Type of driver (e.g., Classic, Comfort, Vip)","enum":["CLASSIC","COMFORT","VIP","WOMAN","TAXI","VAN"]},"countyId":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"UUID of the county"},"startTime":{"format":"date-time","type":"string","example":"08:00:00+02:00","description":"Start time for this pricing configuration (HH:mm:ss±HH:mm or HH:mm:ssZ)"},"endTime":{"format":"date-time","type":"string","example":"18:00:00Z","description":"End time for this pricing configuration (HH:mm:ss±HH:mm or HH:mm:ssZ)"},"baseFare":{"type":"number","example":5000,"description":"Base fare applied at the start of the trip"},"pricePerKm":{"type":"number","example":2000,"description":"Fare per kilometer traveled"},"pricePerMinute":{"type":"number","example":4000,"description":"Fare per minute of the trip"},"minimumFare":{"type":"number","example":15000,"description":"Minimum fare regardless of distance or time"}},"required":["driverType","countyId","startTime","endTime","baseFare","pricePerKm","pricePerMinute","minimumFare"]},"TripPricingConfigurationResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"Array of TripPricingConfigurationResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/TripPricingConfigurationResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"TripPricingConfigurationResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"Array of TripPricingConfigurationResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/TripPricingConfigurationResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"TripPricingConfigurationResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"TripPricingConfigurationResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripPricingConfigurationResponseDto"}]}},"required":["status","data"]},"UpdateTripPricingConfigurationDto":{"type":"object","properties":{"driverType":{"type":"string","example":"CLASSIC","description":"Type of driver (e.g., Classic, Comfort, Vip)","enum":["CLASSIC","COMFORT","VIP","WOMAN","TAXI","VAN"]},"countyId":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"UUID of the county"},"startTime":{"format":"date-time","type":"string","example":"08:00:00+02:00","description":"Start time for this pricing configuration (HH:mm:ss±HH:mm or HH:mm:ssZ)"},"endTime":{"format":"date-time","type":"string","example":"18:00:00Z","description":"End time for this pricing configuration (HH:mm:ss±HH:mm or HH:mm:ssZ)"},"baseFare":{"type":"number","example":5000,"description":"Base fare applied at the start of the trip"},"pricePerKm":{"type":"number","example":2000,"description":"Fare per kilometer traveled"},"pricePerMinute":{"type":"number","example":4000,"description":"Fare per minute of the trip"},"minimumFare":{"type":"number","example":15000,"description":"Minimum fare regardless of distance or time"}}},"MessageResponseDto":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"ERROR","description":"Response status indicator"},"message":{"type":"string","description":"Human-readable message describing the operation result"}},"required":["status","message"]},"GeoMultiPolygonInput":{"type":"object","properties":{"type":{"type":"string","description":"GeoJSON type, must be \"MultiPolygon\"","example":"MultiPolygon","enum":["MultiPolygon"]},"coordinates":{"type":"array","description":"Array of polygons, where each polygon is an array of linear rings (first ring is exterior, subsequent rings are holes). Each ring is an array of [longitude, latitude] coordinates.","example":[[[[33.5138,36.2765],[33.5138,36.3765],[33.6138,36.3765],[33.6138,36.2765],[33.5138,36.2765]]]],"items":{"type":"array","items":{"type":"array","items":{"type":"array","items":{"type":"number"}}}}}},"required":["type","coordinates"]},"CreateServiceCountyDto":{"type":"object","properties":{"name":{"type":"string","example":"Damascus","description":"Unique name of the service county"},"boundary":{"description":"Geographic boundary of the county in GeoJSON MultiPolygon format (SRID 4326)","allOf":[{"$ref":"#/components/schemas/GeoMultiPolygonInput"}]},"isActive":{"type":"boolean","example":true,"description":"Whether the service county is currently active","default":true}},"required":["name","boundary","isActive"]},"ServiceCountyResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique identifier for the service county"},"name":{"type":"string","example":"Damascus","description":"Name of the service county"},"boundary":{"description":"Geographic boundary in GeoJSON MultiPolygon format","allOf":[{"$ref":"#/components/schemas/GeoMultiPolygon"}]},"isActive":{"type":"boolean","example":true,"description":"Whether the service county is active"}},"required":["id","name","boundary","isActive"]},"ServiceCountyResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"ServiceCountyResponseDto data object","allOf":[{"$ref":"#/components/schemas/ServiceCountyResponseDto"}]}},"required":["status","data"]},"ServiceCountyResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"Array of ServiceCountyResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/ServiceCountyResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateServiceCountyDto":{"type":"object","properties":{"name":{"type":"string","example":"Damascus","description":"Unique name of the service county"},"boundary":{"description":"Geographic boundary of the county in GeoJSON MultiPolygon format (SRID 4326)","allOf":[{"$ref":"#/components/schemas/GeoMultiPolygonInput"}]},"isActive":{"type":"boolean","example":true,"description":"Whether the service county is currently active","default":true}}},"MessageResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"MessageResponseDto data object","allOf":[{"$ref":"#/components/schemas/MessageResponseDto"}]}},"required":["status","data"]},"CreateTripBiddingConfigurationDto":{"type":"object","properties":{"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Unique configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether this configuration is enabled","default":true},"value":{"type":"string","example":"5","description":"Configuration value as string (nullable)"}},"required":["name","isEnabled"]},"TripBiddingConfigurationResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique ID of the trip bidding configuration"},"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether the configuration is enabled"},"value":{"type":"object","example":"5","description":"Value of the configuration (string)","nullable":true}},"required":["id","name","isEnabled","value"]},"TripBiddingConfigurationResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"TripBiddingConfigurationResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripBiddingConfigurationResponseDto"}]}},"required":["status","data"]},"TripBiddingConfigurationResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"Array of TripBiddingConfigurationResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/TripBiddingConfigurationResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateTripBiddingConfigurationDto":{"type":"object","properties":{"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Unique configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether this configuration is enabled","default":true},"value":{"type":"string","example":"5","description":"Configuration value as string (nullable)"}}},"GeoPointInput":{"type":"object","properties":{"lat":{"type":"number","description":"Latitude","example":40.73061},"long":{"type":"number","description":"Longitude","example":-73.935242}},"required":["lat","long"]},"CreateStaticPricingRuleDto":{"type":"object","properties":{"name":{"type":"string","example":"Airport Flat Rate","description":"Name of the pricing rule"},"centerPoint":{"description":"Center point coordinates of the zone","allOf":[{"$ref":"#/components/schemas/GeoPointInput"}]},"fixedPrice":{"type":"number","example":45.5,"description":"Fixed price to apply for trips in this zone"},"currencyCode":{"type":"string","example":"USD","description":"Currency code (e.g., USD, EUR, GBP)"},"radiusMeters":{"type":"number","example":5000,"description":"Radius around the center point in meters"},"minTripDistanceMeters":{"type":"number","example":0,"description":"Minimum trip distance in meters for the rule to apply","default":0},"applyToPickup":{"type":"boolean","example":true,"description":"Whether the rule applies if pickup is inside the radius","default":false},"applyToDropoff":{"type":"boolean","example":false,"description":"Whether the rule applies if dropoff is inside the radius","default":false},"priority":{"type":"number","example":10,"description":"Priority level - higher priority wins if multiple rules match","default":0},"isActive":{"type":"boolean","example":true,"description":"Whether the pricing rule is currently active","default":true}},"required":["name","centerPoint","fixedPrice","currencyCode","radiusMeters","applyToPickup","applyToDropoff"]},"StaticPricingRuleResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique identifier for the static pricing rule"},"name":{"type":"string","example":"Airport Flat Rate","description":"Name of the pricing rule"},"centerPoint":{"description":"Center point of the zone","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]},"fixedPrice":{"type":"number","example":45.5,"description":"Fixed price to apply for trips in this zone"},"currencyCode":{"type":"string","example":"USD","description":"Currency code for the fixed price"},"radiusMeters":{"type":"number","example":5000,"description":"Radius around the center point in meters"},"minTripDistanceMeters":{"type":"number","example":0,"description":"Minimum trip distance in meters for the rule to apply"},"applyToPickup":{"type":"boolean","example":true,"description":"Whether the rule applies if pickup is inside the radius"},"applyToDropoff":{"type":"boolean","example":false,"description":"Whether the rule applies if dropoff is inside the radius"},"priority":{"type":"number","example":10,"description":"Priority level - higher priority wins if multiple rules match"},"isActive":{"type":"boolean","example":true,"description":"Whether the pricing rule is currently active"}},"required":["id","name","centerPoint","fixedPrice","currencyCode","radiusMeters","minTripDistanceMeters","applyToPickup","applyToDropoff","priority","isActive"]},"StaticPricingRuleResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"StaticPricingRuleResponseDto data object","allOf":[{"$ref":"#/components/schemas/StaticPricingRuleResponseDto"}]}},"required":["status","data"]},"StaticPricingRuleResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"Array of StaticPricingRuleResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/StaticPricingRuleResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateStaticPricingRuleDto":{"type":"object","properties":{"name":{"type":"string","example":"Airport Flat Rate","description":"Name of the pricing rule"},"centerPoint":{"description":"Center point coordinates of the zone","allOf":[{"$ref":"#/components/schemas/GeoPointInput"}]},"fixedPrice":{"type":"number","example":45.5,"description":"Fixed price to apply for trips in this zone"},"currencyCode":{"type":"string","example":"USD","description":"Currency code (e.g., USD, EUR, GBP)"},"radiusMeters":{"type":"number","example":5000,"description":"Radius around the center point in meters"},"minTripDistanceMeters":{"type":"number","example":0,"description":"Minimum trip distance in meters for the rule to apply","default":0},"applyToPickup":{"type":"boolean","example":true,"description":"Whether the rule applies if pickup is inside the radius","default":false},"applyToDropoff":{"type":"boolean","example":false,"description":"Whether the rule applies if dropoff is inside the radius","default":false},"priority":{"type":"number","example":10,"description":"Priority level - higher priority wins if multiple rules match","default":0},"isActive":{"type":"boolean","example":true,"description":"Whether the pricing rule is currently active","default":true}}},"CheckLocationDto":{"type":"object","properties":{"location":{"description":"Location coordinates to check","allOf":[{"$ref":"#/components/schemas/GeoPoint"}]}},"required":["location"]},"CouponUsageItemResponseDto":{"type":"object","properties":{"code":{"type":"string","description":"Coupon code","example":"SUMMER2025"},"usageCount":{"type":"number","description":"Number of times this coupon was used","example":1500},"totalDiscountedValue":{"type":"number","description":"Total discounted amount for this coupon","example":3000000}},"required":["code","usageCount","totalDiscountedValue"]},"CouponUsagesAnalysisResponseDto":{"type":"object","properties":{"period":{"$ref":"#/components/schemas/AnalysisPeriodDto"},"data":{"type":"array","items":{"$ref":"#/components/schemas/CouponUsageItemResponseDto"}}},"required":["period","data"]},"CouponUsagesAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"CouponUsagesAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/CouponUsagesAnalysisResponseDto"}]}},"required":["status","data"]},"TripUsedCouponAnalysisResponseDto":{"type":"object","properties":{"period":{"type":"string","description":"Analysis period description","example":"2025-12-01 (Today)"},"tripsWithCoupons":{"type":"number","description":"Number of trips that used a coupon","example":120},"totalSubsidyCost":{"type":"number","description":"Total subsidy cost caused by coupon discounts","example":240000}},"required":["period","tripsWithCoupons","totalSubsidyCost"]},"TripUsedCouponAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["Success","Error"],"example":"Success","description":"Response status indicator"},"data":{"description":"TripUsedCouponAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripUsedCouponAnalysisResponseDto"}]}},"required":["status","data"]},"NearbyDriverResponseDto":{"type":"object","properties":{"driverId":{"type":"string","description":"Unique identifier of the driver","example":"abc123"},"latitude":{"type":"number","description":"Latitude of the driver location","example":37.1344},"longitude":{"type":"number","description":"Longitude of the driver location","example":36.2021},"driverType":{"type":"object","description":"Type of driver","example":"full-time","nullable":true},"vehicleType":{"type":"object","description":"Type of vehicle","example":"car","nullable":true},"rating":{"type":"object","description":"Driver rating","example":4.5,"nullable":true}},"required":["driverId","latitude","longitude","driverType","vehicleType","rating"]},"DataArrayResponse":{"type":"object","properties":{"status":{"type":"string"},"totalResults":{"type":"number"}},"required":["status","totalResults"]},"AdminNearbyDriverResponseDto":{"type":"object","properties":{"driverId":{"type":"string","description":"Unique identifier of the driver","example":"abc123"},"latitude":{"type":"number","description":"Latitude of the driver location","example":37.1344},"longitude":{"type":"number","description":"Longitude of the driver location","example":36.2021},"driverType":{"type":"string","description":"Type of driver","enum":["CLASSIC","COMFORT","VIP","TAXI","WOMAN","VAN"],"example":"CLASSIC","nullable":true},"vehicleType":{"type":"string","description":"Type of vehicle","enum":["SEDAN","FOUR_X_FOUR","SUV","TRUCK"],"example":"SEDAN","nullable":true},"rating":{"type":"object","description":"Driver rating","example":4.5,"nullable":true}},"required":["driverId","latitude","longitude","driverType","vehicleType","rating"]},"CreateLocationDto":{"type":"object","properties":{"longitude":{"type":"number","example":37.1344,"description":"Longitude of the booth location"},"latitude":{"type":"number","example":36.2021,"description":"Latitude of the booth location"}},"required":["longitude","latitude"]},"CreateCurrencyDto":{"type":"object","properties":{"code":{"type":"string","description":"Currency code","example":"USD"},"name":{"type":"string","description":"Currency name","example":"United States Dollar"},"symbol":{"type":"string","description":"Currency symbol","example":"$"},"decimalPlaces":{"type":"number","description":"Number of decimal places supported by the currency","example":2},"isActive":{"type":"boolean","description":"Whether the currency is active","example":true}},"required":["code","name","symbol","decimalPlaces","isActive"]},"CurrencyResponseDto":{"type":"object","properties":{"code":{"type":"string"},"name":{"type":"string"},"symbol":{"type":"string"},"decimalPlaces":{"type":"number"},"isActive":{"type":"boolean"}},"required":["code","name","symbol","decimalPlaces","isActive"]},"CurrencyResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CurrencyResponseDto data object","allOf":[{"$ref":"#/components/schemas/CurrencyResponseDto"}]}},"required":["status","data"]},"CurrencyResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of CurrencyResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/CurrencyResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"CreatePaymentGatewayRequestDto":{"type":"object","properties":{"providerKey":{"type":"string","description":"Unique provider key for the payment gateway","example":"stripe"},"name":{"type":"string","description":"Display name of the payment gateway","example":"Stripe"},"type":{"type":"string","description":"Gateway type (PHYSICAL or DIGITAL or§ INTERNAL_WALLET)","enum":["PHYSICAL","DIGITAL","INTERNAL_WALLET"],"example":"INTERNAL_WALLET"},"isActive":{"type":"boolean","description":"Whether the payment gateway is active","example":true}},"required":["providerKey","name","type"]},"PaymentGatewayResponseDto":{"type":"object","properties":{"id":{"type":"string"},"providerKey":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"isActive":{"type":"boolean"}},"required":["id","providerKey","name","type","isActive"]},"PaymentGatewayResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"PaymentGatewayResponseDto data object","allOf":[{"$ref":"#/components/schemas/PaymentGatewayResponseDto"}]}},"required":["status","data"]},"UpdatePaymentGatewayRequestDto":{"type":"object","properties":{"providerKey":{"type":"string","description":"Unique provider key for the payment gateway","example":"stripe"},"name":{"type":"string","description":"Display name of the payment gateway","example":"Stripe"},"type":{"type":"string","description":"Gateway type (PHYSICAL or DIGITAL or§ INTERNAL_WALLET)","enum":["PHYSICAL","DIGITAL","INTERNAL_WALLET"],"example":"INTERNAL_WALLET"},"isActive":{"type":"boolean","description":"Whether the payment gateway is active","example":true}}},"PaymentGatewayResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of PaymentGatewayResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/PaymentGatewayResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"PaymentGatewayEntity":{"type":"object","properties":{"id":{"type":"string"},"providerKey":{"type":"string"},"name":{"type":"string"},"type":{"type":"string"},"isActive":{"type":"boolean"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","providerKey","name","type","isActive","createdAt","updatedAt"]},"PaymentIntentResponseDto":{"type":"object","properties":{"id":{"type":"string"},"payerId":{"type":"object"},"tripId":{"type":"object"},"tripBidId":{"type":"object"},"paymentGatewayId":{"type":"string"},"gatewayPaymentIntentId":{"type":"string"},"userPaymentMethodId":{"type":"object"},"amountAuthorized":{"type":"object"},"amountCaptured":{"type":"object"},"currencyCode":{"type":"string"},"status":{"type":"string"},"failureReason":{"type":"object"},"paymentGateway":{"description":"The payment gateway associated with this payment intent.","allOf":[{"$ref":"#/components/schemas/PaymentGatewayEntity"}]}},"required":["id","payerId","tripId","tripBidId","paymentGatewayId","gatewayPaymentIntentId","userPaymentMethodId","amountAuthorized","amountCaptured","currencyCode","status","failureReason"]},"PaymentIntentResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of PaymentIntentResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/PaymentIntentResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"AuthorizePaymentIntentRequestDto":{"type":"object","properties":{"tripId":{"type":"string","description":"Trip ID","example":"trip-uuid-XYZ","nullable":true},"tripBidId":{"type":"string","description":"Trip Bid ID","example":"trip-bid-uuid-XYZ"},"passengerId":{"type":"string","description":"Passenger ID","example":"user-uuid-ABC"},"estimatedAmount":{"type":"number","description":"Estimated amount for the trip","example":30000},"currencyCode":{"type":"string","description":"Currency code","example":"SYP"},"paymentGatewayId":{"type":"string","description":"Payment gateway ID","example":"pg-uuid-stripe"},"userPaymentMethodId":{"type":"string","description":"User payment method ID (internal) - nullable if payment is wallet","example":"pm-uuid-our-internal-id","nullable":true}},"required":["tripId","tripBidId","passengerId","estimatedAmount","currencyCode","paymentGatewayId","userPaymentMethodId"]},"AuthorizePaymentIntentResponseDto":{"type":"object","properties":{"id":{"type":"string"},"tripBidId":{"type":"object"},"gatewayPaymentIntentId":{"type":"string"},"amountAuthorized":{"type":"object"},"currencyCode":{"type":"string"},"status":{"type":"string"},"createdAt":{"format":"date-time","type":"string"}},"required":["id","tripBidId","gatewayPaymentIntentId","amountAuthorized","currencyCode","status","createdAt"]},"AuthorizePaymentIntentResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"AuthorizePaymentIntentResponseDto data object","allOf":[{"$ref":"#/components/schemas/AuthorizePaymentIntentResponseDto"}]}},"required":["status","data"]},"FinancialTransactionResponseDto":{"type":"object","properties":{"id":{"type":"string"},"tripId":{"type":"string","nullable":true},"amount":{"type":"number"},"currencyCode":{"type":"string"},"type":{"type":"string"},"paymentGatewayId":{"type":"string","nullable":true},"subjectId":{"type":"string"},"actorId":{"type":"string","nullable":true},"metadata":{"type":"object","nullable":true}},"required":["id","tripId","amount","currencyCode","type","paymentGatewayId","subjectId","actorId","metadata"]},"FinalizePaymentRequestDto":{"type":"object","properties":{"tripId":{"type":"string"},"passengerId":{"type":"string"},"driverId":{"type":"string"},"finalFee":{"type":"number"},"currencyCode":{"type":"string"},"paymentGatewayId":{"type":"string"},"userPaymentMethodId":{"type":"object"}},"required":["tripId","passengerId","driverId","finalFee","currencyCode","paymentGatewayId"]},"FinancialTransactionResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of FinancialTransactionResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/FinancialTransactionResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"RetryPaymentRequestDto":{"type":"object","properties":{"tripId":{"type":"string"},"passengerId":{"type":"string"},"driverId":{"type":"string"},"amountToCharge":{"type":"number"},"currencyCode":{"type":"string"},"paymentGatewayId":{"type":"string"},"userPaymentMethodId":{"type":"string"}},"required":["tripId","passengerId","driverId","amountToCharge","currencyCode","paymentGatewayId","userPaymentMethodId"]},"PaymentIntentResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"PaymentIntentResponseDto data object","allOf":[{"$ref":"#/components/schemas/PaymentIntentResponseDto"}]}},"required":["status","data"]},"CancelPaymentIntentRequestDto":{"type":"object","properties":{"tripBidId":{"type":"string","description":"Trip Bid ID associated with the payment intent","example":"bid-uuid-123","nullable":true},"tripId":{"type":"string","description":"Trip ID associated with the payment intent","example":"trip-uuid-234","nullable":true}}},"CancelPaymentIntentResponseDto":{"type":"object","properties":{"status":{"type":"string","description":"Current status of the payment intent after cancellation","enum":["AUTHORIZED","CAPTURED","CAPTURED_PENDING","CANCELLED","FAILED"],"example":"CANCELLED"}},"required":["status"]},"CancelPaymentIntentResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CancelPaymentIntentResponseDto data object","allOf":[{"$ref":"#/components/schemas/CancelPaymentIntentResponseDto"}]}},"required":["status","data"]},"FinancialTransactionResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of FinancialTransactionResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/FinancialTransactionResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"FinancialTransactionResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"FinancialTransactionResponseDto data object","allOf":[{"$ref":"#/components/schemas/FinancialTransactionResponseDto"}]}},"required":["status","data"]},"UserGatewayCustomerEntity":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string"},"externalCustomerId":{"type":"string"},"paymentGateway":{"$ref":"#/components/schemas/PaymentGatewayEntity"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","userId","externalCustomerId","paymentGateway","createdAt","updatedAt"]},"UserPaymentMethodResponseDto":{"type":"object","properties":{"id":{"type":"string"},"cardBrand":{"type":"string"},"last4":{"type":"string"},"expiryMonth":{"type":"number"},"expiryYear":{"type":"number"},"status":{"type":"string"},"isDefault":{"type":"boolean"},"userGatewayCustomer":{"$ref":"#/components/schemas/UserGatewayCustomerEntity"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","cardBrand","last4","expiryMonth","expiryYear","status","isDefault","createdAt","updatedAt"]},"UserPaymentMethodResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"UserPaymentMethodResponseDto data object","allOf":[{"$ref":"#/components/schemas/UserPaymentMethodResponseDto"}]}},"required":["status","data"]},"UserPaymentMethodResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of UserPaymentMethodResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/UserPaymentMethodResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"DriverCommissionWalletResponseDto":{"type":"object","properties":{"id":{"type":"string"},"driverId":{"type":"string"},"balance":{"type":"number"},"currencyCode":{"type":"string"},"isEnabled":{"type":"boolean"}},"required":["id","driverId","balance","currencyCode","isEnabled"]},"DriverCommissionWalletResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of DriverCommissionWalletResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/DriverCommissionWalletResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"BatchCheckNegativeBalanceResponseDto":{"type":"object","properties":{"driverUUIDs":{"description":"The UUIDs of the drivers who have a negative balance","example":["uuid-1","uuid-2","uuid-3"],"type":"array","items":{"type":"string"}}},"required":["driverUUIDs"]},"BatchCheckNegativeBalanceResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"BatchCheckNegativeBalanceResponseDto data object","allOf":[{"$ref":"#/components/schemas/BatchCheckNegativeBalanceResponseDto"}]}},"required":["status","data"]},"DriverCommissionWalletResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of DriverCommissionWalletResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/DriverCommissionWalletResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"DriverEarningsAccountResponseDto":{"type":"object","properties":{"id":{"type":"string"},"driverId":{"type":"string"},"balance":{"type":"number"},"currencyCode":{"type":"string"}},"required":["id","driverId","balance","currencyCode"]},"DriverEarningsAccountResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of DriverEarningsAccountResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/DriverEarningsAccountResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"CurrencyEarningsDto":{"type":"object","properties":{"currencyCode":{"type":"string","description":"Currency code","example":"USD"},"driverEarnings":{"type":"number","description":"Driver earnings amount (deposited to earnings account)","example":125.5},"companyCommission":{"type":"number","description":"Company commission amount from completed trips","example":24.5},"totalEarnings":{"type":"number","description":"Total earnings (driver earnings + company commission)","example":150}},"required":["currencyCode","driverEarnings","companyCommission","totalEarnings"]},"TodayEarningsResponseDto":{"type":"object","properties":{"earnings":{"description":"Array of earnings grouped by currency","type":"array","items":{"$ref":"#/components/schemas/CurrencyEarningsDto"}},"date":{"type":"string","description":"Date for which earnings are calculated (ISO 8601 format)","example":"2025-12-27"}},"required":["earnings","date"]},"TodayEarningsResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TodayEarningsResponseDto data object","allOf":[{"$ref":"#/components/schemas/TodayEarningsResponseDto"}]}},"required":["status","data"]},"CreatePaymentConfigurationDto":{"type":"object","properties":{"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Unique configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether this configuration is enabled","default":true},"value":{"type":"string","example":"5","description":"Configuration value as string (nullable)"}},"required":["name","isEnabled"]},"PaymentConfigurationResponseDto":{"type":"object","properties":{"id":{"type":"string","example":"f81d4fae-7dec-11d0-a765-00a0c91e6bf6","description":"Unique ID of the payment bidding configuration"},"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether the configuration is enabled"},"value":{"type":"object","example":"5","description":"Value of the configuration (string)","nullable":true}},"required":["id","name","isEnabled","value"]},"PaymentConfigurationResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"PaymentConfigurationResponseDto data object","allOf":[{"$ref":"#/components/schemas/PaymentConfigurationResponseDto"}]}},"required":["status","data"]},"PaymentConfigurationResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of PaymentConfigurationResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/PaymentConfigurationResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdatePaymentConfigurationDto":{"type":"object","properties":{"name":{"type":"string","example":"MAX_BIDS_PER_DRIVER","description":"Unique configuration name"},"isEnabled":{"type":"boolean","example":true,"description":"Whether this configuration is enabled","default":true},"value":{"type":"string","example":"5","description":"Configuration value as string (nullable)"}}},"CommissionPlanEntity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the commission plan","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the commission plan","example":"New Driver Zero Commission"},"commissionPercentage":{"type":"number","description":"Commission percentage for this plan","example":15},"maxTripCount":{"type":"number","description":"Maximum number of trips allowed under this plan. Null means unlimited.","example":100,"nullable":true},"durationDays":{"type":"number","description":"Duration of the plan in days. Null means unlimited.","example":30,"nullable":true},"isSignupDefault":{"type":"boolean","description":"Whether this plan is the default plan assigned to new drivers at signup","example":false},"isFallbackDefault":{"type":"boolean","description":"Whether this plan is the fallback default when promotional plans expire","example":false},"createdAt":{"format":"date-time","type":"string","description":"Timestamp when the commission plan was created","example":"2024-01-15T10:30:00.000Z"},"updatedAt":{"format":"date-time","type":"string","description":"Timestamp when the commission plan was last updated","example":"2024-01-15T10:30:00.000Z"}},"required":["id","name","commissionPercentage","isSignupDefault","isFallbackDefault","createdAt","updatedAt"]},"DriverActivePlanResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the driver active plan record","example":"123e4567-e89b-12d3-a456-426614174000"},"driverId":{"type":"string","description":"Unique identifier of the driver. Each driver can only have one active plan.","example":"456e7890-e89b-12d3-a456-426614174111"},"planId":{"type":"string","description":"Foreign key reference to the commission plan","example":"789e0123-e89b-12d3-a456-426614174222"},"startDate":{"format":"date-time","type":"string","description":"Timestamp when the plan was assigned to the driver","example":"2024-01-15T10:30:00.000Z"},"tripsProcessedCount":{"type":"number","description":"Number of trips processed under this plan. Increments with each settled trip.","example":25,"default":0},"plan":{"description":"Related commission plan details","allOf":[{"$ref":"#/components/schemas/CommissionPlanEntity"}]}},"required":["id","driverId","planId","startDate","tripsProcessedCount"]},"DriverActivePlanResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of DriverActivePlanResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/DriverActivePlanResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"DriverActivePlanResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"DriverActivePlanResponseDto data object","allOf":[{"$ref":"#/components/schemas/DriverActivePlanResponseDto"}]}},"required":["status","data"]},"CreateDriverActivePlanDto":{"type":"object","properties":{"driverId":{"type":"string","description":"Unique identifier of the driver","example":"456e7890-e89b-12d3-a456-426614174111"},"planId":{"type":"string","description":"Foreign key reference to the commission plan","example":"789e0123-e89b-12d3-a456-426614174222"},"startDate":{"format":"date-time","type":"string","description":"When the plan was assigned to the driver. Defaults to current date if not provided.","example":"2024-01-15T10:30:00.000Z"},"tripsProcessedCount":{"type":"number","description":"Number of trips processed under this plan","example":0,"default":0}},"required":["driverId","planId"]},"SwitchDriverPlanDto":{"type":"object","properties":{"newPlanId":{"type":"string","description":"New commission plan ID to assign to the driver","example":"789e0123-e89b-12d3-a456-426614174222"}},"required":["newPlanId"]},"CommissionPlanResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the commission plan","example":"123e4567-e89b-12d3-a456-426614174000"},"name":{"type":"string","description":"Name of the commission plan","example":"New Driver Zero Commission"},"commissionPercentage":{"type":"number","description":"Commission percentage for this plan","example":15},"maxTripCount":{"type":"number","description":"Maximum number of trips allowed under this plan. Null means unlimited.","example":100,"nullable":true},"durationDays":{"type":"number","description":"Duration of the plan in days. Null means unlimited.","example":30,"nullable":true},"isSignupDefault":{"type":"boolean","description":"Whether this plan is the default plan assigned to new drivers at signup","example":false},"isFallbackDefault":{"type":"boolean","description":"Whether this plan is the fallback default when promotional plans expire","example":false}},"required":["id","name","commissionPercentage","isSignupDefault","isFallbackDefault"]},"CommissionPlanResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of CommissionPlanResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/CommissionPlanResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"CommissionPlanResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CommissionPlanResponseDto data object","allOf":[{"$ref":"#/components/schemas/CommissionPlanResponseDto"}]}},"required":["status","data"]},"CreateCommissionPlanDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the commission plan","example":"New Driver Zero Commission"},"commissionPercentage":{"type":"number","description":"Commission percentage (0.00 to 100.00)","example":15},"maxTripCount":{"type":"object","description":"Maximum number of trips allowed under this plan. Null means unlimited.","example":100,"nullable":true},"durationDays":{"type":"object","description":"Duration of the plan in days. Null means unlimited.","example":30,"nullable":true},"isSignupDefault":{"type":"boolean","description":"Whether this plan is the default plan assigned to new drivers at signup","example":false},"isFallbackDefault":{"type":"boolean","description":"Whether this plan is the fallback default when promotional plans expire","example":false}},"required":["name","commissionPercentage"]},"UpdateCommissionPlanDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the commission plan","example":"New Driver Zero Commission"},"commissionPercentage":{"type":"number","description":"Commission percentage (0.00 to 100.00)","example":15},"maxTripCount":{"type":"object","description":"Maximum number of trips allowed under this plan. Null means unlimited.","example":100,"nullable":true},"durationDays":{"type":"object","description":"Duration of the plan in days. Null means unlimited.","example":30,"nullable":true},"isSignupDefault":{"type":"boolean","description":"Whether this plan is the default plan assigned to new drivers at signup","example":false},"isFallbackDefault":{"type":"boolean","description":"Whether this plan is the fallback default when promotional plans expire","example":false}}},"PayoutRequestResponseDto":{"type":"object","properties":{"id":{"type":"string"},"driverId":{"type":"string"},"amount":{"type":"number"},"currencyCode":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED","COMPLETED"]},"operatorId":{"type":"object"},"method":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","driverId","amount","currencyCode","status","method","createdAt","updatedAt"]},"PayoutRequestResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of PayoutRequestResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/PayoutRequestResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"CreatePayoutRequestDto":{"type":"object","properties":{"amount":{"type":"number","description":"Withdrawal amount","example":50000},"currencyCode":{"type":"string","description":"Currency code","example":"SYP"}},"required":["amount","currencyCode"]},"PayoutRequestResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"PayoutRequestResponseDto data object","allOf":[{"$ref":"#/components/schemas/PayoutRequestResponseDto"}]}},"required":["status","data"]},"UpdatePayoutRequestStatusDto":{"type":"object","properties":{"status":{"type":"string","enum":["APPROVED","REJECTED"],"example":"APPROVED"}},"required":["status"]},"CreateBoothPayoutRequestDto":{"type":"object","properties":{"driverId":{"type":"string","description":"Driver ID requesting the payout","example":"driver-uuid-123"},"amount":{"type":"number","description":"Withdrawal amount","example":50000,"minimum":0.01},"currencyCode":{"type":"string","description":"Currency code","example":"SYP"}},"required":["driverId","amount","currencyCode"]},"BoothPayoutRequestResponseDto":{"type":"object","properties":{"id":{"type":"string"},"driverId":{"type":"string"},"amount":{"type":"number"},"currencyCode":{"type":"string"},"status":{"type":"string","enum":["PENDING","APPROVED","REJECTED","COMPLETED"]},"operatorId":{"type":"object"},"method":{"type":"string"},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"},"boothCommission":{"type":"number","description":"Commission earned by booth operator for this payout","example":500}},"required":["id","driverId","amount","currencyCode","status","method","createdAt","updatedAt","boothCommission"]},"BoothPayoutRequestResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"BoothPayoutRequestResponseDto data object","allOf":[{"$ref":"#/components/schemas/BoothPayoutRequestResponseDto"}]}},"required":["status","data"]},"DepositCommissionWalletDto":{"type":"object","properties":{"driverId":{"type":"string","description":"Driver ID","example":"driver-uuid-1"},"amount":{"type":"number","description":"Amount to deposit","example":200000},"currencyCode":{"type":"string","description":"Currency code","example":"SYP"},"boothId":{"type":"string","description":"Booth ID","example":"booth-uuid-central"}},"required":["driverId","amount","currencyCode","boothId"]},"DepositCommissionWalletResponseDto":{"type":"object","properties":{"driverId":{"type":"string","description":"The ID of the driver who received the deposit","example":"1234567890"},"newWalletBalance":{"type":"number","description":"The new balance of the driver's wallet after the deposit","example":1000000},"boothCommissionEarned":{"type":"number","description":"The commission earned by the booth operator","example":10000},"transactionId":{"type":"string","description":"The ID of the transaction","example":"1234567890"}},"required":["driverId","newWalletBalance","boothCommissionEarned","transactionId"]},"DepositCommissionWalletResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"DepositCommissionWalletResponseDto data object","allOf":[{"$ref":"#/components/schemas/DepositCommissionWalletResponseDto"}]}},"required":["status","data"]},"SettleBoothCashRequestDto":{"type":"object","properties":{"operatorId":{"type":"string","description":"UUID of the Booth Operator whose liability is being settled","example":"user-uuid-booth-operator-1"},"amount":{"type":"number","description":"Amount being settled (must be positive)","example":2000000,"minimum":0.01},"currencyCode":{"type":"string","description":"Currency code for the settlement","example":"SYP","default":"SYP"},"referenceCompanyName":{"type":"string","description":"Name of the company that issued the reference","example":"Bank Bemo BBSF"},"referenceId":{"type":"string","description":"External bank receipt or transaction ID","example":"BANK-TX-998877"},"notes":{"type":"string","description":"Optional notes about the settlement","example":"Weekly cash deposit via Bank Bemo BBSF"}},"required":["operatorId","amount","currencyCode","referenceId"]},"SettleBoothCashResponseDto":{"type":"object","properties":{"operatorId":{"type":"string","description":"UUID of the Booth Operator","example":"user-uuid-booth-operator-1"},"settledAmount":{"type":"number","description":"Amount that was settled","example":2000000},"remainingCashOnHand":{"type":"number","description":"Remaining cash on hand liability after settlement","example":50000},"currencyCode":{"type":"string","description":"Currency code","example":"SYP"},"transactionId":{"type":"string","description":"UUID of the created financial transaction","example":"ft-uuid-ledger-123"}},"required":["operatorId","settledAmount","remainingCashOnHand","currencyCode","transactionId"]},"SettleBoothCashResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"SettleBoothCashResponseDto data object","allOf":[{"$ref":"#/components/schemas/SettleBoothCashResponseDto"}]}},"required":["status","data"]},"BoothOperatorAccountResponseDto":{"type":"object","properties":{"id":{"type":"string"},"operatorId":{"type":"string"},"earningsBalance":{"type":"number"},"cashOnHand":{"type":"number"},"currencyCode":{"type":"string"}},"required":["id","operatorId","earningsBalance","cashOnHand","currencyCode"]},"BoothOperatorAccountResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"BoothOperatorAccountResponseDto data object","allOf":[{"$ref":"#/components/schemas/BoothOperatorAccountResponseDto"}]}},"required":["status","data"]},"BoothOperatorAccountResponseDtoArrayData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of BoothOperatorAccountResponseDto data objects","type":"array","items":{"$ref":"#/components/schemas/BoothOperatorAccountResponseDto"}},"totalResults":{"type":"number"}},"required":["status","data","totalResults"]},"MyBalanceResponseDto":{"type":"object","properties":{"id":{"type":"string"},"userId":{"type":"string","description":"The user ID (can be passengerId, driverId, or operatorId)"},"balance":{"type":"number"},"cashOnHand":{"type":"number","description":"Only for Booth operator accounts, the amount of cash on hand"},"currencyCode":{"type":"string"},"isEnabled":{"type":"boolean","description":"Whether the wallet is enabled (always true for Driver and Booth accounts)"},"roleContext":{"type":"string","description":"The role context of the wallet","enum":["PASSENGER","DRIVER","BOOTH_OPERATOR"]}},"required":["id","userId","balance","currencyCode","isEnabled","roleContext"]},"MyBalanceResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"MyBalanceResponseDto data object","allOf":[{"$ref":"#/components/schemas/MyBalanceResponseDto"}]}},"required":["status","data"]},"TransferFundsRequestDto":{"type":"object","properties":{"sourceAccountType":{"type":"string","description":"Source account type","enum":["DRIVER_EARNINGS","BOOTH_EARNINGS"],"example":"DRIVER_EARNINGS"},"destinationAccountType":{"type":"string","description":"Destination account type (currently only PASSENGER_WALLET)","enum":["PASSENGER_WALLET"],"example":"PASSENGER_WALLET"},"amount":{"type":"number","description":"Amount to transfer","example":30000,"minimum":0.01},"currencyCode":{"type":"string","description":"Currency code","example":"SYP"}},"required":["sourceAccountType","destinationAccountType","amount","currencyCode"]},"TransferFundsResponseDto":{"type":"object","properties":{"sourceBalance":{"type":"number","description":"Remaining balance in the source account after transfer","example":35000},"destinationBalance":{"type":"number","description":"New balance in the destination account after transfer","example":15000},"currencyCode":{"type":"string","description":"Currency code","example":"SYP"}},"required":["sourceBalance","destinationBalance","currencyCode"]},"TransferFundsResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TransferFundsResponseDto data object","allOf":[{"$ref":"#/components/schemas/TransferFundsResponseDto"}]}},"required":["status","data"]},"CompensateUserRequestDto":{"type":"object","properties":{"userId":{"type":"string","description":"UUID of the user receiving compensation","example":"user-uuid-123"},"userType":{"type":"string","description":"Type of user receiving compensation","enum":["DRIVER","BOOTH_OPERATOR","KYC_OPERATOR"],"example":"DRIVER"},"targetAccount":{"type":"string","description":"Target account to credit (COMMISSION only valid for DRIVER)","enum":["EARNINGS","COMMISSION"],"example":"EARNINGS"},"amount":{"type":"number","description":"Amount to compensate (must be positive)","example":5000,"minimum":0.01},"currencyCode":{"type":"string","description":"Currency code for the compensation","example":"SYP"},"reason":{"type":"string","description":"Reason for the compensation (required for audit trail)","example":"Apology for system outage on Nov 25th","maxLength":500}},"required":["userId","userType","targetAccount","amount","currencyCode","reason"]},"CompensateUserResponseDto":{"type":"object","properties":{"userId":{"type":"string","description":"UUID of the compensated user","example":"user-uuid-123"},"newBalance":{"type":"number","description":"New balance after compensation","example":155000},"currencyCode":{"type":"string","description":"Currency code","example":"SYP"},"transactionId":{"type":"string","description":"UUID of the created financial transaction","example":"ft-uuid-ledger-entry-789"}},"required":["userId","newBalance","currencyCode","transactionId"]},"CompensateUserResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CompensateUserResponseDto data object","allOf":[{"$ref":"#/components/schemas/CompensateUserResponseDto"}]}},"required":["status","data"]},"InviteReferralDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"The phone number of the person to invite","example":"+1234567890"},"campaignSlug":{"type":"string","description":"The slug of the campaign to invite the person to","example":"my-campaign"}},"required":["phoneNumber"]},"FinancialSnapshotMetaDto":{"type":"object","properties":{"period":{"type":"string","description":"The period of the report (LIFETIME or RANGE)","example":"LIFETIME"},"asOf":{"type":"string","description":"The timestamp the report was generated at","example":"2025-11-28T18:00:00Z"},"startDate":{"type":"string","description":"The start date of the range (if RANGE period)","example":"2025-10-01T00:00:00Z"},"endDate":{"type":"string","description":"The end date of the range (if RANGE period)","example":"2025-10-31T23:59:59Z"}},"required":["period","asOf"]},"FinancialSnapshotItemDto":{"type":"object","properties":{"currencyCode":{"type":"string","description":"The currency code of the financial snapshot","example":"USD"},"openingBalance":{"type":"number","description":"The opening balance of the financial snapshot","example":1000},"totalRevenue":{"type":"number","description":"The total revenue of the financial snapshot","example":5000},"totalExpenses":{"type":"number","description":"The total expenses of the financial snapshot","example":3000},"netProfit":{"type":"number","description":"The net profit of the financial snapshot","example":2000},"currentBalance":{"type":"number","description":"The current balance of the financial snapshot","example":3000}},"required":["currencyCode","openingBalance","totalRevenue","totalExpenses","netProfit","currentBalance"]},"FinancialSnapshotResponseDto":{"type":"object","properties":{"meta":{"description":"The metadata of the financial snapshot","allOf":[{"$ref":"#/components/schemas/FinancialSnapshotMetaDto"}]},"balances":{"description":"The financial snapshot items","type":"array","items":{"$ref":"#/components/schemas/FinancialSnapshotItemDto"}}},"required":["meta","balances"]},"FinancialSnapshotResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"FinancialSnapshotResponseDto data object","allOf":[{"$ref":"#/components/schemas/FinancialSnapshotResponseDto"}]}},"required":["status","data"]},"EarningsItemDto":{"type":"object","properties":{"currency":{"type":"string","description":"Currency code","example":"SYP"},"totalVolumeGMV":{"type":"number","description":"Total passenger payments (GMV)","example":1000000},"companyRevenue":{"type":"number","description":"Company revenue from trips","example":100000},"driverEarnings":{"type":"number","description":"Driver earnings from trips","example":900000}},"required":["currency","totalVolumeGMV","companyRevenue","driverEarnings"]},"TripEarningsAnalysisResponseDto":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/EarningsItemDto"}}},"required":["data"]},"TripEarningsAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TripEarningsAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/TripEarningsAnalysisResponseDto"}]}},"required":["status","data"]},"DriverEarningsItemDto":{"type":"object","properties":{"currency":{"type":"string","description":"Currency code","example":"SYP"},"amount":{"type":"number","description":"Net earnings of the driver","example":85000000}},"required":["currency","amount"]},"DriverEarningsAnalysisResponseDto":{"type":"object","properties":{"driverId":{"type":"string","description":"Driver ID (or \"all\" if not filtered)","example":"all"},"earnings":{"type":"array","items":{"$ref":"#/components/schemas/DriverEarningsItemDto"}}},"required":["driverId","earnings"]},"DriverEarningsAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"DriverEarningsAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/DriverEarningsAnalysisResponseDto"}]}},"required":["status","data"]},"CompanyEarningsItemDto":{"type":"object","properties":{"currency":{"type":"string","example":"SYP"},"grossRevenue":{"type":"number","example":10000000},"totalExpenses":{"type":"number","example":500000},"netProfit":{"type":"number","example":9500000}},"required":["currency","grossRevenue","totalExpenses","netProfit"]},"CompanyEarningsAnalysisResponseDto":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CompanyEarningsItemDto"}}},"required":["data"]},"CompanyEarningsAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CompanyEarningsAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/CompanyEarningsAnalysisResponseDto"}]}},"required":["status","data"]},"BoothCashItemDto":{"type":"object","properties":{"currency":{"type":"string","example":"SYP"},"amount":{"type":"number","example":1500000}},"required":["currency","amount"]},"BoothCashInHandAnalysisResponseDto":{"type":"object","properties":{"liveCashLiability":{"type":"array","items":{"$ref":"#/components/schemas/BoothCashItemDto"}}},"required":["liveCashLiability"]},"BoothCashInHandAnalysisResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"BoothCashInHandAnalysisResponseDto data object","allOf":[{"$ref":"#/components/schemas/BoothCashInHandAnalysisResponseDto"}]}},"required":["status","data"]},"ReferralCampaignResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the referral campaign","example":"campaign-uuid-123"},"name":{"type":"string","description":"Name of the referral campaign","example":"Winter 2024 Referral Program"},"referrerRewardAmount":{"type":"number","description":"Reward amount for the referrer (user who shares the code)","example":50000},"refereeRewardAmount":{"type":"number","description":"Reward amount for the referee (new user who signs up)","example":25000},"referrerRewardLimit":{"type":"number","description":"Maximum number of rewards a referrer can earn","example":10},"currencyCode":{"type":"string","description":"Currency code for rewards","example":"SYP"},"targetWallet":{"type":"string","description":"Target wallet where rewards will be credited","example":"PASSENGER_WALLET","enum":["PASSENGER_WALLET","DRIVER_EARNINGS"]},"isActive":{"type":"boolean","description":"Whether the campaign is currently active","example":true},"isDefault":{"type":"boolean","description":"Whether this is the default campaign","example":false}},"required":["id","name","referrerRewardAmount","refereeRewardAmount","referrerRewardLimit","currencyCode","targetWallet","isActive","isDefault"]},"ReferralCampaignResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of ReferralCampaignResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/ReferralCampaignResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"ReferralCampaignResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"ReferralCampaignResponseDto data object","allOf":[{"$ref":"#/components/schemas/ReferralCampaignResponseDto"}]}},"required":["status","data"]},"CreateReferralCampaignRequestDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the referral campaign","example":"Winter 2024 Referral Program"},"referrerRewardAmount":{"type":"number","description":"Reward amount for the referrer (user who shares the code)","example":50000},"refereeRewardAmount":{"type":"number","description":"Reward amount for the referee (new user who signs up)","example":25000},"referrerRewardLimit":{"type":"number","description":"Maximum number of rewards a referrer can earn","example":10},"currencyCode":{"type":"string","description":"Currency code for rewards","example":"SYP"},"targetWallet":{"type":"string","description":"Target wallet where rewards will be credited","example":"PASSENGER_WALLET","enum":["PASSENGER_WALLET","DRIVER_EARNINGS"]},"isActive":{"type":"boolean","description":"Whether the campaign is currently active","example":true,"default":true},"isDefault":{"type":"boolean","description":"Whether this is the default campaign","example":false,"default":false}},"required":["name","referrerRewardAmount","refereeRewardAmount","referrerRewardLimit","currencyCode","targetWallet"]},"UpdateReferralCampaignRequestDto":{"type":"object","properties":{"name":{"type":"string","description":"Name of the referral campaign","example":"Winter 2024 Referral Program"},"referrerRewardAmount":{"type":"number","description":"Reward amount for the referrer (user who shares the code)","example":50000},"refereeRewardAmount":{"type":"number","description":"Reward amount for the referee (new user who signs up)","example":25000},"referrerRewardLimit":{"type":"number","description":"Maximum number of rewards a referrer can earn","example":10},"currencyCode":{"type":"string","description":"Currency code for rewards","example":"SYP"},"targetWallet":{"type":"string","description":"Target wallet where rewards will be credited","example":"PASSENGER_WALLET","enum":["PASSENGER_WALLET","DRIVER_EARNINGS"]},"isActive":{"type":"boolean","description":"Whether the campaign is currently active","example":true,"default":true},"isDefault":{"type":"boolean","description":"Whether this is the default campaign","example":false,"default":false}}},"CreateDomainDto":{"type":"object","properties":{"name":{"type":"string","description":"Domain name"},"description":{"type":"string","description":"Domain description"}},"required":["name"]},"CreateDomainDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CreateDomainDto data object","allOf":[{"$ref":"#/components/schemas/CreateDomainDto"}]}},"required":["status","data"]},"DomainResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Domain id"},"name":{"type":"string","description":"Domain name"},"description":{"type":"object","description":"Domain description"}},"required":["id","name","description"]},"DomainResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of DomainResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/DomainResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateDomainDto":{"type":"object","properties":{"name":{"type":"string","description":"Domain name"},"description":{"type":"string","description":"Domain description"}}},"DomainResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"DomainResponseDto data object","allOf":[{"$ref":"#/components/schemas/DomainResponseDto"}]}},"required":["status","data"]},"CreateCategoryDto":{"type":"object","properties":{"domainId":{"type":"string","description":"Domain id"},"name":{"type":"string","description":"Category name"},"description":{"type":"string","description":"Category description"}},"required":["domainId","name","description"]},"CreateCategoryDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CreateCategoryDto data object","allOf":[{"$ref":"#/components/schemas/CreateCategoryDto"}]}},"required":["status","data"]},"CategoryResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Category id"},"domainId":{"type":"string","description":"Domain id"},"name":{"type":"string","description":"Category name"},"description":{"type":"string","description":"Category description"},"createdAt":{"format":"date-time","type":"string","description":"Category creation date"},"updatedAt":{"format":"date-time","type":"string","description":"Category update date"}},"required":["id","domainId","name","description","createdAt","updatedAt"]},"CategoryResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of CategoryResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/CategoryResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateCategoryDto":{"type":"object","properties":{"domainId":{"type":"string","description":"Domain id"},"name":{"type":"string","description":"Category name"},"description":{"type":"string","description":"Category description"}}},"CategoryResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CategoryResponseDto data object","allOf":[{"$ref":"#/components/schemas/CategoryResponseDto"}]}},"required":["status","data"]},"CreateTagDto":{"type":"object","properties":{"name":{"type":"string","description":"Tag name"},"icon":{"type":"string","description":"Tag icon"}},"required":["name"]},"CreateTagDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CreateTagDto data object","allOf":[{"$ref":"#/components/schemas/CreateTagDto"}]}},"required":["status","data"]},"TagResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Tag id"},"name":{"type":"string","description":"Tag name"},"icon":{"type":"object","description":"Tag icon"}},"required":["id","name","icon"]},"TagResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of TagResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/TagResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateTagDto":{"type":"object","properties":{"name":{"type":"string","description":"Tag name"},"icon":{"type":"string","description":"Tag icon"}}},"TagResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"TagResponseDto data object","allOf":[{"$ref":"#/components/schemas/TagResponseDto"}]}},"required":["status","data"]},"CreateActorDto":{"type":"object","properties":{"actorType":{"type":"string","description":"Actor type","enum":["USER","DRIVER","EMPLOYEE","AGENCY","GOVERNMENT","SYSTEM","OTHER"]},"actorId":{"type":"string","description":"Actor ID"},"roleDescription":{"type":"string","description":"Role description"}},"required":["actorType"]},"CreateRelationDto":{"type":"object","properties":{"relatedType":{"type":"string","description":"Related entity type","enum":["TRIP","DRIVER","USER","PAYMENT","BOOKING","ORDER","VEHICLE","DOCUMENT","TICKET","FINANCE_RECORD","CAMPAIGN","SOFTWARE_BUG","OTHER"]},"relatedId":{"type":"string","description":"Related entity ID"},"relatedDetails":{"type":"string","description":"Relation details"}},"required":["relatedType","relatedId"]},"CreateEntryDto":{"type":"object","properties":{"title":{"type":"string","description":"Entry title"},"summary":{"type":"string","description":"Entry summary"},"story":{"type":"string","description":"Entry story"},"rootCause":{"type":"string","description":"Root cause"},"solution":{"type":"string","description":"Solution"},"recommendation":{"type":"string","description":"Recommendation"},"severity":{"type":"string","description":"Severity level","enum":["LOW","MEDIUM","HIGH","CRITICAL"]},"impactLevel":{"type":"string","description":"Impact level","enum":["INFO","WARNING","DANGER","BLOCKER"]},"visibility":{"type":"string","description":"Visibility level","enum":["INTERNAL","TEAM","MANAGMENT","PARTNERS","GOVERNMENT","PUBLIC"]},"domainIds":{"description":"Domain ID","type":"array","items":{"type":"string"}},"categoryIds":{"description":"Category ID","type":"array","items":{"type":"string"}},"tags":{"description":"Tag names array","type":"array","items":{"type":"string"}},"actors":{"description":"Actors array","type":"array","items":{"$ref":"#/components/schemas/CreateActorDto"}},"relations":{"description":"Relations array","type":"array","items":{"$ref":"#/components/schemas/CreateRelationDto"}},"createdBy":{"type":"string","description":"Created by user ID"},"updatedBy":{"type":"string","description":"Updated by user ID"}},"required":["title","visibility","domainIds","categoryIds"]},"EntryResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Entry ID"},"title":{"type":"string","description":"Entry title"},"summary":{"type":"string","description":"Entry summary"},"story":{"type":"string","description":"Entry story"},"rootCause":{"type":"string","description":"Root cause of the entry"},"solution":{"type":"string","description":"Proposed solution"},"recommendation":{"type":"string","description":"Recommendation"},"severity":{"type":"string","description":"Severity level"},"impactLevel":{"type":"string","description":"Impact level"},"visibility":{"type":"string","description":"Visibility setting"},"createdBy":{"type":"string","description":"Creator user ID"},"updatedBy":{"type":"string","description":"Last updater user ID"},"domainIds":{"description":"Associated domain IDs","type":"array","items":{"type":"string"}},"categoryIds":{"description":"Associated category IDs","type":"array","items":{"type":"string"}},"tagIds":{"description":"Associated tag IDs","type":"array","items":{"type":"string"}},"actors":{"description":"Associated actors","type":"array","items":{"type":"string"}},"relations":{"description":"Associated relations","type":"array","items":{"type":"string"}},"attachments":{"description":"Associated attachments","type":"array","items":{"type":"string"}},"createdAt":{"format":"date-time","type":"string","description":"Creation timestamp"},"updatedAt":{"format":"date-time","type":"string","description":"Last update timestamp"}},"required":["id","title","summary","story","rootCause","solution","recommendation","severity","impactLevel","visibility","createdBy","updatedBy","domainIds","categoryIds","tagIds","actors","relations","attachments","createdAt","updatedAt"]},"EntryResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"EntryResponseDto data object","allOf":[{"$ref":"#/components/schemas/EntryResponseDto"}]}},"required":["status","data"]},"EntryResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of EntryResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/EntryResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateEntryDto":{"type":"object","properties":{"title":{"type":"string","description":"Entry title"},"summary":{"type":"string","description":"Entry summary"},"story":{"type":"string","description":"Entry story"},"rootCause":{"type":"string","description":"Root cause"},"solution":{"type":"string","description":"Solution"},"recommendation":{"type":"string","description":"Recommendation"},"severity":{"type":"string","description":"Severity level","enum":["LOW","MEDIUM","HIGH","CRITICAL"]},"impactLevel":{"type":"string","description":"Impact level","enum":["INFO","WARNING","DANGER","BLOCKER"]},"visibility":{"type":"string","description":"Visibility level","enum":["INTERNAL","TEAM","MANAGMENT","PARTNERS","GOVERNMENT","PUBLIC"]},"domainIds":{"description":"Domain ID","type":"array","items":{"type":"string"}},"categoryIds":{"description":"Category ID","type":"array","items":{"type":"string"}},"tags":{"description":"Tag names array","type":"array","items":{"type":"string"}},"actors":{"description":"Actors array","type":"array","items":{"$ref":"#/components/schemas/CreateActorDto"}},"relations":{"description":"Relations array","type":"array","items":{"$ref":"#/components/schemas/CreateRelationDto"}},"updatedBy":{"type":"string","description":"Updated by user ID"}}},"UploadAttachmentDto":{"type":"object","properties":{"attachmentFiles":{"type":"array","items":{"type":"string","format":"binary"},"description":"Attachment files (max 5 files)","maxItems":5},"uploadedBy":{"type":"string","description":"ID of the user uploading the attachment"}},"required":["attachmentFiles"]},"UploadAttachmentDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"UploadAttachmentDto data object","allOf":[{"$ref":"#/components/schemas/UploadAttachmentDto"}]}},"required":["status","data"]},"OnlineDriverResponseDto":{"type":"object","properties":{"driverId":{"type":"string","example":"driver_123","description":"Driver user id"},"lastSeenAt":{"type":"object","example":"2025-11-12T12:34:56.789Z","description":"Last seen at (ISO 8601)"}},"required":["driverId","lastSeenAt"]},"OnlineDriverResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of OnlineDriverResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/OnlineDriverResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"SendToTopicDto":{"type":"object","properties":{"topicName":{"type":"string","example":"drivers","description":"The FCM topic name to broadcast the notification to."},"title":{"type":"string","example":"New Update Available","description":"The title of the push notification."},"body":{"type":"string","example":"Please update your app to continue using all features.","description":"The body content of the push notification."}},"required":["topicName","title","body"]},"SendToUserDto":{"type":"object","properties":{"title":{"type":"string","example":"New Update Available","description":"The title of the push notification."},"body":{"type":"string","example":"Please update your app to continue using all features.","description":"The body content of the push notification."}},"required":["title","body"]},"SendToUserResponseDto":{"type":"object","properties":{"success":{"type":"boolean","example":true},"message":{"type":"string","example":"Notification sent to 2 device(s)"},"data":{"type":"object","properties":{"total":{"type":"number","example":3},"succeeded":{"type":"number","example":2},"failed":{"type":"number","example":1}}}},"required":["success","message","data"]},"CreateNotificationDto":{"type":"object","properties":{"userId":{"type":"string","description":"Target user id","example":"user-uuid-123"},"title":{"type":"string","description":"Notification title","example":"Driver Arrived"},"message":{"type":"string","description":"Notification body / message","example":"Your driver Ahmed is waiting outside."},"imageUrl":{"type":"string","description":"Optional image url","example":"https://example.com/avatar.png"},"lang":{"type":"string","description":"Optional language for the notification","example":"en","enum":["en","ar","fr"]}},"required":["userId","title","message"]},"NotificationResponseDto":{"type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"body":{"type":"string"},"imageUrl":{"type":"object"},"isRead":{"type":"boolean"},"userId":{"type":"string"},"metadata":{"type":"object"},"createdAt":{"format":"date-time","type":"string"}},"required":["id","title","body","isRead","userId","createdAt"]},"NotificationResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"NotificationResponseDto data object","allOf":[{"$ref":"#/components/schemas/NotificationResponseDto"}]}},"required":["status","data"]},"NotificationResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of NotificationResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/NotificationResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UnreadCountResponseDto":{"type":"object","properties":{"count":{"type":"number","example":5}},"required":["count"]},"UnreadCountResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"UnreadCountResponseDto data object","allOf":[{"$ref":"#/components/schemas/UnreadCountResponseDto"}]}},"required":["status","data"]},"UpdateLanguageDto":{"type":"object","properties":{"preferredLanguage":{"type":"string","enum":["en","ar","fr"],"description":"Preferred Language","example":"ar"}},"required":["preferredLanguage"]},"SuccessResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"SuccessResponseDto data object","allOf":[{"$ref":"#/components/schemas/SuccessResponseDto"}]}},"required":["status","data"]},"SubscriptionResponseDto":{"type":"object","properties":{"status":{"type":"boolean","description":"status of the subscription"},"message":{"type":"string","description":"message of the subscription"}},"required":["status","message"]},"ClientConnectedWebhook":{"type":"object","properties":{"username":{"type":"string","description":"username, id","example":"uuid-1"},"clientid":{"type":"string","description":"client, id","example":"uuid-1"}},"required":["username","clientid"]},"ClientDisconnectedWebhook":{"type":"object","properties":{"username":{"type":"string","description":"username, id","example":"uuid-1"},"clientid":{"type":"string","description":"client, id","example":"uuid-1"}},"required":["username","clientid"]},"CleanupResponseDto":{"type":"object","properties":{}},"KycConfigurationResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"KYC Configuration ID"},"name":{"type":"string","description":"KYC Configuration Name"},"isEnabled":{"type":"boolean","description":"Is KYC Configuration Enabled"},"value":{"type":"string","nullable":true,"description":"KYC Configuration Value"}},"required":["id","name","isEnabled"]},"KycConfigurationResponseDtoPagingData":{"type":"object","properties":{"status":{"enum":["Success","Error"],"type":"string","example":"Success","description":"Response status indicator"},"data":{"description":"Array of KycConfigurationResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/KycConfigurationResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"UpdateKycConfigurationDto":{"type":"object","properties":{"isEnabled":{"type":"boolean","description":"Flag to enable or disable the configuration","example":true},"value":{"type":"string","description":"Optional configuration value","example":"some-value"}},"required":["isEnabled"]},"KycConfigurationResponseDtoData":{"type":"object","properties":{"status":{"enum":["Success","Error"],"type":"string","example":"Success","description":"Response status indicator"},"data":{"description":"KycConfigurationResponseDto data object","allOf":[{"$ref":"#/components/schemas/KycConfigurationResponseDto"}]}},"required":["status","data"]},"CreateKycVerificationDto":{"type":"object","properties":{"operatorId":{"type":"string","nullable":true,"format":"uuid","description":"Operator ID"},"userId":{"type":"string","format":"uuid","description":"User ID"}},"required":["userId"]},"FileResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique file identifier (UUID v4)"},"ownerUserId":{"type":"string","description":"Owner user identifier (UUID v4)"},"originalName":{"type":"string","description":"Original filename as uploaded"},"fileType":{"description":"Logical file type","allOf":[{"$ref":"#/components/schemas/FileType"}]},"mimeType":{"type":"string","description":"MIME type of file"},"sizeBytes":{"type":"string","description":"File size in bytes (serialized bigint)"}},"required":["id","ownerUserId","originalName","fileType","mimeType","sizeBytes"]},"KycDocumentEntity":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the KYC document","example":"123e4567-e89b-12d3-a456-426614174000"},"verificationId":{"type":"string","description":"Unique identifier for the KYC verification process","example":"123e4567-e89b-12d3-a456-426614174000"},"fileId":{"type":"string","description":"Unique identifier for the file associated with the KYC document","example":"123e4567-e89b-12d3-a456-426614174000"},"createdAt":{"format":"date-time","type":"string","description":"Timestamp indicating when the KYC document was created","example":"2023-12-01T12:00:00Z"},"updatedAt":{"format":"date-time","type":"string","description":"Timestamp indicating when the KYC document was last updated","example":"2023-12-01T12:00:00Z"},"file":{"description":"File details associated with the KYC document","allOf":[{"$ref":"#/components/schemas/FileResponseDto"}]},"expiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration timestamp for this document"}},"required":["id","verificationId","fileId","createdAt","updatedAt","file"]},"KycVerificationResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Unique identifier for the KYC verification process","example":"123e4567-e89b-12d3-a456-426614174000"},"userId":{"type":"string","description":"Unique identifier for the user associated with the KYC verification process","example":"123e4567-e89b-12d3-a456-426614174000"},"operatorId":{"type":"string","nullable":true,"description":"Unique identifier for the operator who processed the KYC verification process","example":"123e4567-e89b-12d3-a456-426614174000"},"kycStatus":{"enum":["PENDING","APPROVED","REJECTED"],"type":"string"},"rejectionCode":{"nullable":true,"type":"string","enum":["PHOTO_BLURRY","ID_EXPIRED","NAME_MISMATCH","PHOTO_IS_NOT_A_SELFIE","PASSPORT_EXPIRED","BAD_ID","OTHER"]},"rejectionMessage":{"type":"string","nullable":true},"documents":{"description":"List of KYC documents associated with the verification process","type":"array","items":{"$ref":"#/components/schemas/KycDocumentEntity"}}},"required":["id","userId","kycStatus"]},"KycVerificationResponseDtoData":{"type":"object","properties":{"status":{"enum":["Success","Error"],"type":"string","example":"Success","description":"Response status indicator"},"data":{"description":"KycVerificationResponseDto data object","allOf":[{"$ref":"#/components/schemas/KycVerificationResponseDto"}]}},"required":["status","data"]},"BatchUploadDocumentsDto":{"type":"object","properties":{"driverLicenseFront":{"type":"string","format":"binary","description":"Driver license front image file"},"driverLicenseBack":{"type":"string","format":"binary","description":"Driver license back image file"},"nationalLicenseFront":{"type":"string","format":"binary","description":"National license front image file"},"nationalLicenseBack":{"type":"string","format":"binary","description":"National license back image file"},"passportPicture":{"type":"string","format":"binary","description":"Passport picture image file"},"criminalRecordCertificate":{"type":"string","format":"binary","description":"Criminal record certificate image file"},"carInsurance":{"type":"string","format":"binary","description":"Car insurance image file"},"vehicleRegistrationFront":{"type":"string","format":"binary","description":"Vehicle registration front image file"},"vehicleRegistrationBack":{"type":"string","format":"binary","description":"Vehicle registration back image file"},"authorizationLetterFront":{"type":"string","format":"binary","description":"Authorization letter front image file"},"authorizationLetterBack":{"type":"string","format":"binary","description":"Authorization letter back image file"},"driverLicenseFrontExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for Driver license front"},"driverLicenseBackExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for Driver license back"},"nationalLicenseFrontExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for National license front"},"nationalLicenseBackExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for National license back"},"passportPictureExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for Passport picture"},"criminalRecordCertificateExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for Criminal record certificate"},"carInsuranceExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for Car insurance"},"vehicleRegistrationFrontExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for Vehicle registration front"},"vehicleRegistrationBackExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for Vehicle registration back"},"authorizationLetterFrontExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for Authorization letter front"},"authorizationLetterBackExpiresAt":{"format":"date-time","type":"string","nullable":true,"description":"Expiration date for Authorization letter back"}}},"UploadedFileDto":{"type":"object","properties":{"fileId":{"type":"string","description":"Unique file identifier"},"fileType":{"type":"string","description":"Type of the uploaded file"},"expiresAt":{"type":"string","nullable":true,"description":"Expiration date of the document","format":"date-time"}},"required":["fileId","fileType","expiresAt"]},"BatchUploadResponseDto":{"type":"object","properties":{"uploadedFiles":{"description":"List of successfully uploaded files","type":"array","items":{"$ref":"#/components/schemas/UploadedFileDto"}}},"required":["uploadedFiles"]},"BatchUploadResponseDtoData":{"type":"object","properties":{"status":{"enum":["Success","Error"],"type":"string","example":"Success","description":"Response status indicator"},"data":{"description":"BatchUploadResponseDto data object","allOf":[{"$ref":"#/components/schemas/BatchUploadResponseDto"}]}},"required":["status","data"]},"KycStatus":{"type":"string","enum":["PENDING","APPROVED","REJECTED"],"description":"KYC status"},"RejectionCode":{"type":"string","enum":["PHOTO_BLURRY","ID_EXPIRED","NAME_MISMATCH","PHOTO_IS_NOT_A_SELFIE","PASSPORT_EXPIRED","BAD_ID","OTHER"],"description":"Rejection code (required when status is REJECTED)"},"UpdateKycVerificationDto":{"type":"object","properties":{"kycStatus":{"description":"KYC status","allOf":[{"$ref":"#/components/schemas/KycStatus"}]},"rejectionCode":{"nullable":true,"description":"Rejection code (required when status is REJECTED)","allOf":[{"$ref":"#/components/schemas/RejectionCode"}]},"rejectionMessage":{"type":"string","nullable":true,"description":"Rejection message (required when status is REJECTED)"}}},"KycVerificationResponseDtoPagingData":{"type":"object","properties":{"status":{"enum":["Success","Error"],"type":"string","example":"Success","description":"Response status indicator"},"data":{"description":"Array of KycVerificationResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/KycVerificationResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"SystemLogResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"id"},"level":{"type":"string","description":"Log level"},"userId":{"type":"string","description":"User id"},"loggedInAs":{"type":"string","description":"Logged in as"},"requestedApi":{"type":"string","description":"Requested API endpoint"},"method":{"type":"string","description":"HTTP method"},"ipAddress":{"type":"string","description":"IP address"},"statusCode":{"type":"number","description":"HTTP status code"},"dynamicMetadata":{"type":"object","description":"Dynamic metadata"}},"required":["id","level","requestedApi","method"]},"SystemLogResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of SystemLogResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/SystemLogResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"DeleteSystemLogDto":{"type":"object","properties":{"startDate":{"format":"date-time","type":"string","description":"Start date for the log deletion range","example":"2023-01-01T00:00:00Z"},"endDate":{"format":"date-time","type":"string","description":"End date for the log deletion range","example":"2023-01-31T23:59:59Z"}},"required":["startDate","endDate"]},"SystemLogResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"SystemLogResponseDto data object","allOf":[{"$ref":"#/components/schemas/SystemLogResponseDto"}]}},"required":["status","data"]},"LogConfigurationResponseDto":{"type":"object","properties":{"id":{"type":"string","description":"Log Configuration ID"},"name":{"type":"string","description":"Log Configuration Name"},"isEnabled":{"type":"boolean","description":"Is Log Configuration Enabled"},"value":{"type":"object","description":"Log Configuration Value"}},"required":["id","name","isEnabled","value"]},"LogConfigurationResponseDtoPagingData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"Array of LogConfigurationResponseDto objects","type":"array","items":{"$ref":"#/components/schemas/LogConfigurationResponseDto"}},"meta":{"description":"Pagination metadata","allOf":[{"$ref":"#/components/schemas/PagingMeta"}]}},"required":["status","data","meta"]},"LogConfigurationResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"LogConfigurationResponseDto data object","allOf":[{"$ref":"#/components/schemas/LogConfigurationResponseDto"}]}},"required":["status","data"]},"UpdateLogConfigurationDto":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable identifier for this log configuration"},"isEnabled":{"type":"boolean","example":true,"description":"Toggle to activate or deactivate the configuration","default":true},"value":{"type":"string","example":"5","description":"Optional string payload for the configuration","nullable":true}}},"CheckVersionResponseDto":{"type":"object","properties":{"forceUpdate":{"type":"boolean","description":"Whether the app should force an update"},"optionalUpdate":{"type":"boolean","description":"Whether the app should offer an optional update"},"latestVersion":{"type":"string","description":"The latest version of the app"}},"required":["forceUpdate","optionalUpdate","latestVersion"]},"CheckVersionResponseDtoData":{"type":"object","properties":{"status":{"type":"string","enum":["SUCCESS","ERROR"],"example":"SUCCESS","description":"Response status indicator"},"data":{"description":"CheckVersionResponseDto data object","allOf":[{"$ref":"#/components/schemas/CheckVersionResponseDto"}]}},"required":["status","data"]},"UpdateAppVersionDto":{"type":"object","properties":{}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"JWT"}}},"security":[{"bearerAuth":[]}]}