# paths./bookings.get.parameters[].description
Return bookings belonging to a property.

# paths./bookings.get.parameters[].description
Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Return all bookings that were last modified after this date-time

# paths./bookings.get.parameters[].description
Number of bookings returned per page. Maximum and default value of 50 bookings

# paths./bookings.get.parameters[].description
Cursor-based pagination that identifies the last record of the previous page - Can be retrieved at 'meta[page][next]' and it's not the same value as the record ID

# paths./properties/{id}.get.parameters[].description
The ID of the property. Only available for standalone properties or multi-unit groups.

# paths./properties.get.parameters[].description
Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Format - YYYY-MM-DDTHH:MM:SS. Return all properties that were last modified after this date-time

# paths./properties.get.parameters[].description
Number of properties returned per page. Maximum and default value of 50 records

# paths./properties.get.parameters[].description
Cursor-based pagination that identifies the last record of the previous page - Can be retrieved at 'meta[page][next]' and it's not the same value as the record ID

# paths./tasks.get.parameters[].description
Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Return tasks since a given date

# paths./tasks.get.parameters[].description
Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Return tasks up until a given date

# paths./tasks.get.parameters[].description
Number of tasks returned per page. Maximum and default value of 50 records

# paths./tasks.get.parameters[].description
Cursor-based pagination that identifies the last record of the previous page - Can be retrieved at 'meta[page][next]' and it's not the same value as the record ID

# paths./tasks.get.parameters[].description
DEPRECATED: limit param is deprecated. Prefer using 'page[size]' param instead

# paths./users.get.parameters[].description
Number of users returned per page. Maximum and default value of 50 records

# paths./users.get.parameters[].description
Cursor-based pagination that identifies the last record of the previous page - Can be retrieved at 'meta[page][next]' and it's not the same value as the record ID

# paths./properties/{property_id}/calendar.get.parameters[].description
The ID of the property that the calendar belongs to. Available for all properties.

# paths./properties/{property_id}/calendar.get.parameters[].description
Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Return calendar days from a given date onwards

# paths./properties/{property_id}/calendar.get.parameters[].description
Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Format - YYYY-MM-DD. Return calendar days up until a given date

# paths./properties/{property_id}/calendar.get.parameters[].description
Number of calendar days returned per page. Maximum and default value of 50 records

# paths./properties/{property_id}/calendar.get.parameters[].description
Cursor-based pagination that identifies the last record of the previous page - Can be retrieved at 'meta[page][next]' and it's not the same value as the record ID

# paths./properties/{property_id}/calendar.get.parameters[].description
DEPRECATED: limit param is deprecated. Prefer using 'page[size]' param instead

# paths./properties/{id}/rate_change_status.get.description
Returns the status of the most recent bulk rate change operation.

# paths./properties/{id}/rate_change_status.get.parameters[].description
The ID of the property. Only available for standalone properties ir multi-unit groups

# paths./properties/{id}/rates.post.description
Bulk replacement of all custom rates with a new list of rates. Any dates not covered by the rates provided will use default pricing. All dates must be within the next 2 years. This is an asynchronous action - you can check the status of the rate change by using the rate_change_status endpoint. Due to the nature of this operation an additional rate limit is imposed at one request per property per minute.

# paths./properties/{id}/rates.post.parameters[].description
The ID of the property. Only available for standalone properties or multi-unit groups.

# paths./properties/{id}/details.get.parameters[].description
The ID of the property. Only available for standalone properties or multi-unit groups.

# paths./webhook_registrations.post.description
#######################

# Webhook event types #

#######################


