### GET /reservation-meta/paginated Source: https://pms-api.smartness.com/docs/api-public-v2.json Returns a paginated list of reservation metadata entries. ```markdown ### Parameters - **page** (integer, query, optional): Page number for paginated results. - **per_page** (integer, query, optional): Maximum number of items returned per page. - **filter[reservation_id]** (integer, query, optional): Filter by reservation ID. - **filter[key]** (string, query, optional): Filter by metadata key. Accepted values: venezia_cda, revenue_share, contract, smart_iot, smart_iot_locks, stay_kind, children_ages, mychannel. - **sort** (string, query, optional): Sort by field(s). Prefix with `-` for descending. Available: id, reservation_id, key, created_at. ### Responses #### 200 - Paginated list of reservation meta entries - Array of ReservationMetaResource #### 401 - response - **message** (string) (required): Error overview. #### 404 - response - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/reservation-meta/paginated?page=0&per_page=0&filter[reservation_id]=0&filter[key]=string&sort=string" ``` ``` -------------------------------- ### GET /reservation-meta/{id} Source: https://pms-api.smartness.com/docs/api-public-v2.json Retrieves a single reservation metadata entry by ID. ```markdown ### Parameters - **id** (union, path, required): The reservation meta ID. ### Responses #### 200 - Reservation meta details **ReservationMetaResource** - **id** (integer) (required) - **reservation_id** (integer) (required) - **key** (string) (required) - **value** (string) (required) - **created_at** (string,null) (required) - **updated_at** (string,null) (required) #### 401 - response - **message** (string) (required): Error overview. #### 404 - Reservation meta not found - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/reservation-meta/{id}" ``` ``` -------------------------------- ### GET /automations/properties Source: https://pms-api.smartness.com/docs/api-public-v2.json Returns a simplified list of properties with address information and nested units. ```markdown ### Responses #### 200 - response - Array of AutomationsPropertyResource #### 401 - response - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/automations/properties" ``` ``` -------------------------------- ### GET /booking-engine/combinations Source: https://pms-api.smartness.com/docs/api-public-v2.json Retrieves availability and pricing combinations for a property within a date range. Without `guests` parameter: returns raw room types (like v1), one entry per room type. With `guests` parameter: returns rate-adjusted data for the specified guest count. Only room types with available inventory (availability > 0, stop_sell = false) within the requested date range are included. ```markdown ### Parameters - **property_id** (integer, query, required): The property ID to get combinations for. - **start_date** (string, query, required): Start date in Y-m-d format. - **end_date** (string, query, required): End date in Y-m-d format (must be after start_date). - **guests** (integer, query, optional): When specified, returns rate-adjusted data for this guest count. Without it, returns raw room types. - **children** (integer, query, optional): Number of children (only used when guests is specified). - **unit_category_ids[]** (array (unknown), query, optional): Filter to specific unit category IDs. ### Responses #### 200 - `CombinationsResource` **CombinationsResource** - **id** (integer) (required) - **name** (string) (required) - **currency** (string) (required) - **is_rate_plan_occupational** (unknown) (required) - **address** (string) (required) - **unit_categories** (array (object)) (required) Array items: - **id** (integer) (required) - **property_id** (integer) (required) - **name** (string) (required) - **color** (string) (required) - **position** (unknown) (required) - **max_occupation** (integer) (required) - **connections** (array (unknown)) (required) - **rate_plans** (array (object)) (required) Array items: - **id** (integer) (required) - **name** (string) (required) - **pivot** (object) (required) - **unit_category_id** (integer) (required) - **rate_plan_id** (integer) (required) - **price_per_guest_config** (string) (required) - **room_types** (array (object)) (required) Array items: - **id** (integer) (required) - **rate_plan_id** (integer) (required) - **unit_category_id** (integer) (required) - **name** (string) (required) - **guests** (integer) (required) - **breakfast** (unknown) (required) - **meal_plan** (unknown) (required) - **refundable** (unknown) (required) - **quantity** (unknown) (required) - **is_child** (unknown) (required) - **is_parent** (unknown) (required) - **is_master** (unknown) (required) - **is_derived** (unknown) (required) - **is_show_calendar** (unknown) (required) - **type** (unknown) (required) - **rates** (array (object)) (required) Array items: - **id** (integer) (required) - **room_type_id** (integer) (required) - **date** (string) (required) - **amount** (unknown) (required) - **availability** (integer) (required) - **min_stay** (unknown) (required) - **max_stay** (unknown) (required) - **cta** (unknown) (required) - **ctd** (unknown) (required) - **stop_sell** (unknown) (required) - **cut_off** (unknown) (required) #### 401 - response - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/booking-engine/combinations?property_id=0&start_date=string&end_date=string&guests=0&children=0&unit_category_ids[]=item1,item2" ``` ``` -------------------------------- ### GET /automations/units Source: https://pms-api.smartness.com/docs/api-public-v2.json Returns all units across the partner's properties with a computed occupancy status (occupied, blocked, or free) for the given date. ```markdown ### Parameters - **date** (string, query, optional): Date to check occupancy for (YYYY-MM-DD). Defaults to today. - **property_id** (integer, query, optional): Filter units by a single property ID. - **property_ids** (string, query, optional): Filter units by multiple property IDs (comma-separated). ### Responses #### 200 - response - Array of AutomationsUnitResource #### 401 - response - **message** (string) (required): Error overview. #### 422 - response - **message** (string) (required): Errors overview. - **errors** (object) (required): A detailed description of each field that failed validation. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/automations/units?date=string&property_id=0&property_ids=string" ``` ``` -------------------------------- ### GET /payments/{id} Source: https://pms-api.smartness.com/docs/api-public-v2.json Retrieves detailed information about a specific reservation payment including its payment source. Returns 404 if the payment does not exist or is not a reservation payment. ```markdown ### Parameters - **id** (union, path, required): The payment ID. ### Responses #### 200 - Payment details **PaymentResource** - **id** (integer) (required) - **reservation_id** (integer) (required) - **source_id** (integer) (required) - **amount** (string) (required) - **date** (string) (required) - **is_deposit** (integer) (required) - **is_security_deposit** (integer) (required) - **is_client_deposit** (integer) (required) - **paid_kind** (array,null) (required) - **description** (string,null) (required) - **status** (integer) (required) - **planned_at** (string,null) (required) - **created_by** (integer,null) (required) - **updated_by** (integer,null) (required) - **created_at** (string,null) (required) - **updated_at** (string,null) (required) - **payment_source** (object,null) #### 401 - response - **message** (string) (required): Error overview. #### 404 - Payment not found - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/payments/{id}" ``` ``` -------------------------------- ### GET /legal-compliance-requests/paginated Source: https://pms-api.smartness.com/docs/api-public-v2.json Retrieves a paginated list of legal compliance requests with nested guest data. The `filter[reservation_id]` parameter is **required**. Results can be filtered by date range and sorted by multiple fields. ```markdown ### Parameters - **page** (integer, query, optional): Page number for paginated results. - **per_page** (integer, query, optional): Maximum number of items returned per page. - **filter[reservation_id]** (integer, query, required): Filter by reservation ID (required). - **filter[from]** (string, query, optional): Filter requests with start_date >= this date (Y-m-d). - **filter[to]** (string, query, optional): Filter requests with end_date <= this date (Y-m-d). - **sort** (string, query, optional): Sort by field(s). Prefix with `-` for descending. Available: id, start_date, end_date, status, created_at. ### Responses #### 200 - Paginated list of legal compliance requests - Array of LegalComplianceRequestResource #### 401 - response - **message** (string) (required): Error overview. #### 404 - response - **message** (string) (required): Error overview. #### 422 - Missing required filter[reservation_id] parameter ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/legal-compliance-requests/paginated?page=0&per_page=0&filter[reservation_id]=0&filter[from]=string&filter[to]=string&sort=string" ``` ``` -------------------------------- ### GET /reservations/{id} Source: https://pms-api.smartness.com/docs/api-public-v2.json Retrieves detailed information about a specific reservation including all nested relations (unit, source, room type, client, property, daily amount details). ```markdown ### Parameters - **id** (union, path, required): The reservation ID. ### Responses #### 200 - Reservation details **ReservationResource** - **id** (integer) (required) - **property_id** (integer) (required) - **room_type_id** (integer) (required) - **client_id** (integer,null) (required) - **unit_id** (integer,null) (required) - **source_id** (integer,null) (required) - **split_reservation_id** (integer,null) (required) - **res_id** (string,null) (required) - **status** (integer) (required) - **guest_status** (integer) (required) - **type** (integer) (required) - **payment_method** (integer) (required) - **start_date** (string) (required) - **end_date** (string) (required) - **given_name** (string,null) (required) - **family_name** (string,null) (required) - **amount** (string) (required) - **discount** (string,null) (required) - **total_gross** (string) (required) - **payment** (string) (required) - **to_pay** (string) (required) - **extras** (string) (required) - **revenue_share** (string) (required) - **city_tax** (string) (required) - **cleaning_fee** (string) (required) - **ota_fee** (string) (required) - **currency** (string) (required) - **arrival_time** (string,null) (required) - **checkout_time** (string,null) (required) - **guests** (integer) (required) - **children** (integer,null) (required) - **infants** (integer,null) (required) - **meal_plan** (integer,null) (required) - **is_ciaobooking** (integer) (required) - **is_split** (integer) (required) - **is_hidden** (integer) (required) - **is_checkin_completed** (integer) (required) - **is_dont_move** (integer) (required) - **is_refundable** (integer,null) (required) - **ota_note** (string,null) (required) - **internal_note** (string,null) (required) - **service_note** (string,null) (required) - **block_reason** (string,null) (required) - **ref** (string,null) (required) - **color** (string,null) (required) - **pin** (string,null) (required) - **flight_number** (string,null) (required) - **expired_at** (string,null) (required) - **created_by** (integer,null) (required) - **updated_by** (integer,null) (required) - **reservation_amount_details** (array (unknown)) (required) - **unit** (object,null) - **source** (object,null) - **room_type** (object,null) - **client** (object,null) - **property** (object,null) #### 401 - response - **message** (string) (required): Error overview. #### 404 - Reservation not found - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/reservations/{id}" ``` ``` -------------------------------- ### GET /reservations/paginated Source: https://pms-api.smartness.com/docs/api-public-v2.json Retrieves a paginated list of reservations with their relations (unit, source, room type, client, property, amount details). Results can be filtered by status, property_id, from/to dates and sorted by multiple fields. Only non-split or moved reservations are returned. ```markdown ### Parameters - **page** (integer, query, optional): Page number for paginated results. - **per_page** (integer, query, optional): Maximum number of reservations returned per page. - **filter[status]** (integer, query, optional): Filter by reservation status (1=Canceled, 2=Confirmed, 3=Pending). - **filter[property_id]** (integer, query, optional): Filter by property ID. - **filter[from]** (string, query, optional): Filter reservations with start_date >= this date (Y-m-d). - **filter[to]** (string, query, optional): Filter reservations with start_date <= this date (Y-m-d). - **filter[updated_at]** (string, query, optional): Filter reservations updated since this timestamp (Y-m-d H:i:s or Y-m-d). - **sort** (string, query, optional): Sort by field(s). Prefix with `-` for descending. Available: id, start_date, end_date, status, created_at, updated_at. ### Responses #### 200 - Paginated list of reservations - Array of ReservationResource #### 401 - response - **message** (string) (required): Error overview. #### 404 - response - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/reservations/paginated?page=0&per_page=0&filter[status]=0&filter[property_id]=0&filter[from]=string&filter[to]=string&filter[updated_at]=string&sort=string" ``` ``` -------------------------------- ### GET /rate-calendar Source: https://pms-api.smartness.com/docs/api-public-v2.json Retrieves rate calendar entries for the given date range, with optional filters for property, room type, unit category, rate plan, and guest count. Returns a flat list of rate entries with pagination via limit/offset. ```markdown ### Parameters - **from** (string, query, required): Start date in Y-m-d format. - **to** (string, query, required): End date in Y-m-d format (must be after from). - **limit** (integer, query, optional): Max number of results (max 500, default 365). - **offset** (integer, query, optional): Number of results to skip. - **property_id** (integer, query, optional): Filter by property ID. - **room_type_id** (integer, query, optional): Filter by room type ID. - **unit_category_id** (integer, query, optional): Filter by unit category ID. - **rate_plan_id** (integer, query, optional): Filter by rate plan ID. - **guests** (integer, query, optional): Filter by guest count. ### Responses #### 200 - List of rate calendar entries - Array of RateResource #### 401 - response - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/rate-calendar?from=string&to=string&limit=0&offset=0&property_id=0&room_type_id=0&unit_category_id=0&rate_plan_id=0&guests=0" ``` ``` -------------------------------- ### GET /properties/{id} Source: https://pms-api.smartness.com/docs/api-public-v2.json Retrieves a single property by ID with detailed information including company, unit categories with their units, rate plans (with pivot data), and room types. The single endpoint returns richer data than the paginated endpoint: unit categories include nested units, rate plans, and room types. ```markdown ### Parameters - **id** (integer, path, required): The property ID. ### Responses #### 200 - `PropertyDetailResource` **PropertyDetailResource** - **id** (integer) (required) - **company_id** (integer) (required) - **name** (string) (required) - **public_name** (string,null) (required) - **slug** (string,null) (required) - **email** (string) (required) - **email_alternative** (string,null) (required) - **type** (integer) (required) - **country** (string) (required) - **city** (string,null) (required) - **postcode** (string,null) (required) - **street_name** (string,null) (required) - **street_number** (string,null) (required) - **latitude** (string) (required) - **longitude** (string) (required) - **locale** (string) (required) - **timezone** (string,null) (required) - **phone** (string,null) (required) - **mobile** (string,null) (required) - **currency** (string) (required) - **address** (string) (required) - **is_active** (boolean) (required) - **channel_manager** (integer,null) (required) - **company** (object,null) (required) - **unit_categories** (array (unknown)) (required) #### 401 - response - **message** (string) (required): Error overview. #### 404 - response - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/properties/{id}" ``` ``` -------------------------------- ### POST /reservations Source: https://pms-api.smartness.com/docs/api-public-v2.json Creates a new reservation in the system. The system automatically recalculates `total_gross`, `to_pay`, and daily amount details. If `type = 2` (OPTION), then `expired_at` is required. Confirmation events are **always triggered** (confirm is forced to true). When `amount_details` are provided, they are preserved as-is and the system will not regenerate them. When only `amount` is provided, the system generates daily details by dividing the total equally across nights. **Defaults (when not provided):** - `status` → `3` (PENDING) - `is_ciaobooking` → `0` (FALSE) - `type` → `1` (RESERVATION) - `res_id` → auto-generated ```markdown ### Request Body **Content-Type:** application/json - **room_type_id** (integer) (required): ID of the room type. (example: 1) - **start_date** (string) (required): Check-in date (Y-m-d). (example: "2025-10-01") - **end_date** (string) (required): Check-out date (Y-m-d), must be after start_date. (example: "2025-10-05") - **guests** (integer) (required): Number of guests (min: 1). (example: 2) - **client_id** (integer): ID of an existing client. Required if client object is not provided. (example: 1) - **client** (object): Client data for creating a new client. Required if client_id is not provided. Object with: company_id (int, required), name (string, required), email (string, required). - **amount** (object): Total reservation amount. Required if amount_details is not provided. (example: 500) - **amount_details** (array (unknown)): Daily pricing breakdown. Required if amount is not provided. When provided, values are stored as-is (no automatic recalculation). Array of {date: "Y-m-d", amount: numeric, discount: numeric}. Must cover all dates from start_date to end_date (checkout excluded). - **amount_promotions** (object): Promotional discounts. (example: 10) - **property_id** (integer): ID of the property. (example: 1) - **type** (integer): Reservation type. Accepted: 1 = RESERVATION, 2 = OPTION, 3 = BLOCK (example: 1) - **unit_id** (integer): ID of the specific unit. (example: 1) - **source_id** (integer): Source of reservation (defaults to PMS). (example: 1) - **res_id** (string): External ID (auto-generated if not set). (example: "RES-12345") - **status** (integer): Reservation status. Accepted: 1 = CANCELED, 2 = CONFIRMED, 3 = PENDING (example: 2) - **currency** (string): Currency code. (example: "EUR") - **arrival_time** (string): Arrival time (H:i). (example: "14:00") - **checkout_time** (string): Checkout time (H:i). (example: "10:00") - **expired_at** (string): Expiration date-time, required if type is OPTION (Y-m-d H:i:s). (example: "2025-09-30 18:00:00") - **payment_method** (integer): Payment method code. (example: 1) - **meal_plan** (integer): Meal plan. Accepted: 0 = ROOM_ONLY, 1 = BREAKFAST, 2 = HALF_BOARD, 3 = FULL_BOARD, 4 = ALL_INCLUSIVE (example: 1) - **children** (integer): Number of children (default: 0). (example: 0) - **infants** (integer): Number of infants (default: 0). (example: 0) - **cleaning_fee** (object): Cleaning fee. (example: 25) - **extras** (object): Extra charges. (example: 10) - **city_tax** (object): City tax. (example: 5) - **discount** (object): Total discount. (example: 0) - **ota_fee** (object): OTA fees. (example: 0) - **ref** (string): Reservation reference. (example: "REF-001") - **color** (string): Reservation color code. (example: "#FF5733") - **pin** (string): Access PIN. (example: "1234") - **flight_number** (string): Flight number. (example: "FR1234") - **ota_note** (string): OTA notes. (example: "Late check-in") - **internal_note** (string): Internal notes. (example: "VIP guest") - **service_note** (string): Service notes. (example: "Extra pillows") - **is_ciaobooking** (integer): Whether created via SmartPMS (0 or 1, default: 0). (example: 0) - **is_hidden** (integer): Whether the reservation is hidden (0 or 1, default: 0). (example: 0) - **is_refundable** (integer): Whether the reservation is refundable (0 or 1). (example: 1) - **is_checkin_completed** (integer): Whether check-in is completed (0 or 1). (example: 0) - **amount_extras** (array (unknown)): Extra services. Array of {name: string, amount: numeric, property_extra_id?: int, vat_percent?: numeric}. - **confirm** (integer): Ignored — confirmation events are always triggered on creation. (example: 1) - **skip_messages** (integer): If 1, suppresses guest notifications. (example: 0) - **skip_notifications** (integer): If 1, disables all notifications. (example: 0) - **quantity** (integer): Number of identical reservations to create (default: 1, min: 1). (example: 1) ### Responses #### 201 - Reservation created successfully **ReservationResource** - **id** (integer) (required) - **property_id** (integer) (required) - **room_type_id** (integer) (required) - **client_id** (integer,null) (required) - **unit_id** (integer,null) (required) - **source_id** (integer,null) (required) - **split_reservation_id** (integer,null) (required) - **res_id** (string,null) (required) - **status** (integer) (required) - **guest_status** (integer) (required) - **type** (integer) (required) - **payment_method** (integer) (required) - **start_date** (string) (required) - **end_date** (string) (required) - **given_name** (string,null) (required) - **family_name** (string,null) (required) - **amount** (string) (required) - **discount** (string,null) (required) - **total_gross** (string) (required) - **payment** (string) (required) - **to_pay** (string) (required) - **extras** (string) (required) - **revenue_share** (string) (required) - **city_tax** (string) (required) - **cleaning_fee** (string) (required) - **ota_fee** (string) (required) - **currency** (string) (required) - **arrival_time** (string,null) (required) - **checkout_time** (string,null) (required) - **guests** (integer) (required) - **children** (integer,null) (required) - **infants** (integer,null) (required) - **meal_plan** (integer,null) (required) - **is_ciaobooking** (integer) (required) - **is_split** (integer) (required) - **is_hidden** (integer) (required) - **is_checkin_completed** (integer) (required) - **is_dont_move** (integer) (required) - **is_refundable** (integer,null) (required) - **ota_note** (string,null) (required) - **internal_note** (string,null) (required) - **service_note** (string,null) (required) - **block_reason** (string,null) (required) - **ref** (string,null) (required) - **color** (string,null) (required) - **pin** (string,null) (required) - **flight_number** (string,null) (required) - **expired_at** (string,null) (required) - **created_by** (integer,null) (required) - **updated_by** (integer,null) (required) - **reservation_amount_details** (array (unknown)) (required) - **unit** (object,null) - **source** (object,null) - **room_type** (object,null) - **client** (object,null) - **property** (object,null) #### 401 - response - **message** (string) (required): Error overview. #### 422 - response - **message** (string) (required): Errors overview. - **errors** (object) (required): A detailed description of each field that failed validation. ### Example Usage ```bash curl -X POST "https://pms-api.smartness.com/api/public/v2/reservations" \ -H "Content-Type: application/json" \ -d '{ "room_type_id": 1, "start_date": "2025-10-01", "end_date": "2025-10-05", "guests": 2, "client_id": 1, "client": "value", "amount": 500, "amount_details": [ "value" ], "amount_promotions": 10, "property_id": 1, "type": 1, "unit_id": 1, "source_id": 1, "res_id": "RES-12345", "status": 2, "currency": "EUR", "arrival_time": "14:00", "checkout_time": "10:00", "expired_at": "2025-09-30 18:00:00", "payment_method": 1, "meal_plan": 1, "children": 0, "infants": 0, "cleaning_fee": 25, "extras": 10, "city_tax": 5, "discount": 0, "ota_fee": 0, "ref": "REF-001", "color": "#FF5733", "pin": "1234", "flight_number": "FR1234", "ota_note": "Late check-in", "internal_note": "VIP guest", "service_note": "Extra pillows", "is_ciaobooking": 0, "is_hidden": 0, "is_refundable": 1, "is_checkin_completed": 0, "amount_extras": [ "value" ], "confirm": 1, "skip_messages": 0, "skip_notifications": 0, "quantity": 1 }' ``` ``` -------------------------------- ### POST /clients Source: https://pms-api.smartness.com/docs/api-public-v2.json Creates a new client in the system. - Maximum 5 tags total (existing + new combined). - `tags` can contain existing tags (`{"value": 143}`) or new tags (label string only). - Optional fields can be omitted if not applicable. ```markdown ### Request Body **Content-Type:** application/json - **company_id** (integer) (required): Valid company ID. (example: 1359) - **type** (integer) (required): Client type: 1 = Private, 2 = Company, 3 = Public Administration. (example: 1) - **name** (string): Full name of the client. (example: "Demo Client Name") - **first_name** (string): Client's first name. (example: "Demo") - **last_name** (string): Client's last name. (example: "Name") - **locale** (string): Language/locale code. (example: "it") - **tags** (array (unknown)): Array of existing tag IDs ({"value": 143}) or new tag labels ("nuovotag"). Maximum 5 tags. - **notes** (string): Notes about the client. (example: "demo notes") - **birthday** (string): Birthday in YYYY-MM-DD format. (example: "1980-06-10") - **newsletter** (boolean): Subscribe to newsletter. (example: true) - **is_blacklist** (boolean): Is the client blacklisted. (example: false) - **email** (string): Client's email address. (example: "demo@domain.com") - **pec** (string): PEC (certified email). (example: "demo_pec@domain.com") - **phone** (string): Contact phone number. (example: "0123-12345678") - **tax_code** (string): Client's tax code. (example: "CLTDMN87L05G888A") - **sdi** (string): SDI code for electronic invoicing. (example: "012345") - **address** (string): Street address. (example: "Via Rossi, 13") - **postcode** (string): Postal code. (example: "12345") - **city** (string): City of residence. (example: "Milano") - **latitude** (object): Latitude for geolocation. (example: 45.9721174) - **longitude** (object): Longitude for geolocation. (example: 12.6590859) - **state** (string): Province or state abbreviation. (example: "MI") - **country** (string): Country code (ISO 3166-1 alpha-2). (example: "IT") - **vat_code** (string): VAT number. (example: "IT0012345678") ### Responses #### 201 - response **ClientResource** - **id** (integer) (required) - **type** (integer) (required) - **name** (string) (required) - **email** (string,null) (required) - **country** (string,null) (required) - **city** (string,null) (required) - **address** (string,null) (required) - **phone** (string,null) (required) - **stripe_setup_intent_id** (string,null) (required) - **is_blacklist** (boolean) (required) - **tags** (array (object)) (required) Array items: - **id** (integer) (required) - **name** (string) (required) - **phone_normalized** (string) (required) #### 401 - response - **message** (string) (required): Error overview. #### 422 - response - **message** (string) (required): Errors overview. - **errors** (object) (required): A detailed description of each field that failed validation. ### Example Usage ```bash curl -X POST "https://pms-api.smartness.com/api/public/v2/clients" \ -H "Content-Type: application/json" \ -d '{ "company_id": 1359, "type": 1, "name": "Demo Client Name", "first_name": "Demo", "last_name": "Name", "locale": "it", "tags": [ "value" ], "notes": "demo notes", "birthday": "1980-06-10", "newsletter": true, "is_blacklist": false, "email": "demo@domain.com", "pec": "demo_pec@domain.com", "phone": "0123-12345678", "tax_code": "CLTDMN87L05G888A", "sdi": "012345", "address": "Via Rossi, 13", "postcode": "12345", "city": "Milano", "latitude": 45.9721174, "longitude": 12.6590859, "state": "MI", "country": "IT", "vat_code": "IT0012345678" }' ``` ``` -------------------------------- ### POST /reservation-meta Source: https://pms-api.smartness.com/docs/api-public-v2.json Creates a new reservation metadata entry. ```markdown ### Request Body **Content-Type:** application/json - **reservation_id** (integer) (required): The reservation ID. (example: 85432) - **key** (string) (required): Metadata key. Accepted values: venezia_cda, revenue_share, contract, smart_iot, smart_iot_locks, stay_kind, children_ages, mychannel. (example: "contract") - **value** (object) (required): Metadata value (JSON object). Structure depends on the key. Example for key=contract: {"text": "..."}. Example for key=revenue_share: {"amount": 400.00, "ota_fee": 60.00, ...}. (example: {"text":"Contratto di locazione turistica n. 2026/1234"}) ### Responses #### 201 - Reservation meta created successfully **ReservationMetaResource** - **id** (integer) (required) - **reservation_id** (integer) (required) - **key** (string) (required) - **value** (string) (required) - **created_at** (string,null) (required) - **updated_at** (string,null) (required) #### 401 - response - **message** (string) (required): Error overview. #### 422 - response - **message** (string) (required): Errors overview. - **errors** (object) (required): A detailed description of each field that failed validation. ### Example Usage ```bash curl -X POST "https://pms-api.smartness.com/api/public/v2/reservation-meta" \ -H "Content-Type: application/json" \ -d '{ "reservation_id": 85432, "key": "contract", "value": { "text": "Contratto di locazione turistica n. 2026/1234" } }' ``` ``` -------------------------------- ### GET /payments/paginated Source: https://pms-api.smartness.com/docs/api-public-v2.json Retrieves a paginated list of reservation payments with their payment source. Results can be filtered by reservation_id, status, source_id, and date range. ```markdown ### Parameters - **page** (integer, query, optional): Page number for paginated results. - **per_page** (integer, query, optional): Maximum number of payments returned per page. - **filter[reservation_id]** (integer, query, optional): Filter by reservation ID. - **filter[status]** (integer, query, optional): Filter by payment status (0=Manual, 1=SCA Required, 2=Succeeded, 3=Refunded, 4=Scheduled, 99=Failed). - **filter[source_id]** (integer, query, optional): Filter by payment source ID. - **filter[from]** (string, query, optional): Filter payments with date >= this date (Y-m-d). - **filter[to]** (string, query, optional): Filter payments with date <= this date (Y-m-d). - **sort** (string, query, optional): Sort by field(s). Prefix with `-` for descending. Available: id, date, amount, status, created_at. ### Responses #### 200 - Paginated list of payments - Array of PaymentResource #### 401 - response - **message** (string) (required): Error overview. #### 404 - response - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/payments/paginated?page=0&per_page=0&filter[reservation_id]=0&filter[status]=0&filter[source_id]=0&filter[from]=string&filter[to]=string&sort=string" ``` ``` -------------------------------- ### POST /payments Source: https://pms-api.smartness.com/docs/api-public-v2.json Creates a new reservation payment. The `reservation_id` must reference a valid reservation belonging to your properties. Deposit flags (`is_deposit`, `is_security_deposit`, `is_client_deposit`) are mutually exclusive. ```markdown ### Request Body **Content-Type:** application/json - **reservation_id** (integer) (required): ID of the reservation this payment belongs to. (example: 1) - **source_id** (integer) (required): ID of the payment source. (example: 1) - **amount** (object) (required): Payment amount. (example: 150) - **date** (string) (required): Payment date (Y-m-d). (example: "2025-10-01") - **is_deposit** (integer): Whether this is a deposit (0 or 1). Mutually exclusive with is_security_deposit and is_client_deposit. (example: 0) - **is_security_deposit** (integer): Whether this is a security deposit (0 or 1). (example: 0) - **is_client_deposit** (integer): Whether this is a client deposit (0 or 1). (example: 0) - **paid_kind** (array (unknown)): JSON breakdown of payment kinds. - **description** (string): Payment description (max 500 characters). (example: "Reservation deposit") - **status** (integer): Payment status. 0 = MANUAL, 1 = SCA_REQUIRED, 2 = SUCCEEDED, 3 = REFUNDED, 4 = SCHEDULED, 99 = FAILED (example: 0) - **planned_at** (string): Planned payment date. Required if status=SCHEDULED. (example: "2025-10-15") ### Responses #### 201 - Payment created successfully **PaymentResource** - **id** (integer) (required) - **reservation_id** (integer) (required) - **source_id** (integer) (required) - **amount** (string) (required) - **date** (string) (required) - **is_deposit** (integer) (required) - **is_security_deposit** (integer) (required) - **is_client_deposit** (integer) (required) - **paid_kind** (array,null) (required) - **description** (string,null) (required) - **status** (integer) (required) - **planned_at** (string,null) (required) - **created_by** (integer,null) (required) - **updated_by** (integer,null) (required) - **created_at** (string,null) (required) - **updated_at** (string,null) (required) - **payment_source** (object,null) #### 401 - response - **message** (string) (required): Error overview. #### 422 - response - **message** (string) (required): Errors overview. - **errors** (object) (required): A detailed description of each field that failed validation. ### Example Usage ```bash curl -X POST "https://pms-api.smartness.com/api/public/v2/payments" \ -H "Content-Type: application/json" \ -d '{ "reservation_id": 1, "source_id": 1, "amount": 150, "date": "2025-10-01", "is_deposit": 0, "is_security_deposit": 0, "is_client_deposit": 0, "paid_kind": [ "value" ], "description": "Reservation deposit", "status": 0, "planned_at": "2025-10-15" }' ``` ``` -------------------------------- ### GET /rate-calendar/rms-data Source: https://pms-api.smartness.com/docs/api-public-v2.json Retrieves raw rate calendar data for RMS integrations (e.g. Pricelab). Returns unformatted rate entries as flat arrays. ```markdown ### Parameters - **from** (string, query, required): Start date in Y-m-d format. - **to** (string, query, required): End date in Y-m-d format (must be after from). - **property_ids[]** (array (unknown), query, optional): Filter by property IDs. - **room_type_ids[]** (array (unknown), query, optional): Filter by room type IDs. ### Responses #### 200 - Raw rate calendar data for RMS - **success** (boolean) (required) - **data** (array (object)) (required) Array items: - **id** (integer) (required) - **room_type_id** (integer) (required) - **date** (string) (required) - **amount** (string) (required) - **availability** (integer) (required) - **min_stay** (integer) (required) - **max_stay** (integer) (required) - **cta** (integer) (required) - **ctd** (integer) (required) - **stop_sell** (integer) (required) - **cut_off** (integer) (required) - **code** (integer) (required) - **status** (integer) (required) #### 401 - response - **message** (string) (required): Error overview. ### Example Usage ```bash curl -X GET "https://pms-api.smartness.com/api/public/v2/rate-calendar/rms-data?from=string&to=string&property_ids[]=item1,item2&room_type_ids[]=item1,item2" ``` ```