Salta ai contenuti
PortoPorto

Create a held (hold true, desk option) or confirmed rental; a taken slot is 409 rental_slot_taken, a busy skipper 409 skipper_busy (rental.manage)

POST
/api/admin/v1/marinas/{marinaId}/rental/bookings
Code sample: Shell / cURL
curl --request POST \
--url https://example.com/api/admin/v1/marinas/example/rental/bookings \
--header 'Content-Type: application/json' \
--header 'X-CSRF-Token: <X-CSRF-Token>' \
--cookie porto_session=<porto_session> \
--data '{ "unit_id": "example", "formula_id": "example", "start": { "date": "2026-04-15", "slot": 1 }, "end": { "date": "2026-04-15", "slot": 1 }, "skipper_id": "example", "hold": true, "customer_id": "example", "renter": { "name": "example", "phone": "example", "email": "example" }, "party_size": 1, "extras": [ { "extra_id": "example", "qty_milli": 1 } ], "invoice_requested": true, "allow_outside_hours": true, "note": "example" }'
marinaId
required
string
Idempotency-Key
string
>= 8 characters <= 128 characters /^[A-Za-z0-9_\-:.]+$/

8 to 128 characters of [A-Za-z0-9_-:.]; the response is replayed for 24 hours, 7 days for offline operations (x-porto-offline).

Media typeapplication/json
object
unit_id
required
string
<= 36 characters
formula_id
required
string
<= 36 characters
start
required

A point of the local wall-clock day in the marina time zone: slot s is the half hour [s x 30 min, (s+1) x 30 min); an end point is exclusive and may be 48 (24:00)

object
date
required

Calendar date YYYY-MM-DD in the marina timezone

string format: date
slot
required
integer
<= 48
end
required

A point of the local wall-clock day in the marina time zone: slot s is the half hour [s x 30 min, (s+1) x 30 min); an end point is exclusive and may be 48 (24:00)

object
date
required

Calendar date YYYY-MM-DD in the marina timezone

string format: date
slot
required
integer
<= 48
skipper_id
string
<= 36 characters
hold

True = held option (desk_hold_minutes)

boolean
customer_id
string
<= 36 characters
renter

Walk-in renter without a registry customer (encrypted at rest, never in events or logs)

object
name
string
<= 120 characters
phone
string
<= 32 characters
email
string
<= 254 characters
party_size
integer
>= 1 <= 99
extras
Array<object>
<= 20 items
object
extra_id
required
string
<= 36 characters
qty_milli
required
integer format: int64
>= 1
invoice_requested
boolean
allow_outside_hours

Book a skipper outside his weekly hours (audited)

boolean
note
string
<= 500 characters

Example generated

{
"unit_id": "example",
"formula_id": "example",
"start": {
"date": "2026-04-15",
"slot": 1
},
"end": {
"date": "2026-04-15",
"slot": 1
},
"skipper_id": "example",
"hold": true,
"customer_id": "example",
"renter": {
"name": "example",
"phone": "example",
"email": "example"
},
"party_size": 1,
"extras": [
{
"extra_id": "example",
"qty_milli": 1
}
],
"invoice_requested": true,
"allow_outside_hours": true,
"note": "example"
}

Created

Media typeapplication/json
object
id
required
string
number
required

NL-NNNNNN

string
status
required
string
Allowed values: held confirmed checked_out returned closed cancelled no_show
channel
required
string
Allowed values: desk api online
unit_id
required
string
unit_code
required
string
formula_id
required
string
formula_code
required
string
kind
required
string
Allowed values: hourly half_day day multi_day week
skipper_id
string
start
required

A point of the local wall-clock day in the marina time zone: slot s is the half hour [s x 30 min, (s+1) x 30 min); an end point is exclusive and may be 48 (24:00)

object
date
required

Calendar date YYYY-MM-DD in the marina timezone

string format: date
slot
required
integer
<= 48
end
required

A point of the local wall-clock day in the marina time zone: slot s is the half hour [s x 30 min, (s+1) x 30 min); an end point is exclusive and may be 48 (24:00)

object
date
required

Calendar date YYYY-MM-DD in the marina timezone

string format: date
slot
required
integer
<= 48
starts_at
required
string format: date-time
ends_at
required
string format: date-time
hold_expires_at
string format: date-time
slots_lost
required

The rows of an expired hold were reclaimed by another booking

boolean
customer_id
string
renter

Walk-in renter without a registry customer (encrypted at rest, never in events or logs)

object
name
string
<= 120 characters
phone
string
<= 32 characters
email
string
<= 254 characters
party_size
integer
invoice_requested
required
boolean
fiscal_mode
required

