Salta ai contenuti
ArenileArenile
Coste360.itCoste360.it

Stato della prenotazione e della sessione di checkout (polling)

GET
/api/public/v1/{slug}/bookings/{bookingId}
curl --request GET \
--url https://example.com/api/public/v1/example/bookings/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'X-Arenile-Checkout: example'

Spec 10.1 passo 7: la pagina interroga lo stato dopo il ritorno dal provider fino a confirmed. Questa chiamata NON conferma mai (INV-19): la conferma arriva solo dal webhook o dal driver manuale. Richiede X-Arenile-Checkout; token errato o di un’altra prenotazione → 404 checkout_not_found. Cache-Control: no-store.

slug
required
string
/^[a-z0-9](?:[a-z0-9-]{0,62}[a-z0-9])?$/
bookingId
required
string format: uuid
X-Arenile-Checkout
required
string
>= 32 characters <= 128 characters

Token della sessione di checkout restituito da createPublicBooking (salvato dal client in sessionStorage, spec 12.2). Mai in un cookie o nella URL.

Stato del checkout

Media typeapplication/json
object
booking_id
required
string format: uuid
status
required

Stato della prenotazione (spec 10.2).

string
Allowed values: draft held pending_payment awaiting_approval confirmed checked_in completed cancelled no_show expired rejected
checkout_state
required
string
Allowed values: open paying completed expired abandoned
hold_expires_at
string format: date-time
next_action
required

Details: mancano dati cliente o condizioni; pay: pronto per il pagamento; wait: pagamento avviato o approvazione in attesa, continuare il polling; done: confermata; expired: hold scaduto o abbandonato; rejected: rifiutata dal gestore.

string
Allowed values: details pay wait done expired rejected
summary
required
object
code

Codice prenotazione (presente dalla conferma).

string
starts_on
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
ends_on
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
slots
required

Fasce prenotate: mattina, pomeriggio o giorno intero.

string
Allowed values: AM PM FULL
formula
required

Formula di durata.

string
Allowed values: half_day day multi_day week fortnight month season
lines
required
Array<object>
object
pack_id
required
string format: uuid
pack_name
required

Testo localizzato lingua → testo (es. {“it”: “Prima fila”}); si ricade sulla lingua predefinita.

object
key
additional properties
string
<= 2000 characters
zone_id
string format: uuid
zone_name

Testo localizzato lingua → testo (es. {“it”: “Prima fila”}); si ricade sulla lingua predefinita.

object
key
additional properties
string
<= 2000 characters
spot_label

Assente finché una riga di una zona zone non è assegnata (assegnazione automatica, spec 7.5).

string
quantity
required
integer
assignment
required
string
Allowed values: assigned pending not_applicable
extras
required
Array<object>
object
extra_id
required
string format: uuid
name
required

Testo localizzato lingua → testo (es. {“it”: “Prima fila”}); si ricade sulla lingua predefinita.

object
key
additional properties
string
<= 2000 characters
quantity
required
integer
extras
required
Array<object>
object
extra_id
required
string format: uuid
name
required

Testo localizzato lingua → testo (es. {“it”: “Prima fila”}); si ricade sulla lingua predefinita.

object
key
additional properties
string
<= 2000 characters
quantity
required
integer
currency
required
string
total
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
paid
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
balance_due
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
deposit_due
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
quote
object
available
required
boolean
conflicts
required
Array<object>

Mezza giornata non disponibile per una risorsa (spec 7.2), restituita in Problem.conflicts e nelle anteprime.

object
spot_id
string format: uuid
pool_id
string format: uuid
zone_id
string format: uuid
date
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
slot
required

Fascia: mattina o pomeriggio.

string
Allowed values: AM PM
reason
required
string
Allowed values: spot_unavailable pool_exhausted quota_exceeded closed inactive
currency
required
string
total
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
deposit_due
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
due_now
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
balance_later
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
items
required
Array<object>
object
kind
required
string
Allowed values: line extra discount rounding
ref_id

Pack, extra o codice promozionale di riferimento.

string format: uuid
label
required

Testo localizzato lingua → testo (es. {“it”: “Prima fila”}); si ricade sulla lingua predefinita.

object
key
additional properties
string
<= 2000 characters
quantity
integer
amount
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
violations
required
Array<object>
object
code
required

Codice stabile (es. lead_time_too_short).

string
params
object
key
additional properties
string
promo
object
code
required
string
status
required
string
Allowed values: applied invalid not_applicable
payment_plan
required

Come si paga secondo la policy online: tutto online, acconto online e saldo dopo, alla cassa (nessun pagamento online), su approvazione del gestore.

string
Allowed values: online_full online_deposit at_desk approval
customer

Dati inseriti dal cliente in questa sessione (solo con il token della sessione).

