Vendors are the lifeblood of the Maleku System marketplace. A vendor is a tourism business — a hotel operator, tour company, rental agency, or transport provider — that joins the platform to list services and receive bookings from clients across Costa Rica and beyond. Vendors get their own authenticated dashboard, analytics, availability management tools, and a public landing page that aggregates all their active listings into a single, SEO-optimised profile. TheDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/IvanchoDev89/maleku-system/llms.txt
Use this file to discover all available pages before exploring further.
vendor role grants full CRUD access to the vendor’s own listings (properties, tours, vehicles, boats, transportation), booking management, content creation, and chat, alongside read access to listings and content.
Becoming a Vendor
Register a vendor account
Register directly as a vendor by sending a
POST request to /api/v1/auth/register/vendor with your user and business details (email, password, full_name, business_name, business_type). This single call creates both a User record (with role set to vendor) and a linked Vendor profile in one transaction. A business_slug is auto-generated from your business name. You will receive an email verification link valid for 24 hours.Vendor account pending review
After registration your
Vendor record is created with status set to pending and is_verified set to false. You can log in immediately, but your listings will not be publicly visible until a Super Admin approves your account.Super Admin approves your account
A Super Admin reviews pending applications in the superadmin panel. They can approve the vendor (transitioning
status to active) via POST /api/v1/superadmin/vendors/{vendor_id}/approval with action: "approve", or set the is_verified flag directly via PUT /api/v1/vendors/{vendor_id}/verify. Both actions are audit-logged.Create your first listing
Once your account is approved and active, you can access the full vendor dashboard at
/vendor/dashboard. From there you can create properties, tours, vehicles, boats, and transportation listings using the dedicated management pages under /vendor/properties, /vendor/tours, /vendor/vehicles, /vendor/boats, and /vendor/transportation.Vendor Dashboard
The vendor dashboard at/vendor/dashboard is the central control panel for your business on Maleku System. It surfaces real-time metrics pulled from GET /api/v1/vendors/me/analytics:
| Metric | Description |
|---|---|
total_properties | Count of property listings owned by this vendor |
total_tours | Count of tour listings owned by this vendor |
total_bookings | Total bookings received across all listing types |
pending_bookings | Bookings currently awaiting confirmation |
confirmed_bookings | Bookings confirmed and upcoming |
completed_bookings | Bookings that have been fulfilled |
total_revenue | Sum of total_amount for all completed bookings |
rating | Average rating score (0–5) across all reviews |
total_reviews | Total approved reviews received |
commission_rate | Your current platform commission rate (default 0.10) |
PUT request to /api/v1/vendors/me/profile. Only the following fields are accepted to prevent mass assignment: business_name, description, phone, address, city, country, website, logo_url, tax_id.
Managing Listings
Vendors can create, read, update, and delete five categories of listings. All resources are owner-scoped: the API enforces that a vendor can only modify listings attached to their ownvendor_id.
Properties
Hotels, lodges, cabins, and vacation rentals. Support for room types, nightly pricing, amenities, and photo galleries.
Tours
Guided experiences including adventure, cultural, wildlife, and custom tours. Supports scheduled departure slots and group capacity.
Vehicles
Car rentals and self-drive options. Per-day pricing and pickup/drop-off configuration.
Boats
Sport fishing charters, sailing trips, and boat rentals. Capacity and trip duration settings.
Transportation
Private transfers, shuttle routes, and airport pickups. Origin/destination and per-seat pricing.
Flights (future)
Domestic charter flights. The
Flight model and relationship on Vendor are already defined in the data layer for future activation.Availability Management
Before a booking can be confirmed, the platform validates that the selected listing is available for the requested dates using two service functions fromapp/services/availability_service.py:
check_room_availability(db, property_id, room_type_id, check_in, check_out, guests)— Used for property bookings. Queries existing confirmed bookings and room inventory to ensure the requested room type has capacity for the requested date range.check_tour_availability(db, tour_id, date, guests)— Used for tour bookings. Checks departure slot capacity and any manual blackout dates set by the vendor.
POST /api/v1/bookings/ and also exposed directly via POST /api/v1/availability/rooms/check and POST /api/v1/availability/tours/check so frontends can render real-time availability calendars before the user attempts to book. Room calendar views are available at GET /api/v1/availability/rooms/{room_id}/calendar.
Vendors configure availability through their /vendor/properties and /vendor/tours management pages, which write directly to the room inventory and tour slot tables.
Payouts
Maleku System processes vendor payouts through Stripe Connect. The platform deducts a commission before disbursing funds to the vendor’s connected Stripe account. Commission structure:- Platform commission:
10%(stored ascommission_rate = 0.10on eachVendorrecord; configurable per vendor by a Super Admin) - Vendor payout: the remaining amount after commission
- Navigate to
/vendor/payoutsin the vendor dashboard. - Click Connect Stripe Account to be redirected through Stripe’s OAuth onboarding flow.
- On completion,
stripe_account_idandstripe_connected = Trueare written to yourVendorrecord. - Future payouts for completed bookings are routed to your connected account automatically.
stripe_connected is True, completed bookings will still accrue revenue in your analytics, but automatic Stripe disbursement will not occur.
Analytics
The/vendor/analytics page in the vendor dashboard gives you a historical view of your business performance. Key metrics surfaced include:
- Total revenue — cumulative earnings from completed bookings
- Booking count by status — pending, confirmed, completed, and cancelled breakdown
- Listing performance — individual property and tour booking counts
- Rating trends — average rating over time and total review count
- Commission rate — current platform fee applied to your earnings
GET /api/v1/vendors/me/analytics which queries live booking and review records for your vendor account. No separate analytics store is required — calculations are performed on PostgreSQL aggregate queries at request time.
Vendor Public Profile
Every vendor gets a public-facing landing page accessible at/vendor/{slug} on the frontend, powered by the landing endpoint:
VendorLandingResponse — a single aggregated payload containing everything needed to render the full vendor profile without additional API calls.
The simpler detail endpoint, GET /api/v1/vendors/{vendor_id}, returns a VendorResponse with full vendor details including ratings and commission rate. Both endpoints are Redis-cached for 600 seconds (10 minutes) with cache tags scoped to the individual vendor, so cache invalidation on profile updates is surgical and does not affect other vendors.
GET /api/v1/vendors/slug/{slug}, which is what the frontend uses for human-readable permalinks like /vendor/costa-rica-adventures.