norbelys 0.1.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 (624) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/README.md +429 -0
  4. data/Rakefile +10 -0
  5. data/docs/AddProgramSenderParams.md +18 -0
  6. data/docs/AiEmailVariantContent.md +28 -0
  7. data/docs/AnalyticsApi.md +81 -0
  8. data/docs/AnalyticsQuery.md +20 -0
  9. data/docs/AnalyticsQueryName.md +15 -0
  10. data/docs/AnalyticsQueryParams.md +50 -0
  11. data/docs/AnalyticsQueryResult.md +20 -0
  12. data/docs/ApiError.md +18 -0
  13. data/docs/ApiErrorDetail.md +26 -0
  14. data/docs/AudienceActivityAction.md +15 -0
  15. data/docs/AudienceActivityCondition.md +20 -0
  16. data/docs/AudienceActivityLinkFilter.md +20 -0
  17. data/docs/AudienceActivityLinkMatchOp.md +15 -0
  18. data/docs/AudienceActivityParams.md +32 -0
  19. data/docs/AudienceAttributeCondition.md +22 -0
  20. data/docs/AudienceConditionOp.md +15 -0
  21. data/docs/AudienceConditionValue.md +15 -0
  22. data/docs/AudienceFilter.md +20 -0
  23. data/docs/AudienceMatch.md +15 -0
  24. data/docs/AudienceRule.md +26 -0
  25. data/docs/AudienceSource.md +26 -0
  26. data/docs/AudienceStatusBreakdown.md +20 -0
  27. data/docs/AudienceSummary.md +26 -0
  28. data/docs/AudienceWeekPoint.md +20 -0
  29. data/docs/BulkUpdateSenderPatch.md +34 -0
  30. data/docs/BulkUpdateSendersInput.md +20 -0
  31. data/docs/BulkUpdateSendersResult.md +24 -0
  32. data/docs/CampaignReportShare.md +22 -0
  33. data/docs/CollectionAddress.md +28 -0
  34. data/docs/ConnectionSettings.md +22 -0
  35. data/docs/CreateSenderInput.md +42 -0
  36. data/docs/DetachResult.md +18 -0
  37. data/docs/DmarcRecordToPublish.md +22 -0
  38. data/docs/Domain.md +38 -0
  39. data/docs/DomainAge.md +30 -0
  40. data/docs/DomainCapacity.md +28 -0
  41. data/docs/DomainCreateParams.md +24 -0
  42. data/docs/DomainDetail.md +42 -0
  43. data/docs/DomainHealth.md +24 -0
  44. data/docs/DomainList.md +26 -0
  45. data/docs/DomainMonitoring.md +30 -0
  46. data/docs/DomainMonitoringParams.md +20 -0
  47. data/docs/DomainSending.md +26 -0
  48. data/docs/DomainSendingPolicy.md +36 -0
  49. data/docs/DomainSendingPolicyParams.md +32 -0
  50. data/docs/DomainSendingUpdateParams.md +20 -0
  51. data/docs/DomainTracking.md +50 -0
  52. data/docs/DomainTrackingParams.md +22 -0
  53. data/docs/DomainTrackingUpdateParams.md +24 -0
  54. data/docs/DomainUpdateParams.md +22 -0
  55. data/docs/DomainsApi.md +525 -0
  56. data/docs/EmailVariantContent.md +28 -0
  57. data/docs/EnrollProgramParams.md +28 -0
  58. data/docs/EnrollProgramResult.md +28 -0
  59. data/docs/Enrollment.md +42 -0
  60. data/docs/EnrollmentCounts.md +44 -0
  61. data/docs/EnrollmentList.md +28 -0
  62. data/docs/EnrollmentPersonRef.md +22 -0
  63. data/docs/EnrollmentProgramRef.md +20 -0
  64. data/docs/Features.md +18 -0
  65. data/docs/Field.md +38 -0
  66. data/docs/FieldCreateParams.md +26 -0
  67. data/docs/FieldList.md +20 -0
  68. data/docs/FieldType.md +15 -0
  69. data/docs/FieldUpdateParams.md +24 -0
  70. data/docs/FieldsApi.md +297 -0
  71. data/docs/FileObject.md +28 -0
  72. data/docs/FileUpload.md +22 -0
  73. data/docs/FilesApi.md +81 -0
  74. data/docs/Group.md +34 -0
  75. data/docs/GroupAddMembersParams.md +20 -0
  76. data/docs/GroupAddMembersResult.md +22 -0
  77. data/docs/GroupCreateParams.md +22 -0
  78. data/docs/GroupList.md +26 -0
  79. data/docs/GroupUpdateParams.md +22 -0
  80. data/docs/GroupsApi.md +521 -0
  81. data/docs/ImapConnectionUpdate.md +22 -0
  82. data/docs/InboundMessage.md +48 -0
  83. data/docs/Integration.md +34 -0
  84. data/docs/IntegrationConfig.md +26 -0
  85. data/docs/IntegrationConnectParams.md +18 -0
  86. data/docs/IntegrationConnectResult.md +18 -0
  87. data/docs/IntegrationList.md +26 -0
  88. data/docs/IntegrationNotifyConfig.md +24 -0
  89. data/docs/IntegrationOptions.md +18 -0
  90. data/docs/IntegrationProvider.md +15 -0
  91. data/docs/IntegrationStatus.md +15 -0
  92. data/docs/IntegrationSyncResult.md +18 -0
  93. data/docs/IntegrationUpdateParams.md +18 -0
  94. data/docs/IntegrationsApi.md +513 -0
  95. data/docs/LaunchProgramParams.md +18 -0
  96. data/docs/LaunchProgramResult.md +22 -0
  97. data/docs/Message.md +58 -0
  98. data/docs/MessageAddress.md +20 -0
  99. data/docs/MessageAttachment.md +28 -0
  100. data/docs/MessageAttachmentDownload.md +32 -0
  101. data/docs/MessageAttachmentInput.md +22 -0
  102. data/docs/MessageAttachmentList.md +22 -0
  103. data/docs/MessageCreateParams.md +44 -0
  104. data/docs/MessageEnrollParams.md +26 -0
  105. data/docs/MessageList.md +26 -0
  106. data/docs/MessageReplyParams.md +40 -0
  107. data/docs/MessageSource.md +36 -0
  108. data/docs/MessageSourceAttachment.md +22 -0
  109. data/docs/MessageTestParams.md +40 -0
  110. data/docs/MessageUpdateParams.md +22 -0
  111. data/docs/MessagesApi.md +543 -0
  112. data/docs/MonthlyEmailUsageMeter.md +24 -0
  113. data/docs/Organization.md +30 -0
  114. data/docs/OrganizationAlerts.md +18 -0
  115. data/docs/OrganizationAlertsParams.md +18 -0
  116. data/docs/OrganizationApi.md +350 -0
  117. data/docs/OrganizationBouncePolicy.md +20 -0
  118. data/docs/OrganizationBouncePolicyParams.md +20 -0
  119. data/docs/OrganizationOnboarding.md +20 -0
  120. data/docs/OrganizationProfile.md +22 -0
  121. data/docs/OrganizationProfileParams.md +22 -0
  122. data/docs/OrganizationPulse.md +28 -0
  123. data/docs/OrganizationUpdateParams.md +24 -0
  124. data/docs/OrganizationUsage.md +26 -0
  125. data/docs/OutboundMessage.md +46 -0
  126. data/docs/PeopleApi.md +681 -0
  127. data/docs/PeopleBulkCreateParams.md +28 -0
  128. data/docs/PeopleBulkCreateResult.md +34 -0
  129. data/docs/Person.md +52 -0
  130. data/docs/PersonCreateParams.md +30 -0
  131. data/docs/PersonDetail.md +60 -0
  132. data/docs/PersonErased.md +20 -0
  133. data/docs/PersonGroupRef.md +22 -0
  134. data/docs/PersonImportItem.md +30 -0
  135. data/docs/PersonImportReason.md +22 -0
  136. data/docs/PersonImportStats.md +36 -0
  137. data/docs/PersonList.md +26 -0
  138. data/docs/PersonListItem.md +50 -0
  139. data/docs/PersonSegmentRef.md +22 -0
  140. data/docs/PersonUpdateParams.md +30 -0
  141. data/docs/Program.md +78 -0
  142. data/docs/ProgramCreateParams.md +62 -0
  143. data/docs/ProgramDetail.md +84 -0
  144. data/docs/ProgramList.md +26 -0
  145. data/docs/ProgramListItem.md +80 -0
  146. data/docs/ProgramPauseMeta.md +20 -0
  147. data/docs/ProgramSenderRef.md +26 -0
  148. data/docs/ProgramStats.md +22 -0
  149. data/docs/ProgramStepInput.md +38 -0
  150. data/docs/ProgramUpdateParams.md +62 -0
  151. data/docs/ProgramVariantInput.md +26 -0
  152. data/docs/ProgramsApi.md +1283 -0
  153. data/docs/ProgramsAudienceList.md +26 -0
  154. data/docs/ProgramsSendersList.md +26 -0
  155. data/docs/ProviderApiSenderInput.md +38 -0
  156. data/docs/PulseDeliverability.md +30 -0
  157. data/docs/PulseProgram.md +42 -0
  158. data/docs/PulseSenderFleet.md +30 -0
  159. data/docs/PulseValue.md +26 -0
  160. data/docs/ReportShare.md +22 -0
  161. data/docs/Segment.md +32 -0
  162. data/docs/SegmentCreateParams.md +22 -0
  163. data/docs/SegmentList.md +26 -0
  164. data/docs/SegmentUpdateParams.md +22 -0
  165. data/docs/SegmentsApi.md +373 -0
  166. data/docs/SelfHostedSenderInput.md +36 -0
  167. data/docs/Sender.md +66 -0
  168. data/docs/SenderBulkError.md +20 -0
  169. data/docs/SenderDetail.md +70 -0
  170. data/docs/SenderList.md +26 -0
  171. data/docs/SenderRemoveResult.md +20 -0
  172. data/docs/SenderUsage.md +24 -0
  173. data/docs/SenderWarmupStatus.md +20 -0
  174. data/docs/SendersApi.md +531 -0
  175. data/docs/SlackChannel.md +20 -0
  176. data/docs/SmtpConnectionSettings.md +26 -0
  177. data/docs/SmtpConnectionUpdate.md +26 -0
  178. data/docs/SmtpSenderInput.md +40 -0
  179. data/docs/StaticEmailVariantContent.md +28 -0
  180. data/docs/StepWithVariants.md +46 -0
  181. data/docs/Suppression.md +32 -0
  182. data/docs/SuppressionBulkParams.md +20 -0
  183. data/docs/SuppressionBulkResult.md +18 -0
  184. data/docs/SuppressionCreateParams.md +24 -0
  185. data/docs/SuppressionList.md +26 -0
  186. data/docs/SuppressionScope.md +15 -0
  187. data/docs/SuppressionsApi.md +369 -0
  188. data/docs/SyncModel.md +15 -0
  189. data/docs/TeamSize.md +15 -0
  190. data/docs/TrackingDnsRecord.md +22 -0
  191. data/docs/UpdateSenderInput.md +48 -0
  192. data/docs/UsageMeter.md +22 -0
  193. data/docs/UsagePlan.md +22 -0
  194. data/docs/Variant.md +34 -0
  195. data/docs/VariantAi.md +22 -0
  196. data/docs/VerifyApi.md +81 -0
  197. data/docs/VerifyEmailInput.md +18 -0
  198. data/docs/VerifyMx.md +22 -0
  199. data/docs/VerifyReachability.md +15 -0
  200. data/docs/VerifyReasonCode.md +15 -0
  201. data/docs/VerifyResult.md +38 -0
  202. data/docs/VerifySignals.md +28 -0
  203. data/docs/VerifySyntax.md +22 -0
  204. data/docs/VoiceSenderInput.md +38 -0
  205. data/docs/WarmupRuntimeStatus.md +32 -0
  206. data/docs/WarmupSettings.md +44 -0
  207. data/docs/WarmupTemplate.md +20 -0
  208. data/docs/WarmupTodayTally.md +22 -0
  209. data/lib/norbelys/api/analytics_api.rb +97 -0
  210. data/lib/norbelys/api/domains_api.rb +528 -0
  211. data/lib/norbelys/api/fields_api.rb +290 -0
  212. data/lib/norbelys/api/files_api.rb +97 -0
  213. data/lib/norbelys/api/groups_api.rb +516 -0
  214. data/lib/norbelys/api/integrations_api.rb +509 -0
  215. data/lib/norbelys/api/messages_api.rb +572 -0
  216. data/lib/norbelys/api/organization_api.rb +329 -0
  217. data/lib/norbelys/api/people_api.rb +689 -0
  218. data/lib/norbelys/api/programs_api.rb +1299 -0
  219. data/lib/norbelys/api/segments_api.rb +370 -0
  220. data/lib/norbelys/api/senders_api.rb +539 -0
  221. data/lib/norbelys/api/suppressions_api.rb +370 -0
  222. data/lib/norbelys/api/verify_api.rb +97 -0
  223. data/lib/norbelys/api_client.rb +394 -0
  224. data/lib/norbelys/api_error.rb +58 -0
  225. data/lib/norbelys/configuration.rb +308 -0
  226. data/lib/norbelys/models/add_program_sender_params.rb +222 -0
  227. data/lib/norbelys/models/ai_email_variant_content.rb +318 -0
  228. data/lib/norbelys/models/analytics_query.rb +252 -0
  229. data/lib/norbelys/models/analytics_query_name.rb +63 -0
  230. data/lib/norbelys/models/analytics_query_params.rb +485 -0
  231. data/lib/norbelys/models/analytics_query_result.rb +260 -0
  232. data/lib/norbelys/models/api_error.rb +221 -0
  233. data/lib/norbelys/models/api_error_detail.rb +310 -0
  234. data/lib/norbelys/models/audience_activity_action.rb +45 -0
  235. data/lib/norbelys/models/audience_activity_condition.rb +233 -0
  236. data/lib/norbelys/models/audience_activity_link_filter.rb +289 -0
  237. data/lib/norbelys/models/audience_activity_link_match_op.rb +40 -0
  238. data/lib/norbelys/models/audience_activity_params.rb +395 -0
  239. data/lib/norbelys/models/audience_attribute_condition.rb +289 -0
  240. data/lib/norbelys/models/audience_condition_op.rb +59 -0
  241. data/lib/norbelys/models/audience_condition_value.rb +107 -0
  242. data/lib/norbelys/models/audience_filter.rb +270 -0
  243. data/lib/norbelys/models/audience_match.rb +40 -0
  244. data/lib/norbelys/models/audience_rule.rb +104 -0
  245. data/lib/norbelys/models/audience_source.rb +343 -0
  246. data/lib/norbelys/models/audience_status_breakdown.rb +292 -0
  247. data/lib/norbelys/models/audience_summary.rb +351 -0
  248. data/lib/norbelys/models/audience_week_point.rb +258 -0
  249. data/lib/norbelys/models/bulk_update_sender_patch.rb +368 -0
  250. data/lib/norbelys/models/bulk_update_senders_input.rb +268 -0
  251. data/lib/norbelys/models/bulk_update_senders_result.rb +291 -0
  252. data/lib/norbelys/models/campaign_report_share.rb +244 -0
  253. data/lib/norbelys/models/collection_address.rb +321 -0
  254. data/lib/norbelys/models/connection_settings.rb +331 -0
  255. data/lib/norbelys/models/create_sender_input.rb +106 -0
  256. data/lib/norbelys/models/detach_result.rb +223 -0
  257. data/lib/norbelys/models/dmarc_record_to_publish.rb +252 -0
  258. data/lib/norbelys/models/domain.rb +421 -0
  259. data/lib/norbelys/models/domain_age.rb +351 -0
  260. data/lib/norbelys/models/domain_capacity.rb +397 -0
  261. data/lib/norbelys/models/domain_create_params.rb +307 -0
  262. data/lib/norbelys/models/domain_detail.rb +445 -0
  263. data/lib/norbelys/models/domain_health.rb +310 -0
  264. data/lib/norbelys/models/domain_list.rb +292 -0
  265. data/lib/norbelys/models/domain_monitoring.rb +380 -0
  266. data/lib/norbelys/models/domain_monitoring_params.rb +262 -0
  267. data/lib/norbelys/models/domain_sending.rb +302 -0
  268. data/lib/norbelys/models/domain_sending_policy.rb +479 -0
  269. data/lib/norbelys/models/domain_sending_policy_params.rb +389 -0
  270. data/lib/norbelys/models/domain_sending_update_params.rb +225 -0
  271. data/lib/norbelys/models/domain_tracking.rb +570 -0
  272. data/lib/norbelys/models/domain_tracking_params.rb +268 -0
  273. data/lib/norbelys/models/domain_tracking_update_params.rb +306 -0
  274. data/lib/norbelys/models/domain_update_params.rb +259 -0
  275. data/lib/norbelys/models/email_variant_content.rb +104 -0
  276. data/lib/norbelys/models/enroll_program_params.rb +308 -0
  277. data/lib/norbelys/models/enroll_program_result.rb +366 -0
  278. data/lib/norbelys/models/enrollment.rb +405 -0
  279. data/lib/norbelys/models/enrollment_counts.rb +660 -0
  280. data/lib/norbelys/models/enrollment_list.rb +308 -0
  281. data/lib/norbelys/models/enrollment_person_ref.rb +246 -0
  282. data/lib/norbelys/models/enrollment_program_ref.rb +239 -0
  283. data/lib/norbelys/models/features.rb +223 -0
  284. data/lib/norbelys/models/field.rb +401 -0
  285. data/lib/norbelys/models/field_create_params.rb +386 -0
  286. data/lib/norbelys/models/field_list.rb +234 -0
  287. data/lib/norbelys/models/field_type.rb +45 -0
  288. data/lib/norbelys/models/field_update_params.rb +324 -0
  289. data/lib/norbelys/models/file_object.rb +321 -0
  290. data/lib/norbelys/models/file_upload.rb +324 -0
  291. data/lib/norbelys/models/group.rb +339 -0
  292. data/lib/norbelys/models/group_add_members_params.rb +227 -0
  293. data/lib/norbelys/models/group_add_members_result.rb +313 -0
  294. data/lib/norbelys/models/group_create_params.rb +308 -0
  295. data/lib/norbelys/models/group_list.rb +299 -0
  296. data/lib/norbelys/models/group_update_params.rb +293 -0
  297. data/lib/norbelys/models/imap_connection_update.rb +317 -0
  298. data/lib/norbelys/models/inbound_message.rb +442 -0
  299. data/lib/norbelys/models/integration.rb +340 -0
  300. data/lib/norbelys/models/integration_config.rb +254 -0
  301. data/lib/norbelys/models/integration_connect_params.rb +244 -0
  302. data/lib/norbelys/models/integration_connect_result.rb +222 -0
  303. data/lib/norbelys/models/integration_list.rb +292 -0
  304. data/lib/norbelys/models/integration_notify_config.rb +246 -0
  305. data/lib/norbelys/models/integration_options.rb +224 -0
  306. data/lib/norbelys/models/integration_provider.rb +52 -0
  307. data/lib/norbelys/models/integration_status.rb +41 -0
  308. data/lib/norbelys/models/integration_sync_result.rb +224 -0
  309. data/lib/norbelys/models/integration_update_params.rb +222 -0
  310. data/lib/norbelys/models/launch_program_params.rb +230 -0
  311. data/lib/norbelys/models/launch_program_result.rb +292 -0
  312. data/lib/norbelys/models/message.rb +104 -0
  313. data/lib/norbelys/models/message_address.rb +232 -0
  314. data/lib/norbelys/models/message_attachment.rb +312 -0
  315. data/lib/norbelys/models/message_attachment_download.rb +341 -0
  316. data/lib/norbelys/models/message_attachment_input.rb +296 -0
  317. data/lib/norbelys/models/message_attachment_list.rb +253 -0
  318. data/lib/norbelys/models/message_create_params.rb +105 -0
  319. data/lib/norbelys/models/message_enroll_params.rb +278 -0
  320. data/lib/norbelys/models/message_list.rb +299 -0
  321. data/lib/norbelys/models/message_reply_params.rb +369 -0
  322. data/lib/norbelys/models/message_source.rb +348 -0
  323. data/lib/norbelys/models/message_source_attachment.rb +242 -0
  324. data/lib/norbelys/models/message_test_params.rb +364 -0
  325. data/lib/norbelys/models/message_update_params.rb +269 -0
  326. data/lib/norbelys/models/monthly_email_usage_meter.rb +303 -0
  327. data/lib/norbelys/models/organization.rb +321 -0
  328. data/lib/norbelys/models/organization_alerts.rb +223 -0
  329. data/lib/norbelys/models/organization_alerts_params.rb +216 -0
  330. data/lib/norbelys/models/organization_bounce_policy.rb +240 -0
  331. data/lib/norbelys/models/organization_bounce_policy_params.rb +226 -0
  332. data/lib/norbelys/models/organization_onboarding.rb +250 -0
  333. data/lib/norbelys/models/organization_profile.rb +264 -0
  334. data/lib/norbelys/models/organization_profile_params.rb +270 -0
  335. data/lib/norbelys/models/organization_pulse.rb +301 -0
  336. data/lib/norbelys/models/organization_update_params.rb +242 -0
  337. data/lib/norbelys/models/organization_usage.rb +282 -0
  338. data/lib/norbelys/models/outbound_message.rb +447 -0
  339. data/lib/norbelys/models/people_bulk_create_params.rb +401 -0
  340. data/lib/norbelys/models/people_bulk_create_result.rb +493 -0
  341. data/lib/norbelys/models/person.rb +500 -0
  342. data/lib/norbelys/models/person_create_params.rb +320 -0
  343. data/lib/norbelys/models/person_detail.rb +548 -0
  344. data/lib/norbelys/models/person_erased.rb +234 -0
  345. data/lib/norbelys/models/person_group_ref.rb +251 -0
  346. data/lib/norbelys/models/person_import_item.rb +339 -0
  347. data/lib/norbelys/models/person_import_reason.rb +309 -0
  348. data/lib/norbelys/models/person_import_stats.rb +518 -0
  349. data/lib/norbelys/models/person_list.rb +299 -0
  350. data/lib/norbelys/models/person_list_item.rb +488 -0
  351. data/lib/norbelys/models/person_segment_ref.rb +251 -0
  352. data/lib/norbelys/models/person_update_params.rb +313 -0
  353. data/lib/norbelys/models/program.rb +871 -0
  354. data/lib/norbelys/models/program_create_params.rb +704 -0
  355. data/lib/norbelys/models/program_detail.rb +911 -0
  356. data/lib/norbelys/models/program_list.rb +292 -0
  357. data/lib/norbelys/models/program_list_item.rb +887 -0
  358. data/lib/norbelys/models/program_pause_meta.rb +295 -0
  359. data/lib/norbelys/models/program_sender_ref.rb +295 -0
  360. data/lib/norbelys/models/program_stats.rb +297 -0
  361. data/lib/norbelys/models/program_step_input.rb +469 -0
  362. data/lib/norbelys/models/program_update_params.rb +697 -0
  363. data/lib/norbelys/models/program_variant_input.rb +274 -0
  364. data/lib/norbelys/models/programs_audience_list.rb +293 -0
  365. data/lib/norbelys/models/programs_senders_list.rb +293 -0
  366. data/lib/norbelys/models/provider_api_sender_input.rb +395 -0
  367. data/lib/norbelys/models/pulse_deliverability.rb +325 -0
  368. data/lib/norbelys/models/pulse_program.rb +453 -0
  369. data/lib/norbelys/models/pulse_sender_fleet.rb +325 -0
  370. data/lib/norbelys/models/pulse_value.rb +291 -0
  371. data/lib/norbelys/models/report_share.rb +244 -0
  372. data/lib/norbelys/models/segment.rb +307 -0
  373. data/lib/norbelys/models/segment_create_params.rb +296 -0
  374. data/lib/norbelys/models/segment_list.rb +299 -0
  375. data/lib/norbelys/models/segment_update_params.rb +278 -0
  376. data/lib/norbelys/models/self_hosted_sender_input.rb +378 -0
  377. data/lib/norbelys/models/sender.rb +708 -0
  378. data/lib/norbelys/models/sender_bulk_error.rb +239 -0
  379. data/lib/norbelys/models/sender_detail.rb +726 -0
  380. data/lib/norbelys/models/sender_list.rb +299 -0
  381. data/lib/norbelys/models/sender_remove_result.rb +268 -0
  382. data/lib/norbelys/models/sender_usage.rb +331 -0
  383. data/lib/norbelys/models/sender_warmup_status.rb +230 -0
  384. data/lib/norbelys/models/slack_channel.rb +239 -0
  385. data/lib/norbelys/models/smtp_connection_settings.rb +351 -0
  386. data/lib/norbelys/models/smtp_connection_update.rb +337 -0
  387. data/lib/norbelys/models/smtp_sender_input.rb +403 -0
  388. data/lib/norbelys/models/static_email_variant_content.rb +312 -0
  389. data/lib/norbelys/models/step_with_variants.rb +591 -0
  390. data/lib/norbelys/models/suppression.rb +331 -0
  391. data/lib/norbelys/models/suppression_bulk_params.rb +262 -0
  392. data/lib/norbelys/models/suppression_bulk_result.rb +241 -0
  393. data/lib/norbelys/models/suppression_create_params.rb +305 -0
  394. data/lib/norbelys/models/suppression_list.rb +293 -0
  395. data/lib/norbelys/models/suppression_scope.rb +40 -0
  396. data/lib/norbelys/models/sync_model.rb +41 -0
  397. data/lib/norbelys/models/team_size.rb +43 -0
  398. data/lib/norbelys/models/tracking_dns_record.rb +252 -0
  399. data/lib/norbelys/models/update_sender_input.rb +481 -0
  400. data/lib/norbelys/models/usage_meter.rb +286 -0
  401. data/lib/norbelys/models/usage_plan.rb +257 -0
  402. data/lib/norbelys/models/variant.rb +385 -0
  403. data/lib/norbelys/models/variant_ai.rb +314 -0
  404. data/lib/norbelys/models/verify_email_input.rb +251 -0
  405. data/lib/norbelys/models/verify_mx.rb +254 -0
  406. data/lib/norbelys/models/verify_reachability.rb +42 -0
  407. data/lib/norbelys/models/verify_reason_code.rb +52 -0
  408. data/lib/norbelys/models/verify_result.rb +426 -0
  409. data/lib/norbelys/models/verify_signals.rb +308 -0
  410. data/lib/norbelys/models/verify_syntax.rb +257 -0
  411. data/lib/norbelys/models/voice_sender_input.rb +388 -0
  412. data/lib/norbelys/models/warmup_runtime_status.rb +440 -0
  413. data/lib/norbelys/models/warmup_settings.rb +562 -0
  414. data/lib/norbelys/models/warmup_template.rb +295 -0
  415. data/lib/norbelys/models/warmup_today_tally.rb +314 -0
  416. data/lib/norbelys/version.rb +15 -0
  417. data/lib/norbelys.rb +243 -0
  418. data/norbelys.gemspec +39 -0
  419. data/spec/api/analytics_api_spec.rb +48 -0
  420. data/spec/api/domains_api_spec.rb +128 -0
  421. data/spec/api/fields_api_spec.rb +85 -0
  422. data/spec/api/files_api_spec.rb +48 -0
  423. data/spec/api/groups_api_spec.rb +127 -0
  424. data/spec/api/integrations_api_spec.rb +124 -0
  425. data/spec/api/messages_api_spec.rb +139 -0
  426. data/spec/api/organization_api_spec.rb +92 -0
  427. data/spec/api/people_api_spec.rb +158 -0
  428. data/spec/api/programs_api_spec.rb +270 -0
  429. data/spec/api/segments_api_spec.rb +100 -0
  430. data/spec/api/senders_api_spec.rb +130 -0
  431. data/spec/api/suppressions_api_spec.rb +98 -0
  432. data/spec/api/verify_api_spec.rb +48 -0
  433. data/spec/models/add_program_sender_params_spec.rb +36 -0
  434. data/spec/models/ai_email_variant_content_spec.rb +66 -0
  435. data/spec/models/analytics_query_name_spec.rb +30 -0
  436. data/spec/models/analytics_query_params_spec.rb +136 -0
  437. data/spec/models/analytics_query_result_spec.rb +42 -0
  438. data/spec/models/analytics_query_spec.rb +42 -0
  439. data/spec/models/api_error_detail_spec.rb +64 -0
  440. data/spec/models/api_error_spec.rb +36 -0
  441. data/spec/models/audience_activity_action_spec.rb +30 -0
  442. data/spec/models/audience_activity_condition_spec.rb +42 -0
  443. data/spec/models/audience_activity_link_filter_spec.rb +42 -0
  444. data/spec/models/audience_activity_link_match_op_spec.rb +30 -0
  445. data/spec/models/audience_activity_params_spec.rb +78 -0
  446. data/spec/models/audience_attribute_condition_spec.rb +48 -0
  447. data/spec/models/audience_condition_op_spec.rb +30 -0
  448. data/spec/models/audience_condition_value_spec.rb +21 -0
  449. data/spec/models/audience_filter_spec.rb +42 -0
  450. data/spec/models/audience_match_spec.rb +30 -0
  451. data/spec/models/audience_rule_spec.rb +21 -0
  452. data/spec/models/audience_source_spec.rb +64 -0
  453. data/spec/models/audience_status_breakdown_spec.rb +46 -0
  454. data/spec/models/audience_summary_spec.rb +60 -0
  455. data/spec/models/audience_week_point_spec.rb +42 -0
  456. data/spec/models/bulk_update_sender_patch_spec.rb +88 -0
  457. data/spec/models/bulk_update_senders_input_spec.rb +42 -0
  458. data/spec/models/bulk_update_senders_result_spec.rb +54 -0
  459. data/spec/models/campaign_report_share_spec.rb +48 -0
  460. data/spec/models/collection_address_spec.rb +70 -0
  461. data/spec/models/connection_settings_spec.rb +52 -0
  462. data/spec/models/create_sender_input_spec.rb +21 -0
  463. data/spec/models/detach_result_spec.rb +36 -0
  464. data/spec/models/dmarc_record_to_publish_spec.rb +48 -0
  465. data/spec/models/domain_age_spec.rb +76 -0
  466. data/spec/models/domain_capacity_spec.rb +70 -0
  467. data/spec/models/domain_create_params_spec.rb +58 -0
  468. data/spec/models/domain_detail_spec.rb +112 -0
  469. data/spec/models/domain_health_spec.rb +62 -0
  470. data/spec/models/domain_list_spec.rb +60 -0
  471. data/spec/models/domain_monitoring_params_spec.rb +46 -0
  472. data/spec/models/domain_monitoring_spec.rb +84 -0
  473. data/spec/models/domain_sending_policy_params_spec.rb +82 -0
  474. data/spec/models/domain_sending_policy_spec.rb +94 -0
  475. data/spec/models/domain_sending_spec.rb +60 -0
  476. data/spec/models/domain_sending_update_params_spec.rb +42 -0
  477. data/spec/models/domain_spec.rb +100 -0
  478. data/spec/models/domain_tracking_params_spec.rb +48 -0
  479. data/spec/models/domain_tracking_spec.rb +160 -0
  480. data/spec/models/domain_tracking_update_params_spec.rb +58 -0
  481. data/spec/models/domain_update_params_spec.rb +48 -0
  482. data/spec/models/email_variant_content_spec.rb +21 -0
  483. data/spec/models/enroll_program_params_spec.rb +70 -0
  484. data/spec/models/enroll_program_result_spec.rb +66 -0
  485. data/spec/models/enrollment_counts_spec.rb +114 -0
  486. data/spec/models/enrollment_list_spec.rb +66 -0
  487. data/spec/models/enrollment_person_ref_spec.rb +48 -0
  488. data/spec/models/enrollment_program_ref_spec.rb +42 -0
  489. data/spec/models/enrollment_spec.rb +112 -0
  490. data/spec/models/features_spec.rb +36 -0
  491. data/spec/models/field_create_params_spec.rb +64 -0
  492. data/spec/models/field_list_spec.rb +42 -0
  493. data/spec/models/field_spec.rb +96 -0
  494. data/spec/models/field_type_spec.rb +30 -0
  495. data/spec/models/field_update_params_spec.rb +58 -0
  496. data/spec/models/file_object_spec.rb +66 -0
  497. data/spec/models/file_upload_spec.rb +48 -0
  498. data/spec/models/group_add_members_params_spec.rb +42 -0
  499. data/spec/models/group_add_members_result_spec.rb +48 -0
  500. data/spec/models/group_create_params_spec.rb +48 -0
  501. data/spec/models/group_list_spec.rb +60 -0
  502. data/spec/models/group_spec.rb +84 -0
  503. data/spec/models/group_update_params_spec.rb +48 -0
  504. data/spec/models/imap_connection_update_spec.rb +52 -0
  505. data/spec/models/inbound_message_spec.rb +130 -0
  506. data/spec/models/integration_config_spec.rb +60 -0
  507. data/spec/models/integration_connect_params_spec.rb +36 -0
  508. data/spec/models/integration_connect_result_spec.rb +36 -0
  509. data/spec/models/integration_list_spec.rb +60 -0
  510. data/spec/models/integration_notify_config_spec.rb +54 -0
  511. data/spec/models/integration_options_spec.rb +36 -0
  512. data/spec/models/integration_provider_spec.rb +30 -0
  513. data/spec/models/integration_spec.rb +84 -0
  514. data/spec/models/integration_status_spec.rb +30 -0
  515. data/spec/models/integration_sync_result_spec.rb +36 -0
  516. data/spec/models/integration_update_params_spec.rb +36 -0
  517. data/spec/models/launch_program_params_spec.rb +36 -0
  518. data/spec/models/launch_program_result_spec.rb +52 -0
  519. data/spec/models/message_address_spec.rb +42 -0
  520. data/spec/models/message_attachment_download_spec.rb +78 -0
  521. data/spec/models/message_attachment_input_spec.rb +48 -0
  522. data/spec/models/message_attachment_list_spec.rb +48 -0
  523. data/spec/models/message_attachment_spec.rb +66 -0
  524. data/spec/models/message_create_params_spec.rb +21 -0
  525. data/spec/models/message_enroll_params_spec.rb +60 -0
  526. data/spec/models/message_list_spec.rb +60 -0
  527. data/spec/models/message_reply_params_spec.rb +102 -0
  528. data/spec/models/message_source_attachment_spec.rb +48 -0
  529. data/spec/models/message_source_spec.rb +90 -0
  530. data/spec/models/message_spec.rb +21 -0
  531. data/spec/models/message_test_params_spec.rb +102 -0
  532. data/spec/models/message_update_params_spec.rb +52 -0
  533. data/spec/models/monthly_email_usage_meter_spec.rb +58 -0
  534. data/spec/models/organization_alerts_params_spec.rb +36 -0
  535. data/spec/models/organization_alerts_spec.rb +36 -0
  536. data/spec/models/organization_bounce_policy_params_spec.rb +42 -0
  537. data/spec/models/organization_bounce_policy_spec.rb +42 -0
  538. data/spec/models/organization_onboarding_spec.rb +42 -0
  539. data/spec/models/organization_profile_params_spec.rb +52 -0
  540. data/spec/models/organization_profile_spec.rb +48 -0
  541. data/spec/models/organization_pulse_spec.rb +66 -0
  542. data/spec/models/organization_spec.rb +72 -0
  543. data/spec/models/organization_update_params_spec.rb +54 -0
  544. data/spec/models/organization_usage_spec.rb +60 -0
  545. data/spec/models/outbound_message_spec.rb +128 -0
  546. data/spec/models/people_bulk_create_params_spec.rb +70 -0
  547. data/spec/models/people_bulk_create_result_spec.rb +84 -0
  548. data/spec/models/person_create_params_spec.rb +76 -0
  549. data/spec/models/person_detail_spec.rb +170 -0
  550. data/spec/models/person_erased_spec.rb +42 -0
  551. data/spec/models/person_group_ref_spec.rb +48 -0
  552. data/spec/models/person_import_item_spec.rb +76 -0
  553. data/spec/models/person_import_reason_spec.rb +52 -0
  554. data/spec/models/person_import_stats_spec.rb +94 -0
  555. data/spec/models/person_list_item_spec.rb +140 -0
  556. data/spec/models/person_list_spec.rb +60 -0
  557. data/spec/models/person_segment_ref_spec.rb +48 -0
  558. data/spec/models/person_spec.rb +146 -0
  559. data/spec/models/person_update_params_spec.rb +76 -0
  560. data/spec/models/program_create_params_spec.rb +180 -0
  561. data/spec/models/program_detail_spec.rb +254 -0
  562. data/spec/models/program_list_item_spec.rb +242 -0
  563. data/spec/models/program_list_spec.rb +60 -0
  564. data/spec/models/program_pause_meta_spec.rb +42 -0
  565. data/spec/models/program_sender_ref_spec.rb +60 -0
  566. data/spec/models/program_spec.rb +236 -0
  567. data/spec/models/program_stats_spec.rb +48 -0
  568. data/spec/models/program_step_input_spec.rb +108 -0
  569. data/spec/models/program_update_params_spec.rb +180 -0
  570. data/spec/models/program_variant_input_spec.rb +60 -0
  571. data/spec/models/programs_audience_list_spec.rb +60 -0
  572. data/spec/models/programs_senders_list_spec.rb +60 -0
  573. data/spec/models/provider_api_sender_input_spec.rb +96 -0
  574. data/spec/models/pulse_deliverability_spec.rb +72 -0
  575. data/spec/models/pulse_program_spec.rb +112 -0
  576. data/spec/models/pulse_sender_fleet_spec.rb +72 -0
  577. data/spec/models/pulse_value_spec.rb +60 -0
  578. data/spec/models/report_share_spec.rb +48 -0
  579. data/spec/models/segment_create_params_spec.rb +48 -0
  580. data/spec/models/segment_list_spec.rb +60 -0
  581. data/spec/models/segment_spec.rb +78 -0
  582. data/spec/models/segment_update_params_spec.rb +48 -0
  583. data/spec/models/self_hosted_sender_input_spec.rb +90 -0
  584. data/spec/models/sender_bulk_error_spec.rb +42 -0
  585. data/spec/models/sender_detail_spec.rb +212 -0
  586. data/spec/models/sender_list_spec.rb +60 -0
  587. data/spec/models/sender_remove_result_spec.rb +46 -0
  588. data/spec/models/sender_spec.rb +200 -0
  589. data/spec/models/sender_usage_spec.rb +54 -0
  590. data/spec/models/sender_warmup_status_spec.rb +42 -0
  591. data/spec/models/slack_channel_spec.rb +42 -0
  592. data/spec/models/smtp_connection_settings_spec.rb +64 -0
  593. data/spec/models/smtp_connection_update_spec.rb +64 -0
  594. data/spec/models/smtp_sender_input_spec.rb +102 -0
  595. data/spec/models/static_email_variant_content_spec.rb +66 -0
  596. data/spec/models/step_with_variants_spec.rb +136 -0
  597. data/spec/models/suppression_bulk_params_spec.rb +42 -0
  598. data/spec/models/suppression_bulk_result_spec.rb +36 -0
  599. data/spec/models/suppression_create_params_spec.rb +58 -0
  600. data/spec/models/suppression_list_spec.rb +60 -0
  601. data/spec/models/suppression_scope_spec.rb +30 -0
  602. data/spec/models/suppression_spec.rb +78 -0
  603. data/spec/models/sync_model_spec.rb +30 -0
  604. data/spec/models/team_size_spec.rb +30 -0
  605. data/spec/models/tracking_dns_record_spec.rb +48 -0
  606. data/spec/models/update_sender_input_spec.rb +134 -0
  607. data/spec/models/usage_meter_spec.rb +52 -0
  608. data/spec/models/usage_plan_spec.rb +48 -0
  609. data/spec/models/variant_ai_spec.rb +52 -0
  610. data/spec/models/variant_spec.rb +88 -0
  611. data/spec/models/verify_email_input_spec.rb +36 -0
  612. data/spec/models/verify_mx_spec.rb +48 -0
  613. data/spec/models/verify_reachability_spec.rb +30 -0
  614. data/spec/models/verify_reason_code_spec.rb +30 -0
  615. data/spec/models/verify_result_spec.rb +96 -0
  616. data/spec/models/verify_signals_spec.rb +66 -0
  617. data/spec/models/verify_syntax_spec.rb +48 -0
  618. data/spec/models/voice_sender_input_spec.rb +96 -0
  619. data/spec/models/warmup_runtime_status_spec.rb +86 -0
  620. data/spec/models/warmup_settings_spec.rb +118 -0
  621. data/spec/models/warmup_template_spec.rb +42 -0
  622. data/spec/models/warmup_today_tally_spec.rb +48 -0
  623. data/spec/spec_helper.rb +111 -0
  624. metadata +935 -0
