Easy RFP — API Reference

Public Supabase RPC endpoints for organizers, hotels, and partners. All endpoints respect RLS policies and require authentication via JWT. GDPR-compliant data access.

Endpoints in this reference:
  1. Authentication
  2. score_hotel_for_brief
  3. topsis_rank_hotels
  4. suggest_weights_for_rfp
  5. suggest_counter_offer
  6. predict_win_probability
  7. detect_proposal_anomalies
  8. compute_realistic_total_cost
  9. get_hotel_dashboard_stats
  10. dsar_export (GDPR)
  11. request_erasure (GDPR)
  12. v_proposals_csv_export

Authentication

All endpoints require a valid Supabase JWT in the Authorization header:

POST https://jhihwzfikvndybbyaoul.supabase.co/rest/v1/rpc/{function_name}
Authorization: Bearer eyJhbGciOiJIUzI1NiIs...
apikey: {your_anon_key}
Content-Type: application/json

Tokens are obtained via magic-link OTP at /app/. Token TTL: 60 minutes. Use refreshSession to extend.

score_hotel_for_brief authenticated

Returns a normalized score (0–1) for a given hotel against a published brief. Includes breakdown by criterion.

ParamTypeRequiredDescription
p_hotel_iduuidyesHotel UUID
p_brief_iduuidyesRFP brief UUID

Returns: {score: 0.78, breakdown: {price: 0.85, location: 0.72,...}}

topsis_rank_hotels authenticated

TOPSIS multi-criteria ranking of hotels for a given RFP. Honors organizer-defined scoring weights and applies mice_role multipliers (event_venue 1.2x, full_service 1.0x).

ParamTypeRequired
p_rfp_iduuidyes
p_limitintegerno (default 50)

Returns: ranked list with rank, topsis_score, price_score, location_score, cluster_boost, why_this_hotel array.

suggest_weights_for_rfp authenticated

AHP-lite weight suggestions based on RFP characteristics (sector, intent, attendees). Returns 4-criterion split summing to 1.0.

Returns: {price: 0.35, location: 0.25, mice_fit: 0.25, response_time: 0.15, rationale: "..."}

suggest_counter_offer authenticated

Recommends counter-offer terms based on cohort history (sector × city × pax band). Requires N≥5 comparable proposals.

predict_win_probability authenticated

9-factor heuristic returning probability that a given hotel wins a given RFP (0.0–1.0). Factors: completeness, response_rate, mice_fit, price_position, cluster_boost, intent_score, sector_match, history, recency.

detect_proposal_anomalies authenticated

Detects price outliers (z-score against cohort), duplicate proposals, and rate manipulation. Severity: low/medium/high.

compute_realistic_total_cost authenticated

Adds DDR, F&B, AV, perks to base room rate. Returns per-attendee and total. Used by Compare view.

get_hotel_dashboard_stats authenticated

Hotel-side stats: rankings 30d, response_rate, completeness_pct, RFPs received vs responded, cluster_boost current value.

dsar_export GDPR Art. 15

Returns all data Easy RFP holds about a given hotel or organizer. JSON or ZIP. Includes proposals, sends, field_facts, deltas.

request_erasure GDPR Art. 17

Initiates right-to-be-forgotten flow. Cascades delete in 5 child tables. Confirmation email required (TTL 24h).

v_proposals_csv_export authenticated

OpenTravel-compatible CSV view. Compatible with Cvent, Knowland, AventriOnArena import flows.

Rate limits

Endpoint typeLimitWindow
Anonymous (hotel-prefill, dsar)301 hour
Authenticated (organizer)10001 hour
RPC heavy (TOPSIS, parser)1001 hour

Status & SLA

System health: easyhotelrfp.com/status · Uptime target: 99.5% · API response p95: <800ms.

Need help?

Email [email protected] · GDPR / DSAR: [email protected]

Currency & FX handling

Easy RFP processes RFPs and proposals across multiple currencies. To make rates comparable in a single reporting currency, conversion rules are explicit:

Default behavior (today)

Configurable options (per organization)

Audit trail

Every FX conversion stores: source rate, source date, source provider (ECB / corporate / contract-locked), and the converted amount. Available via audit log export at /app/admin/audit/ in CSV/JSON format.

Rounding policy disclosure

Easy RFP follows IFRS standard for currency rounding: half-up at 2 decimal places, applied at line-item level. Aggregate totals are computed from rounded line-items (not from unrounded source values), making every total reconcilable to its components.

Configuration endpoint

Organization-level FX configuration via POST /api/v1/organization/fx-config (Enterprise tier). Contact contact@easyhotelrfp.com for access.