booker_ruby 1.14.0 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (120) hide show
  1. checksums.yaml +4 -4
  2. data/lib/booker/client.rb +154 -49
  3. data/lib/booker/errors.rb +6 -2
  4. data/lib/booker/model.rb +84 -0
  5. data/lib/booker/v4.1/availability.rb +21 -0
  6. data/lib/booker/v4.1/booking.rb +87 -0
  7. data/lib/booker/v4.1/merchant.rb +55 -0
  8. data/lib/booker/v4/business_client.rb +9 -0
  9. data/lib/booker/v4/business_rest.rb +88 -0
  10. data/lib/booker/v4/common_rest.rb +21 -0
  11. data/lib/booker/v4/customer_client.rb +15 -0
  12. data/lib/booker/v4/customer_rest.rb +15 -0
  13. data/lib/booker/v4/models/address.rb +14 -0
  14. data/lib/booker/v4/models/appointment.rb +79 -0
  15. data/lib/booker/v4/models/appointment_treatment.rb +53 -0
  16. data/lib/booker/v4/models/available_time.rb +15 -0
  17. data/lib/booker/v4/models/business_type.rb +7 -0
  18. data/lib/booker/v4/models/category.rb +7 -0
  19. data/lib/booker/v4/models/class_instance.rb +27 -0
  20. data/lib/booker/v4/models/country.rb +21 -0
  21. data/lib/booker/v4/models/current_price.rb +7 -0
  22. data/lib/booker/v4/models/customer.rb +54 -0
  23. data/lib/booker/v4/models/customer_2.rb +7 -0
  24. data/lib/booker/v4/models/customer_record_type.rb +7 -0
  25. data/lib/booker/v4/models/discount.rb +7 -0
  26. data/lib/booker/v4/models/dynamic_price.rb +13 -0
  27. data/lib/booker/v4/models/employee.rb +12 -0
  28. data/lib/booker/v4/models/feature_settings.rb +9 -0
  29. data/lib/booker/v4/models/final_total.rb +7 -0
  30. data/lib/booker/v4/models/gender.rb +7 -0
  31. data/lib/booker/v4/models/itinerary_time_slot.rb +9 -0
  32. data/lib/booker/v4/models/itinerary_time_slots_list.rb +9 -0
  33. data/lib/booker/v4/models/location.rb +40 -0
  34. data/lib/booker/v4/models/location_day_schedule.rb +20 -0
  35. data/lib/booker/v4/models/model.rb +78 -0
  36. data/lib/booker/v4/models/multi_service_availability_result.rb +9 -0
  37. data/lib/booker/v4/models/notification_settings.rb +14 -0
  38. data/lib/booker/v4/models/online_booking_settings.rb +25 -0
  39. data/lib/booker/v4/models/original_price.rb +7 -0
  40. data/lib/booker/v4/models/payment_method.rb +7 -0
  41. data/lib/booker/v4/models/preferred_staff_gender.rb +7 -0
  42. data/lib/booker/v4/models/price.rb +10 -0
  43. data/lib/booker/v4/models/receipt_display_price.rb +7 -0
  44. data/lib/booker/v4/models/room.rb +14 -0
  45. data/lib/booker/v4/models/shipping_address.rb +7 -0
  46. data/lib/booker/v4/models/source.rb +7 -0
  47. data/lib/booker/v4/models/spa.rb +7 -0
  48. data/lib/booker/v4/models/spa_employee_availability_search_item.rb +13 -0
  49. data/lib/booker/v4/models/status.rb +7 -0
  50. data/lib/booker/v4/models/sub_category.rb +7 -0
  51. data/lib/booker/v4/models/tag_price.rb +7 -0
  52. data/lib/booker/v4/models/teacher.rb +7 -0
  53. data/lib/booker/v4/models/teacher_2.rb +7 -0
  54. data/lib/booker/v4/models/time_zone.rb +10 -0
  55. data/lib/booker/v4/models/treatment.rb +21 -0
  56. data/lib/booker/v4/models/treatment_time_slot.rb +7 -0
  57. data/lib/booker/v4/models/type.rb +10 -0
  58. data/lib/booker/v4/models/user.rb +75 -0
  59. data/lib/booker/v4/request_helper.rb +33 -0
  60. data/lib/booker/v5/availability.rb +45 -0
  61. data/lib/booker/v5/models/availability.rb +18 -0
  62. data/lib/booker/v5/models/availability_result.rb +12 -0
  63. data/lib/booker/v5/models/location_hour.rb +16 -0
  64. data/lib/booker/v5/models/model.rb +9 -0
  65. data/lib/booker/v5/models/service.rb +13 -0
  66. data/lib/booker/v5/models/service_category.rb +11 -0
  67. data/lib/booker/version.rb +1 -1
  68. data/lib/booker_ruby.rb +70 -52
  69. metadata +80 -54
  70. data/lib/booker/business_client.rb +0 -22
  71. data/lib/booker/business_rest.rb +0 -112
  72. data/lib/booker/common_rest.rb +0 -43
  73. data/lib/booker/customer_client.rb +0 -17
  74. data/lib/booker/customer_rest.rb +0 -53
  75. data/lib/booker/models/address.rb +0 -12
  76. data/lib/booker/models/appointment.rb +0 -77
  77. data/lib/booker/models/appointment_treatment.rb +0 -51
  78. data/lib/booker/models/available_time.rb +0 -13
  79. data/lib/booker/models/business_type.rb +0 -5
  80. data/lib/booker/models/category.rb +0 -5
  81. data/lib/booker/models/class_instance.rb +0 -25
  82. data/lib/booker/models/country.rb +0 -19
  83. data/lib/booker/models/current_price.rb +0 -5
  84. data/lib/booker/models/customer.rb +0 -52
  85. data/lib/booker/models/customer_2.rb +0 -5
  86. data/lib/booker/models/customer_record_type.rb +0 -5
  87. data/lib/booker/models/discount.rb +0 -5
  88. data/lib/booker/models/dynamic_price.rb +0 -11
  89. data/lib/booker/models/employee.rb +0 -10
  90. data/lib/booker/models/feature_settings.rb +0 -7
  91. data/lib/booker/models/final_total.rb +0 -5
  92. data/lib/booker/models/gender.rb +0 -5
  93. data/lib/booker/models/itinerary_time_slot.rb +0 -7
  94. data/lib/booker/models/itinerary_time_slots_list.rb +0 -7
  95. data/lib/booker/models/location.rb +0 -38
  96. data/lib/booker/models/location_day_schedule.rb +0 -18
  97. data/lib/booker/models/model.rb +0 -150
  98. data/lib/booker/models/multi_service_availability_result.rb +0 -7
  99. data/lib/booker/models/notification_settings.rb +0 -12
  100. data/lib/booker/models/online_booking_settings.rb +0 -23
  101. data/lib/booker/models/original_price.rb +0 -5
  102. data/lib/booker/models/payment_method.rb +0 -5
  103. data/lib/booker/models/preferred_staff_gender.rb +0 -5
  104. data/lib/booker/models/price.rb +0 -8
  105. data/lib/booker/models/receipt_display_price.rb +0 -5
  106. data/lib/booker/models/room.rb +0 -12
  107. data/lib/booker/models/shipping_address.rb +0 -5
  108. data/lib/booker/models/source.rb +0 -5
  109. data/lib/booker/models/spa.rb +0 -5
  110. data/lib/booker/models/spa_employee_availability_search_item.rb +0 -11
  111. data/lib/booker/models/status.rb +0 -5
  112. data/lib/booker/models/sub_category.rb +0 -5
  113. data/lib/booker/models/tag_price.rb +0 -5
  114. data/lib/booker/models/teacher.rb +0 -5
  115. data/lib/booker/models/teacher_2.rb +0 -5
  116. data/lib/booker/models/time_zone.rb +0 -8
  117. data/lib/booker/models/treatment.rb +0 -19
  118. data/lib/booker/models/treatment_time_slot.rb +0 -5
  119. data/lib/booker/models/type.rb +0 -8
  120. data/lib/booker/models/user.rb +0 -73
