ParcelKoy API Documentation

System endpoints, methods, and authorization requirements.

🔐 Auth Routes /api/v1/auth

POST /register Register a new merchant
Public
POST /verify-email Verify email using OTP
Public
POST /login Login user
Public
GET /me Get current logged-in user profile
AdminSuperAdminMerchantRider
GET /refresh-tokens Issue new access/refresh tokens
Public
POST /logout Logout current user
AdminSuperAdminMerchantRider
POST /change-password Change password for logged-in user
AdminSuperAdminMerchantRider
POST /forget-password Start password reset flow
Public
POST /reset-password Reset password using token
Public
POST /activate Activate a user
AdminSuperAdmin
POST /block Block a user
AdminSuperAdmin

🛡 Admin Routes /api/v1/admins

GET / Get all admins
AdminSuperAdmin
GET /:id Get a single admin by ID
AdminSuperAdmin
POST /by-email Get a single admin by email
AdminSuperAdmin
PATCH /profile Update admin profile
AdminSuperAdmin
DELETE /:id Soft delete admin by ID
AdminSuperAdmin
DELETE /:id/permanent Permanently delete admin by ID
AdminSuperAdmin
POST /delete Delete a user (custom action)
AdminSuperAdmin

👥 Users Routes /api/v1/users

POST /create-admin Create an admin user
AdminSuperAdmin
POST /create-rider Create a rider user
AdminSuperAdmin

📦 Parcel Routes /api/v1/parcels

GET / Get all parcels
AdminSuperAdmin
POST / Create a parcel
Merchant
PUT /:id Update parcel details
Merchant
PATCH /cancel/:id Cancel parcel
Merchant
PATCH /status/:id Update parcel status (Admin workflow)
AdminSuperAdmin
PATCH /rider-status/:id Update parcel status (Rider workflow)
Rider
POST /delivery-otp/:id Send delivery OTP to customer
Rider
PATCH /verify-delivery/:id Verify OTP & mark as delivered
Rider
GET /tracking/:trackingId Public tracking details
Public

🛵 Rider Routes /api/v1/riders

GET / Get all riders
AdminSuperAdmin
GET /:id Get rider by ID
Public
POST /by-email Get rider by email
AdminSuperAdmin
PATCH /profile Update rider profile
RiderAdminSuperAdmin
PATCH /:id/hub Assign/update rider's hub
AdminSuperAdmin
GET /:id/parcels Get parcels assigned to a specific rider
AdminSuperAdminRiderMerchant
GET /my-assigned-parcels Current rider’s assigned parcels
Rider
GET /my-assigned-pickup-parcels Current rider’s assigned pickup tasks
Rider
GET /my-assigned-delivery-parcels Current rider’s assigned delivery tasks
Rider
GET /my-cash-handovers Rider's cash handover history
RiderAdminSuperAdmin
PATCH /soft-delete/:id Soft delete rider
AdminSuperAdmin
DELETE /:id Permanently delete rider
AdminSuperAdmin

🏪 Merchant Routes /api/v1/merchants

GET / Get all merchants
AdminSuperAdmin
GET /:id Get merchant by ID
MerchantRiderAdminSuperAdmin
POST /by-email Get merchant by email
AdminSuperAdmin
PATCH /profile Update merchant profile
MerchantAdminSuperAdmin
GET /:id/parcels Get parcels belonging to a merchant
AdminSuperAdminRiderMerchant
POST /payment-requests Create payout/payment request
Merchant
DELETE /:id Soft delete merchant
AdminSuperAdmin
DELETE /:id/permanent Permanently delete merchant
AdminSuperAdmin

🏢 Hub Routes /api/v1/hubs

GET / List all hubs
Public
GET /:slug Get hub by slug
Public
POST / Create a new hub
AdminSuperAdmin
PATCH /:slug Update hub details
AdminSuperAdmin
GET /:hubId/cash-collections Get hub cash collections (filter by date)
AdminSuperAdmin
DELETE /:slug Delete hub
AdminSuperAdmin

💵 Pricing Routes /api/v1/pricing

GET / List pricing rules
Public
GET /:id Get pricing rule by ID
Public
POST / Create pricing rule
AdminSuperAdmin
POST /delivery-charge Calculate delivery charge dynamically
Public
PATCH /:id Update pricing rule
AdminSuperAdmin
DELETE /:id Delete pricing rule
AdminSuperAdmin

📝 Notes Routes /api/v1/notes

GET /:parcelId Get notes for a specific parcel
AdminSuperAdminMerchantRider
POST / Add note to a parcel
AdminSuperAdminMerchantRider
PATCH /:id Update note
AdminSuperAdmin
DELETE /:id Delete note
AdminSuperAdmin

⚡ Speed, ⚙️ Method & 📍 Zone /api/v1/[type]

GET / List entries
Public
GET /:slug Get entry by slug
Public
POST / Create new entry
AdminSuperAdmin
PATCH /:slug Update entry by slug
AdminSuperAdmin
DELETE /:slug Delete entry by slug
AdminSuperAdmin