object
first_name
required
string
last_name
required
string
email
required
string
phone
string
accepted_terms_version
string
marketing_consent
required
boolean
payment
object
status
required
string
Allowed values: none pending succeeded failed
amount
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
failure_reason

Motivo breve e non personale (es. card_declined).

string
confirmation
object
code
required
string
qr_payload
required

Testo codificato nel QR (check-in in cassa).

string
qr_svg

QR in SVG in linea (evita una seconda richiesta).

string
manage_link_sent
required
boolean
email_masked

Email del cliente mascherata (mo@e.it).

string

Example

{
"status": "draft",
"checkout_state": "open",
"next_action": "details",
"summary": {
"slots": "AM",
"formula": "half_day",
"lines": [
{
"assignment": "assigned"
}
]
},
"quote": {
"conflicts": [
{
"slot": "AM",
"reason": "spot_unavailable"
}
],
"items": [
{
"kind": "line"
}
],
"promo": {
"status": "applied"
},
"payment_plan": "online_full"
},
"payment": {
"status": "none"
}
}

Risorsa inesistente

Media typeapplication/problem+json

Errore RFC 9457 (application/problem+json).

object
type
required

Slug stabile del tipo di errore. I client devono basarsi su questo valore, mai sul testo di title o detail.

string
Allowed values: bad_request validation_failed unauthorized invalid_credentials totp_required invalid_totp totp_enrolment_required totp_already_enabled forbidden csrf_failed not_found conflict method_not_allowed unsupported_media_type rate_limited idempotency_key_reused idempotency_in_progress internal_error spot_unavailable no_price policy_violation hold_expired version_conflict precondition_required spot_has_future_allocations not_implemented pool_exhausted quota_exceeded invalid_transition cash_session_closed cash_session_already_open booking_outside_period checkout_not_found payment_provider_unavailable webhook_signature_invalid pairing_code_invalid lan_mode_required loopback_required setup_token_invalid setup_completed renewal_expired waitlist_offer_expired waitlist_disabled credit_insufficient season_rollover_conflict test_mode_preview_required import_invalid import_already_applied refund_in_progress zone_full assignment_conflict ticket_number_conflict ticket_voided ticket_already_entered price_changed ticket_owned printing_unavailable printer_address_not_allowed print_route_missing payment_provider_test_mode email_template_invalid
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after

Secondi da attendere (solo per rate_limited).

integer
errors
Array<object>
object
field
required
string
message
required
string
current_version

Versione corrente della risorsa (solo per version_conflict).

integer format: int64
spot_ids

Postazioni con allocazioni future (solo per spot_has_future_allocations).

Array<string>
violations

Vincoli violati (solo per policy_violation).

Array<object>
object
code
required

Codice stabile (es. lead_time_too_short).

string
params
object
key
additional properties
string
conflicts

Mezze giornate non disponibili (solo per spot_unavailable, pool_exhausted, quota_exceeded).

Array<object>

Mezza giornata non disponibile per una risorsa (spec 7.2), restituita in Problem.conflicts e nelle anteprime.

object
spot_id
string format: uuid
pool_id
string format: uuid
zone_id
string format: uuid
date
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
slot
required

Fascia: mattina o pomeriggio.

string
Allowed values: AM PM
reason
required
string
Allowed values: spot_unavailable pool_exhausted quota_exceeded closed inactive
current_status

Stato della prenotazione (spec 10.2).

string
Allowed values: draft held pending_payment awaiting_approval confirmed checked_in completed cancelled no_show expired rejected
existing_customer_id

Cliente già presente con la stessa email o telefono (solo per conflict su createCustomer).

string format: uuid
period

Periodo del soggiorno e data odierna dello stabilimento (solo per booking_outside_period).

object
today
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
starts_on
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
ends_on
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date

Example

{
"type": "bad_request",
"conflicts": [
{
"slot": "AM",
"reason": "spot_unavailable"
}
],
"current_status": "draft"
}

Troppe richieste

Media typeapplication/problem+json

Errore RFC 9457 (application/problem+json).

object
type
required

Slug stabile del tipo di errore. I client devono basarsi su questo valore, mai sul testo di title o detail.

string
Allowed values: bad_request validation_failed unauthorized invalid_credentials totp_required invalid_totp totp_enrolment_required totp_already_enabled forbidden csrf_failed not_found conflict method_not_allowed unsupported_media_type rate_limited idempotency_key_reused idempotency_in_progress internal_error spot_unavailable no_price policy_violation hold_expired version_conflict precondition_required spot_has_future_allocations not_implemented pool_exhausted quota_exceeded invalid_transition cash_session_closed cash_session_already_open booking_outside_period checkout_not_found payment_provider_unavailable webhook_signature_invalid pairing_code_invalid lan_mode_required loopback_required setup_token_invalid setup_completed renewal_expired waitlist_offer_expired waitlist_disabled credit_insufficient season_rollover_conflict test_mode_preview_required import_invalid import_already_applied refund_in_progress zone_full assignment_conflict ticket_number_conflict ticket_voided ticket_already_entered price_changed ticket_owned printing_unavailable printer_address_not_allowed print_route_missing payment_provider_test_mode email_template_invalid
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after