Receipt (commercial document through the FiscalDriver) unless the customer asked for an invoice

string
Allowed values: receipt invoice
licence_required
required
boolean
allow_outside_hours
required
boolean
total_cents
required

Amount in integer cents of the marina currency

integer format: int64
engine_version
required
integer
lines
required
Array<object>
object
seq
required
integer
kind
required
string
Allowed values: unit skipper extra late_fee fuel damage
item_id
required
string
item_code
required
string
qty_milli
required

Quantity in thousandths (1.5 = 1500)

integer format: int64
unit_cents
required

Amount in integer cents of the marina currency

integer format: int64
amount_cents
required

Amount in integer cents of the marina currency

integer format: int64
price_includes_vat
required
boolean
rule_ids
Array<string>
extras
required
Array<object>
object
extra_id
required
string
item_id
required
string
qty_milli
required

Quantity in thousandths (1.5 = 1500)

integer format: int64
source
required
string
Allowed values: booking return
deposit
required
object
mode
string
Allowed values: cash card_pos preauth waived
status
required
string
Allowed values: none pending held authorized capture_pending released retained partially_retained waived
amount_cents
required

Amount in integer cents of the marina currency

integer format: int64
retained_cents
required

Amount in integer cents of the marina currency

integer format: int64
decision_cents

Amount in integer cents of the marina currency

integer format: int64
payment_id
string
intent_id
string
checkout_url

Pre-authorisation page while pending (shown as a QR)

string
checkout_qr_svg

SVG of a QR of checkout_url (the renter scans it with their own phone); set with checkout_url

string
expires_at
string format: date-time
waive_reason
string
charges
required
Array<object>
object
charge_id
required
string
kind
required
string
Allowed values: main return adjustment replaced deposit_retention
status
required
string
total_cents
required

Amount in integer cents of the marina currency

integer format: int64
paid_amount_cents
required

Amount in integer cents of the marina currency

integer format: int64
fiscal_mode
required

Receipt (commercial document through the FiscalDriver) unless the customer asked for an invoice

string
Allowed values: receipt invoice
checked_out_at
string format: date-time
returned_at
string format: date-time
closed_at
string format: date-time
cancelled_at
string format: date-time
cancel_reason
string
no_show_at
string format: date-time
note
required
string
version
required
integer format: int64
created_at
required
string format: date-time
updated_at
required
string format: date-time

Example

{
"status": "held",
"channel": "desk",
"kind": "hourly",
"fiscal_mode": "receipt",
"lines": [
{
"kind": "unit"
}
],
"extras": [
{
"source": "booking"
}
],
"deposit": {
"mode": "cash",
"status": "none"
},
"charges": [
{
"kind": "main",
"fiscal_mode": "receipt"
}
]
}
ETag
string

Version of the resource, quoted (“3”)

Malformed request or validation failure

Media typeapplication/problem+json
object
type
required
string
Allowed values: bad_request validation_failed weak_password invalid_reset_token invalid_totp pairing_code_invalid invalid_scope invalid_webhook_url unknown_event_type unauthorized invalid_credentials totp_required forbidden csrf_failed totp_enrolment_required totp_required_by_policy not_found method_not_allowed conflict slug_taken already_member last_owner totp_already_enabled totp_not_enrolled endpoint_disabled idempotency_in_progress version_conflict unsupported_media_type idempotency_key_reused precondition_required rate_limited internal_error not_ready map_invalid map_not_empty map_not_georeferenced invalid_file file_too_large csv_invalid customer_anonymized customer_merged download_link_expired no_price promo_not_applicable price_list_invalid price_list_immutable price_list_overlap in_use resource_taken fit_blocked placement_invalid invalid_transition quote_expired hold_expired closure_active undo_unavailable release_invalid customer_required not_implemented renewal_exists proposal_closed signature_open invalid_signature otp_invalid otp_locked otp_rate_limited link_invalid template_invalid template_limits paper_scan_required insurance_required customer_email_missing shares_invalid table_incomplete table_active transfer_requirements mandate_overlap vessel_in_other_fleet vessel_not_in_fleet import_not_undoable provider_unknown code_taken charge_immutable charge_cancelled use_edit match_exceeds refund_exceeds already_reversed credit_insufficient not_deposit nothing_to_settle charge_exists no_termination_amount not_exported export_empty export_too_large charges_not_open release_not_resold cash_session_required cash_session_open cash_session_closed cash_insufficient register_in_use provider_disabled provider_refund_unsupported provider_error billing_item_missing first_run_token_invalid first_run_done lan_port_unavailable lan_no_address backup_in_progress restore_failed restore_backup_newer allocation_changed offline_not_allowed remote_unreachable remote_pin_mismatch peripheral_unavailable claim_expired app_pin_invalid invalid_period invalid_report_filter report_too_large unknown_indicator booking_unavailable booking_rules booking_busy consent_required text_outdated refund_changed price_changed cancellation_not_allowed nothing_due idempotency_mismatch storage_target_invalid storage_no_space area_exits_invalid pinned_invalid too_many_items scenario_window_invalid scenario_not_draft scenario_conflicts movement_not_pending element_invalid maintenance_conflicts task_already_done reading_charged consumption_frozen formula_invalid work_order_closed work_order_has_charges qualification_mismatch capacity_exceeded dependency_violation duration_too_long offline_time_out_of_range timer_already_running return_exceeds_issued nothing_to_bill equipment_slot_taken operator_busy equipment_out_of_service equipment_capacity_exceeded operator_not_enabled outside_lift_window ingest_unauthorized ingest_timestamp_out_of_range invalid_payload segment_overlap resource_has_sensor invalid_sensor_resource alert_stale alert_action_not_allowed profile_incomplete photo_invalid
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
errors
Array<object>
object
field
required
string
code
required
string
message
string
retry_after_seconds
integer
issues

