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.GetAllAddressesResponse:
    properties:
      all_addresses:
        items:
          $ref: '#/definitions/entity.Address'
        type: array
    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
  addressparam.UpdateAddressRequest:
    properties:
      address:
        example: Zanjan Province, Zanjan, Etemadieh, 6th St, Iran
        type: string
      city_id:
        example: 163
        type: integer
      lat:
        example: 123.456
        type: number
      lon:
        example: 123.456
        type: number
      name:
        example: Home
        type: string
      postal_code:
        example: "1234567890"
        type: string
    type: object
  adminkindboxparam.AssignReceiverRequest:
    properties:
      receiver_agent_id:
        type: integer
    type: object
  adminkindboxparam.EnumerateKindBoxRequest:
    properties:
      amount:
        type: integer
    type: object
  adminkindboxparam.KindBoxGetAllResponse:
    properties:
      all_kind_box:
        items:
          $ref: '#/definitions/entity.KindBox'
        type: array
      pagination:
        $ref: '#/definitions/param.PaginationResponse'
    type: object
  adminkindboxparam.KindBoxGetResponse:
    properties:
      amount:
        type: integer
      benefactorID:
        type: integer
      deliverAddressID:
        type: integer
      deliverReferDate:
        type: string
      deliverReferTimeID:
        type: integer
      deliveredAt:
        type: string
      id:
        type: integer
      kindBoxReqID:
        type: integer
      kindBoxType:
        $ref: '#/definitions/entity.KindBoxType'
      receiverAgentID:
        type: integer
      returnAddressID:
        type: integer
      returnReferDate:
        type: string
      returnReferTimeID:
        type: integer
      returnedAt:
        type: string
      senderAgentID:
        type: integer
      serialNumber:
        type: string
      status:
        $ref: '#/definitions/entity.KindBoxStatus'
    type: object
  adminkindboxreqparam.AssignSenderRequest:
    properties:
      sender_agent_id:
        type: integer
    type: object
  adminkindboxreqparam.AssignSenderResponse:
    type: object
  adminkindboxreqparam.DeliverKindBoxReqRequest:
    properties:
      serial_numbers:
        example:
        - "1"
        - "2"
        - "3"
        items:
          type: string
        type: array
    type: object
  adminkindboxreqparam.DeliverKindBoxReqResponse:
    type: object
  adminkindboxreqparam.DeliveryAwaitingGetAllResponse:
    properties:
      all_awaiting_kind_box_req:
        items:
          $ref: '#/definitions/entity.KindBoxReq'
        type: array
      pagination:
        $ref: '#/definitions/param.PaginationResponse'
    type: object
  adminkindboxreqparam.DeliveryAwaitingGetResponse:
    properties:
      benefactorID:
        type: integer
      countAccepted:
        type: integer
      countRequested:
        type: integer
      deliverAddressID:
        type: integer
      deliverReferDate:
        type: string
      deliverReferTimeID:
        type: integer
      deliveredAt:
        type: string
      description:
        type: string
      id:
        type: integer
      kindBoxType:
        $ref: '#/definitions/entity.KindBoxType'
      senderAgentID:
        type: integer
      status:
        $ref: '#/definitions/entity.KindBoxReqStatus'
    type: object
  adminkindboxreqparam.GetKindBoxReqResponse:
    properties:
      benefactorID:
        type: integer
      countAccepted:
        type: integer
      countRequested:
        type: integer
      deliverAddressID:
        type: integer
      deliverReferDate:
        type: string
      deliverReferTimeID:
        type: integer
      deliveredAt:
        type: string
      description:
        type: string
      id:
        type: integer
      kindBoxType:
        $ref: '#/definitions/entity.KindBoxType'
      senderAgentID:
        type: integer
      status:
        $ref: '#/definitions/entity.KindBoxReqStatus'
    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.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
      kind_box_type:
        allOf:
        - $ref: '#/definitions/entity.KindBoxType'
        example: 1
    type: object
  adminkindboxreqparam.KindBoxReqAddResponse:
    properties:
      kindBoxReq:
        $ref: '#/definitions/entity.KindBoxReq'
    type: object
  adminkindboxreqparam.KindBoxReqGetAllResponse:
    properties:
      all_awaiting_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
  adminkindboxreqparam.KindBoxReqUpdateRequest:
    properties:
      count_accepted:
        example: 3
        type: integer
      count_requested:
        example: 5
        type: integer
      deliver_address_id:
        example: 1
        type: integer
      deliver_refer_date:
        example: "2025-01-02T15:04:05Z"
        type: string
      deliver_refer_time_id:
        example: 1
        type: integer
      description:
        example: description
        type: string
      kind_box_type:
        allOf:
        - $ref: '#/definitions/entity.KindBoxType'
        example: 2
      sender_agent_id:
        example: 1
        type: integer
    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.Agent:
    properties:
      first_name:
        example: John
        type: string
      id:
        example: 1
        type: integer
      last_name:
        example: Doe
        type: string
      phone_number:
        example: "09123456789"
        type: string
    type: object
  adminserviceparam.GetAllAgentResponse:
    properties:
      agents:
        items:
          $ref: '#/definitions/adminserviceparam.Agent'
        type: array
    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
  agentkindboxparam.GetAllResponse:
    properties:
      all_kind_boxes:
        items:
          $ref: '#/definitions/entity.KindBox'
        type: array
      pagination:
        $ref: '#/definitions/param.PaginationResponse'
    type: object
  agentkindboxparam.GetKindBoxResponse:
    properties:
      amount:
        type: integer
      benefactorID:
        type: integer
      deliverAddressID:
        type: integer
      deliverReferDate:
        type: string
      deliverReferTimeID:
        type: integer
      deliveredAt:
        type: string
      id:
        type: integer
      kindBoxReqID:
        type: integer
      kindBoxType:
        $ref: '#/definitions/entity.KindBoxType'
      receiverAgentID:
        type: integer
      returnAddressID:
        type: integer
      returnReferDate:
        type: string
      returnReferTimeID:
        type: integer
      returnedAt:
        type: string
      senderAgentID:
        type: integer
      serialNumber:
        type: string
      status:
        $ref: '#/definitions/entity.KindBoxStatus'
    type: object
  agentkindboxparam.ReturnKindBoxRequest:
    properties:
      serial_number:
        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.KindBoxGetAllResponse:
    properties:
      all_kind_box:
        items:
          $ref: '#/definitions/entity.KindBox'
        type: array
      pagination:
        $ref: '#/definitions/param.PaginationResponse'
    type: object
  benefactorkindboxparam.KindBoxGetResponse:
    properties:
      amount:
        type: integer
      benefactorID:
        type: integer
      deliverAddressID:
        type: integer
      deliverReferDate:
        type: string
      deliverReferTimeID:
        type: integer
      deliveredAt:
        type: string
      id:
        type: integer
      kindBoxReqID:
        type: integer
      kindBoxType:
        $ref: '#/definitions/entity.KindBoxType'
      receiverAgentID:
        type: integer
      returnAddressID:
        type: integer
      returnReferDate:
        type: string
      returnReferTimeID:
        type: integer
      returnedAt:
        type: string
      senderAgentID:
        type: integer
      serialNumber:
        type: string
      status:
        $ref: '#/definitions/entity.KindBoxStatus'
    type: object
  benefactorkindboxparam.KindBoxRegisterEmptyingRequest:
    properties:
      return_address_id:
        example: 1
        type: integer
      return_refer_date:
        example: "2025-01-02T15:04:05Z"
        type: string
      return_refer_time_id:
        example: 1
        type: integer
    type: object
  benefactorkindboxreqparam.GetAllResponse:
    properties:
      all_kind_box_req:
        items:
          $ref: '#/definitions/entity.KindBoxReq'
        type: array
      pagination:
        $ref: '#/definitions/param.PaginationResponse'
    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-02T15:04:05Z"
        type: string
      deliver_refer_time_id:
        example: 1
        type: integer
      kind_box_type:
        allOf:
        - $ref: '#/definitions/entity.KindBoxType'
        example: 1
    type: object
  benefactorkindboxreqparam.KindBoxReqAddResponse:
    properties:
      kind_box_req:
        $ref: '#/definitions/entity.KindBoxReq'
    type: object
  benefactorkindboxreqparam.KindBoxReqDeleteResponse:
    type: object
  benefactorkindboxreqparam.KindBoxReqGetResponse:
    properties:
      kind_box_req:
        $ref: '#/definitions/entity.KindBoxReq'
    type: object
  benefactorkindboxreqparam.KindBoxReqUpdateRequest:
    properties:
      count_requested:
        example: 5
        type: integer
      deliver_address_id:
        example: 1
        type: integer
      deliver_refer_date:
        example: "2025-01-02T15:04:05Z"
        type: string
      deliver_refer_time_id:
        example: 1
        type: integer
      description:
        example: description
        type: string
      kind_box_type:
        allOf:
        - $ref: '#/definitions/entity.KindBoxType'
        example: 2
    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.KindBox:
    properties:
      amount:
        type: integer
      benefactorID:
        type: integer
      deliverAddressID:
        type: integer
      deliverReferDate:
        type: string
      deliverReferTimeID:
        type: integer
      deliveredAt:
        type: string
      id:
        type: integer
      kindBoxReqID:
        type: integer
      kindBoxType:
        $ref: '#/definitions/entity.KindBoxType'
      receiverAgentID:
        type: integer
      returnAddressID:
        type: integer
      returnReferDate:
        type: string
      returnReferTimeID:
        type: integer
      returnedAt:
        type: string
      senderAgentID:
        type: integer
      serialNumber:
        type: string
      status:
        $ref: '#/definitions/entity.KindBoxStatus'
    type: object
  entity.KindBoxReq:
    properties:
      benefactorID:
        type: integer
      countAccepted:
        type: integer
      countRequested:
        type: integer
      deliverAddressID:
        type: integer
      deliverReferDate:
        type: string
      deliverReferTimeID:
        type: integer
      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
  httpmsg.ErrorResponse:
    properties:
      errors:
        additionalProperties:
          type: string
        type: object
      message:
        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/:
    get:
      consumes:
      - application/json
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/addressparam.GetAllAddressesResponse'
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerBenefactor: []
      summary: Get all benefactor addresses
      tags:
      - 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}:
    delete:
      description: This endpoint is used to delete an address by benefactor
      parameters:
      - description: Address ID
        in: path
        name: id
        required: true
        type: integer
      responses:
        "204":
          description: No Content
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerBenefactor: []
      summary: Delete address by benefactor
      tags:
      - Address
    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
    patch:
      consumes:
      - application/json
      parameters:
      - description: Address ID
        in: path
        name: id
        required: true
        type: integer
      - description: Edit address details
        in: body
        name: Request
        required: true
        schema:
          $ref: '#/definitions/addressparam.UpdateAddressRequest'
      produces:
      - application/json
      responses:
        "204":
          description: No Content
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerBenefactor: []
      summary: Edit 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/kindboxes:
    get:
      consumes:
      - application/json
      description: Retrieves a list of all KindBoxes with filtering, sorting, and
        pagination options
      parameters:
      - description: Filter by ID
        in: query
        name: filter_id
        type: integer
      - description: Filter by KindBox request ID
        in: query
        name: filter_kind_box_req_id
        type: integer
      - description: Filter by benefactor ID
        in: query
        name: filter_benefactor_id
        type: integer
      - description: Filter by KindBox type
        enum:
        - on-table
        - cylindrical
        - stand-up
        in: query
        name: filter_kind_box_type
        type: string
      - description: Filter by amount
        in: query
        name: filter_amount
        type: integer
      - description: Filter by serial number
        in: query
        name: filter_serial_number
        type: string
      - description: Filter by status
        enum:
        - delivered
        - ready-to-return
        - assigned-receiver-agent
        - returned
        - enumerated
        in: query
        name: filter_status
        type: string
      - description: Filter by delivered at
        format: date-time
        in: query
        name: filter_delivered_at
        type: string
      - description: Filter by return refer time ID
        in: query
        name: filter_return_refer_time_id
        type: integer
      - description: Filter by return refer date
        format: date
        in: query
        name: filter_return_refer_date
        type: string
      - description: Filter by return address ID
        in: query
        name: filter_return_address_id
        type: integer
      - description: Filter by receiver agent ID
        in: query
        name: filter_receiver_agent_id
        type: integer
      - description: Filter by returned at
        format: date-time
        in: query
        name: filter_returned_at
        type: string
      - description: Filter by sender agent ID
        in: query
        name: filter_sender_agent_id
        type: integer
      - description: Filter by deliver refer date
        format: date
        in: query
        name: filter_deliver_refer_date
        type: string
      - description: Filter by deliver address ID
        in: query
        name: filter_deliver_address_id
        type: integer
      - description: Filter by deliver refer time ID
        in: query
        name: filter_deliver_refer_time_id
        type: integer
      - description: Page number
        in: query
        name: page_number
        type: integer
      - description: Page size
        in: query
        name: page_size
        type: integer
      - description: Sort by field
        enum:
        - id
        - kind_box_req_id
        - benefactor_id
        - kind_box_type
        - amount
        - serial_number
        - status
        - delivered_at
        - return_refer_time_id
        - return_refer_date
        - return_address_id
        - receiver_agent_id
        - returned_at
        - sender_agent_id
        - deliver_refer_date
        - deliver_address_id
        - deliver_refer_time_id
        in: query
        name: sort_field
        type: string
      - description: Sort order
        enum:
        - asc
        - desc
        in: query
        name: sort_direction
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/adminkindboxparam.KindBoxGetAllResponse'
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Get all KindBoxes by admin
      tags:
      - KindBox
  /admin/kindboxes/{id}:
    get:
      consumes:
      - application/json
      description: This endpoint retrieves a specific kind box by admin
      parameters:
      - description: Kind box ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/adminkindboxparam.KindBoxGetResponse'
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Get a specific kind box by admin
      tags:
      - KindBox
  /admin/kindboxes/{id}/enumerate:
    patch:
      consumes:
      - application/json
      parameters:
      - description: KindBox ID
        in: path
        name: id
        required: true
        type: integer
      - description: Request
        in: body
        name: Request
        required: true
        schema:
          $ref: '#/definitions/adminkindboxparam.EnumerateKindBoxRequest'
      produces:
      - application/json
      responses:
        "204":
          description: No Content
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: invalid or expired jwt
          schema:
            type: string
        "403":
          description: user not allowed
          schema:
            type: string
        "422":
          description: Unprocessable Entity
          schema:
            $ref: '#/definitions/httpmsg.ErrorResponse'
        "500":
          description: something went wrong
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Admin enumerate kindbox
      tags:
      - KindBox
  /admin/kindboxes/assign-receiver-agent/{id}:
    patch:
      consumes:
      - application/json
      parameters:
      - description: KindBox ID
        in: path
        name: id
        required: true
        type: integer
      - description: Assign Receiver Agent Request Body
        in: body
        name: Request
        required: true
        schema:
          $ref: '#/definitions/adminkindboxparam.AssignReceiverRequest'
      produces:
      - application/json
      responses:
        "204":
          description: No Content
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Admin assign receiver agent to kindbox
      tags:
      - KindBox
  /admin/kindboxreqs:
    post:
      consumes:
      - application/json
      parameters:
      - description: New kind box request details
        in: body
        name: Request
        required: true
        schema:
          $ref: '#/definitions/adminkindboxreqparam.KindBoxReqAddRequest'
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/adminkindboxreqparam.KindBoxReqAddResponse'
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Add a new kind box request for a benefactor by admin
      tags:
      - KindBoxReq
  /admin/kindboxreqs/{id}:
    put:
      consumes:
      - application/json
      parameters:
      - description: KindBoxReq ID
        in: path
        name: id
        required: true
        type: integer
      - description: Update KindBoxReq Request Body
        in: body
        name: Request
        required: true
        schema:
          $ref: '#/definitions/adminkindboxreqparam.KindBoxReqUpdateRequest'
      produces:
      - application/json
      responses:
        "204":
          description: No Content
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Update kind box request by admin
      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/awaiting-delivery:
    get:
      consumes:
      - application/json
      description: Retrieves a list of all awaiting KindBox requests with filtering,
        sorting, and pagination options
      parameters:
      - description: Filter by ID
        in: query
        name: filter_id
        type: integer
      - description: Filter by benefactor ID
        in: query
        name: filter_benefactor_id
        type: integer
      - description: Filter by KindBox type
        enum:
        - 1
        - 2
        - 3
        format: enum
        in: query
        name: filter_kind_box_type
        type: integer
      - description: Filter by count requested
        in: query
        name: filter_count_requested
        type: integer
      - description: Filter by count accepted
        in: query
        name: filter_count_accepted
        type: integer
      - description: Filter by deliver refer time ID
        in: query
        name: filter_deliver_refer_time_id
        type: integer
      - description: Filter by deliver refer date
        format: date
        in: query
        name: filter_deliver_refer_date
        type: string
      - description: Filter by deliver address ID
        in: query
        name: filter_deliver_address_id
        type: integer
      - description: Page number
        in: query
        name: page_number
        type: integer
      - description: Page size
        in: query
        name: page_size
        type: integer
      - description: Sort by field
        enum:
        - id
        - benefactor_id
        - kind_box_type
        - count_requested
        - count_accepted
        - deliver_refer_time_id
        - deliver_refer_date
        - deliver_address_id
        in: query
        name: sort_field
        type: string
      - description: Sort order
        enum:
        - asc
        - desc
        in: query
        name: sort_direction
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/adminkindboxreqparam.DeliveryAwaitingGetAllResponse'
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Get all awaiting delivery KindBox requests
      tags:
      - KindBoxReq
  /admin/kindboxreqs/awaiting-delivery/{id}:
    get:
      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.DeliveryAwaitingGetResponse'
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Get a kind box reqs that is awaiting delivery by agent
      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
      - description: KindBoxReq deliver request details
        in: body
        name: Request
        required: true
        schema:
          $ref: '#/definitions/adminkindboxreqparam.DeliverKindBoxReqRequest'
      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/agents:
    get:
      consumes:
      - application/json
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/adminserviceparam.GetAllAgentResponse'
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Get all agents by admin
      tags:
      - Admin
  /admins/kindboxreqs:
    get:
      consumes:
      - application/json
      description: Retrieves a list of all KindBox requests with filtering, sorting,
        and pagination options
      parameters:
      - description: Filter by ID
        in: query
        name: filter_id
        type: integer
      - description: Filter by benefactor ID
        in: query
        name: filter_benefactor_id
        type: integer
      - description: Filter by sender agent ID
        in: query
        name: filter_sender_agent_id
        type: integer
      - description: Filter by KindBox type
        enum:
        - 1
        - 2
        - 3
        format: enum
        in: query
        name: filter_kind_box_type
        type: integer
      - description: Filter by KindBoxReq status
        enum:
        - 1
        - 2
        - 3
        - 4
        - 5
        format: enum
        in: query
        name: filter_status
        type: integer
      - description: Filter by count requested
        in: query
        name: filter_count_requested
        type: integer
      - description: Filter by count accepted
        in: query
        name: filter_count_accepted
        type: integer
      - description: Filter by deliver refer time ID
        in: query
        name: filter_deliver_refer_time_id
        type: integer
      - description: Filter by deliver refer date
        format: date
        in: query
        name: filter_deliver_refer_date
        type: string
      - description: Filter by deliver address ID
        in: query
        name: filter_deliver_address_id
        type: integer
      - description: Filter by delivered at
        format: date
        in: query
        name: filter_delivered_at
        type: string
      - description: Page number
        in: query
        name: page_number
        type: integer
      - description: Page size
        in: query
        name: page_size
        type: integer
      - description: Sort by field
        enum:
        - id
        - benefactor_id
        - sender_agent_id
        - kind_box_type
        - status
        - count_requested
        - count_accepted
        - deliver_refer_time_id
        - deliver_refer_date
        - deliver_address_id
        - delivered_at
        in: query
        name: sort_field
        type: string
      - description: Sort order
        enum:
        - asc
        - desc
        in: query
        name: sort_direction
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/adminkindboxreqparam.KindBoxReqGetAllResponse'
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: invalid or expired jwt
          schema:
            type: string
        "403":
          description: user not allowed
          schema:
            type: string
        "422":
          description: Unprocessable Entity
          schema:
            $ref: '#/definitions/httpmsg.ErrorResponse'
        "500":
          description: something went wrong
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Admin get all kindboxreq
      tags:
      - KindBoxReq
  /admins/kindboxreqs/{id}:
    get:
      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.GetKindBoxReqResponse'
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: invalid or expired jwt
          schema:
            type: string
        "403":
          description: user not allowed
          schema:
            type: string
        "422":
          description: Unprocessable Entity
          schema:
            $ref: '#/definitions/httpmsg.ErrorResponse'
        "500":
          description: something went wrong
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Get a specific kind box req by ID
      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
  /agents/kindboxes:
    get:
      consumes:
      - application/json
      description: Retrieves a list of all awaiting return KindBoxes for agent with
        filtering, sorting, and pagination options
      parameters:
      - description: Filter by ID
        in: query
        name: filter_id
        type: integer
      - description: Filter by benefactor ID
        in: query
        name: filter_benefactor_id
        type: integer
      - description: Filter by KindBox type
        enum:
        - 1
        - 2
        - 3
        format: enum
        in: query
        name: filter_type
        type: integer
      - description: Filter by serial number
        in: query
        name: filter_serial_number
        type: string
      - description: Filter by return refer time ID
        in: query
        name: filter_return_refer_time_id
        type: integer
      - description: Filter by return refer date
        format: date
        in: query
        name: filter_return_refer_date
        type: string
      - description: Filter by return address ID
        in: query
        name: filter_return_address_id
        type: integer
      - description: Page number
        in: query
        name: page_number
        type: integer
      - description: Page size
        in: query
        name: page_size
        type: integer
      - description: Sort by field
        enum:
        - id
        - benefactor_id
        - type
        - serial_number
        - return_refer_time_id
        - return_refer_date
        - return_address_id
        in: query
        name: sort_field
        type: string
      - description: Sort order
        enum:
        - asc
        - desc
        in: query
        name: sort_direction
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/agentkindboxparam.GetAllResponse'
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: invalid or expired jwt
          schema:
            type: string
        "403":
          description: user not allowed
          schema:
            type: string
        "422":
          description: Unprocessable Entity
          schema:
            $ref: '#/definitions/httpmsg.ErrorResponse'
        "500":
          description: something went wrong
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Get all awaiting return KindBoxes by agent
      tags:
      - KindBox
  /agents/kindboxes/{id}:
    get:
      consumes:
      - application/json
      parameters:
      - description: KindBox ID
        in: path
        name: id
        required: true
        type: integer
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/agentkindboxparam.GetKindBoxResponse'
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: invalid or expired jwt
          schema:
            type: string
        "403":
          description: user not allowed
          schema:
            type: string
        "422":
          description: Unprocessable Entity
          schema:
            $ref: '#/definitions/httpmsg.ErrorResponse'
        "500":
          description: something went wrong
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Get a kind box that is awaiting return by agent
      tags:
      - KindBox
  /agents/kindboxes/return/{id}:
    patch:
      consumes:
      - application/json
      parameters:
      - description: KindBox ID
        in: path
        name: id
        required: true
        type: integer
      - description: Return KindBox Request Body
        in: body
        name: Request
        required: true
        schema:
          $ref: '#/definitions/agentkindboxparam.ReturnKindBoxRequest'
      produces:
      - application/json
      responses:
        "204":
          description: No Content
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: invalid or expired jwt
          schema:
            type: string
        "403":
          description: user not allowed
          schema:
            type: string
        "422":
          description: Unprocessable Entity
          schema:
            $ref: '#/definitions/httpmsg.ErrorResponse'
        "500":
          description: something went wrong
          schema:
            type: string
      security:
      - AuthBearerAdmin: []
      summary: Return KindBox from benefactor by agent
      tags:
      - KindBox
  /benefactor/kindboxes:
    get:
      consumes:
      - application/json
      description: Retrieves a list of all KindBoxes with filtering, sorting, and
        pagination options
      parameters:
      - description: Filter by ID
        in: query
        name: filter_id
        type: integer
      - description: Filter by KindBox request ID
        in: query
        name: filter_kind_box_req_id
        type: integer
      - description: Filter by benefactor ID
        in: query
        name: filter_benefactor_id
        type: integer
      - description: Filter by KindBox type
        enum:
        - on-table
        - cylindrical
        - stand-up
        in: query
        name: filter_kind_box_type
        type: string
      - description: Filter by amount
        in: query
        name: filter_amount
        type: integer
      - description: Filter by serial number
        in: query
        name: filter_serial_number
        type: string
      - description: Filter by status
        enum:
        - delivered
        - ready-to-return
        - assigned-receiver-agent
        - returned
        - enumerated
        in: query
        name: filter_status
        type: string
      - description: Filter by delivered at
        format: date-time
        in: query
        name: filter_delivered_at
        type: string
      - description: Filter by return refer time ID
        in: query
        name: filter_return_refer_time_id
        type: integer
      - description: Filter by return refer date
        format: date
        in: query
        name: filter_return_refer_date
        type: string
      - description: Filter by return address ID
        in: query
        name: filter_return_address_id
        type: integer
      - description: Filter by receiver agent ID
        in: query
        name: filter_receiver_agent_id
        type: integer
      - description: Filter by returned at
        format: date-time
        in: query
        name: filter_returned_at
        type: string
      - description: Filter by sender agent ID
        in: query
        name: filter_sender_agent_id
        type: integer
      - description: Filter by deliver refer date
        format: date
        in: query
        name: filter_deliver_refer_date
        type: string
      - description: Filter by deliver address ID
        in: query
        name: filter_deliver_address_id
        type: integer
      - description: Filter by deliver refer time ID
        in: query
        name: filter_deliver_refer_time_id
        type: integer
      - description: Page number
        in: query
        name: page_number
        type: integer
      - description: Page size
        in: query
        name: page_size
        type: integer
      - description: Sort by field
        enum:
        - id
        - kind_box_req_id
        - benefactor_id
        - kind_box_type
        - amount
        - serial_number
        - status
        - delivered_at
        - return_refer_time_id
        - return_refer_date
        - return_address_id
        - receiver_agent_id
        - returned_at
        - sender_agent_id
        - deliver_refer_date
        - deliver_address_id
        - deliver_refer_time_id
        in: query
        name: sort_field
        type: string
      - description: Sort order
        enum:
        - asc
        - desc
        in: query
        name: sort_direction
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/benefactorkindboxparam.KindBoxGetAllResponse'
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerBenefactor: []
      summary: Get all KindBoxes by 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/kindboxes/{id}/emptying-requests:
    patch:
      consumes:
      - application/json
      parameters:
      - description: KindBox ID
        in: path
        name: id
        required: true
        type: integer
      - description: Request body
        in: body
        name: Request
        required: true
        schema:
          $ref: '#/definitions/benefactorkindboxparam.KindBoxRegisterEmptyingRequest'
      produces:
      - application/json
      responses:
        "204":
          description: No content
          schema:
            type: string
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerBenefactor: []
      summary: Register a new emptying request for a kind box by benefactor
      tags:
      - Benefactor
  /benefactor/kindboxreqs/:
    get:
      consumes:
      - application/json
      description: Retrieves a list of all KindBox requests with filtering, sorting,
        and pagination options
      parameters:
      - description: Filter by ID
        in: query
        name: filter_id
        type: integer
      - description: Filter by benefactor ID
        in: query
        name: filter_benefactor_id
        type: integer
      - description: Filter by KindBox type
        enum:
        - 1
        - 2
        - 3
        format: enum
        in: query
        name: filter_kind_box_type
        type: integer
      - description: Filter by KindBoxReq Status
        enum:
        - pending
        - accepted
        - assigned-sender-agent
        - rejected
        - delivered
        in: query
        name: filter_status
        type: string
      - description: Filter by count requested
        in: query
        name: filter_count_requested
        type: integer
      - description: Filter by count accepted
        in: query
        name: filter_count_accepted
        type: integer
      - description: Filter by deliver refer time ID
        in: query
        name: filter_deliver_refer_time_id
        type: integer
      - description: Filter by deliver refer date
        format: date
        in: query
        name: filter_deliver_refer_date
        type: string
      - description: Filter by deliver address ID
        in: query
        name: filter_deliver_address_id
        type: integer
      - description: Page number
        in: query
        name: page_number
        type: integer
      - description: Page size
        in: query
        name: page_size
        type: integer
      - description: Sort by field
        enum:
        - id
        - benefactor_id
        - kind_box_type
        - count_requested
        - count_accepted
        - deliver_refer_time_id
        - deliver_refer_date
        - deliver_address_id
        in: query
        name: sort_field
        type: string
      - description: Sort order
        enum:
        - asc
        - desc
        in: query
        name: sort_direction
        type: string
      produces:
      - application/json
      responses:
        "200":
          description: OK
          schema:
            $ref: '#/definitions/benefactorkindboxreqparam.GetAllResponse'
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerBenefactor: []
      summary: Get all KindBox requests
      tags:
      - KindBoxReq
    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}:
    delete:
      consumes:
      - application/json
      description: This endpoint is used to delete benefactor's kindboxreq at pending
        status
      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.KindBoxReqDeleteResponse'
        "400":
          description: Bad request
          schema:
            type: string
      security:
      - AuthBearerBenefactor: []
      summary: delete kindboxreq by benefactor
      tags:
      - KindBoxReq
    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
    put:
      consumes:
      - application/json
      parameters:
      - description: KindBoxReq ID
        in: path
        name: id
        required: true
        type: integer
      - description: Update KindBoxReq Request Body
        in: body
        name: Request
        required: true
        schema:
          $ref: '#/definitions/benefactorkindboxreqparam.KindBoxReqUpdateRequest'
      produces:
      - application/json
      responses:
        "204":
          description: No Content
        "400":
          description: Bad Request
          schema:
            type: string
        "401":
          description: invalid or expired jwt
          schema:
            type: string
        "403":
          description: user not allowed
          schema:
            type: string
        "422":
          description: Unprocessable Entity
          schema:
            $ref: '#/definitions/httpmsg.ErrorResponse'
        "500":
          description: something went wrong
          schema:
            type: string
      security:
      - AuthBearerBenefactor: []
      summary: Update kind box request by 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"