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.
- checksums.yaml +7 -0
- data/Gemfile +9 -0
- data/README.md +429 -0
- data/Rakefile +10 -0
- data/docs/AddProgramSenderParams.md +18 -0
- data/docs/AiEmailVariantContent.md +28 -0
- data/docs/AnalyticsApi.md +81 -0
- data/docs/AnalyticsQuery.md +20 -0
- data/docs/AnalyticsQueryName.md +15 -0
- data/docs/AnalyticsQueryParams.md +50 -0
- data/docs/AnalyticsQueryResult.md +20 -0
- data/docs/ApiError.md +18 -0
- data/docs/ApiErrorDetail.md +26 -0
- data/docs/AudienceActivityAction.md +15 -0
- data/docs/AudienceActivityCondition.md +20 -0
- data/docs/AudienceActivityLinkFilter.md +20 -0
- data/docs/AudienceActivityLinkMatchOp.md +15 -0
- data/docs/AudienceActivityParams.md +32 -0
- data/docs/AudienceAttributeCondition.md +22 -0
- data/docs/AudienceConditionOp.md +15 -0
- data/docs/AudienceConditionValue.md +15 -0
- data/docs/AudienceFilter.md +20 -0
- data/docs/AudienceMatch.md +15 -0
- data/docs/AudienceRule.md +26 -0
- data/docs/AudienceSource.md +26 -0
- data/docs/AudienceStatusBreakdown.md +20 -0
- data/docs/AudienceSummary.md +26 -0
- data/docs/AudienceWeekPoint.md +20 -0
- data/docs/BulkUpdateSenderPatch.md +34 -0
- data/docs/BulkUpdateSendersInput.md +20 -0
- data/docs/BulkUpdateSendersResult.md +24 -0
- data/docs/CampaignReportShare.md +22 -0
- data/docs/CollectionAddress.md +28 -0
- data/docs/ConnectionSettings.md +22 -0
- data/docs/CreateSenderInput.md +42 -0
- data/docs/DetachResult.md +18 -0
- data/docs/DmarcRecordToPublish.md +22 -0
- data/docs/Domain.md +38 -0
- data/docs/DomainAge.md +30 -0
- data/docs/DomainCapacity.md +28 -0
- data/docs/DomainCreateParams.md +24 -0
- data/docs/DomainDetail.md +42 -0
- data/docs/DomainHealth.md +24 -0
- data/docs/DomainList.md +26 -0
- data/docs/DomainMonitoring.md +30 -0
- data/docs/DomainMonitoringParams.md +20 -0
- data/docs/DomainSending.md +26 -0
- data/docs/DomainSendingPolicy.md +36 -0
- data/docs/DomainSendingPolicyParams.md +32 -0
- data/docs/DomainSendingUpdateParams.md +20 -0
- data/docs/DomainTracking.md +50 -0
- data/docs/DomainTrackingParams.md +22 -0
- data/docs/DomainTrackingUpdateParams.md +24 -0
- data/docs/DomainUpdateParams.md +22 -0
- data/docs/DomainsApi.md +525 -0
- data/docs/EmailVariantContent.md +28 -0
- data/docs/EnrollProgramParams.md +28 -0
- data/docs/EnrollProgramResult.md +28 -0
- data/docs/Enrollment.md +42 -0
- data/docs/EnrollmentCounts.md +44 -0
- data/docs/EnrollmentList.md +28 -0
- data/docs/EnrollmentPersonRef.md +22 -0
- data/docs/EnrollmentProgramRef.md +20 -0
- data/docs/Features.md +18 -0
- data/docs/Field.md +38 -0
- data/docs/FieldCreateParams.md +26 -0
- data/docs/FieldList.md +20 -0
- data/docs/FieldType.md +15 -0
- data/docs/FieldUpdateParams.md +24 -0
- data/docs/FieldsApi.md +297 -0
- data/docs/FileObject.md +28 -0
- data/docs/FileUpload.md +22 -0
- data/docs/FilesApi.md +81 -0
- data/docs/Group.md +34 -0
- data/docs/GroupAddMembersParams.md +20 -0
- data/docs/GroupAddMembersResult.md +22 -0
- data/docs/GroupCreateParams.md +22 -0
- data/docs/GroupList.md +26 -0
- data/docs/GroupUpdateParams.md +22 -0
- data/docs/GroupsApi.md +521 -0
- data/docs/ImapConnectionUpdate.md +22 -0
- data/docs/InboundMessage.md +48 -0
- data/docs/Integration.md +34 -0
- data/docs/IntegrationConfig.md +26 -0
- data/docs/IntegrationConnectParams.md +18 -0
- data/docs/IntegrationConnectResult.md +18 -0
- data/docs/IntegrationList.md +26 -0
- data/docs/IntegrationNotifyConfig.md +24 -0
- data/docs/IntegrationOptions.md +18 -0
- data/docs/IntegrationProvider.md +15 -0
- data/docs/IntegrationStatus.md +15 -0
- data/docs/IntegrationSyncResult.md +18 -0
- data/docs/IntegrationUpdateParams.md +18 -0
- data/docs/IntegrationsApi.md +513 -0
- data/docs/LaunchProgramParams.md +18 -0
- data/docs/LaunchProgramResult.md +22 -0
- data/docs/Message.md +58 -0
- data/docs/MessageAddress.md +20 -0
- data/docs/MessageAttachment.md +28 -0
- data/docs/MessageAttachmentDownload.md +32 -0
- data/docs/MessageAttachmentInput.md +22 -0
- data/docs/MessageAttachmentList.md +22 -0
- data/docs/MessageCreateParams.md +44 -0
- data/docs/MessageEnrollParams.md +26 -0
- data/docs/MessageList.md +26 -0
- data/docs/MessageReplyParams.md +40 -0
- data/docs/MessageSource.md +36 -0
- data/docs/MessageSourceAttachment.md +22 -0
- data/docs/MessageTestParams.md +40 -0
- data/docs/MessageUpdateParams.md +22 -0
- data/docs/MessagesApi.md +543 -0
- data/docs/MonthlyEmailUsageMeter.md +24 -0
- data/docs/Organization.md +30 -0
- data/docs/OrganizationAlerts.md +18 -0
- data/docs/OrganizationAlertsParams.md +18 -0
- data/docs/OrganizationApi.md +350 -0
- data/docs/OrganizationBouncePolicy.md +20 -0
- data/docs/OrganizationBouncePolicyParams.md +20 -0
- data/docs/OrganizationOnboarding.md +20 -0
- data/docs/OrganizationProfile.md +22 -0
- data/docs/OrganizationProfileParams.md +22 -0
- data/docs/OrganizationPulse.md +28 -0
- data/docs/OrganizationUpdateParams.md +24 -0
- data/docs/OrganizationUsage.md +26 -0
- data/docs/OutboundMessage.md +46 -0
- data/docs/PeopleApi.md +681 -0
- data/docs/PeopleBulkCreateParams.md +28 -0
- data/docs/PeopleBulkCreateResult.md +34 -0
- data/docs/Person.md +52 -0
- data/docs/PersonCreateParams.md +30 -0
- data/docs/PersonDetail.md +60 -0
- data/docs/PersonErased.md +20 -0
- data/docs/PersonGroupRef.md +22 -0
- data/docs/PersonImportItem.md +30 -0
- data/docs/PersonImportReason.md +22 -0
- data/docs/PersonImportStats.md +36 -0
- data/docs/PersonList.md +26 -0
- data/docs/PersonListItem.md +50 -0
- data/docs/PersonSegmentRef.md +22 -0
- data/docs/PersonUpdateParams.md +30 -0
- data/docs/Program.md +78 -0
- data/docs/ProgramCreateParams.md +62 -0
- data/docs/ProgramDetail.md +84 -0
- data/docs/ProgramList.md +26 -0
- data/docs/ProgramListItem.md +80 -0
- data/docs/ProgramPauseMeta.md +20 -0
- data/docs/ProgramSenderRef.md +26 -0
- data/docs/ProgramStats.md +22 -0
- data/docs/ProgramStepInput.md +38 -0
- data/docs/ProgramUpdateParams.md +62 -0
- data/docs/ProgramVariantInput.md +26 -0
- data/docs/ProgramsApi.md +1283 -0
- data/docs/ProgramsAudienceList.md +26 -0
- data/docs/ProgramsSendersList.md +26 -0
- data/docs/ProviderApiSenderInput.md +38 -0
- data/docs/PulseDeliverability.md +30 -0
- data/docs/PulseProgram.md +42 -0
- data/docs/PulseSenderFleet.md +30 -0
- data/docs/PulseValue.md +26 -0
- data/docs/ReportShare.md +22 -0
- data/docs/Segment.md +32 -0
- data/docs/SegmentCreateParams.md +22 -0
- data/docs/SegmentList.md +26 -0
- data/docs/SegmentUpdateParams.md +22 -0
- data/docs/SegmentsApi.md +373 -0
- data/docs/SelfHostedSenderInput.md +36 -0
- data/docs/Sender.md +66 -0
- data/docs/SenderBulkError.md +20 -0
- data/docs/SenderDetail.md +70 -0
- data/docs/SenderList.md +26 -0
- data/docs/SenderRemoveResult.md +20 -0
- data/docs/SenderUsage.md +24 -0
- data/docs/SenderWarmupStatus.md +20 -0
- data/docs/SendersApi.md +531 -0
- data/docs/SlackChannel.md +20 -0
- data/docs/SmtpConnectionSettings.md +26 -0
- data/docs/SmtpConnectionUpdate.md +26 -0
- data/docs/SmtpSenderInput.md +40 -0
- data/docs/StaticEmailVariantContent.md +28 -0
- data/docs/StepWithVariants.md +46 -0
- data/docs/Suppression.md +32 -0
- data/docs/SuppressionBulkParams.md +20 -0
- data/docs/SuppressionBulkResult.md +18 -0
- data/docs/SuppressionCreateParams.md +24 -0
- data/docs/SuppressionList.md +26 -0
- data/docs/SuppressionScope.md +15 -0
- data/docs/SuppressionsApi.md +369 -0
- data/docs/SyncModel.md +15 -0
- data/docs/TeamSize.md +15 -0
- data/docs/TrackingDnsRecord.md +22 -0
- data/docs/UpdateSenderInput.md +48 -0
- data/docs/UsageMeter.md +22 -0
- data/docs/UsagePlan.md +22 -0
- data/docs/Variant.md +34 -0
- data/docs/VariantAi.md +22 -0
- data/docs/VerifyApi.md +81 -0
- data/docs/VerifyEmailInput.md +18 -0
- data/docs/VerifyMx.md +22 -0
- data/docs/VerifyReachability.md +15 -0
- data/docs/VerifyReasonCode.md +15 -0
- data/docs/VerifyResult.md +38 -0
- data/docs/VerifySignals.md +28 -0
- data/docs/VerifySyntax.md +22 -0
- data/docs/VoiceSenderInput.md +38 -0
- data/docs/WarmupRuntimeStatus.md +32 -0
- data/docs/WarmupSettings.md +44 -0
- data/docs/WarmupTemplate.md +20 -0
- data/docs/WarmupTodayTally.md +22 -0
- data/lib/norbelys/api/analytics_api.rb +97 -0
- data/lib/norbelys/api/domains_api.rb +528 -0
- data/lib/norbelys/api/fields_api.rb +290 -0
- data/lib/norbelys/api/files_api.rb +97 -0
- data/lib/norbelys/api/groups_api.rb +516 -0
- data/lib/norbelys/api/integrations_api.rb +509 -0
- data/lib/norbelys/api/messages_api.rb +572 -0
- data/lib/norbelys/api/organization_api.rb +329 -0
- data/lib/norbelys/api/people_api.rb +689 -0
- data/lib/norbelys/api/programs_api.rb +1299 -0
- data/lib/norbelys/api/segments_api.rb +370 -0
- data/lib/norbelys/api/senders_api.rb +539 -0
- data/lib/norbelys/api/suppressions_api.rb +370 -0
- data/lib/norbelys/api/verify_api.rb +97 -0
- data/lib/norbelys/api_client.rb +394 -0
- data/lib/norbelys/api_error.rb +58 -0
- data/lib/norbelys/configuration.rb +308 -0
- data/lib/norbelys/models/add_program_sender_params.rb +222 -0
- data/lib/norbelys/models/ai_email_variant_content.rb +318 -0
- data/lib/norbelys/models/analytics_query.rb +252 -0
- data/lib/norbelys/models/analytics_query_name.rb +63 -0
- data/lib/norbelys/models/analytics_query_params.rb +485 -0
- data/lib/norbelys/models/analytics_query_result.rb +260 -0
- data/lib/norbelys/models/api_error.rb +221 -0
- data/lib/norbelys/models/api_error_detail.rb +310 -0
- data/lib/norbelys/models/audience_activity_action.rb +45 -0
- data/lib/norbelys/models/audience_activity_condition.rb +233 -0
- data/lib/norbelys/models/audience_activity_link_filter.rb +289 -0
- data/lib/norbelys/models/audience_activity_link_match_op.rb +40 -0
- data/lib/norbelys/models/audience_activity_params.rb +395 -0
- data/lib/norbelys/models/audience_attribute_condition.rb +289 -0
- data/lib/norbelys/models/audience_condition_op.rb +59 -0
- data/lib/norbelys/models/audience_condition_value.rb +107 -0
- data/lib/norbelys/models/audience_filter.rb +270 -0
- data/lib/norbelys/models/audience_match.rb +40 -0
- data/lib/norbelys/models/audience_rule.rb +104 -0
- data/lib/norbelys/models/audience_source.rb +343 -0
- data/lib/norbelys/models/audience_status_breakdown.rb +292 -0
- data/lib/norbelys/models/audience_summary.rb +351 -0
- data/lib/norbelys/models/audience_week_point.rb +258 -0
- data/lib/norbelys/models/bulk_update_sender_patch.rb +368 -0
- data/lib/norbelys/models/bulk_update_senders_input.rb +268 -0
- data/lib/norbelys/models/bulk_update_senders_result.rb +291 -0
- data/lib/norbelys/models/campaign_report_share.rb +244 -0
- data/lib/norbelys/models/collection_address.rb +321 -0
- data/lib/norbelys/models/connection_settings.rb +331 -0
- data/lib/norbelys/models/create_sender_input.rb +106 -0
- data/lib/norbelys/models/detach_result.rb +223 -0
- data/lib/norbelys/models/dmarc_record_to_publish.rb +252 -0
- data/lib/norbelys/models/domain.rb +421 -0
- data/lib/norbelys/models/domain_age.rb +351 -0
- data/lib/norbelys/models/domain_capacity.rb +397 -0
- data/lib/norbelys/models/domain_create_params.rb +307 -0
- data/lib/norbelys/models/domain_detail.rb +445 -0
- data/lib/norbelys/models/domain_health.rb +310 -0
- data/lib/norbelys/models/domain_list.rb +292 -0
- data/lib/norbelys/models/domain_monitoring.rb +380 -0
- data/lib/norbelys/models/domain_monitoring_params.rb +262 -0
- data/lib/norbelys/models/domain_sending.rb +302 -0
- data/lib/norbelys/models/domain_sending_policy.rb +479 -0
- data/lib/norbelys/models/domain_sending_policy_params.rb +389 -0
- data/lib/norbelys/models/domain_sending_update_params.rb +225 -0
- data/lib/norbelys/models/domain_tracking.rb +570 -0
- data/lib/norbelys/models/domain_tracking_params.rb +268 -0
- data/lib/norbelys/models/domain_tracking_update_params.rb +306 -0
- data/lib/norbelys/models/domain_update_params.rb +259 -0
- data/lib/norbelys/models/email_variant_content.rb +104 -0
- data/lib/norbelys/models/enroll_program_params.rb +308 -0
- data/lib/norbelys/models/enroll_program_result.rb +366 -0
- data/lib/norbelys/models/enrollment.rb +405 -0
- data/lib/norbelys/models/enrollment_counts.rb +660 -0
- data/lib/norbelys/models/enrollment_list.rb +308 -0
- data/lib/norbelys/models/enrollment_person_ref.rb +246 -0
- data/lib/norbelys/models/enrollment_program_ref.rb +239 -0
- data/lib/norbelys/models/features.rb +223 -0
- data/lib/norbelys/models/field.rb +401 -0
- data/lib/norbelys/models/field_create_params.rb +386 -0
- data/lib/norbelys/models/field_list.rb +234 -0
- data/lib/norbelys/models/field_type.rb +45 -0
- data/lib/norbelys/models/field_update_params.rb +324 -0
- data/lib/norbelys/models/file_object.rb +321 -0
- data/lib/norbelys/models/file_upload.rb +324 -0
- data/lib/norbelys/models/group.rb +339 -0
- data/lib/norbelys/models/group_add_members_params.rb +227 -0
- data/lib/norbelys/models/group_add_members_result.rb +313 -0
- data/lib/norbelys/models/group_create_params.rb +308 -0
- data/lib/norbelys/models/group_list.rb +299 -0
- data/lib/norbelys/models/group_update_params.rb +293 -0
- data/lib/norbelys/models/imap_connection_update.rb +317 -0
- data/lib/norbelys/models/inbound_message.rb +442 -0
- data/lib/norbelys/models/integration.rb +340 -0
- data/lib/norbelys/models/integration_config.rb +254 -0
- data/lib/norbelys/models/integration_connect_params.rb +244 -0
- data/lib/norbelys/models/integration_connect_result.rb +222 -0
- data/lib/norbelys/models/integration_list.rb +292 -0
- data/lib/norbelys/models/integration_notify_config.rb +246 -0
- data/lib/norbelys/models/integration_options.rb +224 -0
- data/lib/norbelys/models/integration_provider.rb +52 -0
- data/lib/norbelys/models/integration_status.rb +41 -0
- data/lib/norbelys/models/integration_sync_result.rb +224 -0
- data/lib/norbelys/models/integration_update_params.rb +222 -0
- data/lib/norbelys/models/launch_program_params.rb +230 -0
- data/lib/norbelys/models/launch_program_result.rb +292 -0
- data/lib/norbelys/models/message.rb +104 -0
- data/lib/norbelys/models/message_address.rb +232 -0
- data/lib/norbelys/models/message_attachment.rb +312 -0
- data/lib/norbelys/models/message_attachment_download.rb +341 -0
- data/lib/norbelys/models/message_attachment_input.rb +296 -0
- data/lib/norbelys/models/message_attachment_list.rb +253 -0
- data/lib/norbelys/models/message_create_params.rb +105 -0
- data/lib/norbelys/models/message_enroll_params.rb +278 -0
- data/lib/norbelys/models/message_list.rb +299 -0
- data/lib/norbelys/models/message_reply_params.rb +369 -0
- data/lib/norbelys/models/message_source.rb +348 -0
- data/lib/norbelys/models/message_source_attachment.rb +242 -0
- data/lib/norbelys/models/message_test_params.rb +364 -0
- data/lib/norbelys/models/message_update_params.rb +269 -0
- data/lib/norbelys/models/monthly_email_usage_meter.rb +303 -0
- data/lib/norbelys/models/organization.rb +321 -0
- data/lib/norbelys/models/organization_alerts.rb +223 -0
- data/lib/norbelys/models/organization_alerts_params.rb +216 -0
- data/lib/norbelys/models/organization_bounce_policy.rb +240 -0
- data/lib/norbelys/models/organization_bounce_policy_params.rb +226 -0
- data/lib/norbelys/models/organization_onboarding.rb +250 -0
- data/lib/norbelys/models/organization_profile.rb +264 -0
- data/lib/norbelys/models/organization_profile_params.rb +270 -0
- data/lib/norbelys/models/organization_pulse.rb +301 -0
- data/lib/norbelys/models/organization_update_params.rb +242 -0
- data/lib/norbelys/models/organization_usage.rb +282 -0
- data/lib/norbelys/models/outbound_message.rb +447 -0
- data/lib/norbelys/models/people_bulk_create_params.rb +401 -0
- data/lib/norbelys/models/people_bulk_create_result.rb +493 -0
- data/lib/norbelys/models/person.rb +500 -0
- data/lib/norbelys/models/person_create_params.rb +320 -0
- data/lib/norbelys/models/person_detail.rb +548 -0
- data/lib/norbelys/models/person_erased.rb +234 -0
- data/lib/norbelys/models/person_group_ref.rb +251 -0
- data/lib/norbelys/models/person_import_item.rb +339 -0
- data/lib/norbelys/models/person_import_reason.rb +309 -0
- data/lib/norbelys/models/person_import_stats.rb +518 -0
- data/lib/norbelys/models/person_list.rb +299 -0
- data/lib/norbelys/models/person_list_item.rb +488 -0
- data/lib/norbelys/models/person_segment_ref.rb +251 -0
- data/lib/norbelys/models/person_update_params.rb +313 -0
- data/lib/norbelys/models/program.rb +871 -0
- data/lib/norbelys/models/program_create_params.rb +704 -0
- data/lib/norbelys/models/program_detail.rb +911 -0
- data/lib/norbelys/models/program_list.rb +292 -0
- data/lib/norbelys/models/program_list_item.rb +887 -0
- data/lib/norbelys/models/program_pause_meta.rb +295 -0
- data/lib/norbelys/models/program_sender_ref.rb +295 -0
- data/lib/norbelys/models/program_stats.rb +297 -0
- data/lib/norbelys/models/program_step_input.rb +469 -0
- data/lib/norbelys/models/program_update_params.rb +697 -0
- data/lib/norbelys/models/program_variant_input.rb +274 -0
- data/lib/norbelys/models/programs_audience_list.rb +293 -0
- data/lib/norbelys/models/programs_senders_list.rb +293 -0
- data/lib/norbelys/models/provider_api_sender_input.rb +395 -0
- data/lib/norbelys/models/pulse_deliverability.rb +325 -0
- data/lib/norbelys/models/pulse_program.rb +453 -0
- data/lib/norbelys/models/pulse_sender_fleet.rb +325 -0
- data/lib/norbelys/models/pulse_value.rb +291 -0
- data/lib/norbelys/models/report_share.rb +244 -0
- data/lib/norbelys/models/segment.rb +307 -0
- data/lib/norbelys/models/segment_create_params.rb +296 -0
- data/lib/norbelys/models/segment_list.rb +299 -0
- data/lib/norbelys/models/segment_update_params.rb +278 -0
- data/lib/norbelys/models/self_hosted_sender_input.rb +378 -0
- data/lib/norbelys/models/sender.rb +708 -0
- data/lib/norbelys/models/sender_bulk_error.rb +239 -0
- data/lib/norbelys/models/sender_detail.rb +726 -0
- data/lib/norbelys/models/sender_list.rb +299 -0
- data/lib/norbelys/models/sender_remove_result.rb +268 -0
- data/lib/norbelys/models/sender_usage.rb +331 -0
- data/lib/norbelys/models/sender_warmup_status.rb +230 -0
- data/lib/norbelys/models/slack_channel.rb +239 -0
- data/lib/norbelys/models/smtp_connection_settings.rb +351 -0
- data/lib/norbelys/models/smtp_connection_update.rb +337 -0
- data/lib/norbelys/models/smtp_sender_input.rb +403 -0
- data/lib/norbelys/models/static_email_variant_content.rb +312 -0
- data/lib/norbelys/models/step_with_variants.rb +591 -0
- data/lib/norbelys/models/suppression.rb +331 -0
- data/lib/norbelys/models/suppression_bulk_params.rb +262 -0
- data/lib/norbelys/models/suppression_bulk_result.rb +241 -0
- data/lib/norbelys/models/suppression_create_params.rb +305 -0
- data/lib/norbelys/models/suppression_list.rb +293 -0
- data/lib/norbelys/models/suppression_scope.rb +40 -0
- data/lib/norbelys/models/sync_model.rb +41 -0
- data/lib/norbelys/models/team_size.rb +43 -0
- data/lib/norbelys/models/tracking_dns_record.rb +252 -0
- data/lib/norbelys/models/update_sender_input.rb +481 -0
- data/lib/norbelys/models/usage_meter.rb +286 -0
- data/lib/norbelys/models/usage_plan.rb +257 -0
- data/lib/norbelys/models/variant.rb +385 -0
- data/lib/norbelys/models/variant_ai.rb +314 -0
- data/lib/norbelys/models/verify_email_input.rb +251 -0
- data/lib/norbelys/models/verify_mx.rb +254 -0
- data/lib/norbelys/models/verify_reachability.rb +42 -0
- data/lib/norbelys/models/verify_reason_code.rb +52 -0
- data/lib/norbelys/models/verify_result.rb +426 -0
- data/lib/norbelys/models/verify_signals.rb +308 -0
- data/lib/norbelys/models/verify_syntax.rb +257 -0
- data/lib/norbelys/models/voice_sender_input.rb +388 -0
- data/lib/norbelys/models/warmup_runtime_status.rb +440 -0
- data/lib/norbelys/models/warmup_settings.rb +562 -0
- data/lib/norbelys/models/warmup_template.rb +295 -0
- data/lib/norbelys/models/warmup_today_tally.rb +314 -0
- data/lib/norbelys/version.rb +15 -0
- data/lib/norbelys.rb +243 -0
- data/norbelys.gemspec +39 -0
- data/spec/api/analytics_api_spec.rb +48 -0
- data/spec/api/domains_api_spec.rb +128 -0
- data/spec/api/fields_api_spec.rb +85 -0
- data/spec/api/files_api_spec.rb +48 -0
- data/spec/api/groups_api_spec.rb +127 -0
- data/spec/api/integrations_api_spec.rb +124 -0
- data/spec/api/messages_api_spec.rb +139 -0
- data/spec/api/organization_api_spec.rb +92 -0
- data/spec/api/people_api_spec.rb +158 -0
- data/spec/api/programs_api_spec.rb +270 -0
- data/spec/api/segments_api_spec.rb +100 -0
- data/spec/api/senders_api_spec.rb +130 -0
- data/spec/api/suppressions_api_spec.rb +98 -0
- data/spec/api/verify_api_spec.rb +48 -0
- data/spec/models/add_program_sender_params_spec.rb +36 -0
- data/spec/models/ai_email_variant_content_spec.rb +66 -0
- data/spec/models/analytics_query_name_spec.rb +30 -0
- data/spec/models/analytics_query_params_spec.rb +136 -0
- data/spec/models/analytics_query_result_spec.rb +42 -0
- data/spec/models/analytics_query_spec.rb +42 -0
- data/spec/models/api_error_detail_spec.rb +64 -0
- data/spec/models/api_error_spec.rb +36 -0
- data/spec/models/audience_activity_action_spec.rb +30 -0
- data/spec/models/audience_activity_condition_spec.rb +42 -0
- data/spec/models/audience_activity_link_filter_spec.rb +42 -0
- data/spec/models/audience_activity_link_match_op_spec.rb +30 -0
- data/spec/models/audience_activity_params_spec.rb +78 -0
- data/spec/models/audience_attribute_condition_spec.rb +48 -0
- data/spec/models/audience_condition_op_spec.rb +30 -0
- data/spec/models/audience_condition_value_spec.rb +21 -0
- data/spec/models/audience_filter_spec.rb +42 -0
- data/spec/models/audience_match_spec.rb +30 -0
- data/spec/models/audience_rule_spec.rb +21 -0
- data/spec/models/audience_source_spec.rb +64 -0
- data/spec/models/audience_status_breakdown_spec.rb +46 -0
- data/spec/models/audience_summary_spec.rb +60 -0
- data/spec/models/audience_week_point_spec.rb +42 -0
- data/spec/models/bulk_update_sender_patch_spec.rb +88 -0
- data/spec/models/bulk_update_senders_input_spec.rb +42 -0
- data/spec/models/bulk_update_senders_result_spec.rb +54 -0
- data/spec/models/campaign_report_share_spec.rb +48 -0
- data/spec/models/collection_address_spec.rb +70 -0
- data/spec/models/connection_settings_spec.rb +52 -0
- data/spec/models/create_sender_input_spec.rb +21 -0
- data/spec/models/detach_result_spec.rb +36 -0
- data/spec/models/dmarc_record_to_publish_spec.rb +48 -0
- data/spec/models/domain_age_spec.rb +76 -0
- data/spec/models/domain_capacity_spec.rb +70 -0
- data/spec/models/domain_create_params_spec.rb +58 -0
- data/spec/models/domain_detail_spec.rb +112 -0
- data/spec/models/domain_health_spec.rb +62 -0
- data/spec/models/domain_list_spec.rb +60 -0
- data/spec/models/domain_monitoring_params_spec.rb +46 -0
- data/spec/models/domain_monitoring_spec.rb +84 -0
- data/spec/models/domain_sending_policy_params_spec.rb +82 -0
- data/spec/models/domain_sending_policy_spec.rb +94 -0
- data/spec/models/domain_sending_spec.rb +60 -0
- data/spec/models/domain_sending_update_params_spec.rb +42 -0
- data/spec/models/domain_spec.rb +100 -0
- data/spec/models/domain_tracking_params_spec.rb +48 -0
- data/spec/models/domain_tracking_spec.rb +160 -0
- data/spec/models/domain_tracking_update_params_spec.rb +58 -0
- data/spec/models/domain_update_params_spec.rb +48 -0
- data/spec/models/email_variant_content_spec.rb +21 -0
- data/spec/models/enroll_program_params_spec.rb +70 -0
- data/spec/models/enroll_program_result_spec.rb +66 -0
- data/spec/models/enrollment_counts_spec.rb +114 -0
- data/spec/models/enrollment_list_spec.rb +66 -0
- data/spec/models/enrollment_person_ref_spec.rb +48 -0
- data/spec/models/enrollment_program_ref_spec.rb +42 -0
- data/spec/models/enrollment_spec.rb +112 -0
- data/spec/models/features_spec.rb +36 -0
- data/spec/models/field_create_params_spec.rb +64 -0
- data/spec/models/field_list_spec.rb +42 -0
- data/spec/models/field_spec.rb +96 -0
- data/spec/models/field_type_spec.rb +30 -0
- data/spec/models/field_update_params_spec.rb +58 -0
- data/spec/models/file_object_spec.rb +66 -0
- data/spec/models/file_upload_spec.rb +48 -0
- data/spec/models/group_add_members_params_spec.rb +42 -0
- data/spec/models/group_add_members_result_spec.rb +48 -0
- data/spec/models/group_create_params_spec.rb +48 -0
- data/spec/models/group_list_spec.rb +60 -0
- data/spec/models/group_spec.rb +84 -0
- data/spec/models/group_update_params_spec.rb +48 -0
- data/spec/models/imap_connection_update_spec.rb +52 -0
- data/spec/models/inbound_message_spec.rb +130 -0
- data/spec/models/integration_config_spec.rb +60 -0
- data/spec/models/integration_connect_params_spec.rb +36 -0
- data/spec/models/integration_connect_result_spec.rb +36 -0
- data/spec/models/integration_list_spec.rb +60 -0
- data/spec/models/integration_notify_config_spec.rb +54 -0
- data/spec/models/integration_options_spec.rb +36 -0
- data/spec/models/integration_provider_spec.rb +30 -0
- data/spec/models/integration_spec.rb +84 -0
- data/spec/models/integration_status_spec.rb +30 -0
- data/spec/models/integration_sync_result_spec.rb +36 -0
- data/spec/models/integration_update_params_spec.rb +36 -0
- data/spec/models/launch_program_params_spec.rb +36 -0
- data/spec/models/launch_program_result_spec.rb +52 -0
- data/spec/models/message_address_spec.rb +42 -0
- data/spec/models/message_attachment_download_spec.rb +78 -0
- data/spec/models/message_attachment_input_spec.rb +48 -0
- data/spec/models/message_attachment_list_spec.rb +48 -0
- data/spec/models/message_attachment_spec.rb +66 -0
- data/spec/models/message_create_params_spec.rb +21 -0
- data/spec/models/message_enroll_params_spec.rb +60 -0
- data/spec/models/message_list_spec.rb +60 -0
- data/spec/models/message_reply_params_spec.rb +102 -0
- data/spec/models/message_source_attachment_spec.rb +48 -0
- data/spec/models/message_source_spec.rb +90 -0
- data/spec/models/message_spec.rb +21 -0
- data/spec/models/message_test_params_spec.rb +102 -0
- data/spec/models/message_update_params_spec.rb +52 -0
- data/spec/models/monthly_email_usage_meter_spec.rb +58 -0
- data/spec/models/organization_alerts_params_spec.rb +36 -0
- data/spec/models/organization_alerts_spec.rb +36 -0
- data/spec/models/organization_bounce_policy_params_spec.rb +42 -0
- data/spec/models/organization_bounce_policy_spec.rb +42 -0
- data/spec/models/organization_onboarding_spec.rb +42 -0
- data/spec/models/organization_profile_params_spec.rb +52 -0
- data/spec/models/organization_profile_spec.rb +48 -0
- data/spec/models/organization_pulse_spec.rb +66 -0
- data/spec/models/organization_spec.rb +72 -0
- data/spec/models/organization_update_params_spec.rb +54 -0
- data/spec/models/organization_usage_spec.rb +60 -0
- data/spec/models/outbound_message_spec.rb +128 -0
- data/spec/models/people_bulk_create_params_spec.rb +70 -0
- data/spec/models/people_bulk_create_result_spec.rb +84 -0
- data/spec/models/person_create_params_spec.rb +76 -0
- data/spec/models/person_detail_spec.rb +170 -0
- data/spec/models/person_erased_spec.rb +42 -0
- data/spec/models/person_group_ref_spec.rb +48 -0
- data/spec/models/person_import_item_spec.rb +76 -0
- data/spec/models/person_import_reason_spec.rb +52 -0
- data/spec/models/person_import_stats_spec.rb +94 -0
- data/spec/models/person_list_item_spec.rb +140 -0
- data/spec/models/person_list_spec.rb +60 -0
- data/spec/models/person_segment_ref_spec.rb +48 -0
- data/spec/models/person_spec.rb +146 -0
- data/spec/models/person_update_params_spec.rb +76 -0
- data/spec/models/program_create_params_spec.rb +180 -0
- data/spec/models/program_detail_spec.rb +254 -0
- data/spec/models/program_list_item_spec.rb +242 -0
- data/spec/models/program_list_spec.rb +60 -0
- data/spec/models/program_pause_meta_spec.rb +42 -0
- data/spec/models/program_sender_ref_spec.rb +60 -0
- data/spec/models/program_spec.rb +236 -0
- data/spec/models/program_stats_spec.rb +48 -0
- data/spec/models/program_step_input_spec.rb +108 -0
- data/spec/models/program_update_params_spec.rb +180 -0
- data/spec/models/program_variant_input_spec.rb +60 -0
- data/spec/models/programs_audience_list_spec.rb +60 -0
- data/spec/models/programs_senders_list_spec.rb +60 -0
- data/spec/models/provider_api_sender_input_spec.rb +96 -0
- data/spec/models/pulse_deliverability_spec.rb +72 -0
- data/spec/models/pulse_program_spec.rb +112 -0
- data/spec/models/pulse_sender_fleet_spec.rb +72 -0
- data/spec/models/pulse_value_spec.rb +60 -0
- data/spec/models/report_share_spec.rb +48 -0
- data/spec/models/segment_create_params_spec.rb +48 -0
- data/spec/models/segment_list_spec.rb +60 -0
- data/spec/models/segment_spec.rb +78 -0
- data/spec/models/segment_update_params_spec.rb +48 -0
- data/spec/models/self_hosted_sender_input_spec.rb +90 -0
- data/spec/models/sender_bulk_error_spec.rb +42 -0
- data/spec/models/sender_detail_spec.rb +212 -0
- data/spec/models/sender_list_spec.rb +60 -0
- data/spec/models/sender_remove_result_spec.rb +46 -0
- data/spec/models/sender_spec.rb +200 -0
- data/spec/models/sender_usage_spec.rb +54 -0
- data/spec/models/sender_warmup_status_spec.rb +42 -0
- data/spec/models/slack_channel_spec.rb +42 -0
- data/spec/models/smtp_connection_settings_spec.rb +64 -0
- data/spec/models/smtp_connection_update_spec.rb +64 -0
- data/spec/models/smtp_sender_input_spec.rb +102 -0
- data/spec/models/static_email_variant_content_spec.rb +66 -0
- data/spec/models/step_with_variants_spec.rb +136 -0
- data/spec/models/suppression_bulk_params_spec.rb +42 -0
- data/spec/models/suppression_bulk_result_spec.rb +36 -0
- data/spec/models/suppression_create_params_spec.rb +58 -0
- data/spec/models/suppression_list_spec.rb +60 -0
- data/spec/models/suppression_scope_spec.rb +30 -0
- data/spec/models/suppression_spec.rb +78 -0
- data/spec/models/sync_model_spec.rb +30 -0
- data/spec/models/team_size_spec.rb +30 -0
- data/spec/models/tracking_dns_record_spec.rb +48 -0
- data/spec/models/update_sender_input_spec.rb +134 -0
- data/spec/models/usage_meter_spec.rb +52 -0
- data/spec/models/usage_plan_spec.rb +48 -0
- data/spec/models/variant_ai_spec.rb +52 -0
- data/spec/models/variant_spec.rb +88 -0
- data/spec/models/verify_email_input_spec.rb +36 -0
- data/spec/models/verify_mx_spec.rb +48 -0
- data/spec/models/verify_reachability_spec.rb +30 -0
- data/spec/models/verify_reason_code_spec.rb +30 -0
- data/spec/models/verify_result_spec.rb +96 -0
- data/spec/models/verify_signals_spec.rb +66 -0
- data/spec/models/verify_syntax_spec.rb +48 -0
- data/spec/models/voice_sender_input_spec.rb +96 -0
- data/spec/models/warmup_runtime_status_spec.rb +86 -0
- data/spec/models/warmup_settings_spec.rb +118 -0
- data/spec/models/warmup_template_spec.rb +42 -0
- data/spec/models/warmup_today_tally_spec.rb +48 -0
- data/spec/spec_helper.rb +111 -0
- metadata +935 -0
|
@@ -0,0 +1,270 @@
|
|
|
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 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
|
|
16
|
+
# Unit tests for Norbelys::ProgramsApi
|
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
18
|
+
# Please update as you see appropriate
|
|
19
|
+
describe 'ProgramsApi' do
|
|
20
|
+
before do
|
|
21
|
+
# run before each test
|
|
22
|
+
@api_instance = Norbelys::ProgramsApi.new
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
after do
|
|
26
|
+
# run after each test
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe 'test an instance of ProgramsApi' do
|
|
30
|
+
it 'should create an instance of ProgramsApi' do
|
|
31
|
+
expect(@api_instance).to be_instance_of(Norbelys::ProgramsApi)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# unit tests for programs_archive
|
|
36
|
+
# Archive a program
|
|
37
|
+
# Soft-delete the campaign and cancel its in-flight runs. Reversible with programs.restore.
|
|
38
|
+
# @param id
|
|
39
|
+
# @param [Hash] opts the optional parameters
|
|
40
|
+
# @return [Program]
|
|
41
|
+
describe 'programs_archive test' do
|
|
42
|
+
it 'should work' do
|
|
43
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# unit tests for programs_audience_list
|
|
48
|
+
# List a program's audience sources
|
|
49
|
+
# Where this campaign's people came from — one entry per source (segment, group, CSV import, manual), with the people count enrolled from each and whether a segment is kept in continuous sync (dynamic audience).
|
|
50
|
+
# @param id
|
|
51
|
+
# @param [Hash] opts the optional parameters
|
|
52
|
+
# @return [ProgramsAudienceList]
|
|
53
|
+
describe 'programs_audience_list test' do
|
|
54
|
+
it 'should work' do
|
|
55
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# unit tests for programs_create
|
|
60
|
+
# Create a program
|
|
61
|
+
# Create a cold-email sequence. Optionally build the WHOLE cadence in one call by passing steps[] (each with inline variants[]); the response returns the program with its steps expanded. Then attach senders, enroll people, and launch.
|
|
62
|
+
# @param program_create_params
|
|
63
|
+
# @param [Hash] opts the optional parameters
|
|
64
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
65
|
+
# @return [ProgramDetail]
|
|
66
|
+
describe 'programs_create test' do
|
|
67
|
+
it 'should work' do
|
|
68
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# unit tests for programs_enroll
|
|
73
|
+
# Enroll people into a program
|
|
74
|
+
# Add an audience as leads — the union of personIds, a groupId's members, and a segmentId's current matches (omit all to enroll every active person). Never starts sending on its own; call programs.launch to go live.
|
|
75
|
+
# @param id
|
|
76
|
+
# @param [Hash] opts the optional parameters
|
|
77
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
78
|
+
# @option opts [EnrollProgramParams] :enroll_program_params
|
|
79
|
+
# @return [EnrollProgramResult]
|
|
80
|
+
describe 'programs_enroll test' do
|
|
81
|
+
it 'should work' do
|
|
82
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
# unit tests for programs_enrollments_find
|
|
87
|
+
# Get an enrollment
|
|
88
|
+
# @param program_id
|
|
89
|
+
# @param id
|
|
90
|
+
# @param [Hash] opts the optional parameters
|
|
91
|
+
# @return [Enrollment]
|
|
92
|
+
describe 'programs_enrollments_find test' do
|
|
93
|
+
it 'should work' do
|
|
94
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
# unit tests for programs_enrollments_list
|
|
99
|
+
# List a program's leads
|
|
100
|
+
# The people enrolled in the program and where each sits in the cadence, with per-status counts for the Leads view.
|
|
101
|
+
# @param program_id
|
|
102
|
+
# @param [Hash] opts the optional parameters
|
|
103
|
+
# @option opts [String] :cursor
|
|
104
|
+
# @option opts [Boolean] :include_archived
|
|
105
|
+
# @option opts [Integer] :limit
|
|
106
|
+
# @option opts [String] :dir
|
|
107
|
+
# @option opts [Integer] :page
|
|
108
|
+
# @option opts [String] :q
|
|
109
|
+
# @option opts [String] :sort
|
|
110
|
+
# @option opts [Array<String>] :status
|
|
111
|
+
# @return [EnrollmentList]
|
|
112
|
+
describe 'programs_enrollments_list test' do
|
|
113
|
+
it 'should work' do
|
|
114
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
# unit tests for programs_find
|
|
119
|
+
# Get a program
|
|
120
|
+
# Read one program. Pass expand[]=steps to inline the cadence (each step with its arms) and expand[]=senders for the attached mailboxes.
|
|
121
|
+
# @param id
|
|
122
|
+
# @param [Hash] opts the optional parameters
|
|
123
|
+
# @option opts [Array<String>] :expand
|
|
124
|
+
# @return [ProgramDetail]
|
|
125
|
+
describe 'programs_find test' do
|
|
126
|
+
it 'should work' do
|
|
127
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
|
|
131
|
+
# unit tests for programs_launch
|
|
132
|
+
# Launch a program
|
|
133
|
+
# The go-live gate — the only path a draft becomes active. Requires at least one live sender, one step, and one enrolled lead. Returns any non-blocking compliance warnings.
|
|
134
|
+
# @param id
|
|
135
|
+
# @param [Hash] opts the optional parameters
|
|
136
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
137
|
+
# @option opts [LaunchProgramParams] :launch_program_params
|
|
138
|
+
# @return [LaunchProgramResult]
|
|
139
|
+
describe 'programs_launch test' do
|
|
140
|
+
it 'should work' do
|
|
141
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# unit tests for programs_list
|
|
146
|
+
# List programs
|
|
147
|
+
# List the org's campaigns (cold-email sequences), newest first, with per-campaign stats (leads, completion, next send).
|
|
148
|
+
# @param [Hash] opts the optional parameters
|
|
149
|
+
# @option opts [String] :cursor
|
|
150
|
+
# @option opts [Boolean] :include_archived
|
|
151
|
+
# @option opts [Integer] :limit
|
|
152
|
+
# @option opts [String] :dir
|
|
153
|
+
# @option opts [Integer] :page
|
|
154
|
+
# @option opts [Boolean] :archived
|
|
155
|
+
# @option opts [String] :q
|
|
156
|
+
# @option opts [String] :sender_id
|
|
157
|
+
# @option opts [String] :sort
|
|
158
|
+
# @option opts [Array<String>] :status
|
|
159
|
+
# @return [ProgramList]
|
|
160
|
+
describe 'programs_list test' do
|
|
161
|
+
it 'should work' do
|
|
162
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
# unit tests for programs_pause
|
|
167
|
+
# Pause a program's sending
|
|
168
|
+
# Stop sending; messages already queued still complete. Resume with programs.resume.
|
|
169
|
+
# @param id
|
|
170
|
+
# @param [Hash] opts the optional parameters
|
|
171
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
172
|
+
# @return [Program]
|
|
173
|
+
describe 'programs_pause test' do
|
|
174
|
+
it 'should work' do
|
|
175
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
# unit tests for programs_restore
|
|
180
|
+
# Restore an archived program
|
|
181
|
+
# Un-archive the campaign and revive the runs the archive cancelled, resuming what's left of the cadence.
|
|
182
|
+
# @param id
|
|
183
|
+
# @param [Hash] opts the optional parameters
|
|
184
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
185
|
+
# @return [Program]
|
|
186
|
+
describe 'programs_restore test' do
|
|
187
|
+
it 'should work' do
|
|
188
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
# unit tests for programs_resume
|
|
193
|
+
# Resume a paused program
|
|
194
|
+
# Resume sending from where it stopped — each lead keeps its place in the cadence.
|
|
195
|
+
# @param id
|
|
196
|
+
# @param [Hash] opts the optional parameters
|
|
197
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
198
|
+
# @return [Program]
|
|
199
|
+
describe 'programs_resume test' do
|
|
200
|
+
it 'should work' do
|
|
201
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
202
|
+
end
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
# unit tests for programs_senders_add
|
|
206
|
+
# Attach a sender to a program
|
|
207
|
+
# Assign a mailbox the program can send from (a program needs at least one to launch).
|
|
208
|
+
# @param id
|
|
209
|
+
# @param add_program_sender_params
|
|
210
|
+
# @param [Hash] opts the optional parameters
|
|
211
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
212
|
+
# @return [ProgramSenderRef]
|
|
213
|
+
describe 'programs_senders_add test' do
|
|
214
|
+
it 'should work' do
|
|
215
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
# unit tests for programs_senders_list
|
|
220
|
+
# List a program's senders
|
|
221
|
+
# The mailboxes assigned to this program, each with its pending queue in the program.
|
|
222
|
+
# @param id
|
|
223
|
+
# @param [Hash] opts the optional parameters
|
|
224
|
+
# @return [ProgramsSendersList]
|
|
225
|
+
describe 'programs_senders_list test' do
|
|
226
|
+
it 'should work' do
|
|
227
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
228
|
+
end
|
|
229
|
+
end
|
|
230
|
+
|
|
231
|
+
# unit tests for programs_senders_remove
|
|
232
|
+
# Detach a sender from a program
|
|
233
|
+
# Unassign a mailbox. A running campaign refuses to drop its last live sender — pause it first.
|
|
234
|
+
# @param id
|
|
235
|
+
# @param rel_id
|
|
236
|
+
# @param [Hash] opts the optional parameters
|
|
237
|
+
# @return [DetachResult]
|
|
238
|
+
describe 'programs_senders_remove test' do
|
|
239
|
+
it 'should work' do
|
|
240
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
# unit tests for programs_share
|
|
245
|
+
# Share the campaign report
|
|
246
|
+
# Mint a public, read-only link to this campaign's report (send it to a client — no account needed). The link is signed and expires after 30 days; archiving the campaign kills it immediately. Mint again for a fresh link.
|
|
247
|
+
# @param id
|
|
248
|
+
# @param [Hash] opts the optional parameters
|
|
249
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
250
|
+
# @return [CampaignReportShare]
|
|
251
|
+
describe 'programs_share test' do
|
|
252
|
+
it 'should work' do
|
|
253
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
# unit tests for programs_update
|
|
258
|
+
# Update a program
|
|
259
|
+
# Patch program settings and/or edit the cadence in one call. steps[] is a sparse upsert: an item WITH id edits that step, WITHOUT id creates one, archived:true removes it — same for each step's variants[]. Returns the program with its steps expanded.
|
|
260
|
+
# @param id
|
|
261
|
+
# @param [Hash] opts the optional parameters
|
|
262
|
+
# @option opts [ProgramUpdateParams] :program_update_params
|
|
263
|
+
# @return [ProgramDetail]
|
|
264
|
+
describe 'programs_update test' do
|
|
265
|
+
it 'should work' do
|
|
266
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
267
|
+
end
|
|
268
|
+
end
|
|
269
|
+
|
|
270
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
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 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
|
|
16
|
+
# Unit tests for Norbelys::SegmentsApi
|
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
18
|
+
# Please update as you see appropriate
|
|
19
|
+
describe 'SegmentsApi' do
|
|
20
|
+
before do
|
|
21
|
+
# run before each test
|
|
22
|
+
@api_instance = Norbelys::SegmentsApi.new
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
after do
|
|
26
|
+
# run after each test
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe 'test an instance of SegmentsApi' do
|
|
30
|
+
it 'should create an instance of SegmentsApi' do
|
|
31
|
+
expect(@api_instance).to be_instance_of(Norbelys::SegmentsApi)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# unit tests for segments_archive
|
|
36
|
+
# Delete a segment
|
|
37
|
+
# Permanently delete the segment and detach it from any program that used it as an audience source. The people it matched are unaffected.
|
|
38
|
+
# @param id
|
|
39
|
+
# @param [Hash] opts the optional parameters
|
|
40
|
+
# @return [Segment]
|
|
41
|
+
describe 'segments_archive test' do
|
|
42
|
+
it 'should work' do
|
|
43
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# unit tests for segments_create
|
|
48
|
+
# Create a segment
|
|
49
|
+
# Create a segment: a named, saved audience filter (the rule tree in `definition`). Membership is computed live, so it auto-refreshes as people change. Preview the people it matches at GET /v1/people?segmentId={id}.
|
|
50
|
+
# @param segment_create_params
|
|
51
|
+
# @param [Hash] opts the optional parameters
|
|
52
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
53
|
+
# @return [Segment]
|
|
54
|
+
describe 'segments_create test' do
|
|
55
|
+
it 'should work' do
|
|
56
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
# unit tests for segments_find
|
|
61
|
+
# Get a segment
|
|
62
|
+
# Read one segment, including its saved filter definition. List the people it currently matches at GET /v1/people?segmentId={id}.
|
|
63
|
+
# @param id
|
|
64
|
+
# @param [Hash] opts the optional parameters
|
|
65
|
+
# @return [Segment]
|
|
66
|
+
describe 'segments_find test' do
|
|
67
|
+
it 'should work' do
|
|
68
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# unit tests for segments_list
|
|
73
|
+
# List segments
|
|
74
|
+
# List the org's segments — dynamic saved filters over people — newest first.
|
|
75
|
+
# @param [Hash] opts the optional parameters
|
|
76
|
+
# @option opts [String] :cursor
|
|
77
|
+
# @option opts [Boolean] :include_archived
|
|
78
|
+
# @option opts [Integer] :limit
|
|
79
|
+
# @option opts [String] :q
|
|
80
|
+
# @return [SegmentList]
|
|
81
|
+
describe 'segments_list test' do
|
|
82
|
+
it 'should work' do
|
|
83
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
# unit tests for segments_update
|
|
88
|
+
# Update a segment
|
|
89
|
+
# Rename a segment or replace its filter definition. Because membership is computed live, changing the definition immediately changes who the segment matches.
|
|
90
|
+
# @param id
|
|
91
|
+
# @param [Hash] opts the optional parameters
|
|
92
|
+
# @option opts [SegmentUpdateParams] :segment_update_params
|
|
93
|
+
# @return [Segment]
|
|
94
|
+
describe 'segments_update test' do
|
|
95
|
+
it 'should work' do
|
|
96
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
@@ -0,0 +1,130 @@
|
|
|
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 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
|
|
16
|
+
# Unit tests for Norbelys::SendersApi
|
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
18
|
+
# Please update as you see appropriate
|
|
19
|
+
describe 'SendersApi' do
|
|
20
|
+
before do
|
|
21
|
+
# run before each test
|
|
22
|
+
@api_instance = Norbelys::SendersApi.new
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
after do
|
|
26
|
+
# run after each test
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe 'test an instance of SendersApi' do
|
|
30
|
+
it 'should create an instance of SendersApi' do
|
|
31
|
+
expect(@api_instance).to be_instance_of(Norbelys::SendersApi)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# unit tests for senders_bulk
|
|
36
|
+
# Bulk-update senders
|
|
37
|
+
# Apply ONE patch to MANY mailboxes at once, in a single call: pacing (dailyLimit, minGapMinutes), lifecycle (pause/resume via state), warmup, or operator labels. Use this whenever the same change goes to several senders (e.g. 'set every sender to 50/day', 'pause all senders') INSTEAD of calling update once per mailbox. It cannot change credentials or transport, so it never sends a verification email. Returns how many updated plus any per-mailbox errors. Note: a mailbox has NO per-mailbox clock-time send window for campaigns — the daily sending window and timezone belong to the CAMPAIGN (program), so 'make each sender send at a different hour' means splitting senders across campaigns with different windows, not a sender edit.
|
|
38
|
+
# @param bulk_update_senders_input
|
|
39
|
+
# @param [Hash] opts the optional parameters
|
|
40
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
41
|
+
# @return [BulkUpdateSendersResult]
|
|
42
|
+
describe 'senders_bulk test' do
|
|
43
|
+
it 'should work' do
|
|
44
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# unit tests for senders_create
|
|
49
|
+
# Connect a sender
|
|
50
|
+
# Connect a mailbox from its SMTP/IMAP (or managed-provider) credentials. The save auto-verifies by sending a real test email from the mailbox and is rejected if it cannot send — connecting is verifying, so there is no separate verify or test step. Omit sendingDomainId to get-or-create the sending domain from the fromEmail host.
|
|
51
|
+
# @param create_sender_input
|
|
52
|
+
# @param [Hash] opts the optional parameters
|
|
53
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
54
|
+
# @return [Sender]
|
|
55
|
+
describe 'senders_create test' do
|
|
56
|
+
it 'should work' do
|
|
57
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# unit tests for senders_find
|
|
62
|
+
# Get a sender
|
|
63
|
+
# Return one mailbox. Use `expand[]=usage` to inline its send/receive/campaign history counts (the preview that drives delete-vs-archive) and `expand[]=warmup` for the warmup config plus today's slot tally.
|
|
64
|
+
# @param id
|
|
65
|
+
# @param [Hash] opts the optional parameters
|
|
66
|
+
# @option opts [Array<String>] :expand
|
|
67
|
+
# @return [SenderDetail]
|
|
68
|
+
describe 'senders_find test' do
|
|
69
|
+
it 'should work' do
|
|
70
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
# unit tests for senders_list
|
|
75
|
+
# List senders
|
|
76
|
+
# List the mailboxes (senders) on this workspace. Filter by `search` (matches fromName, fromEmail and clientLabel), `state[]`, `reputation[]`, or `sendingDomainId`; the page carries `total` for page / totalPages.
|
|
77
|
+
# @param [Hash] opts the optional parameters
|
|
78
|
+
# @option opts [String] :cursor
|
|
79
|
+
# @option opts [Boolean] :include_archived
|
|
80
|
+
# @option opts [Integer] :limit
|
|
81
|
+
# @option opts [Array<String>] :reputation
|
|
82
|
+
# @option opts [String] :search
|
|
83
|
+
# @option opts [String] :sending_domain_id
|
|
84
|
+
# @option opts [Array<String>] :state
|
|
85
|
+
# @return [SenderList]
|
|
86
|
+
describe 'senders_list test' do
|
|
87
|
+
it 'should work' do
|
|
88
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
# unit tests for senders_remove
|
|
93
|
+
# Delete or archive a sender
|
|
94
|
+
# The smart delete: a mailbox with no history is hard-deleted, one with sends, replies, or campaigns is soft-archived instead — the response's outcome says which happened. Archived mailboxes can be restored.
|
|
95
|
+
# @param id
|
|
96
|
+
# @param [Hash] opts the optional parameters
|
|
97
|
+
# @return [SenderRemoveResult]
|
|
98
|
+
describe 'senders_remove test' do
|
|
99
|
+
it 'should work' do
|
|
100
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
# unit tests for senders_restore
|
|
105
|
+
# Restore an archived sender
|
|
106
|
+
# Un-archive a mailbox (clears its soft-delete). Connecting is verifying — a restored OAuth mailbox may need to reconnect before it can send again.
|
|
107
|
+
# @param id
|
|
108
|
+
# @param [Hash] opts the optional parameters
|
|
109
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
110
|
+
# @return [Sender]
|
|
111
|
+
describe 'senders_restore test' do
|
|
112
|
+
it 'should work' do
|
|
113
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
# unit tests for senders_update
|
|
118
|
+
# Update a sender
|
|
119
|
+
# Edit a mailbox. Changing the transport or credentials re-verifies by sending a real test email and is rejected if it cannot send. Set state to pause or resume sending, warmup to tune the warmup engine (or null to disable it), or archivedAt to null to restore an archived mailbox.
|
|
120
|
+
# @param id
|
|
121
|
+
# @param [Hash] opts the optional parameters
|
|
122
|
+
# @option opts [UpdateSenderInput] :update_sender_input
|
|
123
|
+
# @return [Sender]
|
|
124
|
+
describe 'senders_update test' do
|
|
125
|
+
it 'should work' do
|
|
126
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
end
|
|
@@ -0,0 +1,98 @@
|
|
|
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 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
|
|
16
|
+
# Unit tests for Norbelys::SuppressionsApi
|
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
18
|
+
# Please update as you see appropriate
|
|
19
|
+
describe 'SuppressionsApi' do
|
|
20
|
+
before do
|
|
21
|
+
# run before each test
|
|
22
|
+
@api_instance = Norbelys::SuppressionsApi.new
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
after do
|
|
26
|
+
# run after each test
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe 'test an instance of SuppressionsApi' do
|
|
30
|
+
it 'should create an instance of SuppressionsApi' do
|
|
31
|
+
expect(@api_instance).to be_instance_of(Norbelys::SuppressionsApi)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# unit tests for suppressions_archive
|
|
36
|
+
# Delete a suppression
|
|
37
|
+
# @param id
|
|
38
|
+
# @param [Hash] opts the optional parameters
|
|
39
|
+
# @return [Suppression]
|
|
40
|
+
describe 'suppressions_archive test' do
|
|
41
|
+
it 'should work' do
|
|
42
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# unit tests for suppressions_bulk
|
|
47
|
+
# Bulk-suppress addresses
|
|
48
|
+
# Add many email addresses or bare domains to the do-not-contact list in one call (up to 10,000). Idempotent per value — already-suppressed entries are skipped; the response returns how many were newly added.
|
|
49
|
+
# @param suppression_bulk_params
|
|
50
|
+
# @param [Hash] opts the optional parameters
|
|
51
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
52
|
+
# @return [SuppressionBulkResult]
|
|
53
|
+
describe 'suppressions_bulk test' do
|
|
54
|
+
it 'should work' do
|
|
55
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# unit tests for suppressions_create
|
|
60
|
+
# Suppress an address or domain
|
|
61
|
+
# Add one email address or bare domain to the do-not-contact list so it is never emailed. Idempotent and lowercased — re-suppressing an existing value is a no-op, not an error. Defaults to org-wide scope; pass scope `program` with a `programId` to suppress within a single campaign only. To add many at once, use bulk instead.
|
|
62
|
+
# @param suppression_create_params
|
|
63
|
+
# @param [Hash] opts the optional parameters
|
|
64
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
65
|
+
# @return [Suppression]
|
|
66
|
+
describe 'suppressions_create test' do
|
|
67
|
+
it 'should work' do
|
|
68
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# unit tests for suppressions_find
|
|
73
|
+
# Get a suppression
|
|
74
|
+
# Read one suppression entry by id.
|
|
75
|
+
# @param id
|
|
76
|
+
# @param [Hash] opts the optional parameters
|
|
77
|
+
# @return [Suppression]
|
|
78
|
+
describe 'suppressions_find test' do
|
|
79
|
+
it 'should work' do
|
|
80
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# unit tests for suppressions_list
|
|
85
|
+
# List suppressions
|
|
86
|
+
# List the org's do-not-contact entries — suppressed email addresses and bare domains — newest first. A suppressed address or domain is never emailed by any campaign.
|
|
87
|
+
# @param [Hash] opts the optional parameters
|
|
88
|
+
# @option opts [String] :cursor
|
|
89
|
+
# @option opts [Boolean] :include_archived
|
|
90
|
+
# @option opts [Integer] :limit
|
|
91
|
+
# @return [SuppressionList]
|
|
92
|
+
describe 'suppressions_list test' do
|
|
93
|
+
it 'should work' do
|
|
94
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
end
|
|
@@ -0,0 +1,48 @@
|
|
|
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 'spec_helper'
|
|
14
|
+
require 'json'
|
|
15
|
+
|
|
16
|
+
# Unit tests for Norbelys::VerifyApi
|
|
17
|
+
# Automatically generated by openapi-generator (https://openapi-generator.tech)
|
|
18
|
+
# Please update as you see appropriate
|
|
19
|
+
describe 'VerifyApi' do
|
|
20
|
+
before do
|
|
21
|
+
# run before each test
|
|
22
|
+
@api_instance = Norbelys::VerifyApi.new
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
after do
|
|
26
|
+
# run after each test
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
describe 'test an instance of VerifyApi' do
|
|
30
|
+
it 'should create an instance of VerifyApi' do
|
|
31
|
+
expect(@api_instance).to be_instance_of(Norbelys::VerifyApi)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# unit tests for verify_email
|
|
36
|
+
# Verify an email address
|
|
37
|
+
# Synchronously check whether one email address is deliverable. The `reachability` verdict is the headline outcome: `safe` (the mailbox was positively confirmed — requires an external escalation, so rarely returned today), `risky` (routable but low quality, such as a spam-listed domain or a role/shared inbox), `invalid` (undeliverable: bad syntax, no mail server, a disposable domain, or an address that hard-bounced on a real send before), or `unknown` (deliverable-looking but not confirmed without sending, the common default). It also returns a 0–100 `score`, a stable `reasonCode` twinned with the prose `reason`, a `suggestedCorrection` for likely typos, and the `syntax`/`mx`/`signals` evidence. The result is computed per request: it is not stored and has no id.
|
|
38
|
+
# @param verify_email_input
|
|
39
|
+
# @param [Hash] opts the optional parameters
|
|
40
|
+
# @option opts [String] :idempotency_key Opt-in idempotency for a safely retried write: reuse the same key to replay the original result for 24h instead of re-executing. Recommended on every POST.
|
|
41
|
+
# @return [VerifyResult]
|
|
42
|
+
describe 'verify_email test' do
|
|
43
|
+
it 'should work' do
|
|
44
|
+
# assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
end
|