Map validation issues (map_invalid)

Array<object>
object
code
required

ValidateMap rule (m1-plan §2.3), e.g. berth_overlap

string
severity
required
string
Allowed values: error warning
element_type
required
string
refs
required
Array<string>
field
string
params

Numbers only (cm, counts)

object
key
additional properties
integer format: int64
price_list_issues

Price list validation issues (price_list_invalid)

Array<object>
object
code
required

Pricing.Validate issue code (m2-plan §4.8), e.g. period_overlap

string
severity
required
string
Allowed values: error warning
ref
required
object
kind
required
string
Allowed values: list settings period band rule item
id

Id of the row, or the client key of an unsaved one

string
field
string
params

Codes and integers as strings; never personal data

object
key
additional properties
string
details

Machine-readable details: no_price {item_id, contract_type, night, unit, category, band, reason}; price_list_overlap {conflicts: [{id, code, valid_from, valid_to}]}; in_use {references}; resource_taken ConflictDetail; fit_blocked FitResult; placement_invalid {reason, allocation_id?}; invalid_transition {from, action}; closure_active {closure_id, from_date, to_date}; release_invalid {reason}; allocation_changed {current_resource_id, current_resource_code} (null when the allocation is gone); remote_pin_mismatch {expected_fingerprint, presented_fingerprint}; scenario_conflicts {conflicts: [StorageScenarioConflict]}; maintenance_conflicts {conflicts: [MaintenanceConflict]}; storage_no_space {area_id, from, to}. Ids, codes, dates and integers only.

object
key
additional properties
any

Example

{
"type": "bad_request",
"issues": [
{
"severity": "error"
}
],
"price_list_issues": [
{
"severity": "error",
"ref": {
"kind": "list"
}
}
]
}

Not authenticated, or invalid credentials

Media typeapplication/problem+json
object
type
required
string
Allowed values: bad_request validation_failed weak_password invalid_reset_token invalid_totp pairing_code_invalid invalid_scope invalid_webhook_url unknown_event_type unauthorized invalid_credentials totp_required forbidden csrf_failed totp_enrolment_required totp_required_by_policy not_found method_not_allowed conflict slug_taken already_member last_owner totp_already_enabled totp_not_enrolled endpoint_disabled idempotency_in_progress version_conflict unsupported_media_type idempotency_key_reused precondition_required rate_limited internal_error not_ready map_invalid map_not_empty map_not_georeferenced invalid_file file_too_large csv_invalid customer_anonymized customer_merged download_link_expired no_price promo_not_applicable price_list_invalid price_list_immutable price_list_overlap in_use resource_taken fit_blocked placement_invalid invalid_transition quote_expired hold_expired closure_active undo_unavailable release_invalid customer_required not_implemented renewal_exists proposal_closed signature_open invalid_signature otp_invalid otp_locked otp_rate_limited link_invalid template_invalid template_limits paper_scan_required insurance_required customer_email_missing shares_invalid table_incomplete table_active transfer_requirements mandate_overlap vessel_in_other_fleet vessel_not_in_fleet import_not_undoable provider_unknown code_taken charge_immutable charge_cancelled use_edit match_exceeds refund_exceeds already_reversed credit_insufficient not_deposit nothing_to_settle charge_exists no_termination_amount not_exported export_empty export_too_large charges_not_open release_not_resold cash_session_required cash_session_open cash_session_closed cash_insufficient register_in_use provider_disabled provider_refund_unsupported provider_error billing_item_missing first_run_token_invalid first_run_done lan_port_unavailable lan_no_address backup_in_progress restore_failed restore_backup_newer allocation_changed offline_not_allowed remote_unreachable remote_pin_mismatch peripheral_unavailable claim_expired app_pin_invalid invalid_period invalid_report_filter report_too_large unknown_indicator booking_unavailable booking_rules booking_busy consent_required text_outdated refund_changed price_changed cancellation_not_allowed nothing_due idempotency_mismatch storage_target_invalid storage_no_space area_exits_invalid pinned_invalid too_many_items scenario_window_invalid scenario_not_draft scenario_conflicts movement_not_pending element_invalid maintenance_conflicts task_already_done reading_charged consumption_frozen formula_invalid work_order_closed work_order_has_charges qualification_mismatch capacity_exceeded dependency_violation duration_too_long offline_time_out_of_range timer_already_running return_exceeds_issued nothing_to_bill equipment_slot_taken operator_busy equipment_out_of_service equipment_capacity_exceeded operator_not_enabled outside_lift_window ingest_unauthorized ingest_timestamp_out_of_range invalid_payload segment_overlap resource_has_sensor invalid_sensor_resource alert_stale alert_action_not_allowed profile_incomplete photo_invalid
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
errors
Array<object>
object
field
required
string
code
required
string
message
string
retry_after_seconds
integer
issues

