Salta ai contenuti
PortoPorto

GDPR export of a customer's data as JSON (Content-Disposition attachment) (customers.read)

GET
/api/admin/v1/marinas/{marinaId}/customers/{customerId}/export
Code sample: Shell / cURL
curl --request GET \
--url https://example.com/api/admin/v1/marinas/example/customers/example/export \
--cookie porto_session=<porto_session>
marinaId
required
string
customerId
required
string

Export

Media typeapplication/json
object
format
required
string
Allowed values: porto-customer/1
exported_at
required
string format: date-time
customer
required
object
id
required
string
kind
required
string
Allowed values: person company
first_name
required
string
last_name
required
string
company_name
required
string
display_name
required

Empty for an anonymised customer

string
fiscal_code
required
string | null
vat_number
required
string | null
sdi_code
required
string | null
pec
required
string | null
billing_address
required
object
line1
string
<= 200 characters
line2
string
<= 200 characters
postal_code
string
<= 16 characters
city
string
<= 100 characters
province
string
<= 8 characters
country

ISO 3166-1 alpha-2

string
<= 2 characters
nationality
required
string | null
locale
required
string
Allowed values: it en
emails
required
Array<object>
object
label
required
string
<= 32 characters
value
required
string
>= 1 characters <= 254 characters
phones
required
Array<object>
object
label
required
string
<= 32 characters
value
required
string
>= 1 characters <= 254 characters
category
required
One of:
string
Allowed values: member resident affiliated charter yard
tags
required
Array<string>
payment_terms
required
One of:
object
days
required
integer
<= 365
end_of_month
required
boolean
iban_masked
required

Masked, e.g. “IT•• •••• 1234”; the IBAN is never returned

string | null
notes
required
string
merged_into_id
required
string | null
anonymized_at
required
string | null format: date-time
archived_at
required
string | null format: date-time
version
required
integer
created_at
required
string format: date-time
updated_at
required
string format: date-time
consents
required
Array<object>
object
id
required
string
kind
required
string
Allowed values: terms privacy marketing third_party
policy_version
required
string
granted
required
boolean
source
required
string
Allowed values: desk online import api
recorded_by
required
One of:
object
id
required
string
name
required
string
recorded_at
required
string format: date-time
vessels
required
Array<object>
object
id
required
string
name
required
string
registration
required
string | null
registry_office
required
string | null
flag
required
string | null
home_port
required
string | null
hull_type
required
string
Allowed values: monohull_motor monohull_sail catamaran trimaran rib gozzo other
model
required
string | null
builder
required
string | null
year_built
required
integer | null
hull_color
required
string | null
hull_material
required
string | null
loa_cm
required

Length in integer centimetres

integer format: int64
lwl_cm
required
integer | null format: int64
beam_cm
required

Length in integer centimetres

integer format: int64
draft_cm
required
integer | null format: int64
air_draft_cm
required
integer | null format: int64
displacement_kg
required
integer | null format: int64
measured_loa_cm
required
integer | null format: int64
measured_beam_cm
required
integer | null format: int64
measured_draft_cm
required
integer | null format: int64
measured_air_draft_cm
required
integer | null format: int64
measured_at
required
string | null format: date-time
measured_by
required
One of:
object
id
required
string
name
required
string
dimensions_source
required
string
Allowed values: declared measured
effective_loa_cm
required

Length in integer centimetres

integer format: int64
effective_beam_cm
required

Length in integer centimetres

integer format: int64
effective_draft_cm
required
integer | null format: int64
unit_class
required

Legal unit class from the effective LOA (natante, imbarcazione, nave)

