API 1.0.0

Parkoni Connector API

For management systems that own an operator’s inventory and stays. Your system reports stays and availability; bookings arrive as signed webhooks. A system vendor key acts for one linked operator per request, named in the header `X-Parkoni-Operator: <operatorId>`; an operator’s own key needs no header. Errors answer `{ error: { code, message } }` with the codes listed per response.

Channel APIConnector APIOpenAPI 3.1 JSON

Authentication

Authorization: Bearer pzk_<prefix>_<secret>. Keys are shown once and stored hashed.

Idempotency

Events can be repeated safely; an event already applied returns applied: false.

Webhooks

X-Parkoni-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256 of "t.body">; replay window 300 seconds

Endpoints

Base URL: /api/connector/v1

get/catalogue

Facilities, pools and products of the operator

200 Catalogue400 invalid_request, invalid_json401 unauthorized: missing or invalid key403 missing_scope, forbidden, not_a_channel or not_a_connector, operator_not_linked404 Not found429 rate_limited (header Retry-After)500 internal

get/bookings

Bookings changed since (bookings still in checkout are left out)

200 Bookings400 invalid_request, invalid_json, invalid_since401 unauthorized: missing or invalid key403 missing_scope, forbidden, not_a_channel or not_a_connector, operator_not_linked404 Not found429 rate_limited (header Retry-After)500 internal

get/bookings/{reference}

One booking with its stay report

200 Booking400 invalid_request, invalid_json401 unauthorized: missing or invalid key403 missing_scope, forbidden, not_a_channel or not_a_connector, operator_not_linked404 booking_not_found429 rate_limited (header Retry-After)500 internal

post/bookings/{reference}/events

Report accept, decline, checked_in, picked_up, checked_out or no_show; repeats are harmless

200 Applied or already applied400 invalid_request, invalid_json401 unauthorized: missing or invalid key403 missing_scope, forbidden, not_a_channel or not_a_connector, operator_not_linked404 booking_not_found409 no_stay, no_show_window, invalid_transition, not_allowed, no_capacity429 rate_limited (header Retry-After)500 internal

put/pools/{poolId}/availability

The system reports free units per period; the platform never sells beyond them in any slice

200 Caps applied per period400 invalid_request, invalid_json, invalid_period (also a period that ends in the past; one that began already counts from now)401 unauthorized: missing or invalid key403 missing_scope, forbidden, not_a_channel or not_a_connector, operator_not_linked404 pool_not_found413 push_too_large: the periods span more than 400 days429 rate_limited (header Retry-After)500 internal

get/deliveries

Your webhook delivery log (last 100)

200 Deliveries400 invalid_request, invalid_json401 unauthorized: missing or invalid key403 missing_scope, forbidden, not_a_channel or not_a_connector, operator_not_linked404 Not found429 rate_limited (header Retry-After)500 internal

post/deliveries/{id}/redeliver

Send a failed or dead-lettered delivery again (needs a writing scope)

200 Queued400 invalid_request, invalid_json401 unauthorized: missing or invalid key403 missing_scope, forbidden, not_a_channel or not_a_connector, operator_not_linked404 delivery_not_found409 not_redeliverable: delivered, still pending or being sent, or its event is past the 30-day retention429 rate_limited (header Retry-After)500 internal

Open data, no key needed

Facts about every airport and port with car parks on Parkoni, rebuilt every 10 minutes, under CC BY 4.0 (attribution: Parkoni, parkoni.com).

  • GET /data/airports.json: every place with car park counts, distances, transfers, dated from-prices and its pages in all languages.
  • GET /data/airports/{CODE}.json: one place (IATA code or UN/LOCODE) with every car park and offer: operator, transfer, distance, cancellation, confirmation, payment, from-prices.
  • GET /{language}/suche?airport={CODE}&from={YYYY-MM-DDTHH:MM}&to={YYYY-MM-DDTHH:MM}&toKind=landing|pickup: the search page with priced offers for those dates (local time of the place; landing = the return flight lands, pickup = you collect the car). For assistants acting on a traveller's request, not for crawling.
  • /llms.txt and /llms-full.txt: the same catalogue for language models. Most pages also have a Markdown version at their address plus .md.

Schemas

PriceLineV1 · StayReportV1 · BookingExchangeV1 · AvailabilityV1 · QuoteV1 · RateCardV1 · PartnerBookingRequestV1 · ApiErrorV1

OpenAPI 3.1 JSON