Map validation issues (map_invalid)

Array<object>
object
code
required

ValidateMap rule (m1-plan §2.3), e.g. berth_overlap

string
severity
required
string
Allowed values: error warning
element_type
required
string
refs
required
Array<string>
field
string
params

Numbers only (cm, counts)

object
key
additional properties
integer format: int64
price_list_issues

Price list validation issues (price_list_invalid)

Array<object>
object
code
required

Pricing.Validate issue code (m2-plan §4.8), e.g. period_overlap

string
severity
required
string
Allowed values: error warning
ref
required
object
kind
required
string
Allowed values: list settings period band rule item
id

Id of the row, or the client key of an unsaved one

string
field
string
params

Codes and integers as strings; never personal data

object
key
additional properties
string
details

Machine-readable details: no_price {item_id, contract_type, night, unit, category, band, reason}; price_list_overlap {conflicts: [{id, code, valid_from, valid_to}]}; in_use {references}; resource_taken ConflictDetail; fit_blocked FitResult; placement_invalid {reason, allocation_id?}; invalid_transition {from, action}; closure_active {closure_id, from_date, to_date}; release_invalid {reason}; allocation_changed {current_resource_id, current_resource_code} (null when the allocation is gone); remote_pin_mismatch {expected_fingerprint, presented_fingerprint}; scenario_conflicts {conflicts: [StorageScenarioConflict]}; maintenance_conflicts {conflicts: [MaintenanceConflict]}; storage_no_space {area_id, from, to}. Ids, codes, dates and integers only.

object
key
additional properties
any

Example

{
"type": "bad_request",
"issues": [
{
"severity": "error"
}
],
"price_list_issues": [
{
"severity": "error",
"ref": {
"kind": "list"
}
}
]
}

Authenticated but not allowed