@@ -0,0 +1,7 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class Spa < Location; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class SpaEmployeeAvailabilitySearchItem < Model
5
+ attr_accessor 'AvailableTimes',
6
+ 'Treatment',
7
+ 'FirstAvailableTime',
8
+ 'CurrentPrice',
9
+ 'Spa'
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class Status < Type; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class SubCategory < Type; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class TagPrice < Price; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class Teacher < Employee; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class Teacher2 < Employee; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class TimeZone < Model
5
+ attr_accessor 'ID', 'Name', 'StandardName'
6
+ end
7
+ end
8
+ end
9
+ end
10
+
@@ -0,0 +1,21 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class Treatment < Model
5
+ attr_accessor 'ID',
6
+ 'AllowCustomersToBookOnline',
7
+ 'Category',
8
+ 'Description',
9
+ 'Name',
10
+ 'Price',
11
+ 'SubCategory',
12
+ 'TotalDuration',
13
+ 'TreatmentDuration',
14
+ 'IsClass',
15
+ 'IsForCouples',
16
+ 'EmployeeIDs',
17
+ 'IsActive'
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,7 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class TreatmentTimeSlot < AvailableTime; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,10 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class Type < Model
5
+ attr_accessor 'ID',
6
+ 'Name'
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,75 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class User < Model
5
+ attr_accessor 'AllowCreateAppointment',
6
+ 'AllowCreateAppointmentsInPast',
7
+ 'AllowEditAppointment',
8
+ 'AllowEditBusyTimeBlock',
9
+ 'AllowEditClass',
10
+ 'AllowViewAllSchedules',
11
+ 'AllowViewAppointments',
12
+ 'AllowViewCreditCardNumber',
13
+ 'AllowViewCustomerInfo',
14
+ 'AllowViewDashBoard',
15
+ 'AllowViewOrders',
16
+ 'Email',
17
+ 'EmployeeID',
18
+ 'FirstName',
19
+ 'ID',
20
+ 'IsAccountManager',
21
+ 'IsAdministrator',
22
+ 'IsAdministratorAdmin',
23
+ 'IsAnyAdmin',
24
+ 'IsBrandReservationist',
25
+ 'IsImplementator',
26
+ 'IsReservationist',
27
+ 'IsReservationistOrTechnician',
28
+ 'IsSuperAdministrator',
29
+ 'IsTechnician',
30
+ 'IsTranslator',
31
+ 'LastName',
32
+ 'RoleNames',
33
+ 'Username',
34
+ 'DateCreated',
35
+ 'AllowOverrideOrderItemPrice',
36
+ 'AllowCancelAppointment',
37
+ 'AllowEditSchedule',
38
+ 'AllowOverrideTax',
39
+ 'AllowOverrideGCSeriesBalance',
40
+ 'AllowCreateEmailCampaigns',
41
+ 'AllowTweetFacebookAsBusiness',
42
+ 'AllowCustomizeColors',
43
+ 'AllowEditGCTemplates',
44
+ 'AllowEditEmailTemplates',
45
+ 'AllowSpecials',
46
+ 'AllowSpecialsShowView',
47
+ 'AllowSpecialsCreate',
48
+ 'AllowSpecialsEdit',
49
+ 'AllowSpecialsDelete',
50
+ 'AllowLoyaltyRewards',
51
+ 'AllowLoyaltyRewardsEdit',
52
+ 'AllowOverrideInventory',
53
+ 'AllowAddProducts',
54
+ 'IsReservationistAndAllowModifyTimeClocks',
55
+ 'AllowOrderRefund',
56
+ 'AllowOrderVoid',
57
+ 'AllowModifySchedule',
58
+ 'AllowCreateEmployeeProfile',
59
+ 'AllowEditEmployeeProfile',
60
+ 'AllowDeleteEmployeeProfile',
61
+ 'AllowCreateUserLogin',
62
+ 'AllowEditUserLogin',
63
+ 'AllowDeleteUserLogin',
64
+ 'AllowEditEmployeeGroupAssignment',
65
+ 'AllowEditEmployeeContractorInfo',
66
+ 'AllowEditEmployeeCompensationBenefits',
67
+ 'AllowEditEmployeeServices',
68
+ 'AllowEditEmployeeRegularSchedule',
69
+ 'AllowEditUserLoginOnly',
70
+ 'LocationID',
71
+ 'BrandID'
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,33 @@
1
+ module Booker
2
+ module V4
3
+ module RequestHelper
4
+ DEFAULT_PAGINATION_PARAMS = {
5
+ UsePaging: true,
6
+ PageSize: Integer(ENV['BOOKER_DEFAULT_PAGE_SIZE'] || 10),
7
+ PageNumber: 1
8
+ }
9
+
10
+ private
11
+
12
+ def build_params(default_params={}, overrides={}, paginated=false)
13
+ default_params.symbolize_keys!
14
+ overrides.symbolize_keys!
15
+ merged = {access_token: access_token}.merge(default_params.merge(overrides))
16
+
17
+ merged.each do |k, v|
18
+ if v.is_a?(Time) || v.is_a?(DateTime)
19
+ merged[k] = Booker::V4::Models::Model.time_to_booker_datetime(v)
20
+ elsif v.is_a?(Date)
21
+ merged[k] = Booker::V4::Models::Model.time_to_booker_datetime(v.in_time_zone)
22
+ end
23
+ end
24
+
25
+ if paginated
26
+ DEFAULT_PAGINATION_PARAMS.merge(merged)
27
+ else
28
+ merged
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,45 @@
1
+ module Booker
2
+ module V5
3
+ class Availability < Booker::Client
4
+ API_METHODS = {
5
+ availability: '/v5/availability/availability'.freeze,
6
+ one_day_availability: '/v5/availability/1day',
7
+ two_day_availability: '/v5/availability/2day'.freeze,
8
+ thirty_day_availability: '/v5/availability/30day'.freeze
9
+ }.freeze
10
+
11
+ def availability(location_ids:, from_date_time:, to_date_time:, include_employees: true)
12
+ get API_METHODS[:availability], {
13
+ locationIds: location_ids,
14
+ fromDateTime: from_date_time,
15
+ toDateTime: to_date_time,
16
+ includeEmployees: include_employees
17
+ }, Booker::V5::Models::AvailabilityResult
18
+ end
19
+
20
+ def one_day_availability(location_id:, from_date_time:, include_employees: true)
21
+ get API_METHODS[:one_day_availability], {
22
+ locationId: location_id,
23
+ fromDateTime: from_date_time,
24
+ includeEmployees: include_employees
25
+ }, Booker::V5::Models::AvailabilityResult
26
+ end
27
+
28
+ def two_day_availability(location_id:, from_date_time:, include_employees: true)
29
+ get API_METHODS[:two_day_availability], {
30
+ locationId: location_id,
31
+ fromDateTime: from_date_time,
32
+ includeEmployees: include_employees
33
+ }, Booker::V5::Models::AvailabilityResult
34
+ end
35
+
36
+ def thirty_day_availability(location_id:, from_date_time:, include_employees: true)
37
+ get API_METHODS[:thirty_day_availability], {
38
+ locationId: location_id,
39
+ fromDateTime: from_date_time,
40
+ includeEmployees: include_employees
41
+ }, Booker::V5::Models::AvailabilityResult
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,18 @@
1
+ module Booker
2
+ module V5
3
+ module Models
4
+ class Availability < Model
5
+ attr_accessor 'startDateTime',
6
+ 'endDateTime',
7
+ 'employees'
8
+
9
+ def self.from_hash(hash)
10
+ model = super
11
+ model.startDateTime = Time.parse(model.startDateTime) if model.startDateTime
12
+ model.endDateTime = Time.parse(model.endDateTime) if model.endDateTime
13
+ model
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,12 @@
1
+ module Booker
2
+ module V5
3
+ module Models
4
+ class AvailabilityResult < Model
5
+ attr_accessor 'locationId',
6
+ 'startTimeInterval',
7
+ 'locationHours',
8
+ 'serviceCategories'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ module Booker
2
+ module V5
3
+ module Models
4
+ class LocationHour < Model
5
+ attr_accessor 'open', 'close'
6
+
7
+ def self.from_hash(hash)
8
+ model = super
9
+ model.open = Time.parse(model.open) if model.open
10
+ model.close = Time.parse(model.close) if model.close
11
+ model
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,9 @@
1
+ module Booker
2
+ module V5
3
+ module Models
4
+ class Model < Booker::Model
5
+ CONSTANTIZE_MODULE = Booker::V5::Models
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,13 @@
1
+ module Booker
2
+ module V5
3
+ module Models
4
+ class Service < Model
5
+ attr_accessor 'serviceId',
6
+ 'serviceName',
7
+ 'duration',
8
+ 'requiresStaff',
9
+ 'availability'
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ module Booker
2
+ module V5
3
+ module Models
4
+ class ServiceCategory < Model
5
+ attr_accessor 'serviceCategoryId',
6
+ 'serviceCategoryName',
7
+ 'services'
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,3 +1,3 @@
1
1
  module Booker
