definitions: addressparam.BenefactorAddAddressRequest: properties: address: example: tehran type: string city_id: example: 1 type: integer lat: example: 22.23 type: number lon: example: 22.22 type: number name: example: home type: string postal_code: example: "1234567890" type: string type: object addressparam.BenefactorAddAddressResponse: properties: address: $ref: '#/definitions/entity.Address' type: object addressparam.GetAddressResponse: properties: address: $ref: '#/definitions/entity.Address' type: object addressparam.GetAllCitiesResponse: properties: cities: items: $ref: '#/definitions/entity.City' type: array type: object addressparam.GetAllProvincesResponse: properties: provinces: items: $ref: '#/definitions/entity.Province' type: array type: object adminkindboxreqparam.AssignSenderRequest: properties: sender_agent_id: type: integer type: object adminkindboxreqparam.AssignSenderResponse: type: object adminkindboxreqparam.DeliverKindBoxReqResponse: type: object adminkindboxreqparam.KindBoxReqAcceptRequest: properties: count_accepted: type: integer type: object adminkindboxreqparam.KindBoxReqAcceptResponse: properties: count_accepted: type: integer count_requested: type: integer deliver_address_id: type: integer deliver_refer_date: type: string kind_box_req_id: type: integer kind_box_req_status: $ref: '#/definitions/entity.KindBoxReqStatus' type: object adminkindboxreqparam.KindBoxReqGetAllResponse: properties: all_kind_box_req: items: $ref: '#/definitions/entity.KindBoxReq' type: array pagination: $ref: '#/definitions/param.PaginationResponse' type: object adminkindboxreqparam.KindBoxReqRejectRequest: properties: description: example: description type: string type: object adminkindboxreqparam.KindBoxReqRejectResponse: properties: benefactor_id: example: 1 type: integer count_requested: example: 1 type: integer deliver_address_id: example: 1 type: integer deliver_refer_date: example: "2025-01-02 15:04:05" type: string description: example: description type: string id: example: 1 type: integer kind_box_type: allOf: - $ref: '#/definitions/entity.KindBoxType' example: 1 status: allOf: - $ref: '#/definitions/entity.KindBoxReqStatus' example: 1 type: object adminserviceparam.AdminInfo: properties: description: example: This is a description type: string email: example: example@gmail.com type: string first_name: example: John type: string gender: allOf: - $ref: '#/definitions/entity.Gender' example: 1 id: example: 1 type: integer last_name: example: Doe type: string phone_number: example: "09123456789" type: string role: allOf: - $ref: '#/definitions/entity.AdminRole' example: 2 status: allOf: - $ref: '#/definitions/entity.AdminStatus' example: 1 type: object adminserviceparam.LoginWithPhoneNumberRequest: properties: password: example: password123 type: string phone_number: example: "09123456789" type: string type: object adminserviceparam.LoginWithPhoneNumberResponse: properties: admin_info: $ref: '#/definitions/adminserviceparam.AdminInfo' tokens: $ref: '#/definitions/adminserviceparam.Tokens' type: object adminserviceparam.RegisterRequest: properties: description: example: this is a description type: string email: example: miaad.66@gmail.com type: string first_name: example: miaad type: string gender: allOf: - $ref: '#/definitions/entity.Gender' example: 1 last_name: example: shahi type: string password: example: Abc123456 type: string phone_number: example: "09183723447" type: string role: allOf: - $ref: '#/definitions/entity.AdminRole' example: 2 status: allOf: - $ref: '#/definitions/entity.AdminStatus' example: 1 type: object adminserviceparam.RegisterResponse: properties: admin: $ref: '#/definitions/entity.Admin' type: object adminserviceparam.Tokens: properties: access_token: type: string refresh_token: type: string type: object benefactoreparam.BenefactroInfo: properties: first_name: example: mehdi type: string id: example: 1 type: integer last_name: example: rez type: string role: example: benefactor type: string type: object benefactoreparam.LoginOrRegisterRequest: properties: phone_number: example: "09198829528" type: string verification_code: example: "12345" type: string type: object benefactoreparam.LoginOrRegisterResponse: properties: benefactore_info: $ref: '#/definitions/benefactoreparam.BenefactroInfo' tokens: $ref: '#/definitions/benefactoreparam.Tokens' type: object benefactoreparam.SendOtpRequest: properties: phone_number: example: "09198829528" type: string type: object benefactoreparam.SendOtpResponse: properties: code: description: "this just use in test .env\n\t\tTODO - remove it after test" type: string phone_number: example: "09198829528" type: string type: object benefactoreparam.Tokens: properties: access_token: type: string refresh_token: type: string type: object benefactorkindboxparam.KindBoxGetResponse: properties: amount: type: integer benefactorID: type: integer deliverAddressID: type: integer deliverReferDate: type: string deliveredAt: type: string id: type: integer kindBoxReqID: type: integer receiverAgentID: type: integer returnAddressID: type: integer returnReferDate: type: string returnedAt: type: string senderAgentID: type: integer serialNumber: type: string status: $ref: '#/definitions/entity.KindBoxStatus' type: $ref: '#/definitions/entity.KindBoxType' type: object benefactorkindboxreqparam.KindBoxReqAddRequest: properties: benefactor_id: example: 1 type: integer count_requested: example: 2 type: integer deliver_address_id: example: 1 type: integer deliver_refer_date: example: "2025-01-02 15:04:05" type: string type_id: allOf: - $ref: '#/definitions/entity.KindBoxType' example: 1 type: object benefactorkindboxreqparam.KindBoxReqAddResponse: properties: kind_box_req: $ref: '#/definitions/entity.KindBoxReq' type: object benefactorkindboxreqparam.KindBoxReqGetResponse: properties: kind_box_req: $ref: '#/definitions/entity.KindBoxReq' type: object entity.Address: properties: address: type: string benefactorID: type: integer cityID: type: integer id: type: integer lat: type: number lon: type: number name: type: string postalCode: type: string provinceID: type: integer type: object entity.Admin: properties: description: type: string email: type: string firstName: type: string gender: $ref: '#/definitions/entity.Gender' id: type: integer lastName: type: string password: type: string phoneNumber: type: string role: $ref: '#/definitions/entity.AdminRole' status: $ref: '#/definitions/entity.AdminStatus' type: object entity.AdminRole: enum: - 1 - 2 - 3 type: integer x-enum-varnames: - AdminSuperAdminRole - AdminAdminRole - AdminAgentRole entity.AdminStatus: enum: - 1 - 2 type: integer x-enum-varnames: - AdminActiveStatus - AdminInactiveStatus entity.City: properties: id: type: integer name: type: string provinceID: type: integer type: object entity.Gender: enum: - 1 - 2 type: integer x-enum-varnames: - MaleGender - FemaleGender entity.KindBoxReq: properties: benefactorID: type: integer countAccepted: type: integer countRequested: type: integer deliverAddressID: type: integer deliverReferDate: type: string deliveredAt: type: string description: type: string id: type: integer kindBoxType: $ref: '#/definitions/entity.KindBoxType' senderAgentID: type: integer status: $ref: '#/definitions/entity.KindBoxReqStatus' type: object entity.KindBoxReqStatus: enum: - 1 - 2 - 3 - 4 - 5 type: integer x-enum-varnames: - KindBoxReqPendingStatus - KindBoxReqAcceptedStatus - KindBoxReqAssignedSenderAgentStatus - KindBoxReqRejectedStatus - KindBoxReqDeliveredStatus entity.KindBoxStatus: enum: - 1 - 2 - 3 - 4 - 5 type: integer x-enum-varnames: - KindBoxDeliveredStatus - KindBoxReadyToReturnStatus - KindBoxAssignedReceiverAgentStatus - KindBoxReturnedStatus - KindBoxEnumeratedStatus entity.KindBoxType: enum: - 1 - 2 - 3 type: integer x-enum-varnames: - KindBoxOnTable - KindBoxCylindrical - KindBoxStandUp entity.Province: properties: id: type: integer name: type: string type: object param.PaginationResponse: properties: page_number: example: 1 type: integer page_size: example: 10 type: integer total: example: 100 type: integer type: object info: contact: {} paths: /address/: post: consumes: - application/json description: This endpoint allows an authenticated benefactor to add a new address to their account. parameters: - description: New address details in: body name: Request required: true schema: $ref: '#/definitions/addressparam.BenefactorAddAddressRequest' produces: - application/json responses: "201": description: Created schema: $ref: '#/definitions/addressparam.BenefactorAddAddressResponse' "400": description: Bad request schema: type: string security: - AuthBearerBenefactor: [] summary: Add a new address for a benefactor tags: - Address /address/{id}: get: consumes: - application/json parameters: - description: Address ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/addressparam.GetAddressResponse' "400": description: Bad request schema: type: string security: - AuthBearerBenefactor: [] summary: Get a benefactor address tags: - Address /address/cities: get: consumes: - application/json produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/addressparam.GetAllCitiesResponse' "400": description: Bad request schema: type: string summary: Get all cities tags: - Address /address/provinces: get: consumes: - application/json produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/addressparam.GetAllProvincesResponse' "400": description: Bad request schema: type: string summary: Get all provinces tags: - Address /admin/kindboxreqs: get: consumes: - application/json parameters: - description: page_number in: query name: page_number type: integer - description: page_size in: query name: page_size type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/adminkindboxreqparam.KindBoxReqGetAllResponse' "400": description: Bad request schema: type: string security: - AuthBearerAdmin: [] summary: Admin get all kindboxreq tags: - KindBoxReq /admin/kindboxreqs/accept-kind-box-req/{id}: patch: consumes: - application/json parameters: - description: KindBoxReq ID in: path name: id required: true type: integer - description: Accept KindBoxReq Request Body in: body name: Request required: true schema: $ref: '#/definitions/adminkindboxreqparam.KindBoxReqAcceptRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/adminkindboxreqparam.KindBoxReqAcceptResponse' "400": description: Bad request schema: type: string security: - AuthBearerAdmin: [] summary: Accept kind box request by admin tags: - KindBoxReq /admin/kindboxreqs/assign-sender-agent/{id}: patch: consumes: - application/json parameters: - description: KindBoxReq ID in: path name: id required: true type: integer - description: Assign Sender Agent Request Body in: body name: Request required: true schema: $ref: '#/definitions/adminkindboxreqparam.AssignSenderRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/adminkindboxreqparam.AssignSenderResponse' "400": description: Bad request schema: type: string security: - AuthBearerAdmin: [] summary: Admin Assign Sender Agent to kindboxreq tags: - KindBoxReq /admin/kindboxreqs/deliver-kind-box-req/{id}: patch: consumes: - application/json parameters: - description: KindBoxReq ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/adminkindboxreqparam.DeliverKindBoxReqResponse' "400": description: Bad request schema: type: string security: - AuthBearerAdmin: [] summary: Admin deliver a kindboxreq tags: - KindBoxReq /admin/kindboxreqs/reject-kind-box-req/{id}: patch: consumes: - application/json parameters: - description: KindBoxReq id in: path name: id required: true type: integer - description: KindBoxReq Reject Request Body in: body name: Request required: true schema: $ref: '#/definitions/adminkindboxreqparam.KindBoxReqRejectRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/adminkindboxreqparam.KindBoxReqRejectResponse' "400": description: Bad request schema: type: string security: - AuthBearerAdmin: [] summary: Reject a kindboxreq by admin tags: - KindBoxReq /admins/login-by-phone: post: consumes: - application/json parameters: - description: Admin login request body in: body name: Request required: true schema: $ref: '#/definitions/adminserviceparam.LoginWithPhoneNumberRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/adminserviceparam.LoginWithPhoneNumberResponse' "400": description: Bad request schema: type: string summary: "Admin login by\tPhoneNumber" tags: - Admin /admins/register: post: consumes: - application/json parameters: - description: Admin Register Request Body in: body name: Request required: true schema: $ref: '#/definitions/adminserviceparam.RegisterRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/adminserviceparam.RegisterResponse' "400": description: Bad request schema: type: string security: - AuthBearerAdmin: [] summary: Register an admin by super-admin tags: - Admin /benefactor/kindboxes/: get: consumes: - application/json produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/benefactorkindboxparam.KindBoxGetResponse' "400": description: Bad request schema: type: string security: - AuthBearerBenefactor: [] summary: Get all kind boxes for a benefactor tags: - KindBox /benefactor/kindboxes/{id}: get: consumes: - application/json description: This endpoint retrieves a specific kind box associated with an authenticated benefactor. parameters: - description: Kind box ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/benefactorkindboxparam.KindBoxGetResponse' "400": description: Bad request schema: type: string security: - AuthBearerBenefactor: [] summary: Get a specific kind box for a benefactor tags: - KindBox /benefactor/kindboxreqs/: post: consumes: - application/json parameters: - description: New kind box request details in: body name: Request required: true schema: $ref: '#/definitions/benefactorkindboxreqparam.KindBoxReqAddRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/benefactorkindboxreqparam.KindBoxReqAddResponse' "400": description: Bad request schema: type: string security: - AuthBearerBenefactor: [] summary: Add a new kind box request for a benefactor tags: - KindBoxReq /benefactor/kindboxreqs/{id}: get: consumes: - application/json parameters: - description: Kind box request ID in: path name: id required: true type: integer produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/benefactorkindboxreqparam.KindBoxReqGetResponse' "400": description: Bad request schema: type: string security: - AuthBearerBenefactor: [] summary: Get a kind box request for a benefactor tags: - KindBoxReq /benefactor/login-register: post: consumes: - application/json description: This endpoint is used to authenticate an existing benefactor account or register a new one. parameters: - description: Login or register request details in: body name: Request required: true schema: $ref: '#/definitions/benefactoreparam.LoginOrRegisterRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/benefactoreparam.LoginOrRegisterResponse' "400": description: Bad request schema: type: string summary: Login or register a benefactor tags: - Benefactor /benefactor/send-otp: post: consumes: - application/json description: This endpoint sends an OTP to the benefactor's phone number for verification purposes. parameters: - description: Send OTP request details in: body name: Request required: true schema: $ref: '#/definitions/benefactoreparam.SendOtpRequest' produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/benefactoreparam.SendOtpResponse' "400": description: Bad request schema: type: string summary: Send OTP to benefactor tags: - Benefactor securityDefinitions: AuthBearerAdmin: description: Type the word 'Bearer' followed by a space and Admin JWT token in: header name: Authorization type: apiKey AuthBearerBenefactor: description: Type the word 'Bearer' followed by a space and Benefactor JWT token in: header name: Authorization type: apiKey swagger: "2.0"