Media typeapplication/problem+json
object
type
required
string
Allowed values: bad_request validation_failed weak_password invalid_reset_token invalid_totp pairing_code_invalid invalid_scope invalid_webhook_url unknown_event_type unauthorized invalid_credentials totp_required forbidden csrf_failed totp_enrolment_required totp_required_by_policy not_found method_not_allowed conflict slug_taken already_member last_owner totp_already_enabled totp_not_enrolled endpoint_disabled idempotency_in_progress version_conflict unsupported_media_type idempotency_key_reused precondition_required rate_limited internal_error not_ready map_invalid map_not_empty map_not_georeferenced invalid_file file_too_large csv_invalid customer_anonymized customer_merged download_link_expired no_price promo_not_applicable price_list_invalid price_list_immutable price_list_overlap in_use resource_taken fit_blocked placement_invalid invalid_transition quote_expired hold_expired closure_active undo_unavailable release_invalid customer_required not_implemented renewal_exists proposal_closed signature_open invalid_signature otp_invalid otp_locked otp_rate_limited link_invalid template_invalid template_limits paper_scan_required insurance_required customer_email_missing shares_invalid table_incomplete table_active transfer_requirements mandate_overlap vessel_in_other_fleet vessel_not_in_fleet import_not_undoable provider_unknown code_taken charge_immutable charge_cancelled use_edit match_exceeds refund_exceeds already_reversed credit_insufficient not_deposit nothing_to_settle charge_exists no_termination_amount not_exported export_empty export_too_large charges_not_open release_not_resold cash_session_required cash_session_open cash_session_closed cash_insufficient register_in_use provider_disabled provider_refund_unsupported provider_error billing_item_missing first_run_token_invalid first_run_done lan_port_unavailable lan_no_address backup_in_progress restore_failed restore_backup_newer allocation_changed offline_not_allowed remote_unreachable remote_pin_mismatch peripheral_unavailable claim_expired app_pin_invalid invalid_period invalid_report_filter report_too_large unknown_indicator booking_unavailable booking_rules booking_busy consent_required text_outdated refund_changed price_changed cancellation_not_allowed nothing_due idempotency_mismatch storage_target_invalid storage_no_space area_exits_invalid pinned_invalid too_many_items scenario_window_invalid scenario_not_draft scenario_conflicts movement_not_pending element_invalid maintenance_conflicts task_already_done reading_charged consumption_frozen formula_invalid work_order_closed work_order_has_charges qualification_mismatch capacity_exceeded dependency_violation duration_too_long offline_time_out_of_range timer_already_running return_exceeds_issued nothing_to_bill equipment_slot_taken operator_busy equipment_out_of_service equipment_capacity_exceeded operator_not_enabled outside_lift_window ingest_unauthorized ingest_timestamp_out_of_range invalid_payload segment_overlap resource_has_sensor invalid_sensor_resource alert_stale alert_action_not_allowed profile_incomplete photo_invalid
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
errors
Array<object>
object
field
required
string
code
required
string
message
string
retry_after_seconds
integer
issues

Map validation issues (map_invalid)

Array<object>
object
code
required

ValidateMap rule (m1-plan §2.3), e.g. berth_overlap

string
severity
required
string
Allowed values: error warning
element_type
required
string
refs
required
Array<string>
field
string
params

Numbers only (cm, counts)

object
key
additional properties
integer format: int64
price_list_issues

Price list validation issues (price_list_invalid)

Array<object>
object
code
required

Pricing.Validate issue code (m2-plan §4.8), e.g. period_overlap

string
severity
required
string
Allowed values: error warning
ref
required
object
kind
required
string
Allowed values: list settings period band rule item
id

Id of the row, or the client key of an unsaved one

string
field
string
params

Codes and integers as strings; never personal data

object
key
additional properties
string
details

Machine-readable details: no_price {item_id, contract_type, night, unit, category, band, reason}; price_list_overlap {conflicts: [{id, code, valid_from, valid_to}]}; in_use {references}; resource_taken ConflictDetail; fit_blocked FitResult; placement_invalid {reason, allocation_id?}; invalid_transition {from, action}; closure_active {closure_id, from_date, to_date}; release_invalid {reason}; allocation_changed {current_resource_id, current_resource_code} (null when the allocation is gone); remote_pin_mismatch {expected_fingerprint, presented_fingerprint}; scenario_conflicts {conflicts: [StorageScenarioConflict]}; maintenance_conflicts {conflicts: [MaintenanceConflict]}; storage_no_space {area_id, from, to}. Ids, codes, dates and integers only.

object
key
additional properties
any

Example

{
"type": "bad_request",
"issues": [
{
"severity": "error"
}
],
"price_list_issues": [
{
"severity": "error",
"ref": {
"kind": "list"
}
}
]
}

Not found (or not visible to the principal)

