Create a draft renewal campaign (contracts.write)
curl --request POST \ --url https://example.com/api/admin/v1/marinas/example/renewal-campaigns \ --header 'Content-Type: application/json' \ --header 'X-CSRF-Token: <X-CSRF-Token>' \ --cookie porto_session=<porto_session> \ --data '{ "name": "example", "filter": { "groups": [ "example" ], "structures": [ "example" ], "terms": [ "annual" ], "ends_from": "2026-04-15", "ends_to": "2026-04-15", "customer_categories": [ "example" ], "contract_ids": [ "example" ] }, "deadline_on": "2026-04-15", "price_list_id": "example", "target_starts_rule": "next_term", "target_starts_on": "2026-04-15", "message": "example" }'Authorizations
Sezione intitolata “Authorizations”Parameters
Sezione intitolata “Parameters”Path Parameters
Sezione intitolata “Path Parameters”Header Parameters
Sezione intitolata “Header Parameters”8 to 128 characters of [A-Za-z0-9_-:.]; the response is replayed for 24 hours, 7 days for offline operations (x-porto-offline).
Request Bodyrequired
Sezione intitolata “Request Bodyrequired”object
object
Calendar date YYYY-MM-DD in the marina timezone
Calendar date YYYY-MM-DD in the marina timezone
Calendar date YYYY-MM-DD in the marina timezone
Calendar date YYYY-MM-DD in the marina timezone
Responses
Sezione intitolata “Responses”Created
object
object
Calendar date YYYY-MM-DD in the marina timezone
Calendar date YYYY-MM-DD in the marina timezone
Calendar date YYYY-MM-DD in the marina timezone
Calendar date YYYY-MM-DD in the marina timezone
Proposals per status and exclusions per reason (excluded_
object
Example
{ "filter": { "terms": [ "annual" ] }, "target_starts_rule": "next_term", "status": "draft"}Headers
Sezione intitolata “Headers”Version of the resource, quoted (“3”)
Malformed request or validation failure
object
object
Map validation issues (map_invalid)
object
ValidateMap rule (m1-plan §2.3), e.g. berth_overlap
Numbers only (cm, counts)
object
Price list validation issues (price_list_invalid)
object
Pricing.Validate issue code (m2-plan §4.8), e.g. period_overlap
object
Id of the row, or the client key of an unsaved one
Codes and integers as strings; never personal data
object
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
Example
{ "type": "bad_request", "issues": [ { "severity": "error" } ], "price_list_issues": [ { "severity": "error", "ref": { "kind": "list" } } ]}Not authenticated, or invalid credentials
object
object
Map validation issues (map_invalid)
object
ValidateMap rule (m1-plan §2.3), e.g. berth_overlap
Numbers only (cm, counts)
object
Price list validation issues (price_list_invalid)
object
Pricing.Validate issue code (m2-plan §4.8), e.g. period_overlap
object
Id of the row, or the client key of an unsaved one
Codes and integers as strings; never personal data
object
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
Example
{ "type": "bad_request", "issues": [ { "severity": "error" } ], "price_list_issues": [ { "severity": "error", "ref": { "kind": "list" } } ]}Authenticated but not allowed
object
object
Map validation issues (map_invalid)
object
ValidateMap rule (m1-plan §2.3), e.g. berth_overlap
Numbers only (cm, counts)
object
Price list validation issues (price_list_invalid)
object
Pricing.Validate issue code (m2-plan §4.8), e.g. period_overlap
object
Id of the row, or the client key of an unsaved one
Codes and integers as strings; never personal data
object
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
Example
{ "type": "bad_request", "issues": [ { "severity": "error" } ], "price_list_issues": [ { "severity": "error", "ref": { "kind": "list" } } ]}Not found (or not visible to the principal)
object
object
Map validation issues (map_invalid)
object
ValidateMap rule (m1-plan §2.3), e.g. berth_overlap
Numbers only (cm, counts)
object
Price list validation issues (price_list_invalid)
object
Pricing.Validate issue code (m2-plan §4.8), e.g. period_overlap
object
Id of the row, or the client key of an unsaved one
Codes and integers as strings; never personal data
object
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
Example
{ "type": "bad_request", "issues": [ { "severity": "error" } ], "price_list_issues": [ { "severity": "error", "ref": { "kind": "list" } } ]}Porto è sviluppato da Coste360 SRL. Codice sorgente disponibile con licenza BSL 1.1; il marchio Porto è escluso dalla licenza.