2
- VERSION = '1.14.0'
2
+ VERSION = '2.0.0'
3
3
  end
data/lib/booker_ruby.rb CHANGED
@@ -8,6 +8,7 @@ require 'active_support/core_ext/object'
8
8
  require 'active_support/core_ext/numeric/time.rb'
9
9
  require 'active_support/time_with_zone'
10
10
  require 'active_support/time'
11
+ require 'jwt'
11
12
 
12
13
  # Core
13
14
  require 'booker/booker'
@@ -16,81 +17,98 @@ require 'booker/booker'
16
17
  require 'booker/errors'
17
18
 
18
19
  # Models
19
- require 'booker/models/model'
20
+ require 'booker/model'
21
+
22
+ # V4 Models
23
+ require 'booker/v4/models/model'
20
24
 
21
25
  # Types
22
- require 'booker/models/type'
23
- require 'booker/models/country'
24
- require 'booker/models/status'
25
- require 'booker/models/source'
26
- require 'booker/models/business_type'
27
- require 'booker/models/category'
28
- require 'booker/models/sub_category'
29
- require 'booker/models/customer_record_type'
30
- require 'booker/models/gender'
31
- require 'booker/models/preferred_staff_gender'
32
- require 'booker/models/payment_method'
26
+ require 'booker/v4/models/type'
27
+ require 'booker/v4/models/country'
28
+ require 'booker/v4/models/status'
29
+ require 'booker/v4/models/source'
30
+ require 'booker/v4/models/business_type'
31
+ require 'booker/v4/models/category'
32
+ require 'booker/v4/models/sub_category'
33
+ require 'booker/v4/models/customer_record_type'
34
+ require 'booker/v4/models/gender'
35
+ require 'booker/v4/models/preferred_staff_gender'
36
+ require 'booker/v4/models/payment_method'
33
37
 
