bookingsync-api 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +1 -1
- data/Gemfile +2 -1
- data/Guardfile +3 -6
- data/README.md +11 -3
- data/bookingsync-api.gemspec +2 -2
- data/lib/bookingsync/api.rb +0 -2
- data/lib/bookingsync/api/client.rb +151 -54
- data/lib/bookingsync/api/client/amenities.rb +22 -0
- data/lib/bookingsync/api/client/billing_addresses.rb +22 -0
- data/lib/bookingsync/api/client/bookings.rb +7 -9
- data/lib/bookingsync/api/client/bookings_payments.rb +22 -0
- data/lib/bookingsync/api/client/clients.rb +43 -0
- data/lib/bookingsync/api/client/destinations.rb +22 -0
- data/lib/bookingsync/api/client/inquiries.rb +2 -2
- data/lib/bookingsync/api/client/payments.rb +53 -0
- data/lib/bookingsync/api/client/periods.rb +54 -0
- data/lib/bookingsync/api/client/photos.rb +22 -0
- data/lib/bookingsync/api/client/rates.rb +23 -0
- data/lib/bookingsync/api/client/rates_rules.rb +22 -0
- data/lib/bookingsync/api/client/rates_tables.rb +53 -0
- data/lib/bookingsync/api/client/rental_agreements.rb +50 -0
- data/lib/bookingsync/api/client/rentals.rb +39 -1
- data/lib/bookingsync/api/client/reviews.rb +31 -0
- data/lib/bookingsync/api/client/seasons.rb +53 -0
- data/lib/bookingsync/api/client/special_offers.rb +54 -0
- data/lib/bookingsync/api/relation.rb +87 -0
- data/lib/bookingsync/api/resource.rb +58 -0
- data/lib/bookingsync/api/response.rb +79 -0
- data/lib/bookingsync/api/serializer.rb +100 -0
- data/lib/bookingsync/api/version.rb +1 -1
- data/spec/bookingsync/api/client/amenities_spec.rb +12 -0
- data/spec/bookingsync/api/client/billing_addresses_spec.rb +12 -0
- data/spec/bookingsync/api/client/billings_payments_spec.rb +12 -0
- data/spec/bookingsync/api/client/bookings_spec.rb +10 -8
- data/spec/bookingsync/api/client/clients_spec.rb +55 -0
- data/spec/bookingsync/api/client/destinations_spec.rb +12 -0
- data/spec/bookingsync/api/client/inquiries_spec.rb +1 -1
- data/spec/bookingsync/api/client/payments_spec.rb +56 -0
- data/spec/bookingsync/api/client/periods_spec.rb +61 -0
- data/spec/bookingsync/api/client/photos_spec.rb +12 -0
- data/spec/bookingsync/api/client/rates_rules_spec.rb +13 -0
- data/spec/bookingsync/api/client/rates_spec.rb +12 -0
- data/spec/bookingsync/api/client/rates_tables_spec.rb +59 -0
- data/spec/bookingsync/api/client/rental_agreements_spec.rb +64 -0
- data/spec/bookingsync/api/client/rentals_spec.rb +56 -6
- data/spec/bookingsync/api/client/reviews_spec.rb +33 -0
- data/spec/bookingsync/api/client/seasons_spec.rb +61 -0
- data/spec/bookingsync/api/client/special_offers_spec.rb +63 -0
- data/spec/bookingsync/api/client_spec.rb +31 -10
- data/spec/bookingsync/api/relation_spec.rb +72 -0
- data/spec/bookingsync/api/resource_spec.rb +79 -0
- data/spec/bookingsync/api/response_spec.rb +66 -0
- data/spec/cassettes/BookingSync_API_Client_Amenities/_amenities/returns_amenities.yml +72 -0
- data/spec/cassettes/BookingSync_API_Client_BillingAddresses/_billing_addresses/returns_billing_addresses.yml +65 -0
- data/spec/cassettes/BookingSync_API_Client_Bookings/_bookings/pagination/with_a_block/yields_block_with_batch_of_bookings.yml +12 -12
- data/spec/cassettes/BookingSync_API_Client_Bookings/_bookings/pagination/with_auto_paginate_true/returns_all_bookings_joined_from_many_requests.yml +12 -12
- data/spec/cassettes/BookingSync_API_Client_Bookings/_bookings/pagination/with_per_page_setting/returns_limited_number_of_bookings.yml +3 -3
- data/spec/cassettes/BookingSync_API_Client_Bookings/_clients/returns_clients.yml +66 -0
- data/spec/cassettes/BookingSync_API_Client_Bookings/_create_booking/creates_a_booking.yml +1 -1
- data/spec/cassettes/BookingSync_API_Client_Bookings/_create_client/creates_a_new_client.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_Bookings/_edit_booking/updates_given_booking_by_ID.yml +18 -14
- data/spec/cassettes/BookingSync_API_Client_Bookings/_edit_client/updates_given_client_by_ID.yml +62 -0
- data/spec/cassettes/BookingSync_API_Client_BookingsPayments/_bookings_payments/returns_bookings_payments.yml +65 -0
- data/spec/cassettes/BookingSync_API_Client_Destinations/_destinations/returns_destinations.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_Inquiries/_create_inquiry/creates_a_new_inquiry.yml +1 -1
- data/spec/cassettes/BookingSync_API_Client_Inquiries/_inquiries/returns_inquiries.yml +1 -1
- data/spec/cassettes/BookingSync_API_Client_Payments/_cancel_payment/cancels_given_payment.yml +57 -0
- data/spec/cassettes/BookingSync_API_Client_Payments/_create_payment/creates_a_new_payment.yml +63 -0
- data/spec/cassettes/BookingSync_API_Client_Payments/_edit_payment/updates_given_payment_by_ID.yml +61 -0
- data/spec/cassettes/BookingSync_API_Client_Payments/_payments/returns_payments.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_Periods/_create_period/creates_a_new_period.yml +63 -0
- data/spec/cassettes/BookingSync_API_Client_Periods/_delete_period/deletes_given_period.yml +70 -0
- data/spec/cassettes/BookingSync_API_Client_Periods/_edit_period/updates_given_period_by_ID.yml +61 -0
- data/spec/cassettes/BookingSync_API_Client_Periods/_periods/returns_periods.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_Photos/_photos/returns_photos.yml +72 -0
- data/spec/cassettes/BookingSync_API_Client_Rates/_rates/returns_rates.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_RatesRules/_rates_rules/returns_rates_rules.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_RatesTables/_create_rates_table/creates_a_new_rates_table.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_RatesTables/_delete_rates_table/deletes_given_rates_table.yml +57 -0
- data/spec/cassettes/BookingSync_API_Client_RatesTables/_edit_rates_table/updates_given_rates_table_by_ID.yml +62 -0
- data/spec/cassettes/BookingSync_API_Client_RatesTables/_rates_tables/returns_rates_tables.yml +74 -0
- data/spec/cassettes/BookingSync_API_Client_RentalAgreements/_create_rental_agreement/creates_a_new_rental_agreement.yml +63 -0
- data/spec/cassettes/BookingSync_API_Client_RentalAgreements/_create_rental_agreement_for_booking/creates_a_new_rental_agreement.yml +63 -0
- data/spec/cassettes/BookingSync_API_Client_RentalAgreements/_create_rental_agreement_for_rental/creates_a_new_rental_agreement.yml +63 -0
- data/spec/cassettes/BookingSync_API_Client_RentalAgreements/_rental_agreements/returns_rental_agreements.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_Rentals/_cancel_rental/cancels_given_rental.yml +57 -0
- data/spec/cassettes/BookingSync_API_Client_Rentals/_create_rental/creates_a_new_rental.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_Rentals/_edit_rental/updates_given_rental_by_ID.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_Rentals/_rental/returns_a_single_rental.yml +67 -0
- data/spec/cassettes/BookingSync_API_Client_Rentals/_rentals/links/returns_associated_photos.yml +152 -0
- data/spec/cassettes/BookingSync_API_Client_Rentals/_rentals/links/returns_links_to_associated_resources.yml +91 -0
- data/spec/cassettes/BookingSync_API_Client_Rentals/_rentals/returns_rentals.yml +45 -20
- data/spec/cassettes/BookingSync_API_Client_Reviews/_create_review/creates_a_new_review.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_Reviews/_reviews/returns_reviews.yml +83 -0
- data/spec/cassettes/BookingSync_API_Client_Seasons/_create_season/creates_a_new_season.yml +64 -0
- data/spec/cassettes/BookingSync_API_Client_Seasons/_delete_season/deletes_given_season.yml +57 -0
- data/spec/cassettes/BookingSync_API_Client_Seasons/_edit_season/updates_given_season_by_ID.yml +62 -0
- data/spec/cassettes/BookingSync_API_Client_Seasons/_seasons/returns_seasons.yml +74 -0
- data/spec/cassettes/BookingSync_API_Client_SpecialOffers/_create_special_offer/creates_a_new_special_offer.yml +63 -0
- data/spec/cassettes/BookingSync_API_Client_SpecialOffers/_delete_special_offer/deletes_given_special_offer.yml +57 -0
- data/spec/cassettes/BookingSync_API_Client_SpecialOffers/_edit_special_offer/updates_given_special_offer_by_ID.yml +61 -0
- data/spec/cassettes/{BookingSync_API_Client_Rentals/_rentals/with_specified_fields_in_options/returns_rentals_with_filtered_fields.yml → BookingSync_API_Client_SpecialOffers/_special_offers/returns_special_offers.yml} +17 -10
- data/spec/spec_helper.rb +1 -0
- metadata +143 -7
- data/lib/bookingsync/ext/resource.rb +0 -9
@@ -16,7 +16,7 @@ module BookingSync::API
|
|
16
16
|
# @option options [Array] status: Array of booking states.
|
17
17
|
# If specyfied bookings with given states are shown.
|
18
18
|
# Possible statuses: `:booked`, `:unavailable` and `:tentative`
|
19
|
-
# @return [Array<
|
19
|
+
# @return [Array<BookingSync::API::Resource>] Array of bookings.
|
20
20
|
# @example
|
21
21
|
# @api.bookings(months: 12, states: [:booked, :unavailable], include_canceled: true)
|
22
22
|
#
|
@@ -30,32 +30,30 @@ module BookingSync::API
|
|
30
30
|
paginate :bookings, options, &block
|
31
31
|
end
|
32
32
|
|
33
|
-
|
34
33
|
# Create a booking
|
35
34
|
#
|
36
35
|
# @param options [Hash] Booking attributes
|
37
|
-
# @return
|
36
|
+
# @return [BookingSync::API::Resource] Newly create booking
|
38
37
|
def create_booking(options = {})
|
39
38
|
post(:bookings, bookings: [options]).pop
|
40
39
|
end
|
41
40
|
|
42
41
|
# Edit a booking
|
43
42
|
#
|
44
|
-
# @param booking [
|
43
|
+
# @param booking [BookingSync::API::Resource|Integer] Booking or ID of the booking
|
45
44
|
# to be updated
|
46
45
|
# @param options [Hash] Booking attributes to be updated
|
47
|
-
#
|
48
|
-
# @return [Array] An empty Array on success, exception is raised otherwise
|
46
|
+
# @return [BookingSync::API::Resource] Updated booking on success, exception is raised otherwise
|
49
47
|
# @example
|
50
48
|
# booking = @api.bookings.first
|
51
|
-
# @api.edit_booking(booking, {adults: 1})
|
49
|
+
# @api.edit_booking(booking, { adults: 1 })
|
52
50
|
def edit_booking(booking, options = {})
|
53
|
-
put
|
51
|
+
put("bookings/#{booking}", bookings: [options]).pop
|
54
52
|
end
|
55
53
|
|
56
54
|
# Cancel a booking
|
57
55
|
#
|
58
|
-
# @param booking [
|
56
|
+
# @param booking [BookingSync::API::Resource|Integer] Booking or ID of the booking
|
59
57
|
# to be canceled
|
60
58
|
# @return [Array] An empty Array on success, exception is raised otherwise
|
61
59
|
def cancel_booking(booking, options = {})
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module BookingSync::API
|
2
|
+
class Client
|
3
|
+
module BookingsPayments
|
4
|
+
# List bookings payments
|
5
|
+
#
|
6
|
+
# Returns bookings payments for the account user is authenticated with.
|
7
|
+
# @param options [Hash] A customizable set of options.
|
8
|
+
# @option options [Array] fields: List of fields to be fetched.
|
9
|
+
# @return [Array<BookingSync::API::Resource>] Array of bookings payments.
|
10
|
+
#
|
11
|
+
# @example Get the list of bookings payments for the current account
|
12
|
+
# bookings_payments = @api.bookings_payments
|
13
|
+
# bookings_payments.first.amount # => 200
|
14
|
+
# @example Get the list of bookings payments only with amount and currency for smaller response
|
15
|
+
# @api.bookings_payments(fields: [:amount, :currency])
|
16
|
+
# @see http://docs.api.bookingsync.com/reference/endpoints/bookings_payments/#list-bookings-payments
|
17
|
+
def bookings_payments(options = {}, &block)
|
18
|
+
paginate :bookings_payments, options, &block
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module BookingSync::API
|
2
|
+
class Client
|
3
|
+
module Clients
|
4
|
+
# List clients
|
5
|
+
#
|
6
|
+
# Returns clients for the account user is authenticated with.
|
7
|
+
# @param options [Hash] A customizable set of options.
|
8
|
+
# @option options [Array] fields: List of fields to be fetched.
|
9
|
+
# @return [Array<BookingSync::API::Resource>] Array of clients.
|
10
|
+
#
|
11
|
+
# @example Get the list of clients for the current account
|
12
|
+
# clients = @api.clients
|
13
|
+
# clients.first.fullname # => "John Smith"
|
14
|
+
# @example Get the list of clients only with fullname and phone for smaller response
|
15
|
+
# @api.clients(fields: [:fullname, :phone])
|
16
|
+
# @see http://docs.api.bookingsync.com/reference/endpoints/clients/#list-clients
|
17
|
+
def clients(options = {}, &block)
|
18
|
+
paginate :clients, options, &block
|
19
|
+
end
|
20
|
+
|
21
|
+
# Create a new client
|
22
|
+
#
|
23
|
+
# @param options [Hash] Client attributes
|
24
|
+
# @return [BookingSync::API::Resource] Newly created client
|
25
|
+
def create_client(options = {})
|
26
|
+
post(:clients, clients: [options]).pop
|
27
|
+
end
|
28
|
+
|
29
|
+
# Edit a client
|
30
|
+
#
|
31
|
+
# @param client [BookingSync::API::Resource|Integer] Client or ID of the client
|
32
|
+
# to be updated
|
33
|
+
# @param options [Hash] Client attributes to be updated
|
34
|
+
# @return [BookingSync::API::Resource] Updated client on success, exception is raised otherwise
|
35
|
+
# @example
|
36
|
+
# client = @api.clients.first
|
37
|
+
# @api.edit_client(client, { fullname: "Gary Smith" })
|
38
|
+
def edit_client(client, options = {})
|
39
|
+
put("clients/#{client}", clients: [options]).pop
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module BookingSync::API
|
2
|
+
class Client
|
3
|
+
module Destinations
|
4
|
+
# List destinations
|
5
|
+
#
|
6
|
+
# Returns destinations for the account user is authenticated with.
|
7
|
+
# @param options [Hash] A customizable set of options.
|
8
|
+
# @option options [Array] fields: List of fields to be fetched.
|
9
|
+
# @return [Array<BookingSync::API::Resource>] Array of destinations.
|
10
|
+
#
|
11
|
+
# @example Get the list of destinations for the current account
|
12
|
+
# destinations = @api.destinations
|
13
|
+
# destinations.first.fullname # => {"en":"Europe, World"}
|
14
|
+
# @example Get the list of destinations only with name and fullname for smaller response
|
15
|
+
# @api.destinations(fields: [:name, :fullname])
|
16
|
+
# @see http://docs.api.bookingsync.com/reference/endpoints/destinations/#list-destinations
|
17
|
+
def destinations(options = {}, &block)
|
18
|
+
paginate :destinations, options, &block
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -5,7 +5,7 @@ module BookingSync::API
|
|
5
5
|
#
|
6
6
|
# Return list of inquiries for current account.
|
7
7
|
# @param options [Hash] A customizable set of query options.
|
8
|
-
# @return [Array<
|
8
|
+
# @return [Array<BookingSync::API::Resource>] Array of inquiries.
|
9
9
|
# @see http://docs.api.bookingsync.com/reference/endpoints/inquiries/#list-inquiries
|
10
10
|
def inquiries(options = {}, &block)
|
11
11
|
paginate :inquiries, options, &block
|
@@ -14,7 +14,7 @@ module BookingSync::API
|
|
14
14
|
# Create a new inquiry
|
15
15
|
#
|
16
16
|
# @param options [Hash] Inquiry attributes
|
17
|
-
# @return
|
17
|
+
# @return [BookingSync::API::Resource] Newly create inquiry
|
18
18
|
def create_inquiry(options = {})
|
19
19
|
post(:inquiries, inquiries: [options]).pop
|
20
20
|
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module BookingSync::API
|
2
|
+
class Client
|
3
|
+
module Payments
|
4
|
+
# List payments
|
5
|
+
#
|
6
|
+
# Returns payments for the account user is authenticated with.
|
7
|
+
# @param options [Hash] A customizable set of options.
|
8
|
+
# @option options [Array] fields: List of fields to be fetched.
|
9
|
+
# @return [Array<BookingSync::API::Resource>] Array of payments.
|
10
|
+
#
|
11
|
+
# @example Get the list of payments for the current account
|
12
|
+
# payments = @api.payments
|
13
|
+
# payments.first.kind # => "cash"
|
14
|
+
# @example Get the list of payments only with kind and currency for smaller response
|
15
|
+
# @api.payments(fields: [:kind, :currency])
|
16
|
+
# @see http://docs.api.bookingsync.com/reference/endpoints/payments/#list-payments
|
17
|
+
def payments(options = {}, &block)
|
18
|
+
paginate :payments, options, &block
|
19
|
+
end
|
20
|
+
|
21
|
+
# Create a new payment
|
22
|
+
#
|
23
|
+
# @param booking_id [Integer] ID of the booking
|
24
|
+
# @param options [Hash] payment attributes
|
25
|
+
# @return [BookingSync::API::Resource] Newly created payment
|
26
|
+
def create_payment(booking_id, options = {})
|
27
|
+
post(:payments, booking_id: booking_id, payments: [options]).pop
|
28
|
+
end
|
29
|
+
|
30
|
+
# Edit a payment
|
31
|
+
#
|
32
|
+
# @param payment [BookingSync::API::Resource|Integer] payment or ID of the payment
|
33
|
+
# to be updated
|
34
|
+
# @param options [Hash] payment attributes to be updated
|
35
|
+
# @return [BookingSync::API::Resource] Updated payment on success, exception is raised otherwise
|
36
|
+
# @example
|
37
|
+
# payment = @api.payments.first
|
38
|
+
# @api.edit_payment(payment, { currency: "EURO" })
|
39
|
+
def edit_payment(payment, options = {})
|
40
|
+
put("payments/#{payment}", payments: [options]).pop
|
41
|
+
end
|
42
|
+
|
43
|
+
# Cancel a payment
|
44
|
+
#
|
45
|
+
# @param payment [BookingSync::API::Resource|Integer] payment or ID of the payment
|
46
|
+
# to be canceled
|
47
|
+
# @return [Array] An empty Array on success, exception is raised otherwise
|
48
|
+
def cancel_payment(payment, options = {})
|
49
|
+
delete "payments/#{payment}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
module BookingSync::API
|
2
|
+
class Client
|
3
|
+
module Periods
|
4
|
+
# List periods
|
5
|
+
#
|
6
|
+
# Returns periods for the account user is authenticated with.
|
7
|
+
# @param options [Hash] A customizable set of options.
|
8
|
+
# @option options [Array] fields: List of fields to be fetched.
|
9
|
+
# @return [Array<BookingSync::API::Resource>] Array of periods.
|
10
|
+
#
|
11
|
+
# @example Get the list of periods for the current account
|
12
|
+
# periods = @api.periods
|
13
|
+
# periods.first.start_at # => "2014-04-11"
|
14
|
+
# @example Get the list of periods only with start_at and end_at for smaller response
|
15
|
+
# @api.periods(fields: [:start_at, :end_at])
|
16
|
+
# @see http://docs.api.bookingsync.com/reference/endpoints/periods/#list-periods
|
17
|
+
def periods(options = {}, &block)
|
18
|
+
paginate :periods, options, &block
|
19
|
+
end
|
20
|
+
|
21
|
+
# Create a new period
|
22
|
+
#
|
23
|
+
# @param season_id [Integer] ID of the season
|
24
|
+
# @param options [Hash] period attributes
|
25
|
+
# @return [BookingSync::API::Resource] Newly created period
|
26
|
+
def create_period(season_id, options = {})
|
27
|
+
post(:periods, season_id: season_id, periods: [options]).pop
|
28
|
+
end
|
29
|
+
|
30
|
+
# Edit a period
|
31
|
+
#
|
32
|
+
# @param period [BookingSync::API::Resource|Integer] period or ID of the period
|
33
|
+
# to be updated
|
34
|
+
# @param options [Hash] period attributes to be updated
|
35
|
+
# @return [BookingSync::API::Resource] Updated period on success,
|
36
|
+
# exception is raised otherwise
|
37
|
+
# @example
|
38
|
+
# period = @api.periods.first
|
39
|
+
# @api.edit_period(period, { end_at: "2014-04-28" })
|
40
|
+
def edit_period(period, options = {})
|
41
|
+
put("periods/#{period}", periods: [options]).pop
|
42
|
+
end
|
43
|
+
|
44
|
+
# Delete a period
|
45
|
+
#
|
46
|
+
# @param period [BookingSync::API::Resource|Integer] period or ID of the period
|
47
|
+
# to be deleted
|
48
|
+
# @return [Array] An empty Array on success, exception is raised otherwise
|
49
|
+
def delete_period(period, options = {})
|
50
|
+
delete "periods/#{period}"
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module BookingSync::API
|
2
|
+
class Client
|
3
|
+
module Photos
|
4
|
+
# List photos
|
5
|
+
#
|
6
|
+
# Returns photos for the account user is authenticated with.
|
7
|
+
# @param options [Hash] A customizable set of options.
|
8
|
+
# @option options [Array] fields: List of fields to be fetched.
|
9
|
+
# @return [Array<BookingSync::API::Resource>] Array of photos.
|
10
|
+
#
|
11
|
+
# @example Get the list of photos for the current account
|
12
|
+
# photos = @api.photos
|
13
|
+
# photos.first.position # => 1
|
14
|
+
# @example Get the list of photos only with medium_url and position for smaller response
|
15
|
+
# @api.photos(fields: [:medium_url, :position])
|
16
|
+
# @see http://docs.api.bookingsync.com/reference/endpoints/photos/#list-photos
|
17
|
+
def photos(options = {}, &block)
|
18
|
+
paginate :photos, options, &block
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module BookingSync::API
|
2
|
+
class Client
|
3
|
+
module Rates
|
4
|
+
# List rates
|
5
|
+
#
|
6
|
+
# Returns rates for the rentals of the account user is authenticated with.
|
7
|
+
# @param options [Hash] A customizable set of options.
|
8
|
+
# @option options [Array] fields: List of fields to be fetched.
|
9
|
+
# @return [Array<BookingSync::API::Resource>] Array of rates.
|
10
|
+
#
|
11
|
+
# @example Get the list of rates for the current account
|
12
|
+
# rates = @api.rates
|
13
|
+
# rates.first.final_nightly_rate # => 700
|
14
|
+
# @example Get the list of rates only with final rates
|
15
|
+
# for smaller response
|
16
|
+
# @api.rates(fields: %w(final_nightly_rate final_weekely_rate final_monthly_rate))
|
17
|
+
# @see http://docs.api.bookingsync.com/reference/endpoints/rates/#list-rates
|
18
|
+
def rates(options = {}, &block)
|
19
|
+
paginate :rates, options, &block
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module BookingSync::API
|
2
|
+
class Client
|
3
|
+
module RatesRules
|
4
|
+
# List rates rules
|
5
|
+
#
|
6
|
+
# Returns rates rules for the account user is authenticated with.
|
7
|
+
# @param options [Hash] A customizable set of options.
|
8
|
+
# @option options [Array] fields: List of fields to be fetched.
|
9
|
+
# @return [Array<BookingSync::API::Resource>] Array of rates rules.
|
10
|
+
#
|
11
|
+
# @example Get the list of rates rules for the current account
|
12
|
+
# rates_rules = @api.rates_rules
|
13
|
+
# rates_rules.first.always_applied # => true
|
14
|
+
# @example Get the list of rates rules only with always_applied and kind for smaller response
|
15
|
+
# @api.rates_rules(fields: [:always_applied, :kind])
|
16
|
+
# @see http://docs.api.bookingsync.com/reference/endpoints/rates_rules/#list-rates-rules
|
17
|
+
def rates_rules(options = {}, &block)
|
18
|
+
paginate :rates_rules, options, &block
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,53 @@
|
|
1
|
+
module BookingSync::API
|
2
|
+
class Client
|
3
|
+
module RatesTables
|
4
|
+
# List rates table
|
5
|
+
#
|
6
|
+
# Returns rates tables for the account user is authenticated with.
|
7
|
+
# @param options [Hash] A customizable set of options.
|
8
|
+
# @option options [Array] fields: List of fields to be fetched.
|
9
|
+
# @return [Array<BookingSync::API::Resource>] Array of rates tables.
|
10
|
+
#
|
11
|
+
# @example Get the list of rates tables for the current account
|
12
|
+
# rates_tables = @api.rates_tables
|
13
|
+
# rates_tables.first.name # => "Rates table 2"
|
14
|
+
# @example Get the list of rates tables only with name and account_id for smaller response
|
15
|
+
# @api.rates_tables(fields: [:name, :account_id])
|
16
|
+
# @see http://docs.api.bookingsync.com/reference/endpoints/rates_tables/#list-rates-tables
|
17
|
+
def rates_tables(options = {}, &block)
|
18
|
+
paginate :rates_tables, options, &block
|
19
|
+
end
|
20
|
+
|
21
|
+
# Create a new rates_table
|
22
|
+
#
|
23
|
+
# @param options [Hash] rates_table attributes
|
24
|
+
# @return [BookingSync::API::Resource] Newly created rates table
|
25
|
+
def create_rates_table(options = {})
|
26
|
+
post(:rates_tables, rates_tables: [options]).pop
|
27
|
+
end
|
28
|
+
|
29
|
+
# Edit a rates_table
|
30
|
+
#
|
31
|
+
# @param rates_table [BookingSync::API::Resource|Integer] rates table or
|
32
|
+
# ID of the rates table to be updated
|
33
|
+
# @param options [Hash] rates table attributes to be updated
|
34
|
+
# @return [BookingSync::API::Resource] Updated rates table on success,
|
35
|
+
# exception is raised otherwise
|
36
|
+
# @example
|
37
|
+
# rates_table = @api.rates_tables.first
|
38
|
+
# @api.edit_rates_table(rates_table, { name: "Lorem" })
|
39
|
+
def edit_rates_table(rates_table, options = {})
|
40
|
+
put("rates_tables/#{rates_table}", rates_tables: [options]).pop
|
41
|
+
end
|
42
|
+
|
43
|
+
# delete a rates_table
|
44
|
+
#
|
45
|
+
# @param rates_table [BookingSync::API::Resource|Integer] rates table or
|
46
|
+
# ID of the rates table to be deleteed
|
47
|
+
# @return [Array] An empty Array on success, exception is raised otherwise
|
48
|
+
def delete_rates_table(rates_table, options = {})
|
49
|
+
delete "rates_tables/#{rates_table}"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module BookingSync::API
|
2
|
+
class Client
|
3
|
+
module RentalAgreements
|
4
|
+
# List rental agreements
|
5
|
+
#
|
6
|
+
# Returns rental agreements for the rentals of the account user is authenticated with.
|
7
|
+
# @param options [Hash] A customizable set of options.
|
8
|
+
# @option options [Array] fields: List of fields to be fetched.
|
9
|
+
# @return [Array<BookingSync::API::Resource>] Array of rental agreements.
|
10
|
+
#
|
11
|
+
# @example Get the list of rental agreements for the current account
|
12
|
+
# agreement = @api.rental_agreements
|
13
|
+
# agreement.first.body # => "My rental agreement"
|
14
|
+
# @example Get the list of rental agreements only with body for smaller response
|
15
|
+
# @api.rentals(fields: :body)
|
16
|
+
# @see http://docs.api.bookingsync.com/reference/endpoints/rental_agreements/#list-rental_agreements
|
17
|
+
def rental_agreements(options = {}, &block)
|
18
|
+
paginate :rental_agreements, options, &block
|
19
|
+
end
|
20
|
+
|
21
|
+
# Create a new rental agreement for a booking
|
22
|
+
#
|
23
|
+
# @param booking_id [Integer] ID of the booking
|
24
|
+
# @param options [Hash] rental agreement attributes
|
25
|
+
# @return [BookingSync::API::Response] Newly created rental agreement
|
26
|
+
def create_rental_agreement_for_booking(booking_id, options = {})
|
27
|
+
post(:rental_agreements, booking_id: booking_id,
|
28
|
+
rental_agreements: [options]).pop
|
29
|
+
end
|
30
|
+
|
31
|
+
# Create a new rental agreement for a rental
|
32
|
+
#
|
33
|
+
# @param rental_id [Integer] ID of the rental
|
34
|
+
# @param options [Hash] rental agreement attributes
|
35
|
+
# @return [BookingSync::API::Response] Newly created rental agreement
|
36
|
+
def create_rental_agreement_for_rental(rental_id, options = {})
|
37
|
+
post(:rental_agreements, rental_id: rental_id,
|
38
|
+
rental_agreements: [options]).pop
|
39
|
+
end
|
40
|
+
|
41
|
+
# Create a new rental agreement for an account
|
42
|
+
#
|
43
|
+
# @param options [Hash] rental agreement attributes
|
44
|
+
# @return [BookingSync::API::Response] Newly created rental agreement
|
45
|
+
def create_rental_agreement(options = {})
|
46
|
+
post(:rental_agreements, rental_agreements: [options]).pop
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|