- Property updated ([example](https://github.com/lavanda-uk/gists/blob/main/dev-api/webhook-event-types/property-updated.json))
- Message created ([example](https://github.com/lavanda-uk/gists/blob/main/dev-api/webhook-event-types/message-created.json))
- Booking created ([example](https://github.com/lavanda-uk/gists/blob/main/dev-api/webhook-event-types/booking-created.json))
- Booking details updated ([example](https://github.com/lavanda-uk/gists/blob/main/dev-api/webhook-event-types/booking-details-updated.json))
- Booking canceled ([example](https://github.com/lavanda-uk/gists/blob/main/dev-api/webhook-event-types/booking-canceled.json))
- Booking confirmed ([example](https://github.com/lavanda-uk/gists/blob/main/dev-api/webhook-event-types/booking-confirmed.json))


######################

# Webhook signatures #

######################


Webhook events sent to your endpoints are signed by including a
signature in each request's `Lav-Request-Signature` header. This secret
is required to verify that the events were sent by us and not a third
party.


In order to be able to verify signatures, you need to retrieve your
webhooks secret from your PMS integration settings.


The `Lav-Request-Signature` header included in each signed event
contains a timestamp and one signature. The timestamp is prefixed by
`t=` the signature is prefixed by `s=`.


Here's an example:


Lav-Request-Signature:
t=1601305642,s=b5a365999fecf323357f897bd22a05c398136f90b33c87b8a5b32a2c2538aaff


The signature is generated using a hash-based message authentication
code (HMAC) with SHA-256.


Here's our recommended method to verify signatures:


1. Extract the timestamp and signatures from the header by splitting the
header with , and the keys/values with =.


The value for the prefix t corresponds to the timestamp and s
corresponds to the signature.


2. Generate expected signature based on timestamp and payload of the
request


The signed_payload string is created by concatenating the timestamp with
a . Character plus the JSON payload of the request (aka the request
body). Example: '<timestamp>.<request body>'.


Compute an HMAC with the SHA256 hash function using the secret mentioned
above as the key.


3. Compare the signatures


If the signature in the header matches the expected signature generated
in 2, the verification is successful in which case your webhook handler
should return a response with a 2xx status code, e.g. 200 OK, or 204 No
Content. Otherwise, verification should fail and the handler should
return a 498 Invalid Token.

# paths./properties/{property_id}/calendar/unblock.patch.parameters[].description
The ID of the property that the calendar belongs to. Available for all properties.

# paths./properties/{property_id}/calendar/block.patch.parameters[].description
The ID of the property that the calendar belongs to. Available for all properties.

# paths./media/{uuid}/download.get.parameters[].description
Universally Unique Identifier of the medium/attachment that you want to download.
You get the medium/attachment download URL that includes the UUID, when you are
notified via a "Message created" Webhook event type. Read more
[here](https://lavanda.portal.azure-api.net/docs/services/lavanda-developer-api/operations/post-webhook_registrations).

# paths./media/{uuid}/download.get.responses.200.headers.Content-Length.description
The number of bytes of the downloaded medium

# paths./media/{uuid}/download.get.responses.200.headers.Content-Type.description
The content type of the medium, such as "image/jpeg" for a JPG image (see: RFC6838)

# components.schemas.PropertiesProperty_idCalendarGet200ApplicationJsonResponse.properties.data.items.properties.id.description
This is subject to change so don't rely on it being the same

# components.schemas.Booking.properties.booking.properties.additional_fees_total_amount.description
The total amount of all additional fees combined

# components.schemas.Booking.properties.booking.properties.booked_time.description
The time that the booking was confirmed (required for confirmed bookings)

# components.schemas.Booking.properties.booking.properties.guest_payment_status.description
The guest payment status of the booking (Optional)

# components.schemas.Booking.properties.booking.properties.vetting_status.description
The vetting status of the booking (Optional)

# components.schemas.Booking-1.properties.booking.properties.additional_fees_total_amount.description
The total amount of all additional fees combined

# components.schemas.Booking-1.properties.booking.properties.booked_time.description
The time that the booking was confirmed (required for confirmed bookings)

# components.schemas.Booking-1.properties.booking.properties.guest_payment_status.description
The guest payment status of the booking (Optional)

# components.schemas.Booking-1.properties.booking.properties.vetting_status.description
The vetting status of the booking (Optional)

# components.schemas.Message.properties.message.properties.sent_by_guest.description
Flag that indicates if the message was sent by the guest

# components.schemas.Rates.properties.rates.items.properties.start_date.description
The date from which the rate will be applied

# components.schemas.Rates.properties.rates.items.properties.end_date.description
The date up until which the rate will be applied

# components.schemas.Rates.properties.rates.items.properties.price.description
The nightly price for each date covered by the rate

# components.schemas.Rates.properties.rates.items.properties.min_night_stay.description
The minimum number of nights that the property must be booked for if the booking is covered by the rate

# components.schemas.Task.properties.task.properties.date.description
The date that the task is due to be carried out

# components.schemas.Task.properties.task.properties.priority.description
The priority of the task ranging from 1 (highest) to 5 (lowest)

# components.schemas.Task.properties.task.properties.assigned_to.description
The ID of the first user assigned to the task

# components.schemas.Task.properties.task.properties.assigned_to_2.description
The ID of the second user assigned to the task

# components.schemas.Task-1.properties.task.properties.date.description
The date that the task is due to be carried out

# components.schemas.Task-1.properties.task.properties.priority.description
The priority of the task ranging from 1 (highest) to 5 (lowest)

# components.schemas.Task-1.properties.task.properties.assigned_to.description
The ID of the first user assigned to the task

# components.schemas.Task-1.properties.task.properties.assigned_to_2.description
The ID of the second user assigned to the task

# components.schemas.Calendar.properties.calendar.properties.end_date.description
Only Calendars up to and before this date

# components.schemas.PropertiesProperty_idCalendarUnblockPatch200ApplicationJsonRespo.properties.data.items.properties.id.description
This is subject to change so don't rely on it being the same

# components.schemas.PropertiesProperty_idCalendarBlockPatch200ApplicationJsonRespons.properties.data.items.properties.id.description
This is subject to change so don't rely on it being the same

# components.schemas.Message-1.properties.message.properties.sent_by_guest.description
Flag that indicates if the message was sent by the guest

# components.schemas.Booking-2.properties.booking.properties.additional_fees_total_amount.description
The total amount of all additional fees combined

# components.schemas.Booking-2.properties.booking.properties.booked_time.description
The time that the booking was confirmed (required for confirmed bookings)

# components.schemas.Booking-2.properties.booking.properties.currency.description
The currency code of the booking (Optional)

# components.schemas.Booking-2.properties.booking.properties.guest_payment_status.description
The guest payment status of the booking (Optional)

# components.schemas.Booking-2.properties.booking.properties.vetting_status.description
The vetting status of the booking (Optional)

# components.schemas.Booking-3.properties.booking.properties.additional_fees_total_amount.description
The total amount of all additional fees combined

# components.schemas.Booking-3.properties.booking.properties.booked_time.description
The time that the booking was confirmed (required for confirmed bookings)

# components.schemas.Booking-3.properties.booking.properties.currency.description
The currency code of the booking (Optional)

# components.schemas.Booking-3.properties.booking.properties.guest_payment_status.description
The guest payment status of the booking (Optional)

# components.schemas.Booking-3.properties.booking.properties.vetting_status.description
The vetting status of the booking (Optional)

# components.schemas.Message-2.properties.message.properties.sent_by_guest.description
Flag that indicates if the message was sent by the guest

# components.schemas.Message-3.properties.message.properties.sent_by_guest.description
Flag that indicates if the message was sent by the guest

# components.schemas.PropertiesProperty_idCalendarGet200ApplicationJsonResponse-1.properties.data.items.properties.id.description
This is subject to change so don't rely on it being the same

# components.schemas.Calendar-1.properties.calendar.properties.end_date.description
Only Calendars up to and before this date

# components.schemas.PropertiesProperty_idCalendarGet200ApplicationJsonResponse-2.properties.data.items.properties.id.description
This is subject to change so don't rely on it being the same

# components.schemas.Task-2.properties.task.properties.date.description
The date that the task is due to be carried out

# components.schemas.Task-2.properties.task.properties.priority.description
The priority of the task ranging from 1 (highest) to 5 (lowest)

# components.schemas.Task-2.properties.task.properties.assigned_to.description
The ID of the first user assigned to the task

# components.schemas.Task-2.properties.task.properties.assigned_to_2.description
The ID of the second user assigned to the task

# components.schemas.PropertiesProperty_idCalendarGet200ApplicationJsonResponse-3.properties.data.items.properties.id.description
This is subject to change so don't rely on it being the same

# components.schemas.Calendar-2.properties.calendar.properties.end_date.description
Only Calendars up to and before this date

# components.schemas.PropertiesProperty_idCalendarUnblockPatch200ApplicationJsonRespo.properties.data.items.properties.id.description
This is subject to change so don't rely on it being the same

# components.schemas.Calendar-3.properties.calendar.properties.end_date.description
Only Calendars up to and before this date

# components.schemas.PropertiesProperty_idCalendarBlockPatch200ApplicationJsonRespons.properties.data.items.properties.id.description
This is subject to change so don't rely on it being the same

# components.schemas.Message-4.properties.message.properties.attachments.items.properties.file_type.description
Computed file type based on the uploaded file.

# components.schemas.Message-4.properties.message.properties.sent_by_guest.description
Flag that indicates if the message was sent by the guest

# components.schemas.ImportMessagesPost200ApplicationJsonResponse-2.properties.data.properties.attributes.properties.attachments.items.properties.file_type.description
Computed file type based on the uploaded file.

# components.schemas.Message-5.properties.message.properties.attachments.items.properties.file_type.description
Computed file type based on the uploaded file.

# components.schemas.Message-5.properties.message.properties.sent_by_guest.description
Flag that indicates if the message was sent by the guest

# components.schemas.ImportMessagesIdPatch200ApplicationJsonResponse.properties.data.properties.attributes.properties.attachments.items.properties.file_type.description
Computed file type based on the uploaded file.

# components.schemas.File.properties.file.description
The file to upload. Can be the actual data (byte array buffer), the Data URI (Base64 encoded), a remote FTP, HTTP or HTTPS URL of an existing file.

# components.schemas.UploadPost200ApplicationJsonResponse.properties.data.properties.attributes.properties.file_type.description
Computed file type based on the uploaded file.

# components.schemas.Attachment.properties.attachment.properties.file.description
The file to upload. Can be the actual data (byte array buffer), the Data URI (Base64 encoded), a remote FTP, HTTP or HTTPS URL of an existing file.

# components.schemas.Attachment.properties.attachment.properties.resource_type.description
Pass raw when uploading files that are not images or video.

# components.schemas.Attachment-1.properties.attachment.properties.file.description
The file to upload. Can be the actual data (byte array buffer), the Data URI (Base64 encoded), a remote FTP, HTTP or HTTPS URL of an existing file.

# components.schemas.Attachment-1.properties.attachment.properties.file_name.description
The name of file to upload. It should include the file extension.

# components.schemas.Attachment-1.properties.attachment.properties.resource_type.description
Pass raw when uploading files that are not images or video.

# components.schemas.Attachment-2.properties.attachment.properties.file.description
The file to upload. Can be the actual data (byte array buffer), the Data URI (Base64 encoded), a remote FTP, HTTP or HTTPS URL of an existing file.

# components.schemas.Attachment-2.properties.attachment.properties.file_extension.description
Pass one of the following when uploading files that are not images, video or audio.

# components.schemas.Message-6.properties.message.properties.source.description
The source responsible for sending the message

# components.schemas.Task-3.properties.task.properties.date.description
The date that the task is due to be carried out

# components.schemas.Task-3.properties.task.properties.assigned_to.description
The ID of the first user assigned to the task

# components.schemas.Task-3.properties.task.properties.assigned_to_2.description
The ID of the second user assigned to the task

# components.schemas.Task-4.properties.task.properties.date.description
The date that the task is due to be carried out

# components.schemas.Task-4.properties.task.properties.assigned_to.description
The ID of the first user assigned to the task

# components.schemas.Task-4.properties.task.properties.assigned_to_2.description
The ID of the second user assigned to the task