@@ -0,0 +1,871 @@
1
+ =begin
2
+ #Norbelys API
3
+
4
+ #The **Norbelys API** is a single, predictable REST surface for cold email and outreach — people, senders, programs, and sending all live behind the five patterns below. Developer-first and AI-first: every name is either already invented (Schema.org) or obvious. ## Authentication Every request authenticates with an **org-scoped API key**. Create one in **Settings → API keys** and send it as a bearer token: ```http GET https://api.norbelys.com/v1/people Authorization: Bearer ak_live_… ``` Interactive agents may instead use OAuth 2.1 (see `/auth.md` and the `/.well-known/oauth-protected-resource` metadata). ## Conventions - **Base URL** — `https://api.norbelys.com/v1`. - **JSON in, JSON out.** Timestamps are ISO-8601 in UTC. - **Cursor pagination.** List endpoints take `limit` + `cursor` and return `{ data, hasMore, nextCursor }` (offset-paged tables add `page` + `total`). - **Expansions.** Detail GETs take an `expand[]` query param to inline related data (e.g. `GET /people/{id}?expand[]=timeline`) instead of extra calls. - **Soft deletes.** Anything that has been used is archived, never hard-deleted — `DELETE` archives the resource and returns it. ## Errors Failures return the same envelope on every 4xx/5xx, with the matching HTTP status: ```json { \"error\": { \"type\": \"invalid_request\", \"code\": \"invalid_param\", \"message\": \"…\", \"hint\": \"…\", \"doc_url\": \"…\" } } ``` `type` is a broad, machine-routable category derived from the status; `code` is the stable machine contract you branch on (never the human `message`). See the `ApiError` schema. ## Idempotency Every `POST` accepts an optional **`Idempotency-Key`** header. Reuse the same key to replay the original result for 24h instead of re-executing — so a retried create can never double-charge or duplicate a record. ## Rate limits & versioning Abuse control is enforced at the edge; responses advertise the policy via the `RateLimit-Policy` header, and a `429` carries `Retry-After`. The API is versioned in the URL path (`/v1`). Breaking changes ship under a new version; a retiring surface is announced with `Deprecation` + `Sunset` response headers at least 90 days ahead.
5
+
6
+ The version of the OpenAPI document: 0.0.1
7
+
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.10.0
10
+
11
+ =end
12
+
13
+ require 'date'
14
+ require 'time'
15
+
16
+ module Norbelys
17
+ class Program
18
+ attr_accessor :active_days
19
+
20
+ # Attach RFC 8058 one-click unsubscribe headers + footer.
21
+ attr_accessor :add_unsubscribe
22
+
23
+ attr_accessor :archived_at
24
+
25
+ # Pause every lead at a company once one of them replies.
26
+ attr_accessor :auto_pause_on_company_reply
27
+
28
+ # Auto-pause when the bounce rate reaches this percent; 0 disables.
29
+ attr_accessor :bounce_pause_threshold
30
+
31
+ attr_accessor :created_at
32
+
33
+ # The program id.
34
+ attr_accessor :id
35
+
36
+ # Random extra wait per send, upper bound (seconds).
37
+ attr_accessor :jitter_max_seconds
38
+
39
+ # Random extra wait per send, lower bound (seconds).
40
+ attr_accessor :jitter_min_seconds
41
+
42
+ # Kind of sending; `cold_sequence` is the only kind today.
43
+ attr_accessor :kind
44
+
45
+ # Display name.
46
+ attr_accessor :name
47
+
48
+ # New leads started per day for the WHOLE campaign, shared across all its mailboxes (follow-ups are not counted). 0 = no daily cap — new leads flow at mailbox capacity. Real throughput is always bounded by the mailboxes' own daily limits.
49
+ attr_accessor :new_per_day
50
+
51
+ attr_accessor :object
52
+
53
+ attr_accessor :paused_at
54
+
55
+ attr_accessor :paused_meta
56
+
57
+ attr_accessor :paused_reason
58
+
59
+ # Send the body as plain text only: no HTML part, open pixel, or link tracking.
60
+ attr_accessor :plain_text_mode
61
+
62
+ # Minutes between sends from one mailbox.
63
+ attr_accessor :send_interval_minutes
64
+
65
+ # Auto-pause when the spam-complaint rate reaches this percent; 0 disables.
66
+ attr_accessor :spam_pause_threshold
67
+
68
+ attr_accessor :start_date
69
+
70
+ # Lifecycle status: `draft`, `active`, `paused`, `done`.
71
+ attr_accessor :status
72
+
73
+ # Engagement that pulls a lead out of the cadence: `reply`, `click`, `open`, `none`.
74
+ attr_accessor :stop_condition
75
+
76
+ # IANA timezone the window applies in.
77
+ attr_accessor :timezone
78
+
79
+ # Rewrite links to track clicks.
80
+ attr_accessor :track_clicks
81
+
82
+ attr_accessor :tracking_domain_id
83
+
84
+ # Insert the open pixel.
85
+ attr_accessor :track_opens
86
+
87
+ attr_accessor :unsubscribe_text
88
+
89
+ attr_accessor :updated_at
90
+
91
+ # How A/B arms are spread across leads with no decided winner: `pattern` (deterministic per-lead hash) or `random` (independent roll per lead).
92
+ attr_accessor :variant_distribution
93
+
94
+ attr_accessor :window_from
95
+
96
+ attr_accessor :window_to
97
+
98
+ class EnumAttributeValidator
99
+ attr_reader :datatype
100
+ attr_reader :allowable_values
101
+
102
+ def initialize(datatype, allowable_values)
103
+ @allowable_values = allowable_values.map do |value|
104
+ case datatype.to_s
105
+ when /Integer/i
106
+ value.to_i
107
+ when /Float/i
108
+ value.to_f
109
+ else
110
+ value
111
+ end
112
+ end
113
+ end
114
+
115
+ def valid?(value)
116
+ !value || allowable_values.include?(value)
117
+ end
118
+ end
119
+
120
+ # Attribute mapping from ruby-style variable name to JSON key.
121
+ def self.attribute_map
122
+ {
123
+ :'active_days' => :'activeDays',
124
+ :'add_unsubscribe' => :'addUnsubscribe',
125
+ :'archived_at' => :'archivedAt',
126
+ :'auto_pause_on_company_reply' => :'autoPauseOnCompanyReply',
127
+ :'bounce_pause_threshold' => :'bouncePauseThreshold',
128
+ :'created_at' => :'createdAt',
129
+ :'id' => :'id',
130
+ :'jitter_max_seconds' => :'jitterMaxSeconds',
131
+ :'jitter_min_seconds' => :'jitterMinSeconds',
132
+ :'kind' => :'kind',
133
+ :'name' => :'name',
134
+ :'new_per_day' => :'newPerDay',
135
+ :'object' => :'object',
136
+ :'paused_at' => :'pausedAt',
137
+ :'paused_meta' => :'pausedMeta',
138
+ :'paused_reason' => :'pausedReason',
139
+ :'plain_text_mode' => :'plainTextMode',
140
+ :'send_interval_minutes' => :'sendIntervalMinutes',
141
+ :'spam_pause_threshold' => :'spamPauseThreshold',
142
+ :'start_date' => :'startDate',
143
+ :'status' => :'status',
144
+ :'stop_condition' => :'stopCondition',
145
+ :'timezone' => :'timezone',
146
+ :'track_clicks' => :'trackClicks',
147
+ :'tracking_domain_id' => :'trackingDomainId',
148
+ :'track_opens' => :'trackOpens',
149
+ :'unsubscribe_text' => :'unsubscribeText',
150
+ :'updated_at' => :'updatedAt',
151
+ :'variant_distribution' => :'variantDistribution',
152
+ :'window_from' => :'windowFrom',
153
+ :'window_to' => :'windowTo'
154
+ }
155
+ end
156
+
157
+ # Returns all the JSON keys this model knows about
158
+ def self.acceptable_attributes
159
+ attribute_map.values
160
+ end
161
+
162
+ # Attribute type mapping.
163
+ def self.openapi_types
164
+ {
165
+ :'active_days' => :'Array<Integer>',
166
+ :'add_unsubscribe' => :'Boolean',
167
+ :'archived_at' => :'Object',
168
+ :'auto_pause_on_company_reply' => :'Boolean',
169
+ :'bounce_pause_threshold' => :'Float',
170
+ :'created_at' => :'Object',
171
+ :'id' => :'String',
172
+ :'jitter_max_seconds' => :'Integer',
173
+ :'jitter_min_seconds' => :'Integer',
174
+ :'kind' => :'String',
175
+ :'name' => :'String',
176
+ :'new_per_day' => :'Integer',
177
+ :'object' => :'Object',
178
+ :'paused_at' => :'Object',
179
+ :'paused_meta' => :'ProgramPauseMeta',
180
+ :'paused_reason' => :'String',
181
+ :'plain_text_mode' => :'Boolean',
182
+ :'send_interval_minutes' => :'Integer',
183
+ :'spam_pause_threshold' => :'Float',
184
+ :'start_date' => :'Object',
185
+ :'status' => :'String',
186
+ :'stop_condition' => :'String',
187
+ :'timezone' => :'String',
188
+ :'track_clicks' => :'Boolean',
189
+ :'tracking_domain_id' => :'String',
190
+ :'track_opens' => :'Boolean',
191
+ :'unsubscribe_text' => :'String',
192
+ :'updated_at' => :'Object',
193
+ :'variant_distribution' => :'String',
194
+ :'window_from' => :'String',
195
+ :'window_to' => :'String'
196
+ }
197
+ end
198
+
199
+ # List of attributes with nullable: true
200
+ def self.openapi_nullable
201
+ Set.new([
202
+ :'active_days',
203
+ :'archived_at',
204
+ :'created_at',
205
+ :'object',
206
+ :'paused_at',
207
+ :'paused_meta',
208
+ :'paused_reason',
209
+ :'start_date',
210
+ :'tracking_domain_id',
211
+ :'unsubscribe_text',
212
+ :'updated_at',
213
+ :'window_from',
214
+ :'window_to'
215
+ ])
216
+ end
217
+
218
+ # Initializes the object
219
+ # @param [Hash] attributes Model attributes in the form of hash
220
+ def initialize(attributes = {})
221
+ if (!attributes.is_a?(Hash))
222
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Norbelys::Program` initialize method"
223
+ end
224
+
225
+ # check to see if the attribute exists and convert string to symbol for hash key
226
+ attributes = attributes.each_with_object({}) { |(k, v), h|
227
+ if (!self.class.attribute_map.key?(k.to_sym))
228
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Norbelys::Program`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
229
+ end
230
+ h[k.to_sym] = v
231
+ }
232
+
233
+ if attributes.key?(:'active_days')
234
+ if (value = attributes[:'active_days']).is_a?(Array)
235
+ self.active_days = value
236
+ end
237
+ else
238
+ self.active_days = nil
239
+ end
240
+
241
+ if attributes.key?(:'add_unsubscribe')
242
+ self.add_unsubscribe = attributes[:'add_unsubscribe']
243
+ else
244
+ self.add_unsubscribe = nil
245
+ end
246
+
247
+ if attributes.key?(:'archived_at')
248
+ self.archived_at = attributes[:'archived_at']
249
+ end
250
+
251
+ if attributes.key?(:'auto_pause_on_company_reply')
252
+ self.auto_pause_on_company_reply = attributes[:'auto_pause_on_company_reply']
253
+ else
254
+ self.auto_pause_on_company_reply = nil
255
+ end
256
+
257
+ if attributes.key?(:'bounce_pause_threshold')
258
+ self.bounce_pause_threshold = attributes[:'bounce_pause_threshold']
259
+ else
260
+ self.bounce_pause_threshold = nil
261
+ end
262
+
263
+ if attributes.key?(:'created_at')
264
+ self.created_at = attributes[:'created_at']
265
+ end
266
+
267
+ if attributes.key?(:'id')
268
+ self.id = attributes[:'id']
269
+ else
270
+ self.id = nil
271
+ end
272
+
273
+ if attributes.key?(:'jitter_max_seconds')
274
+ self.jitter_max_seconds = attributes[:'jitter_max_seconds']
275
+ else
276
+ self.jitter_max_seconds = nil
277
+ end
278
+
279
+ if attributes.key?(:'jitter_min_seconds')
280
+ self.jitter_min_seconds = attributes[:'jitter_min_seconds']
281
+ else
282
+ self.jitter_min_seconds = nil
283
+ end
284
+
285
+ if attributes.key?(:'kind')
286
+ self.kind = attributes[:'kind']
287
+ else
288
+ self.kind = nil
289
+ end
290
+
291
+ if attributes.key?(:'name')
292
+ self.name = attributes[:'name']
293
+ else
294
+ self.name = nil
295
+ end
296
+
297
+ if attributes.key?(:'new_per_day')
298
+ self.new_per_day = attributes[:'new_per_day']
299
+ else
300
+ self.new_per_day = nil
301
+ end
302
+
303
+ if attributes.key?(:'object')
304
+ self.object = attributes[:'object']
305
+ end
306
+
307
+ if attributes.key?(:'paused_at')
308
+ self.paused_at = attributes[:'paused_at']
309
+ end
310
+
311
+ if attributes.key?(:'paused_meta')
312
+ self.paused_meta = attributes[:'paused_meta']
313
+ else
314
+ self.paused_meta = nil
315
+ end
316
+
317
+ if attributes.key?(:'paused_reason')
318
+ self.paused_reason = attributes[:'paused_reason']
319
+ else
320
+ self.paused_reason = nil
321
+ end
322
+
323
+ if attributes.key?(:'plain_text_mode')
324
+ self.plain_text_mode = attributes[:'plain_text_mode']
325
+ else
326
+ self.plain_text_mode = nil
327
+ end
328
+
329
+ if attributes.key?(:'send_interval_minutes')
330
+ self.send_interval_minutes = attributes[:'send_interval_minutes']
331
+ else
332
+ self.send_interval_minutes = nil
333
+ end
334
+
335
+ if attributes.key?(:'spam_pause_threshold')
336
+ self.spam_pause_threshold = attributes[:'spam_pause_threshold']
337
+ else
338
+ self.spam_pause_threshold = nil
339
+ end
340
+
341
+ if attributes.key?(:'start_date')
342
+ self.start_date = attributes[:'start_date']
343
+ end
344
+
345
+ if attributes.key?(:'status')
346
+ self.status = attributes[:'status']
347
+ else
348
+ self.status = nil
349
+ end
350
+
351
+ if attributes.key?(:'stop_condition')
352
+ self.stop_condition = attributes[:'stop_condition']
353
+ else
354
+ self.stop_condition = nil
355
+ end
356
+
357
+ if attributes.key?(:'timezone')
358
+ self.timezone = attributes[:'timezone']
359
+ else
360
+ self.timezone = nil
361
+ end
362
+
363
+ if attributes.key?(:'track_clicks')
364
+ self.track_clicks = attributes[:'track_clicks']
365
+ else
366
+ self.track_clicks = nil
367
+ end
368
+
369
+ if attributes.key?(:'tracking_domain_id')
370
+ self.tracking_domain_id = attributes[:'tracking_domain_id']
371
+ else
372
+ self.tracking_domain_id = nil
373
+ end
374
+
375
+ if attributes.key?(:'track_opens')
376
+ self.track_opens = attributes[:'track_opens']
377
+ else
378
+ self.track_opens = nil
379
+ end
380
+
381
+ if attributes.key?(:'unsubscribe_text')
382
+ self.unsubscribe_text = attributes[:'unsubscribe_text']
383
+ else
384
+ self.unsubscribe_text = nil
385
+ end
386
+
387
+ if attributes.key?(:'updated_at')
388
+ self.updated_at = attributes[:'updated_at']
389
+ end
390
+
391
+ if attributes.key?(:'variant_distribution')
392
+ self.variant_distribution = attributes[:'variant_distribution']
393
+ else
394
+ self.variant_distribution = nil
395
+ end
396
+
397
+ if attributes.key?(:'window_from')
398
+ self.window_from = attributes[:'window_from']
399
+ else
400
+ self.window_from = nil
401
+ end
402
+
403
+ if attributes.key?(:'window_to')
404
+ self.window_to = attributes[:'window_to']
405
+ else
406
+ self.window_to = nil
407
+ end
408
+ end
409
+
410
+ # Show invalid properties with the reasons. Usually used together with valid?
411
+ # @return Array for valid properties with the reasons
412
+ def list_invalid_properties
413
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
414
+ invalid_properties = Array.new
415
+ if @add_unsubscribe.nil?
416
+ invalid_properties.push('invalid value for "add_unsubscribe", add_unsubscribe cannot be nil.')
417
+ end
418
+
419
+ if @auto_pause_on_company_reply.nil?
420
+ invalid_properties.push('invalid value for "auto_pause_on_company_reply", auto_pause_on_company_reply cannot be nil.')
421
+ end
422
+
423
+ if @bounce_pause_threshold.nil?
424
+ invalid_properties.push('invalid value for "bounce_pause_threshold", bounce_pause_threshold cannot be nil.')
425
+ end
426
+
427
+ if @bounce_pause_threshold > 100
428
+ invalid_properties.push('invalid value for "bounce_pause_threshold", must be smaller than or equal to 100.')
429
+ end
430
+
431
+ if @bounce_pause_threshold < 0
432
+ invalid_properties.push('invalid value for "bounce_pause_threshold", must be greater than or equal to 0.')
433
+ end
434
+
435
+ if @id.nil?
436
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
437
+ end
438
+
439
+ if @jitter_max_seconds.nil?
440
+ invalid_properties.push('invalid value for "jitter_max_seconds", jitter_max_seconds cannot be nil.')
441
+ end
442
+
443
+ if @jitter_max_seconds < 0
444
+ invalid_properties.push('invalid value for "jitter_max_seconds", must be greater than or equal to 0.')
445
+ end
446
+
447
+ if @jitter_min_seconds.nil?
448
+ invalid_properties.push('invalid value for "jitter_min_seconds", jitter_min_seconds cannot be nil.')
449
+ end
450
+
451
+ if @jitter_min_seconds < 0
452
+ invalid_properties.push('invalid value for "jitter_min_seconds", must be greater than or equal to 0.')
453
+ end
454
+
455
+ if @kind.nil?
456
+ invalid_properties.push('invalid value for "kind", kind cannot be nil.')
457
+ end
458
+
459
+ if @name.nil?
460
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
461
+ end
462
+
463
+ if @new_per_day.nil?
464
+ invalid_properties.push('invalid value for "new_per_day", new_per_day cannot be nil.')
465
+ end
466
+
467
+ if @new_per_day < 0
468
+ invalid_properties.push('invalid value for "new_per_day", must be greater than or equal to 0.')
469
+ end
470
+
471
+ if @plain_text_mode.nil?
472
+ invalid_properties.push('invalid value for "plain_text_mode", plain_text_mode cannot be nil.')
473
+ end
474
+
475
+ if @send_interval_minutes.nil?
476
+ invalid_properties.push('invalid value for "send_interval_minutes", send_interval_minutes cannot be nil.')
477
+ end
478
+
479
+ if @send_interval_minutes < 0
480
+ invalid_properties.push('invalid value for "send_interval_minutes", must be greater than or equal to 0.')
481
+ end
482
+
483
+ if @spam_pause_threshold.nil?
484
+ invalid_properties.push('invalid value for "spam_pause_threshold", spam_pause_threshold cannot be nil.')
485
+ end
486
+
487
+ if @spam_pause_threshold > 100
488
+ invalid_properties.push('invalid value for "spam_pause_threshold", must be smaller than or equal to 100.')
489
+ end
490
+
491
+ if @spam_pause_threshold < 0
492
+ invalid_properties.push('invalid value for "spam_pause_threshold", must be greater than or equal to 0.')
493
+ end
494
+
495
+ if @status.nil?
496
+ invalid_properties.push('invalid value for "status", status cannot be nil.')
497
+ end
498
+
499
+ if @stop_condition.nil?
500
+ invalid_properties.push('invalid value for "stop_condition", stop_condition cannot be nil.')
501
+ end
502
+
503
+ if @timezone.nil?
504
+ invalid_properties.push('invalid value for "timezone", timezone cannot be nil.')
505
+ end
506
+
507
+ if @track_clicks.nil?
508
+ invalid_properties.push('invalid value for "track_clicks", track_clicks cannot be nil.')
509
+ end
510
+
511
+ if @track_opens.nil?
512
+ invalid_properties.push('invalid value for "track_opens", track_opens cannot be nil.')
513
+ end
514
+
515
+ if @variant_distribution.nil?
516
+ invalid_properties.push('invalid value for "variant_distribution", variant_distribution cannot be nil.')
517
+ end
518
+
519
+ invalid_properties
520
+ end
521
+
522
+ # Check to see if the all the properties in the model are valid
523
+ # @return true if the model is valid
524
+ def valid?
525
+ warn '[DEPRECATED] the `valid?` method is obsolete'
526
+ return false if @add_unsubscribe.nil?
527
+ return false if @auto_pause_on_company_reply.nil?
528
+ return false if @bounce_pause_threshold.nil?
529
+ return false if @bounce_pause_threshold > 100
530
+ return false if @bounce_pause_threshold < 0
531
+ return false if @id.nil?
532
+ return false if @jitter_max_seconds.nil?
533
+ return false if @jitter_max_seconds < 0
534
+ return false if @jitter_min_seconds.nil?
535
+ return false if @jitter_min_seconds < 0
536
+ return false if @kind.nil?
537
+ kind_validator = EnumAttributeValidator.new('String', ["cold_sequence"])
538
+ return false unless kind_validator.valid?(@kind)
539
+ return false if @name.nil?
540
+ return false if @new_per_day.nil?
541
+ return false if @new_per_day < 0
542
+ paused_reason_validator = EnumAttributeValidator.new('String', ["manual", "bounce_rate", "spam_rate", "orphaned_sender"])
543
+ return false unless paused_reason_validator.valid?(@paused_reason)
544
+ return false if @plain_text_mode.nil?
545
+ return false if @send_interval_minutes.nil?
546
+ return false if @send_interval_minutes < 0
547
+ return false if @spam_pause_threshold.nil?
548
+ return false if @spam_pause_threshold > 100
549
+ return false if @spam_pause_threshold < 0
550
+ return false if @status.nil?
551
+ status_validator = EnumAttributeValidator.new('String', ["draft", "active", "paused", "done"])
552
+ return false unless status_validator.valid?(@status)
553
+ return false if @stop_condition.nil?
554
+ stop_condition_validator = EnumAttributeValidator.new('String', ["reply", "click", "open", "none"])
555
+ return false unless stop_condition_validator.valid?(@stop_condition)
556
+ return false if @timezone.nil?
557
+ return false if @track_clicks.nil?
558
+ return false if @track_opens.nil?
559
+ return false if @variant_distribution.nil?
560
+ variant_distribution_validator = EnumAttributeValidator.new('String', ["pattern", "random"])
561
+ return false unless variant_distribution_validator.valid?(@variant_distribution)
562
+ true
563
+ end
564
+
565
+ # Custom attribute writer method with validation
566
+ # @param [Object] bounce_pause_threshold Value to be assigned
567
+ def bounce_pause_threshold=(bounce_pause_threshold)
568
+ if bounce_pause_threshold.nil?
569
+ fail ArgumentError, 'bounce_pause_threshold cannot be nil'
570
+ end
571
+
572
+ if bounce_pause_threshold > 100
573
+ fail ArgumentError, 'invalid value for "bounce_pause_threshold", must be smaller than or equal to 100.'
574
+ end
575
+
576
+ if bounce_pause_threshold < 0
577
+ fail ArgumentError, 'invalid value for "bounce_pause_threshold", must be greater than or equal to 0.'
578
+ end
579
+
580
+ @bounce_pause_threshold = bounce_pause_threshold
581
+ end
582
+
583
+ # Custom attribute writer method with validation
584
+ # @param [Object] jitter_max_seconds Value to be assigned
585
+ def jitter_max_seconds=(jitter_max_seconds)
586
+ if jitter_max_seconds.nil?
587
+ fail ArgumentError, 'jitter_max_seconds cannot be nil'
588
+ end
589
+
590
+ if jitter_max_seconds < 0
591
+ fail ArgumentError, 'invalid value for "jitter_max_seconds", must be greater than or equal to 0.'
592
+ end
593
+
594
+ @jitter_max_seconds = jitter_max_seconds
595
+ end
596
+
597
+ # Custom attribute writer method with validation
598
+ # @param [Object] jitter_min_seconds Value to be assigned
599
+ def jitter_min_seconds=(jitter_min_seconds)
600
+ if jitter_min_seconds.nil?
601
+ fail ArgumentError, 'jitter_min_seconds cannot be nil'
602
+ end
603
+
604
+ if jitter_min_seconds < 0
605
+ fail ArgumentError, 'invalid value for "jitter_min_seconds", must be greater than or equal to 0.'
606
+ end
607
+
608
+ @jitter_min_seconds = jitter_min_seconds
609
+ end
610
+
611
+ # Custom attribute writer method checking allowed values (enum).
612
+ # @param [Object] kind Object to be assigned
613
+ def kind=(kind)
614
+ validator = EnumAttributeValidator.new('String', ["cold_sequence"])
615
+ unless validator.valid?(kind)
616
+ fail ArgumentError, "invalid value for \"kind\", must be one of #{validator.allowable_values}."
617
+ end
618
+ @kind = kind
619
+ end
620
+
621
+ # Custom attribute writer method with validation
622
+ # @param [Object] new_per_day Value to be assigned
623
+ def new_per_day=(new_per_day)
624
+ if new_per_day.nil?
625
+ fail ArgumentError, 'new_per_day cannot be nil'
626
+ end
627
+
628
+ if new_per_day < 0
629
+ fail ArgumentError, 'invalid value for "new_per_day", must be greater than or equal to 0.'
630
+ end
631
+
632
+ @new_per_day = new_per_day
633
+ end
634
+
635
+ # Custom attribute writer method checking allowed values (enum).
636
+ # @param [Object] paused_reason Object to be assigned
637
+ def paused_reason=(paused_reason)
638
+ validator = EnumAttributeValidator.new('String', ["manual", "bounce_rate", "spam_rate", "orphaned_sender"])
639
+ unless validator.valid?(paused_reason)
640
+ fail ArgumentError, "invalid value for \"paused_reason\", must be one of #{validator.allowable_values}."
641
+ end
642
+ @paused_reason = paused_reason
643
+ end
644
+
645
+ # Custom attribute writer method with validation
646
+ # @param [Object] send_interval_minutes Value to be assigned
647
+ def send_interval_minutes=(send_interval_minutes)
648
+ if send_interval_minutes.nil?
649
+ fail ArgumentError, 'send_interval_minutes cannot be nil'
650
+ end
651
+
652
+ if send_interval_minutes < 0
653
+ fail ArgumentError, 'invalid value for "send_interval_minutes", must be greater than or equal to 0.'
654
+ end
655
+
656
+ @send_interval_minutes = send_interval_minutes
657
+ end
658
+
659
+ # Custom attribute writer method with validation
660
+ # @param [Object] spam_pause_threshold Value to be assigned
661
+ def spam_pause_threshold=(spam_pause_threshold)
662
+ if spam_pause_threshold.nil?
663
+ fail ArgumentError, 'spam_pause_threshold cannot be nil'
664
+ end
665
+
666
+ if spam_pause_threshold > 100
667
+ fail ArgumentError, 'invalid value for "spam_pause_threshold", must be smaller than or equal to 100.'
668
+ end
669
+
670
+ if spam_pause_threshold < 0
671
+ fail ArgumentError, 'invalid value for "spam_pause_threshold", must be greater than or equal to 0.'
672
+ end
673
+
674
+ @spam_pause_threshold = spam_pause_threshold
675
+ end
676
+
677
+ # Custom attribute writer method checking allowed values (enum).
678
+ # @param [Object] status Object to be assigned
679
+ def status=(status)
680
+ validator = EnumAttributeValidator.new('String', ["draft", "active", "paused", "done"])
681
+ unless validator.valid?(status)
682
+ fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
683
+ end
684
+ @status = status
685
+ end
686
+
687
+ # Custom attribute writer method checking allowed values (enum).
688
+ # @param [Object] stop_condition Object to be assigned
689
+ def stop_condition=(stop_condition)
690
+ validator = EnumAttributeValidator.new('String', ["reply", "click", "open", "none"])
691
+ unless validator.valid?(stop_condition)
692
+ fail ArgumentError, "invalid value for \"stop_condition\", must be one of #{validator.allowable_values}."
693
+ end
694
+ @stop_condition = stop_condition
695
+ end
696
+
697
+ # Custom attribute writer method checking allowed values (enum).
698
+ # @param [Object] variant_distribution Object to be assigned
699
+ def variant_distribution=(variant_distribution)
700
+ validator = EnumAttributeValidator.new('String', ["pattern", "random"])
701
+ unless validator.valid?(variant_distribution)
702
+ fail ArgumentError, "invalid value for \"variant_distribution\", must be one of #{validator.allowable_values}."
703
+ end
704
+ @variant_distribution = variant_distribution
705
+ end
706
+
707
+ # Checks equality by comparing each attribute.
708
+ # @param [Object] Object to be compared
709
+ def ==(o)
710
+ return true if self.equal?(o)
711
+ self.class == o.class &&
712
+ active_days == o.active_days &&
713
+ add_unsubscribe == o.add_unsubscribe &&
714
+ archived_at == o.archived_at &&
715
+ auto_pause_on_company_reply == o.auto_pause_on_company_reply &&
716
+ bounce_pause_threshold == o.bounce_pause_threshold &&
717
+ created_at == o.created_at &&
718
+ id == o.id &&
719
+ jitter_max_seconds == o.jitter_max_seconds &&
720
+ jitter_min_seconds == o.jitter_min_seconds &&
721
+ kind == o.kind &&
722
+ name == o.name &&
723
+ new_per_day == o.new_per_day &&
724
+ object == o.object &&
725
+ paused_at == o.paused_at &&
726
+ paused_meta == o.paused_meta &&
727
+ paused_reason == o.paused_reason &&
728
+ plain_text_mode == o.plain_text_mode &&
729
+ send_interval_minutes == o.send_interval_minutes &&
730
+ spam_pause_threshold == o.spam_pause_threshold &&
731
+ start_date == o.start_date &&
732
+ status == o.status &&
733
+ stop_condition == o.stop_condition &&
734
+ timezone == o.timezone &&
735
+ track_clicks == o.track_clicks &&
736
+ tracking_domain_id == o.tracking_domain_id &&
737
+ track_opens == o.track_opens &&
738
+ unsubscribe_text == o.unsubscribe_text &&
739
+ updated_at == o.updated_at &&
740
+ variant_distribution == o.variant_distribution &&
741
+ window_from == o.window_from &&
742
+ window_to == o.window_to
743
+ end
744
+
745
+ # @see the `==` method
746
+ # @param [Object] Object to be compared
747
+ def eql?(o)
748
+ self == o
749
+ end
750
+
751
+ # Calculates hash code according to all attributes.
752
+ # @return [Integer] Hash code
753
+ def hash
754
+ [active_days, add_unsubscribe, archived_at, auto_pause_on_company_reply, bounce_pause_threshold, created_at, id, jitter_max_seconds, jitter_min_seconds, kind, name, new_per_day, object, paused_at, paused_meta, paused_reason, plain_text_mode, send_interval_minutes, spam_pause_threshold, start_date, status, stop_condition, timezone, track_clicks, tracking_domain_id, track_opens, unsubscribe_text, updated_at, variant_distribution, window_from, window_to].hash
755
+ end
756
+
757
+ # Builds the object from hash
758
+ # @param [Hash] attributes Model attributes in the form of hash
759
+ # @return [Object] Returns the model itself
760
+ def self.build_from_hash(attributes)
761
+ return nil unless attributes.is_a?(Hash)
762
+ attributes = attributes.transform_keys(&:to_sym)
763
+ transformed_hash = {}
764
+ openapi_types.each_pair do |key, type|
765
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
766
+ transformed_hash["#{key}"] = nil
767
+ elsif type =~ /\AArray<(.*)>/i
768
+ # check to ensure the input is an array given that the attribute
769
+ # is documented as an array but the input is not
770
+ if attributes[attribute_map[key]].is_a?(Array)
771
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
772
+ end
773
+ elsif !attributes[attribute_map[key]].nil?
774
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
775
+ end
776
+ end
777
+ new(transformed_hash)
778
+ end
779
+
780
+ # Deserializes the data based on type
781
+ # @param string type Data type
782
+ # @param string value Value to be deserialized
783
+ # @return [Object] Deserialized data
784
+ def self._deserialize(type, value)
785
+ case type.to_sym
786
+ when :Time
787
+ Time.parse(value)
788
+ when :Date
789
+ Date.parse(value)
790
+ when :String
791
+ value.to_s
792
+ when :Integer
793
+ value.to_i
794
+ when :Float
795
+ value.to_f
796
+ when :Boolean
797
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
798
+ true
799
+ else
800
+ false
801
+ end
802
+ when :Object
803
+ # generic object (usually a Hash), return directly
804
+ value
805
+ when /\AArray<(?<inner_type>.+)>\z/
806
+ inner_type = Regexp.last_match[:inner_type]
807
+ value.map { |v| _deserialize(inner_type, v) }
808
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
809
+ k_type = Regexp.last_match[:k_type]
810
+ v_type = Regexp.last_match[:v_type]
811
+ {}.tap do |hash|
812
+ value.each do |k, v|
813
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
814
+ end
815
+ end
816
+ else # model
817
+ # models (e.g. Pet) or oneOf
818
+ klass = Norbelys.const_get(type)
819
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
820
+ end
821
+ end
822
+
823
+ # Returns the string representation of the object
824
+ # @return [String] String presentation of the object
825
+ def to_s
826
+ to_hash.to_s
827
+ end
828
+
829
+ # to_body is an alias to to_hash (backward compatibility)
830
+ # @return [Hash] Returns the object in the form of hash
831
+ def to_body
832
+ to_hash
833
+ end
834
+
835
+ # Returns the object in the form of hash
836
+ # @return [Hash] Returns the object in the form of hash
837
+ def to_hash
838
+ hash = {}
839
+ self.class.attribute_map.each_pair do |attr, param|
840
+ value = self.send(attr)
841
+ if value.nil?
842
+ is_nullable = self.class.openapi_nullable.include?(attr)
843
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
844
+ end
845
+
846
+ hash[param] = _to_hash(value)
847
+ end
848
+ hash
849
+ end
850
+
851
+ # Outputs non-array value in the form of hash
852
+ # For object, use to_hash. Otherwise, just return the value
853
+ # @param [Object] value Any valid value
854
+ # @return [Hash] Returns the value in the form of hash
855
+ def _to_hash(value)
856
+ if value.is_a?(Array)
857
+ value.compact.map { |v| _to_hash(v) }
858
+ elsif value.is_a?(Hash)
859
+ {}.tap do |hash|
860
+ value.each { |k, v| hash[k] = _to_hash(v) }
861
+ end
862
+ elsif value.respond_to? :to_hash
863
+ value.to_hash
864
+ else
865
+ value
866
+ end
867
+ end
868
+
869
+ end
870
+
871
+ end