Public API documentation
This page documents the public HTTP endpoints implemented in the
www.odeva.app website repository.
Overview
Public website API
First-party endpoints on https://www.odeva.app:
/api/tourist-tax and /api/waitlist.
Status and availability
Human-readable status page:
/status. Structured monitor data comes from
https://status.odeva.app/api/status-page/default and
https://status.odeva.app/api/status-page/heartbeat/default.
Not documented here
The site references https://booking.odeva.app/graphql
for product/demo flows, but this repository does not publish its
schema or OAuth/OIDC metadata, so it is intentionally excluded
from the OpenAPI document and discovery metadata here.
GET /api/tourist-tax
Returns either filter metadata or filtered tourist tax records sourced from the website's CSV dataset.
Metadata request
GET /api/tourist-tax?action=metadata
Returns JSON with:
municipalities: available municipality namesyears: years derived from the source dataaccommodationTypes: available sector names
Filtered request
GET /api/tourist-tax?municipality=Goes&year=2026&accommodationType=Camping
Optional query parameters:
municipality: exact municipality nameyear: 4-digit year matched againstValid FromaccommodationType: accommodation type
Results exclude invalid date ranges and rows whose rate value is
NO RATE FOUND.
POST /api/waitlist
Accepts waitlist submissions and validates a Cloudflare Turnstile token before storing the request.
Send form data with these fields:
fullName(required)email(required)cf-turnstile-response(required)company(optional)message(optional)
POST /api/waitlist
Content-Type: application/x-www-form-urlencoded
fullName=Jane%20Doe&email=jane%40example.com&company=Park%20View&message=Interested%20in%20a%20demo&cf-turnstile-response=<token>
Successful responses return JSON
{"success": true, "message": "Added to waitlist"}.
This endpoint is intended for human-assisted input. Unattended agents should not attempt direct submission without a valid human-solved Turnstile token.
Status and availability
The marketing site's status page reads from the external Uptime Kuma JSON APIs below:
https://status.odeva.app/api/status-page/defaulthttps://status.odeva.app/api/status-page/heartbeat/default
Use the summary endpoint for incident and monitor group data, and the heartbeat endpoint for recent uptime values.
Read-only MCP endpoint
POST /mcp exposes a small read-only MCP tool surface for
site discovery. It supports initialize,
ping, tools/list, and tools/call.
Available tools:
list_site_resourcesget_api_referenceget_contact_channelget_system_status
OAuth, OIDC, and protected resource metadata
No OAuth/OIDC discovery document is published from this repository.
The codebase shows a separate external product API at
booking.odeva.app, but it does not expose issuer,
authorization endpoint, token endpoint, JWKS URI, or protected
resource metadata here. Because of that, the corresponding
/.well-known/openid-configuration,
/.well-known/oauth-authorization-server, and
/.well-known/oauth-protected-resource files are
intentionally omitted from this static implementation.