string
Allowed values: natante imbarcazione nave
engines
required
Array<object>
object
make
string
<= 100 characters
model
string
<= 100 characters
power_kw
integer format: int64
power_hp
integer format: int64
serial
string
<= 64 characters
hours
integer format: int64
fuel
required
One of:
string
Allowed values: petrol diesel electric hybrid none other
power_required_a
required
integer | null
notes
required
string
parties
required
Array<object>
object
customer_id
required
string
display_name
required
string
role
required
string
Allowed values: owner operator skipper billing contact
share_millis
required
integer | null format: int64
documents
required
Array<object>
object
id
required
string
owner_type
required
string
Allowed values: customer vessel
customer_id
required
string | null
vessel_id
required
string | null
type
required
string
Allowed values: identity_card passport driving_licence boating_licence navigation_licence registration_certificate insurance_policy safety_certificate power_declaration signed_contract proxy photo other
number
required

Decrypted document number

string | null
issuer
required
string | null
issued_on
required
string | null format: date
expires_on
required
string | null format: date
has_file
required
boolean
file_name
required
string | null
content_type
required
string | null
size_bytes
required
integer | null format: int64
notes
required
string
version
required
integer
created_at
required
string format: date-time
updated_at
required
string format: date-time
archived_at
required
string | null format: date-time
version
required
integer
created_at
required
string format: date-time
updated_at
required
string format: date-time
parties
required
Array<object>

A party link as stored (GDPR export)

object
vessel_id
required
string
customer_id
required
string
role
required
string
Allowed values: owner operator skipper billing contact
share_millis
required
integer | null format: int64
documents
required
Array<object>
object
id
required
string
owner_type
required
string
Allowed values: customer vessel
customer_id
required
string | null
vessel_id
required
string | null
type
required
string
Allowed values: identity_card passport driving_licence boating_licence navigation_licence registration_certificate insurance_policy safety_certificate power_declaration signed_contract proxy photo other
number
required

Decrypted document number

string | null
issuer
required
string | null
issued_on
required
string | null format: date
expires_on
required
string | null format: date
has_file
required
boolean
file_name
required
string | null
content_type
required
string | null
size_bytes
required
integer | null format: int64
notes
required
string
version
required
integer
created_at
required
string format: date-time
updated_at
required
string format: date-time
deadlines
required
Array<object>
object
id
required
string
kind
required

M1 kinds (from document types); later milestones add more

string
Allowed values: identity_document boating_licence navigation_licence registration_certificate insurance safety_certificate power_declaration other_document contract_end installment_due holder_installment_due right_end mandate_end concession_expiry concession_obligation renewal_deadline tacit_renewal_blocked waitlist_offer document_failed signature_expiring maintenance_due
source_type
required
string
Allowed values: document contract installment holder_installment right mandate concession concession_obligation renewal_proposal waitlist_entry generated_document signature_request import maintenance_task
source_id
required
string
customer
required
One of:
object
id
required
string
display_name
required
string
vessel
required
One of:
object
id
required
string
name
required
string
document_type
required
One of:
string
Allowed values: identity_card passport driving_licence boating_licence navigation_licence registration_certificate insurance_policy safety_certificate power_declaration signed_contract proxy photo other
due_on
required
string format: date
status
required
string
Allowed values: open done dismissed
urgency
required
string
Allowed values: overdue due_soon later
note
required
string
version
required
integer

Example

{
"format": "porto-customer/1",
"customer": {
"kind": "person",
"locale": "it",
"category": "member"
},
"consents": [
{
"kind": "terms",
"source": "desk"
}
],
"vessels": [
{
"hull_type": "monohull_motor",
"dimensions_source": "declared",
"unit_class": "natante",
"fuel": "petrol",
"parties": [
{
"role": "owner"
}
],
"documents": [
{
"owner_type": "customer",
"type": "identity_card"
}
]
}
],
"parties": [
{
"role": "owner"
}
],
"documents": [
{
"owner_type": "customer",
"type": "identity_card"
}
],
"deadlines": [
{
"kind": "identity_document",
"source_type": "document",
"document_type": "identity_card",
"status": "open",
"urgency": "overdue"
}
]
}

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"
}
}
]
}
diCoste360.itCoste360.it

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