34
38
  # Addresses
35
- require 'booker/models/address'
36
- require 'booker/models/shipping_address'
39
+ require 'booker/v4/models/address'
40
+ require 'booker/v4/models/shipping_address'
37
41
 
38
42
  # Prices
39
- require 'booker/models/price'
40
- require 'booker/models/final_total'
41
- require 'booker/models/original_price'
42
- require 'booker/models/discount'
43
- require 'booker/models/receipt_display_price'
44
- require 'booker/models/tag_price'
45
- require 'booker/models/current_price'
43
+ require 'booker/v4/models/price'
44
+ require 'booker/v4/models/final_total'
45
+ require 'booker/v4/models/original_price'
46
+ require 'booker/v4/models/discount'
47
+ require 'booker/v4/models/receipt_display_price'
48
+ require 'booker/v4/models/tag_price'
49
+ require 'booker/v4/models/current_price'
46
50
 
47
51
  # Customers
48
- require 'booker/models/customer'
49
- require 'booker/models/customer_2'
52
+ require 'booker/v4/models/customer'
53
+ require 'booker/v4/models/customer_2'
50
54
 
51
55
  # Locations
52
- require 'booker/models/location'
53
- require 'booker/models/spa'
56
+ require 'booker/v4/models/location'
57
+ require 'booker/v4/models/spa'
54
58
 
