📖 API Documentation

HappyZhopi Listing System — Base URL: /listing/api/
ðŸ“Ķ 14 API Modules 🔗 80+ Endpoints 🔒 JWT Authentication
🔐 Authentication /api/auth/ (8)
GET ?action=login public
āđ€āļ‚āđ‰āļēāļŠāļđāđˆāļĢāļ°āļšāļš
POST body: {email, password}
POST ?action=register public
āļŠāļĄāļąāļ„āļĢāļŠāļĄāļēāļŠāļīāļ
POST body: {name, email, password}
POST ?action=forgot_password public
āļĨāļ·āļĄāļĢāļŦāļąāļŠāļœāđˆāļēāļ™
POST body: {email}
POST ?action=reset_password public
āļĢāļĩāđ€āļ‹āđ‡āļ•āļĢāļŦāļąāļŠāļœāđˆāļēāļ™
POST body: {token, new_password}
POST ?action=refresh auth
āļĢāļĩāđ€āļŸāļĢāļŠ token
POST body: {refresh_token}
GET ?action=me auth
āļ‚āđ‰āļ­āļĄāļđāļĨāļœāļđāđ‰āđƒāļŠāđ‰āļ›āļąāļˆāļˆāļļāļšāļąāļ™
POST ?action=logout auth
āļ­āļ­āļāļˆāļēāļāļĢāļ°āļšāļš
POST ?action=change_password auth
āđ€āļ›āļĨāļĩāđˆāļĒāļ™āļĢāļŦāļąāļŠāļœāđˆāļēāļ™
POST body: {current_password, new_password}
ðŸ“Ķ Listings /api/listing/ (20)
GET ?action=list public
āļĢāļēāļĒāļāļēāļĢāļ›āļĢāļ°āļāļēāļĻ
?page=1&limit=20&category=X&province=X&sort=newest
GET ?action=get&id=X public
āļĢāļēāļĒāļĨāļ°āđ€āļ­āļĩāļĒāļ”āļ›āļĢāļ°āļāļēāļĻ
GET ?action=categories public
āļŦāļĄāļ§āļ”āļŦāļĄāļđāđˆāļ—āļąāđ‰āļ‡āļŦāļĄāļ”
GET ?action=plans public
āđāļžāđ‡āļ„āđ€āļāļˆāļŠāļĄāļēāļŠāļīāļ
GET ?action=search public
āļ„āđ‰āļ™āļŦāļē
?q=keyword&category=X&min_price=0&max_price=9999
POST ?action=create auth
āļŠāļĢāđ‰āļēāļ‡āļ›āļĢāļ°āļāļēāļĻ (+AutoMod)
POST body: {title, category_id, description, price, ...}
POST ?action=update&id=X auth
āđāļāđ‰āđ„āļ‚āļ›āļĢāļ°āļāļēāļĻ
POST ?action=delete&id=X auth
āļĨāļšāļ›āļĢāļ°āļāļēāļĻ
GET ?action=my auth
āļ›āļĢāļ°āļāļēāļĻāļ‚āļ­āļ‡āļ‰āļąāļ™
?status=active|paused|expired
POST ?action=boost&id=X auth
Boost āļ›āļĢāļ°āļāļēāļĻ
POST ?action=bulk_action auth
Bulk action
POST body: {ids:[1,2,3], action:"activate|pause|delete"}
POST ?action=upload_images&id=X auth
āļ­āļąāļžāđ‚āļŦāļĨāļ”āļĢāļđāļ›āļ āļēāļž
multipart/form-data: images[]
POST ?action=delete_image auth
āļĨāļšāļĢāļđāļ›āļ āļēāļž
POST body: {image_id, listing_id}
POST ?action=reorder_images&id=X auth
āđ€āļĢāļĩāļĒāļ‡āļĨāļģāļ”āļąāļšāļĢāļđāļ›
POST body: {image_ids:[3,1,2]}
GET ?action=get_images&id=X public
āļ”āļđāļĢāļđāļ›āļ āļēāļžāļ—āļąāđ‰āļ‡āļŦāļĄāļ”
POST ?action=follow auth
āļ•āļīāļ”āļ•āļēāļĄāļĢāđ‰āļēāļ™
POST body: {seller_id}
POST ?action=unfollow auth
āđ€āļĨāļīāļāļ•āļīāļ”āļ•āļēāļĄ
POST body: {seller_id}
GET ?action=is_following&seller_id=X auth
āļ•āļĢāļ§āļˆāļŠāļ­āļšāļāļēāļĢāļ•āļīāļ”āļ•āļēāļĄ
GET ?action=feed auth
āļŸāļĩāļ”āļˆāļēāļāļĢāđ‰āļēāļ™āļ—āļĩāđˆāļ•āļīāļ”āļ•āļēāļĄ
?page=1
GET ?action=health public
Health check
💰 Payments /api/payment/ (7)
POST ?action=checkout auth
āļŠāļĢāđ‰āļēāļ‡āļĢāļēāļĒāļāļēāļĢāļŠāļģāļĢāļ°āđ€āļ‡āļīāļ™
POST body: {plan_id, coupon_code?}
POST ?action=upload_slip&id=X auth
āļ­āļąāļžāđ‚āļŦāļĨāļ”āļŠāļĨāļīāļ›
multipart/form-data: slip
GET ?action=status&id=X auth
āļŠāļ–āļēāļ™āļ°āļāļēāļĢāļŠāļģāļĢāļ°āđ€āļ‡āļīāļ™
GET ?action=history auth
āļ›āļĢāļ°āļ§āļąāļ•āļīāļāļēāļĢāļŠāļģāļĢāļ°āđ€āļ‡āļīāļ™
POST ?action=cancel&id=X auth
āļĒāļāđ€āļĨāļīāļāļĢāļēāļĒāļāļēāļĢ
POST ?action=validate_coupon public
āļ•āļĢāļ§āļˆāļŠāļ­āļšāļ„āļđāļ›āļ­āļ‡
POST body: {code, plan_id}
GET ?action=receipt&id=X auth
āđƒāļšāđ€āļŠāļĢāđ‡āļˆ
💎 Messages /api/message/ (4)
GET ?action=conversations auth
āļĢāļēāļĒāļāļēāļĢāļŠāļ™āļ—āļ™āļē
GET ?action=messages&conv_id=X auth
āļ‚āđ‰āļ­āļ„āļ§āļēāļĄāđƒāļ™āļŠāļ™āļ—āļ™āļē
?page=1
POST ?action=send auth
āļŠāđˆāļ‡āļ‚āđ‰āļ­āļ„āļ§āļēāļĄ
POST body: {to_user_id, message, listing_id?}
POST ?action=read&id=X auth
āļ­āđˆāļēāļ™āđāļĨāđ‰āļ§
⭐ Reviews /api/review/ (2)
GET ?action=list&listing_id=X public
āļĢāļĩāļ§āļīāļ§āļ‚āļ­āļ‡āļ›āļĢāļ°āļāļēāļĻ
POST ?action=create auth
āđ€āļ‚āļĩāļĒāļ™āļĢāļĩāļ§āļīāļ§
POST body: {listing_id, rating, comment}
🔔 Notifications /api/notifications/ (4)
GET ?action=list auth
āļĢāļēāļĒāļāļēāļĢāđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™
?page=1
POST ?action=read&id=X auth
āļ­āđˆāļēāļ™āđāļˆāđ‰āļ‡āđ€āļ•āļ·āļ­āļ™
POST ?action=read_all auth
āļ­āđˆāļēāļ™āļ—āļąāđ‰āļ‡āļŦāļĄāļ”
GET ?action=unread_count auth
āļˆāļģāļ™āļ§āļ™āļĒāļąāļ‡āđ„āļĄāđˆāļ­āđˆāļēāļ™
📊 Analytics /api/analytics/ (2)
GET ?action=dashboard auth
Dashboard āļŠāļ–āļīāļ•āļī
?period=7d|30d|90d
GET ?action=listing&id=X auth
āļŠāļ–āļīāļ•āļīāļĢāļēāļĒāļ›āļĢāļ°āļāļēāļĻ
🏊 Shop /api/shop/ (3)
GET ?action=profile&id=X public
āļ‚āđ‰āļ­āļĄāļđāļĨāļĢāđ‰āļēāļ™
POST ?action=update auth
āļ­āļąāļžāđ€āļ”āļ—āļĢāđ‰āļēāļ™
POST body: {shop_name, shop_desc, ...}
GET ?action=listings&id=X public
āļ›āļĢāļ°āļāļēāļĻāļ‚āļ­āļ‡āļĢāđ‰āļēāļ™
?page=1
ðŸŽŊ Promotions /api/promotions/ (3)
GET ?action=active public
āđ‚āļ›āļĢāđ‚āļĄāļŠāļąāđˆāļ™āļ—āļĩāđˆāđƒāļŠāđ‰āđ„āļ”āđ‰
POST ?action=create auth
āļŠāļĢāđ‰āļēāļ‡āđ‚āļ›āļĢāđ‚āļĄāļŠāļąāđˆāļ™
POST body: {listing_id, type, ...}
POST ?action=claim&id=X auth
Claim deal
🗚ïļ Map/Location /api/map/ (2)
GET ?action=listings public
āļ›āļĢāļ°āļāļēāļĻāļšāļ™āđāļœāļ™āļ—āļĩāđˆ
?lat=X&lng=X&radius=10&category=X
GET ?action=provinces public
āļĢāļēāļĒāļŠāļ·āđˆāļ­āļˆāļąāļ‡āļŦāļ§āļąāļ”
ðŸ“Ē Reports /api/report/ (1)
POST ?action=create auth
āļĢāļēāļĒāļ‡āļēāļ™āļ›āļĢāļ°āļāļēāļĻ/āļœāļđāđ‰āđƒāļŠāđ‰
POST body: {target_type, target_id, reason, detail}
🔖 Saved Searches /api/search/ (3)
POST ?action=save auth
āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ„āđ‰āļ™āļŦāļē
POST body: {name, filters, alert_enabled}
GET ?action=saved auth
āļĢāļēāļĒāļāļēāļĢāļ—āļĩāđˆāļšāļąāļ™āļ—āļķāļ
POST ?action=delete_saved&id=X auth
āļĨāļšāļāļēāļĢāļ„āđ‰āļ™āļŦāļē
🔍 SEO /api/seo/ (1)
GET ?action=meta&slug=X public
Meta data by slug
âœĻ UX /api/ux/ (4)
GET ?action=recently_viewed auth
āđ€āļ„āļĒāļ”āļđāļĨāđˆāļēāļŠāļļāļ”
POST ?action=record_view auth
āļšāļąāļ™āļ—āļķāļāļāļēāļĢāļ”āļđ
POST body: {listing_id}
GET ?action=compare&ids=1,2,3 public
āđ€āļ›āļĢāļĩāļĒāļšāđ€āļ—āļĩāļĒāļš
GET ?action=categories public
āļŦāļĄāļ§āļ”āļŦāļĄāļđāđˆ tree
🔑 Authentication

āļ—āļļāļ endpoint āļ—āļĩāđˆāļ•āđ‰āļ­āļ‡ auth āļ•āđ‰āļ­āļ‡āļŠāđˆāļ‡ JWT token āđƒāļ™ header:

Authorization: Bearer <your_token>

Token āđ„āļ”āđ‰āļˆāļēāļ /api/auth/?action=login — āļŦāļĄāļ”āļ­āļēāļĒāļļ 7 āļ§āļąāļ™, refresh āđ„āļ”āđ‰ 30 āļ§āļąāļ™