Secondi da attendere (solo per rate_limited).

integer
errors
Array<object>
object
field
required
string
message
required
string
current_version

Versione corrente della risorsa (solo per version_conflict).

integer format: int64
spot_ids

Postazioni con allocazioni future (solo per spot_has_future_allocations).

Array<string>
violations

Vincoli violati (solo per policy_violation).

Array<object>
object
code
required

Codice stabile (es. lead_time_too_short).

string
params
object
key
additional properties
string
conflicts

Mezze giornate non disponibili (solo per spot_unavailable, pool_exhausted, quota_exceeded).

Array<object>

Mezza giornata non disponibile per una risorsa (spec 7.2), restituita in Problem.conflicts e nelle anteprime.

object
spot_id
string format: uuid
pool_id
string format: uuid
zone_id
string format: uuid
date
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
slot
required

Fascia: mattina o pomeriggio.

string
Allowed values: AM PM
reason
required
string
Allowed values: spot_unavailable pool_exhausted quota_exceeded closed inactive
current_status

Stato della prenotazione (spec 10.2).

string
Allowed values: draft held pending_payment awaiting_approval confirmed checked_in completed cancelled no_show expired rejected
existing_customer_id

Cliente già presente con la stessa email o telefono (solo per conflict su createCustomer).

string format: uuid
period

Periodo del soggiorno e data odierna dello stabilimento (solo per booking_outside_period).

object
today
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
starts_on
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
ends_on
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date

Example

{
"type": "bad_request",
"conflicts": [
{
"slot": "AM",
"reason": "spot_unavailable"
}
],
"current_status": "draft"
}
Retry-After
integer

Secondi da attendere

Operazione non ancora disponibile (not_implemented)

Media typeapplication/problem+json

Errore RFC 9457 (application/problem+json).

object
type
required

Slug stabile del tipo di errore. I client devono basarsi su questo valore, mai sul testo di title o detail.

string
Allowed values: bad_request validation_failed unauthorized invalid_credentials totp_required invalid_totp totp_enrolment_required totp_already_enabled forbidden csrf_failed not_found conflict method_not_allowed unsupported_media_type rate_limited idempotency_key_reused idempotency_in_progress internal_error spot_unavailable no_price policy_violation hold_expired version_conflict precondition_required spot_has_future_allocations not_implemented pool_exhausted quota_exceeded invalid_transition cash_session_closed cash_session_already_open booking_outside_period checkout_not_found payment_provider_unavailable webhook_signature_invalid pairing_code_invalid lan_mode_required loopback_required setup_token_invalid setup_completed renewal_expired waitlist_offer_expired waitlist_disabled credit_insufficient season_rollover_conflict test_mode_preview_required import_invalid import_already_applied refund_in_progress zone_full assignment_conflict ticket_number_conflict ticket_voided ticket_already_entered price_changed ticket_owned printing_unavailable printer_address_not_allowed print_route_missing payment_provider_test_mode email_template_invalid
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
retry_after

Secondi da attendere (solo per rate_limited).

integer
errors
Array<object>
object
field
required
string
message
required
string
current_version

Versione corrente della risorsa (solo per version_conflict).

integer format: int64
spot_ids

Postazioni con allocazioni future (solo per spot_has_future_allocations).

Array<string>
violations

Vincoli violati (solo per policy_violation).

Array<object>
object
code
required

Codice stabile (es. lead_time_too_short).

string
params
object
key
additional properties
string
conflicts

Mezze giornate non disponibili (solo per spot_unavailable, pool_exhausted, quota_exceeded).

Array<object>

Mezza giornata non disponibile per una risorsa (spec 7.2), restituita in Problem.conflicts e nelle anteprime.

object
spot_id
string format: uuid
pool_id
string format: uuid
zone_id
string format: uuid
date
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
slot
required

Fascia: mattina o pomeriggio.

string
Allowed values: AM PM
reason
required
string
Allowed values: spot_unavailable pool_exhausted quota_exceeded closed inactive
current_status

Stato della prenotazione (spec 10.2).

string
Allowed values: draft held pending_payment awaiting_approval confirmed checked_in completed cancelled no_show expired rejected
existing_customer_id

Cliente già presente con la stessa email o telefono (solo per conflict su createCustomer).

string format: uuid
period

Periodo del soggiorno e data odierna dello stabilimento (solo per booking_outside_period).

object
today
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
starts_on
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date
ends_on
required

Data di calendario YYYY-MM-DD nel fuso dello stabilimento.

string format: date

Example

{
"type": "bad_request",
"conflicts": [
{
"slot": "AM",
"reason": "spot_unavailable"
}
],
"current_status": "draft"
}