55
59
  # Employees
56
- require 'booker/models/employee'
57
- require 'booker/models/teacher'
58
- require 'booker/models/teacher_2'
60
+ require 'booker/v4/models/employee'
61
+ require 'booker/v4/models/teacher'
62
+ require 'booker/v4/models/teacher_2'
59
63
 
60
64
  # Other Models
61
- require 'booker/models/time_zone'
62
- require 'booker/models/appointment'
63
- require 'booker/models/appointment_treatment'
64
- require 'booker/models/dynamic_price'
65
- require 'booker/models/room'
66
- require 'booker/models/treatment'
67
- require 'booker/models/spa_employee_availability_search_item'
68
- require 'booker/models/available_time'
69
- require 'booker/models/class_instance'
70
- require 'booker/models/online_booking_settings'
71
- require 'booker/models/user'
72
- require 'booker/models/location_day_schedule'
73
- require 'booker/models/itinerary_time_slots_list'
74
- require 'booker/models/itinerary_time_slot'
75
- require 'booker/models/treatment_time_slot'
76
- require 'booker/models/multi_service_availability_result'
77
- require 'booker/models/notification_settings'
78
- require 'booker/models/feature_settings'
65
+ require 'booker/v4/models/time_zone'
66
+ require 'booker/v4/models/appointment'
67
+ require 'booker/v4/models/appointment_treatment'
68
+ require 'booker/v4/models/dynamic_price'
69
+ require 'booker/v4/models/room'
70
+ require 'booker/v4/models/treatment'
71
+ require 'booker/v4/models/spa_employee_availability_search_item'
72
+ require 'booker/v4/models/available_time'
73
+ require 'booker/v4/models/class_instance'
74
+ require 'booker/v4/models/online_booking_settings'
75
+ require 'booker/v4/models/user'
76
+ require 'booker/v4/models/location_day_schedule'
77
+ require 'booker/v4/models/itinerary_time_slots_list'
78
+ require 'booker/v4/models/itinerary_time_slot'
79
+ require 'booker/v4/models/treatment_time_slot'
80
+ require 'booker/v4/models/multi_service_availability_result'
81
+ require 'booker/v4/models/notification_settings'
82
+ require 'booker/v4/models/feature_settings'
83
+
84
+ # V5 Models
85
+ require 'booker/v5/models/model'
86
+ require 'booker/v5/models/location_hour'
87
+ require 'booker/v5/models/availability'
88
+ require 'booker/v5/models/service'
89
+ require 'booker/v5/models/service_category'
90
+ require 'booker/v5/models/availability_result'
91
+
79
92
 
80
93
  # Base Client
81
94
  require 'booker/client'
82
95
 
83
- # Rest
84
- require 'booker/common_rest'
85
- require 'booker/business_rest'
86
- require 'booker/customer_rest'
96
+ # V4 Rest
97
+ require 'booker/v4/request_helper'
98
+ require 'booker/v4/common_rest'
99
+ require 'booker/v4/business_rest'
100
+ require 'booker/v4/customer_rest'
87
101
 
88
102
  # Token Store
89
103
  require 'booker/generic_token_store'
90
104
 
91
105
  # Client Subclasses
92
- require 'booker/business_client'
93
- require 'booker/customer_client'
106
+ require 'booker/v4/business_client'
107
+ require 'booker/v4/customer_client'
108
+ require 'booker/v4.1/availability'
109
+ require 'booker/v4.1/booking'
110
+ require 'booker/v4.1/merchant'
111
+ require 'booker/v5/availability'
94
112
 
95
113
  # Helpers
96
114
  require 'booker/helpers/logging_helper'