This file summarises the most important changes that went live on each release of Concierge. Please check the Wiki entry on the release process to understand how this file is formatted and how the process works.
- RentalsUnited: support for Vietnam and Canary Islands countries
- Host Deletion via admin
- RentalsUnited: Add support for "House" type
- bnbhero rake name
- Kigo diff api poll frequency
- Validates that Roomorama username is unique when creating new host
- Kigo: Calling api should give id as int
- Avantio: Validation error messages during metadata sync
- Host show page
- Sync process index filtered by host
- Small white concierge logo, removed Roomorama logo
- Menu to be mobile responsive
- Kigo: Fix crash wrong property identifier type rollbar#950
- JTB: Increase roomorama client timeout
- Kigo: Fix crash on nil caption rollbar#773 and rollbar#947
- Kigo: Metadata sync worker is aggregated instead, using diffPropertyContent api
- Missing aggregated worker resync buttons
- RentalsUnited: Support for additional security deposit types
- Avantio: Locality/Name instead of City/Name for city name
- Avantio: Daily rate exceeds database int range. Rate is overwritten and marked as unavailable
- RentalsUnited: access hash attributes correctly. Fixes rollbar#805
- Waytostay: Add commas to English city tourist tax
- Bnbhero: New json structure
- BnbHero: Mapper and rake synchronisation task
- No request logging for healthcheck pings
- Avantio: Handle empty check in rule season
- Kigo: Max price of periods instead of min
- Fix showing external error with sync process event for deleted host
- Overwrites management: ability to overwrite property attributes like cancellation_policy, etc
- Avantio: handle booking not available case in common manner
- Poplidays: handle booking not available case in common manner
- THH: Add electricy charges to description append
- THH Booking timeout to 60s
- Vietnam country code for SAW
- THH: check in/out time info
- Poplidays: skip properties with zero
max_guest
- Common booking errors module
Concierge::Errors::Booking
- THH: handle booking not available case in common manner
- JTB: ignore units without availability calendar
- Refactor reading
suppliers.yml
, extract all logic inConcierge::SupplierConfig
class
- Laos country code for SAW
- WayToStay city tourist tax and late checkin fee to description append
- THH: min_stay = max(min_nights)
- THH: calendar sync uses
by days
format
- ExternalError from booking and cancellation are reported as critical errors on Rollbar
- RentalsUnited cancellation policy is no refund
- AtLeisure: prevent "undefined method '[]' for nil:NilClass" if property doesn't have deposit info
- Host creation calls Roomorama api
- Host entity has email, phone, name and payment terms
- Edit host page
- Concierge: add error.description to external_errors/show page
- JTB integrations: quote, book, cancel and synchronisation
- Avantio: add House(Casa) property type
- THH integrations: quote, book, cancel and synchronisation
- Avantio: add handling of
check_in_too_near
response code - Avantio: mark first MARGIN = 3 days as unavailable
- Ciirus: add new spec for cancel action when
CancelBookingResponse
contains API error - Concierge: support for
max_guests_exceeded
error forConcierge::Errors::Quote
- Kigo: add support for
check_in_too_far
- Support for rendering flash messages in templates (flash[:notice] and flash[:error] are supported)
- UI button to resync host from supplier's hosts listning page
- UI form to add host
- AtLeisure: rename
unsupported_on_request_reservation
toproperty_not_instant_bookable
- Ciirus: rename
unexpected_response
tounrecognised_response
for booking and cancel - SAW: use
unrecognised_response
instead of custom error codes coming from API - RU: use
unrecognised_response
instead of custom error codes coming from API - RU: use
max_guests_exceeded
instead ofunrecognised_response
- Kigo: change
quote_call_failed
andbooking_call_failed
error codes tounrecognized_response
- Kigo: change
reservation_not_found
,unavailable_dates
tounrecognized_response
- Poplidays: rename
invalid_property_error
toproperty_not_instant_bookable
- Poplidays: use
property_no_longer_available
instead of unavailable quotation whenhttp_status_409
is got
- RU: create only one sync process during availability sync
- Waytostay: Upgrade cancellation policy from firm to strict
- Kigo: prevent context hell for availabilities worker
- net_rate calculation
- Rentals United check in time takes CheckInTo
- Improved Ciirus context info during sync process
- Avantio filter users by Login GA instead of GA Code
- Cancellation policies naming
- Avantio integrations: quote, book, cancel and synchronisation
- Streamlined errors from waytostay quote
- More detailed errors in quote response
- Property synchronisation would not skip purging properties when 1 property fail in #start
- Changed atleisure customer email
- Changed SAW customer email
- Kigo: add better error reporting by adding descriptions to response parser errors
- Kigo: Bug in availabilities min stay parsing
- Rentals United: add translations for zh de es languages for late/early fees
- Rentals United: add late check-in / early check-out fees to description_append
- Atleisure: set cleaning fee mapping logic according to #405
Kigo::Calendar
now respects to property'sminimum_stay
value if it's more stricter
- Atleisure, Ciirus, Poplidays, Kigo, Waytostay, RentalsUnited: add error.data reporting to Rollbar
- Translations for title, description, t&c, check_in_instructions and description_append on Roomorama::Property
- Poplidays: metadata sync is safe for
nil
availabilities response
- Ability to retry for specific http codes by HttpClient
- Kigo rate limit would retry up to 8 times
- Outdated method call when Kigo calendar checks if host is active
- Empty criteria for multiunit property's calendar
- Rentals United: add number_of_bathrooms, number single, double, sofa beds fields
- Synchronisation#mark_as_processed
- Rentals United: fix exception which was raised while parsing multi-lang check-in instructions
- Kigo and Kigo Legacy metadata sync should not purge properties when rate limitted
- Ensure synchronisation.finish! for Kigo host with empty properties
- Kigo legacy hosts should not be deleted from Concierge
- SAW: cleaning fee patch
- Waytostay: return unavailable quotation instead error when max number of days before arrival reached
- order of events on error show page
- Rollbar warning for external warnings
- Fix crash when kigo pricing does not return MIN_STAY rules #430
- uninitialized constant
API::Controllers::InternalError
for ubuntu 16.04
- Kigo min_stay validity check, returning an error Result if the promised MIN_STAY_RULES is not found
- Rentals United: add arrival instructions to Roomorama::Property
- Unavailable quotations are of status code 200
- Rentals United: support caching for needed fetcher classes
- KigoLegacy metadata worker typo
- Ability to call
skip_property
fromstart
's block
- Host id and property id in kigo legacy sync process to Rollbar scope
- Kigo minimum stay is parsed from MIN_STAY_RULES
- SAW parse
no_allocation
andfair_warning
flags
- Atleisure: improved error code and message for quoting "on request only" period
- Move setting error message prefixes to controller-level
- SAW: parse owner information for Roomorama::Property
- Rentals Untied sync, quote, book and cancel
- Abstract host fee calculation from suppliers to entity level
- Return 404 for attempts to quote a property not in records
- Proper order of table columns for sync_process/index page
- Poplidays: metadata sync is safe for
nil
availabilities
- Workers marked as
queued
to avoid duplicated messages on SQS.
- Requirement for workers to finish in 12h no longer exists
- Kigo: set
minimum_stay
tonil
instead of 1 for calendar entry when coming NUMBER is zero
- Atleisure config being paresed as boolean by YAML
- Add
rake hosts:create
to, well, create hosts
Workers::CalendarSynchronisation
doesn't run operation for empty calendar
ZendeskNotify
client with ticket creation on cancellation of bookings from Poplidays and AtLeisure
- Ciirus:: ignore permissions error about MC disabled clone properties
- SAW: return unavailable quotation instead of Result.error while quote price
- SAW: pass stay length = 2 days instead 1 so that API returns prices for a bit more properties
- SAW: add synchronisation.new_context for metadata worker
- SAW: renamed PropertyRate entity to UnitsPricing
- SAW: Skip invalid postal code "." #286
- Atleisure:: calendar sync worker
- reason for all properties skipped during sync
- page for sync process stats
- Ciirus:: skip properties without images
- Improper type/subtype combinations
- Ciirus:: skip properties with monthly rates
- Ciirus (0, 0) coordinates validation
- skip Ciirus properties with demo images
E_EMPTY
error for Kigo and KigoLegacy handled as unavailable, instead of saving an error- Upgraded Ruby from 2.3.0 to 2.3.1
- Ciirus:: skip deleted properties during sync
- Ciirus:: skip mc disabled properties during sync
- Ciirus:: skip properties with empty description
- KigoLegacy calendar worker now finishes successfully when there are no identifiers to be updated
- fee percentage for hosts on Web app on suppliers#show.
Workers::Suppliers::Kigo::Legacy::Calendar
skip process for deactivated hosts- Poplidays integration: metadata sync, calendar sync, quoting, booking, cancelling support.
- Lack of rates when quoting prices for Kigo and KigoLegacy no longer treated as an error
- Kigo property images with non-Latin characters
- Kigo and KigoLegacy integration: metadata sync, calendar sync, quoting, booking, cancelling support.
- SAW: return unavailable quotation instead of Result.error when rates are not returned for a unit.
- Increase SQS default visibility timeout to 12h.
- Cache hit rendering when the saved value is an array.
- Support for the
aggregated
flag onconfig/suppliers.yml
, allowing workers to run once per supplier. - Allow worker implementation specify parameters for the next run.
- Better error message for unknown background worker IDs enqueued.
- Ability to filter by error code on the
web
app. - Synchronisation with Kigo
- Synchronisation with KigoLegacy
CONCIERGE_API_SECRET
for signingGET
requestsKigo::ImageFetcher
- to download images by Kigo's API- environment variable CONCIERGE_URL
- Kigo Legacy images fetching through controller
- host deletion flow
- Kigo cancellation
- Rename class:
Workers::Suppliers::Ciirus::Calendar
->Workers::Suppliers::Ciirus::Availabilities
- Rename spec file:
ciirus/calendar_worker_spec.rb
->ciirus/availabilities_spec.rb
- Rename spec file:
ciirus/metadata_worker_spec.rb
->ciirus/metadata_spec.rb
- SAW: ignore non-refundable prices for units while rates fetching
- Ignore unsupported ciirus property types until another review
- SAW: fixed
reference_number
parameter name for cancellation - html escape for
event[:message]
- Represent empty arrays as
[]
during formatting external errors' JSON - Stop creating external errors for expected messages from Ciirus
- Waytostay property batch fetching should include disabled properties
- Backticks formatting for failure to quote price for SAW units.
- Missing images for unpublished properties
Synchronisation#new_context
to contextualize work that may announce error in a supplier worker implementation- Support for owner information when creating a
Roomorama::Property
- Owner info for AtLeisure properties
- Skipped properties counters for metadata sync process
- Simple pagination widget for external errors UI table
- Remove
Roomorama::Calendar::Stay.available
field - Empty rates and ones with errors will be purged instead of raising an external error
- SAW: return error when rates are not found in the response for requested unit
- Make location info for Waytostay sync
Roomorama::Calendar::StaysMapper
maps valid entries from tomorrowRoomorama::Calendar::StaysMapper
for empty stays case- Room disable operation should actually be :delete instead of :put
- Send
[]
instead ofnil
forRoomorama::Calendar::Entry.valid_stay_length
- Better error handling for 404 and 500 scenarios on Roomorama webhook
- Upgraded Rollbar to
2.12.0
- Include CiiRUS
quote
endpoint in the routes file - Pagination params validations
- Host fee percentage for AtLeisure
- External errors per supplier on the web ui
- Filter out AOA(allocation on arrival) properties for Ciirus supplier
- SAW integrations: quote, book, cancel and synchronisation
- Do not store sync errors for Ciirus properties with bad permissions
- Use
MCPropertyName
to avoid empty property title during Ciirus sync - Do not disable context during Ciirus sync processes
- SAW integrations: quote, book, cancel and synchronisation
- Dates not covered by stays wrongly sent as available to Roomorama
- Availabilities worker event name for Ciirus
- Support for multi-unit availabilities on
Roomorama::Calendar
. Roomorama::Calendar::Stay
andStayMapper
to map supplier's format intoRoomorama::Calendar:Entry
- Ciirus integrations: quote, book, cancel and synchronisation
- Do not attempt to update calendar for properties not previously synchronised.
API::Middlewares::Authentication
with get request conditionAPI::Middlewares::RoomoramaWebhook
with get request conditionSyncProcess.recent_successful_sync_for_host
separated on.successful
and.for_host
methods
- error with saving response with ASCII-8BIT encoding type
Roomorama::Property.load
method incorrectly handled attributes set tofalse
- Room disable operation should be :put instead of :delete
- Add check support for waytostay damage deposit
- Rake task to dispatch missing amenities as diff operation
- View suppliers, reservations and synchronisation process history on the
web
app
Workers::PropertySynchronisation
doesn't update sync_processes' counters if Roomorama call failedKigo::Request
andKigo::LegacyRequest
- changed optional settings for http client
- amenities serialization for
Roomorama::Unit
. Concierge::Context::NetworkResponse
- convert response body in UTF-8 encoding type
- change request log name to
environment.log
(e.g.,staging.log
)
- Crash when a property isn't included in waytostay changes, but also not in concierge database
net_rate
,host_fee
andhost_fee_percentage
to quotation responsefee_percentage
column toHost
entity- Send inquiry id as
agent_reference
field to WayToStay - Fee percentage for WayToStay
/checkout
endpoint which always returns a successful status.- removed image presence validation for
Roomorama::Unit
entity
Kigo::ResponseParser
set host's fee percentage to quotation- Waytostay sync now loads properties in batches of 25
- Bug when integer timestamp is expected but Time is given instead
Roomorama::Calendar::Entry
now supportsminimum_stay
and synchronises that with Roomorama.- Waytostay calendar client returns
minimum_stay
related to above
- Cancellation params name mismatch
- Wrong waytostay cancellation endpoint url
- Cancellation webhook mappings
- Waytostay security deposit information
- Waytostay
security_deposit
parses into eithercash
orcredit_card_auth
or nothing - Waytostay images that has
is_visible=false
should not be imported - Waytostay sync calls /calendar instead of /availabilities api
Reservation#code
is nowReservation#reference_number
- Do not process workers if there is already on instance running.
- Waytostay calendar crashes because there is no
start_date
for /rates api - Calendar API call had wrong parameter name for prices.
- added
currency_code
to the list of supported attributes for booking webhook and forAPI::Controllers::Params::Booking
object - added
get_active_properties
by Waytostay::Client, for first time import - add
BackgroundWorker
and related refactor on queue processing. - add
Workers::CalendarSynchronisation
to deal with updating the calendar of availabilities. Concierge::Cache#invalidate
and the counterpart context event.
- determine Roomorama API environment according to value in environment variable.
- fixed
SafeAccessHash#get
method to returnnil
for nonexistent keys - fixed
SafeAccessHash#missing_keys_from
method to check for empty strings as well - new structure for the
config/suppliers.yml
file. Workers::Synchronisation
is nowWorkers::PropertySynchronisation
.- OAuth2Client invalidates cache if token is expired
Waytostay::Client#update_availability
to#get_availability
, and the client use the info- Fix issue on amenities when extracting diffs, by comparing properties in their serialized forms.
update_calendar
method removed fromRoomorama::Property
.
- Synchronisation with AtLeisure
- Ability to enable or disable context tracking at certain points in time.
Concierge::SafeAccessHash#merge
utils methodwaytostay#get_changes
returns changes from waytostay apiwaytostay#get_property
returns a roomorama property from waytostay apiwaytostay#update_media
sets images to all the new images from waytostaywaytostay#update_availability
sets availability to all the new availability from waytostay- Waytostay synchronisation worker
Kigo::Booking
- implemented booking with supplier
- moved
JSONRPC
tolib
folder - customized timeout option for
HTTPClient
- all clients return
Result
for bothquote
andbook
methods - fixed an issue when declaring boolean values on the
credentials.yml
file. - do not display response body on the
web
app if it is empty. - fix issue when updating JSON fields using
Concierge::PGJSON
.
- removed
fee
field fromQuotation
. Fees should be included in the total. - removed
errors
field fromQuotation
andReservation
- removed
successful?
method fromQuotation
andReservation
- Waytostay treats a few cases as unavailable quotation, rather than an error
API::Support::OAuth2Client
, a wrapper around oauth2 calls, caching access token and returning +Result+ objectsContext::TokenRequest
andContext::TokenReceived
events, which is announced around Oauth2 token requests- Shared partner #quote and #book examples
Waytostay::Client
which implements quoting and booking with partnerwaytostay#quote
andwaytostay#booking
, which calls the above client and respond accordinglybyebug
for test/development debuggingConcierge::SafeAccessHash#missing_keys_from?
utils methodSyncProcess
entity and database, recording every synchronisation process run on Concierge.SyncProcess#last_successful_sync_for_host
returns the last successful SyncProcess entity for a host
- HTTPStubbing supports matching by body and headers, by including
strict: true
option tostub_call
- Quotation total and fee changed from int to float
- Register HTTP response when OAuth2 errors happen.
- Identify content-type more accurately on context view by normalizing header names.
- Ignore
price_check
event on webhooks, to avoid quoting stays twice.
- removed the
message
column from theexternal_errors
table, as well as related code.
- Check-in/check-out dates consistency validation on quote/booking calls.
- Master process does not crash if child worker was manually killed.
- Fixed a bug with exceptions on startup because of not created log directory.
AtLeisure::Booking
, implemented booking with partner- Synchronisation process architecture, including many utility classes.
- fixed a bug with timezone formatting by using %z directive for strftime() instead of %Z
Concierge::Context
, tracking of events on API requests, reporting on theweb
app for external errors.
- checking exceeded stay length for JTB
- fixed a bug on JTB's response parser when a unit has only one rate plan
- fixes issue on external errors page where query string could cause a 500 error.
- change the way error notifications are handled on the
web
app to get Rollbar notifications.
- support for request logging and health checking on the web app.
- new Hanami app:
web
. Builds a web interface for inspecting API status and external errors.
- make Concierge operations resilient to database failures (introduces Emergency Log).
- time-of-check, time-of-use issue on Concierge's cache. Fixes Rollbar #8.
- valid name for customer with non-latin letters for JTB client
- fixed a bug on JTB's response parser when a unit is not available (no rate plans returned.)
- database table to keep reservations while webhook doesn't support booking code
- fix occasional non-iteratable rate plans on JTB response for checking price.
- caching for JTB fetching rate plan to avoid the same call to JTB::API
- support for cache serializers, allowing JTB to store cache responses as JSON.
- Price check ability for:
- AtLeisure
- JTB
- Kigo (and Kigo Legacy)
- Poplidays
- Booking ability for JTB.
Result
objects andInternalError
handling.- Persistence with PostgreSQL.
Concierge::Cache
, using a relational store.Concierge::SafeAccessHash
for navigating supplier's API responses safely.- Credentials and environment variables management.
- Pub/Sub facility,
Announcer
. - Authentication via the
Content-Signature
header. - Transparent Roomorama Webhook compatibility with the
API::Middlewares::RoomoramaWebhook
middleware.