Media typeapplication/problem+json
object
type
required
string
Allowed values: bad_request validation_failed weak_password invalid_reset_token invalid_totp pairing_code_invalid invalid_scope invalid_webhook_url unknown_event_type unauthorized invalid_credentials totp_required forbidden csrf_failed totp_enrolment_required totp_required_by_policy not_found method_not_allowed conflict slug_taken already_member last_owner totp_already_enabled totp_not_enrolled endpoint_disabled idempotency_in_progress version_conflict unsupported_media_type idempotency_key_reused precondition_required rate_limited internal_error not_ready map_invalid map_not_empty map_not_georeferenced invalid_file file_too_large csv_invalid customer_anonymized customer_merged download_link_expired no_price promo_not_applicable price_list_invalid price_list_immutable price_list_overlap in_use resource_taken fit_blocked placement_invalid invalid_transition quote_expired hold_expired closure_active undo_unavailable release_invalid customer_required not_implemented renewal_exists proposal_closed signature_open invalid_signature otp_invalid otp_locked otp_rate_limited link_invalid template_invalid template_limits paper_scan_required insurance_required customer_email_missing shares_invalid table_incomplete table_active transfer_requirements mandate_overlap vessel_in_other_fleet vessel_not_in_fleet import_not_undoable provider_unknown code_taken charge_immutable charge_cancelled use_edit match_exceeds refund_exceeds already_reversed credit_insufficient not_deposit nothing_to_settle charge_exists no_termination_amount not_exported export_empty export_too_large charges_not_open release_not_resold cash_session_required cash_session_open cash_session_closed cash_insufficient register_in_use provider_disabled provider_refund_unsupported provider_error billing_item_missing first_run_token_invalid first_run_done lan_port_unavailable lan_no_address backup_in_progress restore_failed restore_backup_newer allocation_changed offline_not_allowed remote_unreachable remote_pin_mismatch peripheral_unavailable claim_expired app_pin_invalid invalid_period invalid_report_filter report_too_large unknown_indicator booking_unavailable booking_rules booking_busy consent_required text_outdated refund_changed price_changed cancellation_not_allowed nothing_due idempotency_mismatch storage_target_invalid storage_no_space area_exits_invalid pinned_invalid too_many_items scenario_window_invalid scenario_not_draft scenario_conflicts movement_not_pending element_invalid maintenance_conflicts task_already_done reading_charged consumption_frozen formula_invalid work_order_closed work_order_has_charges qualification_mismatch capacity_exceeded dependency_violation duration_too_long offline_time_out_of_range timer_already_running return_exceeds_issued nothing_to_bill equipment_slot_taken operator_busy equipment_out_of_service equipment_capacity_exceeded operator_not_enabled outside_lift_window ingest_unauthorized ingest_timestamp_out_of_range invalid_payload segment_overlap resource_has_sensor invalid_sensor_resource alert_stale alert_action_not_allowed profile_incomplete photo_invalid
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
errors
Array<object>
object
field
required
string
code
required
string
message
string
retry_after_seconds
integer
issues

Map validation issues (map_invalid)

Array<object>
object
code
required

ValidateMap rule (m1-plan §2.3), e.g. berth_overlap

string
severity
required
string
Allowed values: error warning
element_type
required
string
refs
required
Array<string>
field
string
params

Numbers only (cm, counts)

object
key
additional properties
integer format: int64
price_list_issues

Price list validation issues (price_list_invalid)

Array<object>
object
code
required

Pricing.Validate issue code (m2-plan §4.8), e.g. period_overlap

string
severity
required
string
Allowed values: error warning
ref
required
object
kind
required
string
Allowed values: list settings period band rule item
id

Id of the row, or the client key of an unsaved one

string
field
string
params

Codes and integers as strings; never personal data

object
key
additional properties
string
details

Machine-readable details: no_price {item_id, contract_type, night, unit, category, band, reason}; price_list_overlap {conflicts: [{id, code, valid_from, valid_to}]}; in_use {references}; resource_taken ConflictDetail; fit_blocked FitResult; placement_invalid {reason, allocation_id?}; invalid_transition {from, action}; closure_active {closure_id, from_date, to_date}; release_invalid {reason}; allocation_changed {current_resource_id, current_resource_code} (null when the allocation is gone); remote_pin_mismatch {expected_fingerprint, presented_fingerprint}; scenario_conflicts {conflicts: [StorageScenarioConflict]}; maintenance_conflicts {conflicts: [MaintenanceConflict]}; storage_no_space {area_id, from, to}. Ids, codes, dates and integers only.

object
key
additional properties
any

Example

{
"type": "bad_request",
"issues": [
{
"severity": "error"
}
],
"price_list_issues": [
{
"severity": "error",
"ref": {
"kind": "list"
}
}
]
}

Conflict with the current state

