openactive 0.1.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (864) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +68 -0
  3. data/.rspec +2 -0
  4. data/.rubocop.yml +98 -0
  5. data/.yardopts +1 -0
  6. data/Gemfile +6 -0
  7. data/LICENSE +21 -0
  8. data/Makefile +11 -0
  9. data/README.md +35 -0
  10. data/Rakefile +6 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/lib/openactive/base_model.rb +122 -0
  14. data/lib/openactive/concerns/json_ld_serializable.rb +43 -0
  15. data/lib/openactive/concerns/type_checker.rb +65 -0
  16. data/lib/openactive/enums/available_channel_type.rb +14 -0
  17. data/lib/openactive/enums/broker_type.rb +11 -0
  18. data/lib/openactive/enums/facility_setting_type.rb +12 -0
  19. data/lib/openactive/enums/gender_restriction_type.rb +12 -0
  20. data/lib/openactive/enums/open_booking_flow_requirement.rb +14 -0
  21. data/lib/openactive/enums/order_creation_status.rb +12 -0
  22. data/lib/openactive/enums/order_item_status.rb +13 -0
  23. data/lib/openactive/enums/order_proposal_status.rb +12 -0
  24. data/lib/openactive/enums/payment_method.rb +10 -0
  25. data/lib/openactive/enums/required_status_type.rb +11 -0
  26. data/lib/openactive/enums/schema/action_status_type.rb +15 -0
  27. data/lib/openactive/enums/schema/boarding_policy_type.rb +13 -0
  28. data/lib/openactive/enums/schema/book_format_type.rb +15 -0
  29. data/lib/openactive/enums/schema/business_entity_type.rb +21 -0
  30. data/lib/openactive/enums/schema/business_function.rb +25 -0
  31. data/lib/openactive/enums/schema/contact_point_option.rb +13 -0
  32. data/lib/openactive/enums/schema/day_of_week.rb +21 -0
  33. data/lib/openactive/enums/schema/delivery_method.rb +26 -0
  34. data/lib/openactive/enums/schema/digital_document_permission_type.rb +14 -0
  35. data/lib/openactive/enums/schema/event_status_type.rb +15 -0
  36. data/lib/openactive/enums/schema/game_play_mode.rb +14 -0
  37. data/lib/openactive/enums/schema/game_server_status.rb +15 -0
  38. data/lib/openactive/enums/schema/gender_type.rb +13 -0
  39. data/lib/openactive/enums/schema/health_aspect_enumeration.rb +33 -0
  40. data/lib/openactive/enums/schema/item_availability.rb +20 -0
  41. data/lib/openactive/enums/schema/item_list_order_type.rb +14 -0
  42. data/lib/openactive/enums/schema/legal_force_status.rb +14 -0
  43. data/lib/openactive/enums/schema/legal_value_level.rb +15 -0
  44. data/lib/openactive/enums/schema/map_category_type.rb +15 -0
  45. data/lib/openactive/enums/schema/music_album_production_type.rb +20 -0
  46. data/lib/openactive/enums/schema/music_album_release_type.rb +15 -0
  47. data/lib/openactive/enums/schema/music_release_format_type.rb +18 -0
  48. data/lib/openactive/enums/schema/offer_item_condition.rb +15 -0
  49. data/lib/openactive/enums/schema/order_status.rb +19 -0
  50. data/lib/openactive/enums/schema/payment_method.rb +26 -0
  51. data/lib/openactive/enums/schema/payment_status_type.rb +16 -0
  52. data/lib/openactive/enums/schema/product_return_enumeration.rb +15 -0
  53. data/lib/openactive/enums/schema/qualitative_value.rb +11 -0
  54. data/lib/openactive/enums/schema/refund_type_enumeration.rb +14 -0
  55. data/lib/openactive/enums/schema/reservation_status_type.rb +15 -0
  56. data/lib/openactive/enums/schema/restricted_diet.rb +22 -0
  57. data/lib/openactive/enums/schema/return_fees_enumeration.rb +14 -0
  58. data/lib/openactive/enums/schema/rsvp_response_type.rb +14 -0
  59. data/lib/openactive/enums/schema/specialty.rb +11 -0
  60. data/lib/openactive/enums/schema/warranty_scope.rb +20 -0
  61. data/lib/openactive/enums/tax_mode.rb +10 -0
  62. data/lib/openactive/exceptions/invalid_argument_exception.rb +6 -0
  63. data/lib/openactive/files_index.json +815 -0
  64. data/lib/openactive/helpers/json_ld.rb +82 -0
  65. data/lib/openactive/json_ld_model.rb +33 -0
  66. data/lib/openactive/models/action.rb +22 -0
  67. data/lib/openactive/models/baby_changing.rb +17 -0
  68. data/lib/openactive/models/bar.rb +13 -0
  69. data/lib/openactive/models/barcode.rb +22 -0
  70. data/lib/openactive/models/booking_service.rb +31 -0
  71. data/lib/openactive/models/boolean_form_field_specification.rb +17 -0
  72. data/lib/openactive/models/brand.rb +46 -0
  73. data/lib/openactive/models/cafe.rb +13 -0
  74. data/lib/openactive/models/cancellation_not_permitted_error.rb +11 -0
  75. data/lib/openactive/models/changing_facilities.rb +17 -0
  76. data/lib/openactive/models/concept.rb +42 -0
  77. data/lib/openactive/models/concept_collection.rb +12 -0
  78. data/lib/openactive/models/concept_scheme.rb +37 -0
  79. data/lib/openactive/models/course.rb +57 -0
  80. data/lib/openactive/models/course_instance.rb +17 -0
  81. data/lib/openactive/models/creche.rb +17 -0
  82. data/lib/openactive/models/data_download.rb +37 -0
  83. data/lib/openactive/models/dataset.rb +100 -0
  84. data/lib/openactive/models/dropdown_form_field_specification.rb +17 -0
  85. data/lib/openactive/models/dynamic_payment.rb +11 -0
  86. data/lib/openactive/models/entry_point.rb +27 -0
  87. data/lib/openactive/models/event.rb +261 -0
  88. data/lib/openactive/models/event_series.rb +12 -0
  89. data/lib/openactive/models/facility_use.rb +139 -0
  90. data/lib/openactive/models/geo_coordinates.rb +24 -0
  91. data/lib/openactive/models/gone_error.rb +11 -0
  92. data/lib/openactive/models/headline_event.rb +17 -0
  93. data/lib/openactive/models/image_object.rb +22 -0
  94. data/lib/openactive/models/incomplete_attendee_details_error.rb +11 -0
  95. data/lib/openactive/models/incomplete_broker_details_error.rb +11 -0
  96. data/lib/openactive/models/incomplete_customer_details_error.rb +11 -0
  97. data/lib/openactive/models/incomplete_intake_form_error.rb +11 -0
  98. data/lib/openactive/models/incomplete_order_item_error.rb +11 -0
  99. data/lib/openactive/models/incomplete_payment_details_error.rb +11 -0
  100. data/lib/openactive/models/indicative_offer.rb +13 -0
  101. data/lib/openactive/models/individual_facility_use.rb +21 -0
  102. data/lib/openactive/models/invalid_apitoken_error.rb +11 -0
  103. data/lib/openactive/models/invalid_authorization_details_error.rb +11 -0
  104. data/lib/openactive/models/invalid_intake_form_error.rb +11 -0
  105. data/lib/openactive/models/invalid_payment_details_error.rb +11 -0
  106. data/lib/openactive/models/lease.rb +26 -0
  107. data/lib/openactive/models/location_feature_specification.rb +23 -0
  108. data/lib/openactive/models/lockers.rb +17 -0
  109. data/lib/openactive/models/method_not_allowed.rb +11 -0
  110. data/lib/openactive/models/no_apitoken_error.rb +11 -0
  111. data/lib/openactive/models/not_found_error.rb +11 -0
  112. data/lib/openactive/models/offer.rb +94 -0
  113. data/lib/openactive/models/offer_override.rb +12 -0
  114. data/lib/openactive/models/open_booking_error.rb +47 -0
  115. data/lib/openactive/models/opening_hours_specification.rb +30 -0
  116. data/lib/openactive/models/opportunity_capacity_is_reserved_by_lease_error.rb +11 -0
  117. data/lib/openactive/models/opportunity_has_insufficient_capacity_error.rb +11 -0
  118. data/lib/openactive/models/opportunity_is_full_error.rb +11 -0
  119. data/lib/openactive/models/opportunity_is_in_conflict_error.rb +11 -0
  120. data/lib/openactive/models/order.rb +91 -0
  121. data/lib/openactive/models/order_already_exists_error.rb +11 -0
  122. data/lib/openactive/models/order_creation_failed_error.rb +11 -0
  123. data/lib/openactive/models/order_item.rb +89 -0
  124. data/lib/openactive/models/order_proposal.rb +28 -0
  125. data/lib/openactive/models/order_quote.rb +33 -0
  126. data/lib/openactive/models/organization.rb +92 -0
  127. data/lib/openactive/models/paragraph_form_field_specification.rb +12 -0
  128. data/lib/openactive/models/parking.rb +17 -0
  129. data/lib/openactive/models/partial_schedule.rb +17 -0
  130. data/lib/openactive/models/patch_contains_excessive_properties.rb +11 -0
  131. data/lib/openactive/models/patch_not_allowed_on_property.rb +11 -0
  132. data/lib/openactive/models/payment.rb +41 -0
  133. data/lib/openactive/models/person.rb +108 -0
  134. data/lib/openactive/models/place.rb +82 -0
  135. data/lib/openactive/models/postal_address.rb +37 -0
  136. data/lib/openactive/models/price_specification.rb +23 -0
  137. data/lib/openactive/models/privacy_policy.rb +11 -0
  138. data/lib/openactive/models/property_value.rb +35 -0
  139. data/lib/openactive/models/property_value_specification.rb +27 -0
  140. data/lib/openactive/models/quantitative_value.rb +24 -0
  141. data/lib/openactive/models/reserve_action.rb +12 -0
  142. data/lib/openactive/models/schedule.rb +100 -0
  143. data/lib/openactive/models/scheduled_session.rb +28 -0
  144. data/lib/openactive/models/schema/3dmodel.rb +13 -0
  145. data/lib/openactive/models/schema/about_page.rb +13 -0
  146. data/lib/openactive/models/schema/accept_action.rb +13 -0
  147. data/lib/openactive/models/schema/accommodation.rb +71 -0
  148. data/lib/openactive/models/schema/accounting_service.rb +13 -0
  149. data/lib/openactive/models/schema/achieve_action.rb +13 -0
  150. data/lib/openactive/models/schema/action.rb +77 -0
  151. data/lib/openactive/models/schema/action_access_specification.rb +61 -0
  152. data/lib/openactive/models/schema/activate_action.rb +13 -0
  153. data/lib/openactive/models/schema/add_action.rb +13 -0
  154. data/lib/openactive/models/schema/administrative_area.rb +13 -0
  155. data/lib/openactive/models/schema/adult_entertainment.rb +13 -0
  156. data/lib/openactive/models/schema/advertiser_content_article.rb +13 -0
  157. data/lib/openactive/models/schema/aggregate_offer.rb +38 -0
  158. data/lib/openactive/models/schema/aggregate_rating.rb +30 -0
  159. data/lib/openactive/models/schema/agree_action.rb +13 -0
  160. data/lib/openactive/models/schema/airline.rb +24 -0
  161. data/lib/openactive/models/schema/airport.rb +23 -0
  162. data/lib/openactive/models/schema/alignment_object.rb +38 -0
  163. data/lib/openactive/models/schema/allocate_action.rb +13 -0
  164. data/lib/openactive/models/schema/amradio_channel.rb +13 -0
  165. data/lib/openactive/models/schema/amusement_park.rb +13 -0
  166. data/lib/openactive/models/schema/analysis_news_article.rb +13 -0
  167. data/lib/openactive/models/schema/animal_shelter.rb +13 -0
  168. data/lib/openactive/models/schema/answer.rb +13 -0
  169. data/lib/openactive/models/schema/apartment.rb +25 -0
  170. data/lib/openactive/models/schema/apartment_complex.rb +13 -0
  171. data/lib/openactive/models/schema/apireference.rb +38 -0
  172. data/lib/openactive/models/schema/append_action.rb +13 -0
  173. data/lib/openactive/models/schema/apply_action.rb +13 -0
  174. data/lib/openactive/models/schema/aquarium.rb +13 -0
  175. data/lib/openactive/models/schema/archive_component.rb +25 -0
  176. data/lib/openactive/models/schema/archive_organization.rb +18 -0
  177. data/lib/openactive/models/schema/arrive_action.rb +13 -0
  178. data/lib/openactive/models/schema/art_gallery.rb +13 -0
  179. data/lib/openactive/models/schema/article.rb +60 -0
  180. data/lib/openactive/models/schema/ask_action.rb +18 -0
  181. data/lib/openactive/models/schema/ask_public_news_article.rb +13 -0
  182. data/lib/openactive/models/schema/assess_action.rb +13 -0
  183. data/lib/openactive/models/schema/assign_action.rb +13 -0
  184. data/lib/openactive/models/schema/attorney.rb +13 -0
  185. data/lib/openactive/models/schema/audience.rb +23 -0
  186. data/lib/openactive/models/schema/audio_object.rb +24 -0
  187. data/lib/openactive/models/schema/authorize_action.rb +21 -0
  188. data/lib/openactive/models/schema/auto_body_shop.rb +13 -0
  189. data/lib/openactive/models/schema/auto_dealer.rb +13 -0
  190. data/lib/openactive/models/schema/auto_parts_store.rb +13 -0
  191. data/lib/openactive/models/schema/auto_rental.rb +13 -0
  192. data/lib/openactive/models/schema/auto_repair.rb +13 -0
  193. data/lib/openactive/models/schema/auto_wash.rb +13 -0
  194. data/lib/openactive/models/schema/automated_teller.rb +13 -0
  195. data/lib/openactive/models/schema/automotive_business.rb +13 -0
  196. data/lib/openactive/models/schema/background_news_article.rb +13 -0
  197. data/lib/openactive/models/schema/bakery.rb +13 -0
  198. data/lib/openactive/models/schema/bank_account.rb +29 -0
  199. data/lib/openactive/models/schema/bank_or_credit_union.rb +13 -0
  200. data/lib/openactive/models/schema/bar_or_pub.rb +13 -0
  201. data/lib/openactive/models/schema/barcode.rb +13 -0
  202. data/lib/openactive/models/schema/beach.rb +13 -0
  203. data/lib/openactive/models/schema/beauty_salon.rb +13 -0
  204. data/lib/openactive/models/schema/bed_and_breakfast.rb +13 -0
  205. data/lib/openactive/models/schema/bed_details.rb +25 -0
  206. data/lib/openactive/models/schema/bed_type.rb +13 -0
  207. data/lib/openactive/models/schema/befriend_action.rb +13 -0
  208. data/lib/openactive/models/schema/bike_store.rb +13 -0
  209. data/lib/openactive/models/schema/blog.rb +28 -0
  210. data/lib/openactive/models/schema/blog_posting.rb +13 -0
  211. data/lib/openactive/models/schema/body_of_water.rb +13 -0
  212. data/lib/openactive/models/schema/book.rb +40 -0
  213. data/lib/openactive/models/schema/book_series.rb +13 -0
  214. data/lib/openactive/models/schema/book_store.rb +13 -0
  215. data/lib/openactive/models/schema/bookmark_action.rb +13 -0
  216. data/lib/openactive/models/schema/borrow_action.rb +19 -0
  217. data/lib/openactive/models/schema/bowling_alley.rb +13 -0
  218. data/lib/openactive/models/schema/brand.rb +34 -0
  219. data/lib/openactive/models/schema/breadcrumb_list.rb +13 -0
  220. data/lib/openactive/models/schema/brewery.rb +13 -0
  221. data/lib/openactive/models/schema/bridge.rb +13 -0
  222. data/lib/openactive/models/schema/broadcast_channel.rb +45 -0
  223. data/lib/openactive/models/schema/broadcast_event.rb +35 -0
  224. data/lib/openactive/models/schema/broadcast_frequency_specification.rb +32 -0
  225. data/lib/openactive/models/schema/broadcast_service.rb +64 -0
  226. data/lib/openactive/models/schema/brokerage_account.rb +13 -0
  227. data/lib/openactive/models/schema/buddhist_temple.rb +13 -0
  228. data/lib/openactive/models/schema/bus_reservation.rb +13 -0
  229. data/lib/openactive/models/schema/bus_station.rb +13 -0
  230. data/lib/openactive/models/schema/bus_stop.rb +13 -0
  231. data/lib/openactive/models/schema/bus_trip.rb +35 -0
  232. data/lib/openactive/models/schema/business_audience.rb +28 -0
  233. data/lib/openactive/models/schema/business_event.rb +13 -0
  234. data/lib/openactive/models/schema/buy_action.rb +30 -0
  235. data/lib/openactive/models/schema/cable_or_satellite_service.rb +13 -0
  236. data/lib/openactive/models/schema/cafe_or_coffee_shop.rb +13 -0
  237. data/lib/openactive/models/schema/campground.rb +13 -0
  238. data/lib/openactive/models/schema/camping_pitch.rb +13 -0
  239. data/lib/openactive/models/schema/canal.rb +13 -0
  240. data/lib/openactive/models/schema/cancel_action.rb +13 -0
  241. data/lib/openactive/models/schema/car.rb +13 -0
  242. data/lib/openactive/models/schema/casino.rb +13 -0
  243. data/lib/openactive/models/schema/category_code.rb +24 -0
  244. data/lib/openactive/models/schema/category_code_set.rb +18 -0
  245. data/lib/openactive/models/schema/catholic_church.rb +13 -0
  246. data/lib/openactive/models/schema/cemetery.rb +13 -0
  247. data/lib/openactive/models/schema/check_action.rb +13 -0
  248. data/lib/openactive/models/schema/check_in_action.rb +13 -0
  249. data/lib/openactive/models/schema/check_out_action.rb +13 -0
  250. data/lib/openactive/models/schema/checkout_page.rb +13 -0
  251. data/lib/openactive/models/schema/child_care.rb +13 -0
  252. data/lib/openactive/models/schema/childrens_event.rb +13 -0
  253. data/lib/openactive/models/schema/choose_action.rb +25 -0
  254. data/lib/openactive/models/schema/church.rb +13 -0
  255. data/lib/openactive/models/schema/city.rb +13 -0
  256. data/lib/openactive/models/schema/city_hall.rb +13 -0
  257. data/lib/openactive/models/schema/civic_structure.rb +18 -0
  258. data/lib/openactive/models/schema/claim.rb +23 -0
  259. data/lib/openactive/models/schema/claim_review.rb +18 -0
  260. data/lib/openactive/models/schema/clip.rb +73 -0
  261. data/lib/openactive/models/schema/clothing_store.rb +13 -0
  262. data/lib/openactive/models/schema/code.rb +13 -0
  263. data/lib/openactive/models/schema/collection_page.rb +13 -0
  264. data/lib/openactive/models/schema/college_or_university.rb +13 -0
  265. data/lib/openactive/models/schema/comedy_club.rb +13 -0
  266. data/lib/openactive/models/schema/comedy_event.rb +13 -0
  267. data/lib/openactive/models/schema/comment.rb +30 -0
  268. data/lib/openactive/models/schema/comment_action.rb +18 -0
  269. data/lib/openactive/models/schema/communicate_action.rb +37 -0
  270. data/lib/openactive/models/schema/complete_data_feed.rb +13 -0
  271. data/lib/openactive/models/schema/compound_price_specification.rb +18 -0
  272. data/lib/openactive/models/schema/computer_language.rb +13 -0
  273. data/lib/openactive/models/schema/computer_store.rb +13 -0
  274. data/lib/openactive/models/schema/confirm_action.rb +13 -0
  275. data/lib/openactive/models/schema/consortium.rb +13 -0
  276. data/lib/openactive/models/schema/consume_action.rb +23 -0
  277. data/lib/openactive/models/schema/contact_page.rb +13 -0
  278. data/lib/openactive/models/schema/contact_point.rb +71 -0
  279. data/lib/openactive/models/schema/continent.rb +13 -0
  280. data/lib/openactive/models/schema/control_action.rb +13 -0
  281. data/lib/openactive/models/schema/convenience_store.rb +13 -0
  282. data/lib/openactive/models/schema/conversation.rb +13 -0
  283. data/lib/openactive/models/schema/cook_action.rb +29 -0
  284. data/lib/openactive/models/schema/corporation.rb +18 -0
  285. data/lib/openactive/models/schema/correction_comment.rb +13 -0
  286. data/lib/openactive/models/schema/country.rb +13 -0
  287. data/lib/openactive/models/schema/course.rb +44 -0
  288. data/lib/openactive/models/schema/course_instance.rb +29 -0
  289. data/lib/openactive/models/schema/courthouse.rb +13 -0
  290. data/lib/openactive/models/schema/create_action.rb +13 -0
  291. data/lib/openactive/models/schema/creative_work.rb +538 -0
  292. data/lib/openactive/models/schema/creative_work_season.rb +75 -0
  293. data/lib/openactive/models/schema/creative_work_series.rb +32 -0
  294. data/lib/openactive/models/schema/credit_card.rb +20 -0
  295. data/lib/openactive/models/schema/crematorium.rb +13 -0
  296. data/lib/openactive/models/schema/critic_review.rb +13 -0
  297. data/lib/openactive/models/schema/css_selector_type.rb +13 -0
  298. data/lib/openactive/models/schema/currency_conversion_service.rb +13 -0
  299. data/lib/openactive/models/schema/dance_event.rb +13 -0
  300. data/lib/openactive/models/schema/dance_group.rb +13 -0
  301. data/lib/openactive/models/schema/data_catalog.rb +24 -0
  302. data/lib/openactive/models/schema/data_download.rb +19 -0
  303. data/lib/openactive/models/schema/data_feed.rb +20 -0
  304. data/lib/openactive/models/schema/data_feed_item.rb +39 -0
  305. data/lib/openactive/models/schema/data_type.rb +13 -0
  306. data/lib/openactive/models/schema/dataset.rb +56 -0
  307. data/lib/openactive/models/schema/dated_money_specification.rb +39 -0
  308. data/lib/openactive/models/schema/day_spa.rb +13 -0
  309. data/lib/openactive/models/schema/deactivate_action.rb +13 -0
  310. data/lib/openactive/models/schema/defence_establishment.rb +13 -0
  311. data/lib/openactive/models/schema/defined_term.rb +24 -0
  312. data/lib/openactive/models/schema/defined_term_set.rb +18 -0
  313. data/lib/openactive/models/schema/delete_action.rb +13 -0
  314. data/lib/openactive/models/schema/delivery_charge_specification.rb +41 -0
  315. data/lib/openactive/models/schema/delivery_event.rb +36 -0
  316. data/lib/openactive/models/schema/demand.rb +204 -0
  317. data/lib/openactive/models/schema/dentist.rb +13 -0
  318. data/lib/openactive/models/schema/depart_action.rb +13 -0
  319. data/lib/openactive/models/schema/department_store.rb +13 -0
  320. data/lib/openactive/models/schema/deposit_account.rb +13 -0
  321. data/lib/openactive/models/schema/digital_document.rb +18 -0
  322. data/lib/openactive/models/schema/digital_document_permission.rb +27 -0
  323. data/lib/openactive/models/schema/disagree_action.rb +13 -0
  324. data/lib/openactive/models/schema/discover_action.rb +13 -0
  325. data/lib/openactive/models/schema/discussion_forum_posting.rb +13 -0
  326. data/lib/openactive/models/schema/dislike_action.rb +13 -0
  327. data/lib/openactive/models/schema/distance.rb +13 -0
  328. data/lib/openactive/models/schema/distillery.rb +13 -0
  329. data/lib/openactive/models/schema/donate_action.rb +21 -0
  330. data/lib/openactive/models/schema/download_action.rb +13 -0
  331. data/lib/openactive/models/schema/draw_action.rb +13 -0
  332. data/lib/openactive/models/schema/drawing.rb +13 -0
  333. data/lib/openactive/models/schema/drink_action.rb +13 -0
  334. data/lib/openactive/models/schema/drive_wheel_configuration_value.rb +13 -0
  335. data/lib/openactive/models/schema/dry_cleaning_or_laundry.rb +13 -0
  336. data/lib/openactive/models/schema/duration.rb +13 -0
  337. data/lib/openactive/models/schema/eat_action.rb +13 -0
  338. data/lib/openactive/models/schema/education_event.rb +13 -0
  339. data/lib/openactive/models/schema/educational_audience.rb +18 -0
  340. data/lib/openactive/models/schema/educational_occupational_credential.rb +39 -0
  341. data/lib/openactive/models/schema/educational_occupational_program.rb +39 -0
  342. data/lib/openactive/models/schema/educational_organization.rb +18 -0
  343. data/lib/openactive/models/schema/electrician.rb +13 -0
  344. data/lib/openactive/models/schema/electronics_store.rb +13 -0
  345. data/lib/openactive/models/schema/elementary_school.rb +13 -0
  346. data/lib/openactive/models/schema/email_message.rb +13 -0
  347. data/lib/openactive/models/schema/embassy.rb +13 -0
  348. data/lib/openactive/models/schema/emergency_service.rb +13 -0
  349. data/lib/openactive/models/schema/employee_role.rb +26 -0
  350. data/lib/openactive/models/schema/employer_aggregate_rating.rb +13 -0
  351. data/lib/openactive/models/schema/employer_review.rb +13 -0
  352. data/lib/openactive/models/schema/employment_agency.rb +13 -0
  353. data/lib/openactive/models/schema/endorse_action.rb +19 -0
  354. data/lib/openactive/models/schema/endorsement_rating.rb +13 -0
  355. data/lib/openactive/models/schema/energy.rb +13 -0
  356. data/lib/openactive/models/schema/engine_specification.rb +21 -0
  357. data/lib/openactive/models/schema/entertainment_business.rb +13 -0
  358. data/lib/openactive/models/schema/entry_point.rb +49 -0
  359. data/lib/openactive/models/schema/enumeration.rb +13 -0
  360. data/lib/openactive/models/schema/episode.rb +66 -0
  361. data/lib/openactive/models/schema/event.rb +213 -0
  362. data/lib/openactive/models/schema/event_reservation.rb +13 -0
  363. data/lib/openactive/models/schema/event_series.rb +13 -0
  364. data/lib/openactive/models/schema/event_venue.rb +13 -0
  365. data/lib/openactive/models/schema/exchange_rate_specification.rb +25 -0
  366. data/lib/openactive/models/schema/exercise_action.rb +58 -0
  367. data/lib/openactive/models/schema/exercise_gym.rb +13 -0
  368. data/lib/openactive/models/schema/exhibition_event.rb +13 -0
  369. data/lib/openactive/models/schema/faqpage.rb +13 -0
  370. data/lib/openactive/models/schema/fast_food_restaurant.rb +13 -0
  371. data/lib/openactive/models/schema/festival.rb +13 -0
  372. data/lib/openactive/models/schema/film_action.rb +13 -0
  373. data/lib/openactive/models/schema/financial_product.rb +33 -0
  374. data/lib/openactive/models/schema/financial_service.rb +19 -0
  375. data/lib/openactive/models/schema/find_action.rb +13 -0
  376. data/lib/openactive/models/schema/fire_station.rb +13 -0
  377. data/lib/openactive/models/schema/flight.rb +95 -0
  378. data/lib/openactive/models/schema/flight_reservation.rb +35 -0
  379. data/lib/openactive/models/schema/float.rb +13 -0
  380. data/lib/openactive/models/schema/florist.rb +13 -0
  381. data/lib/openactive/models/schema/fmradio_channel.rb +13 -0
  382. data/lib/openactive/models/schema/follow_action.rb +19 -0
  383. data/lib/openactive/models/schema/food_establishment.rb +45 -0
  384. data/lib/openactive/models/schema/food_establishment_reservation.rb +34 -0
  385. data/lib/openactive/models/schema/food_event.rb +13 -0
  386. data/lib/openactive/models/schema/food_service.rb +13 -0
  387. data/lib/openactive/models/schema/funding_agency.rb +13 -0
  388. data/lib/openactive/models/schema/funding_scheme.rb +13 -0
  389. data/lib/openactive/models/schema/furniture_store.rb +13 -0
  390. data/lib/openactive/models/schema/game.rb +40 -0
  391. data/lib/openactive/models/schema/game_server.rb +30 -0
  392. data/lib/openactive/models/schema/garden_store.rb +13 -0
  393. data/lib/openactive/models/schema/gas_station.rb +13 -0
  394. data/lib/openactive/models/schema/gated_residence_community.rb +13 -0
  395. data/lib/openactive/models/schema/general_contractor.rb +13 -0
  396. data/lib/openactive/models/schema/geo_circle.rb +26 -0
  397. data/lib/openactive/models/schema/geo_coordinates.rb +51 -0
  398. data/lib/openactive/models/schema/geo_shape.rb +57 -0
  399. data/lib/openactive/models/schema/geospatial_geometry.rb +13 -0
  400. data/lib/openactive/models/schema/give_action.rb +21 -0
  401. data/lib/openactive/models/schema/golf_course.rb +13 -0
  402. data/lib/openactive/models/schema/government_building.rb +13 -0
  403. data/lib/openactive/models/schema/government_office.rb +13 -0
  404. data/lib/openactive/models/schema/government_organization.rb +13 -0
  405. data/lib/openactive/models/schema/government_permit.rb +13 -0
  406. data/lib/openactive/models/schema/government_service.rb +18 -0
  407. data/lib/openactive/models/schema/grant.rb +18 -0
  408. data/lib/openactive/models/schema/grocery_store.rb +13 -0
  409. data/lib/openactive/models/schema/hair_salon.rb +13 -0
  410. data/lib/openactive/models/schema/hardware_store.rb +13 -0
  411. data/lib/openactive/models/schema/health_and_beauty_business.rb +13 -0
  412. data/lib/openactive/models/schema/health_club.rb +13 -0
  413. data/lib/openactive/models/schema/health_insurance_plan.rb +54 -0
  414. data/lib/openactive/models/schema/health_plan_cost_sharing_specification.rb +39 -0
  415. data/lib/openactive/models/schema/health_plan_formulary.rb +30 -0
  416. data/lib/openactive/models/schema/health_plan_network.rb +29 -0
  417. data/lib/openactive/models/schema/health_topic_content.rb +19 -0
  418. data/lib/openactive/models/schema/high_school.rb +13 -0
  419. data/lib/openactive/models/schema/hindu_temple.rb +13 -0
  420. data/lib/openactive/models/schema/hobby_shop.rb +13 -0
  421. data/lib/openactive/models/schema/home_and_construction_business.rb +13 -0
  422. data/lib/openactive/models/schema/home_goods_store.rb +13 -0
  423. data/lib/openactive/models/schema/hospital.rb +13 -0
  424. data/lib/openactive/models/schema/hostel.rb +13 -0
  425. data/lib/openactive/models/schema/hotel.rb +13 -0
  426. data/lib/openactive/models/schema/hotel_room.rb +25 -0
  427. data/lib/openactive/models/schema/house.rb +20 -0
  428. data/lib/openactive/models/schema/house_painter.rb +13 -0
  429. data/lib/openactive/models/schema/how_to.rb +70 -0
  430. data/lib/openactive/models/schema/how_to_direction.rb +61 -0
  431. data/lib/openactive/models/schema/how_to_item.rb +21 -0
  432. data/lib/openactive/models/schema/how_to_section.rb +20 -0
  433. data/lib/openactive/models/schema/how_to_step.rb +13 -0
  434. data/lib/openactive/models/schema/how_to_supply.rb +19 -0
  435. data/lib/openactive/models/schema/how_to_tip.rb +13 -0
  436. data/lib/openactive/models/schema/how_to_tool.rb +13 -0
  437. data/lib/openactive/models/schema/hvacbusiness.rb +13 -0
  438. data/lib/openactive/models/schema/ice_cream_shop.rb +13 -0
  439. data/lib/openactive/models/schema/ignore_action.rb +13 -0
  440. data/lib/openactive/models/schema/image_gallery.rb +13 -0
  441. data/lib/openactive/models/schema/image_object.rb +36 -0
  442. data/lib/openactive/models/schema/individual_product.rb +18 -0
  443. data/lib/openactive/models/schema/inform_action.rb +18 -0
  444. data/lib/openactive/models/schema/insert_action.rb +18 -0
  445. data/lib/openactive/models/schema/install_action.rb +13 -0
  446. data/lib/openactive/models/schema/insurance_agency.rb +13 -0
  447. data/lib/openactive/models/schema/intangible.rb +13 -0
  448. data/lib/openactive/models/schema/integer.rb +13 -0
  449. data/lib/openactive/models/schema/interact_action.rb +13 -0
  450. data/lib/openactive/models/schema/interaction_counter.rb +30 -0
  451. data/lib/openactive/models/schema/internet_cafe.rb +13 -0
  452. data/lib/openactive/models/schema/investment_fund.rb +13 -0
  453. data/lib/openactive/models/schema/investment_or_deposit.rb +20 -0
  454. data/lib/openactive/models/schema/invite_action.rb +18 -0
  455. data/lib/openactive/models/schema/invoice.rb +107 -0
  456. data/lib/openactive/models/schema/item_list.rb +33 -0
  457. data/lib/openactive/models/schema/item_page.rb +13 -0
  458. data/lib/openactive/models/schema/jewelry_store.rb +13 -0
  459. data/lib/openactive/models/schema/job_posting.rb +175 -0
  460. data/lib/openactive/models/schema/join_action.rb +18 -0
  461. data/lib/openactive/models/schema/lake_body_of_water.rb +13 -0
  462. data/lib/openactive/models/schema/landform.rb +13 -0
  463. data/lib/openactive/models/schema/landmarks_or_historical_buildings.rb +13 -0
  464. data/lib/openactive/models/schema/language.rb +13 -0
  465. data/lib/openactive/models/schema/leave_action.rb +18 -0
  466. data/lib/openactive/models/schema/legal_service.rb +13 -0
  467. data/lib/openactive/models/schema/legislation.rb +81 -0
  468. data/lib/openactive/models/schema/legislation_object.rb +19 -0
  469. data/lib/openactive/models/schema/legislative_building.rb +13 -0
  470. data/lib/openactive/models/schema/lend_action.rb +18 -0
  471. data/lib/openactive/models/schema/library.rb +13 -0
  472. data/lib/openactive/models/schema/library_system.rb +13 -0
  473. data/lib/openactive/models/schema/like_action.rb +13 -0
  474. data/lib/openactive/models/schema/link_role.rb +18 -0
  475. data/lib/openactive/models/schema/liquor_store.rb +13 -0
  476. data/lib/openactive/models/schema/list_item.rb +35 -0
  477. data/lib/openactive/models/schema/listen_action.rb +13 -0
  478. data/lib/openactive/models/schema/literary_event.rb +13 -0
  479. data/lib/openactive/models/schema/live_blog_posting.rb +30 -0
  480. data/lib/openactive/models/schema/loan_or_credit.rb +65 -0
  481. data/lib/openactive/models/schema/local_business.rb +38 -0
  482. data/lib/openactive/models/schema/location_feature_specification.rb +32 -0
  483. data/lib/openactive/models/schema/locker_delivery.rb +13 -0
  484. data/lib/openactive/models/schema/locksmith.rb +13 -0
  485. data/lib/openactive/models/schema/lodging_business.rb +62 -0
  486. data/lib/openactive/models/schema/lodging_reservation.rb +53 -0
  487. data/lib/openactive/models/schema/lose_action.rb +18 -0
  488. data/lib/openactive/models/schema/manuscript.rb +13 -0
  489. data/lib/openactive/models/schema/map.rb +19 -0
  490. data/lib/openactive/models/schema/marry_action.rb +13 -0
  491. data/lib/openactive/models/schema/mass.rb +13 -0
  492. data/lib/openactive/models/schema/media_object.rb +109 -0
  493. data/lib/openactive/models/schema/media_subscription.rb +23 -0
  494. data/lib/openactive/models/schema/medical_organization.rb +24 -0
  495. data/lib/openactive/models/schema/meeting_room.rb +13 -0
  496. data/lib/openactive/models/schema/mens_clothing_store.rb +13 -0
  497. data/lib/openactive/models/schema/menu.rb +23 -0
  498. data/lib/openactive/models/schema/menu_item.rb +35 -0
  499. data/lib/openactive/models/schema/menu_section.rb +23 -0
  500. data/lib/openactive/models/schema/message.rb +74 -0
  501. data/lib/openactive/models/schema/middle_school.rb +13 -0
  502. data/lib/openactive/models/schema/mobile_application.rb +18 -0
  503. data/lib/openactive/models/schema/mobile_phone_store.rb +13 -0
  504. data/lib/openactive/models/schema/monetary_amount.rb +53 -0
  505. data/lib/openactive/models/schema/monetary_amount_distribution.rb +18 -0
  506. data/lib/openactive/models/schema/monetary_grant.rb +13 -0
  507. data/lib/openactive/models/schema/money_transfer.rb +19 -0
  508. data/lib/openactive/models/schema/mortgage_loan.rb +24 -0
  509. data/lib/openactive/models/schema/mosque.rb +13 -0
  510. data/lib/openactive/models/schema/motel.rb +13 -0
  511. data/lib/openactive/models/schema/motorcycle_dealer.rb +13 -0
  512. data/lib/openactive/models/schema/motorcycle_repair.rb +13 -0
  513. data/lib/openactive/models/schema/mountain.rb +13 -0
  514. data/lib/openactive/models/schema/move_action.rb +23 -0
  515. data/lib/openactive/models/schema/movie.rb +66 -0
  516. data/lib/openactive/models/schema/movie_clip.rb +13 -0
  517. data/lib/openactive/models/schema/movie_rental_store.rb +13 -0
  518. data/lib/openactive/models/schema/movie_series.rb +49 -0
  519. data/lib/openactive/models/schema/movie_theater.rb +19 -0
  520. data/lib/openactive/models/schema/moving_company.rb +13 -0
  521. data/lib/openactive/models/schema/museum.rb +13 -0
  522. data/lib/openactive/models/schema/music_album.rb +36 -0
  523. data/lib/openactive/models/schema/music_composition.rb +64 -0
  524. data/lib/openactive/models/schema/music_event.rb +13 -0
  525. data/lib/openactive/models/schema/music_group.rb +45 -0
  526. data/lib/openactive/models/schema/music_playlist.rb +30 -0
  527. data/lib/openactive/models/schema/music_recording.rb +45 -0
  528. data/lib/openactive/models/schema/music_release.rb +46 -0
  529. data/lib/openactive/models/schema/music_store.rb +13 -0
  530. data/lib/openactive/models/schema/music_venue.rb +13 -0
  531. data/lib/openactive/models/schema/music_video_object.rb +13 -0
  532. data/lib/openactive/models/schema/nail_salon.rb +13 -0
  533. data/lib/openactive/models/schema/news_article.rb +38 -0
  534. data/lib/openactive/models/schema/news_media_organization.rb +81 -0
  535. data/lib/openactive/models/schema/ngo.rb +13 -0
  536. data/lib/openactive/models/schema/night_club.rb +13 -0
  537. data/lib/openactive/models/schema/notary.rb +13 -0
  538. data/lib/openactive/models/schema/note_digital_document.rb +13 -0
  539. data/lib/openactive/models/schema/nutrition_information.rb +73 -0
  540. data/lib/openactive/models/schema/observation.rb +40 -0
  541. data/lib/openactive/models/schema/occupation.rb +60 -0
  542. data/lib/openactive/models/schema/ocean_body_of_water.rb +13 -0
  543. data/lib/openactive/models/schema/offer.rb +254 -0
  544. data/lib/openactive/models/schema/offer_catalog.rb +13 -0
  545. data/lib/openactive/models/schema/offer_for_lease.rb +13 -0
  546. data/lib/openactive/models/schema/offer_for_purchase.rb +13 -0
  547. data/lib/openactive/models/schema/office_equipment_store.rb +13 -0
  548. data/lib/openactive/models/schema/on_demand_event.rb +13 -0
  549. data/lib/openactive/models/schema/opening_hours_specification.rb +45 -0
  550. data/lib/openactive/models/schema/opinion_news_article.rb +13 -0
  551. data/lib/openactive/models/schema/order.rb +139 -0
  552. data/lib/openactive/models/schema/order_action.rb +19 -0
  553. data/lib/openactive/models/schema/order_item.rb +42 -0
  554. data/lib/openactive/models/schema/organization.rb +349 -0
  555. data/lib/openactive/models/schema/organization_role.rb +19 -0
  556. data/lib/openactive/models/schema/organize_action.rb +13 -0
  557. data/lib/openactive/models/schema/outlet_store.rb +13 -0
  558. data/lib/openactive/models/schema/ownership_info.rb +37 -0
  559. data/lib/openactive/models/schema/paint_action.rb +13 -0
  560. data/lib/openactive/models/schema/painting.rb +13 -0
  561. data/lib/openactive/models/schema/parcel_delivery.rb +79 -0
  562. data/lib/openactive/models/schema/parcel_service.rb +13 -0
  563. data/lib/openactive/models/schema/parent_audience.rb +25 -0
  564. data/lib/openactive/models/schema/park.rb +13 -0
  565. data/lib/openactive/models/schema/parking_facility.rb +13 -0
  566. data/lib/openactive/models/schema/pawn_shop.rb +13 -0
  567. data/lib/openactive/models/schema/pay_action.rb +21 -0
  568. data/lib/openactive/models/schema/payment_card.rb +31 -0
  569. data/lib/openactive/models/schema/payment_charge_specification.rb +25 -0
  570. data/lib/openactive/models/schema/payment_service.rb +13 -0
  571. data/lib/openactive/models/schema/people_audience.rb +47 -0
  572. data/lib/openactive/models/schema/perform_action.rb +18 -0
  573. data/lib/openactive/models/schema/performance_role.rb +18 -0
  574. data/lib/openactive/models/schema/performing_arts_theater.rb +13 -0
  575. data/lib/openactive/models/schema/performing_group.rb +13 -0
  576. data/lib/openactive/models/schema/periodical.rb +13 -0
  577. data/lib/openactive/models/schema/permit.rb +52 -0
  578. data/lib/openactive/models/schema/person.rb +339 -0
  579. data/lib/openactive/models/schema/pet_store.rb +13 -0
  580. data/lib/openactive/models/schema/pharmacy.rb +13 -0
  581. data/lib/openactive/models/schema/photograph.rb +13 -0
  582. data/lib/openactive/models/schema/photograph_action.rb +13 -0
  583. data/lib/openactive/models/schema/physician.rb +13 -0
  584. data/lib/openactive/models/schema/place.rb +247 -0
  585. data/lib/openactive/models/schema/place_of_worship.rb +13 -0
  586. data/lib/openactive/models/schema/plan_action.rb +19 -0
  587. data/lib/openactive/models/schema/play.rb +13 -0
  588. data/lib/openactive/models/schema/play_action.rb +23 -0
  589. data/lib/openactive/models/schema/playground.rb +13 -0
  590. data/lib/openactive/models/schema/plumber.rb +13 -0
  591. data/lib/openactive/models/schema/podcast_episode.rb +13 -0
  592. data/lib/openactive/models/schema/podcast_season.rb +13 -0
  593. data/lib/openactive/models/schema/podcast_series.rb +18 -0
  594. data/lib/openactive/models/schema/police_station.rb +13 -0
  595. data/lib/openactive/models/schema/pond.rb +13 -0
  596. data/lib/openactive/models/schema/post_office.rb +13 -0
  597. data/lib/openactive/models/schema/postal_address.rb +44 -0
  598. data/lib/openactive/models/schema/poster.rb +13 -0
  599. data/lib/openactive/models/schema/pre_order_action.rb +13 -0
  600. data/lib/openactive/models/schema/prepend_action.rb +13 -0
  601. data/lib/openactive/models/schema/preschool.rb +13 -0
  602. data/lib/openactive/models/schema/presentation_digital_document.rb +13 -0
  603. data/lib/openactive/models/schema/price_specification.rb +67 -0
  604. data/lib/openactive/models/schema/product.rb +218 -0
  605. data/lib/openactive/models/schema/product_model.rb +28 -0
  606. data/lib/openactive/models/schema/product_return_policy.rb +48 -0
  607. data/lib/openactive/models/schema/professional_service.rb +13 -0
  608. data/lib/openactive/models/schema/profile_page.rb +13 -0
  609. data/lib/openactive/models/schema/program_membership.rb +47 -0
  610. data/lib/openactive/models/schema/project.rb +13 -0
  611. data/lib/openactive/models/schema/property_value.rb +67 -0
  612. data/lib/openactive/models/schema/property_value_specification.rb +77 -0
  613. data/lib/openactive/models/schema/public_swimming_pool.rb +13 -0
  614. data/lib/openactive/models/schema/public_toilet.rb +13 -0
  615. data/lib/openactive/models/schema/publication_event.rb +30 -0
  616. data/lib/openactive/models/schema/publication_issue.rb +39 -0
  617. data/lib/openactive/models/schema/publication_volume.rb +39 -0
  618. data/lib/openactive/models/schema/qapage.rb +13 -0
  619. data/lib/openactive/models/schema/quantitative_value.rb +60 -0
  620. data/lib/openactive/models/schema/quantitative_value_distribution.rb +49 -0
  621. data/lib/openactive/models/schema/quantity.rb +13 -0
  622. data/lib/openactive/models/schema/question.rb +43 -0
  623. data/lib/openactive/models/schema/quotation.rb +19 -0
  624. data/lib/openactive/models/schema/quote_action.rb +13 -0
  625. data/lib/openactive/models/schema/radio_broadcast_service.rb +13 -0
  626. data/lib/openactive/models/schema/radio_channel.rb +13 -0
  627. data/lib/openactive/models/schema/radio_clip.rb +13 -0
  628. data/lib/openactive/models/schema/radio_episode.rb +13 -0
  629. data/lib/openactive/models/schema/radio_season.rb +13 -0
  630. data/lib/openactive/models/schema/radio_series.rb +86 -0
  631. data/lib/openactive/models/schema/radio_station.rb +13 -0
  632. data/lib/openactive/models/schema/rating.rb +50 -0
  633. data/lib/openactive/models/schema/react_action.rb +13 -0
  634. data/lib/openactive/models/schema/read_action.rb +13 -0
  635. data/lib/openactive/models/schema/real_estate_agent.rb +13 -0
  636. data/lib/openactive/models/schema/real_estate_listing.rb +20 -0
  637. data/lib/openactive/models/schema/receive_action.rb +26 -0
  638. data/lib/openactive/models/schema/recipe.rb +68 -0
  639. data/lib/openactive/models/schema/recycling_center.rb +13 -0
  640. data/lib/openactive/models/schema/register_action.rb +13 -0
  641. data/lib/openactive/models/schema/reject_action.rb +13 -0
  642. data/lib/openactive/models/schema/rent_action.rb +24 -0
  643. data/lib/openactive/models/schema/rental_car_reservation.rb +35 -0
  644. data/lib/openactive/models/schema/repayment_specification.rb +42 -0
  645. data/lib/openactive/models/schema/replace_action.rb +23 -0
  646. data/lib/openactive/models/schema/reply_action.rb +18 -0
  647. data/lib/openactive/models/schema/report.rb +18 -0
  648. data/lib/openactive/models/schema/reportage_news_article.rb +13 -0
  649. data/lib/openactive/models/schema/research_project.rb +13 -0
  650. data/lib/openactive/models/schema/reservation.rb +88 -0
  651. data/lib/openactive/models/schema/reservation_package.rb +18 -0
  652. data/lib/openactive/models/schema/reserve_action.rb +13 -0
  653. data/lib/openactive/models/schema/reservoir.rb +13 -0
  654. data/lib/openactive/models/schema/residence.rb +13 -0
  655. data/lib/openactive/models/schema/resort.rb +13 -0
  656. data/lib/openactive/models/schema/restaurant.rb +13 -0
  657. data/lib/openactive/models/schema/resume_action.rb +13 -0
  658. data/lib/openactive/models/schema/return_action.rb +21 -0
  659. data/lib/openactive/models/schema/review.rb +33 -0
  660. data/lib/openactive/models/schema/review_action.rb +18 -0
  661. data/lib/openactive/models/schema/review_news_article.rb +13 -0
  662. data/lib/openactive/models/schema/river_body_of_water.rb +13 -0
  663. data/lib/openactive/models/schema/role.rb +39 -0
  664. data/lib/openactive/models/schema/roofing_contractor.rb +13 -0
  665. data/lib/openactive/models/schema/room.rb +13 -0
  666. data/lib/openactive/models/schema/rsvp_action.rb +30 -0
  667. data/lib/openactive/models/schema/rvpark.rb +13 -0
  668. data/lib/openactive/models/schema/sale_event.rb +13 -0
  669. data/lib/openactive/models/schema/satirical_article.rb +13 -0
  670. data/lib/openactive/models/schema/schedule.rb +57 -0
  671. data/lib/openactive/models/schema/schedule_action.rb +13 -0
  672. data/lib/openactive/models/schema/scholarly_article.rb +13 -0
  673. data/lib/openactive/models/schema/school.rb +13 -0
  674. data/lib/openactive/models/schema/screening_event.rb +29 -0
  675. data/lib/openactive/models/schema/sculpture.rb +13 -0
  676. data/lib/openactive/models/schema/sea_body_of_water.rb +13 -0
  677. data/lib/openactive/models/schema/search_action.rb +18 -0
  678. data/lib/openactive/models/schema/search_results_page.rb +13 -0
  679. data/lib/openactive/models/schema/season.rb +13 -0
  680. data/lib/openactive/models/schema/seat.rb +35 -0
  681. data/lib/openactive/models/schema/self_storage.rb +13 -0
  682. data/lib/openactive/models/schema/sell_action.rb +23 -0
  683. data/lib/openactive/models/schema/send_action.rb +27 -0
  684. data/lib/openactive/models/schema/series.rb +13 -0
  685. data/lib/openactive/models/schema/service.rb +146 -0
  686. data/lib/openactive/models/schema/service_channel.rb +55 -0
  687. data/lib/openactive/models/schema/share_action.rb +13 -0
  688. data/lib/openactive/models/schema/sheet_music.rb +13 -0
  689. data/lib/openactive/models/schema/shoe_store.rb +13 -0
  690. data/lib/openactive/models/schema/shopping_center.rb +13 -0
  691. data/lib/openactive/models/schema/short_story.rb +13 -0
  692. data/lib/openactive/models/schema/single_family_residence.rb +25 -0
  693. data/lib/openactive/models/schema/site_navigation_element.rb +13 -0
  694. data/lib/openactive/models/schema/ski_resort.rb +13 -0
  695. data/lib/openactive/models/schema/social_event.rb +13 -0
  696. data/lib/openactive/models/schema/social_media_posting.rb +18 -0
  697. data/lib/openactive/models/schema/software_application.rb +142 -0
  698. data/lib/openactive/models/schema/software_source_code.rb +49 -0
  699. data/lib/openactive/models/schema/some_products.rb +18 -0
  700. data/lib/openactive/models/schema/speakable_specification.rb +23 -0
  701. data/lib/openactive/models/schema/sporting_goods_store.rb +13 -0
  702. data/lib/openactive/models/schema/sports_activity_location.rb +13 -0
  703. data/lib/openactive/models/schema/sports_club.rb +13 -0
  704. data/lib/openactive/models/schema/sports_event.rb +31 -0
  705. data/lib/openactive/models/schema/sports_organization.rb +19 -0
  706. data/lib/openactive/models/schema/sports_team.rb +30 -0
  707. data/lib/openactive/models/schema/spreadsheet_digital_document.rb +13 -0
  708. data/lib/openactive/models/schema/stadium_or_arena.rb +13 -0
  709. data/lib/openactive/models/schema/state.rb +13 -0
  710. data/lib/openactive/models/schema/statistical_population.rb +29 -0
  711. data/lib/openactive/models/schema/steering_position_value.rb +13 -0
  712. data/lib/openactive/models/schema/store.rb +13 -0
  713. data/lib/openactive/models/schema/structured_value.rb +13 -0
  714. data/lib/openactive/models/schema/subscribe_action.rb +13 -0
  715. data/lib/openactive/models/schema/subway_station.rb +13 -0
  716. data/lib/openactive/models/schema/suite.rb +32 -0
  717. data/lib/openactive/models/schema/suspend_action.rb +13 -0
  718. data/lib/openactive/models/schema/synagogue.rb +13 -0
  719. data/lib/openactive/models/schema/table.rb +13 -0
  720. data/lib/openactive/models/schema/take_action.rb +13 -0
  721. data/lib/openactive/models/schema/tattoo_parlor.rb +13 -0
  722. data/lib/openactive/models/schema/taxi.rb +13 -0
  723. data/lib/openactive/models/schema/taxi_reservation.rb +31 -0
  724. data/lib/openactive/models/schema/taxi_service.rb +13 -0
  725. data/lib/openactive/models/schema/taxi_stand.rb +13 -0
  726. data/lib/openactive/models/schema/tech_article.rb +23 -0
  727. data/lib/openactive/models/schema/television_channel.rb +13 -0
  728. data/lib/openactive/models/schema/television_station.rb +13 -0
  729. data/lib/openactive/models/schema/tennis_complex.rb +13 -0
  730. data/lib/openactive/models/schema/text_digital_document.rb +13 -0
  731. data/lib/openactive/models/schema/theater_event.rb +13 -0
  732. data/lib/openactive/models/schema/theater_group.rb +13 -0
  733. data/lib/openactive/models/schema/thing.rb +78 -0
  734. data/lib/openactive/models/schema/ticket.rb +60 -0
  735. data/lib/openactive/models/schema/tie_action.rb +13 -0
  736. data/lib/openactive/models/schema/tip_action.rb +21 -0
  737. data/lib/openactive/models/schema/tire_shop.rb +13 -0
  738. data/lib/openactive/models/schema/tourist_attraction.rb +25 -0
  739. data/lib/openactive/models/schema/tourist_destination.rb +18 -0
  740. data/lib/openactive/models/schema/tourist_information_center.rb +13 -0
  741. data/lib/openactive/models/schema/tourist_trip.rb +13 -0
  742. data/lib/openactive/models/schema/toy_store.rb +13 -0
  743. data/lib/openactive/models/schema/track_action.rb +19 -0
  744. data/lib/openactive/models/schema/trade_action.rb +30 -0
  745. data/lib/openactive/models/schema/train_reservation.rb +13 -0
  746. data/lib/openactive/models/schema/train_station.rb +13 -0
  747. data/lib/openactive/models/schema/train_trip.rb +43 -0
  748. data/lib/openactive/models/schema/transfer_action.rb +23 -0
  749. data/lib/openactive/models/schema/travel_action.rb +18 -0
  750. data/lib/openactive/models/schema/travel_agency.rb +13 -0
  751. data/lib/openactive/models/schema/trip.rb +54 -0
  752. data/lib/openactive/models/schema/tvclip.rb +18 -0
  753. data/lib/openactive/models/schema/tvepisode.rb +29 -0
  754. data/lib/openactive/models/schema/tvseason.rb +23 -0
  755. data/lib/openactive/models/schema/tvseries.rb +91 -0
  756. data/lib/openactive/models/schema/type_and_quantity_node.rb +42 -0
  757. data/lib/openactive/models/schema/un_register_action.rb +13 -0
  758. data/lib/openactive/models/schema/unit_price_specification.rb +40 -0
  759. data/lib/openactive/models/schema/update_action.rb +23 -0
  760. data/lib/openactive/models/schema/url.rb +13 -0
  761. data/lib/openactive/models/schema/use_action.rb +13 -0
  762. data/lib/openactive/models/schema/user_blocks.rb +13 -0
  763. data/lib/openactive/models/schema/user_checkins.rb +13 -0
  764. data/lib/openactive/models/schema/user_comments.rb +41 -0
  765. data/lib/openactive/models/schema/user_downloads.rb +13 -0
  766. data/lib/openactive/models/schema/user_interaction.rb +13 -0
  767. data/lib/openactive/models/schema/user_likes.rb +13 -0
  768. data/lib/openactive/models/schema/user_page_visits.rb +13 -0
  769. data/lib/openactive/models/schema/user_plays.rb +13 -0
  770. data/lib/openactive/models/schema/user_plus_ones.rb +13 -0
  771. data/lib/openactive/models/schema/user_review.rb +13 -0
  772. data/lib/openactive/models/schema/user_tweets.rb +13 -0
  773. data/lib/openactive/models/schema/vehicle.rb +161 -0
  774. data/lib/openactive/models/schema/video_gallery.rb +13 -0
  775. data/lib/openactive/models/schema/video_game.rb +72 -0
  776. data/lib/openactive/models/schema/video_game_clip.rb +13 -0
  777. data/lib/openactive/models/schema/video_game_series.rb +131 -0
  778. data/lib/openactive/models/schema/video_object.rb +65 -0
  779. data/lib/openactive/models/schema/view_action.rb +13 -0
  780. data/lib/openactive/models/schema/visual_arts_event.rb +13 -0
  781. data/lib/openactive/models/schema/visual_artwork.rb +62 -0
  782. data/lib/openactive/models/schema/volcano.rb +13 -0
  783. data/lib/openactive/models/schema/vote_action.rb +18 -0
  784. data/lib/openactive/models/schema/want_action.rb +13 -0
  785. data/lib/openactive/models/schema/warranty_promise.rb +24 -0
  786. data/lib/openactive/models/schema/watch_action.rb +13 -0
  787. data/lib/openactive/models/schema/waterfall.rb +13 -0
  788. data/lib/openactive/models/schema/wear_action.rb +13 -0
  789. data/lib/openactive/models/schema/web_api.rb +19 -0
  790. data/lib/openactive/models/schema/web_application.rb +18 -0
  791. data/lib/openactive/models/schema/web_content.rb +13 -0
  792. data/lib/openactive/models/schema/web_page.rb +68 -0
  793. data/lib/openactive/models/schema/web_page_element.rb +23 -0
  794. data/lib/openactive/models/schema/web_site.rb +18 -0
  795. data/lib/openactive/models/schema/wholesale_store.rb +13 -0
  796. data/lib/openactive/models/schema/win_action.rb +18 -0
  797. data/lib/openactive/models/schema/winery.rb +13 -0
  798. data/lib/openactive/models/schema/work_based_program.rb +18 -0
  799. data/lib/openactive/models/schema/workers_union.rb +13 -0
  800. data/lib/openactive/models/schema/wpad_block.rb +13 -0
  801. data/lib/openactive/models/schema/wpfooter.rb +13 -0
  802. data/lib/openactive/models/schema/wpheader.rb +13 -0
  803. data/lib/openactive/models/schema/wpside_bar.rb +13 -0
  804. data/lib/openactive/models/schema/write_action.rb +24 -0
  805. data/lib/openactive/models/schema/xpath_type.rb +13 -0
  806. data/lib/openactive/models/schema/zoo.rb +13 -0
  807. data/lib/openactive/models/session_series.rb +23 -0
  808. data/lib/openactive/models/short_answer_form_field_specification.rb +12 -0
  809. data/lib/openactive/models/showers.rb +17 -0
  810. data/lib/openactive/models/slot.rb +219 -0
  811. data/lib/openactive/models/sports_activity_location.rb +18 -0
  812. data/lib/openactive/models/tax_charge_specification.rb +43 -0
  813. data/lib/openactive/models/temporarily_unable_to_create_order_error.rb +11 -0
  814. data/lib/openactive/models/temporarily_unable_to_delete_order_error.rb +11 -0
  815. data/lib/openactive/models/temporarily_unable_to_produce_order_quote_error.rb +11 -0
  816. data/lib/openactive/models/temporarily_unable_to_update_order_error.rb +11 -0
  817. data/lib/openactive/models/terms.rb +27 -0
  818. data/lib/openactive/models/terms_of_use.rb +11 -0
  819. data/lib/openactive/models/toilets.rb +17 -0
  820. data/lib/openactive/models/too_many_requests_error.rb +11 -0
  821. data/lib/openactive/models/total_payment_due_mismatch_error.rb +11 -0
  822. data/lib/openactive/models/towels.rb +17 -0
  823. data/lib/openactive/models/unable_to_process_order_item_error.rb +11 -0
  824. data/lib/openactive/models/unacceptable_offer_error.rb +11 -0
  825. data/lib/openactive/models/unauthenticated_error.rb +11 -0
  826. data/lib/openactive/models/unavailable_opportunity_error.rb +11 -0
  827. data/lib/openactive/models/unknown_offer_error.rb +11 -0
  828. data/lib/openactive/models/unknown_opportunity_details_error.rb +11 -0
  829. data/lib/openactive/models/unknown_or_incorrect_endpoint_error.rb +11 -0
  830. data/lib/openactive/models/unknown_order_error.rb +11 -0
  831. data/lib/openactive/models/web_api.rb +57 -0
  832. data/lib/openactive/rpde/exceptions/deleted_items_data_exception.rb +11 -0
  833. data/lib/openactive/rpde/exceptions/first_time_after_change_number_exception.rb +13 -0
  834. data/lib/openactive/rpde/exceptions/first_time_after_timestamp_and_after_id_exception.rb +13 -0
  835. data/lib/openactive/rpde/exceptions/incomplete_items_data_exception.rb +11 -0
  836. data/lib/openactive/rpde/exceptions/modified_id_items_order_exception.rb +12 -0
  837. data/lib/openactive/rpde/exceptions/next_change_numbers_items_order_exception.rb +12 -0
  838. data/lib/openactive/rpde/exceptions/rpde_exception.rb +8 -0
  839. data/lib/openactive/rpde/rpde_body.rb +157 -0
  840. data/lib/openactive/rpde/rpde_item.rb +11 -0
  841. data/lib/openactive/rpde/rpde_kind.rb +19 -0
  842. data/lib/openactive/rpde/rpde_state.rb +8 -0
  843. data/lib/openactive/validators/array_of_validator.rb +45 -0
  844. data/lib/openactive/validators/array_validator.rb +13 -0
  845. data/lib/openactive/validators/base_model_validator.rb +17 -0
  846. data/lib/openactive/validators/base_validator.rb +79 -0
  847. data/lib/openactive/validators/bool_validator.rb +13 -0
  848. data/lib/openactive/validators/date_interval_validator.rb +38 -0
  849. data/lib/openactive/validators/date_time_validator.rb +40 -0
  850. data/lib/openactive/validators/enum_validator.rb +33 -0
  851. data/lib/openactive/validators/float_validator.rb +26 -0
  852. data/lib/openactive/validators/instance_validator.rb +19 -0
  853. data/lib/openactive/validators/int_validator.rb +26 -0
  854. data/lib/openactive/validators/null_validator.rb +13 -0
  855. data/lib/openactive/validators/number_validator.rb +26 -0
  856. data/lib/openactive/validators/string_validator.rb +26 -0
  857. data/lib/openactive/validators/time_validator.rb +29 -0
  858. data/lib/openactive/validators/uri_validator.rb +27 -0
  859. data/lib/openactive/version.rb +3 -0
  860. data/lib/openactive.rb +52 -0
  861. data/openactive.gemspec +35 -0
  862. data/yard_extensions/define_property_handler.rb +68 -0
  863. data/yard_extensions.rb +4 -0
  864. metadata +1033 -0
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Models
3
+ class UnableToProcessOrderItemError < ::OpenActive::Models::OpenBookingError
4
+ # @!attribute type
5
+ # @return [String]
6
+ def type
7
+ "UnableToProcessOrderItemError"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Models
3
+ class UnacceptableOfferError < ::OpenActive::Models::OpenBookingError
4
+ # @!attribute type
5
+ # @return [String]
6
+ def type
7
+ "UnacceptableOfferError"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Models
3
+ class UnauthenticatedError < ::OpenActive::Models::OpenBookingError
4
+ # @!attribute type
5
+ # @return [String]
6
+ def type
7
+ "UnauthenticatedError"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Models
3
+ class UnavailableOpportunityError < ::OpenActive::Models::OpenBookingError
4
+ # @!attribute type
5
+ # @return [String]
6
+ def type
7
+ "UnavailableOpportunityError"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Models
3
+ class UnknownOfferError < ::OpenActive::Models::OpenBookingError
4
+ # @!attribute type
5
+ # @return [String]
6
+ def type
7
+ "UnknownOfferError"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Models
3
+ class UnknownOpportunityDetailsError < ::OpenActive::Models::OpenBookingError
4
+ # @!attribute type
5
+ # @return [String]
6
+ def type
7
+ "UnknownOpportunityDetailsError"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Models
3
+ class UnknownOrIncorrectEndpointError < ::OpenActive::Models::OpenBookingError
4
+ # @!attribute type
5
+ # @return [String]
6
+ def type
7
+ "UnknownOrIncorrectEndpointError"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Models
3
+ class UnknownOrderError < ::OpenActive::Models::OpenBookingError
4
+ # @!attribute type
5
+ # @return [String]
6
+ def type
7
+ "UnknownOrderError"
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,57 @@
1
+ module OpenActive
2
+ module Models
3
+ #
4
+ # ## **EARLY RELEASE NOTICE**
5
+ # In order to expedite the OpenActive tooling work, this class has been added to the model for the purposes of testing.
6
+ # IT IS SUBJECT TO CHANGE, as the [Dataset API Discovery specification](https://www.openactive.io/dataset-api-discovery/EditorsDraft/) evolves.
7
+ #
8
+ # This type is derived from [WebAPI](https://pending.schema.org/WebAPI), which means that any of this type's properties within schema.org may also be used. Note however the properties on this page must be used in preference if a relevant property is available.
9
+ class WebAPI < ::OpenActive::JsonLdModel
10
+ # @!attribute type
11
+ # @return [String]
12
+ def type
13
+ "WebAPI"
14
+ end
15
+
16
+ # @return [String]
17
+ define_property :name, as: "name", types: [
18
+ "string",
19
+ ]
20
+
21
+ # @return [String]
22
+ define_property :description, as: "description", types: [
23
+ "string",
24
+ ]
25
+
26
+ # @return [Array<URI>]
27
+ define_property :conforms_to, as: "conformsTo", types: [
28
+ "URI[]",
29
+ ]
30
+
31
+ # @return [URI]
32
+ define_property :documentation, as: "documentation", types: [
33
+ "URI",
34
+ ]
35
+
36
+ # @return [URI]
37
+ define_property :endpoint_description, as: "endpointDescription", types: [
38
+ "URI",
39
+ ]
40
+
41
+ # @return [URI]
42
+ define_property :endpoint_url, as: "endpointURL", types: [
43
+ "URI",
44
+ ]
45
+
46
+ # @return [URI]
47
+ define_property :landing_page, as: "landingPage", types: [
48
+ "URI",
49
+ ]
50
+
51
+ # @return [URI]
52
+ define_property :terms_of_service, as: "termsOfService", types: [
53
+ "URI",
54
+ ]
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Rpde
3
+ module Exceptions
4
+ class DeletedItemsDataException < RpdeException
5
+ def initialize(msg = "Deleted items must not contain data.")
6
+ super
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,13 @@
1
+ module OpenActive
2
+ module Rpde
3
+ module Exceptions
4
+ class FirstTimeAfterChangeNumberException < RpdeException
5
+ def initialize(msg = "First item in the feed must never have same 'modified' as afterChangeNumber query "\
6
+ "parameter. Please check the RPDE specification and ensure you are using the correct "\
7
+ "query for your ordering strategy.")
8
+ super
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ module OpenActive
2
+ module Rpde
3
+ module Exceptions
4
+ class FirstTimeAfterTimestampAndAfterIdException < RpdeException
5
+ def initialize(msg = "First item in the feed must never have same 'modified' and 'id' as afterTimestamp and "\
6
+ "afterId query parameters. Please check the RPDE specification and ensure you are using "\
7
+ "the correct query for your ordering strategy.")
8
+ super
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Rpde
3
+ module Exceptions
4
+ class IncompleteItemsDataException < RpdeException
5
+ def initialize(msg = "All RPDE feed items must include id, modified, state, and kind.")
6
+ super
7
+ end
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ module OpenActive
2
+ module Rpde
3
+ module Exceptions
4
+ class ModifiedIdItemsOrderException < RpdeException
5
+ def initialize(msg = "Items must be ordered first by 'modified', then by 'id'. Please check the RPDE "\
6
+ "specification and ensure you are using the correct query for your ordering strategy.")
7
+ super
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ module OpenActive
2
+ module Rpde
3
+ module Exceptions
4
+ class NextChangeNumbersItemsOrderException < RpdeException
5
+ def initialize(msg = "Items must be ordered by 'modified'. Please check the RPDE specification and ensure you "\
6
+ "are using the correct query for your ordering strategy.")
7
+ super
8
+ end
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,8 @@
1
+ module OpenActive
2
+ module Rpde
3
+ module Exceptions
4
+ class RpdeException < StandardError
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,157 @@
1
+ # rubocop:disable Metrics/MethodLength
2
+ module OpenActive
3
+ module Rpde
4
+ class RpdeBody < OpenActive::BaseModel
5
+ define_property :next, types: ["string"]
6
+ define_property :items, types: ["OpenActive::Rpde::RpdeItem[]"]
7
+ define_property :license, types: ["string"], default: "https://creativecommons.org/licenses/by/4.0/"
8
+
9
+ # Create an RpdeBody object from a given feed base URL, an array of RpdeItem, and either a modified int,
10
+ # and id, or a change_number.
11
+ # Checks are performed to see if the provided "modified" and "id" attributes
12
+ # are valid.
13
+ # @param [Hash] opts the options to create a message with.
14
+ # @option opts [String] feed_base_url string
15
+ # @option opts [Integer] modified int
16
+ # @option opts [String,Integer] id string|int
17
+ # @option opts [Array<::OpenActive::Rpde::RpdeItem>] items
18
+ # @return self
19
+ # @raise [::OpenActive::Rpde::Exceptions::FirstTimeAfterTimestampAndAfterIdException]
20
+ # If the afterId and afterTimestamp provided are of the first item in the feed
21
+ # @raise [::OpenActive::Rpde::Exceptions::DeletedItemsDataException]
22
+ # If any deleted items provided (if any) contain data
23
+ # @raise [::OpenActive::Rpde::Exceptions::IncompleteItemsDataException]
24
+ # If any RPDE feed item does not include id, modified, state, or kind.
25
+ # @raise [::OpenActive::Rpde::Exceptions::ModifiedIdItemsOrderException]
26
+ # If the feed items are not in "modified", then "id", order.
27
+ # @raise [::OpenActive::Exceptions::InvalidArgumentException]
28
+ # If the provided argument is not of a supported type.
29
+ def self.create(feed_base_url:, modified: nil, id: nil, change_number: nil, items:)
30
+ if !modified.nil? && !id.nil? && change_number.nil?
31
+ create_from_modified_id(feed_base_url, modified, id, items)
32
+ elsif modified.nil? && id.nil? && !change_number.nil?
33
+ create_from_next_change_number(feed_base_url, change_number, items)
34
+ else
35
+ raise ArgumentError
36
+ end
37
+ end
38
+
39
+ # Create an RpdeBody object from a given feed base URL, a modified int,
40
+ # an id, and an array of RpdeItem.
41
+ # Checks are performed to see if the provided "modified" and "id" attributes
42
+ # are valid.
43
+ #
44
+ # @param [String] feed_base_url
45
+ # @param [Integer] modified int
46
+ # @param [String,Integer] id
47
+ # @param [Array<::OpenActive::Rpde::RpdeItem>] items
48
+ # @return self
49
+ # @raise [::OpenActive::Rpde::Exceptions::FirstTimeAfterTimestampAndAfterIdException]
50
+ # If the afterId and afterTimestamp provided are of the first item in the feed
51
+ # @raise [::OpenActive::Rpde::Exceptions::DeletedItemsDataException]
52
+ # If any deleted items provided (if any) contain data
53
+ # @raise [::OpenActive::Rpde::Exceptions::IncompleteItemsDataException]
54
+ # If any RPDE feed item does not include id, modified, state, or kind.
55
+ # @raise [::OpenActive::Rpde::Exceptions::ModifiedIdItemsOrderException]
56
+ # If the feed items are not in "modified", then "id", order.
57
+ # @raise [::OpenActive::Exceptions::InvalidArgumentException]
58
+ # If the provided argument is not of a supported type.
59
+ def self.create_from_modified_id(feed_base_url, modified, id, items)
60
+ rpde_body = new(
61
+ items: items,
62
+ )
63
+ if !items.empty?
64
+ first_item = items.first
65
+
66
+ # Checks that the afterId and afterTimestamp provided are not the
67
+ # first item in the feed (helps detect whether query is correct)
68
+ if first_item.modified.to_s == modified.to_s && first_item.id.to_s == id.to_s
69
+ raise Exceptions::FirstTimeAfterTimestampAndAfterIdException
70
+ end
71
+
72
+ current_modified = -1
73
+ current_id = first_item.id
74
+ items.each do |item|
75
+ if item.state == OpenActive::Rpde::RpdeState::DELETED && !item.data.nil?
76
+ raise Exceptions::DeletedItemsDataException
77
+ end
78
+
79
+ if item.state.nil? || item.kind.nil? || item.modified.nil? || item.id.nil?
80
+ raise Exceptions::IncompleteItemsDataException
81
+ end
82
+
83
+ unless item.modified > current_modified ||
84
+ (item.modified == current_modified && item.id > current_id)
85
+ raise Exceptions::ModifiedIdItemsOrderException
86
+ end
87
+
88
+ current_modified = item.modified
89
+ current_id = item.id
90
+ end
91
+ # Create 'next' URL depending on whether there are items available
92
+ rpde_body.next = "#{feed_base_url}?afterTimestamp=#{CGI.escape(items.last.modified.to_s)}&"\
93
+ "afterId=#{CGI.escape(items.last.id.to_s)}"
94
+ elsif !modified.nil? && !id.nil?
95
+ rpde_body.next = "#{feed_base_url}?afterTimestamp=#{CGI.escape(modified.to_s)}&"\
96
+ "afterId=#{CGI.escape(id.to_s)}"
97
+ end
98
+ rpde_body
99
+ end
100
+
101
+ # Create an RpdeBody object from a given feed base URL, a change number int,
102
+ # and an array of RpdeItem.
103
+ # Checks are performed to see if the provided "changeNumber" attribute
104
+ # is valid.
105
+ #
106
+ # @param [String] feed_base_url
107
+ # @param [Integer] change_number
108
+ # @param [Array<::OpenActive::Rpde::RpdeItem>]items
109
+ # @return self
110
+ # @raise [::OpenActive::Rpde::Exceptions::FirstTimeAfterTimestampAndAfterIdException]
111
+ # If the afterId and afterTimestamp provided are of the first item in the feed
112
+ # @raise [::OpenActive::Rpde::Exceptions::DeletedItemsDataException]
113
+ # If any deleted items provided (if any) contain data
114
+ # @raise [::OpenActive::Rpde::Exceptions::IncompleteItemsDataException]
115
+ # If any RPDE feed item does not include id, modified, state, or kind.
116
+ # @raise [::OpenActive::Rpde::Exceptions::ModifiedIdItemsOrderException]
117
+ # If the feed items are not in "modified", then "id", order.
118
+ # @raise [::OpenActive::Exceptions::InvalidArgumentException]
119
+ # If the provided argument is not of a supported type.
120
+ def self.create_from_next_change_number(feed_base_url, change_number, items)
121
+ rpde_body = new(
122
+ items: items,
123
+ )
124
+ if !items.empty?
125
+ first_item = items.first
126
+
127
+ # Checks that the afterId and afterTimestamp provided are not the
128
+ # first item in the feed (helps detect whether query is correct)
129
+ raise Exceptions::FirstTimeAfterChangeNumberException if first_item.modified == change_number
130
+
131
+ current_change_number = -1
132
+ items.each do |item|
133
+ if item.state == OpenActive::Rpde::RpdeState::DELETED && !item.data.nil?
134
+ raise Exceptions::DeletedItemsDataException
135
+ end
136
+
137
+ if item.state.nil? || item.kind.nil? || item.modified.nil? || item.id.nil?
138
+ raise Exceptions::IncompleteItemsDataException
139
+ end
140
+
141
+ raise Exceptions::NextChangeNumbersItemsOrderException unless item.modified > current_change_number
142
+
143
+ current_change_number = item.modified
144
+ end
145
+ # Create 'next' URL depending on whether there are items available
146
+ rpde_body.next = "#{feed_base_url}?afterChangeNumber=#{CGI.escape(items.last.modified.to_s)}"
147
+ else
148
+ unless change_number.nil?
149
+ rpde_body.next = "#{feed_base_url}?afterChangeNumber=#{CGI.escape(change_number.to_s)}"
150
+ end
151
+ end
152
+ rpde_body
153
+ end
154
+ end
155
+ end
156
+ end
157
+ # rubocop:enable Metrics/MethodLength
@@ -0,0 +1,11 @@
1
+ module OpenActive
2
+ module Rpde
3
+ class RpdeItem < OpenActive::BaseModel
4
+ define_property :state, types: ["OpenActive::Rpde::RpdeState"]
5
+ define_property :kind, types: ["OpenActive::Rpde::RpdeKind"]
6
+ define_property :id, types: ["string", "int"], as: "@id"
7
+ define_property :modified, types: ["int"]
8
+ define_property :data, types: ["OpenActive::BaseModel", "null"]
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,19 @@
1
+ module OpenActive
2
+ module Rpde
3
+ class RpdeKind < TypesafeEnum::Base
4
+ new :SESSION_SERIES, "SessionSeries"
5
+ new :SCHEDULED_SESSION, "ScheduledSession"
6
+ new :SCHEDULED_SESSION_SESSION_SERIES, "ScheduledSession.SessionSeries"
7
+ new :SESSION_SERIES_SCHEDULED_SESSION, "SessionSeries.ScheduledSession"
8
+ new :FACILITY_USE, "FacilityUse"
9
+ new :INDIVIDUAL_FACILITY_USE, "IndividualFacilityUse"
10
+ new :FACILITY_USE_SLOT, "FacilityUse/Slot"
11
+ new :INDIVIDUAL_FACILITY_USE_SLOT, "IndividualFacilityUse/Slot"
12
+ new :COURSE, "Course"
13
+ new :COURSE_INSTANCE, "CourseInstance"
14
+ new :HEADLINE_EVENT, "HeadlineEvent"
15
+ new :EVENT, "Event"
16
+ new :EVENT_SERIES, "EventSeries"
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,8 @@
1
+ module OpenActive
2
+ module Rpde
3
+ class RpdeState < TypesafeEnum::Base
4
+ new :DELETED
5
+ new :UPDATED
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,45 @@
1
+ module OpenActive
2
+ module Validators
3
+ class ArrayOfValidator < BaseValidator
4
+ attr_accessor :item_validator
5
+
6
+ def initialize(item_validator)
7
+ @item_validator = item_validator
8
+ end
9
+
10
+ # Coerce given value to the type the validator is validating against.
11
+ # PLEASE NOTE: no checks are performed on the given value.
12
+ # It is therefore recommended to call the "run" method first before this.
13
+ #
14
+ # @param value [mixed] The value to coerce.
15
+ # @return [mixed] The same value.
16
+
17
+ def coerce(value)
18
+ # NOTE: OpenActive is more strict than plain json-ld, so no coercion into arrays
19
+ value
20
+ end
21
+
22
+ # Run validation on the given value.
23
+ #
24
+ # @param value [mixed] The value to validate.
25
+ # @return [Boolean] Whether validation passes or not.
26
+
27
+ def run(value)
28
+ null_validator = NullValidator.new
29
+
30
+ # NOTE: OpenActive is more strict than plain json-ld, so no coercion into arrays
31
+
32
+ # Check if value is an array
33
+ return true if item_validator.run(value) == true
34
+
35
+ return false if ArrayValidator.new.run(value) == false
36
+
37
+ value.each do |item|
38
+ # If any of the provided items is not null nor an instance of the provided class name
39
+ return false if null_validator.run(item) == false && item_validator.run(item) == false
40
+ end
41
+ true
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,13 @@
1
+ module OpenActive
2
+ module Validators
3
+ class ArrayValidator < BaseValidator
4
+ # Run validation on the given value.
5
+ #
6
+ # @param value [mixed] The value to validate.
7
+ # @return [Boolean] Whether validation passes or not.
8
+ def run(value)
9
+ value.is_a?(Array)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ module OpenActive
2
+ module Validators
3
+ class BaseModelValidator < BaseValidator
4
+ # Run validation on the given value.
5
+ #
6
+ # @param value [mixed] The value to validate.
7
+ # @return [Boolean] Whether validation passes or not.
8
+ def run(value)
9
+ # With BaseModelValidator we are a bit more relaxed
10
+ # in terms of checking the class name.
11
+ # We allow the class to be an instanceof BaseModel
12
+ # Or to be a sub class (BaseModel is one of its parent)
13
+ value.is_a?(OpenActive::JsonLdModel)
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,79 @@
1
+ module OpenActive
2
+ module Validators
3
+ class BaseValidator
4
+ # Coerce given value to the type the validator is validating against.
5
+ # PLEASE NOTE: no checks are performed on the given value.
6
+ # It is therefore recommended to call the "run" method first before this.
7
+ #
8
+ # @param value [mixed] The value to coerce.
9
+ # @return [mixed] The same value.
10
+ def coerce(value)
11
+ # For all the classes that inherit BaseValidator
12
+ # that don't need to coerce,
13
+ # This is a no-op
14
+ value
15
+ end
16
+
17
+ # Run validation on the given value.
18
+ #
19
+ # @param _value [mixed] The value to validate.
20
+ # @return [Boolean] Whether validation passes or not.
21
+ def run(_value)
22
+ false
23
+ end
24
+
25
+ # Returns a validator instance from a given type name.
26
+ #
27
+ # @param type [string] The type name
28
+ # @return [::OpenActive::Validators::ValidatorInterface]
29
+ def self.get_validator(type) # rubocop:disable Metrics/MethodLength
30
+ # If last 2 characters are "[]"
31
+ # We are validating an array
32
+ if type.end_with?('[]')
33
+ # Build item validator name
34
+ # (remove last 2 characters "[]")
35
+ item_type = type[0...-2]
36
+
37
+ # Instantiate validator
38
+ return ArrayOfValidator.new(get_validator(item_type))
39
+ end
40
+
41
+ # If first letter of type is a lower case letter
42
+ # We are validating a native type
43
+ if type.match(/^[[:lower:]]/)
44
+ # Build item validator name (FQ)
45
+ class_name = "#{type.classify}Validator"
46
+ validator = ::OpenActive::Validators.const_get(class_name)
47
+
48
+ return validator.new
49
+ end
50
+
51
+ validator =
52
+ case type
53
+ when "URI"
54
+ UriValidator.new
55
+ when "Time"
56
+ TimeValidator.new
57
+ when "DateTime"
58
+ DateTimeValidator.new
59
+ when "DateInterval"
60
+ DateIntervalValidator.new
61
+ when "Number"
62
+ NumberValidator.new
63
+ end
64
+
65
+ return validator if validator
66
+
67
+ # everything beyond this we're dealing with actual classes.. hopefully
68
+ klass = Object.const_get(type)
69
+
70
+ return EnumValidator.new(klass) if klass.ancestors.include?(TypesafeEnum::Base)
71
+
72
+ # If type is an OpenActive BaseModel class
73
+ return BaseModelValidator.new if klass == OpenActive::JsonLdModel
74
+
75
+ InstanceValidator.new(klass)
76
+ end
77
+ end
78
+ end
79
+ end
@@ -0,0 +1,13 @@
1
+ module OpenActive
2
+ module Validators
3
+ class BoolValidator < BaseValidator
4
+ # Run validation on the given value.
5
+ #
6
+ # @param value [mixed] The value to validate.
7
+ # @return [Boolean] Whether validation passes or not.
8
+ def run(value)
9
+ [true, false].include?(value)
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,38 @@
1
+ module OpenActive
2
+ module Validators
3
+ class DateIntervalValidator < BaseValidator
4
+ # Coerce given value to the type the validator is validating against.
5
+ # PLEASE NOTE: no checks are performed on the given value.
6
+ # It is therefore recommended to call the "run" method first before this.
7
+ #
8
+ # @param value [mixed] The value to coerce.
9
+ # @return [mixed] The same value.
10
+ # @raise [::Exception] When value cannot be parsed as a ::DateInterval
11
+ def coerce(value)
12
+ return value if value.is_a?(ActiveSupport::Duration)
13
+
14
+ # If not passing a DateInterval object, try and create one from value
15
+ # Assuming that the string will be an interval spec in ISO 8601 format
16
+ ActiveSupport::Duration.parse(value)
17
+ end
18
+
19
+ # Run validation on the given value.
20
+ #
21
+ # @param value [mixed] The value to validate.
22
+ # @return [Boolean] Whether validation passes or not.
23
+ def run(value)
24
+ return true if value.is_a?(ActiveSupport::Duration)
25
+
26
+ # If not a string - fail validation
27
+ return false unless value.is_a?(String)
28
+
29
+ begin
30
+ ActiveSupport::Duration.parse(value)
31
+ true
32
+ rescue ArgumentError => _e
33
+ false
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end