{"openapi":"3.0.0","paths":{"/":{"get":{"operationId":"AppController_getHomePage","parameters":[],"responses":{"200":{"description":"Returns the consumer-facing HTML guide page.","content":{"text/html":{"schema":{"type":"string"}}}}},"summary":"Consumer guide landing page","tags":["App"]}},"/brand/{appKey}/{filename}":{"get":{"operationId":"AppController_serveBrandAsset","parameters":[{"name":"appKey","required":true,"in":"path","schema":{"type":"string"}},{"name":"filename","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Serve bundled app brand assets","tags":["App"]}},"/client/donors/auth/request-otp":{"post":{"description":"Accepts Saudi mobile numbers in the format +966500110011. Numbers sent as +9660500110011 are normalized to +966500110011 before processing.","operationId":"AuthController_requestAuthOtp","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestAuthOtpDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestAuthOtpResponseDto"}}}}},"summary":"Start donor authentication with a phone number, issuing registration or login OTP as needed","tags":["Donor Auth"]}},"/client/donors/auth/verify-otp":{"post":{"description":"The phoneNumber field must be a Saudi mobile number in the format +966500110011. Numbers sent as +9660500110011 are normalized to +966500110011 before verification.","operationId":"AuthController_verifyAuthOtp","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyOtpDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthSessionResponseDto"}}}}},"summary":"Verify the latest registration or login OTP for a donor phone number and create a session when applicable","tags":["Donor Auth"]}},"/client/donors/auth/refresh":{"post":{"operationId":"AuthController_refresh","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshSessionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthSessionResponseDto"}}}}},"summary":"Rotate the refresh token and issue a new access token","tags":["Donor Auth"]}},"/client/donors/auth/forgot-password/request-otp":{"post":{"description":"Accepts Saudi mobile numbers in the format +966500110011. Numbers sent as +9660500110011 are normalized to +966500110011 before processing.","operationId":"AuthController_requestForgotPasswordOtp","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestForgotPasswordOtpDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordOtpResponseDto"}}}}},"summary":"Issue a mock forgot-password OTP for a verified donor phone number","tags":["Donor Auth"]}},"/client/donors/auth/forgot-password/verify-otp":{"post":{"description":"The phoneNumber field must be a Saudi mobile number in the format +966500110011. Numbers sent as +9660500110011 are normalized to +966500110011 before verification.","operationId":"AuthController_verifyForgotPasswordOtp","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyOtpDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ForgotPasswordResetTokenResponseDto"}}}}},"summary":"Verify a forgot-password OTP and issue a short-lived reset token","tags":["Donor Auth"]}},"/client/donors/auth/forgot-password/reset":{"post":{"description":"Requires the resetToken returned by the forgot-password OTP verification endpoint.","operationId":"AuthController_resetForgotPassword","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetForgotPasswordDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Reset the donor password using a verified forgot-password reset token","tags":["Donor Auth"]}},"/client/donors/auth/logout":{"post":{"operationId":"AuthController_logout","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Revoke the current authenticated session","tags":["Donor Auth"]}},"/client/donors/me":{"get":{"operationId":"AuthController_me","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Fetch the current donor profile","tags":["Donor Auth"]},"patch":{"operationId":"AuthController_updateProfile","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Editable donor profile fields with an optional profile image.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"fullName":{"type":"string","minLength":2},"email":{"type":"string","format":"email"},"profileImage":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update editable donor profile fields","tags":["Donor Auth"]}},"/client/donors/me/set-password":{"post":{"operationId":"AuthController_setPassword","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetPasswordDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Set the donor password for the first time","tags":["Donor Auth"]}},"/client/donors/me/change-password":{"post":{"operationId":"AuthController_changePassword","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangePasswordDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Change the donor password using the current password","tags":["Donor Auth"]}},"/client/donors/me/sessions":{"get":{"operationId":"AuthController_listSessions","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonorSessionsListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List the donor sessions for the authenticated account","tags":["Donor Auth"]}},"/client/donors/me/sessions/{sessionId}":{"delete":{"operationId":"AuthController_revokeSession","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"sessionId","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Revoke one donor session by ID","tags":["Donor Auth"]}},"/admin/ads":{"post":{"operationId":"AdminAdsController_createAd","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"linkUrl":{"type":"string","format":"uri"},"status":{"type":"string","enum":["DRAFT","PUBLISHED","ENDED"]},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"image":{"type":"string","format":"binary"}},"required":["title","status","startDate","image"]}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create an advertisement","tags":["Admin Ads"]},"get":{"operationId":"AdminAdsController_listAds","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["DRAFT","PUBLISHED","ENDED"]}},{"name":"startDateFrom","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"startDateTo","required":false,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List advertisements","tags":["Admin Ads"]}},"/admin/ads/{id}":{"get":{"operationId":"AdminAdsController_getAd","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one advertisement","tags":["Admin Ads"]},"patch":{"operationId":"AdminAdsController_updateAd","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":"string"},"linkUrl":{"type":"string","format":"uri"},"status":{"type":"string","enum":["DRAFT","PUBLISHED","ENDED"]},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time"},"deleteImage":{"type":"boolean"},"image":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update an advertisement","tags":["Admin Ads"]},"delete":{"operationId":"AdminAdsController_deleteAd","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete an advertisement","tags":["Admin Ads"]}},"/client/ads":{"get":{"operationId":"ClientAdsController_listAds","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdListResponseDto"}}}}},"summary":"List published advertisements for app and website banners","tags":["Client Ads"]}},"/admin/admins/auth/login":{"post":{"operationId":"AdminAuthController_login","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LoginAdminDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAuthSessionResponseDto"}}}}},"summary":"Sign in with admin email and password","tags":["Admin Auth"]}},"/admin/admins/auth/refresh":{"post":{"operationId":"AdminAuthController_refresh","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshAdminSessionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAuthSessionResponseDto"}}}}},"summary":"Rotate the admin refresh token and access token","tags":["Admin Auth"]}},"/admin/admins/auth/forgot-password/request-otp":{"post":{"operationId":"AdminAuthController_requestForgotPasswordOtp","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestAdminForgotPasswordOtpDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminForgotPasswordOtpRequestResponseDto"}}}}},"summary":"Send a forgot-password email OTP to an admin","tags":["Admin Auth"]}},"/admin/admins/auth/forgot-password/verify-otp":{"post":{"operationId":"AdminAuthController_verifyForgotPasswordOtp","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyAdminForgotPasswordOtpDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminForgotPasswordResetTokenResponseDto"}}}}},"summary":"Verify the admin email OTP and issue a reset token","tags":["Admin Auth"]}},"/admin/admins/auth/forgot-password/reset":{"post":{"operationId":"AdminAuthController_resetForgotPassword","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetAdminForgotPasswordDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Reset the admin password with a verified reset token","tags":["Admin Auth"]}},"/admin/admins/auth/logout":{"post":{"operationId":"AdminAuthController_logout","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Log out the current admin session","tags":["Admin Auth"]}},"/admin/admins/me":{"get":{"operationId":"AdminAuthController_me","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get the current admin profile","tags":["Admin Auth"]},"patch":{"operationId":"AdminAuthController_updateProfile","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"fullName":{"type":"string"},"phoneNumber":{"type":"string"},"deleteProfileImage":{"type":"boolean"},"profileImage":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update the current admin profile","tags":["Admin Auth"]}},"/admin/admins/me/change-password":{"post":{"operationId":"AdminAuthController_changePassword","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeAdminPasswordDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Change the current admin password","tags":["Admin Auth"]}},"/admin/admin-roles/permissions":{"get":{"operationId":"AdminRolesController_listAvailablePermissions","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminAvailablePermissionsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List all available admin permissions","tags":["Admin Roles"]}},"/admin/admin-roles":{"post":{"operationId":"AdminRolesController_createRole","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRoleDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminRoleResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create an admin role","tags":["Admin Roles"]},"get":{"operationId":"AdminRolesController_listRoles","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminRoleListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List admin roles","tags":["Admin Roles"]}},"/admin/admin-roles/{id}":{"get":{"operationId":"AdminRolesController_getRole","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminRoleResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one admin role","tags":["Admin Roles"]},"patch":{"operationId":"AdminRolesController_updateRole","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRoleDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminRoleResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update an admin role","tags":["Admin Roles"]},"delete":{"operationId":"AdminRolesController_deleteRole","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete an admin role","tags":["Admin Roles"]}},"/admin/admins":{"post":{"operationId":"AdminManagementController_createAdmin","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"fullName":{"type":"string"},"email":{"type":"string","format":"email"},"phoneNumber":{"type":"string"},"roleId":{"type":"string","format":"uuid"},"password":{"type":"string"},"profileImage":{"type":"string","format":"binary"}},"required":["fullName","email","phoneNumber","password","roleId"]}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create an admin account","tags":["Admin Management"]},"get":{"operationId":"AdminManagementController_listAdmins","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"joiningStatus","required":false,"in":"query","schema":{"type":"string","enum":["JOINED","NOT_JOINED"]}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["ACTIVE","SUSPENDED"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List admin accounts","tags":["Admin Management"]}},"/admin/admins/{id}":{"get":{"operationId":"AdminManagementController_getAdmin","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one admin account","tags":["Admin Management"]},"patch":{"operationId":"AdminManagementController_updateAdmin","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"fullName":{"type":"string"},"email":{"type":"string","format":"email"},"phoneNumber":{"type":"string"},"roleId":{"type":"string","format":"uuid"},"deleteProfileImage":{"type":"boolean"},"profileImage":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update an admin account","tags":["Admin Management"]},"delete":{"operationId":"AdminManagementController_deleteAdmin","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete an admin account","tags":["Admin Management"]}},"/admin/admins/{id}/suspend":{"post":{"operationId":"AdminManagementController_suspendAdmin","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Suspend an admin account","tags":["Admin Management"]}},"/admin/admins/{id}/activate":{"post":{"operationId":"AdminManagementController_activateAdmin","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Activate an admin account","tags":["Admin Management"]}},"/admin/admins/{id}/resend-invitation":{"post":{"operationId":"AdminManagementController_resendInvitation","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Resend admin invitation credentials","tags":["Admin Management"]}},"/admin/campaign-categories":{"post":{"operationId":"AdminCampaignCategoriesController_create","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string"},"icon":{"type":"string","format":"binary"}},"required":["name","icon"]}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignCategoryResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a campaign category","tags":["Admin Campaign Categories"]},"get":{"operationId":"AdminCampaignCategoriesController_list","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignCategoryListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List campaign categories","tags":["Admin Campaign Categories"]}},"/admin/campaign-categories/{id}":{"get":{"operationId":"AdminCampaignCategoriesController_get","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignCategoryDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one campaign category","tags":["Admin Campaign Categories"]},"patch":{"operationId":"AdminCampaignCategoriesController_update","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"name":{"type":"string"},"icon":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignCategoryResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update a campaign category","tags":["Admin Campaign Categories"]},"delete":{"operationId":"AdminCampaignCategoriesController_delete","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete a campaign category","tags":["Admin Campaign Categories"]}},"/admin/campaigns":{"post":{"operationId":"AdminCampaignsController_create","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"categoryId":{"type":"string","format":"uuid"},"creationStatus":{"type":"string","enum":["DRAFT","PUBLISHED"]},"description":{"type":"string"},"donationTarget":{"type":"number"},"endDate":{"type":"string","format":"date-time"},"image":{"type":"string","format":"binary"},"startDate":{"type":"string","format":"date-time"},"title":{"type":"string"}},"required":["categoryId","creationStatus","description","donationTarget","startDate","title"]}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a campaign","tags":["Admin Campaign Management"]},"get":{"operationId":"AdminCampaignsController_list","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"categoryId","required":false,"in":"query","schema":{"format":"uuid","type":"string"}},{"name":"endDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}},{"name":"startDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["DRAFT","PUBLISHED","STOPPED","ENDED"]}},{"name":"tillTargetReached","required":false,"in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List campaigns","tags":["Admin Campaign Management"]}},"/admin/campaigns/{id}":{"get":{"operationId":"AdminCampaignsController_get","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one campaign","tags":["Admin Campaign Management"]},"patch":{"operationId":"AdminCampaignsController_update","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"categoryId":{"type":"string","format":"uuid"},"deleteImage":{"type":"boolean"},"description":{"type":"string"},"donationTarget":{"type":"number"},"endDate":{"type":"string","format":"date-time"},"image":{"type":"string","format":"binary"},"startDate":{"type":"string","format":"date-time"},"title":{"type":"string"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update a campaign","tags":["Admin Campaign Management"]},"delete":{"operationId":"AdminCampaignsController_delete","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete an ended or unfunded campaign","tags":["Admin Campaign Management"]}},"/admin/campaigns/{id}/publish":{"post":{"operationId":"AdminCampaignsController_publish","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Publish a draft campaign","tags":["Admin Campaign Management"]}},"/admin/campaigns/{id}/stop":{"post":{"operationId":"AdminCampaignsController_stop","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Stop a published campaign","tags":["Admin Campaign Management"]}},"/admin/campaigns/{id}/continue":{"post":{"operationId":"AdminCampaignsController_continue","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Continue a stopped campaign","tags":["Admin Campaign Management"]}},"/admin/campaigns/{id}/end":{"post":{"operationId":"AdminCampaignsController_end","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"End a campaign","tags":["Admin Campaign Management"]}},"/admin/campaigns/{id}/expand":{"post":{"operationId":"AdminCampaignsController_expand","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExpandCampaignDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Expand a campaign end date","tags":["Admin Campaign Management"]}},"/client/campaign-categories":{"get":{"operationId":"ClientCampaignsController_listCategories","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignCategoryListResponseDto"}}}}},"summary":"List published campaign categories for clients","tags":["Client Campaigns"]}},"/client/campaigns":{"get":{"operationId":"ClientCampaignsController_listCampaigns","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"categoryId","required":false,"in":"query","schema":{"format":"uuid","type":"string"}},{"name":"endDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}},{"name":"startDate","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["DRAFT","PUBLISHED","STOPPED","ENDED"]}},{"name":"tillTargetReached","required":false,"in":"query","schema":{"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignListResponseDto"}}}}},"summary":"List published campaigns for clients","tags":["Client Campaigns"]}},"/client/campaigns/{id}":{"get":{"operationId":"ClientCampaignsController_getCampaign","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CampaignDetailResponseDto"}}}}},"summary":"Get one published campaign for clients","tags":["Client Campaigns"]}},"/admin/donors":{"get":{"operationId":"AdminDonorsController_listDonors","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","description":"Search by donor full name, email, or phone number.","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["ACTIVE","SUSPENDED"]}},{"name":"registrationDateFrom","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"registrationDateTo","required":false,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDonorListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List donor accounts","tags":["Admin Donor Management"]}},"/admin/donors/{id}":{"get":{"operationId":"AdminDonorsController_getDonor","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDonorProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one donor account","tags":["Admin Donor Management"]},"delete":{"operationId":"AdminDonorsController_deleteDonor","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete a donor account","tags":["Admin Donor Management"]}},"/admin/donors/{id}/suspend":{"post":{"operationId":"AdminDonorsController_suspendDonor","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Suspend a donor account","tags":["Admin Donor Management"]}},"/admin/donors/{id}/activate":{"post":{"operationId":"AdminDonorsController_activateDonor","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Activate a donor account","tags":["Admin Donor Management"]}},"/admin/donations/analytics":{"get":{"operationId":"AdminDonationsController_getAnalytics","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"dateFrom","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"dateTo","required":false,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationAnalyticsResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get donation analytics","tags":["Admin Donations"]}},"/admin/donations":{"get":{"operationId":"AdminDonationsController_listDonations","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","description":"Search by receipt reference, donor name, donor email, or donor phone number.","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["PENDING","PAID","FAILED","CANCELLED"]}},{"name":"paymentMethodName","required":false,"in":"query","schema":{"type":"string"}},{"name":"minAmount","required":false,"in":"query","schema":{"minimum":0,"type":"number"}},{"name":"maxAmount","required":false,"in":"query","schema":{"minimum":0,"type":"number"}},{"name":"dateFrom","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"dateTo","required":false,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDonationListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List donations","tags":["Admin Donations"]}},"/admin/donations/{id}":{"get":{"operationId":"AdminDonationsController_getDonation","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDonationDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one donation","tags":["Admin Donations"]}},"/admin/donations/{id}/sync-payment":{"post":{"operationId":"AdminDonationsController_syncPayment","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminDonationDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Refresh one donation payment status from MyFatoorah","tags":["Admin Donations"]}},"/client/donations/payment-methods":{"get":{"description":"Use this before creating a donation so web and Flutter clients can render the enabled payment options.","operationId":"ClientDonationsController_listPaymentMethods","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"amount","required":true,"in":"query","schema":{"minimum":0.01,"example":150,"type":"number"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DonationPaymentMethodListResponseDto"}}}}},"summary":"List available MyFatoorah payment methods","tags":["Client Donations"]}},"/client/donations":{"post":{"description":"Public endpoint for web and Flutter donation checkout. Authentication is optional at the product level and not required by this API.","operationId":"ClientDonationsController_createDonation","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDonationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientDonationCheckoutDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a donation checkout session","tags":["Client Donations"]}},"/client/donations/me":{"get":{"operationId":"ClientDonationsController_listMyDonations","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":true,"in":"query","schema":{"type":"string"}},{"name":"pageSize","required":true,"in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientDonationHistoryResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List current donor donation history","tags":["Client Donations"]}},"/client/donations/sync-status":{"post":{"description":"Call this after the customer returns to your web page or mobile deep link with a PaymentId from MyFatoorah.","operationId":"ClientDonationsController_syncStatus","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SyncDonationStatusDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientDonationCheckoutDetailResponseDto"}}}}},"summary":"Sync donation status from MyFatoorah","tags":["Client Donations"]}},"/client/donations/myfatoorah/webhook":{"post":{"operationId":"ClientDonationsController_handleWebhook","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Receive MyFatoorah webhook notifications","tags":["Client Donations"]}},"/client/donations/myfatoorah/callback":{"get":{"operationId":"ClientDonationsController_handleMyFatoorahCallback","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":""}},"summary":"Handle MyFatoorah browser callback and redirect to the website","tags":["Client Donations"]}},"/client/donations/{id}":{"get":{"operationId":"ClientDonationsController_getDonation","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientDonationCheckoutDetailResponseDto"}}}}},"summary":"Get one donation checkout status by ID","tags":["Client Donations"]}},"/admin/notifications":{"get":{"operationId":"AdminNotificationsController_listNotifications","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"isRead","required":false,"in":"query","schema":{"nullable":true,"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List system notifications for the current admin","tags":["Admin Notifications"]}},"/admin/notifications/unread-count":{"get":{"operationId":"AdminNotificationsController_getUnreadCount","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationUnreadCountResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get unread system notification count for the current admin","tags":["Admin Notifications"]}},"/admin/notifications/{id}/read":{"patch":{"operationId":"AdminNotificationsController_markAsRead","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Mark one admin system notification as read","tags":["Admin Notifications"]}},"/admin/push-notifications":{"get":{"operationId":"AdminPushNotificationsController_listPushNotifications","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}},{"name":"targetAudience","required":false,"in":"query","schema":{"type":"string","enum":["ALL_DONORS","SPECIFIC_CAMPAIGN_DONORS"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushNotificationCampaignListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List outbound push notification sends","tags":["Admin Push Notifications"]},"post":{"operationId":"AdminPushNotificationsController_sendPushNotification","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SendPushNotificationDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PushNotificationCampaignDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a donor push notification send and persist notifications for target donors","tags":["Admin Push Notifications"]}},"/client/notifications":{"get":{"operationId":"ClientNotificationsController_listNotifications","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"isRead","required":false,"in":"query","schema":{"nullable":true,"type":"boolean"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List notifications for the current donor","tags":["Client Notifications"]}},"/client/notifications/unread-count":{"get":{"operationId":"ClientNotificationsController_getUnreadCount","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationUnreadCountResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get unread notification count for the current donor","tags":["Client Notifications"]}},"/client/notifications/{id}/read":{"patch":{"operationId":"ClientNotificationsController_markAsRead","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Mark one donor notification as read","tags":["Client Notifications"]}},"/client/notifications/devices":{"post":{"operationId":"ClientNotificationsController_registerDeviceToken","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegisterNotificationDeviceTokenDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationDeviceTokenDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Register or refresh a notification device token for the current donor","tags":["Client Notifications"]}},"/client/notifications/devices/{id}":{"delete":{"operationId":"ClientNotificationsController_unregisterDeviceToken","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Unregister a notification device token for the current donor","tags":["Client Notifications"]}},"/admin/drivers":{"post":{"operationId":"AdminDriversController_createDriver","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"fullName":{"type":"string"},"idNumber":{"type":"string"},"phoneNumber":{"type":"string"},"vehicleType":{"type":"string"},"licensePlateNumber":{"type":"string"},"password":{"type":"string"},"driverLicense":{"type":"string","format":"binary"},"vehicleRegistration":{"type":"string","format":"binary"}},"required":["fullName","idNumber","phoneNumber","vehicleType","licensePlateNumber","password","driverLicense","vehicleRegistration"]}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a driver account","tags":["Admin Drivers"]},"get":{"operationId":"AdminDriversController_listDrivers","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["ACTIVE","SUSPENDED"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List drivers","tags":["Admin Drivers"]}},"/admin/drivers/{id}":{"get":{"operationId":"AdminDriversController_getDriver","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one driver","tags":["Admin Drivers"]},"patch":{"operationId":"AdminDriversController_updateDriver","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"fullName":{"type":"string"},"phoneNumber":{"type":"string"},"vehicleType":{"type":"string"},"licensePlateNumber":{"type":"string"},"driverLicense":{"type":"string","format":"binary"},"vehicleRegistration":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update a driver account","tags":["Admin Drivers"]},"delete":{"operationId":"AdminDriversController_deleteDriver","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete a driver account","tags":["Admin Drivers"]}},"/admin/drivers/{id}/suspend":{"post":{"operationId":"AdminDriversController_suspendDriver","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Suspend a driver account","tags":["Admin Drivers"]}},"/admin/drivers/{id}/activate":{"post":{"operationId":"AdminDriversController_activateDriver","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Activate a driver account","tags":["Admin Drivers"]}},"/driver/drivers/auth/login":{"post":{"operationId":"DriverAuthController_login","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverLoginDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverAuthSessionResponseDto"}}}}},"summary":"Sign in as a driver with phone number and password","tags":["Driver Auth"]}},"/driver/drivers/auth/refresh":{"post":{"operationId":"DriverAuthController_refresh","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RefreshDriverSessionDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverAuthSessionResponseDto"}}}}},"summary":"Rotate the driver refresh token and issue a new access token","tags":["Driver Auth"]}},"/driver/drivers/auth/forgot-password/request-otp":{"post":{"operationId":"DriverAuthController_requestForgotPasswordOtp","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RequestDriverForgotPasswordOtpDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverForgotPasswordOtpResponseDto"}}}}},"summary":"Request a driver forgot-password OTP","tags":["Driver Auth"]}},"/driver/drivers/auth/forgot-password/verify-otp":{"post":{"operationId":"DriverAuthController_verifyForgotPasswordOtp","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyDriverForgotPasswordOtpDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverForgotPasswordResetTokenResponseDto"}}}}},"summary":"Verify a driver forgot-password OTP and issue a reset token","tags":["Driver Auth"]}},"/driver/drivers/auth/forgot-password/reset":{"post":{"operationId":"DriverAuthController_resetForgotPassword","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResetDriverForgotPasswordDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"summary":"Reset the driver password with a verified reset token","tags":["Driver Auth"]}},"/driver/drivers/auth/logout":{"post":{"operationId":"DriverAuthController_logout","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Log out the current driver session","tags":["Driver Auth"]}},"/driver/drivers/me":{"get":{"operationId":"DriverAuthController_me","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Fetch the current driver profile","tags":["Driver Auth"]},"patch":{"operationId":"DriverAuthController_updateProfile","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"fullName":{"type":"string"},"vehicleType":{"type":"string"},"licensePlateNumber":{"type":"string"},"deleteProfileImage":{"type":"boolean"},"profileImage":{"type":"string","format":"binary"}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DriverProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update the current driver profile","tags":["Driver Auth"]}},"/driver/drivers/me/change-password":{"post":{"operationId":"DriverAuthController_changePassword","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChangeDriverPasswordDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Change the current driver password","tags":["Driver Auth"]}},"/admin/families":{"get":{"operationId":"AdminFamiliesController_listFamilies","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","description":"Search by representative name, phone number, or email.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FamilyListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List accepted families","tags":["Admin Families"]}},"/admin/families/{id}":{"get":{"operationId":"AdminFamiliesController_getFamily","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FamilyProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one accepted family","tags":["Admin Families"]},"patch":{"operationId":"AdminFamiliesController_updateFamily","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"representativeName":{"type":"string"},"phoneNumber":{"type":"string"},"email":{"type":"string","format":"email"},"city":{"type":"string"},"familyMembersCount":{"type":"number"},"situationDescription":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"deleteExistingSupportingDocuments":{"type":"boolean"},"supportingDocuments":{"type":"array","items":{"type":"string","format":"binary"}}}}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FamilyResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update an accepted family","tags":["Admin Families"]},"delete":{"operationId":"AdminFamiliesController_deleteFamily","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete an accepted family","tags":["Admin Families"]}},"/admin/family-requests":{"get":{"operationId":"AdminFamilyRequestsController_listFamilyRequests","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","description":"Search by representative name, phone number, or email.","schema":{"type":"string"}},{"name":"requestStatus","required":false,"in":"query","schema":{"type":"string","enum":["UNDER_REVIEW","ACCEPTED","REJECTED"]}},{"name":"requestDateFrom","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"requestDateTo","required":false,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FamilyRequestListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List family requests","tags":["Admin Family Requests"]}},"/admin/family-requests/{id}":{"get":{"operationId":"AdminFamilyRequestsController_getFamilyRequest","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FamilyRequestProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one family request","tags":["Admin Family Requests"]}},"/admin/family-requests/{id}/accept":{"post":{"operationId":"AdminFamilyRequestsController_acceptFamilyRequest","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Accept a family request","tags":["Admin Family Requests"]}},"/admin/family-requests/{id}/reject":{"post":{"operationId":"AdminFamilyRequestsController_rejectFamilyRequest","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Function"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Reject a family request","tags":["Admin Family Requests"]}},"/client/family-requests":{"post":{"description":"Public endpoint for web and mobile family request forms. Authentication is not required.","operationId":"ClientFamilyRequestsController_createFamilyRequest","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"representativeName":{"type":"string"},"phoneNumber":{"type":"string"},"email":{"type":"string","format":"email"},"city":{"type":"string"},"familyMembersCount":{"type":"number"},"situationDescription":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"supportingDocuments":{"type":"array","items":{"type":"string","format":"binary"}}},"required":["representativeName","phoneNumber","email","city","familyMembersCount","situationDescription","latitude","longitude","supportingDocuments"]}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FamilyRequestProfileResponseDto"}}}}},"summary":"Submit a family support request","tags":["Client Families"]}},"/admin/volunteer-requests":{"get":{"operationId":"AdminVolunteerRequestsController_listVolunteerRequests","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","description":"Search by volunteer full name, phone number, or email.","schema":{"type":"string"}},{"name":"requestStatus","required":false,"in":"query","schema":{"type":"string","enum":["UNDER_REVIEW","ACCEPTED","REJECTED"]}},{"name":"volunteerType","required":false,"in":"query","schema":{"type":"string"}},{"name":"requestDateFrom","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"requestDateTo","required":false,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolunteerRequestListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List volunteer requests","tags":["Admin Volunteer Requests"]}},"/admin/volunteer-requests/{id}":{"get":{"operationId":"AdminVolunteerRequestsController_getVolunteerRequest","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolunteerRequestProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one volunteer request","tags":["Admin Volunteer Requests"]}},"/admin/volunteer-requests/{id}/accept":{"post":{"operationId":"AdminVolunteerRequestsController_acceptVolunteerRequest","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Accept a volunteer request","tags":["Admin Volunteer Requests"]}},"/admin/volunteer-requests/{id}/reject":{"post":{"operationId":"AdminVolunteerRequestsController_rejectVolunteerRequest","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Function"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Reject a volunteer request","tags":["Admin Volunteer Requests"]}},"/admin/volunteers":{"get":{"operationId":"AdminVolunteersController_listVolunteers","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","description":"Search by volunteer full name, phone number, or email.","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolunteerListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List accepted volunteers","tags":["Admin Volunteers"]}},"/admin/volunteers/{id}":{"get":{"operationId":"AdminVolunteersController_getVolunteer","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolunteerProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one accepted volunteer","tags":["Admin Volunteers"]},"patch":{"operationId":"AdminVolunteersController_updateVolunteer","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Function"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolunteerResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update an accepted volunteer","tags":["Admin Volunteers"]},"delete":{"operationId":"AdminVolunteersController_deleteVolunteer","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete an accepted volunteer","tags":["Admin Volunteers"]}},"/client/volunteer-requests":{"post":{"description":"Public endpoint for web and mobile volunteer forms. Authentication is not required.","operationId":"ClientVolunteerRequestsController_createVolunteerRequest","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVolunteerRequestDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VolunteerRequestProfileResponseDto"}}}}},"summary":"Submit a volunteer request","tags":["Client Volunteers"]}},"/admin/settings":{"get":{"operationId":"SettingsController_getSettings","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralSettingsDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get general platform settings","tags":["Admin Settings"]},"patch":{"operationId":"SettingsController_updateSettings","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"systemNameEn":{"type":"string"},"systemNameAr":{"type":"string"},"supportEmail":{"type":"string","format":"email"},"supportPhone":{"type":"string"},"supportWhatsapp":{"type":"string","nullable":true},"addressEn":{"type":"string","nullable":true},"addressAr":{"type":"string","nullable":true},"facebookUrl":{"type":"string","format":"uri","nullable":true},"instagramUrl":{"type":"string","format":"uri","nullable":true},"xUrl":{"type":"string","format":"uri","nullable":true},"youtubeUrl":{"type":"string","format":"uri","nullable":true},"linkedinUrl":{"type":"string","format":"uri","nullable":true},"defaultCurrencyCode":{"type":"string"},"donationAlertThreshold":{"type":"number"},"aboutSnippetEn":{"type":"string","nullable":true},"aboutSnippetAr":{"type":"string","nullable":true},"footerTextEn":{"type":"string","nullable":true},"footerTextAr":{"type":"string","nullable":true},"deleteLogo":{"type":"boolean"},"deleteFavicon":{"type":"boolean"},"logo":{"type":"string","format":"binary"},"favicon":{"type":"string","format":"binary"}},"required":["systemNameEn","systemNameAr","supportEmail","supportPhone","defaultCurrencyCode","donationAlertThreshold"]}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GeneralSettingsDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update general platform settings","tags":["Admin Settings"]}},"/admin/media-videos":{"post":{"operationId":"AdminMediaVideosController_createMediaVideo","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateMediaVideoDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaVideoResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a media center video","tags":["Admin Media Center"]},"get":{"operationId":"AdminMediaVideosController_listMediaVideos","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["DRAFT","PUBLISHED"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMediaVideoListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List media center videos","tags":["Admin Media Center"]}},"/admin/media-videos/{id}":{"get":{"operationId":"AdminMediaVideosController_getMediaVideo","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AdminMediaVideoDetailResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one media center video","tags":["Admin Media Center"]},"patch":{"operationId":"AdminMediaVideosController_updateMediaVideo","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateMediaVideoDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MediaVideoResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update a media center video","tags":["Admin Media Center"]},"delete":{"operationId":"AdminMediaVideosController_deleteMediaVideo","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete a media center video","tags":["Admin Media Center"]}},"/client/media-videos":{"get":{"operationId":"ClientMediaVideosController_listMediaVideos","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["DRAFT","PUBLISHED"]}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ClientMediaVideoListResponseDto"}}}}},"summary":"List published media center videos","tags":["Client Media Center"]}},"/files/upload":{"post":{"operationId":"FilesController_uploadFile","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"description":"Multipart upload payload.","content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"responses":{"201":{"description":"File uploaded successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid","example":"7c38a4a1-2c23-4dcb-80b4-9aef6eb0d58f"},"originalFilename":{"type":"string","example":"contract.pdf"},"filename":{"type":"string","example":"7c38a4a1-2c23-4dcb-80b4-9aef6eb0d58f-contract.pdf"},"url":{"type":"string","example":"/files/7c38a4a1-2c23-4dcb-80b4-9aef6eb0d58f-contract.pdf"},"downloadUrl":{"type":"string","example":"/files/7c38a4a1-2c23-4dcb-80b4-9aef6eb0d58f-contract.pdf/download"}}}}}}},"summary":"Upload a file to object storage","tags":["Files"]}},"/files/{filename}":{"get":{"operationId":"FilesController_getFileByFilename","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"filename","required":true,"in":"path","description":"Generated filename returned at upload time.","schema":{"example":"7c38a4a1-2c23-4dcb-80b4-9aef6eb0d58f-contract.pdf","type":"string"}}],"responses":{"302":{"description":"Redirects to a signed inline file URL."},"404":{"description":"No file exists for the given filename."}},"summary":"Serve a stored file by its generated filename","tags":["Files"]}},"/files/{filename}/download":{"get":{"operationId":"FilesController_downloadFileByFilename","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"filename","required":true,"in":"path","description":"Generated filename returned at upload time.","schema":{"example":"7c38a4a1-2c23-4dcb-80b4-9aef6eb0d58f-contract.pdf","type":"string"}}],"responses":{"302":{"description":"Redirects to a signed attachment download URL."},"404":{"description":"No file exists for the given filename."}},"summary":"Download a stored file by its generated filename","tags":["Files"]}},"/admin/orders":{"post":{"operationId":"AdminOrdersController_createOrder","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateOrderDto"}}}},"responses":{"201":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Create a delivery order","tags":["Admin Orders"]},"get":{"operationId":"AdminOrdersController_listOrders","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"page","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"pageSize","required":false,"in":"query","schema":{"$ref":"#/components/schemas/Object"}},{"name":"search","required":false,"in":"query","description":"Search by order ID or beneficiary family representative name.","schema":{"type":"string"}},{"name":"status","required":false,"in":"query","schema":{"type":"string","enum":["NEW","IN_PROGRESS","RECEIVED","COMPLETED","CANCELLED"]}},{"name":"deliveryDateFrom","required":false,"in":"query","schema":{"format":"date-time","type":"string"}},{"name":"deliveryDateTo","required":false,"in":"query","schema":{"format":"date-time","type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderListResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"List delivery orders","tags":["Admin Orders"]}},"/admin/orders/{id}":{"get":{"operationId":"AdminOrdersController_getOrder","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderProfileResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Get one delivery order","tags":["Admin Orders"]},"patch":{"operationId":"AdminOrdersController_updateOrder","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrderDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Update a new delivery order","tags":["Admin Orders"]},"delete":{"operationId":"AdminOrdersController_deleteOrder","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SuccessResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Delete a delivery order","tags":["Admin Orders"]}},"/admin/orders/{id}/status":{"post":{"operationId":"AdminOrdersController_changeStatus","parameters":[{"name":"Accept-Language","in":"header","description":"Optional response language for error messages. Supported values: en, ar. Defaults to ar.","required":false,"schema":{"type":"string"}},{"name":"id","required":true,"in":"path","schema":{"type":"string"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrderStatusDto"}}}},"responses":{"200":{"description":"","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderResponseDto"}}}}},"security":[{"bearer":[]}],"summary":"Change delivery order status","tags":["Admin Orders"]}}},"info":{"title":"selsal-api","description":"HTTP API documentation for selsal-api.","version":"1.0.0","contact":{}},"tags":[],"servers":[{"url":"http://localhost:3000","description":"Local development"}],"components":{"securitySchemes":{"bearer":{"scheme":"bearer","bearerFormat":"opaque","type":"http"}},"schemas":{"RequestAuthOtpDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"Saudi mobile number in the format +966500110011. Numbers sent as +9660500110011 are normalized to +966500110011.","example":"+966500110011"}},"required":["phoneNumber"]},"RequestAuthOtpResponseDto":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"flow":{"type":"string","enum":["REGISTRATION","LOGIN"],"example":"REGISTRATION"},"isNewUser":{"type":"boolean","example":true},"otpCode":{"type":"string","example":"1234"},"otpSent":{"type":"boolean","example":true},"purpose":{"type":"string","enum":["REGISTRATION","LOGIN"]}},"required":["expiresAt","flow","isNewUser","otpCode","otpSent","purpose"]},"VerifyOtpDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"Saudi mobile number in the format +966500110011. Numbers sent as +9660500110011 are normalized to +966500110011.","example":"+966500110011"},"otpCode":{"type":"string"}},"required":["phoneNumber","otpCode"]},"DonorResponseDto":{"type":"object","properties":{"accountStatus":{"type":"string","enum":["ACTIVE","SUSPENDED"],"example":"ACTIVE"},"createdAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time","nullable":true},"email":{"type":"string","example":"tester@example.com","format":"email","nullable":true},"fullName":{"type":"string","example":"Selsal Tester","nullable":true},"id":{"type":"string","format":"uuid"},"phoneNumber":{"type":"string","example":"+966500110011"},"phoneVerifiedAt":{"type":"string","format":"date-time","nullable":true},"profileImagePath":{"type":"string","example":"/files/profile-image.jpg","nullable":true},"registrationDate":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["accountStatus","createdAt","deletedAt","email","fullName","id","phoneNumber","phoneVerifiedAt","profileImagePath","registrationDate","updatedAt"]},"DonorSessionResponseDto":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"deviceInfo":{"type":"string","example":"Mozilla/5.0","nullable":true},"expiresAt":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"ipAddress":{"type":"string","example":"203.0.113.42","nullable":true},"revokedAt":{"type":"string","format":"date-time","nullable":true},"userAgent":{"type":"string","example":"Mozilla/5.0","nullable":true}},"required":["createdAt","deviceInfo","expiresAt","id","ipAddress","revokedAt","userAgent"]},"AuthSessionResponseDto":{"type":"object","properties":{"accessToken":{"type":"string"},"accessTokenExpiresAt":{"type":"string","format":"date-time"},"donor":{"$ref":"#/components/schemas/DonorResponseDto"},"refreshToken":{"type":"string"},"session":{"$ref":"#/components/schemas/DonorSessionResponseDto"}},"required":["accessToken","accessTokenExpiresAt","donor","refreshToken","session"]},"RefreshSessionDto":{"type":"object","properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"]},"RequestForgotPasswordOtpDto":{"type":"object","properties":{"phoneNumber":{"type":"string","description":"Saudi mobile number in the format +966500110011. Numbers sent as +9660500110011 are normalized to +966500110011.","example":"+966500110011"}},"required":["phoneNumber"]},"ForgotPasswordOtpResponseDto":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"otpCode":{"type":"string","example":"1234"},"purpose":{"type":"string","enum":["FORGOT_PASSWORD"]}},"required":["expiresAt","otpCode","purpose"]},"ForgotPasswordResetTokenResponseDto":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"resetToken":{"type":"string"}},"required":["expiresAt","resetToken"]},"ResetForgotPasswordDto":{"type":"object","properties":{"resetToken":{"type":"string","description":"Short-lived token returned by forgot-password OTP verification and valid for password reset only."},"newPassword":{"type":"string"}},"required":["resetToken","newPassword"]},"SuccessResponseDto":{"type":"object","properties":{"success":{"type":"boolean","example":true}},"required":["success"]},"DonorProfileResponseDto":{"type":"object","properties":{"donor":{"$ref":"#/components/schemas/DonorResponseDto"}},"required":["donor"]},"SetPasswordDto":{"type":"object","properties":{"password":{"type":"string"}},"required":["password"]},"ChangePasswordDto":{"type":"object","properties":{"currentPassword":{"type":"string"},"newPassword":{"type":"string"}},"required":["currentPassword","newPassword"]},"DonorSessionsListResponseDto":{"type":"object","properties":{"sessions":{"type":"array","items":{"$ref":"#/components/schemas/DonorSessionResponseDto"}}},"required":["sessions"]},"AdResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"imagePath":{"type":"string"},"description":{"type":"object"},"linkUrl":{"type":"object"},"status":{"type":"string","enum":["DRAFT","PUBLISHED","ENDED"]},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","title","imagePath","status","startDate","endDate","createdAt","updatedAt"]},"Object":{"type":"object","properties":{}},"AdListResponseDto":{"type":"object","properties":{"ads":{"type":"array","items":{"$ref":"#/components/schemas/AdResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["ads","page","pageSize","total"]},"AdProfileResponseDto":{"type":"object","properties":{"ad":{"$ref":"#/components/schemas/AdResponseDto"}},"required":["ad"]},"LoginAdminDto":{"type":"object","properties":{"email":{"type":"string","format":"email"},"password":{"type":"string"},"rememberMe":{"type":"boolean","default":false}},"required":["email","password"]},"AdminRoleResponseDto":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"description":{"type":"object"},"id":{"type":"string","format":"uuid"},"isSystem":{"type":"boolean"},"name":{"type":"string"},"nameAr":{"type":"string"},"nameEn":{"type":"string"},"permissions":{"type":"array","items":{"type":"string","enum":["ROLES_CREATE","ROLES_READ","ROLES_UPDATE","ROLES_DELETE","ADMINS_CREATE","ADMINS_READ","ADMINS_UPDATE","ADMINS_DELETE","CAMPAIGNS_CREATE","CAMPAIGNS_READ","CAMPAIGNS_UPDATE","CAMPAIGNS_DELETE","CAMPAIGN_CATEGORIES_CREATE","CAMPAIGN_CATEGORIES_READ","CAMPAIGN_CATEGORIES_UPDATE","CAMPAIGN_CATEGORIES_DELETE","USERS_CREATE","USERS_READ","USERS_UPDATE","USERS_DELETE","DRIVERS_CREATE","DRIVERS_READ","DRIVERS_UPDATE","DRIVERS_DELETE","VOLUNTEER_REQUESTS_CREATE","VOLUNTEER_REQUESTS_READ","VOLUNTEER_REQUESTS_UPDATE","VOLUNTEER_REQUESTS_DELETE","VOLUNTEERS_CREATE","VOLUNTEERS_READ","VOLUNTEERS_UPDATE","VOLUNTEERS_DELETE","FAMILY_REQUESTS_CREATE","FAMILY_REQUESTS_READ","FAMILY_REQUESTS_UPDATE","FAMILY_REQUESTS_DELETE","FAMILIES_CREATE","FAMILIES_READ","FAMILIES_UPDATE","FAMILIES_DELETE","ORDERS_CREATE","ORDERS_READ","ORDERS_UPDATE","ORDERS_DELETE","ADS_CREATE","ADS_READ","ADS_UPDATE","ADS_DELETE","NOTIFICATIONS_CREATE","NOTIFICATIONS_READ","NOTIFICATIONS_UPDATE","NOTIFICATIONS_DELETE","DONATIONS_CREATE","DONATIONS_READ","DONATIONS_UPDATE","DONATIONS_DELETE","SETTINGS_CREATE","SETTINGS_READ","SETTINGS_UPDATE","SETTINGS_DELETE"]}},"updatedAt":{"type":"string","format":"date-time"}},"required":["createdAt","id","isSystem","name","nameAr","nameEn","permissions","updatedAt"]},"AdminResponseDto":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"object"},"email":{"type":"string","format":"email"},"firstLoginAt":{"type":"string","format":"date-time","nullable":true},"fullName":{"type":"string"},"id":{"type":"string","format":"uuid"},"role":{"$ref":"#/components/schemas/AdminRoleResponseDto"},"joiningStatus":{"type":"string","enum":["JOINED","NOT_JOINED"]},"invitedAt":{"type":"string","format":"date-time","nullable":true},"invitationSentCount":{"type":"number"},"lastLoginAt":{"type":"string","format":"date-time","nullable":true},"phoneNumber":{"type":"string"},"profileImagePath":{"type":"object"},"status":{"type":"string","enum":["ACTIVE","SUSPENDED"]},"updatedAt":{"type":"string","format":"date-time"}},"required":["createdAt","email","firstLoginAt","fullName","id","role","joiningStatus","invitedAt","invitationSentCount","lastLoginAt","phoneNumber","status","updatedAt"]},"AdminSessionResponseDto":{"type":"object","properties":{"createdAt":{"type":"string","format":"date-time"},"deviceInfo":{"type":"string","example":"Desktop Chrome","nullable":true},"expiresAt":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"ipAddress":{"type":"string","example":"203.0.113.42","nullable":true},"rememberMe":{"type":"boolean"},"revokedAt":{"type":"string","format":"date-time","nullable":true},"userAgent":{"type":"string","example":"Mozilla/5.0","nullable":true}},"required":["createdAt","deviceInfo","expiresAt","id","ipAddress","rememberMe","revokedAt","userAgent"]},"AdminAuthSessionResponseDto":{"type":"object","properties":{"accessToken":{"type":"string"},"accessTokenExpiresAt":{"type":"string","format":"date-time"},"admin":{"$ref":"#/components/schemas/AdminResponseDto"},"refreshToken":{"type":"string"},"session":{"$ref":"#/components/schemas/AdminSessionResponseDto"}},"required":["accessToken","accessTokenExpiresAt","admin","refreshToken","session"]},"RefreshAdminSessionDto":{"type":"object","properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"]},"RequestAdminForgotPasswordOtpDto":{"type":"object","properties":{"email":{"type":"string","format":"email"}},"required":["email"]},"AdminForgotPasswordOtpRequestResponseDto":{"type":"object","properties":{"success":{"type":"boolean","example":true}},"required":["success"]},"VerifyAdminForgotPasswordOtpDto":{"type":"object","properties":{"email":{"type":"string","format":"email"},"otpCode":{"type":"string"}},"required":["email","otpCode"]},"AdminForgotPasswordResetTokenResponseDto":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"resetToken":{"type":"string"}},"required":["expiresAt","resetToken"]},"ResetAdminForgotPasswordDto":{"type":"object","properties":{"confirmPassword":{"type":"string"},"newPassword":{"type":"string"},"resetToken":{"type":"string"}},"required":["confirmPassword","newPassword","resetToken"]},"AdminProfileResponseDto":{"type":"object","properties":{"admin":{"$ref":"#/components/schemas/AdminResponseDto"}},"required":["admin"]},"ChangeAdminPasswordDto":{"type":"object","properties":{"confirmPassword":{"type":"string"},"currentPassword":{"type":"string"},"newPassword":{"type":"string"}},"required":["confirmPassword","currentPassword","newPassword"]},"AdminPermissionGroupResponseDto":{"type":"object","properties":{"resource":{"type":"string"},"permissions":{"type":"array","items":{"type":"string","enum":["ROLES_CREATE","ROLES_READ","ROLES_UPDATE","ROLES_DELETE","ADMINS_CREATE","ADMINS_READ","ADMINS_UPDATE","ADMINS_DELETE","CAMPAIGNS_CREATE","CAMPAIGNS_READ","CAMPAIGNS_UPDATE","CAMPAIGNS_DELETE","CAMPAIGN_CATEGORIES_CREATE","CAMPAIGN_CATEGORIES_READ","CAMPAIGN_CATEGORIES_UPDATE","CAMPAIGN_CATEGORIES_DELETE","USERS_CREATE","USERS_READ","USERS_UPDATE","USERS_DELETE","DRIVERS_CREATE","DRIVERS_READ","DRIVERS_UPDATE","DRIVERS_DELETE","VOLUNTEER_REQUESTS_CREATE","VOLUNTEER_REQUESTS_READ","VOLUNTEER_REQUESTS_UPDATE","VOLUNTEER_REQUESTS_DELETE","VOLUNTEERS_CREATE","VOLUNTEERS_READ","VOLUNTEERS_UPDATE","VOLUNTEERS_DELETE","FAMILY_REQUESTS_CREATE","FAMILY_REQUESTS_READ","FAMILY_REQUESTS_UPDATE","FAMILY_REQUESTS_DELETE","FAMILIES_CREATE","FAMILIES_READ","FAMILIES_UPDATE","FAMILIES_DELETE","ORDERS_CREATE","ORDERS_READ","ORDERS_UPDATE","ORDERS_DELETE","ADS_CREATE","ADS_READ","ADS_UPDATE","ADS_DELETE","NOTIFICATIONS_CREATE","NOTIFICATIONS_READ","NOTIFICATIONS_UPDATE","NOTIFICATIONS_DELETE","DONATIONS_CREATE","DONATIONS_READ","DONATIONS_UPDATE","DONATIONS_DELETE","SETTINGS_CREATE","SETTINGS_READ","SETTINGS_UPDATE","SETTINGS_DELETE"]}}},"required":["resource","permissions"]},"AdminAvailablePermissionsResponseDto":{"type":"object","properties":{"all":{"type":"array","items":{"type":"string","enum":["ROLES_CREATE","ROLES_READ","ROLES_UPDATE","ROLES_DELETE","ADMINS_CREATE","ADMINS_READ","ADMINS_UPDATE","ADMINS_DELETE","CAMPAIGNS_CREATE","CAMPAIGNS_READ","CAMPAIGNS_UPDATE","CAMPAIGNS_DELETE","CAMPAIGN_CATEGORIES_CREATE","CAMPAIGN_CATEGORIES_READ","CAMPAIGN_CATEGORIES_UPDATE","CAMPAIGN_CATEGORIES_DELETE","USERS_CREATE","USERS_READ","USERS_UPDATE","USERS_DELETE","DRIVERS_CREATE","DRIVERS_READ","DRIVERS_UPDATE","DRIVERS_DELETE","VOLUNTEER_REQUESTS_CREATE","VOLUNTEER_REQUESTS_READ","VOLUNTEER_REQUESTS_UPDATE","VOLUNTEER_REQUESTS_DELETE","VOLUNTEERS_CREATE","VOLUNTEERS_READ","VOLUNTEERS_UPDATE","VOLUNTEERS_DELETE","FAMILY_REQUESTS_CREATE","FAMILY_REQUESTS_READ","FAMILY_REQUESTS_UPDATE","FAMILY_REQUESTS_DELETE","FAMILIES_CREATE","FAMILIES_READ","FAMILIES_UPDATE","FAMILIES_DELETE","ORDERS_CREATE","ORDERS_READ","ORDERS_UPDATE","ORDERS_DELETE","ADS_CREATE","ADS_READ","ADS_UPDATE","ADS_DELETE","NOTIFICATIONS_CREATE","NOTIFICATIONS_READ","NOTIFICATIONS_UPDATE","NOTIFICATIONS_DELETE","DONATIONS_CREATE","DONATIONS_READ","DONATIONS_UPDATE","DONATIONS_DELETE","SETTINGS_CREATE","SETTINGS_READ","SETTINGS_UPDATE","SETTINGS_DELETE"]}},"groups":{"type":"array","items":{"$ref":"#/components/schemas/AdminPermissionGroupResponseDto"}}},"required":["all","groups"]},"CreateRoleDto":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string","description":"Legacy role key. If omitted, the API derives it from the English role name."},"nameAr":{"type":"string"},"nameEn":{"type":"string"},"permissions":{"type":"array","items":{"type":"string","enum":["ROLES_CREATE","ROLES_READ","ROLES_UPDATE","ROLES_DELETE","ADMINS_CREATE","ADMINS_READ","ADMINS_UPDATE","ADMINS_DELETE","CAMPAIGNS_CREATE","CAMPAIGNS_READ","CAMPAIGNS_UPDATE","CAMPAIGNS_DELETE","CAMPAIGN_CATEGORIES_CREATE","CAMPAIGN_CATEGORIES_READ","CAMPAIGN_CATEGORIES_UPDATE","CAMPAIGN_CATEGORIES_DELETE","USERS_CREATE","USERS_READ","USERS_UPDATE","USERS_DELETE","DRIVERS_CREATE","DRIVERS_READ","DRIVERS_UPDATE","DRIVERS_DELETE","VOLUNTEER_REQUESTS_CREATE","VOLUNTEER_REQUESTS_READ","VOLUNTEER_REQUESTS_UPDATE","VOLUNTEER_REQUESTS_DELETE","VOLUNTEERS_CREATE","VOLUNTEERS_READ","VOLUNTEERS_UPDATE","VOLUNTEERS_DELETE","FAMILY_REQUESTS_CREATE","FAMILY_REQUESTS_READ","FAMILY_REQUESTS_UPDATE","FAMILY_REQUESTS_DELETE","FAMILIES_CREATE","FAMILIES_READ","FAMILIES_UPDATE","FAMILIES_DELETE","ORDERS_CREATE","ORDERS_READ","ORDERS_UPDATE","ORDERS_DELETE","ADS_CREATE","ADS_READ","ADS_UPDATE","ADS_DELETE","NOTIFICATIONS_CREATE","NOTIFICATIONS_READ","NOTIFICATIONS_UPDATE","NOTIFICATIONS_DELETE","DONATIONS_CREATE","DONATIONS_READ","DONATIONS_UPDATE","DONATIONS_DELETE","SETTINGS_CREATE","SETTINGS_READ","SETTINGS_UPDATE","SETTINGS_DELETE"]}}},"required":["nameAr","nameEn","permissions"]},"AdminRoleListResponseDto":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"roles":{"type":"array","items":{"$ref":"#/components/schemas/AdminRoleResponseDto"}},"total":{"type":"number"}},"required":["page","pageSize","roles","total"]},"UpdateRoleDto":{"type":"object","properties":{"description":{"type":"string"},"name":{"type":"string"},"nameAr":{"type":"string"},"nameEn":{"type":"string"},"permissions":{"type":"array","items":{"type":"string","enum":["ROLES_CREATE","ROLES_READ","ROLES_UPDATE","ROLES_DELETE","ADMINS_CREATE","ADMINS_READ","ADMINS_UPDATE","ADMINS_DELETE","CAMPAIGNS_CREATE","CAMPAIGNS_READ","CAMPAIGNS_UPDATE","CAMPAIGNS_DELETE","CAMPAIGN_CATEGORIES_CREATE","CAMPAIGN_CATEGORIES_READ","CAMPAIGN_CATEGORIES_UPDATE","CAMPAIGN_CATEGORIES_DELETE","USERS_CREATE","USERS_READ","USERS_UPDATE","USERS_DELETE","DRIVERS_CREATE","DRIVERS_READ","DRIVERS_UPDATE","DRIVERS_DELETE","VOLUNTEER_REQUESTS_CREATE","VOLUNTEER_REQUESTS_READ","VOLUNTEER_REQUESTS_UPDATE","VOLUNTEER_REQUESTS_DELETE","VOLUNTEERS_CREATE","VOLUNTEERS_READ","VOLUNTEERS_UPDATE","VOLUNTEERS_DELETE","FAMILY_REQUESTS_CREATE","FAMILY_REQUESTS_READ","FAMILY_REQUESTS_UPDATE","FAMILY_REQUESTS_DELETE","FAMILIES_CREATE","FAMILIES_READ","FAMILIES_UPDATE","FAMILIES_DELETE","ORDERS_CREATE","ORDERS_READ","ORDERS_UPDATE","ORDERS_DELETE","ADS_CREATE","ADS_READ","ADS_UPDATE","ADS_DELETE","NOTIFICATIONS_CREATE","NOTIFICATIONS_READ","NOTIFICATIONS_UPDATE","NOTIFICATIONS_DELETE","DONATIONS_CREATE","DONATIONS_READ","DONATIONS_UPDATE","DONATIONS_DELETE","SETTINGS_CREATE","SETTINGS_READ","SETTINGS_UPDATE","SETTINGS_DELETE"]}}}},"AdminListResponseDto":{"type":"object","properties":{"admins":{"type":"array","items":{"$ref":"#/components/schemas/AdminResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["admins","page","pageSize","total"]},"CampaignCategoryResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"iconPath":{"type":"string"},"name":{"type":"string"},"campaignsCount":{"type":"number"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","iconPath","name","campaignsCount","createdAt","updatedAt"]},"CampaignCategoryListResponseDto":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/CampaignCategoryResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["categories","page","pageSize","total"]},"CampaignCategoryDetailResponseDto":{"type":"object","properties":{"category":{"$ref":"#/components/schemas/CampaignCategoryResponseDto"}},"required":["category"]},"CampaignListCategoryResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"iconPath":{"type":"string"}},"required":["id","name","iconPath"]},"CampaignResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"},"description":{"type":"string"},"imagePath":{"type":"object"},"category":{"$ref":"#/components/schemas/CampaignListCategoryResponseDto"},"donationTarget":{"type":"number"},"collectedAmount":{"type":"number"},"remainingAmount":{"type":"number"},"donorsCount":{"type":"number"},"averageDonation":{"type":"number"},"percentageAchieved":{"type":"number"},"startDate":{"type":"string","format":"date-time"},"endDate":{"type":"string","format":"date-time","nullable":true},"creationStatus":{"type":"string","enum":["DRAFT","PUBLISHED"]},"status":{"type":"string","enum":["DRAFT","PUBLISHED","STOPPED","ENDED"]},"isExpanded":{"type":"boolean"},"expandedAt":{"type":"string","format":"date-time","nullable":true},"previousEndDate":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","title","description","category","donationTarget","collectedAmount","remainingAmount","donorsCount","averageDonation","percentageAchieved","startDate","endDate","creationStatus","status","isExpanded","expandedAt","previousEndDate","createdAt","updatedAt"]},"CampaignListResponseDto":{"type":"object","properties":{"campaigns":{"type":"array","items":{"$ref":"#/components/schemas/CampaignResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["campaigns","page","pageSize","total"]},"CampaignDetailResponseDto":{"type":"object","properties":{"campaign":{"$ref":"#/components/schemas/CampaignResponseDto"}},"required":["campaign"]},"ExpandCampaignDto":{"type":"object","properties":{"newEndDate":{"format":"date-time","type":"string","example":"2026-06-15T23:59:59.000Z","description":"Must be later than the current endDate. Example: if current endDate is 2026-05-31T23:59:59.000Z, use 2026-06-15T23:59:59.000Z."}},"required":["newEndDate"]},"AdminDonorResponseDto":{"type":"object","properties":{"accountStatus":{"type":"string","enum":["ACTIVE","SUSPENDED"],"example":"ACTIVE"},"createdAt":{"type":"string","format":"date-time"},"deletedAt":{"type":"string","format":"date-time","nullable":true},"email":{"type":"string","example":"donor@selsal.com","format":"email","nullable":true},"fullName":{"type":"string","example":"Selsal Donor","nullable":true},"id":{"type":"string","format":"uuid"},"lastLoginAt":{"type":"string","format":"date-time","nullable":true},"phoneNumber":{"type":"string","example":"+966500110011"},"phoneVerifiedAt":{"type":"string","format":"date-time","nullable":true},"profileImagePath":{"type":"string","example":"/files/profile-image.jpg","nullable":true},"registrationDate":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["accountStatus","createdAt","deletedAt","email","fullName","id","lastLoginAt","phoneNumber","phoneVerifiedAt","profileImagePath","registrationDate","updatedAt"]},"AdminDonorListResponseDto":{"type":"object","properties":{"donors":{"type":"array","items":{"$ref":"#/components/schemas/AdminDonorResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["donors","page","pageSize","total"]},"AdminDonorDonationHistoryItemDto":{"type":"object","properties":{"amount":{"type":"number"},"campaignName":{"type":"string"},"donationDate":{"type":"string","format":"date-time"},"id":{"type":"string","format":"uuid"},"receiptReference":{"type":"string"}},"required":["amount","campaignName","donationDate","id","receiptReference"]},"AdminDonorProfileResponseDto":{"type":"object","properties":{"donationHistory":{"type":"array","items":{"$ref":"#/components/schemas/AdminDonorDonationHistoryItemDto"}},"donor":{"$ref":"#/components/schemas/AdminDonorResponseDto"},"totalDonatedAmount":{"type":"number"},"totalDonationsCount":{"type":"number"}},"required":["donationHistory","donor","totalDonatedAmount","totalDonationsCount"]},"DonationAnalyticsMetricDto":{"type":"object","properties":{"label":{"type":"string"},"amount":{"type":"number"},"count":{"type":"number","nullable":true}},"required":["label","amount"]},"DonationAnalyticsResponseDto":{"type":"object","properties":{"totalAmount":{"type":"number"},"totalDonations":{"type":"number"},"totalDonors":{"type":"number"},"activeCampaigns":{"type":"number"},"topFundedCampaign":{"type":"string","nullable":true},"topFundedCampaignAmount":{"type":"number","nullable":true},"monthlyDonations":{"type":"array","items":{"$ref":"#/components/schemas/DonationAnalyticsMetricDto"}},"donationsByCampaign":{"type":"array","items":{"$ref":"#/components/schemas/DonationAnalyticsMetricDto"}},"donationsByPaymentMethod":{"type":"array","items":{"$ref":"#/components/schemas/DonationAnalyticsMetricDto"}}},"required":["totalAmount","totalDonations","totalDonors","activeCampaigns","monthlyDonations","donationsByCampaign","donationsByPaymentMethod"]},"DonationCampaignSummaryDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"title":{"type":"string"}},"required":["id","title"]},"DonationDonorSummaryDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid","nullable":true},"fullName":{"type":"string"},"email":{"type":"string","format":"email","nullable":true},"phoneNumber":{"type":"string"}},"required":["fullName","phoneNumber"]},"AdminDonationResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"amount":{"type":"number"},"currencyIso":{"type":"string"},"channel":{"type":"string","enum":["WEB","MOBILE"]},"status":{"type":"string","enum":["PENDING","PAID","FAILED","CANCELLED"]},"provider":{"type":"string","enum":["MYFATOORAH"]},"campaign":{"$ref":"#/components/schemas/DonationCampaignSummaryDto"},"donor":{"$ref":"#/components/schemas/DonationDonorSummaryDto"},"paymentMethodId":{"type":"number"},"paymentMethodName":{"type":"string","nullable":true},"paymentMethodCode":{"type":"string","nullable":true},"providerInvoiceId":{"type":"string","nullable":true},"providerPaymentId":{"type":"string","nullable":true},"invoiceReference":{"type":"string","nullable":true},"receiptReference":{"type":"string"},"providerPayload":{"type":"object","nullable":true},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true},"failedAt":{"type":"string","format":"date-time","nullable":true},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","amount","currencyIso","channel","status","provider","campaign","donor","paymentMethodId","receiptReference","createdAt","paidAt","failedAt","updatedAt"]},"AdminDonationListResponseDto":{"type":"object","properties":{"donations":{"type":"array","items":{"$ref":"#/components/schemas/AdminDonationResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["donations","page","pageSize","total"]},"AdminDonationDetailResponseDto":{"type":"object","properties":{"donation":{"$ref":"#/components/schemas/AdminDonationResponseDto"}},"required":["donation"]},"DonationPaymentMethodResponseDto":{"type":"object","properties":{"paymentMethodId":{"type":"number"},"paymentMethodNameEn":{"type":"string"},"paymentMethodNameAr":{"type":"string"},"paymentMethodCode":{"type":"string"},"serviceCharge":{"type":"number"},"totalAmount":{"type":"number"},"currencyIso":{"type":"string"},"paymentCurrencyIso":{"type":"string"},"isDirectPayment":{"type":"boolean"},"isEmbeddedSupported":{"type":"boolean"},"imageUrl":{"type":"object"}},"required":["paymentMethodId","paymentMethodNameEn","paymentMethodNameAr","paymentMethodCode","serviceCharge","totalAmount","currencyIso","paymentCurrencyIso","isDirectPayment","isEmbeddedSupported"]},"DonationPaymentMethodListResponseDto":{"type":"object","properties":{"paymentMethods":{"type":"array","items":{"$ref":"#/components/schemas/DonationPaymentMethodResponseDto"}}},"required":["paymentMethods"]},"CreateDonationItemDto":{"type":"object","properties":{"campaignId":{"type":"string","format":"uuid","example":"880158d7-ec0f-4066-8b99-0308b2c663c7"},"amount":{"type":"number","minimum":0.01,"example":100}},"required":["campaignId","amount"]},"CreateDonationDto":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CreateDonationItemDto"}},"paymentMethodId":{"type":"number","example":2,"description":"MyFatoorah payment method ID returned by the payment-methods endpoint."},"channel":{"type":"string","enum":["WEB","MOBILE"],"example":"WEB","description":"Use WEB for browser clients and MOBILE for Flutter apps."},"successUrl":{"type":"string","example":"https://app.selsal.com/donations/result?status=success","description":"Frontend success URL. MyFatoorah does not allow localhost callback domains."},"errorUrl":{"type":"string","example":"https://app.selsal.com/donations/result?status=failed","description":"Frontend failure URL. MyFatoorah does not allow localhost callback domains."}},"required":["items","paymentMethodId","channel"]},"ClientDonationCheckoutItemResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"amount":{"type":"number"},"campaign":{"$ref":"#/components/schemas/DonationCampaignSummaryDto"},"status":{"type":"string","enum":["PENDING","PAID","FAILED","CANCELLED"]}},"required":["id","amount","campaign","status"]},"ClientDonationCheckoutResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"totalAmount":{"type":"number"},"currencyIso":{"type":"string"},"channel":{"type":"string","enum":["WEB","MOBILE"]},"status":{"type":"string","enum":["PENDING","PAID","FAILED","CANCELLED"]},"provider":{"type":"string","enum":["MYFATOORAH"]},"paymentMethodId":{"type":"number"},"paymentMethodName":{"type":"object"},"paymentMethodCode":{"type":"object"},"paymentUrl":{"type":"object"},"providerInvoiceId":{"type":"object"},"providerPaymentId":{"type":"object"},"invoiceReference":{"type":"object"},"receiptReference":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true},"failedAt":{"type":"string","format":"date-time","nullable":true},"items":{"type":"array","items":{"$ref":"#/components/schemas/ClientDonationCheckoutItemResponseDto"}}},"required":["id","totalAmount","currencyIso","channel","status","provider","paymentMethodId","receiptReference","createdAt","paidAt","failedAt","items"]},"ClientDonationCheckoutDetailResponseDto":{"type":"object","properties":{"checkout":{"$ref":"#/components/schemas/ClientDonationCheckoutResponseDto"}},"required":["checkout"]},"ClientDonationHistoryItemResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"amount":{"type":"number"},"currencyIso":{"type":"string"},"status":{"type":"string","enum":["PENDING","PAID","FAILED","CANCELLED"]},"campaign":{"$ref":"#/components/schemas/DonationCampaignSummaryDto"},"receiptReference":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"paidAt":{"type":"string","format":"date-time","nullable":true}},"required":["id","amount","currencyIso","status","campaign","receiptReference","createdAt","paidAt"]},"ClientDonationHistoryResponseDto":{"type":"object","properties":{"donations":{"type":"array","items":{"$ref":"#/components/schemas/ClientDonationHistoryItemResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"},"totalPaidAmount":{"type":"number"},"totalPaidCampaigns":{"type":"number"}},"required":["donations","page","pageSize","total","totalPaidAmount","totalPaidCampaigns"]},"SyncDonationStatusDto":{"type":"object","properties":{"paymentId":{"type":"string","example":"07076389662322472373","description":"PaymentId returned by MyFatoorah in the redirection URL after checkout."}},"required":["paymentId"]},"NotificationResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"recipientType":{"type":"string","enum":["ADMIN","DONOR","DRIVER"]},"recipientId":{"type":"string","format":"uuid"},"title":{"type":"string","nullable":true},"message":{"type":"string"},"type":{"type":"string","enum":["SYSTEM","PUSH_BROADCAST","DONATION_CONFIRMED","CAMPAIGN_GOAL_REACHED","CAMPAIGN_PUBLISHED","CAMPAIGN_ENDING_SOON","ORDER_STATUS_UPDATED","VOLUNTEER_REQUEST_RECEIVED","FAMILY_REQUEST_RECEIVED"]},"channel":{"type":"string","enum":["IN_APP","PUSH","EMAIL"]},"targetType":{"type":"string","enum":["DASHBOARD","CAMPAIGN","DONATION","ORDER","VOLUNTEER_REQUEST","FAMILY_REQUEST","PROFILE","OTHER"],"nullable":true},"targetId":{"type":"string","format":"uuid","nullable":true},"targetPath":{"type":"string","nullable":true},"data":{"type":"object","nullable":true},"isRead":{"type":"boolean"},"readAt":{"type":"string","format":"date-time","nullable":true},"sourcePushCampaignId":{"type":"string","format":"uuid","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","recipientType","recipientId","message","type","channel","isRead","createdAt","updatedAt"]},"NotificationListResponseDto":{"type":"object","properties":{"notifications":{"type":"array","items":{"$ref":"#/components/schemas/NotificationResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["notifications","page","pageSize","total"]},"NotificationUnreadCountResponseDto":{"type":"object","properties":{"unreadCount":{"type":"number"}},"required":["unreadCount"]},"PushNotificationCampaignResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"createdByAdminId":{"type":"string","format":"uuid"},"createdByAdminName":{"type":"string"},"title":{"type":"string"},"message":{"type":"string"},"targetAudience":{"type":"string","enum":["ALL_DONORS","SPECIFIC_CAMPAIGN_DONORS"]},"campaignId":{"type":"string","format":"uuid","nullable":true},"campaignTitle":{"type":"string","nullable":true},"recipientCount":{"type":"number"},"deliveredCount":{"type":"number"},"failedCount":{"type":"number"},"deliveryStatus":{"type":"string","enum":["PENDING","SENT","PARTIAL","FAILED"]},"providerName":{"type":"string","nullable":true},"providerPayload":{"type":"object","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","createdByAdminId","createdByAdminName","title","message","targetAudience","recipientCount","deliveredCount","failedCount","deliveryStatus","createdAt","updatedAt"]},"PushNotificationCampaignListResponseDto":{"type":"object","properties":{"pushNotifications":{"type":"array","items":{"$ref":"#/components/schemas/PushNotificationCampaignResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["pushNotifications","page","pageSize","total"]},"SendPushNotificationDto":{"type":"object","properties":{"title":{"type":"string","minLength":3,"maxLength":100},"message":{"type":"string","maxLength":500},"targetAudience":{"type":"string","enum":["ALL_DONORS","SPECIFIC_CAMPAIGN_DONORS"]},"campaignId":{"type":"string","format":"uuid","nullable":true}},"required":["title","message","targetAudience"]},"PushNotificationCampaignDetailResponseDto":{"type":"object","properties":{"pushNotification":{"$ref":"#/components/schemas/PushNotificationCampaignResponseDto"}},"required":["pushNotification"]},"RegisterNotificationDeviceTokenDto":{"type":"object","properties":{"deviceId":{"type":"string"},"platform":{"type":"string","enum":["WEB","IOS","ANDROID"]},"token":{"type":"string"},"locale":{"type":"string"}},"required":["deviceId","platform","token"]},"NotificationDeviceTokenResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"ownerType":{"type":"string","enum":["ADMIN","DONOR","DRIVER"]},"ownerId":{"type":"string","format":"uuid"},"deviceId":{"type":"string"},"platform":{"type":"string","enum":["WEB","IOS","ANDROID"]},"token":{"type":"string"},"locale":{"type":"string","nullable":true},"isActive":{"type":"boolean"},"lastSeenAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","ownerType","ownerId","deviceId","platform","token","isActive","lastSeenAt","createdAt","updatedAt"]},"NotificationDeviceTokenDetailResponseDto":{"type":"object","properties":{"deviceToken":{"$ref":"#/components/schemas/NotificationDeviceTokenResponseDto"}},"required":["deviceToken"]},"DriverResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"fullName":{"type":"string"},"idNumber":{"type":"string"},"phoneNumber":{"type":"string"},"vehicleType":{"type":"string"},"licensePlateNumber":{"type":"string"},"driverLicensePath":{"type":"string"},"vehicleRegistrationPath":{"type":"string"},"profileImagePath":{"type":"object"},"accountStatus":{"type":"string","enum":["ACTIVE","SUSPENDED"]},"activeOrdersCount":{"type":"number"},"completedOrdersCount":{"type":"number"},"lastLoginAt":{"type":"string","format":"date-time","nullable":true},"deletedAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","fullName","idNumber","phoneNumber","vehicleType","licensePlateNumber","driverLicensePath","vehicleRegistrationPath","accountStatus","activeOrdersCount","completedOrdersCount","lastLoginAt","deletedAt","createdAt","updatedAt"]},"DriverListResponseDto":{"type":"object","properties":{"drivers":{"type":"array","items":{"$ref":"#/components/schemas/DriverResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["drivers","page","pageSize","total"]},"DriverProfileResponseDto":{"type":"object","properties":{"driver":{"$ref":"#/components/schemas/DriverResponseDto"}},"required":["driver"]},"DriverLoginDto":{"type":"object","properties":{"phoneNumber":{"type":"string","example":"+966500110011"},"password":{"type":"string"}},"required":["phoneNumber","password"]},"DriverSessionResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"revokedAt":{"type":"string","format":"date-time","nullable":true},"deviceInfo":{"type":"object"},"ipAddress":{"type":"object"},"userAgent":{"type":"object"}},"required":["id","createdAt","expiresAt","revokedAt"]},"DriverAuthSessionResponseDto":{"type":"object","properties":{"accessToken":{"type":"string"},"accessTokenExpiresAt":{"type":"string","format":"date-time"},"refreshToken":{"type":"string"},"driver":{"$ref":"#/components/schemas/DriverResponseDto"},"session":{"$ref":"#/components/schemas/DriverSessionResponseDto"}},"required":["accessToken","accessTokenExpiresAt","refreshToken","driver","session"]},"RefreshDriverSessionDto":{"type":"object","properties":{"refreshToken":{"type":"string"}},"required":["refreshToken"]},"RequestDriverForgotPasswordOtpDto":{"type":"object","properties":{"phoneNumber":{"type":"string","example":"+966500110011"}},"required":["phoneNumber"]},"DriverForgotPasswordOtpResponseDto":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"otpCode":{"type":"string","example":"123456"}},"required":["expiresAt","otpCode"]},"VerifyDriverForgotPasswordOtpDto":{"type":"object","properties":{"phoneNumber":{"type":"string","example":"+966500110011"},"otpCode":{"type":"string","example":"123456"}},"required":["phoneNumber","otpCode"]},"DriverForgotPasswordResetTokenResponseDto":{"type":"object","properties":{"expiresAt":{"type":"string","format":"date-time"},"resetToken":{"type":"string"}},"required":["expiresAt","resetToken"]},"ResetDriverForgotPasswordDto":{"type":"object","properties":{"resetToken":{"type":"string"},"newPassword":{"type":"string"},"confirmPassword":{"type":"string"}},"required":["resetToken","newPassword","confirmPassword"]},"ChangeDriverPasswordDto":{"type":"object","properties":{"currentPassword":{"type":"string"},"newPassword":{"type":"string"},"confirmPassword":{"type":"string"}},"required":["currentPassword","newPassword","confirmPassword"]},"FamilyResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"representativeName":{"type":"string"},"phoneNumber":{"type":"string"},"email":{"type":"string","format":"email"},"city":{"type":"string"},"familyMembersCount":{"type":"number"},"situationDescription":{"type":"string"},"supportingDocumentPaths":{"type":"array","items":{"type":"string"}},"latitude":{"type":"number"},"longitude":{"type":"number"},"acceptedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","representativeName","phoneNumber","email","city","familyMembersCount","situationDescription","supportingDocumentPaths","latitude","longitude","acceptedAt","createdAt","updatedAt"]},"FamilyListResponseDto":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"},"families":{"type":"array","items":{"$ref":"#/components/schemas/FamilyResponseDto"}}},"required":["page","pageSize","total","families"]},"FamilyProfileResponseDto":{"type":"object","properties":{"family":{"$ref":"#/components/schemas/FamilyResponseDto"}},"required":["family"]},"FamilyRequestResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"representativeName":{"type":"string"},"phoneNumber":{"type":"string"},"email":{"type":"string","format":"email"},"city":{"type":"string"},"familyMembersCount":{"type":"number"},"situationDescription":{"type":"string"},"supportingDocumentPaths":{"type":"array","items":{"type":"string"}},"latitude":{"type":"number"},"longitude":{"type":"number"},"requestStatus":{"type":"string","enum":["UNDER_REVIEW","ACCEPTED","REJECTED"]},"requestDate":{"type":"string","format":"date-time"},"reviewedAt":{"type":"string","format":"date-time","nullable":true},"rejectionReason":{"type":"object"},"familyId":{"type":"string","format":"uuid","nullable":true}},"required":["id","representativeName","phoneNumber","email","city","familyMembersCount","situationDescription","supportingDocumentPaths","latitude","longitude","requestStatus","requestDate","reviewedAt","familyId"]},"FamilyRequestListResponseDto":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"},"familyRequests":{"type":"array","items":{"$ref":"#/components/schemas/FamilyRequestResponseDto"}}},"required":["page","pageSize","total","familyRequests"]},"FamilyRequestProfileResponseDto":{"type":"object","properties":{"familyRequest":{"$ref":"#/components/schemas/FamilyRequestResponseDto"}},"required":["familyRequest"]},"Function":{"type":"object","properties":{}},"VolunteerRequestResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"fullName":{"type":"string"},"phoneNumber":{"type":"string"},"email":{"type":"string","format":"email"},"city":{"type":"string"},"skills":{"type":"string"},"volunteerType":{"type":"string"},"requestStatus":{"type":"string","enum":["UNDER_REVIEW","ACCEPTED","REJECTED"]},"requestDate":{"type":"string","format":"date-time"},"reviewedAt":{"type":"string","format":"date-time","nullable":true},"rejectionReason":{"type":"object"},"volunteerId":{"type":"string","format":"uuid","nullable":true}},"required":["id","fullName","phoneNumber","email","city","skills","volunteerType","requestStatus","requestDate","reviewedAt","volunteerId"]},"VolunteerRequestListResponseDto":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"},"volunteerRequests":{"type":"array","items":{"$ref":"#/components/schemas/VolunteerRequestResponseDto"}}},"required":["page","pageSize","total","volunteerRequests"]},"VolunteerRequestProfileResponseDto":{"type":"object","properties":{"volunteerRequest":{"$ref":"#/components/schemas/VolunteerRequestResponseDto"}},"required":["volunteerRequest"]},"VolunteerResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"fullName":{"type":"string"},"phoneNumber":{"type":"string"},"email":{"type":"string","format":"email"},"city":{"type":"string"},"skills":{"type":"string"},"volunteerType":{"type":"string"},"acceptedAt":{"type":"string","format":"date-time"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","fullName","phoneNumber","email","city","skills","volunteerType","acceptedAt","createdAt","updatedAt"]},"VolunteerListResponseDto":{"type":"object","properties":{"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"},"volunteers":{"type":"array","items":{"$ref":"#/components/schemas/VolunteerResponseDto"}}},"required":["page","pageSize","total","volunteers"]},"VolunteerProfileResponseDto":{"type":"object","properties":{"volunteer":{"$ref":"#/components/schemas/VolunteerResponseDto"}},"required":["volunteer"]},"CreateVolunteerRequestDto":{"type":"object","properties":{"fullName":{"type":"string","example":"Selsal Volunteer"},"phoneNumber":{"type":"string","example":"+966500110011","description":"Saudi mobile number in the format +966500110011. Numbers sent as +9660500110011 are normalized to +966500110011."},"email":{"type":"string","format":"email","example":"volunteer@selsal.com"},"city":{"type":"string","example":"Riyadh"},"skills":{"type":"string","example":"Community coordination, event support, and family outreach."},"volunteerType":{"type":"string","example":"Field Volunteer"}},"required":["fullName","phoneNumber","email","city","skills","volunteerType"]},"GeneralSettingsResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"systemNameEn":{"type":"string"},"systemNameAr":{"type":"string"},"supportEmail":{"type":"string","format":"email"},"supportPhone":{"type":"string"},"supportWhatsapp":{"type":"string","nullable":true},"addressEn":{"type":"string","nullable":true},"addressAr":{"type":"string","nullable":true},"logoPath":{"type":"string","nullable":true},"faviconPath":{"type":"string","nullable":true},"facebookUrl":{"type":"string","nullable":true},"instagramUrl":{"type":"string","nullable":true},"xUrl":{"type":"string","nullable":true},"youtubeUrl":{"type":"string","nullable":true},"linkedinUrl":{"type":"string","nullable":true},"defaultCurrencyCode":{"type":"string"},"donationAlertThreshold":{"type":"number"},"aboutSnippetEn":{"type":"string","nullable":true},"aboutSnippetAr":{"type":"string","nullable":true},"footerTextEn":{"type":"string","nullable":true},"footerTextAr":{"type":"string","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","systemNameEn","systemNameAr","supportEmail","supportPhone","defaultCurrencyCode","donationAlertThreshold","createdAt","updatedAt"]},"GeneralSettingsDetailResponseDto":{"type":"object","properties":{"settings":{"$ref":"#/components/schemas/GeneralSettingsResponseDto"}},"required":["settings"]},"CreateMediaVideoDto":{"type":"object","properties":{"titleEn":{"type":"string","minLength":3,"maxLength":120},"titleAr":{"type":"string","minLength":3,"maxLength":120},"descriptionEn":{"type":"string","maxLength":1000},"descriptionAr":{"type":"string","maxLength":1000},"youtubeUrl":{"type":"string","format":"uri"},"isPublished":{"type":"boolean","default":false}},"required":["titleEn","titleAr","youtubeUrl"]},"MediaVideoResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"titleEn":{"type":"string"},"titleAr":{"type":"string"},"descriptionEn":{"type":"object","nullable":true},"descriptionAr":{"type":"object","nullable":true},"youtubeUrl":{"type":"string"},"youtubeVideoId":{"type":"string"},"thumbnailUrl":{"type":"string"},"isPublished":{"type":"boolean"},"publishedAt":{"type":"object","format":"date-time","nullable":true},"createdAt":{"format":"date-time","type":"string"},"updatedAt":{"format":"date-time","type":"string"}},"required":["id","titleEn","titleAr","descriptionEn","descriptionAr","youtubeUrl","youtubeVideoId","thumbnailUrl","isPublished","publishedAt","createdAt","updatedAt"]},"AdminMediaVideoListResponseDto":{"type":"object","properties":{"mediaVideos":{"type":"array","items":{"$ref":"#/components/schemas/MediaVideoResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["mediaVideos","page","pageSize","total"]},"AdminMediaVideoDetailResponseDto":{"type":"object","properties":{"mediaVideo":{"$ref":"#/components/schemas/MediaVideoResponseDto"}},"required":["mediaVideo"]},"UpdateMediaVideoDto":{"type":"object","properties":{"titleEn":{"type":"string","minLength":3,"maxLength":120},"titleAr":{"type":"string","minLength":3,"maxLength":120},"descriptionEn":{"type":"string","maxLength":1000},"descriptionAr":{"type":"string","maxLength":1000},"youtubeUrl":{"type":"string","format":"uri"},"isPublished":{"type":"boolean","default":false}}},"ClientMediaVideoListResponseDto":{"type":"object","properties":{"mediaVideos":{"type":"array","items":{"$ref":"#/components/schemas/MediaVideoResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["mediaVideos","page","pageSize","total"]},"CreateOrderDto":{"type":"object","properties":{"familyId":{"type":"string","format":"uuid"},"driverId":{"type":"string","format":"uuid"},"description":{"type":"string","example":"Deliver food basket and hygiene supplies."},"deliveryDate":{"format":"date-time","type":"string","example":"2026-05-01T08:00:00.000Z"}},"required":["familyId","driverId","description","deliveryDate"]},"OrderFamilyResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"representativeName":{"type":"string"},"phoneNumber":{"type":"string"},"email":{"type":"string"},"city":{"type":"string"},"familyMembersCount":{"type":"number"},"situationDescription":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["id","representativeName","phoneNumber","email","city","familyMembersCount","situationDescription","latitude","longitude"]},"OrderDriverResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"fullName":{"type":"string"},"phoneNumber":{"type":"string"}},"required":["id","fullName","phoneNumber"]},"OrderStatusHistoryResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string","enum":["NEW","IN_PROGRESS","RECEIVED","COMPLETED","CANCELLED"]},"changedByAdminId":{"type":"object","format":"uuid","nullable":true},"note":{"type":"object"},"changedAt":{"type":"string","format":"date-time"}},"required":["id","status","changedByAdminId","changedAt"]},"OrderResponseDto":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"description":{"type":"string"},"deliveryDate":{"type":"string","format":"date-time"},"status":{"type":"string","enum":["NEW","IN_PROGRESS","RECEIVED","COMPLETED","CANCELLED"]},"family":{"$ref":"#/components/schemas/OrderFamilyResponseDto"},"driver":{"$ref":"#/components/schemas/OrderDriverResponseDto"},"createdByAdminId":{"type":"object","format":"uuid","nullable":true},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"statusHistory":{"type":"array","items":{"$ref":"#/components/schemas/OrderStatusHistoryResponseDto"}}},"required":["id","description","deliveryDate","status","family","driver","createdByAdminId","createdAt","updatedAt","statusHistory"]},"OrderListResponseDto":{"type":"object","properties":{"orders":{"type":"array","items":{"$ref":"#/components/schemas/OrderResponseDto"}},"page":{"type":"number"},"pageSize":{"type":"number"},"total":{"type":"number"}},"required":["orders","page","pageSize","total"]},"OrderProfileResponseDto":{"type":"object","properties":{"order":{"$ref":"#/components/schemas/OrderResponseDto"}},"required":["order"]},"UpdateOrderDto":{"type":"object","properties":{"driverId":{"type":"string","format":"uuid"},"description":{"type":"string","example":"Deliver food basket and hygiene supplies."},"deliveryDate":{"format":"date-time","type":"string","example":"2026-05-01T08:00:00.000Z"}}},"UpdateOrderStatusDto":{"type":"object","properties":{"status":{"type":"string","enum":["NEW","IN_PROGRESS","RECEIVED","COMPLETED","CANCELLED"]},"note":{"type":"string","example":"Driver confirmed delivery."}},"required":["status"]}}},"x-error-language-support":{"default":"ar","header":"Accept-Language","supported":["en","ar"]}}