Media typeapplication/problem+json
object
type
required
string
Allowed values: bad_request validation_failed weak_password invalid_reset_token invalid_totp pairing_code_invalid invalid_scope invalid_webhook_url unknown_event_type unauthorized invalid_credentials totp_required forbidden csrf_failed totp_enrolment_required totp_required_by_policy not_found method_not_allowed conflict slug_taken already_member last_owner totp_already_enabled totp_not_enrolled endpoint_disabled idempotency_in_progress version_conflict unsupported_media_type idempotency_key_reused precondition_required rate_limited internal_error not_ready map_invalid map_not_empty map_not_georeferenced invalid_file file_too_large csv_invalid customer_anonymized customer_merged download_link_expired no_price promo_not_applicable price_list_invalid price_list_immutable price_list_overlap in_use resource_taken fit_blocked placement_invalid invalid_transition quote_expired hold_expired closure_active undo_unavailable release_invalid customer_required not_implemented renewal_exists proposal_closed signature_open invalid_signature otp_invalid otp_locked otp_rate_limited link_invalid template_invalid template_limits paper_scan_required insurance_required customer_email_missing shares_invalid table_incomplete table_active transfer_requirements mandate_overlap vessel_in_other_fleet vessel_not_in_fleet import_not_undoable provider_unknown code_taken charge_immutable charge_cancelled use_edit match_exceeds refund_exceeds already_reversed credit_insufficient not_deposit nothing_to_settle charge_exists no_termination_amount not_exported export_empty export_too_large charges_not_open release_not_resold cash_session_required cash_session_open cash_session_closed cash_insufficient register_in_use provider_disabled provider_refund_unsupported provider_error billing_item_missing first_run_token_invalid first_run_done lan_port_unavailable lan_no_address backup_in_progress restore_failed restore_backup_newer allocation_changed offline_not_allowed remote_unreachable remote_pin_mismatch peripheral_unavailable claim_expired app_pin_invalid invalid_period invalid_report_filter report_too_large unknown_indicator booking_unavailable booking_rules booking_busy consent_required text_outdated refund_changed price_changed cancellation_not_allowed nothing_due idempotency_mismatch storage_target_invalid storage_no_space area_exits_invalid pinned_invalid too_many_items scenario_window_invalid scenario_not_draft scenario_conflicts movement_not_pending element_invalid maintenance_conflicts task_already_done reading_charged consumption_frozen formula_invalid work_order_closed work_order_has_charges qualification_mismatch capacity_exceeded dependency_violation duration_too_long offline_time_out_of_range timer_already_running return_exceeds_issued nothing_to_bill equipment_slot_taken operator_busy equipment_out_of_service equipment_capacity_exceeded operator_not_enabled outside_lift_window ingest_unauthorized ingest_timestamp_out_of_range invalid_payload segment_overlap resource_has_sensor invalid_sensor_resource alert_stale alert_action_not_allowed profile_incomplete photo_invalid
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
errors
Array<object>
object
field
required
string
code
required
string
message
string
retry_after_seconds
integer
issues

Map validation issues (map_invalid)

Array<object>
object
code
required

ValidateMap rule (m1-plan §2.3), e.g. berth_overlap

string
severity
required
string
Allowed values: error warning
element_type
required
string
refs
required
Array<string>
field
string
params

Numbers only (cm, counts)

object
key
additional properties
integer format: int64
price_list_issues

Price list validation issues (price_list_invalid)

Array<object>
object
code
required

Pricing.Validate issue code (m2-plan §4.8), e.g. period_overlap

string
severity
required
string
Allowed values: error warning
ref
required
object
kind
required
string
Allowed values: list settings period band rule item
id

Id of the row, or the client key of an unsaved one

string
field
string
params

Codes and integers as strings; never personal data

object
key
additional properties
string
details

Machine-readable details: no_price {item_id, contract_type, night, unit, category, band, reason}; price_list_overlap {conflicts: [{id, code, valid_from, valid_to}]}; in_use {references}; resource_taken ConflictDetail; fit_blocked FitResult; placement_invalid {reason, allocation_id?}; invalid_transition {from, action}; closure_active {closure_id, from_date, to_date}; release_invalid {reason}; allocation_changed {current_resource_id, current_resource_code} (null when the allocation is gone); remote_pin_mismatch {expected_fingerprint, presented_fingerprint}; scenario_conflicts {conflicts: [StorageScenarioConflict]}; maintenance_conflicts {conflicts: [MaintenanceConflict]}; storage_no_space {area_id, from, to}. Ids, codes, dates and integers only.

object
key
additional properties
any

Example

{
"type": "bad_request",
"issues": [
{
"severity": "error"
}
],
"price_list_issues": [
{
"severity": "error",
"ref": {
"kind": "list"
}
}
]
}

A rental rule refused the request (m11-plan §13.1: formula_range_mismatch, outside_rental_hours, unit_not_bookable, skipper_required, skipper_unavailable, skipper_licence_expired, licence_required, licence_expired, handover_incomplete with the missing steps, engine_hours_decreasing, preauth_unavailable, deposit_exceeds, band_gap_lt_buffer, no_price, customer_required, …), a validation failure, or an idempotency key was reused

