{"components":{"schemas":{"api.ESPValidationResult":{"additionalProperties":{"$ref":"#/components/schemas/api.ValidationStatusCountResponse"},"type":"object"},"api.ValidationStatusCountResponse":{"properties":{"catch_all":{"type":"integer"},"disabled":{"type":"integer"},"disposable":{"type":"integer"},"inbox_full":{"type":"integer"},"invalid":{"type":"integer"},"linkedin_only":{"type":"integer"},"role_account":{"type":"integer"},"safe":{"type":"integer"},"spam_trap":{"type":"integer"},"unknown":{"type":"integer"},"unvalidated":{"type":"integer"}},"type":"object"},"dto.BranchAnalyticsDTO":{"properties":{"count":{"type":"integer"},"percentage":{"type":"number"}},"type":"object"},"dto.ContentSource":{"enum":["api","tiptap","agent"],"type":"string","x-enum-varnames":["ContentSourceAPI","ContentSourceTipTap","ContentSourceAgent"]},"dto.DaySchedule":{"properties":{"enabled":{"type":"boolean"},"from":{"maximum":23,"minimum":0,"type":"integer"},"to":{"maximum":23,"minimum":0,"type":"integer"}},"type":"object"},"dto.NodeAnalyticsDTO":{"properties":{"active":{"type":"integer"},"completed":{"type":"integer"},"endValue":{"type":"integer"},"failed":{"type":"integer"}},"type":"object"},"dto.Schedule":{"properties":{"friday":{"$ref":"#/components/schemas/dto.DaySchedule"},"monday":{"$ref":"#/components/schemas/dto.DaySchedule"},"saturday":{"$ref":"#/components/schemas/dto.DaySchedule"},"sunday":{"$ref":"#/components/schemas/dto.DaySchedule"},"thursday":{"$ref":"#/components/schemas/dto.DaySchedule"},"tuesday":{"$ref":"#/components/schemas/dto.DaySchedule"},"wednesday":{"$ref":"#/components/schemas/dto.DaySchedule"}},"type":"object"},"dto.SendersCountsDTO":{"description":"Counts summary for associated senders (regular sender profiles, unique mailboxes, LinkedIn accounts)\n@Description Counts summary for senders associated with the sequence","properties":{"linkedinAccounts":{"type":"integer"},"senderProfiles":{"type":"integer"},"uniqueMailboxes":{"type":"integer"}},"type":"object"},"dto.SequenceAnalyticsDTO":{"properties":{"actionCounts":{"additionalProperties":{"type":"integer"},"type":"object"},"computedAt":{"type":"string"},"connectionRequests":{"$ref":"#/components/schemas/dto.SequenceConnectionAnalytics"},"contacts":{"$ref":"#/components/schemas/dto.SequenceContactAnalytics"},"emailGoalsAchievedCount":{"type":"integer"},"emailGoalsValue":{"type":"number"},"emails":{"$ref":"#/components/schemas/dto.SequenceEmailAnalytics"},"goalsAchievedCount":{"type":"integer"},"linkedinGoalsAchievedCount":{"type":"integer"},"linkedinGoalsValue":{"type":"number"},"linkedinMessages":{"$ref":"#/components/schemas/dto.SequenceLinkedinMessageAnalytics"},"opportunitiesCount":{"type":"integer"},"positiveReplies":{"$ref":"#/components/schemas/dto.SequencePositiveReplyAnalytics"},"progressPercentage":{"type":"number"},"replyRate":{"description":"Overall reply rate as uniqueReplied / uniqueContacted * 100","type":"number"},"totalEmailActionsCount":{"type":"integer"},"totalGoalsValue":{"type":"number"},"totalLinkedinActionsCount":{"type":"integer"},"totalOpportunitiesValue":{"type":"number"},"trackOpportunitiesEnabled":{"type":"boolean"},"uniqueContacted":{"description":"Distinct leads contacted across email and LinkedIn (deduplicated)","type":"integer"},"uniqueReplied":{"description":"Distinct leads who replied on any channel (deduplicated)","type":"integer"}},"type":"object"},"dto.SequenceConnectionAnalytics":{"properties":{"accepted":{"description":"Number of connection requests accepted","type":"integer"},"conversion":{"description":"Acceptance rate as a percentage of sent connection requests","type":"number"},"sent":{"description":"Number of connection requests sent","type":"integer"}},"type":"object"},"dto.SequenceContactAnalytics":{"properties":{"completed":{"type":"integer"},"failed":{"type":"integer"},"inProgress":{"type":"integer"},"total":{"type":"integer"}},"type":"object"},"dto.SequenceEmailAnalytics":{"properties":{"bounced":{"type":"integer"},"bouncedPercent":{"type":"number"},"clicked":{"type":"integer"},"clickedPercent":{"type":"number"},"contacted":{"description":"Distinct leads who were emailed","type":"integer"},"conversion":{"description":"Reply rate as a percentage of unique contacted leads (replied / contacted * 100)","type":"number"},"opened":{"type":"integer"},"openedPercent":{"type":"number"},"optOuted":{"type":"integer"},"optOutedPercent":{"type":"number"},"replied":{"description":"Distinct leads who replied (excluding out-of-office)","type":"integer"},"repliedPercent":{"type":"number"},"sent":{"description":"Total emails sent (message count, not unique leads)","type":"integer"}},"type":"object"},"dto.SequenceLinkedinMessageAnalytics":{"properties":{"contacted":{"description":"Distinct leads contacted via LinkedIn outreach (connection request, message, or InMail)","type":"integer"},"conversion":{"description":"Reply rate as a percentage of unique contacted leads (replied / contacted * 100)","type":"number"},"replied":{"description":"Distinct leads who replied on LinkedIn after sequence outreach","type":"integer"},"sent":{"description":"Total LinkedIn messages/InMails sent (task count, not unique leads)","type":"integer"}},"type":"object"},"dto.SequencePositiveReplyAnalytics":{"properties":{"conversion":{"type":"number"},"email":{"type":"integer"},"linkedin":{"type":"integer"}},"type":"object"},"dto.SequenceSenderProfilesResponse":{"description":"Response containing sender profile IDs associated with a sequence","properties":{"counts":{"$ref":"#/components/schemas/dto.SendersCountsDTO"},"senderProfileIds":{"description":"Array of sender profile IDs\n@Description List of sender profile IDs associated with the sequence","items":{"type":"integer"},"type":"array","uniqueItems":false}},"type":"object"},"models.ValidationRunFailureCode":{"description":"FailureCode identifies a stable terminal failure reason.","enum":["validation_scope_empty","insufficient_credits","validation_execution_failed","validation_timed_out","validation_results_sync_failed","credit_reservation_failed","credit_reconciliation_failed","validation_processing_failed"],"type":"string","x-enum-varnames":["ValidationRunFailureCodeValidationScopeEmpty","ValidationRunFailureCodeInsufficientCredits","ValidationRunFailureCodeValidationExecutionFailed","ValidationRunFailureCodeValidationTimedOut","ValidationRunFailureCodeValidationResultsSyncFailed","ValidationRunFailureCodeCreditReservationFailed","ValidationRunFailureCodeCreditReconciliationFailed","ValidationRunFailureCodeValidationProcessingFailed"]},"models.ValidationRunStatus":{"enum":["pending","in_progress","completed","failed","partially_completed"],"type":"string","x-enum-varnames":["ValidationRunStatusPending","ValidationRunStatusInProgress","ValidationRunStatusCompleted","ValidationRunStatusFailed","ValidationRunStatusPartiallyCompleted"]},"requests.AddEnrollmentsRequest":{"properties":{"filters":{"$ref":"#/components/schemas/requests.EnrollmentFiltersRequest"},"limit":{"description":"Maximum number of contacts to enroll.","type":"integer"}},"type":"object"},"requests.AssignSubsequenceRequest":{"properties":{"childSequenceId":{"type":"integer"},"priority":{"type":"integer"}},"required":["childSequenceId"],"type":"object"},"requests.BulkCreateSenderProfilesRequest":{"properties":{"profiles":{"description":"Sender profiles to create. Entries are applied independently: a failing entry is reported in\nits own result and does not prevent the others from being created.","items":{"$ref":"#/components/schemas/requests.CreateSenderProfileEntry"},"maxItems":100,"minItems":1,"type":"array","uniqueItems":false}},"required":["profiles"],"type":"object"},"requests.ConditionMetadataRequest":{"properties":{"allowedValidationStatuses":{"items":{"type":"string"},"type":"array","uniqueItems":false}},"type":"object"},"requests.ConnectLinkedinAccountProxyRequest":{"description":"Proxy to route the LinkedIn session through. Recommended for account stability.","properties":{"host":{"description":"Proxy hostname. An explicit scheme (e.g. socks5://) selects the protocol; otherwise http is used.","example":"proxy.example.com","minLength":1,"type":"string"},"password":{"description":"Proxy password, when the proxy requires authentication.","type":"string"},"port":{"description":"Proxy port.","example":8080,"type":"integer"},"username":{"description":"Proxy username, when the proxy requires authentication.","type":"string"}},"required":["host","port"],"type":"object"},"requests.ConnectLinkedinAccountRequest":{"properties":{"email":{"description":"LinkedIn login email.","example":"user@example.com","type":"string"},"firstName":{"description":"First name recorded on the account.","example":"Ada","type":"string"},"lastName":{"description":"Last name recorded on the account.","example":"Lovelace","type":"string"},"linkedinUrl":{"description":"Public LinkedIn profile URL of the account.","example":"https://www.linkedin.com/in/ada","type":"string"},"password":{"description":"LinkedIn login password.","type":"string"},"proxy":{"$ref":"#/components/schemas/requests.ConnectLinkedinAccountProxyRequest"},"skipSenderProfile":{"description":"Connect the account without creating a sender profile for it. By default a draft sender\nprofile is created and linked automatically. Set this to true to connect the account\nstandalone, then attach it via POST /sender-profiles or PATCH /sender-profiles/{id} with linkedinAccountId.","example":false,"type":"boolean"}},"required":["email","password"],"type":"object"},"requests.CreateActionNodeRequest":{"properties":{"actionId":{"type":"integer"},"branchId":{"type":"integer"},"distributionStrategy":{"enum":["equal","custom"],"type":"string"},"variants":{"items":{"$ref":"#/components/schemas/requests.UpdateNodeVariantRequest"},"type":"array","uniqueItems":false},"waitDays":{"minimum":0,"type":"integer"}},"required":["actionId","branchId"],"type":"object"},"requests.CreateConditionNodeRequest":{"properties":{"branchId":{"type":"integer"},"conditionId":{"type":"integer"},"distributionStrategy":{"enum":["equal","custom"],"type":"string"},"metadata":{"$ref":"#/components/schemas/requests.ConditionMetadataRequest"},"minutesToWait":{"type":"integer"}},"required":["branchId","conditionId"],"type":"object"},"requests.CreateSenderProfileEntry":{"properties":{"linkedinAccountId":{"description":"ID of an already-connected LinkedIn account to attach. The account must belong to the\nworkspace and must not already be attached to another sender profile. Connect an account\nstandalone via POST /linkedin/accounts with skipSenderProfile set to true.","example":123,"type":"integer"},"mailboxIds":{"description":"Mailbox IDs to attach to the profile. Mailboxes must already exist in the workspace.","example":["mbox_123","mbox_456"],"items":{"type":"string"},"type":"array","uniqueItems":false},"name":{"description":"Display name of the sender profile.","example":"Public Sender","type":"string"}},"required":["name"],"type":"object"},"requests.CreateSenderProfileRequest":{"properties":{"linkedinAccountId":{"description":"ID of an already-connected LinkedIn account to attach. The account must belong to the\nworkspace and must not already be attached to another sender profile. Connect an account\nstandalone via POST /linkedin/accounts with skipSenderProfile set to true.","example":123,"type":"integer"},"mailboxIds":{"description":"Mailbox IDs to attach to the profile. Mailboxes must already exist in the workspace.","example":["mbox_123","mbox_456"],"items":{"type":"string"},"type":"array","uniqueItems":false},"name":{"description":"Display name of the sender profile.","example":"Public Sender","type":"string"}},"required":["name"],"type":"object"},"requests.CreateSequenceRequest":{"properties":{"description":{"type":"string"},"kind":{"enum":["primary","subsequence"],"type":"string"},"name":{"type":"string"},"settings":{"$ref":"#/components/schemas/requests.SequenceSettingsInput"},"timezone":{"example":"America/New_York","type":"string"}},"required":["name","timezone"],"type":"object"},"requests.CreateSubsequenceTriggerRequest":{"properties":{"labelId":{"type":"string"},"priority":{"type":"integer"}},"required":["labelId"],"type":"object"},"requests.EnrollmentFiltersRequest":{"description":"Contact filters.","properties":{"companies":{"description":"Company names to include.","items":{"type":"string"},"type":"array","uniqueItems":false},"companyEmpty":{"description":"Whether to include contacts with an empty company.","type":"boolean"},"customVarIds":{"description":"Custom variable IDs to include.","items":{"type":"string"},"type":"array","uniqueItems":false},"customVars":{"description":"Custom variable values to include.","items":{"type":"string"},"type":"array","uniqueItems":false},"esps":{"description":"Email service providers to include.","items":{"type":"string"},"type":"array","uniqueItems":false},"excludeContacted":{"description":"Whether to exclude contacts that have already been contacted.","type":"boolean"},"excludeUncontacted":{"description":"Last-contacted exclude token (e.g. days_7).","type":"string"},"hasEmail":{"description":"Whether to require an email address.","type":"boolean"},"hasValidLinkedIn":{"description":"Whether to require a valid LinkedIn profile.","type":"boolean"},"inMcSequenceIds":{"description":"Multichannel sequence IDs to include.","items":{"type":"string"},"type":"array","uniqueItems":false},"includeUncontacted":{"description":"Last-contacted include token (e.g. days_7).","type":"string"},"leadIds":{"description":"Contact IDs to include. Intersected with validationRunId when both are provided.","items":{"type":"string"},"type":"array","uniqueItems":false},"notInCustomVarIds":{"description":"Custom variable IDs to exclude.","items":{"type":"string"},"type":"array","uniqueItems":false},"notInCustomVars":{"description":"Custom variable values to exclude.","items":{"type":"string"},"type":"array","uniqueItems":false},"notInESPs":{"description":"Email service providers to exclude.","items":{"type":"string"},"type":"array","uniqueItems":false},"notInLeadIds":{"description":"Contact IDs to exclude.","items":{"type":"string"},"type":"array","uniqueItems":false},"notInMcSequenceIds":{"description":"Multichannel sequence IDs to exclude.","items":{"type":"string"},"type":"array","uniqueItems":false},"notInTagIds":{"description":"Tag IDs to exclude.","items":{"type":"string"},"type":"array","uniqueItems":false},"primeboxLabelIds":{"description":"Primebox label IDs (applied when replied status and a single MC sequence are selected).","items":{"type":"string"},"type":"array","uniqueItems":false},"searchQuery":{"description":"Contact search query.","type":"string"},"sequenceLeadStatuses":{"description":"Sequence lead statuses (applied when a single included MC sequence is selected).","items":{"type":"string"},"type":"array","uniqueItems":false},"tagIds":{"description":"Tag IDs to include.","items":{"type":"string"},"type":"array","uniqueItems":false},"validationRunId":{"description":"Completed or partially completed validation run ID. The run must contain at least one contact.","type":"string"},"validationStatuses":{"description":"Email validation statuses to include.","items":{"enum":["safe","invalid","disabled","disposable","inbox_full","catch_all","role_account","spamtrap","unknown","unvalidated","linkedin_only"],"type":"string"},"type":"array","uniqueItems":false}},"type":"object"},"requests.EnrollmentPreflightConfirmRequest":{"properties":{"action":{"description":"Conflict resolution action. skip excludes conflicts; move resolves selected source conflicts.","enum":["skip","move"],"type":"string"},"moveSourceSequenceIds":{"description":"Source sequence IDs to clean before enrollment.","items":{"type":"integer"},"type":"array","uniqueItems":false},"skipReplied":{"description":"Whether to exclude contacts with replies. Required for move decisions.","type":"boolean"}},"required":["action"],"type":"object"},"requests.EnrollmentPreflightMovePreviewRequest":{"properties":{"moveSourceSequenceIds":{"description":"Source sequence IDs to clean before enrollment.","items":{"type":"integer"},"type":"array","uniqueItems":false},"skipReplied":{"description":"Whether to exclude contacts with replies.","type":"boolean"}},"required":["skipReplied"],"type":"object"},"requests.EnrollmentPreflightRequest":{"properties":{"filters":{"$ref":"#/components/schemas/requests.EnrollmentFiltersRequest"},"limit":{"description":"Maximum number of candidate contacts.","type":"integer"},"selectionScope":{"description":"Sequence decision-membership scope. in_sequence includes contacts with any draft-sequence enrollment or an enrollment whose status is active, paused, out_of_office, failed, company_limit_reached, or replied. not_in_sequence includes all other contacts, including contacts whose only enrollments are completed, dnc, unsubscribed, or bounced. Defaults to all.","enum":["all","not_in_sequence","in_sequence"],"type":"string"}},"type":"object"},"requests.ReconnectLinkedinAccountRequest":{"properties":{"email":{"description":"Optional login email; if supplied it must match the existing account's email.","example":"user@example.com","type":"string"},"firstName":{"example":"Ada","type":"string"},"lastName":{"example":"Lovelace","type":"string"},"password":{"type":"string"},"proxy":{"$ref":"#/components/schemas/requests.ConnectLinkedinAccountProxyRequest"}},"required":["password"],"type":"object"},"requests.RemoveEnrollmentsRequest":{"properties":{"filters":{"$ref":"#/components/schemas/requests.EnrollmentFiltersRequest"},"limit":{"description":"Maximum number of contacts to remove.","type":"integer"}},"type":"object"},"requests.RemoveSequenceSenderProfilesRequest":{"properties":{"senderProfileIds":{"items":{"type":"integer"},"maxItems":50,"minItems":1,"type":"array","uniqueItems":false}},"required":["senderProfileIds"],"type":"object"},"requests.SequenceSettingsInput":{"properties":{"bcc":{"type":"string"},"bounceShieldEnabled":{"type":"boolean"},"cc":{"type":"string"},"ccAndBccEnabled":{"type":"boolean"},"clickTrackingEnabled":{"type":"boolean"},"companyOutreachLimitCount":{"type":"integer"},"companyOutreachLimitEnabled":{"type":"boolean"},"espMatchingEnabled":{"type":"boolean"},"localizedOptOutEnabled":{"type":"boolean"},"openTrackingEnabled":{"type":"boolean"},"opportunitiesValue":{"type":"number"},"optOutLinkEnabled":{"type":"boolean"},"optOutLinkText":{"type":"string"},"optOutText":{"type":"string"},"optOutTextEnabled":{"type":"boolean"},"pauseOnClick":{"type":"boolean"},"pauseOnOpen":{"type":"boolean"},"plainTextEmailsEnabled":{"type":"boolean"},"sendingPriority":{"enum":["regular","high"],"type":"string"},"sequentialCompanySendingEnabled":{"type":"boolean"},"taskPriorityPolicy":{"enum":["new_contacts","followups_first"],"example":"new_contacts","type":"string"},"trackOpportunitiesEnabled":{"type":"boolean"}},"type":"object"},"requests.StartValidationRunRequest":{"properties":{"filters":{"$ref":"#/components/schemas/requests.ValidationFiltersRequest"},"limit":{"type":"integer"},"strict":{"description":"Deprecated: Strict is accepted and ignored because empty scopes become terminal failed runs.","type":"boolean","x-deprecated":true}},"required":["filters"],"type":"object"},"requests.SubmitLinkedinAccountOTPRequest":{"properties":{"code":{"description":"One-time code from the challenge.","example":"123456","maxLength":10,"minLength":4,"type":"string"}},"required":["code"],"type":"object"},"requests.UpdateActionNodeRequest":{"properties":{"distributionStrategy":{"enum":["equal","custom"],"type":"string"},"variants":{"items":{"$ref":"#/components/schemas/requests.UpdateNodeVariantRequest"},"type":"array","uniqueItems":false},"wait_in_minutes":{"type":"integer"}},"type":"object"},"requests.UpdateNodeMetadataDTO":{"properties":{"allowed_validation_statuses":{"items":{"type":"string"},"type":"array","uniqueItems":false},"message":{"type":"string"},"name":{"type":"string"},"subject":{"type":"string"}},"type":"object"},"requests.UpdateNodeVariantRequest":{"properties":{"exposureInPercentage":{"maximum":100,"minimum":0,"type":"integer"},"id":{"type":"integer"},"isEnabled":{"type":"boolean"},"metadata":{"$ref":"#/components/schemas/requests.UpdateNodeMetadataDTO"}},"type":"object"},"requests.UpdateScheduleRequest":{"properties":{"schedule":{"$ref":"#/components/schemas/dto.Schedule"},"timezone":{"type":"string"}},"required":["schedule","timezone"],"type":"object"},"requests.UpdateSenderProfileRequest":{"properties":{"linkedinAccountId":{"description":"Attach an existing account from this workspace to an unlinked profile. Repeating the same\nID is allowed; replacing another account is rejected. Omitted or null leaves it unchanged.","type":"integer"},"mailboxIds":{"example":["mbox_123","mbox_456"],"items":{"type":"string"},"type":"array","uniqueItems":false},"name":{"example":"Public Sender Updated","type":"string"}},"type":"object"},"requests.UpdateSequenceRequest":{"properties":{"description":{"type":"string"},"name":{"type":"string"},"settings":{"$ref":"#/components/schemas/requests.SequenceSettingsInput"},"timezone":{"type":"string"}},"type":"object"},"requests.UpdateSequenceSettingsRequest":{"properties":{"bcc":{"type":"string"},"bounceShieldEnabled":{"type":"boolean"},"cc":{"type":"string"},"ccAndBccEnabled":{"type":"boolean"},"clickTrackingEnabled":{"type":"boolean"},"companyOutreachLimitCount":{"type":"integer"},"companyOutreachLimitEnabled":{"type":"boolean"},"espMatchingEnabled":{"type":"boolean"},"localizedOptOutEnabled":{"type":"boolean"},"openTrackingEnabled":{"type":"boolean"},"opportunitiesValue":{"type":"number"},"optOutLinkEnabled":{"type":"boolean"},"optOutLinkText":{"type":"string"},"optOutText":{"type":"string"},"optOutTextEnabled":{"type":"boolean"},"pauseOnClick":{"type":"boolean"},"pauseOnOpen":{"type":"boolean"},"plainTextEmailsEnabled":{"type":"boolean"},"sendingPriority":{"enum":["regular","high"],"type":"string"},"sequentialCompanySendingEnabled":{"type":"boolean"},"taskPriorityPolicy":{"enum":["new_contacts","followups_first"],"example":"new_contacts","type":"string"},"trackOpportunitiesEnabled":{"type":"boolean"}},"type":"object"},"requests.UpdateSequenceStatusRequest":{"properties":{"status":{"enum":["active","paused"],"type":"string"}},"required":["status"],"type":"object"},"requests.UpsertSequenceSenderProfilesRequest":{"properties":{"senderProfileIds":{"items":{"type":"integer"},"minItems":1,"type":"array","uniqueItems":false}},"required":["senderProfileIds"],"type":"object"},"requests.ValidationFiltersRequest":{"properties":{"companies":{"items":{"type":"string"},"type":"array","uniqueItems":false},"companyEmpty":{"type":"boolean"},"customVarIds":{"items":{"type":"string"},"type":"array","uniqueItems":false},"customVars":{"items":{"type":"string"},"type":"array","uniqueItems":false},"deleted":{"type":"boolean"},"esps":{"items":{"type":"string"},"type":"array","uniqueItems":false},"excludeContacted":{"type":"boolean"},"excludeUncontacted":{"type":"string"},"hasEmail":{"type":"boolean"},"hasValidLinkedIn":{"type":"boolean"},"inMcSequenceIds":{"items":{"type":"string"},"type":"array","uniqueItems":false},"includeUncontacted":{"type":"string"},"leadIds":{"items":{"type":"string"},"type":"array","uniqueItems":false},"notInCustomVarIds":{"items":{"type":"string"},"type":"array","uniqueItems":false},"notInCustomVars":{"items":{"type":"string"},"type":"array","uniqueItems":false},"notInESPs":{"items":{"type":"string"},"type":"array","uniqueItems":false},"notInLeadIds":{"items":{"type":"string"},"type":"array","uniqueItems":false},"notInMcSequenceIds":{"items":{"type":"string"},"type":"array","uniqueItems":false},"notInTagIds":{"items":{"type":"string"},"type":"array","uniqueItems":false},"numberOfContactsToAdd":{"type":"integer"},"primeboxLabelIds":{"items":{"type":"string"},"type":"array","uniqueItems":false},"searchQuery":{"type":"string"},"selectionScope":{"type":"string"},"sequenceLeadStatuses":{"items":{"type":"string"},"type":"array","uniqueItems":false},"tagIds":{"items":{"type":"string"},"type":"array","uniqueItems":false},"validationStatuses":{"items":{"type":"string"},"type":"array","uniqueItems":false},"withEmailOnly":{"type":"boolean"}},"type":"object"},"responses.ActionListResponse":{"properties":{"actions":{"items":{"$ref":"#/components/schemas/responses.ActionResponse"},"type":"array","uniqueItems":false},"pagination":{"$ref":"#/components/schemas/responses.PaginationResponse"}},"type":"object"},"responses.ActionResponse":{"properties":{"branchingType":{"type":"string"},"channel":{"type":"string"},"description":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"type":"object"},"responses.AddEnrollmentsResponse":{"properties":{"leadIds":{"items":{"type":"string"},"type":"array","uniqueItems":false},"skippedLeads":{"additionalProperties":{"type":"string"},"type":"object"}},"type":"object"},"responses.BulkCreateSenderProfileResult":{"properties":{"error":{"description":"Why the entry failed. Absent when the entry succeeded.","example":"linkedin account not found","type":"string"},"index":{"description":"Position of the entry in the submitted profiles array, so results can be matched to input.","type":"integer"},"profile":{"$ref":"#/components/schemas/responses.SenderProfileResponse"}},"type":"object"},"responses.BulkCreateSenderProfilesResponse":{"properties":{"results":{"description":"One result per submitted entry, in request order.","items":{"$ref":"#/components/schemas/responses.BulkCreateSenderProfileResult"},"type":"array","uniqueItems":false}},"type":"object"},"responses.ConditionListResponse":{"properties":{"conditions":{"items":{"$ref":"#/components/schemas/responses.ConditionResponse"},"type":"array","uniqueItems":false},"pagination":{"$ref":"#/components/schemas/responses.PaginationResponse"}},"type":"object"},"responses.ConditionResponse":{"properties":{"branchingType":{"type":"string"},"channel":{"type":"string"},"description":{"type":"string"},"id":{"type":"integer"},"name":{"type":"string"}},"type":"object"},"responses.CreateSequenceResponse":{"properties":{"description":{"type":"string"},"id":{"type":"integer"},"kind":{"type":"string"},"name":{"type":"string"},"settings":{"$ref":"#/components/schemas/responses.SequenceSettingsResponse"},"status":{"type":"string"},"timezone":{"type":"string"}},"type":"object"},"responses.DetectedSpamWordResponse":{"properties":{"score":{"example":15,"type":"integer"},"seenCount":{"example":1,"type":"integer"},"severity":{"enum":["yellow","orange","red"],"example":"yellow","type":"string"},"word":{"example":"free","type":"string"}},"type":"object"},"responses.EnrollmentAccountContactLimitResponse":{"properties":{"message":{"description":"Stable error message returned when the account has insufficient active-contact headroom.","enum":["insufficient remaining active credits balance"],"example":"insufficient remaining active credits balance","type":"string"}},"type":"object"},"responses.EnrollmentConfirmationBusyResponse":{"properties":{"message":{"description":"Stable error code.","enum":["enrollment_confirmation_busy"],"example":"enrollment_confirmation_busy","type":"string"}},"type":"object"},"responses.EnrollmentPreflightConfirmResponse":{"properties":{"enrolledLeadIds":{"description":"Contact IDs enrolled in the target sequence. This list includes contacts enrolled with a carried do-not-contact, unsubscribed, or bounce-shield status.","items":{"type":"string"},"type":"array","uniqueItems":false},"summary":{"$ref":"#/components/schemas/responses.EnrollmentPreflightDecisionSummary"}},"type":"object"},"responses.EnrollmentPreflightDecisionSummary":{"description":"Enrollment decision outcome.","properties":{"alreadyInTargetCount":{"description":"Contacts already enrolled in the target sequence.","example":3,"type":"integer"},"enrolledCount":{"description":"Contacts projected or actually enrolled in the target sequence. This count includes contacts enrolled with a carried do-not-contact, unsubscribed, or bounce-shield status.","example":94,"type":"integer"},"skippedCount":{"description":"Contacts projected or actually skipped by the decision.","example":3,"type":"integer"},"sourceCleanupCount":{"description":"Contacts projected or actually removed from at least one source sequence.","example":9,"type":"integer"}},"type":"object"},"responses.EnrollmentPreflightMoveGroup":{"properties":{"selectedContactCount":{"description":"Decision contacts associated with this source sequence. A contact can appear in multiple move groups, so do not sum this field across groups.","example":9,"type":"integer"},"sequenceId":{"description":"Source sequence ID.","example":42,"type":"integer"},"sequenceName":{"description":"Source sequence name.","example":"Q3 outbound","type":"string"},"sequenceStatus":{"description":"Source sequence status.","example":"active","type":"string"}},"type":"object"},"responses.EnrollmentPreflightMovePreviewResponse":{"properties":{"skipBreakdown":{"$ref":"#/components/schemas/responses.EnrollmentPreflightSkipBreakdown"},"summary":{"$ref":"#/components/schemas/responses.EnrollmentPreflightDecisionSummary"}},"type":"object"},"responses.EnrollmentPreflightRepliedDecision":{"description":"Replied-contact decision details.","properties":{"contactCount":{"description":"Decision contacts with a replied source enrollment.","example":2,"type":"integer"}},"type":"object"},"responses.EnrollmentPreflightResponse":{"description":"Enrollment preflight.","properties":{"expiresAt":{"description":"Preflight expiration time.","format":"date-time","type":"string"},"moveGroups":{"description":"Source sequences available for cleanup.","items":{"$ref":"#/components/schemas/responses.EnrollmentPreflightMoveGroup"},"type":"array","uniqueItems":false},"preflightId":{"description":"Saved preflight ID used by preview and confirm.","example":"2f4f75ad-2527-4e89-b0dc-2cd75589c64f","type":"string"},"repliedDecision":{"$ref":"#/components/schemas/responses.EnrollmentPreflightRepliedDecision"},"summary":{"$ref":"#/components/schemas/responses.EnrollmentPreflightSummary"}},"type":"object"},"responses.EnrollmentPreflightSelectionEmptyResponse":{"properties":{"message":{"description":"Stable error code.","enum":["validation_run_selection_empty"],"example":"validation_run_selection_empty","type":"string"}},"type":"object"},"responses.EnrollmentPreflightSkipBreakdown":{"description":"Projected skipped-contact breakdown.","properties":{"repliedCount":{"description":"Contacts skipped because skipReplied is true.","example":2,"type":"integer"},"unselectedSourceCount":{"description":"Contacts skipped because one or more required source sequences were not selected.","example":1,"type":"integer"}},"type":"object"},"responses.EnrollmentPreflightStaleResponse":{"properties":{"data":{"$ref":"#/components/schemas/responses.EnrollmentPreflightResponse"},"message":{"description":"Stable error code: preflight_stale.","enum":["preflight_stale"],"example":"preflight_stale","type":"string"}},"type":"object"},"responses.EnrollmentPreflightSummary":{"description":"Candidate and decision counts.","properties":{"alreadyInTargetCount":{"description":"Contacts already enrolled in the target sequence.","example":3,"type":"integer"},"automaticEnrollmentCount":{"description":"Contacts eligible for enrollment without conflict resolution.","example":85,"type":"integer"},"candidateCount":{"description":"Contacts captured in the preflight snapshot.","example":100,"type":"integer"},"decisionRequiredCount":{"description":"Contacts requiring a skip or move decision because of existing enrollments or replies.","example":12,"type":"integer"}},"type":"object"},"responses.EnrollmentPreflightValidationConflictData":{"description":"Validation run context.","properties":{"runId":{"description":"Validation run ID.","example":"2f4f75ad-2527-4e89-b0dc-2cd75589c64f","type":"string"},"status":{"description":"Current validation run status.","enum":["pending","in_progress","failed"],"example":"in_progress","type":"string"}},"type":"object"},"responses.EnrollmentPreflightValidationConflictResponse":{"properties":{"data":{"$ref":"#/components/schemas/responses.EnrollmentPreflightValidationConflictData"},"message":{"description":"Stable error code. Branch on validation_run_not_completed or validation_run_failed.","enum":["validation_run_not_completed","validation_run_failed"],"example":"validation_run_not_completed","type":"string"}},"type":"object"},"responses.ErrorResponse":{"properties":{"data":{"description":"Optional error context. Its shape depends on the message and endpoint."},"message":{"description":"Human-readable error text or, for documented cases, a stable machine-readable code that clients can branch on.","example":"Invalid request body","type":"string"}},"type":"object"},"responses.LinkedinAccountResponse":{"properties":{"checkpoint":{"properties":{"data":{"type":"string"},"publicKey":{"type":"string"},"type":{"type":"string"}},"type":"object"},"firstName":{"type":"string"},"id":{"type":"integer"},"isConnected":{"type":"boolean"},"lastName":{"type":"string"},"linkedinUrl":{"type":"string"},"premiumType":{"type":"string"},"profilePictureUrl":{"type":"string"},"requires2fa":{"type":"boolean"},"state":{"type":"string"},"status":{"type":"string"}},"type":"object"},"responses.LinkedinMagicLinkResponse":{"properties":{"expiresAt":{"type":"string"},"id":{"type":"string"},"token":{"type":"string"},"url":{"type":"string"}},"type":"object"},"responses.MailboxResponse":{"properties":{"address":{"type":"string"},"id":{"type":"string"}},"type":"object"},"responses.MessageAnalyticsListResponse":{"properties":{"data":{"description":"The messages on this page.","items":{"$ref":"#/components/schemas/responses.MessageAnalyticsResponse"},"type":"array","uniqueItems":false},"hasMore":{"description":"True when more messages follow this page.","type":"boolean"},"limit":{"description":"The maximum number of messages on a page.","type":"integer"},"nextCursor":{"description":"The value to send as cursor to get the next page. Present only when hasMore is true.","type":"string"}},"type":"object"},"responses.MessageAnalyticsResponse":{"properties":{"bouncedAt":{"description":"When an email bounced, in RFC 3339 format. Omitted if it did not bounce.","type":"string"},"channel":{"description":"The channel the message was sent on: email or linkedin.","enum":["email","linkedin"],"type":"string"},"clickCount":{"description":"How many link clicks an email received. Always 0 for LinkedIn messages.","type":"integer"},"contact":{"$ref":"#/components/schemas/responses.MessageContactResponse"},"content":{"description":"The message body.","type":"string"},"firstOpenedAt":{"description":"When an email was first opened, in RFC 3339 format. Omitted if it was not opened.","type":"string"},"from":{"$ref":"#/components/schemas/responses.MessageSenderResponse"},"messageId":{"description":"The Message-ID for an email, or the LinkedIn message id for a LinkedIn message.","type":"string"},"openCount":{"description":"How many times an email was opened. Always 0 for LinkedIn messages.","type":"integer"},"positiveReply":{"description":"True when the reply to this message was classified as positive.","type":"boolean"},"repliedAt":{"description":"When the contact replied to this message, in RFC 3339 format. Omitted if there is no reply.","type":"string"},"sentAt":{"description":"When the message was sent, in RFC 3339 format.","type":"string"},"sequenceId":{"description":"The sequence the message belongs to.","type":"integer"},"sequenceName":{"description":"The name of that sequence.","type":"string"},"subject":{"description":"The message subject. Empty when the message has none.","type":"string"},"type":{"description":"The kind of message: Email, LinkedIn message, InMail or Connection note.","enum":["Email","LinkedIn message","InMail","Connection note"],"type":"string"}},"type":"object"},"responses.MessageContactResponse":{"description":"The recipient.","properties":{"company":{"description":"The contact's company name.","type":"string"},"email":{"description":"The contact's email address.","type":"string"},"firstName":{"description":"The contact's first name.","type":"string"},"id":{"description":"The contact's id.","type":"string"},"lastName":{"description":"The contact's last name.","type":"string"},"linkedinUrl":{"description":"The contact's LinkedIn profile URL.","type":"string"},"status":{"description":"The contact's status in the sequence, for example active.","type":"string"},"validationStatus":{"description":"The contact's email validation result, for example valid.","type":"string"}},"type":"object"},"responses.MessageSenderResponse":{"description":"The sender.","properties":{"email":{"description":"The address the email was sent from. Empty for LinkedIn messages.","type":"string"},"linkedinAccount":{"description":"The email of the LinkedIn account that sent the message. Empty for emails.","type":"string"},"senderProfile":{"description":"The name of the sender profile used for the message.","type":"string"}},"type":"object"},"responses.MetadataResponse":{"properties":{"allowedValidationStatuses":{"items":{"type":"string"},"type":"array","uniqueItems":false},"contentSource":{"$ref":"#/components/schemas/dto.ContentSource"},"message":{"type":"string"},"name":{"type":"string"},"subject":{"type":"string"}},"type":"object"},"responses.NodeBranchListResponse":{"properties":{"branches":{"items":{"$ref":"#/components/schemas/responses.NodeBranchResponse"},"type":"array","uniqueItems":false},"pagination":{"$ref":"#/components/schemas/responses.PaginationResponse"}},"type":"object"},"responses.NodeBranchResponse":{"properties":{"analytics":{"$ref":"#/components/schemas/dto.BranchAnalyticsDTO"},"description":{"type":"string"},"fromNodeId":{"type":"integer"},"id":{"type":"integer"},"name":{"type":"string"},"toNodeId":{"type":"integer"}},"type":"object"},"responses.NodeListResponse":{"properties":{"nodes":{"items":{"$ref":"#/components/schemas/responses.NodeResponse"},"type":"array","uniqueItems":false},"pagination":{"$ref":"#/components/schemas/responses.PaginationResponse"}},"type":"object"},"responses.NodeResponse":{"properties":{"actionId":{"type":"integer"},"analytics":{"$ref":"#/components/schemas/dto.NodeAnalyticsDTO"},"branches":{"items":{"$ref":"#/components/schemas/responses.NodeBranchResponse"},"type":"array","uniqueItems":false},"conditionId":{"type":"integer"},"distributionStrategy":{"type":"string"},"id":{"type":"integer"},"sequenceId":{"type":"integer"},"type":{"type":"string"},"variants":{"items":{"$ref":"#/components/schemas/responses.NodeVariantResponse"},"type":"array","uniqueItems":false},"waitInMinutes":{"type":"integer"},"waitType":{"type":"string"}},"type":"object"},"responses.NodeSpamCheckResponse":{"properties":{"language":{"example":"american_english","type":"string"},"nodeId":{"example":1234,"type":"integer"},"variants":{"items":{"$ref":"#/components/schemas/responses.NodeVariantSpamCheckResponse"},"type":"array","uniqueItems":false}},"type":"object"},"responses.NodeVariantResponse":{"properties":{"exposureInPercentage":{"type":"number"},"id":{"type":"integer"},"isEnabled":{"type":"boolean"},"metadata":{"$ref":"#/components/schemas/responses.MetadataResponse"},"nodeId":{"type":"integer"}},"type":"object"},"responses.NodeVariantSpamCheckResponse":{"properties":{"isEnabled":{"example":true,"type":"boolean"},"metrics":{"$ref":"#/components/schemas/responses.SpamCheckMetricsResponse"},"name":{"example":"Variant A","type":"string"},"recommendations":{"example":["Avoid spam words","We recommend using plain text"],"items":{"type":"string"},"type":"array","uniqueItems":false},"spamPotential":{"$ref":"#/components/schemas/responses.SpamPotentialResponse"},"variantId":{"example":5678,"type":"integer"}},"type":"object"},"responses.PaginationResponse":{"properties":{"hasNext":{"type":"boolean"},"limit":{"type":"integer"},"page":{"type":"integer"},"total":{"type":"integer"},"totalPages":{"type":"integer"}},"type":"object"},"responses.ScheduleResponse":{"properties":{"schedule":{"$ref":"#/components/schemas/dto.Schedule"},"timezone":{"type":"string"}},"type":"object"},"responses.SenderProfileLinkedinAccountResponse":{"properties":{"id":{"type":"integer"},"linkedinUrl":{"type":"string"},"name":{"type":"string"},"premium":{"type":"boolean"},"profilePictureUrl":{"type":"string"},"status":{"type":"string"}},"type":"object"},"responses.SenderProfileListResponse":{"properties":{"pagination":{"$ref":"#/components/schemas/responses.PaginationResponse"},"profiles":{"items":{"$ref":"#/components/schemas/responses.SenderProfileResponse"},"type":"array","uniqueItems":false}},"type":"object"},"responses.SenderProfileResponse":{"description":"The created sender profile. Absent when the entry failed.","properties":{"id":{"type":"integer"},"linkedinAccount":{"$ref":"#/components/schemas/responses.SenderProfileLinkedinAccountResponse"},"mailboxes":{"items":{"$ref":"#/components/schemas/responses.MailboxResponse"},"type":"array","uniqueItems":false},"name":{"type":"string"},"status":{"type":"string"}},"type":"object"},"responses.SequenceDetailsResponse":{"properties":{"activeEnrollmentCount":{"type":"integer"},"branches":{"items":{"$ref":"#/components/schemas/responses.NodeBranchResponse"},"type":"array","uniqueItems":false},"completedLeadCount":{"type":"integer"},"nodes":{"items":{"$ref":"#/components/schemas/responses.NodeResponse"},"type":"array","uniqueItems":false},"sequence":{"$ref":"#/components/schemas/responses.SequenceResponse"},"totalLeadCount":{"type":"integer"}},"type":"object"},"responses.SequenceLeadContentResponse":{"description":"Stored outbound message content. Use delivery to determine the recorded send outcome.","properties":{"contentType":{"description":"ContentType is inferred from email markup; LinkedIn content is text/plain.","enum":["text/html","text/plain"],"type":"string"},"message":{"type":"string"},"subject":{"type":"string"}},"required":["contentType","message"],"type":"object"},"responses.SequenceLeadDeliveryResponse":{"description":"Send and bounce evidence for email, LinkedIn messages, and InMail. Included only for these message actions. LinkedIn sends require a sent message associated with the step.","properties":{"bouncedAt":{"format":"date-time","type":"string"},"channel":{"enum":["email","linkedin"],"type":"string"},"sentAt":{"description":"SentAt is the recorded email send time. Omitted for LinkedIn.","format":"date-time","type":"string"},"status":{"description":"Status is unknown when no send or bounce is recorded, sent when a send is recorded, or bounced for an email bounce. A recorded send does not confirm receipt or reading.","enum":["unknown","sent","bounced"],"type":"string"}},"required":["channel","status"],"type":"object"},"responses.SequenceLeadEngagementResponse":{"description":"Recorded email opens and clicks. Zero counts mean no recorded events; tracking availability is unknown. Included when an email send or engagement event is recorded.","properties":{"clickCount":{"description":"ClickCount is the number of recorded clicks.","type":"integer"},"lastClickedAt":{"format":"date-time","type":"string"},"lastOpenedAt":{"format":"date-time","type":"string"},"openCount":{"description":"OpenCount is the number of recorded opens.","type":"integer"}},"required":["clickCount","openCount"],"type":"object"},"responses.SequenceLeadEnrollmentResponse":{"properties":{"inSubsequence":{"type":"boolean"},"pauseReason":{"type":"string"},"status":{"enum":["active","paused","completed","failed","replied","out_of_office","unsubscribed","dnc","bounced","bounce-shield","company_limit_reached","stop_on_reply"],"type":"string"},"updatedAt":{"description":"UpdatedAt is the last update time of the enrollment record.","format":"date-time","type":"string"}},"required":["inSubsequence","status","updatedAt"],"type":"object"},"responses.SequenceLeadListResponse":{"properties":{"leads":{"items":{"$ref":"#/components/schemas/responses.SequenceLeadProgressResponse"},"type":"array","uniqueItems":false},"pagination":{"$ref":"#/components/schemas/responses.PaginationResponse"}},"required":["leads","pagination"],"type":"object"},"responses.SequenceLeadProgressResponse":{"properties":{"enrollment":{"$ref":"#/components/schemas/responses.SequenceLeadEnrollmentResponse"},"lead":{"$ref":"#/components/schemas/responses.SequenceLeadResponse"},"timeline":{"items":{"$ref":"#/components/schemas/responses.SequenceLeadTimelineStepResponse"},"type":"array","uniqueItems":false}},"required":["enrollment","lead","timeline"],"type":"object"},"responses.SequenceLeadReplyContentResponse":{"description":"The earliest stored reply associated with the step, regardless of current enrollment status. Replies are matched by task; replies without a task association are matched to the latest preceding execution on the same channel. This is a single reply, not the full conversation.","properties":{"channel":{"enum":["email","linkedin"],"type":"string"},"contentType":{"description":"ContentType is inferred from email markup; LinkedIn content is text/plain.","enum":["text/html","text/plain"],"type":"string"},"message":{"type":"string"},"repliedAt":{"format":"date-time","type":"string"},"subject":{"type":"string"}},"required":["channel","contentType","message"],"type":"object"},"responses.SequenceLeadResponse":{"properties":{"email":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"leadId":{"type":"string"},"linkedinUrl":{"type":"string"},"position":{"type":"string"},"profilePictureUrl":{"type":"string"}},"required":["email","firstName","lastName","leadId","linkedinUrl"],"type":"object"},"responses.SequenceLeadSenderResponse":{"description":"The profile and mailbox assigned to the step. Profile details reflect their current stored values.","properties":{"email":{"type":"string"},"linkedinUrl":{"type":"string"},"mailboxId":{"type":"string"},"senderProfileId":{"type":"integer"},"senderProfileName":{"type":"string"}},"required":["email","linkedinUrl","senderProfileId","senderProfileName"],"type":"object"},"responses.SequenceLeadStepErrorResponse":{"properties":{"failedAt":{"format":"date-time","type":"string"},"message":{"type":"string"},"retryCount":{"type":"integer"}},"required":["failedAt","message","retryCount"],"type":"object"},"responses.SequenceLeadTimelineStepResponse":{"description":"A sequence step with execution state and available message, reply, sender, engagement, and error details. Optional fields are omitted when unavailable or inapplicable.","properties":{"actionChannel":{"enum":["email","linkedin","inmail"],"type":"string"},"actionName":{"type":"string"},"blockedByLeadStatus":{"description":"BlockedByLeadStatus is the enrollment status preventing a pending or scheduled step from running.","type":"string"},"branchTaken":{"type":"string"},"conditionName":{"type":"string"},"content":{"$ref":"#/components/schemas/responses.SequenceLeadContentResponse"},"delivery":{"$ref":"#/components/schemas/responses.SequenceLeadDeliveryResponse"},"engagement":{"$ref":"#/components/schemas/responses.SequenceLeadEngagementResponse"},"error":{"$ref":"#/components/schemas/responses.SequenceLeadStepErrorResponse"},"executedAt":{"format":"date-time","type":"string"},"executionOrder":{"type":"integer"},"executionStatus":{"description":"ExecutionStatus is the processing state of the step. Message outcomes are reported in delivery.","enum":["pending","scheduled","processing","completed","failed"],"type":"string"},"nodeId":{"type":"integer"},"nodeType":{"enum":["action","condition","root","terminal"],"type":"string"},"replyContent":{"$ref":"#/components/schemas/responses.SequenceLeadReplyContentResponse"},"scheduledAt":{"description":"ScheduledAt is the planned execution time, subject to sequence and sender availability.","format":"date-time","type":"string"},"sender":{"$ref":"#/components/schemas/responses.SequenceLeadSenderResponse"}},"required":["executionOrder","executionStatus","nodeId","nodeType"],"type":"object"},"responses.SequenceListResponse":{"properties":{"pagination":{"$ref":"#/components/schemas/responses.PaginationResponse"},"sequences":{"items":{"$ref":"#/components/schemas/responses.SequenceResponse"},"type":"array","uniqueItems":false}},"type":"object"},"responses.SequenceResponse":{"properties":{"analytics":{"$ref":"#/components/schemas/dto.SequenceAnalyticsDTO"},"companyOutreachLimitCount":{"description":"Deprecated: use settings.companyOutreachLimitCount.","type":"integer"},"companyOutreachLimitEnabled":{"description":"Deprecated: use settings.companyOutreachLimitEnabled.","type":"boolean"},"createdAt":{"type":"string"},"description":{"type":"string"},"id":{"type":"integer"},"launchedAt":{"type":"string"},"name":{"type":"string"},"opportunitiesValue":{"description":"Deprecated: use settings.opportunitiesValue.","type":"number"},"schedule":{"$ref":"#/components/schemas/dto.Schedule"},"senderProfiles":{"items":{"$ref":"#/components/schemas/responses.SequenceSenderProfileBrief"},"type":"array","uniqueItems":false},"sendingPriority":{"enum":["regular","high"],"type":"string"},"sequentialCompanySendingEnabled":{"description":"Deprecated: use settings.sequentialCompanySendingEnabled.","type":"boolean"},"settings":{"$ref":"#/components/schemas/responses.SequenceSettingsResponse"},"status":{"type":"string"},"timezone":{"type":"string"},"trackOpportunitiesEnabled":{"description":"Deprecated: use settings.trackOpportunitiesEnabled.","type":"boolean"},"updatedAt":{"type":"string"},"workspaceId":{"type":"string"}},"type":"object"},"responses.SequenceSenderProfileBrief":{"properties":{"id":{"type":"integer"},"name":{"type":"string"},"profilePictureUrl":{"type":"string"}},"type":"object"},"responses.SequenceSendingAnalyticsDay":{"properties":{"replied":{"type":"integer"},"sent":{"type":"integer"},"totalClicked":{"type":"integer"},"totalOpened":{"type":"integer"},"uniqueClicked":{"type":"integer"},"uniqueOpened":{"type":"integer"}},"type":"object"},"responses.SequenceSendingAnalyticsResponse":{"properties":{"days":{"additionalProperties":{"$ref":"#/components/schemas/responses.SequenceSendingAnalyticsDay"},"type":"object"},"from_date":{"type":"string"},"stats":{"$ref":"#/components/schemas/responses.SequenceSendingAnalyticsStats"},"timezone":{"type":"string"},"to_date":{"type":"string"}},"type":"object"},"responses.SequenceSendingAnalyticsStats":{"properties":{"bounceRatePercent":{"type":"number"},"bounced":{"type":"integer"},"clickRatePercent":{"type":"number"},"clicked":{"type":"integer"},"contacted":{"type":"integer"},"openRatePercent":{"type":"number"},"opened":{"type":"integer"},"opportunitiesCount":{"type":"integer"},"optOutRatePercent":{"type":"number"},"optOuts":{"type":"integer"},"positiveReplyRatePercent":{"type":"number"},"replied":{"type":"integer"},"repliedPositive":{"type":"integer"},"replyRatePercent":{"type":"number"},"totalClicks":{"type":"integer"},"totalOpens":{"type":"integer"},"totalOpportunitiesValue":{"type":"number"},"trackOpportunitiesEnabled":{"type":"boolean"}},"type":"object"},"responses.SequenceSettingsResponse":{"properties":{"bcc":{"type":"string"},"bounceShieldEnabled":{"type":"boolean"},"cc":{"type":"string"},"ccAndBccEnabled":{"type":"boolean"},"clickTrackingEnabled":{"type":"boolean"},"companyOutreachLimitCount":{"type":"integer"},"companyOutreachLimitEnabled":{"type":"boolean"},"espMatchingEnabled":{"type":"boolean"},"localizedOptOutEnabled":{"type":"boolean"},"openTrackingEnabled":{"type":"boolean"},"opportunitiesValue":{"type":"number"},"optOutLinkEnabled":{"type":"boolean"},"optOutLinkText":{"type":"string"},"optOutText":{"type":"string"},"optOutTextEnabled":{"type":"boolean"},"pauseOnClick":{"type":"boolean"},"pauseOnOpen":{"type":"boolean"},"plainTextEmailsEnabled":{"type":"boolean"},"sendingPriority":{"enum":["regular","high"],"type":"string"},"sequentialCompanySendingEnabled":{"type":"boolean"},"taskPriorityPolicy":{"enum":["new_contacts","followups_first"],"example":"new_contacts","type":"string"},"trackOpportunitiesEnabled":{"type":"boolean"}},"type":"object"},"responses.SpamCheckMetricResponse":{"properties":{"approximate":{"description":"Approximate is true when the value is an estimate (word count with spintax or variables).","example":false,"type":"boolean"},"rating":{"$ref":"#/components/schemas/responses.SpamCheckRating"},"unit":{"description":"Unit is set when the value is not a plain count (for example \"percent\").","example":"percent","type":"string"},"value":{"example":2,"type":"integer"}},"type":"object"},"responses.SpamCheckMetricsResponse":{"properties":{"emojis":{"$ref":"#/components/schemas/responses.SpamCheckMetricResponse"},"images":{"$ref":"#/components/schemas/responses.SpamCheckMetricResponse"},"links":{"$ref":"#/components/schemas/responses.SpamCheckMetricResponse"},"spamWords":{"$ref":"#/components/schemas/responses.SpamWordsMetricResponse"},"spintaxVariables":{"$ref":"#/components/schemas/responses.SpamCheckMetricResponse"},"wordCount":{"$ref":"#/components/schemas/responses.SpamCheckMetricResponse"}},"type":"object"},"responses.SpamCheckRating":{"enum":["good","ok","bad","good","ok","bad","good","ok","bad","good","ok","bad"],"example":"ok","type":"string","x-enum-varnames":["SpamCheckRatingGood","SpamCheckRatingOK","SpamCheckRatingBad"]},"responses.SpamPotentialResponse":{"properties":{"interpretation":{"example":"High spam potential","type":"string"},"rating":{"$ref":"#/components/schemas/responses.SpamCheckRating"},"score":{"example":80,"type":"integer"}},"type":"object"},"responses.SpamWordsMetricResponse":{"properties":{"rating":{"$ref":"#/components/schemas/responses.SpamCheckRating"},"value":{"example":2,"type":"integer"},"words":{"items":{"$ref":"#/components/schemas/responses.DetectedSpamWordResponse"},"type":"array","uniqueItems":false}},"type":"object"},"responses.StartValidationRunResponse":{"properties":{"failureCode":{"$ref":"#/components/schemas/models.ValidationRunFailureCode"},"matched":{"description":"Matched counts contacts returned while resolving the submitted scope.\nDeprecated: use selected at submission and validation results after completion.","type":"integer","x-deprecated":true},"message":{"description":"Deprecated: inspect status and failureCode on validation results instead.","type":"string","x-deprecated":true},"selected":{"description":"Selected counts the exact candidates frozen for this run.","type":"integer"},"skipped":{"$ref":"#/components/schemas/responses.ValidationSkipCountsResponse"},"started":{"description":"Deprecated: Started is retained as true for accepted asynchronous submissions.","type":"boolean","x-deprecated":true},"status":{"description":"Status is the lifecycle status at submission completion.","enum":["pending","failed"],"example":"pending","type":"string"},"validationJobID":{"type":"string"}},"type":"object"},"responses.SubsequenceAssignmentResponse":{"properties":{"childSequenceId":{"type":"integer"},"id":{"type":"integer"},"parentSequenceId":{"type":"integer"},"priority":{"type":"integer"}},"type":"object"},"responses.SubsequenceMemberListResponse":{"properties":{"members":{"items":{"$ref":"#/components/schemas/responses.SubsequenceMemberResponse"},"type":"array","uniqueItems":false},"pagination":{"$ref":"#/components/schemas/responses.PaginationResponse"}},"type":"object"},"responses.SubsequenceMemberResponse":{"properties":{"childOutreachStartedAt":{"type":"string"},"enrolledAt":{"type":"string"},"handoffId":{"type":"integer"},"handoffState":{"type":"string"},"leadId":{"type":"string"},"parentSequenceId":{"type":"integer"},"sequenceLeadId":{"type":"integer"},"status":{"type":"string"}},"type":"object"},"responses.SubsequenceParentListResponse":{"properties":{"parents":{"items":{"$ref":"#/components/schemas/responses.SubsequenceParentResponse"},"type":"array","uniqueItems":false}},"type":"object"},"responses.SubsequenceParentResponse":{"properties":{"childSequenceId":{"type":"integer"},"id":{"type":"integer"},"parentSequence":{"$ref":"#/components/schemas/responses.SubsequenceSequenceSummaryResponse"},"parentSequenceId":{"type":"integer"},"priority":{"type":"integer"}},"type":"object"},"responses.SubsequenceSequenceSummaryResponse":{"properties":{"id":{"type":"integer"},"kind":{"type":"string"},"name":{"type":"string"},"status":{"type":"string"}},"type":"object"},"responses.SubsequenceTriggerListResponse":{"properties":{"triggers":{"items":{"$ref":"#/components/schemas/responses.SubsequenceTriggerResponse"},"type":"array","uniqueItems":false}},"type":"object"},"responses.SubsequenceTriggerResponse":{"properties":{"childSequenceId":{"type":"integer"},"id":{"type":"integer"},"labelId":{"type":"string"},"priority":{"type":"integer"},"triggerType":{"type":"string"}},"type":"object"},"responses.ValidationRunSummaryResponse":{"properties":{"failureCode":{"$ref":"#/components/schemas/models.ValidationRunFailureCode"},"finishedAt":{"type":"string"},"status":{"$ref":"#/components/schemas/models.ValidationRunStatus"},"summary":{"$ref":"#/components/schemas/api.ESPValidationResult"},"totals":{"properties":{"byStatus":{"$ref":"#/components/schemas/api.ValidationStatusCountResponse"},"totalSelected":{"type":"integer"},"totalValidated":{"type":"integer"}},"type":"object"}},"type":"object"},"responses.ValidationSkipCountsResponse":{"description":"Skipped reports exact request-time duplicate exclusions.","properties":{"duplicate":{"type":"integer"}},"type":"object"}},"securitySchemes":{"ApiKeyAuth":{"in":"header","name":"Authorization","type":"apiKey"}}},"externalDocs":{"description":"","url":""},"info":{"description":"Multichannel public endpoints consumed through salesforge-api public docs.","title":"Multichannel Public API","version":"1.0"},"openapi":"3.1.0","paths":{"/multichannel/actions":{"get":{"parameters":[{"description":"Channel","in":"query","name":"channel","schema":{"enum":["email","linkedin"],"type":"string"}},{"description":"Name","in":"query","name":"name","schema":{"type":"string"}},{"description":"Page","in":"query","name":"page","schema":{"minimum":1,"type":"integer"}},{"description":"Limit (max 100)","in":"query","name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ActionListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List actions","tags":["Nodes"]}},"/multichannel/conditions":{"get":{"parameters":[{"description":"Channel","in":"query","name":"channel","schema":{"enum":["email","linkedin"],"type":"string"}},{"description":"Name","in":"query","name":"name","schema":{"type":"string"}},{"description":"Page","in":"query","name":"page","schema":{"minimum":1,"type":"integer"}},{"description":"Limit (max 100)","in":"query","name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ConditionListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List conditions","tags":["Nodes"]}},"/multichannel/workspaces/{workspaceID}/analytics/messages":{"get":{"description":"Returns sent emails and LinkedIn messages for up to 10 sequences within a mandatory date range of at most 30 days. Results are ordered by send time, oldest first unless `order=desc`, and paginated: follow `nextCursor` until `hasMore` is false. No total count is returned.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence IDs, 1-10. Repeat the parameter per id: sequence_ids=1\u0026sequence_ids=2","in":"query","name":"sequence_ids","required":true,"schema":{"items":{"type":"integer"},"type":"array"}},{"description":"Start date (inclusive, YYYY-MM-DD)","in":"query","name":"from_date","required":true,"schema":{"type":"string"}},{"description":"End date (inclusive, YYYY-MM-DD). The range from from_date to to_date can span at most 30 days","in":"query","name":"to_date","required":true,"schema":{"type":"string"}},{"description":"IANA time zone name, for example America/New_York, used to resolve the dates to start and end of day (default UTC)","in":"query","name":"timezone","schema":{"type":"string"}},{"description":"Restrict to one channel (default: both)","in":"query","name":"channel","schema":{"enum":["email","linkedin"],"type":"string"}},{"description":"Restrict to messages that were replied to, opened, bounced or had a link clicked. `opened`, `bounced` and `clicked` apply to email only. Out-of-office email replies are not counted as replies","in":"query","name":"engagement","schema":{"enum":["replied","opened","bounced","clicked"],"type":"string"}},{"description":"Only messages sent to these contacts, 1-50 unique ids. Repeat the parameter per id: lead_ids=a\u0026lead_ids=b","in":"query","name":"lead_ids","schema":{"items":{"type":"string"},"type":"array"}},{"description":"Only this kind of LinkedIn message. Emails are not returned when set","in":"query","name":"message_type","schema":{"enum":["message","inmail","connection_note"],"type":"string"}},{"description":"Only leads with this status in the sequence","in":"query","name":"lead_status","schema":{"enum":["active","paused","completed","failed","replied","out_of_office","unsubscribed","dnc","bounced","bounce-shield","company_limit_reached","stop_on_reply"],"type":"string"}},{"description":"Only messages sent from this sender profile","in":"query","name":"sender_profile_id","schema":{"type":"integer"}},{"description":"Sort by send time: oldest first or newest first (default asc)","in":"query","name":"order","schema":{"default":"asc","enum":["asc","desc"],"type":"string"}},{"description":"Value of `nextCursor` from the previous response, valid only in the same workspace. Send it back unchanged with the same filters and order. Omit for the first page","in":"query","name":"cursor","schema":{"type":"string"}},{"description":"Maximum messages per page","in":"query","name":"limit","schema":{"default":50,"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.MessageAnalyticsListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"408":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Request Timeout"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List sent messages","tags":["multichannel"]}},"/multichannel/workspaces/{workspaceID}/linkedin-magic-links":{"get":{"description":"Returns the active LinkedIn magic link for the workspace, or null when none exists. Share the `url` with someone to let them connect a LinkedIn account without handing over credentials to your integration.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.LinkedinMagicLinkResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get LinkedIn magic link","tags":["LinkedIn"]},"post":{"description":"Creates a LinkedIn magic link for the workspace (replacing any active link). Share the returned `url` so a recipient can connect their LinkedIn account. Links expire after 7 days.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}}],"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.LinkedinMagicLinkResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create LinkedIn magic link","tags":["LinkedIn"]}},"/multichannel/workspaces/{workspaceID}/linkedin-magic-links/{token}":{"delete":{"description":"Deactivates a LinkedIn magic link so it can no longer be used to connect an account.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Magic link token","in":"path","name":"token","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Magic link deactivated"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Deactivate LinkedIn magic link","tags":["LinkedIn"]}},"/multichannel/workspaces/{workspaceID}/linkedin-magic-links/{token}/extend":{"post":{"description":"Extends the expiry of an active LinkedIn magic link by 7 days from now.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Magic link token","in":"path","name":"token","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.LinkedinMagicLinkResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Extend LinkedIn magic link","tags":["LinkedIn"]}},"/multichannel/workspaces/{workspaceID}/linkedin/accounts":{"post":{"description":"Connects a LinkedIn account to the workspace using credentials and an optional proxy. A matching sender profile is created automatically. If LinkedIn issues a 2FA challenge, the response carries `requires2fa: true` and the caller must submit the code via the OTP endpoint.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.ConnectLinkedinAccountRequest","description":"LinkedIn account credentials and optional proxy","summary":"request"}]}}},"description":"LinkedIn account credentials and optional proxy","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.LinkedinAccountResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Payment Required"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Conflict"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Connect LinkedIn account","tags":["LinkedIn"]}},"/multichannel/workspaces/{workspaceID}/linkedin/accounts/{linkedinAccountID}":{"get":{"description":"Returns the current state of a LinkedIn account. Useful while polling a connection that is waiting on OTP.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"LinkedIn account ID","in":"path","name":"linkedinAccountID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.LinkedinAccountResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get LinkedIn account","tags":["LinkedIn"]}},"/multichannel/workspaces/{workspaceID}/linkedin/accounts/{linkedinAccountID}/disconnect":{"post":{"description":"Removes the provider connection while preserving the local account, history, and sender-profile association. Supports standalone accounts. Repeated disconnects succeed when the provider account is already absent.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"LinkedIn account ID","in":"path","name":"linkedinAccountID","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Disconnect LinkedIn account","tags":["LinkedIn"]}},"/multichannel/workspaces/{workspaceID}/linkedin/accounts/{linkedinAccountID}/otp":{"post":{"description":"Submits a one-time password to complete a LinkedIn account connection that is waiting on 2FA verification.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"LinkedIn account ID","in":"path","name":"linkedinAccountID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.SubmitLinkedinAccountOTPRequest","description":"OTP code","summary":"request"}]}}},"description":"OTP code","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.LinkedinAccountResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Conflict"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Submit LinkedIn account OTP","tags":["LinkedIn"]}},"/multichannel/workspaces/{workspaceID}/linkedin/accounts/{linkedinAccountID}/reconnect":{"post":{"description":"Reconnects an existing LinkedIn account with new credentials, preserving its ID, limits, history and any sender-profile association. Supports standalone accounts without creating a profile. An optional email must match the existing account. Complete any returned checkpoint through the existing account OTP endpoint.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"LinkedIn account ID","in":"path","name":"linkedinAccountID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.ReconnectLinkedinAccountRequest","description":"LinkedIn reconnection credentials","summary":"request"}]}}},"description":"LinkedIn reconnection credentials","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.LinkedinAccountResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Payment Required"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Conflict"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Reconnect LinkedIn account","tags":["LinkedIn"]}},"/multichannel/workspaces/{workspaceID}/sender-profiles":{"get":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Page","in":"query","name":"page","schema":{"minimum":1,"type":"integer"}},{"description":"Limit (max 100)","in":"query","name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SenderProfileListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List sender profiles","tags":["Sender Profiles"]},"post":{"description":"Creates a sender profile from mailboxes and/or an already-connected LinkedIn account. A profile with no sender attached is created in draft status.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.CreateSenderProfileRequest","description":"Create sender profile request","summary":"request"}]}}},"description":"Create sender profile request","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SenderProfileResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"LinkedIn account not found in the workspace"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"LinkedIn account already attached to another sender profile"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create sender profile","tags":["Sender Profiles"]}},"/multichannel/workspaces/{workspaceID}/sender-profiles/bulk":{"post":{"description":"Creates up to 100 sender profiles in one call. Entries are applied independently: the response reports per-entry success or failure, and a failing entry does not prevent the others from being created.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.BulkCreateSenderProfilesRequest","description":"Bulk create sender profiles request","summary":"request"}]}}},"description":"Bulk create sender profiles request","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.BulkCreateSenderProfilesResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Bulk create sender profiles","tags":["Sender Profiles"]}},"/multichannel/workspaces/{workspaceID}/sender-profiles/{senderProfileID}":{"delete":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sender profile ID","in":"path","name":"senderProfileID","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete sender profile","tags":["Sender Profiles"]},"patch":{"description":"Update name/mailboxes or attach an existing LinkedIn account to an unlinked profile. Repeating the same account ID is allowed; replacement returns 409. Omitted/null linkedinAccountId and omitted mailboxIds leave existing associations unchanged.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sender profile ID","in":"path","name":"senderProfileID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.UpdateSenderProfileRequest","description":"Update sender profile request","summary":"request"}]}}},"description":"Update sender profile request","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SenderProfileResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Conflict"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update sender profile","tags":["Sender Profiles"]}},"/multichannel/workspaces/{workspaceID}/sequences":{"get":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Page","in":"query","name":"page","schema":{"minimum":1,"type":"integer"}},{"description":"Limit (max 100)","in":"query","name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}},{"description":"Status","in":"query","name":"status","schema":{"enum":["draft","active","completed","paused"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SequenceListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List sequences","tags":["Sequences"]},"post":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.CreateSequenceRequest","description":"Create sequence request. The timezone field is required and accepts only IANA time zone names (e.g., America/New_York).","summary":"request"}]}}},"description":"Create sequence request. The timezone field is required and accepts only IANA time zone names (e.g., America/New_York).","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.CreateSequenceResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create sequence","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}":{"delete":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete sequence","tags":["Sequences"]},"get":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SequenceDetailsResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get sequence details","tags":["Sequences"]},"patch":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.UpdateSequenceRequest","description":"Update sequence request. Note: timezone fields accept only IANA time zone names (e.g., America/New_York).","summary":"request"}]}}},"description":"Update sequence request. Note: timezone fields accept only IANA time zone names (e.g., America/New_York).","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SequenceResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update sequence","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/analytics":{"get":{"description":"Returns per-day and aggregate email sending and engagement metrics for a multichannel sequence. Query dates are interpreted in `timezone` when provided (IANA name), otherwise UTC. Open and click metrics are zeroed when the sequence has those tracking modes disabled.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}},{"description":"Start date (inclusive, YYYY-MM-DD)","in":"query","name":"from_date","required":true,"schema":{"type":"string"}},{"description":"End date (inclusive, YYYY-MM-DD)","in":"query","name":"to_date","required":true,"schema":{"type":"string"}},{"description":"IANA timezone for day boundaries (default UTC)","in":"query","name":"timezone","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SequenceSendingAnalyticsResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Sequence email analytics (date range)","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/branches":{"get":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}},{"description":"Page","in":"query","name":"page","schema":{"minimum":1,"type":"integer"}},{"description":"Limit (max 100)","in":"query","name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.NodeBranchListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List sequence branches","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments":{"post":{"deprecated":true,"description":"Deprecated. Enrolls matching contacts immediately without conflict review. Use the enrollment preflight and confirmation endpoints for new integrations.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.AddEnrollmentsRequest","description":"Enrollment criteria.","summary":"request"}]}}},"description":"Enrollment criteria.","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.AddEnrollmentsResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"The validation run is not completed or partially completed, or it failed"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Add enrollments","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight":{"post":{"description":"Analyzes matching contacts before enrollment and creates a preflight that expires after 15 minutes. Returns candidate totals, conflicts, available source cleanup groups, and replied-contact information. validationRunId must reference a completed or partially completed validation run containing at least one contact.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.EnrollmentPreflightRequest","description":"Contact selection criteria and preflight options.","summary":"request"}]}}},"description":"Contact selection criteria and preflight options.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.EnrollmentPreflightResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/responses.ErrorResponse"},{"$ref":"#/components/schemas/responses.EnrollmentPreflightSelectionEmptyResponse"}]}}},"description":"Invalid request, including a completed or partially completed validation run with no selected contacts"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.EnrollmentPreflightValidationConflictResponse"}}},"description":"The validation run is not completed or partially completed, or it failed"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Preflight enrollments","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight/{preflightID}/confirm":{"post":{"description":"Applies a skip or move decision to a saved preflight. For each selected source, a draft enrollment is deleted; any other enrollment is set to completed and its pending steps are canceled. skipReplied is required for move decisions; true leaves replied contacts unenrolled. Contacts suppressed elsewhere by do-not-contact, unsubscribe, or bounce shield are enrolled with that status, are not contacted, and remain included in enrolledLeadIds and enrolledCount. A stale preflight returns 409 with a replacement preflight. A concurrent confirmation returns 423.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}},{"description":"Preflight ID","in":"path","name":"preflightID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.EnrollmentPreflightConfirmRequest","description":"Preflight decision to apply.","summary":"request"}]}}},"description":"Preflight decision to apply.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.EnrollmentPreflightConfirmResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.EnrollmentPreflightStaleResponse"}}},"description":"Conflict"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.EnrollmentAccountContactLimitResponse"}}},"description":"The confirmation would exceed the account contact limit"},"423":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.EnrollmentConfirmationBusyResponse"}}},"description":"Another enrollment confirmation is in progress for the account"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Confirm enrollment preflight","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/preflight/{preflightID}/move-preview":{"post":{"description":"Calculates the projected outcome of a move decision without changing enrollments. Returns projected enrollment, skip, and source cleanup counts with a skip-reason breakdown. A stale preflight returns 409 with a replacement preflight.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}},{"description":"Preflight ID","in":"path","name":"preflightID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.EnrollmentPreflightMovePreviewRequest","description":"Move decision to preview.","summary":"request"}]}}},"description":"Move decision to preview.","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.EnrollmentPreflightMovePreviewResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.EnrollmentPreflightStaleResponse"}}},"description":"Conflict"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Preview enrollment move","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/enrollments/remove":{"post":{"description":"Removes matching contacts from the sequence. Enrollment preflight is not required.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.RemoveEnrollmentsRequest","description":"Removal criteria.","summary":"request"}]}}},"description":"Removal criteria.","required":true},"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"The validation run is not completed or partially completed, or it failed"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Remove enrollments","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/launch":{"patch":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SequenceResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Launch sequence","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/leads":{"get":{"description":"Returns a page of leads enrolled in the sequence. Each item contains contact details, current enrollment state, and timeline steps in execution order.\nPagination applies to leads, including when filtering by leadIds. Each lead includes its available timeline without separate pagination.\nResults default to the most recently updated enrollments. Date filters use inclusive UTC dates and apply to the timestamp selected by sortBy.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"maximum":2147483647,"minimum":1,"type":"integer"}},{"description":"Page number","in":"query","name":"page","schema":{"default":1,"minimum":1,"type":"integer"}},{"description":"Items per page","in":"query","name":"limit","schema":{"default":20,"maximum":100,"minimum":1,"type":"integer"}},{"description":"Enrollment status","in":"query","name":"status","schema":{"type":"string"}},{"description":"Search lead name or email","in":"query","name":"q","schema":{"type":"string"}},{"description":"Only leads with recorded email opens","in":"query","name":"openedEmailsOnly","schema":{"type":"boolean"}},{"description":"Only leads moved to a subsequence","in":"query","name":"in_subsequence","schema":{"type":"boolean"}},{"description":"Comma-separated lead IDs","in":"query","name":"leadIds","schema":{"type":"string"}},{"description":"Sort by enrollment update, enrollment creation, or contact activity; also selects the timestamp used by from and to","in":"query","name":"sortBy","schema":{"default":"recently_updated","enum":["recently_contacted","least_recently_contacted","recently_updated","recently_added","oldest_added"],"type":"string"}},{"description":"Sort direction; defaults to desc. least_recently_contacted and oldest_added always use asc","in":"query","name":"sortOrder","schema":{"enum":["asc","desc"],"type":"string"}},{"description":"Inclusive start date in UTC (YYYY-MM-DD); requires to","in":"query","name":"from","schema":{"type":"string"}},{"description":"Inclusive end date in UTC (YYYY-MM-DD); requires from","in":"query","name":"to","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SequenceLeadListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List sequence leads","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/nodes":{"get":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}},{"description":"Node type","in":"query","name":"type","schema":{"enum":["action","condition","root","terminal"],"type":"string"}},{"description":"Channel","in":"query","name":"channel","schema":{"enum":["email","linkedin","inmail"],"type":"string"}},{"description":"Name","in":"query","name":"name","schema":{"type":"string"}},{"description":"Page","in":"query","name":"page","schema":{"minimum":1,"type":"integer"}},{"description":"Limit (max 100)","in":"query","name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.NodeListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List nodes","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/nodes/actions":{"post":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.CreateActionNodeRequest","description":"Create action node request","summary":"request"}]}}},"description":"Create action node request","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.NodeResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create action node","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/nodes/actions/{nodeID}":{"patch":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}},{"description":"Node ID","in":"path","name":"nodeID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.UpdateActionNodeRequest","description":"Update action node request","summary":"request"}]}}},"description":"Update action node request","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.NodeResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update action node","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/nodes/conditions":{"post":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.CreateConditionNodeRequest","description":"Create condition node request","summary":"request"}]}}},"description":"Create condition node request","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.NodeResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create condition node","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/nodes/{nodeID}":{"delete":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}},{"description":"Node ID","in":"path","name":"nodeID","required":true,"schema":{"type":"integer"}}],"responses":{"204":{"description":"No Content"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Delete node","tags":["Sequences"]},"get":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}},{"description":"Node ID","in":"path","name":"nodeID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.NodeResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get node","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/nodes/{nodeID}/spam-check":{"get":{"description":"Runs the sequence builder spam check on the stored subject and body of an email action node and returns the spam potential with a per-metric breakdown. Ratings (good, ok, bad) use the same thresholds as the builder. One result is returned per variant; variants with an empty subject and body are skipped. Read-only, the node is never modified.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}},{"description":"Node ID","in":"path","name":"nodeID","required":true,"schema":{"type":"integer"}},{"description":"Only check this variant of the node","in":"query","name":"variantId","schema":{"type":"integer"}},{"description":"Spam word dictionary, defaults to american_english","in":"query","name":"language","schema":{"enum":["american_english","british_english","spanish","french","german","italian","polish","russian","finnish","ukrainian"],"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.NodeSpamCheckResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Workspace, sequence, node or variant not found"},"422":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Node is not an email action node, or the email node has an empty subject and body"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Spam check email node","tags":["multichannel"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/schedule":{"get":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ScheduleResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get sequence schedule","tags":["Sequences"]},"put":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.UpdateScheduleRequest","description":"Update schedule request. Note: timezone fields accept only IANA time zone names (e.g., America/New_York).","summary":"request"}]}}},"description":"Update schedule request. Note: timezone fields accept only IANA time zone names (e.g., America/New_York).","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ScheduleResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update sequence schedule","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/sender-profiles":{"get":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}},{"description":"Page","in":"query","name":"page","schema":{"minimum":1,"type":"integer"}},{"description":"Limit (max 100)","in":"query","name":"limit","schema":{"maximum":100,"minimum":1,"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SenderProfileListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List sequence sender profiles","tags":["Sequences"]},"post":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.UpsertSequenceSenderProfilesRequest","description":"Upsert sender profiles request","summary":"request"}]}}},"description":"Upsert sender profiles request","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dto.SequenceSenderProfilesResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Upsert sequence sender profiles","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/sender-profiles/remove":{"post":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.RemoveSequenceSenderProfilesRequest","description":"Remove sender profiles request (max 50 IDs)","summary":"request"}]}}},"description":"Remove sender profiles request (max 50 IDs)","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/dto.SequenceSenderProfilesResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Remove sequence sender profiles","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/settings":{"get":{"deprecated":true,"description":"Deprecated. Use GET /multichannel/workspaces/{workspaceID}/sequences/{sequenceID}, which returns the same fields under settings.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SequenceSettingsResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get sequence settings","tags":["Sequences"]},"patch":{"deprecated":true,"description":"Deprecated. Use PATCH /multichannel/workspaces/{workspaceID}/sequences/{sequenceID} with a settings object.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.UpdateSequenceSettingsRequest","description":"Update sequence settings request","summary":"request"}]}}},"description":"Update sequence settings request","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SequenceSettingsResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update sequence settings","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/status":{"patch":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.UpdateSequenceStatusRequest","description":"Update sequence status request","summary":"request"}]}}},"description":"Update sequence status request","required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SequenceResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Update sequence status","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/sequences/{sequenceID}/subsequence-assignments":{"post":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Parent sequence ID","in":"path","name":"sequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.AssignSubsequenceRequest","description":"Assign subsequence request","summary":"request"}]}}},"description":"Assign subsequence request","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SubsequenceAssignmentResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Assign subsequence to parent sequence","tags":["Sequences"]}},"/multichannel/workspaces/{workspaceID}/subsequences/{subsequenceID}/members":{"get":{"description":"Returns current multichannel subsequence members with enrollment and latest handoff timestamps. Use leadId to check one contact without changing state.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Subsequence ID","in":"path","name":"subsequenceID","required":true,"schema":{"type":"integer"}},{"description":"Filter by contact lead ID","in":"query","name":"leadId","schema":{"type":"string"}},{"description":"Page number (default 1)","in":"query","name":"page","schema":{"type":"integer"}},{"description":"Page size (default 100, max 100)","in":"query","name":"limit","schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SubsequenceMemberListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List subsequence members","tags":["Subsequences"]}},"/multichannel/workspaces/{workspaceID}/subsequences/{subsequenceID}/parents":{"get":{"description":"Returns every active parent-sequence assignment for a multichannel subsequence.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Subsequence ID","in":"path","name":"subsequenceID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SubsequenceParentListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List subsequence parents","tags":["Subsequences"]}},"/multichannel/workspaces/{workspaceID}/subsequences/{subsequenceID}/triggers":{"get":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Subsequence ID","in":"path","name":"subsequenceID","required":true,"schema":{"type":"integer"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SubsequenceTriggerListResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"List subsequence triggers","tags":["Subsequences"]},"post":{"parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Subsequence ID","in":"path","name":"subsequenceID","required":true,"schema":{"type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.CreateSubsequenceTriggerRequest","description":"Create subsequence trigger request","summary":"request"}]}}},"description":"Create subsequence trigger request","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.SubsequenceTriggerResponse"}}},"description":"Created"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Not Found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Create subsequence trigger","tags":["Subsequences"]}},"/multichannel/workspaces/{workspaceID}/validations":{"post":{"description":"Starts asynchronous email validation for the contacts the filters resolve to.\n\nBefore returning, submission resolves and persists exact lead IDs and emails after filters,\nexclusions, sequence scope, deduplication, and the effective limit. The exact selected count\nis checked against current credits; insufficient credits return 402 without creating a run.\nNon-empty runs return pending. Empty selections return a terminal failed run with\nfailureCode validation_scope_empty. The deprecated strict field is accepted and ignored.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"type":"object"},{"$ref":"#/components/schemas/requests.StartValidationRunRequest","description":"Start validation run request","summary":"request"}]}}},"description":"Start validation run request","required":true},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.StartValidationRunResponse"}}},"description":"Validation initiated"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Insufficient email-validation credits"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Start validation run","tags":["Validations"]}},"/multichannel/workspaces/{workspaceID}/validations/{runID}/results":{"get":{"description":"Poll until status is completed, partially_completed, or failed. Counts are provisional\nbefore a terminal status and authoritative afterward. Failed runs include a stable failureCode.\nInternal processing error text is never exposed by this public endpoint.","parameters":[{"description":"Workspace ID","in":"path","name":"workspaceID","required":true,"schema":{"type":"string"}},{"description":"Validation run ID","in":"path","name":"runID","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ValidationRunSummaryResponse"}}},"description":"OK"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Bad Request"},"401":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Unauthorized"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Forbidden"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/responses.ErrorResponse"}}},"description":"Internal Server Error"}},"security":[{"ApiKeyAuth":[]}],"summary":"Get validation run results","tags":["Validations"]}}},"security":[{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]},{"ApiKeyAuth":[]}],"servers":[{"url":"https://multichannel-api.salesforge.ai/public"}]}