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,887 @@
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 ProgramListItem
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
+ attr_accessor :stats
99
+
100
+ class EnumAttributeValidator
101
+ attr_reader :datatype
102
+ attr_reader :allowable_values
103
+
104
+ def initialize(datatype, allowable_values)
105
+ @allowable_values = allowable_values.map do |value|
106
+ case datatype.to_s
107
+ when /Integer/i
108
+ value.to_i
109
+ when /Float/i
110
+ value.to_f
111
+ else
112
+ value
113
+ end
114
+ end
115
+ end
116
+
117
+ def valid?(value)
118
+ !value || allowable_values.include?(value)
119
+ end
120
+ end
121
+
122
+ # Attribute mapping from ruby-style variable name to JSON key.
123
+ def self.attribute_map
124
+ {
125
+ :'active_days' => :'activeDays',
126
+ :'add_unsubscribe' => :'addUnsubscribe',
127
+ :'archived_at' => :'archivedAt',
128
+ :'auto_pause_on_company_reply' => :'autoPauseOnCompanyReply',
129
+ :'bounce_pause_threshold' => :'bouncePauseThreshold',
130
+ :'created_at' => :'createdAt',
131
+ :'id' => :'id',
132
+ :'jitter_max_seconds' => :'jitterMaxSeconds',
133
+ :'jitter_min_seconds' => :'jitterMinSeconds',
134
+ :'kind' => :'kind',
135
+ :'name' => :'name',
136
+ :'new_per_day' => :'newPerDay',
137
+ :'object' => :'object',
138
+ :'paused_at' => :'pausedAt',
139
+ :'paused_meta' => :'pausedMeta',
140
+ :'paused_reason' => :'pausedReason',
141
+ :'plain_text_mode' => :'plainTextMode',
142
+ :'send_interval_minutes' => :'sendIntervalMinutes',
143
+ :'spam_pause_threshold' => :'spamPauseThreshold',
144
+ :'start_date' => :'startDate',
145
+ :'status' => :'status',
146
+ :'stop_condition' => :'stopCondition',
147
+ :'timezone' => :'timezone',
148
+ :'track_clicks' => :'trackClicks',
149
+ :'tracking_domain_id' => :'trackingDomainId',
150
+ :'track_opens' => :'trackOpens',
151
+ :'unsubscribe_text' => :'unsubscribeText',
152
+ :'updated_at' => :'updatedAt',
153
+ :'variant_distribution' => :'variantDistribution',
154
+ :'window_from' => :'windowFrom',
155
+ :'window_to' => :'windowTo',
156
+ :'stats' => :'stats'
157
+ }
158
+ end
159
+
160
+ # Returns all the JSON keys this model knows about
161
+ def self.acceptable_attributes
162
+ attribute_map.values
163
+ end
164
+
165
+ # Attribute type mapping.
166
+ def self.openapi_types
167
+ {
168
+ :'active_days' => :'Array<Integer>',
169
+ :'add_unsubscribe' => :'Boolean',
170
+ :'archived_at' => :'Object',
171
+ :'auto_pause_on_company_reply' => :'Boolean',
172
+ :'bounce_pause_threshold' => :'Float',
173
+ :'created_at' => :'Object',
174
+ :'id' => :'String',
175
+ :'jitter_max_seconds' => :'Integer',
176
+ :'jitter_min_seconds' => :'Integer',
177
+ :'kind' => :'String',
178
+ :'name' => :'String',
179
+ :'new_per_day' => :'Integer',
180
+ :'object' => :'Object',
181
+ :'paused_at' => :'Object',
182
+ :'paused_meta' => :'ProgramPauseMeta',
183
+ :'paused_reason' => :'String',
184
+ :'plain_text_mode' => :'Boolean',
185
+ :'send_interval_minutes' => :'Integer',
186
+ :'spam_pause_threshold' => :'Float',
187
+ :'start_date' => :'Object',
188
+ :'status' => :'String',
189
+ :'stop_condition' => :'String',
190
+ :'timezone' => :'String',
191
+ :'track_clicks' => :'Boolean',
192
+ :'tracking_domain_id' => :'String',
193
+ :'track_opens' => :'Boolean',
194
+ :'unsubscribe_text' => :'String',
195
+ :'updated_at' => :'Object',
196
+ :'variant_distribution' => :'String',
197
+ :'window_from' => :'String',
198
+ :'window_to' => :'String',
199
+ :'stats' => :'ProgramStats'
200
+ }
201
+ end
202
+
203
+ # List of attributes with nullable: true
204
+ def self.openapi_nullable
205
+ Set.new([
206
+ :'active_days',
207
+ :'archived_at',
208
+ :'created_at',
209
+ :'object',
210
+ :'paused_at',
211
+ :'paused_meta',
212
+ :'paused_reason',
213
+ :'start_date',
214
+ :'tracking_domain_id',
215
+ :'unsubscribe_text',
216
+ :'updated_at',
217
+ :'window_from',
218
+ :'window_to',
219
+ ])
220
+ end
221
+
222
+ # Initializes the object
223
+ # @param [Hash] attributes Model attributes in the form of hash
224
+ def initialize(attributes = {})
225
+ if (!attributes.is_a?(Hash))
226
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Norbelys::ProgramListItem` initialize method"
227
+ end
228
+
229
+ # check to see if the attribute exists and convert string to symbol for hash key
230
+ attributes = attributes.each_with_object({}) { |(k, v), h|
231
+ if (!self.class.attribute_map.key?(k.to_sym))
232
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Norbelys::ProgramListItem`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
233
+ end
234
+ h[k.to_sym] = v
235
+ }
236
+
237
+ if attributes.key?(:'active_days')
238
+ if (value = attributes[:'active_days']).is_a?(Array)
239
+ self.active_days = value
240
+ end
241
+ else
242
+ self.active_days = nil
243
+ end
244
+
245
+ if attributes.key?(:'add_unsubscribe')
246
+ self.add_unsubscribe = attributes[:'add_unsubscribe']
247
+ else
248
+ self.add_unsubscribe = nil
249
+ end
250
+
251
+ if attributes.key?(:'archived_at')
252
+ self.archived_at = attributes[:'archived_at']
253
+ end
254
+
255
+ if attributes.key?(:'auto_pause_on_company_reply')
256
+ self.auto_pause_on_company_reply = attributes[:'auto_pause_on_company_reply']
257
+ else
258
+ self.auto_pause_on_company_reply = nil
259
+ end
260
+
261
+ if attributes.key?(:'bounce_pause_threshold')
262
+ self.bounce_pause_threshold = attributes[:'bounce_pause_threshold']
263
+ else
264
+ self.bounce_pause_threshold = nil
265
+ end
266
+
267
+ if attributes.key?(:'created_at')
268
+ self.created_at = attributes[:'created_at']
269
+ end
270
+
271
+ if attributes.key?(:'id')
272
+ self.id = attributes[:'id']
273
+ else
274
+ self.id = nil
275
+ end
276
+
277
+ if attributes.key?(:'jitter_max_seconds')
278
+ self.jitter_max_seconds = attributes[:'jitter_max_seconds']
279
+ else
280
+ self.jitter_max_seconds = nil
281
+ end
282
+
283
+ if attributes.key?(:'jitter_min_seconds')
284
+ self.jitter_min_seconds = attributes[:'jitter_min_seconds']
285
+ else
286
+ self.jitter_min_seconds = nil
287
+ end
288
+
289
+ if attributes.key?(:'kind')
290
+ self.kind = attributes[:'kind']
291
+ else
292
+ self.kind = nil
293
+ end
294
+
295
+ if attributes.key?(:'name')
296
+ self.name = attributes[:'name']
297
+ else
298
+ self.name = nil
299
+ end
300
+
301
+ if attributes.key?(:'new_per_day')
302
+ self.new_per_day = attributes[:'new_per_day']
303
+ else
304
+ self.new_per_day = nil
305
+ end
306
+
307
+ if attributes.key?(:'object')
308
+ self.object = attributes[:'object']
309
+ end
310
+
311
+ if attributes.key?(:'paused_at')
312
+ self.paused_at = attributes[:'paused_at']
313
+ end
314
+
315
+ if attributes.key?(:'paused_meta')
316
+ self.paused_meta = attributes[:'paused_meta']
317
+ else
318
+ self.paused_meta = nil
319
+ end
320
+
321
+ if attributes.key?(:'paused_reason')
322
+ self.paused_reason = attributes[:'paused_reason']
323
+ else
324
+ self.paused_reason = nil
325
+ end
326
+
327
+ if attributes.key?(:'plain_text_mode')
328
+ self.plain_text_mode = attributes[:'plain_text_mode']
329
+ else
330
+ self.plain_text_mode = nil
331
+ end
332
+
333
+ if attributes.key?(:'send_interval_minutes')
334
+ self.send_interval_minutes = attributes[:'send_interval_minutes']
335
+ else
336
+ self.send_interval_minutes = nil
337
+ end
338
+
339
+ if attributes.key?(:'spam_pause_threshold')
340
+ self.spam_pause_threshold = attributes[:'spam_pause_threshold']
341
+ else
342
+ self.spam_pause_threshold = nil
343
+ end
344
+
345
+ if attributes.key?(:'start_date')
346
+ self.start_date = attributes[:'start_date']
347
+ end
348
+
349
+ if attributes.key?(:'status')
350
+ self.status = attributes[:'status']
351
+ else
352
+ self.status = nil
353
+ end
354
+
355
+ if attributes.key?(:'stop_condition')
356
+ self.stop_condition = attributes[:'stop_condition']
357
+ else
358
+ self.stop_condition = nil
359
+ end
360
+
361
+ if attributes.key?(:'timezone')
362
+ self.timezone = attributes[:'timezone']
363
+ else
364
+ self.timezone = nil
365
+ end
366
+
367
+ if attributes.key?(:'track_clicks')
368
+ self.track_clicks = attributes[:'track_clicks']
369
+ else
370
+ self.track_clicks = nil
371
+ end
372
+
373
+ if attributes.key?(:'tracking_domain_id')
374
+ self.tracking_domain_id = attributes[:'tracking_domain_id']
375
+ else
376
+ self.tracking_domain_id = nil
377
+ end
378
+
379
+ if attributes.key?(:'track_opens')
380
+ self.track_opens = attributes[:'track_opens']
381
+ else
382
+ self.track_opens = nil
383
+ end
384
+
385
+ if attributes.key?(:'unsubscribe_text')
386
+ self.unsubscribe_text = attributes[:'unsubscribe_text']
387
+ else
388
+ self.unsubscribe_text = nil
389
+ end
390
+
391
+ if attributes.key?(:'updated_at')
392
+ self.updated_at = attributes[:'updated_at']
393
+ end
394
+
395
+ if attributes.key?(:'variant_distribution')
396
+ self.variant_distribution = attributes[:'variant_distribution']
397
+ else
398
+ self.variant_distribution = nil
399
+ end
400
+
401
+ if attributes.key?(:'window_from')
402
+ self.window_from = attributes[:'window_from']
403
+ else
404
+ self.window_from = nil
405
+ end
406
+
407
+ if attributes.key?(:'window_to')
408
+ self.window_to = attributes[:'window_to']
409
+ else
410
+ self.window_to = nil
411
+ end
412
+
413
+ if attributes.key?(:'stats')
414
+ self.stats = attributes[:'stats']
415
+ else
416
+ self.stats = nil
417
+ end
418
+ end
419
+
420
+ # Show invalid properties with the reasons. Usually used together with valid?
421
+ # @return Array for valid properties with the reasons
422
+ def list_invalid_properties
423
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
424
+ invalid_properties = Array.new
425
+ if @add_unsubscribe.nil?
426
+ invalid_properties.push('invalid value for "add_unsubscribe", add_unsubscribe cannot be nil.')
427
+ end
428
+
429
+ if @auto_pause_on_company_reply.nil?
430
+ invalid_properties.push('invalid value for "auto_pause_on_company_reply", auto_pause_on_company_reply cannot be nil.')
431
+ end
432
+
433
+ if @bounce_pause_threshold.nil?
434
+ invalid_properties.push('invalid value for "bounce_pause_threshold", bounce_pause_threshold cannot be nil.')
435
+ end
436
+
437
+ if @bounce_pause_threshold > 100
438
+ invalid_properties.push('invalid value for "bounce_pause_threshold", must be smaller than or equal to 100.')
439
+ end
440
+
441
+ if @bounce_pause_threshold < 0
442
+ invalid_properties.push('invalid value for "bounce_pause_threshold", must be greater than or equal to 0.')
443
+ end
444
+
445
+ if @id.nil?
446
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
447
+ end
448
+
449
+ if @jitter_max_seconds.nil?
450
+ invalid_properties.push('invalid value for "jitter_max_seconds", jitter_max_seconds cannot be nil.')
451
+ end
452
+
453
+ if @jitter_max_seconds < 0
454
+ invalid_properties.push('invalid value for "jitter_max_seconds", must be greater than or equal to 0.')
455
+ end
456
+
457
+ if @jitter_min_seconds.nil?
458
+ invalid_properties.push('invalid value for "jitter_min_seconds", jitter_min_seconds cannot be nil.')
459
+ end
460
+
461
+ if @jitter_min_seconds < 0
462
+ invalid_properties.push('invalid value for "jitter_min_seconds", must be greater than or equal to 0.')
463
+ end
464
+
465
+ if @kind.nil?
466
+ invalid_properties.push('invalid value for "kind", kind cannot be nil.')
467
+ end
468
+
469
+ if @name.nil?
470
+ invalid_properties.push('invalid value for "name", name cannot be nil.')
471
+ end
472
+
473
+ if @new_per_day.nil?
474
+ invalid_properties.push('invalid value for "new_per_day", new_per_day cannot be nil.')
475
+ end
476
+
477
+ if @new_per_day < 0
478
+ invalid_properties.push('invalid value for "new_per_day", must be greater than or equal to 0.')
479
+ end
480
+
481
+ if @plain_text_mode.nil?
482
+ invalid_properties.push('invalid value for "plain_text_mode", plain_text_mode cannot be nil.')
483
+ end
484
+
485
+ if @send_interval_minutes.nil?
486
+ invalid_properties.push('invalid value for "send_interval_minutes", send_interval_minutes cannot be nil.')
487
+ end
488
+
489
+ if @send_interval_minutes < 0
490
+ invalid_properties.push('invalid value for "send_interval_minutes", must be greater than or equal to 0.')
491
+ end
492
+
493
+ if @spam_pause_threshold.nil?
494
+ invalid_properties.push('invalid value for "spam_pause_threshold", spam_pause_threshold cannot be nil.')
495
+ end
496
+
497
+ if @spam_pause_threshold > 100
498
+ invalid_properties.push('invalid value for "spam_pause_threshold", must be smaller than or equal to 100.')
499
+ end
500
+
501
+ if @spam_pause_threshold < 0
502
+ invalid_properties.push('invalid value for "spam_pause_threshold", must be greater than or equal to 0.')
503
+ end
504
+
505
+ if @status.nil?
506
+ invalid_properties.push('invalid value for "status", status cannot be nil.')
507
+ end
508
+
509
+ if @stop_condition.nil?
510
+ invalid_properties.push('invalid value for "stop_condition", stop_condition cannot be nil.')
511
+ end
512
+
513
+ if @timezone.nil?
514
+ invalid_properties.push('invalid value for "timezone", timezone cannot be nil.')
515
+ end
516
+
517
+ if @track_clicks.nil?
518
+ invalid_properties.push('invalid value for "track_clicks", track_clicks cannot be nil.')
519
+ end
520
+
521
+ if @track_opens.nil?
522
+ invalid_properties.push('invalid value for "track_opens", track_opens cannot be nil.')
523
+ end
524
+
525
+ if @variant_distribution.nil?
526
+ invalid_properties.push('invalid value for "variant_distribution", variant_distribution cannot be nil.')
527
+ end
528
+
529
+ if @stats.nil?
530
+ invalid_properties.push('invalid value for "stats", stats cannot be nil.')
531
+ end
532
+
533
+ invalid_properties
534
+ end
535
+
536
+ # Check to see if the all the properties in the model are valid
537
+ # @return true if the model is valid
538
+ def valid?
539
+ warn '[DEPRECATED] the `valid?` method is obsolete'
540
+ return false if @add_unsubscribe.nil?
541
+ return false if @auto_pause_on_company_reply.nil?
542
+ return false if @bounce_pause_threshold.nil?
543
+ return false if @bounce_pause_threshold > 100
544
+ return false if @bounce_pause_threshold < 0
545
+ return false if @id.nil?
546
+ return false if @jitter_max_seconds.nil?
547
+ return false if @jitter_max_seconds < 0
548
+ return false if @jitter_min_seconds.nil?
549
+ return false if @jitter_min_seconds < 0
550
+ return false if @kind.nil?
551
+ kind_validator = EnumAttributeValidator.new('String', ["cold_sequence"])
552
+ return false unless kind_validator.valid?(@kind)
553
+ return false if @name.nil?
554
+ return false if @new_per_day.nil?
555
+ return false if @new_per_day < 0
556
+ paused_reason_validator = EnumAttributeValidator.new('String', ["manual", "bounce_rate", "spam_rate", "orphaned_sender"])
557
+ return false unless paused_reason_validator.valid?(@paused_reason)
558
+ return false if @plain_text_mode.nil?
559
+ return false if @send_interval_minutes.nil?
560
+ return false if @send_interval_minutes < 0
561
+ return false if @spam_pause_threshold.nil?
562
+ return false if @spam_pause_threshold > 100
563
+ return false if @spam_pause_threshold < 0
564
+ return false if @status.nil?
565
+ status_validator = EnumAttributeValidator.new('String', ["draft", "active", "paused", "done"])
566
+ return false unless status_validator.valid?(@status)
567
+ return false if @stop_condition.nil?
568
+ stop_condition_validator = EnumAttributeValidator.new('String', ["reply", "click", "open", "none"])
569
+ return false unless stop_condition_validator.valid?(@stop_condition)
570
+ return false if @timezone.nil?
571
+ return false if @track_clicks.nil?
572
+ return false if @track_opens.nil?
573
+ return false if @variant_distribution.nil?
574
+ variant_distribution_validator = EnumAttributeValidator.new('String', ["pattern", "random"])
575
+ return false unless variant_distribution_validator.valid?(@variant_distribution)
576
+ return false if @stats.nil?
577
+ true
578
+ end
579
+
580
+ # Custom attribute writer method with validation
581
+ # @param [Object] bounce_pause_threshold Value to be assigned
582
+ def bounce_pause_threshold=(bounce_pause_threshold)
583
+ if bounce_pause_threshold.nil?
584
+ fail ArgumentError, 'bounce_pause_threshold cannot be nil'
585
+ end
586
+
587
+ if bounce_pause_threshold > 100
588
+ fail ArgumentError, 'invalid value for "bounce_pause_threshold", must be smaller than or equal to 100.'
589
+ end
590
+
591
+ if bounce_pause_threshold < 0
592
+ fail ArgumentError, 'invalid value for "bounce_pause_threshold", must be greater than or equal to 0.'
593
+ end
594
+
595
+ @bounce_pause_threshold = bounce_pause_threshold
596
+ end
597
+
598
+ # Custom attribute writer method with validation
599
+ # @param [Object] jitter_max_seconds Value to be assigned
600
+ def jitter_max_seconds=(jitter_max_seconds)
601
+ if jitter_max_seconds.nil?
602
+ fail ArgumentError, 'jitter_max_seconds cannot be nil'
603
+ end
604
+
605
+ if jitter_max_seconds < 0
606
+ fail ArgumentError, 'invalid value for "jitter_max_seconds", must be greater than or equal to 0.'
607
+ end
608
+
609
+ @jitter_max_seconds = jitter_max_seconds
610
+ end
611
+
612
+ # Custom attribute writer method with validation
613
+ # @param [Object] jitter_min_seconds Value to be assigned
614
+ def jitter_min_seconds=(jitter_min_seconds)
615
+ if jitter_min_seconds.nil?
616
+ fail ArgumentError, 'jitter_min_seconds cannot be nil'
617
+ end
618
+
619
+ if jitter_min_seconds < 0
620
+ fail ArgumentError, 'invalid value for "jitter_min_seconds", must be greater than or equal to 0.'
621
+ end
622
+
623
+ @jitter_min_seconds = jitter_min_seconds
624
+ end
625
+
626
+ # Custom attribute writer method checking allowed values (enum).
627
+ # @param [Object] kind Object to be assigned
628
+ def kind=(kind)
629
+ validator = EnumAttributeValidator.new('String', ["cold_sequence"])
630
+ unless validator.valid?(kind)
631
+ fail ArgumentError, "invalid value for \"kind\", must be one of #{validator.allowable_values}."
632
+ end
633
+ @kind = kind
634
+ end
635
+
636
+ # Custom attribute writer method with validation
637
+ # @param [Object] new_per_day Value to be assigned
638
+ def new_per_day=(new_per_day)
639
+ if new_per_day.nil?
640
+ fail ArgumentError, 'new_per_day cannot be nil'
641
+ end
642
+
643
+ if new_per_day < 0
644
+ fail ArgumentError, 'invalid value for "new_per_day", must be greater than or equal to 0.'
645
+ end
646
+
647
+ @new_per_day = new_per_day
648
+ end
649
+
650
+ # Custom attribute writer method checking allowed values (enum).
651
+ # @param [Object] paused_reason Object to be assigned
652
+ def paused_reason=(paused_reason)
653
+ validator = EnumAttributeValidator.new('String', ["manual", "bounce_rate", "spam_rate", "orphaned_sender"])
654
+ unless validator.valid?(paused_reason)
655
+ fail ArgumentError, "invalid value for \"paused_reason\", must be one of #{validator.allowable_values}."
656
+ end
657
+ @paused_reason = paused_reason
658
+ end
659
+
660
+ # Custom attribute writer method with validation
661
+ # @param [Object] send_interval_minutes Value to be assigned
662
+ def send_interval_minutes=(send_interval_minutes)
663
+ if send_interval_minutes.nil?
664
+ fail ArgumentError, 'send_interval_minutes cannot be nil'
665
+ end
666
+
667
+ if send_interval_minutes < 0
668
+ fail ArgumentError, 'invalid value for "send_interval_minutes", must be greater than or equal to 0.'
669
+ end
670
+
671
+ @send_interval_minutes = send_interval_minutes
672
+ end
673
+
674
+ # Custom attribute writer method with validation
675
+ # @param [Object] spam_pause_threshold Value to be assigned
676
+ def spam_pause_threshold=(spam_pause_threshold)
677
+ if spam_pause_threshold.nil?
678
+ fail ArgumentError, 'spam_pause_threshold cannot be nil'
679
+ end
680
+
681
+ if spam_pause_threshold > 100
682
+ fail ArgumentError, 'invalid value for "spam_pause_threshold", must be smaller than or equal to 100.'
683
+ end
684
+
685
+ if spam_pause_threshold < 0
686
+ fail ArgumentError, 'invalid value for "spam_pause_threshold", must be greater than or equal to 0.'
687
+ end
688
+
689
+ @spam_pause_threshold = spam_pause_threshold
690
+ end
691
+
692
+ # Custom attribute writer method checking allowed values (enum).
693
+ # @param [Object] status Object to be assigned
694
+ def status=(status)
695
+ validator = EnumAttributeValidator.new('String', ["draft", "active", "paused", "done"])
696
+ unless validator.valid?(status)
697
+ fail ArgumentError, "invalid value for \"status\", must be one of #{validator.allowable_values}."
698
+ end
699
+ @status = status
700
+ end
701
+
702
+ # Custom attribute writer method checking allowed values (enum).
703
+ # @param [Object] stop_condition Object to be assigned
704
+ def stop_condition=(stop_condition)
705
+ validator = EnumAttributeValidator.new('String', ["reply", "click", "open", "none"])
706
+ unless validator.valid?(stop_condition)
707
+ fail ArgumentError, "invalid value for \"stop_condition\", must be one of #{validator.allowable_values}."
708
+ end
709
+ @stop_condition = stop_condition
710
+ end
711
+
712
+ # Custom attribute writer method checking allowed values (enum).
713
+ # @param [Object] variant_distribution Object to be assigned
714
+ def variant_distribution=(variant_distribution)
715
+ validator = EnumAttributeValidator.new('String', ["pattern", "random"])
716
+ unless validator.valid?(variant_distribution)
717
+ fail ArgumentError, "invalid value for \"variant_distribution\", must be one of #{validator.allowable_values}."
718
+ end
719
+ @variant_distribution = variant_distribution
720
+ end
721
+
722
+ # Checks equality by comparing each attribute.
723
+ # @param [Object] Object to be compared
724
+ def ==(o)
725
+ return true if self.equal?(o)
726
+ self.class == o.class &&
727
+ active_days == o.active_days &&
728
+ add_unsubscribe == o.add_unsubscribe &&
729
+ archived_at == o.archived_at &&
730
+ auto_pause_on_company_reply == o.auto_pause_on_company_reply &&
731
+ bounce_pause_threshold == o.bounce_pause_threshold &&
732
+ created_at == o.created_at &&
733
+ id == o.id &&
734
+ jitter_max_seconds == o.jitter_max_seconds &&
735
+ jitter_min_seconds == o.jitter_min_seconds &&
736
+ kind == o.kind &&
737
+ name == o.name &&
738
+ new_per_day == o.new_per_day &&
739
+ object == o.object &&
740
+ paused_at == o.paused_at &&
741
+ paused_meta == o.paused_meta &&
742
+ paused_reason == o.paused_reason &&
743
+ plain_text_mode == o.plain_text_mode &&
744
+ send_interval_minutes == o.send_interval_minutes &&
745
+ spam_pause_threshold == o.spam_pause_threshold &&
746
+ start_date == o.start_date &&
747
+ status == o.status &&
748
+ stop_condition == o.stop_condition &&
749
+ timezone == o.timezone &&
750
+ track_clicks == o.track_clicks &&
751
+ tracking_domain_id == o.tracking_domain_id &&
752
+ track_opens == o.track_opens &&
753
+ unsubscribe_text == o.unsubscribe_text &&
754
+ updated_at == o.updated_at &&
755
+ variant_distribution == o.variant_distribution &&
756
+ window_from == o.window_from &&
757
+ window_to == o.window_to &&
758
+ stats == o.stats
759
+ end
760
+
761
+ # @see the `==` method
762
+ # @param [Object] Object to be compared
763
+ def eql?(o)
764
+ self == o
765
+ end
766
+
767
+ # Calculates hash code according to all attributes.
768
+ # @return [Integer] Hash code
769
+ def hash
770
+ [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, stats].hash
771
+ end
772
+
773
+ # Builds the object from hash
774
+ # @param [Hash] attributes Model attributes in the form of hash
775
+ # @return [Object] Returns the model itself
776
+ def self.build_from_hash(attributes)
777
+ return nil unless attributes.is_a?(Hash)
778
+ attributes = attributes.transform_keys(&:to_sym)
779
+ transformed_hash = {}
780
+ openapi_types.each_pair do |key, type|
781
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
782
+ transformed_hash["#{key}"] = nil
783
+ elsif type =~ /\AArray<(.*)>/i
784
+ # check to ensure the input is an array given that the attribute
785
+ # is documented as an array but the input is not
786
+ if attributes[attribute_map[key]].is_a?(Array)
787
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
788
+ end
789
+ elsif !attributes[attribute_map[key]].nil?
790
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
791
+ end
792
+ end
793
+ new(transformed_hash)
794
+ end
795
+
796
+ # Deserializes the data based on type
797
+ # @param string type Data type
798
+ # @param string value Value to be deserialized
799
+ # @return [Object] Deserialized data
800
+ def self._deserialize(type, value)
801
+ case type.to_sym
802
+ when :Time
803
+ Time.parse(value)
804
+ when :Date
805
+ Date.parse(value)
806
+ when :String
807
+ value.to_s
808
+ when :Integer
809
+ value.to_i
810
+ when :Float
811
+ value.to_f
812
+ when :Boolean
813
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
814
+ true
815
+ else
816
+ false
817
+ end
818
+ when :Object
819
+ # generic object (usually a Hash), return directly
820
+ value
821
+ when /\AArray<(?<inner_type>.+)>\z/
822
+ inner_type = Regexp.last_match[:inner_type]
823
+ value.map { |v| _deserialize(inner_type, v) }
824
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
825
+ k_type = Regexp.last_match[:k_type]
826
+ v_type = Regexp.last_match[:v_type]
827
+ {}.tap do |hash|
828
+ value.each do |k, v|
829
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
830
+ end
831
+ end
832
+ else # model
833
+ # models (e.g. Pet) or oneOf
834
+ klass = Norbelys.const_get(type)
835
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
836
+ end
837
+ end
838
+
839
+ # Returns the string representation of the object
840
+ # @return [String] String presentation of the object
841
+ def to_s
842
+ to_hash.to_s
843
+ end
844
+
845
+ # to_body is an alias to to_hash (backward compatibility)
846
+ # @return [Hash] Returns the object in the form of hash
847
+ def to_body
848
+ to_hash
849
+ end
850
+
851
+ # Returns the object in the form of hash
852
+ # @return [Hash] Returns the object in the form of hash
853
+ def to_hash
854
+ hash = {}
855
+ self.class.attribute_map.each_pair do |attr, param|
856
+ value = self.send(attr)
857
+ if value.nil?
858
+ is_nullable = self.class.openapi_nullable.include?(attr)
859
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
860
+ end
861
+
862
+ hash[param] = _to_hash(value)
863
+ end
864
+ hash
865
+ end
866
+
867
+ # Outputs non-array value in the form of hash
868
+ # For object, use to_hash. Otherwise, just return the value
869
+ # @param [Object] value Any valid value
870
+ # @return [Hash] Returns the value in the form of hash
871
+ def _to_hash(value)
872
+ if value.is_a?(Array)
873
+ value.compact.map { |v| _to_hash(v) }
874
+ elsif value.is_a?(Hash)
875
+ {}.tap do |hash|
876
+ value.each { |k, v| hash[k] = _to_hash(v) }
877
+ end
878
+ elsif value.respond_to? :to_hash
879
+ value.to_hash
880
+ else
881
+ value
882
+ end
883
+ end
884
+
885
+ end
886
+
887
+ end