{"openapi":"3.1.0","info":{"title":"PRAPI API","version":"v1","description":"Bearer-authed REST API for PRAPI. This spec is DERIVED from the route zod schemas (single source of truth). Coverage expands per resource group — api-keys is the pilot group (#1933)."},"servers":[{"url":"https://app.prapi.dev/api/v1"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"PRAPI API key as a bearer token: `Authorization: Bearer prapi_<key>`."}},"schemas":{"ApiKey":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"userId":{"type":"string","format":"uuid"},"name":{"type":"string"},"keyPrefix":{"type":"string","description":"Non-secret prefix shown to identify the key."},"createdAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":["string","null"],"format":"date-time"},"expiresAt":{"type":["string","null"],"format":"date-time"},"revokedAt":{"type":["string","null"],"format":"date-time"}},"required":["id","userId","name","keyPrefix","createdAt","lastUsedAt","expiresAt","revokedAt"],"description":"An API key record. Never includes the plaintext key."},"ListApiKeysResponse":{"type":"object","properties":{"count":{"type":"integer"},"keys":{"type":"array","items":{"$ref":"#/components/schemas/ApiKey"}}},"required":["count","keys"]},"CreateApiKeyResponse":{"type":"object","properties":{"key":{"$ref":"#/components/schemas/ApiKey"},"plain_text":{"type":"string","description":"The plaintext key. Returned ONCE on creation; never retrievable again."},"warning":{"type":"string"}},"required":["key","plain_text","warning"]},"CreateApiKeyRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"expires_in_days":{"type":"integer","minimum":1,"maximum":3650,"description":"Optional expiry in days (1–3650). Omit for a non-expiring key."}},"required":["name"]},"RevokeApiKeyResponse":{"type":"object","properties":{"revoked":{"type":"boolean"},"key_id":{"type":"string"}},"required":["revoked","key_id"]},"WhoamiResponse":{"type":"object","properties":{"user_id":{"type":"string","format":"uuid"},"email":{"type":"string"},"active":{"type":"boolean"},"auth_source":{"type":"string","enum":["apiKey","session"],"description":"How the request authenticated: a bearer API key or an Entra session."},"api_key_id":{"type":["string","null"],"format":"uuid","description":"The API-key id when auth_source is apiKey; null for a session."}},"required":["user_id","email","active","auth_source","api_key_id"],"description":"The authenticated principal."},"OperatorMetrics":{"type":"object","properties":{"windowDays":{"type":"integer"},"windowStart":{"type":"string"},"windowEnd":{"type":"string"},"pitchFunnel":{"type":"object","properties":{},"description":"Pitch funnel counts (queries → drafts → sent → landed)."},"pitchTiming":{"type":"object","properties":{},"description":"Time-to-X medians across the pitch lifecycle."},"pitchThroughput":{"type":"object","properties":{},"description":"Per-period pitch throughput."},"pitchQuality":{"type":"object","properties":{},"description":"Pitch quality signals (scores, gate outcomes)."},"adjacent":{"type":"object","properties":{},"description":"Adjacent-surface activity (content, X, calendar)."}},"required":["windowDays","windowStart","windowEnd","pitchFunnel","pitchTiming","pitchThroughput","pitchQuality","adjacent"],"description":"Operator time-study roll-up over the chosen window."},"SourceResearchRequest":{"type":"object","properties":{"angle":{"type":"string","minLength":3,"maxLength":500},"outletHint":{"type":"string","maxLength":120},"maxResults":{"type":"integer","minimum":1,"maximum":10}},"required":["angle"]},"BacklinkSendResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"opportunityId":{"type":"string"},"messageId":{"type":"string"},"recipient":{"type":"string"},"sentAt":{"type":"string","format":"date-time"},"trackingToken":{"type":"string"},"sequence":{"description":"Follow-up sequence state, if enrolled."},"sequenceError":{"type":["string","null"]},"warning":{"type":"string"}},"required":["ok","opportunityId","messageId","recipient","sentAt","trackingToken","sequenceError"]},"BacklinkSendRequest":{"type":"object","properties":{"to":{"type":"string","maxLength":320,"format":"email","description":"Override recipient; defaults to the opportunity contact."},"subject":{"type":"string","minLength":1,"maxLength":998}},"required":["subject"]},"OutletLayerResponse":{"type":"object","properties":{"domain":{"type":"string"},"classified":{"type":"boolean"},"cacheRow":{"type":"boolean"},"layer":{"type":["integer","null"],"description":"5-layer taxonomy position (1–5), null when unclassified."},"confidence":{"type":["number","null"]},"rationale":{"type":["string","null"]},"classifiedAt":{"type":["string","null"],"format":"date-time"}},"required":["domain","classified","cacheRow","layer","confidence","rationale","classifiedAt"]},"NotificationsListResponse":{"type":"object","properties":{"count":{"type":"integer"},"unreadCount":{"type":"integer"},"notifications":{"type":"array","items":{"type":"object","properties":{},"description":"A notification feed row."}}},"required":["count","unreadCount","notifications"]},"MarkNotificationReadResponse":{"type":"object","properties":{"ok":{"type":"boolean"},"updated":{"type":"boolean"}},"required":["ok","updated"]},"XReplyTarget":{"type":"object","properties":{"id":{"type":"string"},"tweet_id":{"type":"string"},"author_handle":{"type":"string"},"author_name":{"type":["string","null"]},"tweet_text":{"type":"string"},"tweet_url":{"type":"string"},"tweet_created_at":{"type":["string","null"],"format":"date-time"},"score":{"type":["number","null"]},"topic":{"type":["string","null"]},"rationale":{"type":["string","null"]},"draft_reply":{"type":["string","null"]},"drafted_at":{"type":["string","null"],"format":"date-time"},"ingested_at":{"type":"string","format":"date-time"}},"required":["id","tweet_id","author_handle","author_name","tweet_text","tweet_url","tweet_created_at","score","topic","rationale","draft_reply","drafted_at","ingested_at"]},"XRepliesListResponse":{"type":"object","properties":{"count":{"type":"integer"},"minScore":{"type":"number"},"onePerHandle":{"type":"boolean","description":"Whether the list was collapsed to one target per author handle."},"items":{"type":"array","items":{"$ref":"#/components/schemas/XReplyTarget"}}},"required":["count","minScore","onePerHandle","items"]},"OkResponse":{"type":"object","properties":{"ok":{"type":"boolean"}},"required":["ok"]},"XReplyDismissRequest":{"type":"object","properties":{"reason":{"type":"string","description":"Optional dismissal reason (calibrates the scorer)."}}},"XReplyPostedRequest":{"type":"object","properties":{"postedReplyUrl":{"type":"string","format":"uri","description":"URL of the posted reply (accepts posted_reply_url too)."}}},"SignalStatusRequest":{"type":"object","properties":{"status":{"type":"string","enum":["acknowledged","acted","dismissed"]}},"required":["status"]},"RoadmapMilestoneRequest":{"type":"object","properties":{"kind":{"type":"string","enum":["shipped","slipped"]},"milestoneSlug":{"type":"string","minLength":1,"maxLength":120},"milestoneName":{"type":"string","minLength":1,"maxLength":255},"note":{"type":["string","null"],"maxLength":2000},"previousState":{"type":["string","null"],"maxLength":255},"newState":{"type":["string","null"],"maxLength":255}},"required":["kind","milestoneSlug","milestoneName"]},"PitchBrandIdBody":{"type":"object","properties":{"brandId":{"type":"string","format":"uuid"}},"required":["brandId"]},"PitchOverrideBody":{"type":"object","properties":{"brandId":{"type":"string","format":"uuid"},"gate":{"type":"string","description":"The quality gate being overridden."},"justification":{"type":"string"}},"required":["brandId","gate"]},"PitchPolishBody":{"type":"object","properties":{"brandId":{"type":"string","format":"uuid"},"angleTitle":{"type":"string"},"angleSummary":{"type":"string"},"founderInput":{"type":"string"}},"required":["brandId","angleTitle","founderInput"]},"PitchWaveBody":{"type":"object","properties":{"brandId":{"type":"string","format":"uuid"},"journalistId":{"type":"string"}},"required":["brandId"]},"PitchDismissBody":{"type":"object","properties":{"queryIds":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":200},"dismissed":{"type":"boolean"},"reason":{"type":["string","null"]},"reasonNote":{"type":["string","null"],"maxLength":500}},"required":["queryIds"]},"DeepDiveBody":{"type":"object","properties":{"respondentId":{"type":"string","format":"uuid"},"reportId":{"type":"string","format":"uuid"},"deliveryTier":{"type":"string","enum":["automated","human_reviewed"]}},"required":["respondentId","reportId"]},"RecurringPromptBody":{"type":"object","properties":{"respondentId":{"type":"string","format":"uuid"}},"required":["respondentId"]},"CreateBrandBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"slug":{"type":"string"},"bio":{"type":"string","minLength":20,"maxLength":8000},"voice":{"type":["string","null"],"maxLength":8000}},"required":["name","bio"]},"PatchBrandBody":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":100},"bio":{"type":"string","minLength":20,"maxLength":8000},"voice":{"type":["string","null"],"maxLength":8000},"aeoDigestEmailEnabled":{"type":"boolean"}}},"NewsletterSubscribeBody":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email"},"optInSource":{"type":"string","maxLength":60}},"required":["email"]},"PublishingTargetBody":{"type":"object","properties":{"adapter":{"type":"string","minLength":1,"maxLength":50},"config":{"description":"Adapter-specific config; shape validated server-side."},"enabled":{"type":"boolean"}},"required":["adapter"]},"VisibilityConfigBody":{"type":"object","properties":{"queries":{"type":"array","items":{"type":"string"},"maxItems":50},"brandDomains":{"type":"array","items":{"type":"string"},"maxItems":50},"competitorDomains":{"type":"array","items":{"type":"string"},"maxItems":50},"countries":{"type":"array","items":{"type":"string"},"maxItems":50}}},"AioGenerateBody":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":200},"platform":{"type":"string","enum":["google","chat_gpt"]}},"required":["query","platform"]},"AioPublishBody":{"type":"object","properties":{"url":{"type":"string","maxLength":1000,"format":"uri"}},"required":["url"]},"BriefPushBody":{"type":"object","properties":{"rawContent":{"type":"string","minLength":20,"maxLength":200000},"documentType":{"type":"string","enum":["brand-brief","operator-brief"]}},"required":["rawContent"]},"BriefPublishBody":{"type":"object","properties":{"documentType":{"type":"string","enum":["brand-brief","operator-brief"]},"commitMessage":{"type":"string","minLength":1,"maxLength":500},"authorName":{"type":"string","minLength":1,"maxLength":120},"authorEmail":{"type":"string","maxLength":200,"format":"email"}}},"BriefValidateBody":{"type":"object","properties":{"rawContent":{"type":"string","minLength":20,"maxLength":200000},"documentType":{"type":"string","enum":["brand-brief","operator-brief"]}},"required":["rawContent"]},"BriefSectionPatchBody":{"type":"object","properties":{"sectionMarkdown":{"type":"string","minLength":4,"maxLength":80000},"documentType":{"type":"string","enum":["brand-brief","operator-brief"]}},"required":["sectionMarkdown"]},"BriefConflictResolveBody":{"type":"object","properties":{"strategy":{"type":"string","enum":["keep-db","keep-git"]},"documentType":{"type":"string","enum":["brand-brief","operator-brief"]}},"required":["strategy"]},"BriefConflictResolveSectionsBody":{"type":"object","properties":{"resolutions":{"type":"array","items":{"type":"object","properties":{"section":{"type":"string","minLength":1},"choose":{"type":"string","enum":["db","git"]}},"required":["section","choose"]},"minItems":1},"documentType":{"type":"string","enum":["brand-brief","operator-brief"]}},"required":["resolutions"]},"BriefProposalResolveBody":{"type":"object","properties":{"status":{"type":"string","enum":["confirmed","rejected"]}},"required":["status"]},"CaptureCredentialingVipBody":{"type":"object","properties":{"name":{"type":"string"},"linkedInUrl":{"type":"string"},"rawText":{"type":"string"},"company":{"type":["string","null"]},"channel":{"type":"string"},"reason":{"type":"string"}},"required":["name","linkedInUrl","rawText"]},"CreateResearchBriefBody":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"topic":{"type":"string","description":"One of the BRIEF_TOPICS values."},"question":{"type":"string","minLength":1},"context":{"type":"string","minLength":1},"whatRespondentsGet":{"type":"string","minLength":1},"submissionFormat":{"type":"string","description":"One of the SUBMISSION_FORMATS values."}},"required":["title","topic","question","context","whatRespondentsGet","submissionFormat"]},"UpdateResearchBriefBody":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"topic":{"type":"string","description":"One of the BRIEF_TOPICS values."},"question":{"type":"string","minLength":1},"context":{"type":"string","minLength":1},"submissionFormat":{"type":"string","description":"One of the SUBMISSION_FORMATS values."},"wordLimit":{"type":["integer","null"],"exclusiveMinimum":0,"maximum":10000},"submissionDeadline":{"type":"string","format":"date-time"}}},"DistributionCreateBody":{"type":"object","properties":{"channel":{"type":"string","description":"One of the DISTRIBUTION_CHANNELS values."},"customChannelName":{"type":["string","null"],"maxLength":120},"externalUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"},"externalId":{"type":["string","null"],"maxLength":255},"postingMethod":{"type":"string","description":"One of the POSTING_METHODS values."},"status":{"type":"string","description":"One of the DISTRIBUTION_STATUSES values."}},"required":["channel"]},"ResearchSubmissionCreateBody":{"type":"object","properties":{"rawText":{"type":"string","minLength":1,"maxLength":20000},"intakeSource":{"type":"string","description":"One of the INTAKE_SOURCES values."},"respondent":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255},"email":{"type":["string","null"],"maxLength":255,"format":"email"},"company":{"type":["string","null"],"maxLength":255}},"required":["name"]}},"required":["rawText","respondent"]},"CloseIntakeBody":{"type":"object","properties":{"manualClose":{"type":"boolean"}}},"BriefSanctionBody":{"type":"object","properties":{"sanctioned":{"type":"boolean"},"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["sanctioned","reason"]},"ChecklistCheckBody":{"type":"object","properties":{"checkpointKey":{"type":"string","minLength":1,"maxLength":60},"note":{"type":["string","null"],"maxLength":2000}},"required":["checkpointKey"]},"MulticastBody":{"type":"object","properties":{"variantKeys":{"type":"array","items":{"type":"string","minLength":1},"minItems":1,"maxItems":30}},"required":["variantKeys"]},"CreateReportBody":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255}},"required":["title"]},"FlaggedGapsBody":{"type":"object","properties":{"gaps":{"type":"array","items":{"type":"object","properties":{"gap":{"type":"string","minLength":1,"maxLength":200},"note":{"type":"string","maxLength":500}},"required":["gap"]}}},"required":["gaps"]},"TopicClustersBody":{"type":"object","properties":{"topicClusters":{"type":"array","items":{"type":"string","minLength":1,"maxLength":80},"maxItems":20}},"required":["topicClusters"]},"CreateTopicBody":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"cluster":{"type":"string","description":"One of TOPIC_CLUSTERS."},"reportType":{"type":"string","description":"One of TOPIC_REPORT_TYPES."},"notes":{"type":["string","null"]}},"required":["title","cluster","reportType"]},"DistributionPatchBody":{"type":"object","properties":{"externalUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"},"externalId":{"type":["string","null"],"maxLength":255},"customChannelName":{"type":["string","null"],"maxLength":120},"status":{"type":"string","description":"One of DISTRIBUTION_STATUSES."},"errorDetail":{"type":["string","null"],"maxLength":2000},"impressionCount":{"type":["integer","null"],"minimum":0},"impressionSource":{"type":["string","null"],"description":"One of IMPRESSION_SOURCES."}}},"ReportPatchBody":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255},"abstract":{"type":"string"},"bodyMarkdown":{"type":"string"},"methodologyMarkdown":{"type":"string"}}},"AddCitationsBody":{"type":"object","properties":{"submissionIds":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":200}},"required":["submissionIds"]},"ConversionAppendBody":{"type":"object","properties":{"eventType":{"type":"string","description":"One of CONVERSION_EVENT_TYPES."},"respondentEmail":{"type":["string","null"],"maxLength":255,"format":"email"},"respondentId":{"type":["string","null"],"format":"uuid"},"userId":{"type":["string","null"],"format":"uuid"}},"required":["eventType"]},"ExposureAppendBody":{"type":"object","properties":{"eventType":{"type":"string","description":"One of EXPOSURE_EVENT_TYPES."},"surface":{"type":["string","null"],"maxLength":120},"sourceUrl":{"type":["string","null"],"maxLength":2048,"format":"uri"},"occurredAt":{"type":"string","format":"date-time"}},"required":["eventType"]},"ReportApproveBody":{"type":"object","properties":{"note":{"type":["string","null"],"maxLength":2000}}},"ReportUnapproveBody":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["reason"]},"ReportPublishBody":{"type":"object","properties":{"override":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":2000}},"required":["reason"]}}},"SubmissionRejectBody":{"type":"object","properties":{"reason":{"type":"string","minLength":1,"maxLength":500}},"required":["reason"]},"EngagementBody":{"type":"object","properties":{"eventType":{"type":"string","description":"One of ENGAGEMENT_EVENT_TYPES."},"briefId":{"type":["string","null"],"format":"uuid"},"eventSourceUrl":{"type":["string","null"],"maxLength":500,"format":"uri"},"notes":{"type":["string","null"],"maxLength":4000},"eventValue":{"type":["number","null"]}},"required":["eventType"]},"ConsentBody":{"type":"object","properties":{"consentType":{"type":"string","description":"One of CONSENT_TYPES."},"status":{"type":"string","description":"One of CONSENT_STATUSES."}},"required":["consentType","status"]},"PanelOptInBody":{"type":"object","properties":{"optedIn":{"type":"boolean"}},"required":["optedIn"]},"CitedPreviewSendBody":{"type":"object","properties":{"briefSlug":{"type":"string","minLength":1,"maxLength":120},"submissionId":{"type":"string","format":"uuid"},"quoteAsCited":{"type":"string","minLength":1,"maxLength":8000},"publishDateLabel":{"type":"string","minLength":1,"maxLength":60},"reportTitle":{"type":["string","null"],"maxLength":255},"windowHours":{"type":"integer","minimum":1,"maximum":168},"apply":{"type":"boolean"}},"required":["briefSlug","submissionId","quoteAsCited","publishDateLabel"]},"OutreachSendBody":{"type":"object","properties":{"newBriefSlug":{"type":"string","minLength":1,"maxLength":120},"templateKey":{"type":"string","enum":["tier_1_intro","tier_2_intro","prior_brief_invite"]},"respondentId":{"type":"string","format":"uuid"},"apply":{"type":"boolean"},"snippetOverride":{"type":["string","null"],"maxLength":2000},"cohortOverride":{"type":["string","null"],"maxLength":500},"askOverride":{"type":["string","null"],"maxLength":500}},"required":["newBriefSlug","templateKey","respondentId"]},"CalendarEngagementBody":{"type":"object","properties":{"channel":{"type":"string","description":"One of the CHANNELS values (blog, linkedin_personal/company/carousel, x_post, newsletter, …)."},"provider":{"type":"string"},"externalPostId":{"type":["string","null"],"maxLength":255},"impressions":{"type":["integer","null"],"minimum":0},"clicks":{"type":["integer","null"],"minimum":0},"likes":{"type":["integer","null"],"minimum":0},"comments":{"type":["integer","null"],"minimum":0}},"required":["channel","provider"]},"CalendarPublishTestBody":{"type":"object","properties":{"recipientEmail":{"type":"string","maxLength":320,"format":"email"}},"required":["recipientEmail"]},"CalendarPublishFieldsBody":{"type":"object","properties":{"fields":{"type":"object","additionalProperties":{}}},"required":["fields"]},"CalendarRescheduleBody":{"type":"object","properties":{"slotDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},"required":["slotDate"]},"CalendarStatusBody":{"type":"object","properties":{"status":{"type":"string","description":"One of CALENDAR_STATUSES."},"notes":{"type":"string","maxLength":2000}},"required":["status"]},"CalendarReviewerBody":{"type":"object","properties":{"memberId":{"type":"string","format":"uuid"}},"required":["memberId"]},"SlotExistingBody":{"type":"object","properties":{"taskId":{"type":"string","format":"uuid"},"draftId":{"type":"string","format":"uuid"},"slotDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"channel":{"type":"string","description":"One of the CHANNELS values (blog, linkedin_personal/company/carousel, x_post, newsletter, …)."}},"required":["taskId","draftId","slotDate","channel"]},"SlotGenerateBody":{"type":"object","properties":{"brandId":{"type":"string","format":"uuid"},"topic":{"type":"string","minLength":3,"maxLength":500},"slotDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"channel":{"type":"string","description":"One of the CHANNELS values (blog, linkedin_personal/company/carousel, x_post, newsletter, …)."}},"required":["brandId","topic","slotDate"]},"SlotRecurringBody":{"type":"object","properties":{"brandId":{"type":"string","format":"uuid"},"topic":{"type":"string","minLength":3,"maxLength":500},"startDate":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"weeks":{"type":"integer","minimum":1,"maximum":26}},"required":["brandId","topic","startDate","weeks"]},"StrategyGenerateBody":{"type":"object","properties":{"brandId":{"type":"string","format":"uuid"},"weeks":{"type":"integer","minimum":1,"maximum":12},"intent":{"type":"string","maxLength":500}},"required":["brandId","weeks"]},"StrategyCommitBody":{"type":"object","properties":{"planId":{"type":"string","maxLength":120},"slots":{"type":"array","items":{"type":"object","properties":{"brandId":{"type":"string","format":"uuid"},"date":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"channel":{"type":"string","description":"One of the CHANNELS values (blog, linkedin_personal/company/carousel, x_post, newsletter, …)."},"topic":{"type":"string","minLength":3,"maxLength":500},"audienceNote":{"type":"string","maxLength":500},"rationale":{"type":"string","maxLength":2000}},"required":["brandId","date","channel","topic"]}}},"required":["slots"]},"InboxActionBody":{"type":"object","properties":{"touchId":{"type":"string","format":"uuid"},"action":{"type":"string","enum":["resume","suppress","mark_engaged"]},"rescheduleHours":{"type":"integer","minimum":1,"maximum":720}},"required":["touchId","action"]},"OutboundEnrollBody":{"type":"object","properties":{"sequenceId":{"type":"string","format":"uuid"},"prospectIds":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":500}},"required":["sequenceId","prospectIds"]},"AddProspectBody":{"type":"object","properties":{"brandSlug":{"type":"string","minLength":1},"email":{"type":"string","format":"email"},"name":{"type":["string","null"]},"title":{"type":["string","null"]},"company":{"type":["string","null"]}},"required":["brandSlug","email"]},"BulkProspectBody":{"type":"object","properties":{"action":{"type":"string","enum":["suppress","unsuppress","delete"]},"prospectIds":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":1000},"reason":{"type":"string","enum":["manual","reply_negative","compliance"]}},"required":["action","prospectIds"]},"ProspectEnrollBody":{"type":"object","properties":{"sequenceId":{"type":"string","format":"uuid"},"prospectIds":{"type":"array","items":{"type":"string","format":"uuid"},"minItems":1,"maxItems":500}},"required":["sequenceId","prospectIds"]},"ProspectImportBody":{"type":"object","properties":{"brandSlug":{"type":"string","minLength":1},"csvText":{"type":"string","minLength":1}},"required":["brandSlug","csvText"]},"OutboundSequenceBody":{"type":"object","properties":{"brandSlug":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"maxLength":200},"motion":{"type":"string","description":"One of MOTION_VALUES."},"steps":{"type":"array","items":{"type":"object","properties":{"channel":{"type":"string","description":"One of CHANNEL_VALUES."},"delayDays":{"type":"integer","minimum":0,"maximum":365}},"required":["channel","delayDays"]}}},"required":["brandSlug","name"]},"SequenceStatusBody":{"type":"object","properties":{"action":{"type":"string","enum":["pause","activate","archive"]}},"required":["action"]},"TouchResumeBody":{"type":"object","properties":{"hours":{"type":"integer","minimum":0,"maximum":720}}},"TouchSentBody":{"type":"object","properties":{"pastedText":{"type":"string","minLength":10},"override":{"type":"boolean"}},"required":["pastedText"]},"SetSenderBody":{"type":"object","properties":{"email":{"type":"string","maxLength":320,"format":"email"},"displayName":{"type":["string","null"],"minLength":1,"maxLength":200}},"required":["email"]},"AgentChatBody":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"AgentChatStreamBody":{"type":"object","properties":{"message":{"type":"string"}},"required":["message"]},"OnboardingStartBody":{"type":"object","properties":{"brandName":{"type":"string","minLength":1,"maxLength":80},"sources":{"type":"object","properties":{"newsletterUrl":{"type":"string","format":"uri"},"linkedinUrl":{"type":"string","format":"uri"},"additionalUrls":{"type":"array","items":{"type":"string","format":"uri"},"maxItems":3}}},"tier":{"type":"string","enum":["free","full"]}}},"ContentCitationsBody":{"type":"object","properties":{"citations":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":2000},"claimText":{"type":"string","minLength":1,"maxLength":2000},"verified":{"type":"boolean"}},"required":["source","claimText","verified"]},"maxItems":50}},"required":["citations"]},"DraftSendBody":{"type":"object","properties":{"to":{"type":"string","maxLength":320,"format":"email"},"subject":{"type":"string","minLength":1,"maxLength":998},"body":{"type":"string","minLength":1,"maxLength":50000}}},"LogPitchBody":{"type":"object","properties":{"brand_id":{"type":"string","format":"uuid"},"outlet_name":{"type":["string","null"],"maxLength":255},"recipient_email":{"type":["string","null"],"maxLength":320,"format":"email"},"subject":{"type":["string","null"],"maxLength":500},"body_text":{"type":"string","minLength":1,"maxLength":50000}},"required":["brand_id","body_text"]},"LogPitchPatchBody":{"type":"object","properties":{"outlet_name":{"type":["string","null"],"maxLength":255},"subject":{"type":["string","null"],"maxLength":500},"body_text":{"type":"string","minLength":1,"maxLength":50000},"landed_url":{"type":["string","null"],"maxLength":2048,"format":"uri"},"landed_at":{"type":["string","null"],"format":"date-time"}}},"LogPitchTopicBody":{"type":"object","properties":{"topic_cluster":{"type":["string","null"],"minLength":1,"maxLength":64},"assigned_by":{"type":"string","enum":["auto","customer","operator"]}},"required":["topic_cluster"]},"LogPitchIndexBody":{"type":"object","properties":{"delay_days":{"type":"integer","minimum":0,"maximum":365},"eligibility_gate":{"type":"string","enum":["landed","advanced_unlanded","manual_operator_override"]},"outlet_visibility":{"type":"string","enum":["hidden","outlet_only"]},"topic_cluster":{"type":["string","null"],"minLength":1,"maxLength":64},"topic_assigned_by":{"type":"string","enum":["auto","customer","operator"]}}},"CoverageCandidate":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"brandId":{"type":"string","format":"uuid"},"brandName":{"type":"string"},"outlet":{"type":["string","null"]},"title":{"type":["string","null"]},"publishedUrl":{"type":"string"},"status":{"type":"string","enum":["detected","emailed","confirmed","rejected","expired","suppressed"]},"verifyStatus":{"type":"string","enum":["pending","verified","unverified","http_error"]},"confidence":{"type":"integer","description":"0-100 detection confidence."},"detectedAt":{"type":"string","format":"date-time"},"emailSentAt":{"type":["string","null"],"format":"date-time"}},"required":["id","brandId","brandName","outlet","title","publishedUrl","status","verifyStatus","confidence","detectedAt","emailSentAt"],"description":"A piece of detected brand coverage awaiting (or past) operator confirmation."},"ListCoverageCandidatesResponse":{"type":"object","properties":{"count":{"type":"integer"},"candidates":{"type":"array","items":{"$ref":"#/components/schemas/CoverageCandidate"}}},"required":["count","candidates"]},"CoverageVerdictResponse":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"outcome":{"type":"string","enum":["confirmed","rejected","already_done","not_found"]}},"required":["id","outcome"]},"VoiceProfile":{"type":"object","properties":{"toneAxes":{"type":"array","items":{"type":"string"},"description":"3-5 tone adjectives (e.g. \"direct\", \"dry-humor\")."},"avgSentenceLength":{"type":"number","description":"Weighted average sentence length, in words."},"sentencePatterns":{"type":"array","items":{"type":"string"},"description":"Structural habits (e.g. \"leads with imperatives\")."},"bannedPhrases":{"type":"array","items":{"type":"string"},"description":"Corporate-speak this voice would never use."},"signaturePhrases":{"type":"array","items":{"type":"string"},"description":"Words/phrases the voice repeats."},"punctuationRhythm":{"type":"string","description":"One-line description of punctuation patterns."},"capitalization":{"type":"string","description":"One-line description of capitalization patterns."},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"sourceType":{"type":"string","enum":["newsletter","linkedin","blog","about"]},"weight":{"type":"number"},"sampledChars":{"type":"integer"}},"required":["url","sourceType","weight","sampledChars"]},"description":"Per-sample contribution (label, weight, chars analyzed)."},"costUsd":{"type":"number","description":"LLM cost of this extraction."}},"required":["toneAxes","avgSentenceLength","sentencePatterns","bannedPhrases","signaturePhrases","punctuationRhythm","capitalization","sources","costUsd"],"description":"A brand-voice profile extracted from one or more writing samples."},"VoiceExtractResponse":{"type":"object","properties":{"ok":{"type":"boolean","enum":[true]},"profile":{"$ref":"#/components/schemas/VoiceProfile"},"costUsd":{"type":"number"}},"required":["ok","profile","costUsd"]},"VoiceExtractRequest":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":20000,"description":"A single writing sample. Provide this OR `samples`."},"samples":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":20000},"sourceType":{"type":"string","enum":["newsletter","linkedin","blog","about"],"description":"Weighting hint (newsletter=4 > linkedin=3 > blog=2 > about=1). Defaults to blog."}},"required":["text"]},"minItems":1,"maxItems":7,"description":"Up to 7 weighted samples from one brand. Provide this OR `text`."}}}},"parameters":{}},"paths":{"/api-keys":{"get":{"summary":"List the caller's API keys (no plaintext).","tags":["api-keys"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"The keys for the authenticated caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListApiKeysResponse"}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Create a new API key. The plaintext is returned ONCE.","tags":["api-keys"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyRequest"}}}},"responses":{"201":{"description":"The created key, with its plaintext (shown once).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateApiKeyResponse"}}}},"400":{"description":"Invalid body (name required 1–100 chars; expires_in_days 1–3650)."},"401":{"description":"Missing or invalid bearer token."}}}},"/api-keys/{id}":{"delete":{"summary":"Revoke an API key.","tags":["api-keys"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The key was revoked.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RevokeApiKeyResponse"}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"No such key for the caller."},"409":{"description":"Cannot revoke the key authenticating this request."}}}},"/whoami":{"get":{"summary":"Identify the authenticated principal (id, email, auth source).","tags":["account"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"The authenticated caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WhoamiResponse"}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/metrics/operator":{"get":{"summary":"Operator metrics roll-up (pitch funnel + time-to-X medians + adjacent surfaces).","tags":["metrics"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"integer","minimum":1,"maximum":90},"required":false,"name":"days","in":"query"}],"responses":{"200":{"description":"The metrics roll-up.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperatorMetrics"}}}},"400":{"description":"invalid_days (must be 1–90)."},"401":{"description":"Missing or invalid bearer token."}}}},"/source-research":{"post":{"summary":"Just-in-time source research for an angle (no stored journalist directory).","tags":["source-research"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SourceResearchRequest"}}}},"responses":{"200":{"description":"JIT research result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Just-in-time source-research result."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/backlinks/opportunities/{id}/send":{"post":{"summary":"Send a backlink-outreach email for an opportunity.","tags":["backlinks"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacklinkSendRequest"}}}},"responses":{"200":{"description":"Sent.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacklinkSendResponse"}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Opportunity not found."}}}},"/outlets/{domain}/layer":{"get":{"summary":"5-layer outlet-taxonomy lookup for a domain.","tags":["outlets"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"domain","in":"path"}],"responses":{"200":{"description":"The outlet layer (or an unclassified placeholder).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutletLayerResponse"}}}},"400":{"description":"domain required."},"401":{"description":"Missing or invalid bearer token."}}}},"/notifications":{"get":{"summary":"List the caller's notification feed + unread count.","tags":["notifications"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"The feed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NotificationsListResponse"}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/notifications/{id}/read":{"post":{"summary":"Mark a notification read.","tags":["notifications"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Marked read.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarkNotificationReadResponse"}}}},"400":{"description":"Invalid id."},"401":{"description":"Missing or invalid bearer token."}}}},"/x-replies":{"get":{"summary":"Today's actionable X reply targets, scored.","tags":["x-replies"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":["number","null"],"description":"Score floor (inclusive). Default 40."},"required":false,"name":"min_score","in":"query"},{"schema":{"type":["number","null"],"description":"Max items returned. Default 25, max 100."},"required":false,"name":"limit","in":"query"},{"schema":{"type":"string","enum":["true","false"],"description":"Collapse to one target per author handle (highest-scored). Default true; pass false for the full list."},"required":false,"name":"one_per_handle","in":"query"}],"responses":{"200":{"description":"Reply targets.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/XRepliesListResponse"}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/x-replies/{id}/dismiss":{"post":{"summary":"Dismiss a reply target.","tags":["x-replies"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XReplyDismissRequest"}}}},"responses":{"200":{"description":"Dismissed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"400":{"description":"Invalid reason."},"401":{"description":"Missing or invalid bearer token."},"409":{"description":"Not found or already dismissed."}}}},"/x-replies/{id}/posted":{"post":{"summary":"Mark a reply target posted.","tags":["x-replies"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/XReplyPostedRequest"}}}},"responses":{"200":{"description":"Marked posted.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"401":{"description":"Missing or invalid bearer token."},"409":{"description":"Not found or already posted."}}}},"/portfolio/activity":{"get":{"summary":"Unified cross-module activity stream.","tags":["portfolio"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Activity events.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Cross-module activity stream."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/portfolio/signals":{"get":{"summary":"Open cross-module compounding signals.","tags":["portfolio"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Open signals.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"signals":{"type":"array","items":{"type":"object","properties":{},"description":"A portfolio signal."}}},"required":["count","signals"]}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/portfolio/signals/{id}":{"patch":{"summary":"Triage a signal (acknowledge / act / dismiss).","tags":["portfolio"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalStatusRequest"}}}},"responses":{"200":{"description":"Updated signal.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The updated signal."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/portfolio/roadmap-milestone":{"post":{"summary":"Emit a roadmap-milestone signal (shipped / slipped).","tags":["portfolio"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RoadmapMilestoneRequest"}}}},"responses":{"200":{"description":"The emitted signal.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The emitted milestone signal."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches":{"get":{"summary":"List the scored pitch-query queue.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":["integer","null"]},"required":false,"name":"since_hours","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"min_score","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"The pitch queue.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The pitch queue."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/{queryId}":{"get":{"summary":"One pitch query with scores + docked draft.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"}],"responses":{"200":{"description":"The pitch query.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The pitch query."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/pitches/{queryId}/angles":{"post":{"summary":"Suggest pitch angles for (query, brand).","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PitchBrandIdBody"}}}},"responses":{"200":{"description":"Suggested angles.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Suggested angles."}}}},"400":{"description":"brandId required."},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/{queryId}/drafts":{"get":{"summary":"List docked drafts for a query.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"}],"responses":{"200":{"description":"Drafts.","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"drafts":{"type":"array","items":{"type":"object","properties":{},"description":"A docked draft."}}},"required":["count","drafts"]}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Generate a brand-voice draft for (query, brand). Docks; does not send.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PitchBrandIdBody"}}}},"responses":{"200":{"description":"The docked draft (or a blocked/coaching result).","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The docked draft (or a blocked/coaching result)."}}}},"400":{"description":"brandId required."},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/{queryId}/drafts/override":{"post":{"summary":"Override a quality gate on a draft (friction-tiered).","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PitchOverrideBody"}}}},"responses":{"200":{"description":"The override result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The override result."}}}},"400":{"description":"brandId / valid gate required."},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/{queryId}/polish":{"post":{"summary":"Polish a draft from a chosen angle + founder input.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PitchPolishBody"}}}},"responses":{"200":{"description":"The polished draft.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The polished draft."}}}},"400":{"description":"brandId / angleTitle / founderInput required."},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/{queryId}/score":{"post":{"summary":"Score a query against all of the operator’s brands.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"}],"responses":{"200":{"description":"Per-brand fit scores.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Per-brand fit scores."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/{queryId}/outcomes":{"get":{"summary":"Read outcomes (sent / replied / landed / …) for a query.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"}],"responses":{"200":{"description":"Pitch outcomes.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Pitch outcomes."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/{queryId}/wave":{"get":{"summary":"List pitch-wave runs for a query.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Wave runs.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Wave runs."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Run the pitch wave for (query, brand). Docks or returns an exception. Never sends.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PitchWaveBody"}}}},"responses":{"200":{"description":"The wave result (docked draft or exception).","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The wave result (docked draft or exception)."}}}},"400":{"description":"brandId required."},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/{queryId}/wave/stream":{"post":{"summary":"Run the pitch wave with live SSE progress.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PitchWaveBody"}}}},"responses":{"200":{"description":"Server-sent events streaming station progress (text/event-stream)."},"400":{"description":"brandId required."},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/{queryId}/wave/{waveId}":{"get":{"summary":"Get one pitch-wave run.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"queryId","in":"path"},{"schema":{"type":"string"},"required":true,"name":"waveId","in":"path"}],"responses":{"200":{"description":"The wave run.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The wave run."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/pitches/wave/exceptions":{"get":{"summary":"List wave exceptions (units too thin to pitch to the quality floor).","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Wave exceptions.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Wave exceptions."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/dismiss":{"post":{"summary":"Dismiss (or un-dismiss) pitch queries in bulk.","tags":["pitches"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PitchDismissBody"}}}},"responses":{"200":{"description":"{ ok, updated }.","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"updated":{"type":"integer"}},"required":["ok","updated"]}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/deep-dives":{"post":{"summary":"Generate a respondent deep-dive (journalist matching). Never auto-sends.","tags":["pitches"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeepDiveBody"}}}},"responses":{"200":{"description":"{ status, deepDive }.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ status, deepDive }."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/deep-dives/{id}":{"get":{"summary":"Get a deep-dive artifact.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"{ deepDive }.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ deepDive }."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/pitches/recurring-prompts":{"post":{"summary":"Generate a recurring re-engagement prompt for a respondent.","tags":["pitches"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecurringPromptBody"}}}},"responses":{"200":{"description":"{ status, prompt }.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ status, prompt }."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/pitches/recurring-prompts/{id}":{"get":{"summary":"Get a recurring-prompt artifact.","tags":["pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"{ prompt }.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ prompt }."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/brands":{"get":{"summary":"List the caller's brands.","tags":["brands"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Brands.","content":{"application/json":{"schema":{"type":"object","properties":{"brands":{"type":"array","items":{"type":"object","properties":{},"description":"A brand."}}},"required":["brands"]}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/brands/create":{"post":{"summary":"Create a brand (enforces the plan brand cap).","tags":["brands"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBrandBody"}}}},"responses":{"200":{"description":"{ ok, brand, brandCount }.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ ok, brand, brandCount }."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."},"402":{"description":"Brand cap reached."}}}},"/brands/{slug}":{"patch":{"summary":"Update brand settings (name / bio / voice / AEO digest opt-in).","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PatchBrandBody"}}}},"responses":{"200":{"description":"{ ok, brand }.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ ok, brand }."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Brand not found."}}}},"/brands/{slug}/rescore":{"post":{"summary":"Re-score the caller's recent queries against this brand.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"{ ok, rescored, results }.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ ok, rescored, results }."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Brand not found."}}}},"/brands/{slug}/assets/upload":{"post":{"summary":"Upload a brand asset (multipart).","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"requestBody":{"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"file":{"type":"string","format":"binary"}},"required":["file"]}}}},"responses":{"200":{"description":"The created asset.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The created asset."}}}},"400":{"description":"file required."},"401":{"description":"Missing or invalid bearer token."}}}},"/brands/{slug}/newsletter/subscribers":{"get":{"summary":"List newsletter subscribers.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"offset","in":"query"},{"schema":{"type":"string","enum":["true","false"]},"required":false,"name":"includeUnsubscribed","in":"query"}],"responses":{"200":{"description":"Subscribers.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Subscribers."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Add a newsletter subscriber.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscribeBody"}}}},"responses":{"200":{"description":"The subscriber.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The subscriber."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/brands/{slug}/newsletter/subscribers/{id}":{"delete":{"summary":"Remove a newsletter subscriber.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Removed.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Removed."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/brands/{slug}/publishing-targets":{"get":{"summary":"List per-channel publishing targets.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"responses":{"200":{"description":"Targets.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Targets."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/brands/{slug}/publishing-targets/{channel}":{"get":{"summary":"Get one publishing target.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"},{"schema":{"type":"string"},"required":true,"name":"channel","in":"path"}],"responses":{"200":{"description":"The target.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The target."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}},"put":{"summary":"Upsert a publishing target.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"},{"schema":{"type":"string"},"required":true,"name":"channel","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublishingTargetBody"}}}},"responses":{"200":{"description":"The upserted target.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The upserted target."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}},"delete":{"summary":"Delete a publishing target.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"},{"schema":{"type":"string"},"required":true,"name":"channel","in":"path"}],"responses":{"200":{"description":"Deleted.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Deleted."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/brands/{slug}/press-kit-config":{"get":{"summary":"Read the public press-kit config.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"responses":{"200":{"description":"Press-kit config.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Press-kit config."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/brands/{slug}/visibility":{"get":{"summary":"Read AI-search visibility (citations/mentions per query × engine).","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":365},"required":false,"name":"sinceDays","in":"query"}],"responses":{"200":{"description":"Visibility read.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Visibility read."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Brand not found."}}},"patch":{"summary":"Configure what the visibility tracker probes.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VisibilityConfigBody"}}}},"responses":{"200":{"description":"Updated visibility config.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated visibility config."}}}},"400":{"description":"No fields to update."},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Brand not found."}}}},"/brands/{slug}/aio/gaps":{"get":{"summary":"AIO citation gaps (competitor cited, brand not).","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"},{"schema":{"type":"integer","minimum":1,"maximum":365},"required":false,"name":"sinceDays","in":"query"}],"responses":{"200":{"description":"Gaps.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Gaps."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Brand not found."}}}},"/brands/{slug}/aio/briefs":{"get":{"summary":"List generated AIO citation-gap briefs.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"responses":{"200":{"description":"Briefs.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Briefs."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Brand not found."}}}},"/brands/{slug}/aio/outcomes":{"get":{"summary":"AIO brief publish→citation outcomes per format.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"responses":{"200":{"description":"Outcomes.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Outcomes."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Brand not found."}}}},"/brands/{slug}/aio/briefs/generate":{"post":{"summary":"Generate a content brief for a citation gap.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AioGenerateBody"}}}},"responses":{"200":{"description":"The generated brief.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The generated brief."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Brand not found."},"409":{"description":"Not a current gap."}}}},"/brands/{slug}/aio/briefs/{id}/publish":{"post":{"summary":"Mark an AIO brief published.","tags":["brands"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"},{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AioPublishBody"}}}},"responses":{"200":{"description":"The published brief.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The published brief."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Brand or brief not found."}}}},"/briefs/{operator}/{brand}":{"get":{"summary":"Pull a resolved brief.md.","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"},{"schema":{"type":"string","enum":["brand-brief","operator-brief"]},"required":false,"name":"documentType","in":"query"}],"responses":{"200":{"description":"The resolved brief.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The resolved brief."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}},"put":{"summary":"Push (replace) brief.md raw content.","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefPushBody"}}}},"responses":{"200":{"description":"The updated brief.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The updated brief."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."},"409":{"description":"Conflict with Git."}}}},"/briefs/{operator}/{brand}/publish":{"put":{"summary":"Publish brief.md (commit to Git).","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefPublishBody"}}}},"responses":{"200":{"description":"Publish result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Publish result."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/{operator}/{brand}/history":{"get":{"summary":"Brief edit-history audit log.","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"},{"schema":{"type":"string","enum":["brand-brief","operator-brief"]},"required":false,"name":"documentType","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"History entries.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"History entries."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/{operator}/{brand}/state":{"get":{"summary":"Brief sync state (clean / dirty / conflicted).","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"},{"schema":{"type":"string","enum":["brand-brief","operator-brief"]},"required":false,"name":"documentType","in":"query"}],"responses":{"200":{"description":"Brief state.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Brief state."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/{operator}/{brand}/export-rules":{"get":{"summary":"Export editor rules (markdown for Cursor/Claude/Codex).","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"}],"responses":{"200":{"description":"Rules as text/markdown."},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/{operator}/{brand}/suggestions":{"get":{"summary":"Cross-module brief edit suggestions.","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"}],"responses":{"200":{"description":"Suggestions.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Suggestions."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/{operator}/{brand}/validate":{"post":{"summary":"Validate brief.md raw content without writing.","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefValidateBody"}}}},"responses":{"200":{"description":"Validation issues.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Validation issues."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/{operator}/{brand}/refresh":{"post":{"summary":"Refresh brief from source (optionally propose, not apply).","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"},{"schema":{"type":"string","enum":["0","1"]},"required":false,"name":"propose","in":"query"}],"responses":{"200":{"description":"Refresh result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Refresh result."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/{operator}/{brand}/sections/{key}":{"patch":{"summary":"Edit one brief section (full section markdown).","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"},{"schema":{"type":"string"},"required":true,"name":"key","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefSectionPatchBody"}}}},"responses":{"200":{"description":"The updated brief.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The updated brief."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/{operator}/{brand}/conflict/diff":{"get":{"summary":"Section-by-section DB↔Git conflict diff.","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"},{"schema":{"type":"string","enum":["brand-brief","operator-brief"]},"required":false,"name":"documentType","in":"query"}],"responses":{"200":{"description":"Conflict diff.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Conflict diff."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/{operator}/{brand}/conflict/resolve":{"post":{"summary":"Resolve a conflict whole-document (keep-db / keep-git).","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefConflictResolveBody"}}}},"responses":{"200":{"description":"Resolution result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Resolution result."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/{operator}/{brand}/conflict/resolve-sections":{"post":{"summary":"Resolve a conflict section-by-section.","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"operator","in":"path"},{"schema":{"type":"string"},"required":true,"name":"brand","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefConflictResolveSectionsBody"}}}},"responses":{"200":{"description":"Resolution result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Resolution result."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/briefs/proposals/{id}/resolve":{"post":{"summary":"Confirm or reject a brief-edit proposal.","tags":["briefs"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefProposalResolveBody"}}}},"responses":{"200":{"description":"{ ok, proposal }.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ ok, proposal }."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Proposal not found."}}}},"/research/briefs":{"get":{"summary":"List research briefs.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"status","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Briefs.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Briefs."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Create a research brief.","tags":["research"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateResearchBriefBody"}}}},"responses":{"200":{"description":"The created brief.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The created brief."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/credentialing-roster":{"get":{"summary":"Credentialing / VIP roster (#2178) — established operators flagged credentialing-caliber across briefs, with stature reason + NeverSell state. Empty until the classifier is armed.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"brief","in":"query"},{"schema":{"type":"string","enum":["0","1"]},"required":false,"name":"include_notable","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":500},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"The credentialing roster.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The credentialing roster."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/topic-fit":{"post":{"summary":"Preview the topic-quality gate for a brief (no distribute) — scores the five gates and returns verdict pass/warn/block. The same gate runs blocking inside distribute.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Topic-fit result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Topic-fit result."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/credentialing-vip":{"post":{"summary":"Capture a manual-channel credentialing VIP by hand (Connectively/in-app, no email): records their submission, flags it VIP + the respondent NeverSell (operator). Keyed on LinkedIn; email optional.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CaptureCredentialingVipBody"}}}},"responses":{"200":{"description":"The captured VIP.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The captured VIP."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}":{"get":{"summary":"Get a research brief.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The brief.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The brief."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}},"patch":{"summary":"Update a research brief.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateResearchBriefBody"}}}},"responses":{"200":{"description":"The updated brief.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The updated brief."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/distributions":{"get":{"summary":"List a brief’s distributions.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Distributions.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Distributions."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Record a distribution for a brief.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionCreateBody"}}}},"responses":{"200":{"description":"The distribution.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The distribution."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/invitation-preview":{"get":{"summary":"Preview a brief invitation.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Invitation preview.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Invitation preview."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/matches":{"get":{"summary":"Contributors matched to a brief.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Matches.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Matches."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/render/{variant}":{"get":{"summary":"Render a brief variant.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"variant","in":"path"}],"responses":{"200":{"description":"Rendered brief variant.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Rendered brief variant."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/segmentation":{"get":{"summary":"Brief respondent segmentation.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Segmentation.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Segmentation."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/submissions":{"get":{"summary":"List a brief’s submissions.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":false,"name":"status","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Submissions.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Submissions."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Record a submission (operator paste-intake).","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResearchSubmissionCreateBody"}}}},"responses":{"200":{"description":"The submission.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The submission."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/close-intake":{"post":{"summary":"Close a brief’s intake window.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CloseIntakeBody"}}}},"responses":{"200":{"description":"Intake closed.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Intake closed."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/distribute":{"post":{"summary":"Distribute a brief to its channels.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Distribution result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Distribution result."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/kill":{"post":{"summary":"Kill (cancel) a brief.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Killed.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Killed."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/sanction":{"post":{"summary":"Set/clear the brief's outbound sanction (the Motion-B operator-seeding guardrail).","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BriefSanctionBody"}}}},"responses":{"200":{"description":"Updated brief.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated brief."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/console":{"get":{"summary":"Operator console view: lifecycle phase, checkpoints, next gate, event feed, plan-book.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Console view.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Console view."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/research/briefs/{id}/checklist":{"post":{"summary":"Mark a manual lifecycle checkpoint complete.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ChecklistCheckBody"}}}},"responses":{"200":{"description":"Updated console view.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated console view."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/multicast":{"post":{"summary":"Multicast brief variants.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MulticastBody"}}}},"responses":{"200":{"description":"Multicast result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Multicast result."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/report":{"post":{"summary":"Create a report draft from a brief.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReportBody"}}}},"responses":{"200":{"description":"The report draft.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The report draft."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/flagged-gaps":{"put":{"summary":"Set a brief’s flagged gaps.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FlaggedGapsBody"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/briefs/{id}/topic-clusters":{"put":{"summary":"Set a brief’s topic clusters.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TopicClustersBody"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/topics":{"get":{"summary":"List research topics.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"cluster","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Topics.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Topics."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Create a research topic.","tags":["research"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTopicBody"}}}},"responses":{"200":{"description":"The topic.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The topic."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/topics/{id}":{"get":{"summary":"Get a research topic.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The topic.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The topic."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}},"delete":{"summary":"Delete a research topic.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Deleted.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Deleted."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/research/topics/{id}/activate":{"post":{"summary":"Activate a topic.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Activated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Activated."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/topics/{id}/archive":{"post":{"summary":"Archive a topic.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Archived.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Archived."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/topics/{id}/promote":{"post":{"summary":"Promote a topic to a brief.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Promoted.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Promoted."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/topics/{id}/score":{"post":{"summary":"Score a topic against the rubric signals.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Topic rubric signals { signals: { logData?, seoOpportunity?, … } }."}}}},"responses":{"200":{"description":"Scored topic.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Scored topic."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/distributions/{id}":{"patch":{"summary":"Update a distribution (status / external refs / impressions).","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DistributionPatchBody"}}}},"responses":{"200":{"description":"Updated distribution.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated distribution."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}},"delete":{"summary":"Delete a distribution.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Deleted.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Deleted."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/research/reports":{"get":{"summary":"List research reports.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"status","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Reports.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Reports."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/reports/{id}":{"get":{"summary":"Get a research report.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The report.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The report."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}},"patch":{"summary":"Update a report draft.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportPatchBody"}}}},"responses":{"200":{"description":"Updated report.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated report."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/reports/{id}/citations":{"get":{"summary":"List a report’s citations.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Citations.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Citations."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Add citations to a report (from submissions).","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCitationsBody"}}}},"responses":{"200":{"description":"Added.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Added."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/reports/{id}/citations/{cid}":{"delete":{"summary":"Remove a citation.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":"string"},"required":true,"name":"cid","in":"path"}],"responses":{"200":{"description":"Removed.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Removed."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/research/reports/{id}/conversion":{"get":{"summary":"Report conversion events.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Conversion events.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Conversion events."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Append a conversion event.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConversionAppendBody"}}}},"responses":{"200":{"description":"Appended.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Appended."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/reports/{id}/exposure":{"get":{"summary":"Report exposure events.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Exposure events.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Exposure events."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Append an exposure event.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExposureAppendBody"}}}},"responses":{"200":{"description":"Appended.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Appended."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/reports/{id}/notify":{"post":{"summary":"Notify contributors a report is live.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Notified.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Notified."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/reports/{id}/approve":{"post":{"summary":"Approve a report draft for publish (the single human gate). Stamps approval + fires the cited-contributor preview.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportApproveBody"}}}},"responses":{"200":{"description":"Approved report.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Approved report."}}}},"401":{"description":"Missing or invalid bearer token."},"409":{"description":"Report not in a draft state."}}}},"/research/reports/{id}/unapprove":{"post":{"summary":"Revoke a report approval, moving the brief back to awaiting-approval.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportUnapproveBody"}}}},"responses":{"200":{"description":"Approval revoked.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Approval revoked."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/reports/{id}/publish":{"post":{"summary":"Publish a report (refused unless approved + cited-preview window satisfied, or an override is supplied).","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportPublishBody"}}}},"responses":{"200":{"description":"Published.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Published."}}}},"401":{"description":"Missing or invalid bearer token."},"409":{"description":"Not approved or preview window not satisfied."}}}},"/research/submissions/{id}/approve":{"post":{"summary":"Approve a submission (becomes citable).","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Approved.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Approved."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/submissions/{id}/reject":{"post":{"summary":"Reject a submission.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SubmissionRejectBody"}}}},"responses":{"200":{"description":"Rejected.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Rejected."}}}},"400":{"description":"reason required."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/submissions/{id}/acceptance-reply":{"get":{"summary":"Preview a submission acceptance reply.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Acceptance-reply preview.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Acceptance-reply preview."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Send a submission acceptance reply.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Acceptance-reply options."}}}},"responses":{"200":{"description":"Sent.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Sent."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/contributors/{slug}/engagement":{"get":{"summary":"List a contributor’s engagement events.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"responses":{"200":{"description":"Engagement events.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Engagement events."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Log a contributor engagement event.","tags":["research"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"slug","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/EngagementBody"}}}},"responses":{"200":{"description":"Logged.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Logged."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/contributor-brief":{"get":{"summary":"Get the contributor brief.","tags":["research"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Contributor brief.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Contributor brief."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Regenerate the contributor brief.","tags":["research"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Regeneration options."}}}},"responses":{"200":{"description":"Regenerated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Regenerated."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/consent":{"get":{"summary":"Read consent state.","tags":["research"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Consent state.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Consent state."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Set consent for a type.","tags":["research"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConsentBody"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/panel-opt-in":{"get":{"summary":"Read panel opt-in state.","tags":["research"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Panel opt-in state.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Panel opt-in state."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Set panel opt-in.","tags":["research"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PanelOptInBody"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/panel-metrics":{"get":{"summary":"Panel metrics.","tags":["research"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Panel metrics.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Panel metrics."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/persona-distribution":{"get":{"summary":"Respondent persona distribution.","tags":["research"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Persona distribution.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Persona distribution."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/featured-operator-candidates":{"get":{"summary":"Ranked Featured Operator candidates.","tags":["research"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Candidates.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Candidates."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/matched-briefs":{"get":{"summary":"Open briefs matched to the caller.","tags":["research"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Matched briefs.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Matched briefs."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/research/cited-previews/send":{"post":{"summary":"Send a cited-preview to a contributor.","tags":["research"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CitedPreviewSendBody"}}}},"responses":{"200":{"description":"Sent (or previewed when apply=false).","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Sent (or previewed when apply=false)."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/research/outreach/send":{"post":{"summary":"Send a contributor outreach invite.","tags":["research"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutreachSendBody"}}}},"responses":{"200":{"description":"Sent (or previewed when apply=false).","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Sent (or previewed when apply=false)."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar":{"get":{"summary":"List calendar slots (filter by date/brand/channel).","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"from","in":"query"},{"schema":{"type":"string"},"required":false,"name":"to","in":"query"},{"schema":{"type":"string"},"required":false,"name":"brand","in":"query"},{"schema":{"type":"string"},"required":false,"name":"channel","in":"query"}],"responses":{"200":{"description":"Calendar slots.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Calendar slots."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/{id}":{"get":{"summary":"Get one calendar slot.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The slot.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The slot."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/calendar/{id}/engagement":{"get":{"summary":"Engagement snapshots for a slot (latest + history).","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Engagement snapshots.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Engagement snapshots."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Append an engagement snapshot.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarEngagementBody"}}}},"responses":{"200":{"description":"Appended.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Appended."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/engagement/top":{"get":{"summary":"Top-performing slots by engagement.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"brandId","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"daysBack","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Top slots.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Top slots."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/{id}/publish":{"get":{"summary":"Get a slot’s publish state.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Publish state.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Publish state."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Publish a slot now (via the channel dispatcher). Idempotent.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Publish result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Publish result."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/{id}/publish/test":{"post":{"summary":"Send a test publish to an email.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarPublishTestBody"}}}},"responses":{"200":{"description":"Test sent.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Test sent."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/{id}/publish-fields":{"patch":{"summary":"Set per-channel publish fields on a slot.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarPublishFieldsBody"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/{id}/reschedule":{"patch":{"summary":"Reschedule a slot (respects brand blackout dates).","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarRescheduleBody"}}}},"responses":{"200":{"description":"Rescheduled.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Rescheduled."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/{id}/status":{"patch":{"summary":"Set a slot’s workflow status.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarStatusBody"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/{id}/generate-drafts":{"post":{"summary":"Generate content drafts for a slot.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Generated drafts.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Generated drafts."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/{id}/reviewer":{"post":{"summary":"Assign a reviewer to a slot.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CalendarReviewerBody"}}}},"responses":{"200":{"description":"Assigned.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Assigned."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}},"delete":{"summary":"Unassign a slot’s reviewer.","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Unassigned.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Unassigned."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/cadence":{"get":{"summary":"Per-brand × channel cadence (target vs actual).","tags":["calendar"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"weekOf","in":"query"}],"responses":{"200":{"description":"Cadence.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Cadence."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/slot/existing":{"post":{"summary":"Slot an existing draft.","tags":["calendar"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotExistingBody"}}}},"responses":{"200":{"description":"Slotted.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Slotted."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/slot/generate":{"post":{"summary":"Generate a slot draft for a brand + topic.","tags":["calendar"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotGenerateBody"}}}},"responses":{"200":{"description":"Generated slot.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Generated slot."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/slot/recurring":{"post":{"summary":"Create recurring weekly slots.","tags":["calendar"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SlotRecurringBody"}}}},"responses":{"200":{"description":"Created.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Created."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/strategy/generate":{"post":{"summary":"Generate an editorial strategy proposal (not committed).","tags":["calendar"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyGenerateBody"}}}},"responses":{"200":{"description":"Proposed slots.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Proposed slots."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/calendar/strategy/commit":{"post":{"summary":"Commit selected proposed slots to the calendar.","tags":["calendar"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StrategyCommitBody"}}}},"responses":{"200":{"description":"Committed slots.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Committed slots."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/inbox":{"get":{"summary":"Reply inbox (classified touches).","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"brand","in":"query"},{"schema":{"type":"string"},"required":false,"name":"classification","in":"query"},{"schema":{"type":"string"},"required":false,"name":"since","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Inbox items.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Inbox items."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/inbox/action":{"post":{"summary":"Act on an inbox touch (resume / suppress / mark_engaged).","tags":["outbound"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxActionBody"}}}},"responses":{"200":{"description":"Acted.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Acted."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/enroll":{"post":{"summary":"Enroll prospects into a sequence.","tags":["outbound"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundEnrollBody"}}}},"responses":{"200":{"description":"Enrolled.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Enrolled."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/motion-b/campaign":{"get":{"summary":"Motion B (brief-invitation) campaign state.","tags":["outbound"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Campaign state.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Campaign state."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Motion B campaign action (preview / enqueue).","tags":["outbound"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Action-discriminated body: { action: \"preview\"|\"enqueue\", operators: [...], brandSlug? }."}}}},"responses":{"200":{"description":"Campaign result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Campaign result."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/motion-c/placement":{"get":{"summary":"Motion C (journalist-placement) state.","tags":["outbound"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Placement state.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Placement state."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Motion C placement action (discover / enqueue / mark_sent / record_outcome).","tags":["outbound"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Action-discriminated body: { action: \"discover\"|\"enqueue\"|\"mark_sent\"|\"record_outcome\", … }."}}}},"responses":{"200":{"description":"Placement result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Placement result."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/prospects":{"get":{"summary":"List prospects.","tags":["outbound"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Prospects.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Prospects."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Add a prospect.","tags":["outbound"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddProspectBody"}}}},"responses":{"200":{"description":"The prospect.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The prospect."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/prospects/bulk":{"post":{"summary":"Bulk prospect action (suppress / unsuppress / delete).","tags":["outbound"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkProspectBody"}}}},"responses":{"200":{"description":"Done.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Done."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/prospects/enroll":{"post":{"summary":"Enroll prospects into a sequence (prospects-scoped).","tags":["outbound"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProspectEnrollBody"}}}},"responses":{"200":{"description":"Enrolled.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Enrolled."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/prospects/import":{"post":{"summary":"Import prospects from CSV.","tags":["outbound"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProspectImportBody"}}}},"responses":{"200":{"description":"Import result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Import result."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/sequences":{"get":{"summary":"List sequences.","tags":["outbound"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Sequences.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Sequences."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Create a sequence.","tags":["outbound"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundSequenceBody"}}}},"responses":{"200":{"description":"The sequence.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The sequence."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/sequences/{id}":{"put":{"summary":"Update a sequence.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutboundSequenceBody"}}}},"responses":{"200":{"description":"The updated sequence.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The updated sequence."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/sequences/{id}/status":{"post":{"summary":"Set sequence status (pause / activate / archive).","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SequenceStatusBody"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/touches":{"get":{"summary":"List touches.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"brand","in":"query"},{"schema":{"type":"string"},"required":false,"name":"status","in":"query"},{"schema":{"type":"string","enum":["0","1"]},"required":false,"name":"manual_only","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Touches.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Touches."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/touches/{id}":{"get":{"summary":"Get one touch.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The touch.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The touch."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/outbound/touches/{id}/reclassify":{"post":{"summary":"Reclassify a touch.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Reclassification (e.g. { classification })."}}}},"responses":{"200":{"description":"Reclassified.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Reclassified."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/touches/{id}/fact-check":{"post":{"summary":"LLM enrichment fact-check (#2044 Fix #3) — compares draft claims about the prospect to the stated title/company. Returns { flagged, claims, reasoning }.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Fact-check result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Fact-check result."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/touches/{id}/resume":{"post":{"summary":"Resume a paused touch.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TouchResumeBody"}}}},"responses":{"200":{"description":"Resumed.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Resumed."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/touches/{id}/sent":{"post":{"summary":"Mark a manual touch sent (paste the sent text).","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TouchSentBody"}}}},"responses":{"200":{"description":"Marked sent.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Marked sent."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/touches/{id}/tracking-marker":{"post":{"summary":"Attach a tracking marker to a touch.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Tracking-marker payload."}}}},"responses":{"200":{"description":"Marker attached.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Marker attached."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/newsletters":{"get":{"summary":"Newsletter outreach fits.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"brand","in":"query"},{"schema":{"type":["number","null"]},"required":false,"name":"minScore","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Newsletter fits.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Newsletter fits."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/newsletters/{id}":{"get":{"summary":"Get a newsletter fit.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The fit.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The fit."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/outbound/podcasts":{"get":{"summary":"Podcast outreach fits.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"brand","in":"query"},{"schema":{"type":["number","null"]},"required":false,"name":"minScore","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Podcast fits.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Podcast fits."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/outbound/podcasts/{id}":{"get":{"summary":"Get a podcast fit.","tags":["outbound"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The fit.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The fit."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/inbound/health":{"get":{"summary":"Workspace-global inbound email freshness snapshot — latest ReceivedAt + sliding-window counts. Used by the today digest to fire a staleness heads-up when ingestion stalls.","tags":["inbound"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Inbound health snapshot.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Inbound health snapshot."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/inbound/reconciliation":{"get":{"summary":"Recent inbound reconciliation snapshots (#2082 Phase 4) — joins per-inbox source counts vs ingested counts, surfaces deltas + severity. Daily cron writes per-(date, source, inbox) rows.","tags":["inbound"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Reconciliation rows.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Reconciliation rows."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/account/sender":{"get":{"summary":"Get the caller’s configured email sender.","tags":["account"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Sender config.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Sender config."}}}},"401":{"description":"Missing or invalid bearer token."}}},"put":{"summary":"Set the caller’s email sender (triggers ACS domain verification).","tags":["account"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetSenderBody"}}}},"responses":{"200":{"description":"Sender set; verification pending.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Sender set; verification pending."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}},"delete":{"summary":"Clear the caller’s email sender.","tags":["account"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Cleared.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Cleared."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/account/sender/verification-status":{"get":{"summary":"Sender DNS/verification status.","tags":["account"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Verification status.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Verification status."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/account/sender/verify":{"post":{"summary":"Re-check sender domain verification.","tags":["account"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Verification result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Verification result."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/agent/conversations":{"get":{"summary":"List the operator’s agent conversations.","tags":["agent"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Conversations.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Conversations."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/agent/conversations/{id}":{"get":{"summary":"Get one agent conversation with its turns.","tags":["agent"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The conversation.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The conversation."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/agent/surface":{"get":{"summary":"Orchestration surface — the ranked \"what needs you\" queue.","tags":["agent"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":["integer","null"]},"required":false,"name":"since_hours","in":"query"}],"responses":{"200":{"description":"Orchestration surface.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Orchestration surface."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/agent/chat":{"post":{"summary":"One conversational agent turn (prepare-and-surface; never sends).","tags":["agent"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentChatBody"}}}},"responses":{"200":{"description":"The agent reply + tool-call trace.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The agent reply + tool-call trace."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/agent/chat/stream":{"post":{"summary":"Streaming conversational agent turn (SSE).","tags":["agent"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentChatStreamBody"}}}},"responses":{"200":{"description":"Streamed agent turn (text/event-stream)."},"401":{"description":"Missing or invalid bearer token."}}}},"/submissions":{"get":{"summary":"List directory submissions.","tags":["submissions"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"brand_id","in":"query"},{"schema":{"type":"string"},"required":false,"name":"status","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Submissions.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Submissions."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Record a directory submission.","tags":["submissions"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Directory submission payload."}}}},"responses":{"200":{"description":"The submission.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The submission."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/submissions/{id}":{"get":{"summary":"Get a directory submission.","tags":["submissions"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The submission.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The submission."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}},"patch":{"summary":"Update a directory submission.","tags":["submissions"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Fields to update."}}}},"responses":{"200":{"description":"The updated submission.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The updated submission."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}},"delete":{"summary":"Delete a directory submission.","tags":["submissions"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Deleted.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Deleted."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/onboarding/sessions":{"get":{"summary":"List onboarding sessions.","tags":["onboarding"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Sessions.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Sessions."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/onboarding/sessions/{id}":{"get":{"summary":"Get an onboarding session.","tags":["onboarding"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The session.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The session."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/onboarding/start":{"post":{"summary":"Start an onboarding run (synchronous).","tags":["onboarding"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStartBody"}}}},"responses":{"200":{"description":"Onboarding result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Onboarding result."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/onboarding/stream":{"post":{"summary":"Start an onboarding run with live progress (SSE).","tags":["onboarding"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OnboardingStartBody"}}}},"responses":{"200":{"description":"Streamed onboarding progress (text/event-stream)."},"401":{"description":"Missing or invalid bearer token."}}}},"/onboarding/refine":{"post":{"summary":"Refine an onboarding draft with answers/corrections.","tags":["onboarding"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ answers: [{ key, answer }], corrections?: [...] }."}}}},"responses":{"200":{"description":"Refined draft.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Refined draft."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/onboarding/publish":{"post":{"summary":"Publish an onboarding-generated brief.","tags":["onboarding"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ sections: [{ key, name, markdown }], … }."}}}},"responses":{"200":{"description":"Published.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Published."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/sources":{"get":{"summary":"List the caller’s brand sources.","tags":["sources"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Sources.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Sources."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/assets":{"get":{"summary":"List brand assets.","tags":["assets"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"brand","in":"query"},{"schema":{"type":"string"},"required":false,"name":"type","in":"query"},{"schema":{"type":"string"},"required":false,"name":"visibility","in":"query"},{"schema":{"type":"string"},"required":false,"name":"q","in":"query"}],"responses":{"200":{"description":"Assets.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Assets."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/assets/{id}":{"get":{"summary":"Get an asset.","tags":["assets"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The asset.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The asset."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}},"delete":{"summary":"Soft-delete an asset.","tags":["assets"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Deleted.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Deleted."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/assets/{id}/tags":{"get":{"summary":"List an asset’s tags.","tags":["assets"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Tags.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Tags."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/assets/{id}/versions":{"get":{"summary":"List an asset’s version timeline.","tags":["assets"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Versions.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Versions."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/assets/{id}/visibility":{"patch":{"summary":"Set an asset’s visibility.","tags":["assets"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"{ visibility } for the asset."}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/assets/{id}/restore":{"post":{"summary":"Restore a soft-deleted asset (or a prior version).","tags":["assets"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Restored.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Restored."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/content/drafts":{"get":{"summary":"List content drafts.","tags":["content"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":false,"name":"status","in":"query"},{"schema":{"type":"string"},"required":false,"name":"product","in":"query"},{"schema":{"type":"string"},"required":false,"name":"channel","in":"query"},{"schema":{"type":"string"},"required":false,"name":"treatment","in":"query"},{"schema":{"type":["integer","null"]},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Content drafts.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Content drafts."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/content/drafts/{id}":{"get":{"summary":"Get a content draft.","tags":["content"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The draft.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The draft."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}},"patch":{"summary":"Approve or reject a content draft.","tags":["content"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Status-discriminated: { status: \"approved\", editedContent? } | { status: \"rejected\", rejectionReason }."}}}},"responses":{"200":{"description":"Updated draft.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated draft."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}},"delete":{"summary":"Discard a content draft.","tags":["content"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Discarded.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Discarded."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}}},"/content/drafts/{id}/queue-to-buffer":{"post":{"summary":"Queue an approved draft to Buffer.","tags":["content"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Queued.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Queued."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/content/drafts/{id}/citations":{"put":{"summary":"Set a draft’s citations.","tags":["content"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContentCitationsBody"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/content/buffer-flush":{"post":{"summary":"Flush queued drafts to Buffer.","tags":["content"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Flush result.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Flush result."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/drafts/{draftId}":{"patch":{"summary":"Edit a pitch draft.","tags":["drafts"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"draftId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Draft edit fields (e.g. { body })."}}}},"responses":{"200":{"description":"The updated draft.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The updated draft."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/drafts/{draftId}/send":{"post":{"summary":"Send a pitch draft via PRAPI’s relay. Requires the attribution URL in the body.","tags":["drafts"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"draftId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DraftSendBody"}}}},"responses":{"200":{"description":"{ ok, messageId, sentAt }.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Send result."}}}},"400":{"description":"Body missing the per-draft attribution URL."},"401":{"description":"Missing or invalid bearer token."},"402":{"description":"Trial expired without an active plan."},"409":{"description":"Draft already sent."}}}},"/drafts/{draftId}/outcomes":{"patch":{"summary":"Update a draft’s outcome (status / coverage type).","tags":["drafts"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"draftId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Outcome fields."}}}},"responses":{"200":{"description":"Updated outcome.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated outcome."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/drafts/{draftId}/outcomes/reply":{"post":{"summary":"Record a reply outcome.","tags":["drafts"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"draftId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Reply outcome."}}}},"responses":{"200":{"description":"Recorded.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Recorded."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/drafts/{draftId}/outcomes/landed":{"post":{"summary":"Record a landed (published) outcome.","tags":["drafts"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"draftId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Landed outcome (e.g. { url })."}}}},"responses":{"200":{"description":"Recorded.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Recorded."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/drafts/{draftId}/outcomes/complaint":{"post":{"summary":"Record a complaint outcome.","tags":["drafts"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"draftId","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Complaint outcome."}}}},"responses":{"200":{"description":"Recorded.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Recorded."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/logged-pitches":{"get":{"summary":"List logged (externally-sent) pitches.","tags":["logged-pitches"],"security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Logged pitches.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Logged pitches."}}}},"401":{"description":"Missing or invalid bearer token."}}},"post":{"summary":"Log an externally-sent pitch.","tags":["logged-pitches"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogPitchBody"}}}},"responses":{"200":{"description":"The logged pitch.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The logged pitch."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/logged-pitches/{id}":{"get":{"summary":"Get a logged pitch.","tags":["logged-pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The logged pitch.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"The logged pitch."}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"Not found."}}},"patch":{"summary":"Update a logged pitch (e.g. mark landed).","tags":["logged-pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogPitchPatchBody"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/logged-pitches/{id}/topic":{"patch":{"summary":"Set a logged pitch’s topic cluster.","tags":["logged-pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogPitchTopicBody"}}}},"responses":{"200":{"description":"Updated.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Updated."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}}},"/logged-pitches/{id}/index":{"post":{"summary":"Index a logged pitch into the public directory.","tags":["logged-pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogPitchIndexBody"}}}},"responses":{"200":{"description":"Indexed.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Indexed."}}}},"400":{"description":"Invalid body."},"401":{"description":"Missing or invalid bearer token."}}},"delete":{"summary":"Un-index a logged pitch from the directory.","tags":["logged-pitches"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"Un-indexed.","content":{"application/json":{"schema":{"type":"object","properties":{},"description":"Un-indexed."}}}},"401":{"description":"Missing or invalid bearer token."}}}},"/coverage/candidates":{"get":{"summary":"List the caller's detected-coverage candidates (newest-first).","tags":["coverage"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","enum":["detected","emailed","confirmed","rejected","expired","suppressed"],"description":"Filter by lifecycle status."},"required":false,"name":"status","in":"query"},{"schema":{"type":"integer","minimum":1,"maximum":200,"description":"Max rows (1-200, default 50)."},"required":false,"name":"limit","in":"query"}],"responses":{"200":{"description":"Detected-coverage candidates for the caller.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListCoverageCandidatesResponse"}}}},"400":{"description":"Invalid status filter."},"401":{"description":"Missing or invalid bearer token."}}}},"/coverage/candidates/{id}/confirm":{"post":{"summary":"Confirm a detected-coverage candidate. Lands it as a publication.","tags":["coverage"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The verdict outcome.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverageVerdictResponse"}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"No such candidate for the caller."}}}},"/coverage/candidates/{id}/reject":{"post":{"summary":"Reject a detected-coverage candidate (not theirs / wrong).","tags":["coverage"],"security":[{"bearerAuth":[]}],"parameters":[{"schema":{"type":"string","format":"uuid"},"required":true,"name":"id","in":"path"}],"responses":{"200":{"description":"The verdict outcome.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverageVerdictResponse"}}}},"401":{"description":"Missing or invalid bearer token."},"404":{"description":"No such candidate for the caller."}}}},"/voice/extract":{"post":{"summary":"Extract a brand-voice profile from one or more writing samples.","description":"Analyzes supplied text (no URL fetching, nothing stored) and returns tone axes, signature + banned phrases, sentence patterns, and punctuation/capitalization rhythm.","tags":["voice"],"security":[{"bearerAuth":[]}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceExtractRequest"}}}},"responses":{"200":{"description":"The extracted voice profile.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VoiceExtractResponse"}}}},"400":{"description":"Invalid body (neither text nor samples supplied)."},"401":{"description":"Missing or invalid bearer token."},"422":{"description":"Text too short to extract a profile (need ~200+ chars)."}}}}},"webhooks":{}}