Public endpoints
All endpoints use https://api.my-playrooms.de/v1. The complete machine-readable
contract is available at /v1/openapi.json.
Catalog
| Method | Path | Authentication | Result |
|---|---|---|---|
GET | /v1/playrooms | None | Array of playroom summaries. currentPage can select a page; the server currently returns up to 20 items without pagination metadata. |
GET | /v1/playrooms/{urlPath} | None | Detailed playroom information. |
GET | /v1/playrooms/{urlPath}/booking-options | None | Available booking times and prices. |
Orders
| Method | Path | Authentication | Result |
|---|---|---|---|
POST | /v1/orders | X-API-Key and Idempotency-Key | Creates an order and returns its orderId. |
GET | /v1/orders/{orderId} | X-API-Key | Returns the order owned by the API key. |
POST | /v1/orders/{orderId}/payment | X-API-Key | Creates a hosted payment session and returns paymentUrl. |
The API creates the booking and payment session; it does not process card payment inside the API request. The guest completes payment at the hosted payment page.
Errors and limits
400: invalid request or domain validation error.401: missing or invalid API key.404: resource or order not found.429: rate limit exceeded.500: unexpected server error.
Application errors normally use ProblemDetails with title, status, and detail.
Do not rely on a stable code property. Some unexpected legacy 500 responses use a
legacy error envelope, so clients should handle both forms defensively.
The public API permits 200 requests per 60 seconds, partitioned by API key when one is supplied and otherwise by client IP. There is no documented daily limit.
Webhooks
The public API currently provides no outgoing booking webhooks. Poll
GET /v1/orders/{orderId} for order status. Stripe webhook endpoints in the backend
are internal payment integrations and are not public API endpoints.