onfido 2.9.0 → 3.0.0

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 (378) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +11 -4
  3. data/Gemfile +5 -4
  4. data/LICENSE +5 -7
  5. data/README.md +69 -51
  6. data/Rakefile +10 -0
  7. data/lib/onfido/api/default_api.rb +4233 -0
  8. data/lib/onfido/api_client.rb +431 -0
  9. data/lib/onfido/api_error.rb +58 -0
  10. data/lib/onfido/configuration.rb +420 -0
  11. data/lib/onfido/models/address.rb +422 -0
  12. data/lib/onfido/models/address_builder.rb +422 -0
  13. data/lib/onfido/models/address_shared.rb +415 -0
  14. data/lib/onfido/models/addresses_list.rb +216 -0
  15. data/lib/onfido/models/applicant.rb +390 -0
  16. data/lib/onfido/models/applicant_builder.rb +358 -0
  17. data/lib/onfido/models/applicant_create.rb +281 -0
  18. data/lib/onfido/models/applicant_request.rb +232 -0
  19. data/lib/onfido/models/applicant_response.rb +341 -0
  20. data/lib/onfido/models/applicant_shared.rb +246 -0
  21. data/lib/onfido/models/applicant_update.rb +267 -0
  22. data/lib/onfido/models/applicant_updater.rb +344 -0
  23. data/lib/onfido/models/applicants_list.rb +223 -0
  24. data/lib/onfido/models/check.rb +419 -0
  25. data/lib/onfido/models/check_builder.rb +360 -0
  26. data/lib/onfido/models/check_request.rb +301 -0
  27. data/lib/onfido/models/check_response.rb +350 -0
  28. data/lib/onfido/models/check_shared.rb +266 -0
  29. data/lib/onfido/models/checks_list.rb +223 -0
  30. data/lib/onfido/models/complete_task_builder.rb +221 -0
  31. data/lib/onfido/models/complete_task_data_builder.rb +106 -0
  32. data/lib/onfido/models/consent_item.rb +272 -0
  33. data/lib/onfido/models/consents_builder.rb +205 -0
  34. data/lib/onfido/models/country_codes.rb +289 -0
  35. data/lib/onfido/models/device_intelligence_breakdown.rb +223 -0
  36. data/lib/onfido/models/device_intelligence_breakdown_breakdown.rb +214 -0
  37. data/lib/onfido/models/device_intelligence_breakdown_breakdown_device.rb +215 -0
  38. data/lib/onfido/models/device_intelligence_breakdown_breakdown_device_breakdown.rb +232 -0
  39. data/lib/onfido/models/device_intelligence_breakdown_properties.rb +232 -0
  40. data/lib/onfido/models/device_intelligence_breakdown_properties_device.rb +468 -0
  41. data/lib/onfido/models/device_intelligence_breakdown_properties_geolocation.rb +257 -0
  42. data/lib/onfido/models/device_intelligence_breakdown_properties_ip.rb +245 -0
  43. data/lib/onfido/models/device_intelligence_report.rb +345 -0
  44. data/lib/onfido/models/document.rb +376 -0
  45. data/lib/onfido/models/document_breakdown.rb +286 -0
  46. data/lib/onfido/models/document_breakdown_age_validation.rb +224 -0
  47. data/lib/onfido/models/document_breakdown_age_validation_breakdown.rb +214 -0
  48. data/lib/onfido/models/document_breakdown_compromised_document.rb +224 -0
  49. data/lib/onfido/models/document_breakdown_compromised_document_breakdown.rb +223 -0
  50. data/lib/onfido/models/document_breakdown_data_comparison.rb +224 -0
  51. data/lib/onfido/models/document_breakdown_data_comparison_breakdown.rb +277 -0
  52. data/lib/onfido/models/document_breakdown_data_comparison_breakdown_issuing_country.rb +223 -0
  53. data/lib/onfido/models/document_breakdown_data_consistency.rb +224 -0
  54. data/lib/onfido/models/document_breakdown_data_consistency_breakdown.rb +295 -0
  55. data/lib/onfido/models/document_breakdown_data_validation.rb +224 -0
  56. data/lib/onfido/models/document_breakdown_data_validation_breakdown.rb +268 -0
  57. data/lib/onfido/models/document_breakdown_data_validation_breakdown_document_expiration.rb +224 -0
  58. data/lib/onfido/models/document_breakdown_data_validation_breakdown_expiry_date.rb +224 -0
  59. data/lib/onfido/models/document_breakdown_image_integrity.rb +224 -0
  60. data/lib/onfido/models/document_breakdown_image_integrity_breakdown.rb +241 -0
  61. data/lib/onfido/models/document_breakdown_image_integrity_breakdown_colour_picture.rb +224 -0
  62. data/lib/onfido/models/document_breakdown_image_integrity_breakdown_conclusive_document_quality.rb +224 -0
  63. data/lib/onfido/models/document_breakdown_image_integrity_breakdown_image_quality.rb +224 -0
  64. data/lib/onfido/models/document_breakdown_image_integrity_breakdown_supported_document.rb +224 -0
  65. data/lib/onfido/models/document_breakdown_issuing_authority.rb +224 -0
  66. data/lib/onfido/models/document_breakdown_issuing_authority_breakdown.rb +223 -0
  67. data/lib/onfido/models/document_breakdown_issuing_authority_breakdown_nfc_active_authentication.rb +224 -0
  68. data/lib/onfido/models/document_breakdown_issuing_authority_breakdown_nfc_passive_authentication.rb +224 -0
  69. data/lib/onfido/models/document_breakdown_police_record.rb +215 -0
  70. data/lib/onfido/models/document_breakdown_visual_authenticity.rb +224 -0
  71. data/lib/onfido/models/document_breakdown_visual_authenticity_breakdown.rb +277 -0
  72. data/lib/onfido/models/document_breakdown_visual_authenticity_breakdown_digital_tampering.rb +224 -0
  73. data/lib/onfido/models/document_breakdown_visual_authenticity_breakdown_face_detection.rb +224 -0
  74. data/lib/onfido/models/document_breakdown_visual_authenticity_breakdown_fonts.rb +224 -0
  75. data/lib/onfido/models/document_breakdown_visual_authenticity_breakdown_original_document_present.rb +224 -0
  76. data/lib/onfido/models/document_breakdown_visual_authenticity_breakdown_other.rb +224 -0
  77. data/lib/onfido/models/document_breakdown_visual_authenticity_breakdown_picture_face_integrity.rb +224 -0
  78. data/lib/onfido/models/document_breakdown_visual_authenticity_breakdown_security_features.rb +224 -0
  79. data/lib/onfido/models/document_breakdown_visual_authenticity_breakdown_template.rb +224 -0
  80. data/lib/onfido/models/document_cdq_reasons.rb +285 -0
  81. data/lib/onfido/models/document_iq_reasons.rb +305 -0
  82. data/lib/onfido/models/document_odp_reasons.rb +245 -0
  83. data/lib/onfido/models/document_properties.rb +461 -0
  84. data/lib/onfido/models/document_properties_address_lines.rb +259 -0
  85. data/lib/onfido/models/document_properties_barcode_inner.rb +367 -0
  86. data/lib/onfido/models/document_properties_document_classification.rb +232 -0
  87. data/lib/onfido/models/document_properties_document_numbers_inner.rb +223 -0
  88. data/lib/onfido/models/document_properties_driving_licence_information.rb +241 -0
  89. data/lib/onfido/models/document_properties_extracted_data.rb +394 -0
  90. data/lib/onfido/models/document_properties_nfc.rb +322 -0
  91. data/lib/onfido/models/document_report.rb +354 -0
  92. data/lib/onfido/models/document_response.rb +272 -0
  93. data/lib/onfido/models/document_shared.rb +301 -0
  94. data/lib/onfido/models/document_types.rb +64 -0
  95. data/lib/onfido/models/document_video_report.rb +354 -0
  96. data/lib/onfido/models/document_video_with_address_information_report.rb +354 -0
  97. data/lib/onfido/models/document_with_address_information_report.rb +354 -0
  98. data/lib/onfido/models/document_with_driver_verification_report.rb +354 -0
  99. data/lib/onfido/models/document_with_driver_verification_report_all_of_properties.rb +529 -0
  100. data/lib/onfido/models/document_with_driver_verification_report_all_of_properties_all_of_passenger_vehicle.rb +236 -0
  101. data/lib/onfido/models/document_with_driver_verification_report_all_of_properties_all_of_vehicle_class_details_inner.rb +245 -0
  102. data/lib/onfido/models/document_with_driving_licence_information_report.rb +354 -0
  103. data/lib/onfido/models/documents_list.rb +223 -0
  104. data/lib/onfido/models/error.rb +214 -0
  105. data/lib/onfido/models/error1.rb +224 -0
  106. data/lib/onfido/models/error_properties.rb +234 -0
  107. data/lib/onfido/models/error_properties1.rb +223 -0
  108. data/lib/onfido/models/extract_request.rb +222 -0
  109. data/lib/onfido/models/extraction.rb +233 -0
  110. data/lib/onfido/models/extraction_document_classification.rb +289 -0
  111. data/lib/onfido/models/extraction_extracted_data.rb +530 -0
  112. data/lib/onfido/models/facial_similarity_motion_breakdown.rb +232 -0
  113. data/lib/onfido/models/facial_similarity_motion_breakdown_face_comparison.rb +224 -0
  114. data/lib/onfido/models/facial_similarity_motion_breakdown_image_integrity.rb +224 -0
  115. data/lib/onfido/models/facial_similarity_motion_breakdown_image_integrity_breakdown.rb +223 -0
  116. data/lib/onfido/models/facial_similarity_motion_breakdown_image_integrity_breakdown_face_detected.rb +224 -0
  117. data/lib/onfido/models/facial_similarity_motion_breakdown_image_integrity_breakdown_source_integrity.rb +224 -0
  118. data/lib/onfido/models/facial_similarity_motion_breakdown_visual_authenticity.rb +224 -0
  119. data/lib/onfido/models/facial_similarity_motion_breakdown_visual_authenticity_breakdown.rb +223 -0
  120. data/lib/onfido/models/facial_similarity_motion_breakdown_visual_authenticity_breakdown_spoofing_detection.rb +224 -0
  121. data/lib/onfido/models/facial_similarity_motion_properties.rb +215 -0
  122. data/lib/onfido/models/facial_similarity_motion_report.rb +354 -0
  123. data/lib/onfido/models/facial_similarity_photo_breakdown.rb +232 -0
  124. data/lib/onfido/models/facial_similarity_photo_breakdown_face_comparison.rb +224 -0
  125. data/lib/onfido/models/facial_similarity_photo_breakdown_face_comparison_breakdown.rb +214 -0
  126. data/lib/onfido/models/facial_similarity_photo_breakdown_face_comparison_breakdown_face_match.rb +224 -0
  127. data/lib/onfido/models/facial_similarity_photo_breakdown_face_comparison_breakdown_face_match_properties.rb +225 -0
  128. data/lib/onfido/models/facial_similarity_photo_breakdown_image_integrity.rb +224 -0
  129. data/lib/onfido/models/facial_similarity_photo_breakdown_image_integrity_breakdown.rb +223 -0
  130. data/lib/onfido/models/facial_similarity_photo_breakdown_image_integrity_breakdown_face_detected.rb +224 -0
  131. data/lib/onfido/models/facial_similarity_photo_breakdown_image_integrity_breakdown_source_integrity.rb +224 -0
  132. data/lib/onfido/models/facial_similarity_photo_breakdown_visual_authenticity.rb +224 -0
  133. data/lib/onfido/models/facial_similarity_photo_breakdown_visual_authenticity_breakdown.rb +214 -0
  134. data/lib/onfido/models/facial_similarity_photo_breakdown_visual_authenticity_breakdown_spoofing_detection.rb +224 -0
  135. data/lib/onfido/models/facial_similarity_photo_breakdown_visual_authenticity_breakdown_spoofing_detection_properties.rb +215 -0
  136. data/lib/onfido/models/facial_similarity_photo_fully_auto_breakdown.rb +232 -0
  137. data/lib/onfido/models/facial_similarity_photo_fully_auto_breakdown_image_integrity.rb +224 -0
  138. data/lib/onfido/models/facial_similarity_photo_fully_auto_breakdown_image_integrity_breakdown.rb +223 -0
  139. data/lib/onfido/models/facial_similarity_photo_fully_auto_breakdown_image_integrity_breakdown_source_integrity.rb +224 -0
  140. data/lib/onfido/models/facial_similarity_photo_fully_auto_properties.rb +215 -0
  141. data/lib/onfido/models/facial_similarity_photo_fully_auto_report.rb +354 -0
  142. data/lib/onfido/models/facial_similarity_photo_properties.rb +215 -0
  143. data/lib/onfido/models/facial_similarity_photo_report.rb +354 -0
  144. data/lib/onfido/models/facial_similarity_video_breakdown.rb +232 -0
  145. data/lib/onfido/models/facial_similarity_video_breakdown_face_comparison.rb +224 -0
  146. data/lib/onfido/models/facial_similarity_video_breakdown_image_integrity.rb +224 -0
  147. data/lib/onfido/models/facial_similarity_video_breakdown_image_integrity_breakdown.rb +223 -0
  148. data/lib/onfido/models/facial_similarity_video_breakdown_image_integrity_breakdown_face_detected.rb +224 -0
  149. data/lib/onfido/models/facial_similarity_video_breakdown_image_integrity_breakdown_source_integrity.rb +224 -0
  150. data/lib/onfido/models/facial_similarity_video_breakdown_visual_authenticity.rb +224 -0
  151. data/lib/onfido/models/facial_similarity_video_breakdown_visual_authenticity_breakdown.rb +223 -0
  152. data/lib/onfido/models/facial_similarity_video_breakdown_visual_authenticity_breakdown_liveness_detected.rb +224 -0
  153. data/lib/onfido/models/facial_similarity_video_breakdown_visual_authenticity_breakdown_spoofing_detection.rb +224 -0
  154. data/lib/onfido/models/facial_similarity_video_properties.rb +215 -0
  155. data/lib/onfido/models/facial_similarity_video_report.rb +354 -0
  156. data/lib/onfido/models/id_number.rb +269 -0
  157. data/lib/onfido/models/id_photo.rb +289 -0
  158. data/lib/onfido/models/id_photo_response.rb +282 -0
  159. data/lib/onfido/models/id_photos_list.rb +223 -0
  160. data/lib/onfido/models/identity_enhanced_breakdown.rb +241 -0
  161. data/lib/onfido/models/identity_enhanced_breakdown_address.rb +224 -0
  162. data/lib/onfido/models/identity_enhanced_breakdown_address_breakdown.rb +232 -0
  163. data/lib/onfido/models/identity_enhanced_breakdown_address_breakdown_credit_agencies.rb +224 -0
  164. data/lib/onfido/models/identity_enhanced_breakdown_address_breakdown_credit_agencies_properties.rb +214 -0
  165. data/lib/onfido/models/identity_enhanced_breakdown_address_breakdown_telephone_database.rb +224 -0
  166. data/lib/onfido/models/identity_enhanced_breakdown_address_breakdown_voting_register.rb +224 -0
  167. data/lib/onfido/models/identity_enhanced_breakdown_date_of_birth.rb +224 -0
  168. data/lib/onfido/models/identity_enhanced_breakdown_date_of_birth_breakdown.rb +223 -0
  169. data/lib/onfido/models/identity_enhanced_breakdown_date_of_birth_breakdown_credit_agencies.rb +224 -0
  170. data/lib/onfido/models/identity_enhanced_breakdown_date_of_birth_breakdown_voting_register.rb +224 -0
  171. data/lib/onfido/models/identity_enhanced_breakdown_mortality.rb +215 -0
  172. data/lib/onfido/models/identity_enhanced_breakdown_sources.rb +224 -0
  173. data/lib/onfido/models/identity_enhanced_breakdown_sources_breakdown.rb +214 -0
  174. data/lib/onfido/models/identity_enhanced_breakdown_sources_breakdown_total_sources.rb +224 -0
  175. data/lib/onfido/models/identity_enhanced_breakdown_sources_breakdown_total_sources_properties.rb +214 -0
  176. data/lib/onfido/models/identity_enhanced_properties.rb +227 -0
  177. data/lib/onfido/models/identity_enhanced_properties_matched_addresses_inner.rb +227 -0
  178. data/lib/onfido/models/identity_enhanced_report.rb +354 -0
  179. data/lib/onfido/models/india_pan_report.rb +354 -0
  180. data/lib/onfido/models/india_pan_report_all_of_breakdown.rb +214 -0
  181. data/lib/onfido/models/india_pan_report_all_of_breakdown_device.rb +214 -0
  182. data/lib/onfido/models/india_pan_report_all_of_breakdown_device_breakdown.rb +223 -0
  183. data/lib/onfido/models/india_pan_report_all_of_breakdown_device_breakdown_pan_valid.rb +214 -0
  184. data/lib/onfido/models/india_pan_report_all_of_properties.rb +214 -0
  185. data/lib/onfido/models/india_pan_report_all_of_properties_device.rb +225 -0
  186. data/lib/onfido/models/known_faces_breakdown.rb +223 -0
  187. data/lib/onfido/models/known_faces_breakdown_image_integrity.rb +215 -0
  188. data/lib/onfido/models/known_faces_breakdown_previously_seen_faces.rb +215 -0
  189. data/lib/onfido/models/known_faces_properties.rb +217 -0
  190. data/lib/onfido/models/known_faces_properties_matches_inner.rb +255 -0
  191. data/lib/onfido/models/known_faces_report.rb +354 -0
  192. data/lib/onfido/models/live_photo.rb +289 -0
  193. data/lib/onfido/models/live_photo_response.rb +282 -0
  194. data/lib/onfido/models/live_photos_list.rb +223 -0
  195. data/lib/onfido/models/live_video.rb +287 -0
  196. data/lib/onfido/models/live_videos_list.rb +223 -0
  197. data/lib/onfido/models/location.rb +254 -0
  198. data/lib/onfido/models/location_builder.rb +254 -0
  199. data/lib/onfido/models/location_shared.rb +247 -0
  200. data/lib/onfido/models/motion_capture.rb +275 -0
  201. data/lib/onfido/models/motion_captures_list.rb +223 -0
  202. data/lib/onfido/models/photo_auto_reasons.rb +255 -0
  203. data/lib/onfido/models/photo_reasons.rb +255 -0
  204. data/lib/onfido/models/proof_of_address_breakdown.rb +232 -0
  205. data/lib/onfido/models/proof_of_address_breakdown_data_comparison.rb +224 -0
  206. data/lib/onfido/models/proof_of_address_breakdown_data_comparison_breakdown.rb +232 -0
  207. data/lib/onfido/models/proof_of_address_breakdown_document_classification.rb +224 -0
  208. data/lib/onfido/models/proof_of_address_breakdown_document_classification_breakdown.rb +214 -0
  209. data/lib/onfido/models/proof_of_address_breakdown_image_integrity.rb +224 -0
  210. data/lib/onfido/models/proof_of_address_breakdown_image_integrity_breakdown.rb +214 -0
  211. data/lib/onfido/models/proof_of_address_properties.rb +319 -0
  212. data/lib/onfido/models/proof_of_address_report.rb +354 -0
  213. data/lib/onfido/models/repeat_attempts_list.rb +292 -0
  214. data/lib/onfido/models/repeat_attempts_list_repeat_attempts_inner.rb +333 -0
  215. data/lib/onfido/models/report.rb +93 -0
  216. data/lib/onfido/models/report_document.rb +222 -0
  217. data/lib/onfido/models/report_name.rb +60 -0
  218. data/lib/onfido/models/report_result.rb +42 -0
  219. data/lib/onfido/models/report_shared.rb +329 -0
  220. data/lib/onfido/models/report_status.rb +44 -0
  221. data/lib/onfido/models/report_sub_result.rb +43 -0
  222. data/lib/onfido/models/reports_list.rb +223 -0
  223. data/lib/onfido/models/results_feedback.rb +279 -0
  224. data/lib/onfido/models/sdk_token.rb +229 -0
  225. data/lib/onfido/models/sdk_token_builder.rb +259 -0
  226. data/lib/onfido/models/sdk_token_request.rb +252 -0
  227. data/lib/onfido/models/sdk_token_response.rb +222 -0
  228. data/lib/onfido/models/task.rb +329 -0
  229. data/lib/onfido/models/task_item.rb +287 -0
  230. data/lib/onfido/models/timeline_file_reference.rb +239 -0
  231. data/lib/onfido/models/us_driving_licence_breakdown.rb +232 -0
  232. data/lib/onfido/models/us_driving_licence_breakdown_address.rb +224 -0
  233. data/lib/onfido/models/us_driving_licence_breakdown_address_breakdown.rb +259 -0
  234. data/lib/onfido/models/us_driving_licence_breakdown_document.rb +224 -0
  235. data/lib/onfido/models/us_driving_licence_breakdown_document_breakdown.rb +241 -0
  236. data/lib/onfido/models/us_driving_licence_breakdown_personal.rb +224 -0
  237. data/lib/onfido/models/us_driving_licence_breakdown_personal_breakdown.rb +322 -0
  238. data/lib/onfido/models/us_driving_licence_builder.rb +505 -0
  239. data/lib/onfido/models/us_driving_licence_report.rb +354 -0
  240. data/lib/onfido/models/us_driving_licence_shared.rb +499 -0
  241. data/lib/onfido/models/video_reasons.rb +245 -0
  242. data/lib/onfido/models/watchlist_aml_breakdown.rb +241 -0
  243. data/lib/onfido/models/watchlist_aml_breakdown_adverse_media.rb +215 -0
  244. data/lib/onfido/models/watchlist_aml_breakdown_legal_and_regulatory_warnings.rb +215 -0
  245. data/lib/onfido/models/watchlist_aml_breakdown_politically_exposed_person.rb +215 -0
  246. data/lib/onfido/models/watchlist_aml_breakdown_sanction.rb +215 -0
  247. data/lib/onfido/models/watchlist_aml_properties.rb +217 -0
  248. data/lib/onfido/models/watchlist_aml_report.rb +354 -0
  249. data/lib/onfido/models/watchlist_enhanced_breakdown.rb +241 -0
  250. data/lib/onfido/models/watchlist_enhanced_properties.rb +217 -0
  251. data/lib/onfido/models/watchlist_enhanced_report.rb +354 -0
  252. data/lib/onfido/models/watchlist_monitor.rb +342 -0
  253. data/lib/onfido/models/watchlist_monitor_builder.rb +292 -0
  254. data/lib/onfido/models/watchlist_monitor_match.rb +225 -0
  255. data/lib/onfido/models/watchlist_monitor_matches_list.rb +223 -0
  256. data/lib/onfido/models/watchlist_monitor_matches_updater.rb +227 -0
  257. data/lib/onfido/models/watchlist_monitor_response.rb +254 -0
  258. data/lib/onfido/models/watchlist_monitor_shared.rb +285 -0
  259. data/lib/onfido/models/watchlist_monitors_list.rb +223 -0
  260. data/lib/onfido/models/watchlist_peps_only_report.rb +354 -0
  261. data/lib/onfido/models/watchlist_sanctions_only_report.rb +354 -0
  262. data/lib/onfido/models/watchlist_standard_breakdown.rb +232 -0
  263. data/lib/onfido/models/watchlist_standard_properties.rb +217 -0
  264. data/lib/onfido/models/watchlist_standard_report.rb +354 -0
  265. data/lib/onfido/models/webhook.rb +304 -0
  266. data/lib/onfido/models/webhook_builder.rb +274 -0
  267. data/lib/onfido/models/webhook_create.rb +222 -0
  268. data/lib/onfido/models/webhook_event.rb +214 -0
  269. data/lib/onfido/models/webhook_event_payload.rb +273 -0
  270. data/lib/onfido/models/webhook_event_payload_object.rb +260 -0
  271. data/lib/onfido/models/webhook_event_type.rb +56 -0
  272. data/lib/onfido/models/webhook_resend.rb +216 -0
  273. data/lib/onfido/models/webhook_response.rb +252 -0
  274. data/lib/onfido/models/webhook_shared.rb +249 -0
  275. data/lib/onfido/models/webhook_update.rb +215 -0
  276. data/lib/onfido/models/webhook_updater.rb +267 -0
  277. data/lib/onfido/models/webhooks_list.rb +223 -0
  278. data/lib/onfido/models/webhooks_resend_item.rb +261 -0
  279. data/lib/onfido/models/workflow_run.rb +416 -0
  280. data/lib/onfido/models/workflow_run_builder.rb +316 -0
  281. data/lib/onfido/models/workflow_run_request.rb +217 -0
  282. data/lib/onfido/models/workflow_run_response.rb +317 -0
  283. data/lib/onfido/models/workflow_run_response_error.rb +226 -0
  284. data/lib/onfido/models/workflow_run_shared.rb +296 -0
  285. data/lib/onfido/models/workflow_run_shared_link.rb +290 -0
  286. data/lib/onfido/version.rb +12 -2
  287. data/lib/onfido/webhook_event_verifier.rb +20 -0
  288. data/lib/onfido.rb +309 -25
  289. data/onfido.gemspec +42 -33
  290. data/spec/integrations/address_picker_spec.rb +16 -0
  291. data/spec/integrations/applicant_spec.rb +73 -95
  292. data/spec/integrations/check_spec.rb +60 -41
  293. data/spec/integrations/document_spec.rb +28 -57
  294. data/spec/integrations/extraction_spec.rb +27 -12
  295. data/spec/integrations/id_photo_spec.rb +55 -0
  296. data/spec/integrations/live_photo_spec.rb +28 -45
  297. data/spec/integrations/live_video_spec.rb +33 -19
  298. data/spec/integrations/media/sample_driving_licence.png +0 -0
  299. data/spec/integrations/media/sample_photo.png +0 -0
  300. data/spec/integrations/motion_capture_spec.rb +30 -24
  301. data/spec/integrations/report_schema_spec.rb +45 -0
  302. data/spec/integrations/report_spec.rb +34 -25
  303. data/spec/integrations/sdk_token_spec.rb +12 -10
  304. data/spec/integrations/tasks_spec.rb +45 -0
  305. data/spec/integrations/watchlist_monitor_spec.rb +73 -0
  306. data/spec/integrations/webhook_spec.rb +40 -88
  307. data/spec/integrations/workflow_run_output_spec.rb +117 -0
  308. data/spec/integrations/workflow_run_spec.rb +64 -34
  309. data/spec/shared_contexts/with_applicant.rb +24 -0
  310. data/spec/shared_contexts/with_check.rb +18 -0
  311. data/spec/shared_contexts/with_document.rb +13 -0
  312. data/spec/shared_contexts/with_live_photo.rb +18 -0
  313. data/spec/shared_contexts/with_onfido.rb +14 -0
  314. data/spec/shared_contexts/with_workflow_run.rb +19 -0
  315. data/spec/spec_helper.rb +73 -11
  316. data/spec/webhook_event_verifier_spec.rb +29 -0
  317. metadata +367 -157
  318. data/.github/workflows/gem-push.yml +0 -31
  319. data/.github/workflows/ruby.yml +0 -25
  320. data/.gitignore +0 -19
  321. data/.rspec +0 -2
  322. data/.rubocop.yml +0 -13
  323. data/lib/onfido/api.rb +0 -65
  324. data/lib/onfido/errors/connection_error.rb +0 -6
  325. data/lib/onfido/errors/onfido_error.rb +0 -30
  326. data/lib/onfido/errors/request_error.rb +0 -6
  327. data/lib/onfido/errors/server_error.rb +0 -6
  328. data/lib/onfido/options.rb +0 -38
  329. data/lib/onfido/resource.rb +0 -153
  330. data/lib/onfido/resources/address.rb +0 -9
  331. data/lib/onfido/resources/applicant.rb +0 -29
  332. data/lib/onfido/resources/check.rb +0 -28
  333. data/lib/onfido/resources/document.rb +0 -28
  334. data/lib/onfido/resources/extraction.rb +0 -11
  335. data/lib/onfido/resources/live_photo.rb +0 -27
  336. data/lib/onfido/resources/live_video.rb +0 -17
  337. data/lib/onfido/resources/monitor.rb +0 -32
  338. data/lib/onfido/resources/motion_capture.rb +0 -21
  339. data/lib/onfido/resources/report.rb +0 -21
  340. data/lib/onfido/resources/sdk_token.rb +0 -10
  341. data/lib/onfido/resources/webhook.rb +0 -40
  342. data/lib/onfido/resources/workflow_run.rb +0 -21
  343. data/spec/integrations/address_spec.rb +0 -13
  344. data/spec/integrations/monitor_spec.rb +0 -100
  345. data/spec/integrations/resource_spec.rb +0 -106
  346. data/spec/onfido/api_spec.rb +0 -22
  347. data/spec/onfido/connection_error_spec.rb +0 -20
  348. data/spec/onfido/options_spec.rb +0 -39
  349. data/spec/onfido/request_error_spec.rb +0 -36
  350. data/spec/support/fake_onfido_api.rb +0 -295
  351. data/spec/support/fixtures/4xx_response.json +0 -14
  352. data/spec/support/fixtures/addresses.json +0 -24
  353. data/spec/support/fixtures/applicant.json +0 -28
  354. data/spec/support/fixtures/applicants.json +0 -12
  355. data/spec/support/fixtures/check.json +0 -12
  356. data/spec/support/fixtures/checks.json +0 -16
  357. data/spec/support/fixtures/document.json +0 -10
  358. data/spec/support/fixtures/documents.json +0 -23
  359. data/spec/support/fixtures/extraction.json +0 -23
  360. data/spec/support/fixtures/live_photo.json +0 -9
  361. data/spec/support/fixtures/live_photos.json +0 -22
  362. data/spec/support/fixtures/live_video.json +0 -23
  363. data/spec/support/fixtures/live_videos.json +0 -27
  364. data/spec/support/fixtures/monitor.json +0 -8
  365. data/spec/support/fixtures/monitor_matches.json +0 -12
  366. data/spec/support/fixtures/monitors.json +0 -12
  367. data/spec/support/fixtures/motion_capture.json +0 -9
  368. data/spec/support/fixtures/motion_captures.json +0 -13
  369. data/spec/support/fixtures/not_scheduled_for_deletion_error.json +0 -7
  370. data/spec/support/fixtures/report.json +0 -10
  371. data/spec/support/fixtures/reports.json +0 -24
  372. data/spec/support/fixtures/sdk_token.json +0 -3
  373. data/spec/support/fixtures/signed_workflow_run.pdf +0 -0
  374. data/spec/support/fixtures/unexpected_error_format.json +0 -3
  375. data/spec/support/fixtures/webhook.json +0 -14
  376. data/spec/support/fixtures/webhooks.json +0 -31
  377. data/spec/support/fixtures/workflow_run.json +0 -20
  378. data/spec/support/fixtures/workflow_runs.json +0 -42