Media typeapplication/problem+json
object
type
required
string
Allowed values: bad_request validation_failed weak_password invalid_reset_token invalid_totp pairing_code_invalid invalid_scope invalid_webhook_url unknown_event_type unauthorized invalid_credentials totp_required forbidden csrf_failed totp_enrolment_required totp_required_by_policy not_found method_not_allowed conflict slug_taken already_member last_owner totp_already_enabled totp_not_enrolled endpoint_disabled idempotency_in_progress version_conflict unsupported_media_type idempotency_key_reused precondition_required rate_limited internal_error not_ready map_invalid map_not_empty map_not_georeferenced invalid_file file_too_large csv_invalid customer_anonymized customer_merged download_link_expired no_price promo_not_applicable price_list_invalid price_list_immutable price_list_overlap in_use resource_taken fit_blocked placement_invalid invalid_transition quote_expired hold_expired closure_active undo_unavailable release_invalid customer_required not_implemented renewal_exists proposal_closed signature_open invalid_signature otp_invalid otp_locked otp_rate_limited link_invalid template_invalid template_limits paper_scan_required insurance_required customer_email_missing shares_invalid table_incomplete table_active transfer_requirements mandate_overlap vessel_in_other_fleet vessel_not_in_fleet import_not_undoable provider_unknown code_taken charge_immutable charge_cancelled use_edit match_exceeds refund_exceeds already_reversed credit_insufficient not_deposit nothing_to_settle charge_exists no_termination_amount not_exported export_empty export_too_large charges_not_open release_not_resold cash_session_required cash_session_open cash_session_closed cash_insufficient register_in_use provider_disabled provider_refund_unsupported provider_error billing_item_missing first_run_token_invalid first_run_done lan_port_unavailable lan_no_address backup_in_progress restore_failed restore_backup_newer allocation_changed offline_not_allowed remote_unreachable remote_pin_mismatch peripheral_unavailable claim_expired app_pin_invalid invalid_period invalid_report_filter report_too_large unknown_indicator booking_unavailable booking_rules booking_busy consent_required text_outdated refund_changed price_changed cancellation_not_allowed nothing_due idempotency_mismatch storage_target_invalid storage_no_space area_exits_invalid pinned_invalid too_many_items scenario_window_invalid scenario_not_draft scenario_conflicts movement_not_pending element_invalid maintenance_conflicts task_already_done reading_charged consumption_frozen formula_invalid work_order_closed work_order_has_charges qualification_mismatch capacity_exceeded dependency_violation duration_too_long offline_time_out_of_range timer_already_running return_exceeds_issued nothing_to_bill equipment_slot_taken operator_busy equipment_out_of_service equipment_capacity_exceeded operator_not_enabled outside_lift_window ingest_unauthorized ingest_timestamp_out_of_range invalid_payload segment_overlap resource_has_sensor invalid_sensor_resource alert_stale alert_action_not_allowed profile_incomplete photo_invalid
title
required
string
status
required
integer
detail
string
instance
string
request_id
string
errors
Array<object>
object
field
required
string
code
required
string
message
string
retry_after_seconds
integer
issues

Map validation issues (map_invalid)

Array<object>
object
code
required

ValidateMap rule (m1-plan §2.3), e.g. berth_overlap

string
severity
required
string
Allowed values: error warning
element_type
required
string
refs
required
Array<string>
field
string
params

Numbers only (cm, counts)

object
key
additional properties
integer format: int64
price_list_issues

Price list validation issues (price_list_invalid)

Array<object>
object
code
required

Pricing.Validate issue code (m2-plan §4.8), e.g. period_overlap

string
severity
required
string
Allowed values: error warning
ref
required
object
kind
required
string
Allowed values: list settings period band rule item
id

Id of the row, or the client key of an unsaved one

string
field
string
params

Codes and integers as strings; never personal data

object
key
additional properties
string
details

Machine-readable details: no_price {item_id, contract_type, night, unit, category, band, reason}; price_list_overlap {conflicts: [{id, code, valid_from, valid_to}]}; in_use {references}; resource_taken ConflictDetail; fit_blocked FitResult; placement_invalid {reason, allocation_id?}; invalid_transition {from, action}; closure_active {closure_id, from_date, to_date}; release_invalid {reason}; allocation_changed {current_resource_id, current_resource_code} (null when the allocation is gone); remote_pin_mismatch {expected_fingerprint, presented_fingerprint}; scenario_conflicts {conflicts: [StorageScenarioConflict]}; maintenance_conflicts {conflicts: [MaintenanceConflict]}; storage_no_space {area_id, from, to}. Ids, codes, dates and integers only.

object
key
additional properties
any

Example

{
"type": "bad_request",
"issues": [
{
"severity": "error"
}
],
"price_list_issues": [
{
"severity": "error",
"ref": {
"kind": "list"
}
}
]
}
diCoste360.itCoste360.it

Porto è sviluppato da Coste360 SRL. Codice sorgente disponibile con licenza BSL 1.1; il marchio Porto è escluso dalla licenza.