Demo tenant: demo-wave2 · rental: demo-rental-airport
Local demo credentials only — not real accounts.
Operator manager
operator.manager@ecpv2.local
Operator portal control plane
••••••••••
Reveal
Copy
Company manager
company.manager@ecpv2.local
Company portal (fleet admin)
••••••••••
Reveal
Copy
Company accountant
company.accountant@ecpv2.local
Company portal (finance only)
••••••••••
Reveal
Copy
Customer
customer.demo@ecpv2.local
Customer portal + storefront flows
••••••••••
Reveal
Copy
Customer (fresh onboarding)
customer.onboarding@ecpv2.local
Live KYC + payment stub walkthrough
••••••••••
Reveal
Copy
Partner API actor (OTA channel)
X-Partner-Key · pk_demoota_demo_rental_airport
Inbound partner rental API · demo-rental-airport
••••••••••
Reveal
Copy
Subscription application
Rental booking
Company rentals
Failed payment / receipt
KYC review
Partner API booking
Partner key prefix (public id): pk_demoota_demo_rental_airport
pk_••••.sk-••••
Reveal
Copy
Set up
Copy
export BASE=http://localhost:8010
export KEY="<paste the partner key above>"
Availability
Copy
curl -H "X-Partner-Key: $KEY" \
"$BASE/api/partner/v1/availability/?pickup_date=2026-07-01&return_date=2026-07-04"
Quote
Copy
curl -X POST -H "X-Partner-Key: $KEY" -H "Content-Type: application/json" \
-d '{"offer_id": 1, "pickup_date": "2026-07-01", "return_date": "2026-07-04"}' \
"$BASE/api/partner/v1/quote/"
Book
Copy
curl -X POST -H "X-Partner-Key: $KEY" -H "Content-Type: application/json" \
-d '{"offer_id": 1, "pickup_date": "2026-07-01", "return_date": "2026-07-04", "guest": {"email": "guest@example.com", "name": "Guest"}}' \
"$BASE/api/partner/v1/bookings/"
Status
Copy
curl -H "X-Partner-Key: $KEY" "$BASE/api/partner/v1/bookings/1/"
Cancel
Copy
curl -X POST -H "X-Partner-Key: $KEY" "$BASE/api/partner/v1/bookings/1/cancel/"