@@ -0,0 +1,529 @@
1
+ =begin
2
+ #Onfido API v3.6
3
+
4
+ #The Onfido API (v3.6)
5
+
6
+ The version of the OpenAPI document: v3.6
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.6.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Onfido
17
+ class DocumentWithDriverVerificationReportAllOfProperties
18
+ attr_accessor :date_of_birth
19
+
20
+ attr_accessor :date_of_expiry
21
+
22
+ attr_accessor :document_numbers
23
+
24
+ attr_accessor :document_type
25
+
26
+ attr_accessor :first_name
27
+
28
+ attr_accessor :gender
29
+
30
+ attr_accessor :issuing_country
31
+
32
+ attr_accessor :last_name
33
+
34
+ attr_accessor :nationality
35
+
36
+ attr_accessor :issuing_state
37
+
38
+ attr_accessor :issuing_date
39
+
40
+ attr_accessor :categorisation
41
+
42
+ attr_accessor :mrz_line1
43
+
44
+ attr_accessor :mrz_line2
45
+
46
+ attr_accessor :mrz_line3
47
+
48
+ attr_accessor :address
49
+
50
+ attr_accessor :place_of_birth
51
+
52
+ attr_accessor :spouse_name
53
+
54
+ attr_accessor :widow_name
55
+
56
+ attr_accessor :alias_name
57
+
58
+ attr_accessor :issuing_authority
59
+
60
+ attr_accessor :real_id_compliance
61
+
62
+ attr_accessor :address_lines
63
+
64
+ attr_accessor :barcode
65
+
66
+ attr_accessor :nfc
67
+
68
+ attr_accessor :driving_licence_information
69
+
70
+ attr_accessor :document_classification
71
+
72
+ attr_accessor :extracted_data
73
+
74
+ # True for **non-restricted** driving licences
75
+ attr_accessor :drivers_licence
76
+
77
+ # True for **limited/restricted** driving license, including learner's permits
78
+ attr_accessor :restricted_licence
79
+
80
+ # Underlying, non-normalised, licence category (e.g. \"Junior operators license\")
81
+ attr_accessor :raw_licence_category
82
+
83
+ # Comma-separated vehicle classes that the user is qualified for
84
+ attr_accessor :raw_vehicle_classes
85
+
86
+ # Detailed classes/categories information
87
+ attr_accessor :vehicle_class_details
88
+
89
+ attr_accessor :passenger_vehicle
90
+
91
+ # Attribute mapping from ruby-style variable name to JSON key.
92
+ def self.attribute_map
93
+ {
94
+ :'date_of_birth' => :'date_of_birth',
95
+ :'date_of_expiry' => :'date_of_expiry',
96
+ :'document_numbers' => :'document_numbers',
97
+ :'document_type' => :'document_type',
98
+ :'first_name' => :'first_name',
99
+ :'gender' => :'gender',
100
+ :'issuing_country' => :'issuing_country',
101
+ :'last_name' => :'last_name',
102
+ :'nationality' => :'nationality',
103
+ :'issuing_state' => :'issuing_state',
104
+ :'issuing_date' => :'issuing_date',
105
+ :'categorisation' => :'categorisation',
106
+ :'mrz_line1' => :'mrz_line1',
107
+ :'mrz_line2' => :'mrz_line2',
108
+ :'mrz_line3' => :'mrz_line3',
109
+ :'address' => :'address',
110
+ :'place_of_birth' => :'place_of_birth',
111
+ :'spouse_name' => :'spouse_name',
112
+ :'widow_name' => :'widow_name',
113
+ :'alias_name' => :'alias_name',
114
+ :'issuing_authority' => :'issuing_authority',
115
+ :'real_id_compliance' => :'real_id_compliance',
116
+ :'address_lines' => :'address_lines',
117
+ :'barcode' => :'barcode',
118
+ :'nfc' => :'nfc',
119
+ :'driving_licence_information' => :'driving_licence_information',
120
+ :'document_classification' => :'document_classification',
121
+ :'extracted_data' => :'extracted_data',
122
+ :'drivers_licence' => :'drivers_licence',
123
+ :'restricted_licence' => :'restricted_licence',
124
+ :'raw_licence_category' => :'raw_licence_category',
125
+ :'raw_vehicle_classes' => :'raw_vehicle_classes',
126
+ :'vehicle_class_details' => :'vehicle_class_details',
127
+ :'passenger_vehicle' => :'passenger_vehicle'
128
+ }
129
+ end
130
+
131
+ # Returns all the JSON keys this model knows about
132
+ def self.acceptable_attributes
133
+ attribute_map.values
134
+ end
135
+
136
+ # Attribute type mapping.
137
+ def self.openapi_types
138
+ {
139
+ :'date_of_birth' => :'Date',
140
+ :'date_of_expiry' => :'Date',
141
+ :'document_numbers' => :'Array<DocumentPropertiesDocumentNumbersInner>',
142
+ :'document_type' => :'String',
143
+ :'first_name' => :'String',
144
+ :'gender' => :'String',
145
+ :'issuing_country' => :'String',
146
+ :'last_name' => :'String',
147
+ :'nationality' => :'String',
148
+ :'issuing_state' => :'String',
149
+ :'issuing_date' => :'Date',
150
+ :'categorisation' => :'String',
151
+ :'mrz_line1' => :'String',
152
+ :'mrz_line2' => :'String',
153
+ :'mrz_line3' => :'String',
154
+ :'address' => :'String',
155
+ :'place_of_birth' => :'String',
156
+ :'spouse_name' => :'String',
157
+ :'widow_name' => :'String',
158
+ :'alias_name' => :'String',
159
+ :'issuing_authority' => :'String',
160
+ :'real_id_compliance' => :'Boolean',
161
+ :'address_lines' => :'DocumentPropertiesAddressLines',
162
+ :'barcode' => :'Array<DocumentPropertiesBarcodeInner>',
163
+ :'nfc' => :'DocumentPropertiesNfc',
164
+ :'driving_licence_information' => :'DocumentPropertiesDrivingLicenceInformation',
165
+ :'document_classification' => :'DocumentPropertiesDocumentClassification',
166
+ :'extracted_data' => :'DocumentPropertiesExtractedData',
167
+ :'drivers_licence' => :'Boolean',
168
+ :'restricted_licence' => :'Boolean',
169
+ :'raw_licence_category' => :'String',
170
+ :'raw_vehicle_classes' => :'String',
171
+ :'vehicle_class_details' => :'Array<DocumentWithDriverVerificationReportAllOfPropertiesAllOfVehicleClassDetailsInner>',
172
+ :'passenger_vehicle' => :'DocumentWithDriverVerificationReportAllOfPropertiesAllOfPassengerVehicle'
173
+ }
174
+ end
175
+
176
+ # List of attributes with nullable: true
177
+ def self.openapi_nullable
178
+ Set.new([
179
+ ])
180
+ end
181
+
182
+ # List of class defined in allOf (OpenAPI v3)
183
+ def self.openapi_all_of
184
+ [
185
+ :'DocumentProperties'
186
+ ]
187
+ end
188
+
189
+ # Initializes the object
190
+ # @param [Hash] attributes Model attributes in the form of hash
191
+ def initialize(attributes = {})
192
+ if (!attributes.is_a?(Hash))
193
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Onfido::DocumentWithDriverVerificationReportAllOfProperties` initialize method"
194
+ end
195
+
196
+ # check to see if the attribute exists and convert string to symbol for hash key
197
+ attributes = attributes.each_with_object({}) { |(k, v), h|
198
+ if (!self.class.attribute_map.key?(k.to_sym))
199
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Onfido::DocumentWithDriverVerificationReportAllOfProperties`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
200
+ end
201
+ h[k.to_sym] = v
202
+ }
203
+
204
+ if attributes.key?(:'date_of_birth')
205
+ self.date_of_birth = attributes[:'date_of_birth']
206
+ end
207
+
208
+ if attributes.key?(:'date_of_expiry')
209
+ self.date_of_expiry = attributes[:'date_of_expiry']
210
+ end
211
+
212
+ if attributes.key?(:'document_numbers')
213
+ if (value = attributes[:'document_numbers']).is_a?(Array)
214
+ self.document_numbers = value
215
+ end
216
+ end
217
+
218
+ if attributes.key?(:'document_type')
219
+ self.document_type = attributes[:'document_type']
220
+ end
221
+
222
+ if attributes.key?(:'first_name')
223
+ self.first_name = attributes[:'first_name']
224
+ end
225
+
226
+ if attributes.key?(:'gender')
227
+ self.gender = attributes[:'gender']
228
+ end
229
+
230
+ if attributes.key?(:'issuing_country')
231
+ self.issuing_country = attributes[:'issuing_country']
232
+ end
233
+
234
+ if attributes.key?(:'last_name')
235
+ self.last_name = attributes[:'last_name']
236
+ end
237
+
238
+ if attributes.key?(:'nationality')
239
+ self.nationality = attributes[:'nationality']
240
+ end
241
+
242
+ if attributes.key?(:'issuing_state')
243
+ self.issuing_state = attributes[:'issuing_state']
244
+ end
245
+
246
+ if attributes.key?(:'issuing_date')
247
+ self.issuing_date = attributes[:'issuing_date']
248
+ end
249
+
250
+ if attributes.key?(:'categorisation')
251
+ self.categorisation = attributes[:'categorisation']
252
+ end
253
+
254
+ if attributes.key?(:'mrz_line1')
255
+ self.mrz_line1 = attributes[:'mrz_line1']
256
+ end
257
+
258
+ if attributes.key?(:'mrz_line2')
259
+ self.mrz_line2 = attributes[:'mrz_line2']
260
+ end
261
+
262
+ if attributes.key?(:'mrz_line3')
263
+ self.mrz_line3 = attributes[:'mrz_line3']
264
+ end
265
+
266
+ if attributes.key?(:'address')
267
+ self.address = attributes[:'address']
268
+ end
269
+
270
+ if attributes.key?(:'place_of_birth')
271
+ self.place_of_birth = attributes[:'place_of_birth']
272
+ end
273
+
274
+ if attributes.key?(:'spouse_name')
275
+ self.spouse_name = attributes[:'spouse_name']
276
+ end
277
+
278
+ if attributes.key?(:'widow_name')
279
+ self.widow_name = attributes[:'widow_name']
280
+ end
281
+
282
+ if attributes.key?(:'alias_name')
283
+ self.alias_name = attributes[:'alias_name']
284
+ end
285
+
286
+ if attributes.key?(:'issuing_authority')
287
+ self.issuing_authority = attributes[:'issuing_authority']
288
+ end
289
+
290
+ if attributes.key?(:'real_id_compliance')
291
+ self.real_id_compliance = attributes[:'real_id_compliance']
292
+ end
293
+
294
+ if attributes.key?(:'address_lines')
295
+ self.address_lines = attributes[:'address_lines']
296
+ end
297
+
298
+ if attributes.key?(:'barcode')
299
+ if (value = attributes[:'barcode']).is_a?(Array)
300
+ self.barcode = value
301
+ end
302
+ end
303
+
304
+ if attributes.key?(:'nfc')
305
+ self.nfc = attributes[:'nfc']
306
+ end
307
+
308
+ if attributes.key?(:'driving_licence_information')
309
+ self.driving_licence_information = attributes[:'driving_licence_information']
310
+ end
311
+
312
+ if attributes.key?(:'document_classification')
313
+ self.document_classification = attributes[:'document_classification']
314
+ end
315
+
316
+ if attributes.key?(:'extracted_data')
317
+ self.extracted_data = attributes[:'extracted_data']
318
+ end
319
+
320
+ if attributes.key?(:'drivers_licence')
321
+ self.drivers_licence = attributes[:'drivers_licence']
322
+ end
323
+
324
+ if attributes.key?(:'restricted_licence')
325
+ self.restricted_licence = attributes[:'restricted_licence']
326
+ end
327
+
328
+ if attributes.key?(:'raw_licence_category')
329
+ self.raw_licence_category = attributes[:'raw_licence_category']
330
+ end
331
+
332
+ if attributes.key?(:'raw_vehicle_classes')
333
+ self.raw_vehicle_classes = attributes[:'raw_vehicle_classes']
334
+ end
335
+
336
+ if attributes.key?(:'vehicle_class_details')
337
+ if (value = attributes[:'vehicle_class_details']).is_a?(Array)
338
+ self.vehicle_class_details = value
339
+ end
340
+ end
341
+
342
+ if attributes.key?(:'passenger_vehicle')
343
+ self.passenger_vehicle = attributes[:'passenger_vehicle']
344
+ end
345
+ end
346
+
347
+ # Show invalid properties with the reasons. Usually used together with valid?
348
+ # @return Array for valid properties with the reasons
349
+ def list_invalid_properties
350
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
351
+ invalid_properties = Array.new
352
+ invalid_properties
353
+ end
354
+
355
+ # Check to see if the all the properties in the model are valid
356
+ # @return true if the model is valid
357
+ def valid?
358
+ warn '[DEPRECATED] the `valid?` method is obsolete'
359
+ true
360
+ end
361
+
362
+ # Checks equality by comparing each attribute.
363
+ # @param [Object] Object to be compared
364
+ def ==(o)
365
+ return true if self.equal?(o)
366
+ self.class == o.class &&
367
+ date_of_birth == o.date_of_birth &&
368
+ date_of_expiry == o.date_of_expiry &&
369
+ document_numbers == o.document_numbers &&
370
+ document_type == o.document_type &&
371
+ first_name == o.first_name &&
372
+ gender == o.gender &&
373
+ issuing_country == o.issuing_country &&
374
+ last_name == o.last_name &&
375
+ nationality == o.nationality &&
376
+ issuing_state == o.issuing_state &&
377
+ issuing_date == o.issuing_date &&
378
+ categorisation == o.categorisation &&
379
+ mrz_line1 == o.mrz_line1 &&
380
+ mrz_line2 == o.mrz_line2 &&
381
+ mrz_line3 == o.mrz_line3 &&
382
+ address == o.address &&
383
+ place_of_birth == o.place_of_birth &&
384
+ spouse_name == o.spouse_name &&
385
+ widow_name == o.widow_name &&
386
+ alias_name == o.alias_name &&
387
+ issuing_authority == o.issuing_authority &&
388
+ real_id_compliance == o.real_id_compliance &&
389
+ address_lines == o.address_lines &&
390
+ barcode == o.barcode &&
391
+ nfc == o.nfc &&
392
+ driving_licence_information == o.driving_licence_information &&
393
+ document_classification == o.document_classification &&
394
+ extracted_data == o.extracted_data &&
395
+ drivers_licence == o.drivers_licence &&
396
+ restricted_licence == o.restricted_licence &&
397
+ raw_licence_category == o.raw_licence_category &&
398
+ raw_vehicle_classes == o.raw_vehicle_classes &&
399
+ vehicle_class_details == o.vehicle_class_details &&
400
+ passenger_vehicle == o.passenger_vehicle
401
+ end
402
+
403
+ # @see the `==` method
404
+ # @param [Object] Object to be compared
405
+ def eql?(o)
406
+ self == o
407
+ end
408
+
409
+ # Calculates hash code according to all attributes.
410
+ # @return [Integer] Hash code
411
+ def hash
412
+ [date_of_birth, date_of_expiry, document_numbers, document_type, first_name, gender, issuing_country, last_name, nationality, issuing_state, issuing_date, categorisation, mrz_line1, mrz_line2, mrz_line3, address, place_of_birth, spouse_name, widow_name, alias_name, issuing_authority, real_id_compliance, address_lines, barcode, nfc, driving_licence_information, document_classification, extracted_data, drivers_licence, restricted_licence, raw_licence_category, raw_vehicle_classes, vehicle_class_details, passenger_vehicle].hash
413
+ end
414
+
415
+ # Builds the object from hash
416
+ # @param [Hash] attributes Model attributes in the form of hash
417
+ # @return [Object] Returns the model itself
418
+ def self.build_from_hash(attributes)
419
+ return nil unless attributes.is_a?(Hash)
420
+ attributes = attributes.transform_keys(&:to_sym)
421
+ transformed_hash = {}
422
+ openapi_types.each_pair do |key, type|
423
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
424
+ transformed_hash["#{key}"] = nil
425
+ elsif type =~ /\AArray<(.*)>/i
426
+ # check to ensure the input is an array given that the attribute
427
+ # is documented as an array but the input is not
428
+ if attributes[attribute_map[key]].is_a?(Array)
429
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
430
+ end
431
+ elsif !attributes[attribute_map[key]].nil?
432
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
433
+ end
434
+ end
435
+ new(transformed_hash)
436
+ end
437
+
438
+ # Deserializes the data based on type
439
+ # @param string type Data type
440
+ # @param string value Value to be deserialized
441
+ # @return [Object] Deserialized data
442
+ def self._deserialize(type, value)
443
+ case type.to_sym
444
+ when :Time
445
+ Time.parse(value)
446
+ when :Date
447
+ Date.parse(value)
448
+ when :String
449
+ value.to_s
450
+ when :Integer
451
+ value.to_i
452
+ when :Float
453
+ value.to_f
454
+ when :Boolean
455
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
456
+ true
457
+ else
458
+ false
459
+ end
460
+ when :Object
461
+ # generic object (usually a Hash), return directly
462
+ value
463
+ when /\AArray<(?<inner_type>.+)>\z/
464
+ inner_type = Regexp.last_match[:inner_type]
465
+ value.map { |v| _deserialize(inner_type, v) }
466
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
467
+ k_type = Regexp.last_match[:k_type]
468
+ v_type = Regexp.last_match[:v_type]
469
+ {}.tap do |hash|
470
+ value.each do |k, v|
471
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
472
+ end
473
+ end
474
+ else # model
475
+ # models (e.g. Pet) or oneOf
476
+ klass = Onfido.const_get(type)
477
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
478
+ end
479
+ end
480
+
481
+ # Returns the string representation of the object
482
+ # @return [String] String presentation of the object
483
+ def to_s
484
+ to_hash.to_s
485
+ end
486
+
487
+ # to_body is an alias to to_hash (backward compatibility)
488
+ # @return [Hash] Returns the object in the form of hash
489
+ def to_body
490
+ to_hash
491
+ end
492
+
493
+ # Returns the object in the form of hash
494
+ # @return [Hash] Returns the object in the form of hash
495
+ def to_hash
496
+ hash = {}
497
+ self.class.attribute_map.each_pair do |attr, param|
498
+ value = self.send(attr)
499
+ if value.nil?
500
+ is_nullable = self.class.openapi_nullable.include?(attr)
501
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
502
+ end
503
+
504
+ hash[param] = _to_hash(value)
505
+ end
506
+ hash
507
+ end
508
+
509
+ # Outputs non-array value in the form of hash
510
+ # For object, use to_hash. Otherwise, just return the value
511
+ # @param [Object] value Any valid value
512
+ # @return [Hash] Returns the value in the form of hash
513
+ def _to_hash(value)
514
+ if value.is_a?(Array)
515
+ value.compact.map { |v| _to_hash(v) }
516
+ elsif value.is_a?(Hash)
517
+ {}.tap do |hash|
518
+ value.each { |k, v| hash[k] = _to_hash(v) }
519
+ end
520
+ elsif value.respond_to? :to_hash
521
+ value.to_hash
522
+ else
523
+ value
524
+ end
525
+ end
526
+
527
+ end
528
+
529
+ end