Salta ai contenuti
ArenileArenile
Coste360.itCoste360.it

Confronto con l'anno precedente sullo stesso intervallo di calendario

GET
/api/admin/v1/establishments/{establishmentId}/reports/comparison
curl --request GET \
--url 'https://example.com/api/admin/v1/establishments/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/reports/comparison?from=2026-04-15&to=2026-04-15&granularity=day&align=calendar&format=json' \
--cookie arenile_session=<arenile_session>

Confronta from..to con lo stesso intervallo di calendario dell’anno precedente (stesso giorno e mese; il 29 febbraio diventa 28 febbraio) o di compare_year (che deve precedere l’anno di from). Per ogni metrica: valore corrente, precedente, differenza assoluta e relativa in punti base (assente se il precedente è 0); stesse basi di data del riepilogo (soggiorno e incasso). La serie sovrappone l’anno precedente a quello corrente per giorno di calendario (un 29 febbraio precedente si somma al 28 febbraio; un 29 febbraio corrente non ha riscontro), quindi un valore non finisce mai nel mese sbagliato. Con align=weekday il periodo di confronto ha la stessa durata ma inizia nel giorno della settimana uguale più vicino alla data di calendario corrispondente (es. sabato con sabato: 364 giorni prima per l’anno precedente) e la serie allinea giorno per giorno. Permesso reports.read.

establishmentId
required
string format: uuid
from
required

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

string format: date

Primo giorno del periodo (incluso).

to
required

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

string format: date

Ultimo giorno del periodo (incluso; al massimo 400 giorni dopo from).

compare_year
integer
>= 2000 <= 2999

Anno di confronto (default: anno di from − 1); deve precedere l’anno di from.

granularity
string
Allowed values: day week month

Granularità della serie (default week).

align

Calendar = stesso giorno e mese (29 febbraio → 28 febbraio); weekday = stessa durata, inizio spostato al giorno della settimana uguale più vicino (scarto massimo 3 giorni).

string
Allowed values: calendar weekday

Allineamento del periodo di confronto (default calendar).

format
string
Allowed values: json csv xlsx

Formato (default json; csv o xlsx, oppure Accept: text/csv).

Confronto

object
current
required
object
from
required

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

string format: date
to
required

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

string format: date
days
required

Giorni di calendario del periodo (inclusi gli estremi).

integer
previous
required
object
from
required

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

string format: date
to
required

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

string format: date
days
required

Giorni di calendario del periodo (inclusi gli estremi).

integer
granularity
required
string
Allowed values: day week month
align

Calendar = stesso giorno e mese (29 febbraio → 28 febbraio); weekday = stessa durata, inizio spostato al giorno della settimana uguale più vicino (scarto massimo 3 giorni).

string
Allowed values: calendar weekday
metrics
required
Array<object>
object
metric
required
string
Allowed values: occupancy_bp revenue_collected revenue_booked bookings average_booking_value cancellations no_shows season_passes_sold released_units resold_units
unit
required

Unità del valore: cents (Money), count, basis_points.

string
Allowed values: cents count basis_points
current
required
integer format: int64
previous
required
integer format: int64
delta
required

Current − previous.

integer format: int64
delta_bp

Variazione relativa (current − previous) × 10000 / previous, troncata; assente se previous = 0.

integer format: int64
series
required
Array<object>
object
key
required

Chiave del bucket nel periodo corrente (YYYY-MM-DD, YYYY-Www, YYYY-MM).

string
label
required
string
current_from
required

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

string format: date
previous_from
required

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

string format: date
current_revenue
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
previous_revenue
required

Importo in centesimi di euro (IVA inclusa).

integer format: int64
current_occupancy_bp
required

Rapporto in punti base (10000 = 100%). Intero, mai float.

integer format: int64
previous_occupancy_bp
required

Rapporto in punti base (10000 = 100%). Intero, mai float.

integer format: int64
current_bookings
required
integer
previous_bookings
required
integer

Example

{
"granularity": "day",
"align": "calendar",
"metrics": [
{
"metric": "occupancy_bp",
"unit": "cents"
}
]
}

Richiesta non valida

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"
}

Autenticazione assente o non valida

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"
}

Permesso negato

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"
}

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"
}

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"
}