# Sewapedia / RentApp > Multi-vendor movable asset rental platform (cars, motorcycles, cameras, camping gear, and more). ## API - Base URL: `https://sewapedia.id/api/v1` - OpenAPI (agent): `/openapi-agent.yaml` - OpenAPI (full internal): `/openapi.yaml` - Machine discovery: `/.well-known/openapi` - UCP manifest: `/.well-known/ucp` (Universal Commerce Protocol facade) - MCP manifest: `/.well-known/mcp` (hosted Model Context Protocol — Streamable HTTP) - MCP endpoint: `POST/GET /api/v1/mcp` (transport: streamable-http) - Developer docs: `/{locale}/developers` (locales: id, en, ms, zh) - MCP agent guide (canonical): `/mcp-agent-guide.md` (25 tools — params, auth, Hermes config) - REST agent guide: `docs/API_AGENT_GUIDE.md` in the repository ## Authentication 1. `POST /api/v1/auth/login` with `{ "email", "password" }` → JWT `accessToken` + `refreshToken` 2. Send `Authorization: Bearer {accessToken}` on protected routes 3. Refresh before expiry: `POST /api/v1/auth/refresh` with `{ "refreshToken" }` 4. Scoped API keys via `POST /api/v1/auth/api-keys` — prefix `sp_test_` / `sp_live_` (CUSTOMER role only) Scopes: `read:catalog`, `read:booking`, `write:booking`, `write:payment` Rate limit: login 5 req / 15 min per IP; discovery 60/min; authenticated 120/min. ## Hosted MCP (Model Context Protocol) External AI agents (Hermes, Claude, etc.) can connect directly without local stdio: - Manifest: `https://sewapedia.id/.well-known/mcp` - Endpoint: `https://sewapedia.id/api/v1/mcp` (transport: streamable-http) - Auth on HTTP request: `Authorization: Bearer {accessToken}` or `X-Api-Key: sp_live_…` **Public tools (no auth):** search_assets, check_availability, catalog_feed, get_asset_detail, list_categories, get_vendor, pricing_quote, ucp_discover, login **Authenticated tools:** get_profile, list_my_bookings, get_booking_detail, booking_readiness (read:booking), create_booking, promote_booking, cancel_booking, request_extension (write:booking), apply_credit, initiate_payment (write:payment), get_pay_status (read:booking), get_verification_status, upload_document (write:booking), list_notifications, mark_notification_read, ucp_checkout Local dev stdio wrapper: `packages/mcp-sewapedia` via `npm run mcp:sewapedia`. ## Response envelope All JSON responses use: ```json { "success": true, "data": { ... } } { "success": false, "error": "message" } ``` Paginated lists: `{ "items": [...], "meta": { "page", "limit", "total", "totalPages" } }` inside `data`. ## Agent flow (6 steps — search ≠ availability) 1. **Discover** — `GET /api/v1/assets` or `GET /api/v1/catalog/feed` (no date guarantee) 2. **Availability** — `GET /api/v1/assets/{slug}/availability?from=&to=` per candidate 3. **Quote** — `POST /api/v1/pricing/quote` with assetId, dates, add-ons 4. **Create plan** — `POST /api/v1/bookings` → `PENDING_VERIFICATION` (calendar not locked) 5. **Verify & promote** — `POST /upload`, `GET /verification/status`, re-check availability, `POST /bookings/{id}/promote` 6. **Pay (human-in-the-loop)** — poll `GET /bookings/{id}/readiness`; `POST /bookings/{id}/pay` → user completes Midtrans UCP equivalent: replace steps 1–2 with `/ucp/products` + `/ucp/products/{slug}/availability`; steps 4–6 with `/ucp/checkout/sessions` + `/complete` (`promote` / `initiate_payment`). See `docs/UCP_AGENT_GUIDE.md`. Use `Idempotency-Key` on `POST /bookings`, `/pay`, `/promote`, `/cancel` to safely retry. ## Key public endpoints | Method | Path | Auth | |--------|------|------| | GET | /health | No | | GET | /assets | No (key: read:catalog) | | GET | /assets/{slug}/availability | No | | GET | /catalog/feed | No (key: read:catalog) | | GET | /ucp/products | No (key: read:catalog) | | GET | /ucp/products/{slug} | No (key: read:catalog) | | GET | /ucp/products/{slug}/availability | No | | POST | /ucp/quotes | Optional | | POST | /ucp/checkout/sessions | Bearer (key: write:booking) | | GET | /ucp/checkout/sessions/{id} | Bearer (key: read:booking) | | POST | /ucp/checkout/sessions/{id}/complete | Bearer (promote: write:booking; pay: write:payment) | | GET | /categories | No | | POST | /pricing/quote | Optional | | POST | /auth/login | No | | POST | /bookings | Bearer (key: write:booking) | | GET | /bookings/{id}/readiness | Bearer (key: read:booking) | ## Locales Web UI: Indonesian (id), English (en), Malay (ms), Chinese (zh). API responses are locale-agnostic. ## Guides (Panduan) How-to articles linking to transactional catalog pages: - https://sewapedia.id/id/panduan - https://sewapedia.id/id/panduan/sewa-drone-izin-rpc - https://sewapedia.id/id/panduan/sewa-alat-kesehatan-home-care - https://sewapedia.id/id/panduan/sewa-genset-proyek - https://sewapedia.id/id/panduan/sewa-kebaya-pengantin - https://sewapedia.id/id/panduan/sewa-mobil-lepas-kunci - https://sewapedia.id/id/panduan/sewa-stroller-liburan - https://sewapedia.id/id/panduan/sewa-excavator-proyek - https://sewapedia.id/id/panduan/sewa-sound-system-wedding - https://sewapedia.id/id/panduan/sewa-vs-beli-motor - https://sewapedia.id/id/panduan/rental-mobil-lepas-kunci-vs-sopir - https://sewapedia.id/id/panduan/sewa-alat-berat-proyek-pemerintah - https://sewapedia.id/id/panduan/checklist-verifikasi-penyewa - https://sewapedia.id/id/panduan/panduan-deposit-sewa - https://sewapedia.id/id/panduan/sewa-laptop-event-seminar - https://sewapedia.id/id/panduan/sewa-kamera-wedding - https://sewapedia.id/id/panduan/sewa-bus-study-tour - https://sewapedia.id/id/panduan/sewa-fashion-bridesmaid - https://sewapedia.id/id/panduan/sewa-genset-listrik-mati - https://sewapedia.id/id/panduan/panduan-sewa-motor-matic-harian - https://sewapedia.id/id/panduan/panduan-sewa-tenda-camping-pemula - https://sewapedia.id/id/panduan/sewa-pickup-pindahan-rumah - https://sewapedia.id/id/panduan/sewa-iphone-event-launch - https://sewapedia.id/id/panduan/panduan-sewa-mudik-lebaran - https://sewapedia.id/id/panduan/cara-menghindari-penipuan-sewa-online - https://sewapedia.id/id/panduan/checklist-check-in-foto-kondisi-aset - https://sewapedia.id/id/panduan/sewa-mobil-bali-untuk-turis - https://sewapedia.id/id/panduan/sewa-vs-beli-kamera - https://sewapedia.id/id/panduan/sewa-sepeda-mtb-trail - https://sewapedia.id/id/panduan/sewa-sup-paddle-board-bali - https://sewapedia.id/id/panduan/sewa-peralatan-golf-event - https://sewapedia.id/id/panduan/sewa-ps5-party-kantor - https://sewapedia.id/id/panduan/sewa-nintendo-switch-liburan-anak - https://sewapedia.id/id/panduan/sewa-gaun-pesta-wisuda - https://sewapedia.id/id/panduan/sewa-jas-formal-interview - https://sewapedia.id/id/panduan/sewa-dj-equipment-club-event - https://sewapedia.id/id/panduan/sewa-lighting-panggung-konser - https://sewapedia.id/id/panduan/sewa-karaoke-ulang-tahun - https://sewapedia.id/id/panduan/sewa-kursi-roda-pasien-pulang - https://sewapedia.id/id/panduan/sewa-oxygen-concentrator-perjalanan - https://sewapedia.id/id/panduan/sewa-scaffolding-proyek-renovasi - https://sewapedia.id/id/panduan/sewa-scissor-lift-maintenance-tinggi - https://sewapedia.id/id/panduan/panduan-sewa-pernikahan - https://sewapedia.id/id/panduan/cara-booking-di-sewapedia-langkah-demi-langkah - https://sewapedia.id/id/panduan/sewa-vs-beli-laptop-event - https://sewapedia.id/id/panduan/sewa-tenda-vs-beli-camping - https://sewapedia.id/id/panduan/sewa-kebaya-vs-beli-kebaya ## Top keyword landing pages Programmatic SEO — brand/model & intent keywords (sample: Jakarta Selatan): - https://sewapedia.id/id/sewa-mobil/avanza/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/innova/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/ertiga/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/xpander/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/veloz/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/hiace/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/xenia/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/sigra/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/mobilio/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/livina/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/carnival/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/stargazer/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/confero/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/cortez/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/luxio/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/carens/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/brio/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/jazz/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/yaris/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/agya/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/ayla/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/calya/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/wigo/jakarta-selatan-3171 - https://sewapedia.id/id/sewa-mobil/city/jakarta-selatan-3171 (1609 total keyword paths across 20 cities — see sitemap.) ## Catalog categories - Cars: `https://sewapedia.id/id/sewa-mobil` (mobil) - Motorcycles: `https://sewapedia.id/id/sewa-motor` (motor) - Bus: `https://sewapedia.id/id/sewa-bus` (bus) - Pickup & Truck: `https://sewapedia.id/id/sewa-pickup-truk` (pickup) - Heavy: `https://sewapedia.id/id/sewa-alat-berat` (alat-berat) - Phones: `https://sewapedia.id/id/sewa-handphone` (handphone) - Camera: `https://sewapedia.id/id/sewa-kamera` (kamera) - Console: `https://sewapedia.id/id/sewa-game-console` (game-console) - Laptop & PC: `https://sewapedia.id/id/sewa-laptop-pc` (laptop-pc) - Camping: `https://sewapedia.id/id/sewa-camping` (camping-outdoor) - Baby Gear: `https://sewapedia.id/id/sewa-alat-bayi` (alat-bayi) - Sports & Hobby: `https://sewapedia.id/id/sewa-alat-olahraga-hobi` (alat-olahraga-hobi) - Fashion: `https://sewapedia.id/id/sewa-fashion` (fashion) - Music & Event: `https://sewapedia.id/id/sewa-alat-music` (alat-music-event) - Health Equipment: `https://sewapedia.id/id/sewa-alat-kesehatan` (alat-kesehatan) - Industrial: `https://sewapedia.id/id/sewa-alat-industri` (alat-industri) ## Vendor storefronts - Marketplace vendor pages: `https://sewapedia.id/id/vendor/{slug}` - White-label mini-sites: `https://sewapedia.id/id/{storefrontSlug}` ## Vendor programmatic SEO paths Layer 3A vendor category×city pages (indexed when listing thresholds met): - `https://sewapedia.id/id/vendor/{slug}` - `https://sewapedia.id/id/vendor/{slug}/{categorySegment}` - `https://sewapedia.id/id/vendor/{slug}/{categorySegment}/{citySlug}` ## Restrictions - `/api/` paths are not indexed by robots.txt — use this file and OpenAPI instead - API keys cannot access `/admin/*`, `/owner/*`, or `/cron/*` - Agents cannot bypass verification, owner approval, or Midtrans payment - Do not scrape catalog aggressively — respect rate limits (`X-RateLimit-*` headers)