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,708 @@
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 Sender
18
+ attr_accessor :archived_at
19
+
20
+ attr_accessor :bcc_crm_email
21
+
22
+ attr_accessor :client_label
23
+
24
+ attr_accessor :created_at
25
+
26
+ # Max sends per day for this mailbox.
27
+ attr_accessor :daily_limit
28
+
29
+ # The sending address.
30
+ attr_accessor :from_email
31
+
32
+ # Display name.
33
+ attr_accessor :from_name
34
+
35
+ attr_accessor :health_updated_at
36
+
37
+ # The sender id.
38
+ attr_accessor :id
39
+
40
+ attr_accessor :imap_host
41
+
42
+ attr_accessor :imap_port
43
+
44
+ attr_accessor :imap_security
45
+
46
+ # Minimum gap between sends from this mailbox.
47
+ attr_accessor :min_gap_minutes
48
+
49
+ attr_accessor :object
50
+
51
+ attr_accessor :reply_to
52
+
53
+ # System-computed reputation tier: `good`, `warning`, or `bad`.
54
+ attr_accessor :reputation
55
+
56
+ # The sending domain this mailbox lives under.
57
+ attr_accessor :sending_domain_id
58
+
59
+ attr_accessor :signature_html
60
+
61
+ attr_accessor :smtp_host
62
+
63
+ attr_accessor :smtp_port
64
+
65
+ attr_accessor :smtp_security
66
+
67
+ # Operational state: `healthy`, `throttled`, or `paused`.
68
+ attr_accessor :state
69
+
70
+ # How messages are carried: `smtp`, `provider_api`, `self_hosted`, or `voice`.
71
+ attr_accessor :transport_mode
72
+
73
+ attr_accessor :transport_provider
74
+
75
+ attr_accessor :updated_at
76
+
77
+ class EnumAttributeValidator
78
+ attr_reader :datatype
79
+ attr_reader :allowable_values
80
+
81
+ def initialize(datatype, allowable_values)
82
+ @allowable_values = allowable_values.map do |value|
83
+ case datatype.to_s
84
+ when /Integer/i
85
+ value.to_i
86
+ when /Float/i
87
+ value.to_f
88
+ else
89
+ value
90
+ end
91
+ end
92
+ end
93
+
94
+ def valid?(value)
95
+ !value || allowable_values.include?(value)
96
+ end
97
+ end
98
+
99
+ # Attribute mapping from ruby-style variable name to JSON key.
100
+ def self.attribute_map
101
+ {
102
+ :'archived_at' => :'archivedAt',
103
+ :'bcc_crm_email' => :'bccCrmEmail',
104
+ :'client_label' => :'clientLabel',
105
+ :'created_at' => :'createdAt',
106
+ :'daily_limit' => :'dailyLimit',
107
+ :'from_email' => :'fromEmail',
108
+ :'from_name' => :'fromName',
109
+ :'health_updated_at' => :'healthUpdatedAt',
110
+ :'id' => :'id',
111
+ :'imap_host' => :'imapHost',
112
+ :'imap_port' => :'imapPort',
113
+ :'imap_security' => :'imapSecurity',
114
+ :'min_gap_minutes' => :'minGapMinutes',
115
+ :'object' => :'object',
116
+ :'reply_to' => :'replyTo',
117
+ :'reputation' => :'reputation',
118
+ :'sending_domain_id' => :'sendingDomainId',
119
+ :'signature_html' => :'signatureHtml',
120
+ :'smtp_host' => :'smtpHost',
121
+ :'smtp_port' => :'smtpPort',
122
+ :'smtp_security' => :'smtpSecurity',
123
+ :'state' => :'state',
124
+ :'transport_mode' => :'transportMode',
125
+ :'transport_provider' => :'transportProvider',
126
+ :'updated_at' => :'updatedAt'
127
+ }
128
+ end
129
+
130
+ # Returns all the JSON keys this model knows about
131
+ def self.acceptable_attributes
132
+ attribute_map.values
133
+ end
134
+
135
+ # Attribute type mapping.
136
+ def self.openapi_types
137
+ {
138
+ :'archived_at' => :'Object',
139
+ :'bcc_crm_email' => :'String',
140
+ :'client_label' => :'String',
141
+ :'created_at' => :'Object',
142
+ :'daily_limit' => :'Integer',
143
+ :'from_email' => :'String',
144
+ :'from_name' => :'String',
145
+ :'health_updated_at' => :'Object',
146
+ :'id' => :'String',
147
+ :'imap_host' => :'String',
148
+ :'imap_port' => :'Integer',
149
+ :'imap_security' => :'String',
150
+ :'min_gap_minutes' => :'Integer',
151
+ :'object' => :'Object',
152
+ :'reply_to' => :'String',
153
+ :'reputation' => :'String',
154
+ :'sending_domain_id' => :'String',
155
+ :'signature_html' => :'String',
156
+ :'smtp_host' => :'String',
157
+ :'smtp_port' => :'Integer',
158
+ :'smtp_security' => :'String',
159
+ :'state' => :'String',
160
+ :'transport_mode' => :'String',
161
+ :'transport_provider' => :'String',
162
+ :'updated_at' => :'Object'
163
+ }
164
+ end
165
+
166
+ # List of attributes with nullable: true
167
+ def self.openapi_nullable
168
+ Set.new([
169
+ :'archived_at',
170
+ :'bcc_crm_email',
171
+ :'client_label',
172
+ :'created_at',
173
+ :'health_updated_at',
174
+ :'imap_host',
175
+ :'imap_port',
176
+ :'imap_security',
177
+ :'object',
178
+ :'reply_to',
179
+ :'signature_html',
180
+ :'smtp_host',
181
+ :'smtp_port',
182
+ :'smtp_security',
183
+ :'transport_provider',
184
+ :'updated_at'
185
+ ])
186
+ end
187
+
188
+ # Initializes the object
189
+ # @param [Hash] attributes Model attributes in the form of hash
190
+ def initialize(attributes = {})
191
+ if (!attributes.is_a?(Hash))
192
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Norbelys::Sender` initialize method"
193
+ end
194
+
195
+ # check to see if the attribute exists and convert string to symbol for hash key
196
+ attributes = attributes.each_with_object({}) { |(k, v), h|
197
+ if (!self.class.attribute_map.key?(k.to_sym))
198
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Norbelys::Sender`. Please check the name to make sure it's valid. List of attributes: " + self.class.attribute_map.keys.inspect
199
+ end
200
+ h[k.to_sym] = v
201
+ }
202
+
203
+ if attributes.key?(:'archived_at')
204
+ self.archived_at = attributes[:'archived_at']
205
+ end
206
+
207
+ if attributes.key?(:'bcc_crm_email')
208
+ self.bcc_crm_email = attributes[:'bcc_crm_email']
209
+ else
210
+ self.bcc_crm_email = nil
211
+ end
212
+
213
+ if attributes.key?(:'client_label')
214
+ self.client_label = attributes[:'client_label']
215
+ else
216
+ self.client_label = nil
217
+ end
218
+
219
+ if attributes.key?(:'created_at')
220
+ self.created_at = attributes[:'created_at']
221
+ end
222
+
223
+ if attributes.key?(:'daily_limit')
224
+ self.daily_limit = attributes[:'daily_limit']
225
+ else
226
+ self.daily_limit = nil
227
+ end
228
+
229
+ if attributes.key?(:'from_email')
230
+ self.from_email = attributes[:'from_email']
231
+ else
232
+ self.from_email = nil
233
+ end
234
+
235
+ if attributes.key?(:'from_name')
236
+ self.from_name = attributes[:'from_name']
237
+ else
238
+ self.from_name = nil
239
+ end
240
+
241
+ if attributes.key?(:'health_updated_at')
242
+ self.health_updated_at = attributes[:'health_updated_at']
243
+ end
244
+
245
+ if attributes.key?(:'id')
246
+ self.id = attributes[:'id']
247
+ else
248
+ self.id = nil
249
+ end
250
+
251
+ if attributes.key?(:'imap_host')
252
+ self.imap_host = attributes[:'imap_host']
253
+ else
254
+ self.imap_host = nil
255
+ end
256
+
257
+ if attributes.key?(:'imap_port')
258
+ self.imap_port = attributes[:'imap_port']
259
+ else
260
+ self.imap_port = nil
261
+ end
262
+
263
+ if attributes.key?(:'imap_security')
264
+ self.imap_security = attributes[:'imap_security']
265
+ else
266
+ self.imap_security = nil
267
+ end
268
+
269
+ if attributes.key?(:'min_gap_minutes')
270
+ self.min_gap_minutes = attributes[:'min_gap_minutes']
271
+ else
272
+ self.min_gap_minutes = nil
273
+ end
274
+
275
+ if attributes.key?(:'object')
276
+ self.object = attributes[:'object']
277
+ end
278
+
279
+ if attributes.key?(:'reply_to')
280
+ self.reply_to = attributes[:'reply_to']
281
+ else
282
+ self.reply_to = nil
283
+ end
284
+
285
+ if attributes.key?(:'reputation')
286
+ self.reputation = attributes[:'reputation']
287
+ else
288
+ self.reputation = nil
289
+ end
290
+
291
+ if attributes.key?(:'sending_domain_id')
292
+ self.sending_domain_id = attributes[:'sending_domain_id']
293
+ else
294
+ self.sending_domain_id = nil
295
+ end
296
+
297
+ if attributes.key?(:'signature_html')
298
+ self.signature_html = attributes[:'signature_html']
299
+ else
300
+ self.signature_html = nil
301
+ end
302
+
303
+ if attributes.key?(:'smtp_host')
304
+ self.smtp_host = attributes[:'smtp_host']
305
+ else
306
+ self.smtp_host = nil
307
+ end
308
+
309
+ if attributes.key?(:'smtp_port')
310
+ self.smtp_port = attributes[:'smtp_port']
311
+ else
312
+ self.smtp_port = nil
313
+ end
314
+
315
+ if attributes.key?(:'smtp_security')
316
+ self.smtp_security = attributes[:'smtp_security']
317
+ else
318
+ self.smtp_security = nil
319
+ end
320
+
321
+ if attributes.key?(:'state')
322
+ self.state = attributes[:'state']
323
+ else
324
+ self.state = nil
325
+ end
326
+
327
+ if attributes.key?(:'transport_mode')
328
+ self.transport_mode = attributes[:'transport_mode']
329
+ else
330
+ self.transport_mode = nil
331
+ end
332
+
333
+ if attributes.key?(:'transport_provider')
334
+ self.transport_provider = attributes[:'transport_provider']
335
+ else
336
+ self.transport_provider = nil
337
+ end
338
+
339
+ if attributes.key?(:'updated_at')
340
+ self.updated_at = attributes[:'updated_at']
341
+ end
342
+ end
343
+
344
+ # Show invalid properties with the reasons. Usually used together with valid?
345
+ # @return Array for valid properties with the reasons
346
+ def list_invalid_properties
347
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
348
+ invalid_properties = Array.new
349
+ if @daily_limit.nil?
350
+ invalid_properties.push('invalid value for "daily_limit", daily_limit cannot be nil.')
351
+ end
352
+
353
+ if @daily_limit < 0
354
+ invalid_properties.push('invalid value for "daily_limit", must be greater than or equal to 0.')
355
+ end
356
+
357
+ if @from_email.nil?
358
+ invalid_properties.push('invalid value for "from_email", from_email cannot be nil.')
359
+ end
360
+
361
+ if @from_name.nil?
362
+ invalid_properties.push('invalid value for "from_name", from_name cannot be nil.')
363
+ end
364
+
365
+ if @id.nil?
366
+ invalid_properties.push('invalid value for "id", id cannot be nil.')
367
+ end
368
+
369
+ if @imap_port > 65535
370
+ invalid_properties.push('invalid value for "imap_port", must be smaller than or equal to 65535.')
371
+ end
372
+
373
+ if @imap_port < 1
374
+ invalid_properties.push('invalid value for "imap_port", must be greater than or equal to 1.')
375
+ end
376
+
377
+ if @min_gap_minutes.nil?
378
+ invalid_properties.push('invalid value for "min_gap_minutes", min_gap_minutes cannot be nil.')
379
+ end
380
+
381
+ if @min_gap_minutes < 0
382
+ invalid_properties.push('invalid value for "min_gap_minutes", must be greater than or equal to 0.')
383
+ end
384
+
385
+ if @reputation.nil?
386
+ invalid_properties.push('invalid value for "reputation", reputation cannot be nil.')
387
+ end
388
+
389
+ if @sending_domain_id.nil?
390
+ invalid_properties.push('invalid value for "sending_domain_id", sending_domain_id cannot be nil.')
391
+ end
392
+
393
+ if @smtp_port > 65535
394
+ invalid_properties.push('invalid value for "smtp_port", must be smaller than or equal to 65535.')
395
+ end
396
+
397
+ if @smtp_port < 1
398
+ invalid_properties.push('invalid value for "smtp_port", must be greater than or equal to 1.')
399
+ end
400
+
401
+ if @state.nil?
402
+ invalid_properties.push('invalid value for "state", state cannot be nil.')
403
+ end
404
+
405
+ if @transport_mode.nil?
406
+ invalid_properties.push('invalid value for "transport_mode", transport_mode cannot be nil.')
407
+ end
408
+
409
+ invalid_properties
410
+ end
411
+
412
+ # Check to see if the all the properties in the model are valid
413
+ # @return true if the model is valid
414
+ def valid?
415
+ warn '[DEPRECATED] the `valid?` method is obsolete'
416
+ return false if @daily_limit.nil?
417
+ return false if @daily_limit < 0
418
+ return false if @from_email.nil?
419
+ return false if @from_name.nil?
420
+ return false if @id.nil?
421
+ return false if @imap_port > 65535
422
+ return false if @imap_port < 1
423
+ imap_security_validator = EnumAttributeValidator.new('String', ["ssl", "tls", "none"])
424
+ return false unless imap_security_validator.valid?(@imap_security)
425
+ return false if @min_gap_minutes.nil?
426
+ return false if @min_gap_minutes < 0
427
+ return false if @reputation.nil?
428
+ reputation_validator = EnumAttributeValidator.new('String', ["good", "warning", "bad"])
429
+ return false unless reputation_validator.valid?(@reputation)
430
+ return false if @sending_domain_id.nil?
431
+ return false if @smtp_port > 65535
432
+ return false if @smtp_port < 1
433
+ smtp_security_validator = EnumAttributeValidator.new('String', ["ssl", "tls", "none"])
434
+ return false unless smtp_security_validator.valid?(@smtp_security)
435
+ return false if @state.nil?
436
+ state_validator = EnumAttributeValidator.new('String', ["healthy", "throttled", "paused"])
437
+ return false unless state_validator.valid?(@state)
438
+ return false if @transport_mode.nil?
439
+ transport_mode_validator = EnumAttributeValidator.new('String', ["smtp", "provider_api", "self_hosted", "voice"])
440
+ return false unless transport_mode_validator.valid?(@transport_mode)
441
+ true
442
+ end
443
+
444
+ # Custom attribute writer method with validation
445
+ # @param [Object] daily_limit Value to be assigned
446
+ def daily_limit=(daily_limit)
447
+ if daily_limit.nil?
448
+ fail ArgumentError, 'daily_limit cannot be nil'
449
+ end
450
+
451
+ if daily_limit < 0
452
+ fail ArgumentError, 'invalid value for "daily_limit", must be greater than or equal to 0.'
453
+ end
454
+
455
+ @daily_limit = daily_limit
456
+ end
457
+
458
+ # Custom attribute writer method with validation
459
+ # @param [Object] imap_port Value to be assigned
460
+ def imap_port=(imap_port)
461
+ if !imap_port.nil? && imap_port > 65535
462
+ fail ArgumentError, 'invalid value for "imap_port", must be smaller than or equal to 65535.'
463
+ end
464
+
465
+ if !imap_port.nil? && imap_port < 1
466
+ fail ArgumentError, 'invalid value for "imap_port", must be greater than or equal to 1.'
467
+ end
468
+
469
+ @imap_port = imap_port
470
+ end
471
+
472
+ # Custom attribute writer method checking allowed values (enum).
473
+ # @param [Object] imap_security Object to be assigned
474
+ def imap_security=(imap_security)
475
+ validator = EnumAttributeValidator.new('String', ["ssl", "tls", "none"])
476
+ unless validator.valid?(imap_security)
477
+ fail ArgumentError, "invalid value for \"imap_security\", must be one of #{validator.allowable_values}."
478
+ end
479
+ @imap_security = imap_security
480
+ end
481
+
482
+ # Custom attribute writer method with validation
483
+ # @param [Object] min_gap_minutes Value to be assigned
484
+ def min_gap_minutes=(min_gap_minutes)
485
+ if min_gap_minutes.nil?
486
+ fail ArgumentError, 'min_gap_minutes cannot be nil'
487
+ end
488
+
489
+ if min_gap_minutes < 0
490
+ fail ArgumentError, 'invalid value for "min_gap_minutes", must be greater than or equal to 0.'
491
+ end
492
+
493
+ @min_gap_minutes = min_gap_minutes
494
+ end
495
+
496
+ # Custom attribute writer method checking allowed values (enum).
497
+ # @param [Object] reputation Object to be assigned
498
+ def reputation=(reputation)
499
+ validator = EnumAttributeValidator.new('String', ["good", "warning", "bad"])
500
+ unless validator.valid?(reputation)
501
+ fail ArgumentError, "invalid value for \"reputation\", must be one of #{validator.allowable_values}."
502
+ end
503
+ @reputation = reputation
504
+ end
505
+
506
+ # Custom attribute writer method with validation
507
+ # @param [Object] smtp_port Value to be assigned
508
+ def smtp_port=(smtp_port)
509
+ if !smtp_port.nil? && smtp_port > 65535
510
+ fail ArgumentError, 'invalid value for "smtp_port", must be smaller than or equal to 65535.'
511
+ end
512
+
513
+ if !smtp_port.nil? && smtp_port < 1
514
+ fail ArgumentError, 'invalid value for "smtp_port", must be greater than or equal to 1.'
515
+ end
516
+
517
+ @smtp_port = smtp_port
518
+ end
519
+
520
+ # Custom attribute writer method checking allowed values (enum).
521
+ # @param [Object] smtp_security Object to be assigned
522
+ def smtp_security=(smtp_security)
523
+ validator = EnumAttributeValidator.new('String', ["ssl", "tls", "none"])
524
+ unless validator.valid?(smtp_security)
525
+ fail ArgumentError, "invalid value for \"smtp_security\", must be one of #{validator.allowable_values}."
526
+ end
527
+ @smtp_security = smtp_security
528
+ end
529
+
530
+ # Custom attribute writer method checking allowed values (enum).
531
+ # @param [Object] state Object to be assigned
532
+ def state=(state)
533
+ validator = EnumAttributeValidator.new('String', ["healthy", "throttled", "paused"])
534
+ unless validator.valid?(state)
535
+ fail ArgumentError, "invalid value for \"state\", must be one of #{validator.allowable_values}."
536
+ end
537
+ @state = state
538
+ end
539
+
540
+ # Custom attribute writer method checking allowed values (enum).
541
+ # @param [Object] transport_mode Object to be assigned
542
+ def transport_mode=(transport_mode)
543
+ validator = EnumAttributeValidator.new('String', ["smtp", "provider_api", "self_hosted", "voice"])
544
+ unless validator.valid?(transport_mode)
545
+ fail ArgumentError, "invalid value for \"transport_mode\", must be one of #{validator.allowable_values}."
546
+ end
547
+ @transport_mode = transport_mode
548
+ end
549
+
550
+ # Checks equality by comparing each attribute.
551
+ # @param [Object] Object to be compared
552
+ def ==(o)
553
+ return true if self.equal?(o)
554
+ self.class == o.class &&
555
+ archived_at == o.archived_at &&
556
+ bcc_crm_email == o.bcc_crm_email &&
557
+ client_label == o.client_label &&
558
+ created_at == o.created_at &&
559
+ daily_limit == o.daily_limit &&
560
+ from_email == o.from_email &&
561
+ from_name == o.from_name &&
562
+ health_updated_at == o.health_updated_at &&
563
+ id == o.id &&
564
+ imap_host == o.imap_host &&
565
+ imap_port == o.imap_port &&
566
+ imap_security == o.imap_security &&
567
+ min_gap_minutes == o.min_gap_minutes &&
568
+ object == o.object &&
569
+ reply_to == o.reply_to &&
570
+ reputation == o.reputation &&
571
+ sending_domain_id == o.sending_domain_id &&
572
+ signature_html == o.signature_html &&
573
+ smtp_host == o.smtp_host &&
574
+ smtp_port == o.smtp_port &&
575
+ smtp_security == o.smtp_security &&
576
+ state == o.state &&
577
+ transport_mode == o.transport_mode &&
578
+ transport_provider == o.transport_provider &&
579
+ updated_at == o.updated_at
580
+ end
581
+
582
+ # @see the `==` method
583
+ # @param [Object] Object to be compared
584
+ def eql?(o)
585
+ self == o
586
+ end
587
+
588
+ # Calculates hash code according to all attributes.
589
+ # @return [Integer] Hash code
590
+ def hash
591
+ [archived_at, bcc_crm_email, client_label, created_at, daily_limit, from_email, from_name, health_updated_at, id, imap_host, imap_port, imap_security, min_gap_minutes, object, reply_to, reputation, sending_domain_id, signature_html, smtp_host, smtp_port, smtp_security, state, transport_mode, transport_provider, updated_at].hash
592
+ end
593
+
594
+ # Builds the object from hash
595
+ # @param [Hash] attributes Model attributes in the form of hash
596
+ # @return [Object] Returns the model itself
597
+ def self.build_from_hash(attributes)
598
+ return nil unless attributes.is_a?(Hash)
599
+ attributes = attributes.transform_keys(&:to_sym)
600
+ transformed_hash = {}
601
+ openapi_types.each_pair do |key, type|
602
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
603
+ transformed_hash["#{key}"] = nil
604
+ elsif type =~ /\AArray<(.*)>/i
605
+ # check to ensure the input is an array given that the attribute
606
+ # is documented as an array but the input is not
607
+ if attributes[attribute_map[key]].is_a?(Array)
608
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
609
+ end
610
+ elsif !attributes[attribute_map[key]].nil?
611
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
612
+ end
613
+ end
614
+ new(transformed_hash)
615
+ end
616
+
617
+ # Deserializes the data based on type
618
+ # @param string type Data type
619
+ # @param string value Value to be deserialized
620
+ # @return [Object] Deserialized data
621
+ def self._deserialize(type, value)
622
+ case type.to_sym
623
+ when :Time
624
+ Time.parse(value)
625
+ when :Date
626
+ Date.parse(value)
627
+ when :String
628
+ value.to_s
629
+ when :Integer
630
+ value.to_i
631
+ when :Float
632
+ value.to_f
633
+ when :Boolean
634
+ if value.to_s =~ /\A(true|t|yes|y|1)\z/i
635
+ true
636
+ else
637
+ false
638
+ end
639
+ when :Object
640
+ # generic object (usually a Hash), return directly
641
+ value
642
+ when /\AArray<(?<inner_type>.+)>\z/
643
+ inner_type = Regexp.last_match[:inner_type]
644
+ value.map { |v| _deserialize(inner_type, v) }
645
+ when /\AHash<(?<k_type>.+?), (?<v_type>.+)>\z/
646
+ k_type = Regexp.last_match[:k_type]
647
+ v_type = Regexp.last_match[:v_type]
648
+ {}.tap do |hash|
649
+ value.each do |k, v|
650
+ hash[_deserialize(k_type, k)] = _deserialize(v_type, v)
651
+ end
652
+ end
653
+ else # model
654
+ # models (e.g. Pet) or oneOf
655
+ klass = Norbelys.const_get(type)
656
+ klass.respond_to?(:openapi_any_of) || klass.respond_to?(:openapi_one_of) ? klass.build(value) : klass.build_from_hash(value)
657
+ end
658
+ end
659
+
660
+ # Returns the string representation of the object
661
+ # @return [String] String presentation of the object
662
+ def to_s
663
+ to_hash.to_s
664
+ end
665
+
666
+ # to_body is an alias to to_hash (backward compatibility)
667
+ # @return [Hash] Returns the object in the form of hash
668
+ def to_body
669
+ to_hash
670
+ end
671
+
672
+ # Returns the object in the form of hash
673
+ # @return [Hash] Returns the object in the form of hash
674
+ def to_hash
675
+ hash = {}
676
+ self.class.attribute_map.each_pair do |attr, param|
677
+ value = self.send(attr)
678
+ if value.nil?
679
+ is_nullable = self.class.openapi_nullable.include?(attr)
680
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
681
+ end
682
+
683
+ hash[param] = _to_hash(value)
684
+ end
685
+ hash
686
+ end
687
+
688
+ # Outputs non-array value in the form of hash
689
+ # For object, use to_hash. Otherwise, just return the value
690
+ # @param [Object] value Any valid value
691
+ # @return [Hash] Returns the value in the form of hash
692
+ def _to_hash(value)
693
+ if value.is_a?(Array)
694
+ value.compact.map { |v| _to_hash(v) }
695
+ elsif value.is_a?(Hash)
696
+ {}.tap do |hash|
697
+ value.each { |k, v| hash[k] = _to_hash(v) }
698
+ end
699
+ elsif value.respond_to? :to_hash
700
+ value.to_hash
701
+ else
702
+ value
703
+ end
704
+ end
705
+
706
+ end
707
+
708
+ end