package dto import "time" type LocationCreateRequest struct { Label string `json:"label"` // Home, Work, etc. Receivername string `json:"receivername"` Receiverphone string `json:"receiverphone"` Address string `json:"address"` Landmark string `json:"landmark"` City string `json:"city"` State string `json:"state"` Pincode string `json:"pincode"` Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` Isdefault bool `json:"isdefault"` } type ParcelRequest struct { Itemcategory string `json:"itemcategory"` Itemdescription string `json:"itemdescription"` Declaredvalue float64 `json:"declaredvalue"` Weight float64 `json:"weight"` // optional — miler weighs at pickup Length float64 `json:"length"` // optional Width float64 `json:"width"` // optional Height float64 `json:"height"` // optional Isfragile bool `json:"isfragile"` Needsinsurance bool `json:"needsinsurance"` Requireslargevehicle bool `json:"requireslargevehicle"` } type PickupBookingRequest struct { Pickuplocationid *int `json:"pickuplocationid"` Pickupaddress string `json:"pickupaddress"` // required Pickuppincode string `json:"pickuppincode"` // required Pickuplatitude float64 `json:"pickuplatitude"` Pickuplongitude float64 `json:"pickuplongitude"` Deliveryaddress string `json:"deliveryaddress"` // optional — can be filled later Deliverypincode string `json:"deliverypincode"` // optional Deliverylatitude float64 `json:"deliverylatitude"` Deliverylongitude float64 `json:"deliverylongitude"` Preferredpickupfrom *time.Time `json:"preferredpickupfrom"` Preferredpickupto *time.Time `json:"preferredpickupto"` ServiceOption string `json:"serviceoption"` // Normal, Fast, Superfast Parcels []ParcelRequest `json:"parcels"` } type PaymentRequest struct { Amount float64 `json:"amount"` Paymentmode string `json:"paymentmode"` // Cash, UPI, Card, Wallet Transactionref string `json:"transactionref"` } type MilerLocationUpdateRequest struct { Latitude float64 `json:"latitude"` Longitude float64 `json:"longitude"` Pincode string `json:"pincode"` // Speed and Heading are sent by the rider app and were previously dropped on // the floor, since unknown JSON fields parse silently. Accepted here so the // values at least reach the periodic-log telemetry rather than vanishing. Speed float64 `json:"speed"` Heading float64 `json:"heading"` } type MilerAvailabilityRequest struct { Status string `json:"status"` // Offline, Available, Break, etc. // Availabilitystatus is the field name the published Miler App API Contract // v1.0 told the Flutter dev to send, while the code only ever read "status" // — so the documented request 400s. Both are accepted rather than picking a // winner, because either side may already be built against either name. Availabilitystatus string `json:"availabilitystatus"` } // ResolvedStatus returns whichever of the two accepted field names was sent. func (r MilerAvailabilityRequest) ResolvedStatus() string { if r.Status != "" { return r.Status } return r.Availabilitystatus } type PricingQuoteRequest struct { Pickuppincode string `json:"pickuppincode"` Deliverypincode string `json:"deliverypincode"` Pickuplatitude float64 `json:"pickuplatitude"` Pickuplongitude float64 `json:"pickuplongitude"` Deliverylatitude float64 `json:"deliverylatitude"` Deliverylongitude float64 `json:"deliverylongitude"` Parcels []ParcelRequest `json:"parcels"` }