domani 1.0.5 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/dist/index.d.ts +1132 -56
  2. package/dist/index.js +243 -14
  3. package/package.json +1 -1
package/dist/index.d.ts CHANGED
@@ -18,7 +18,7 @@ export interface Error {
18
18
  /** Human-readable error message */
19
19
  error: string;
20
20
  /** Machine-readable error code */
21
- code: "MISSING_API_KEY" | "INVALID_API_KEY" | "EXPIRED_API_KEY" | "MISSING_PARAMETER" | "INVALID_DOMAIN" | "PAYMENT_REQUIRED" | "DOMAIN_UNAVAILABLE" | "RATE_LIMIT_EXCEEDED" | "USER_EXISTS" | "NOT_FOUND" | "UNKNOWN_PROVIDER" | "UNKNOWN_METHOD" | "TARGET_REQUIRED" | "INVALID_PARAMETER" | "CONTACT_REQUIRED" | "INVALID_CONTACT" | "INSUFFICIENT_SCOPE" | "SCOPE_ESCALATION" | "DOMAIN_EXISTS" | "DOMAIN_NOT_ACTIVE" | "UNSUPPORTED_TLD" | "NOT_AVAILABLE" | "ALREADY_REGISTERED" | "TRANSFER_NOT_ELIGIBLE" | "ALREADY_LISTED" | "LISTING_SOLD" | "SELF_PURCHASE" | "DESCRIPTION_TOO_LONG" | "DEAL_NOT_FOUND" | "INVALID_DEAL_STATE" | "EPP_ATTEMPTS_EXCEEDED" | "ACTIVE_DEAL_EXISTS" | "AGENT_IDENTITY_NOT_FOUND" | "AGENT_IDENTITY_ESCALATION" | "CREDENTIAL_REVOKE_FAILED" | "INVALID_IDEMPOTENCY_KEY" | "IDEMPOTENCY_KEY_MISMATCH" | "IDEMPOTENCY_KEY_REUSED" | "OPERATION_IN_PROGRESS" | "OPERATION_SUPERSEDED" | "INVALID_OPERATION_RECEIPT" | "WORKSPACE_ADMIN_REQUIRED" | "PRINCIPAL_NOT_IN_WORKSPACE" | "MAILBOX_NOT_IN_WORKSPACE" | "GROUP_NOT_IN_WORKSPACE" | "COLLECTION_NOT_IN_WORKSPACE" | "ACCESS_VERSION_CONFLICT" | "ACCESS_OFFER_INVALID" | "ACCESS_OFFER_EMAIL_MISMATCH" | "MAIL_DOMAIN_CAPACITY_EXHAUSTED" | "MAIL_PROVIDER_ERROR";
21
+ code: "MISSING_API_KEY" | "INVALID_API_KEY" | "EXPIRED_API_KEY" | "MISSING_PARAMETER" | "INVALID_DOMAIN" | "PAYMENT_REQUIRED" | "DOMAIN_UNAVAILABLE" | "RATE_LIMIT_EXCEEDED" | "USER_EXISTS" | "NOT_FOUND" | "UNKNOWN_PROVIDER" | "UNKNOWN_METHOD" | "TARGET_REQUIRED" | "INVALID_PARAMETER" | "CONTACT_REQUIRED" | "INVALID_CONTACT" | "INSUFFICIENT_SCOPE" | "SCOPE_ESCALATION" | "DOMAIN_EXISTS" | "DOMAIN_NOT_ACTIVE" | "UNSUPPORTED_TLD" | "NOT_AVAILABLE" | "ALREADY_REGISTERED" | "TRANSFER_NOT_ELIGIBLE" | "ALREADY_LISTED" | "LISTING_SOLD" | "SELF_PURCHASE" | "DESCRIPTION_TOO_LONG" | "DEAL_NOT_FOUND" | "INVALID_DEAL_STATE" | "EPP_ATTEMPTS_EXCEEDED" | "ACTIVE_DEAL_EXISTS" | "AGENT_IDENTITY_NOT_FOUND" | "AGENT_IDENTITY_ESCALATION" | "CREDENTIAL_REVOKE_FAILED" | "INVALID_IDEMPOTENCY_KEY" | "IDEMPOTENCY_KEY_MISMATCH" | "IDEMPOTENCY_KEY_REUSED" | "OPERATION_IN_PROGRESS" | "OPERATION_SUPERSEDED" | "INVALID_OPERATION_RECEIPT" | "WORKSPACE_ADMIN_REQUIRED" | "WORKSPACE_OWNER_REQUIRED" | "PRINCIPAL_NOT_IN_WORKSPACE" | "MAILBOX_NOT_IN_WORKSPACE" | "GROUP_NOT_IN_WORKSPACE" | "COLLECTION_NOT_IN_WORKSPACE" | "ACCESS_VERSION_CONFLICT" | "ACCESS_OFFER_INVALID" | "ACCESS_OFFER_EMAIL_MISMATCH" | "MAIL_DOMAIN_CAPACITY_EXHAUSTED" | "MAIL_PROVIDER_ERROR" | "INVALID_HTTP_ROUTE_HOSTNAME" | "INVALID_HTTP_ROUTE_UPSTREAM" | "INVALID_HTTP_ROUTE_UPSTREAM_HEADERS" | "INVALID_HTTP_ROUTE_LEASE" | "INVALID_HTTP_ROUTE_POLICY" | "INVALID_HOSTNAME_BINDING" | "HTTP_ROUTE_HOSTNAME_NOT_ALLOWED" | "HTTP_ROUTE_HOSTNAME_REQUIRED" | "HTTP_ROUTE_HOSTNAME_RESERVED" | "HTTP_ROUTE_HOSTNAME_UNAVAILABLE" | "HTTP_ROUTE_CONCURRENCY_LIMIT" | "HTTP_ROUTE_WORKSPACE_LIMIT" | "HTTP_ROUTE_DOMAIN_NOT_OWNED" | "HTTP_ROUTE_TERMINAL" | "HTTP_ROUTE_VERIFICATION_NOT_ENABLED" | "HTTP_ROUTE_VERIFICATION_REQUIRES_HTTPS" | "HTTP_ROUTE_POLICY_WITHOUT_SCOPE" | "HTTP_ROUTE_POLICY_REQUIRED" | "HTTP_ROUTE_AGENT_IDENTITY_REQUIRED" | "HTTP_ROUTE_POLICY_ESCALATION" | "HOSTNAME_BINDING_NOT_ACTIVE" | "HOSTNAME_BINDING_DNS_CONFLICT" | "HOSTNAME_BINDING_ACK_REQUIRED" | "HOSTNAME_BINDING_BROWSER_MODE_MISMATCH" | "HOSTNAME_DNS_CONFLICT" | "ZONE_READ_FAILED" | "DNS_VERSION_CONFLICT" | "UNAUTHORIZED" | "APEX_WEB_MODE_CONFLICT" | "APEX_DELEGATION_ACK_REQUIRED" | "VERIFICATION_COOLDOWN" | "VERIFICATION_SEND_FAILED";
22
22
  /** Actionable recovery guidance for the caller */
23
23
  hint?: string;
24
24
  /** CLI command to resolve the error (e.g. 'domani login', 'domani billing'). Present in CLI --json output. */
@@ -31,6 +31,8 @@ export interface Error {
31
31
  fix_url?: string;
32
32
  /** Seconds until retry is allowed (present on 429 responses) */
33
33
  retry_after?: number;
34
+ /** Minutes until another verification email may be requested */
35
+ retry_after_minutes?: number;
34
36
  /** Whether retrying after the external condition changes is safe */
35
37
  retryable?: boolean;
36
38
  }
@@ -87,6 +89,89 @@ export interface DsRecord {
87
89
  /** Hex digest of the DNSKEY */
88
90
  digest: string;
89
91
  }
92
+ export interface HostnameBinding {
93
+ id: string;
94
+ hostname_pattern: string;
95
+ kind: "exact" | "wildcard";
96
+ browser_mode: "stateless" | "dedicated_site" | "trusted_same_site";
97
+ status: "manual_setup_required" | "pending_dns" | "pending_certificate" | "active" | "degraded" | "disabled" | "suspended";
98
+ certificate_status: string;
99
+ installed_records: DnsRecord[];
100
+ last_verified_at?: string | null;
101
+ created_at: string;
102
+ updated_at: string;
103
+ }
104
+ export interface HostnameBindingPlan {
105
+ hostname_pattern: string;
106
+ kind: "exact" | "wildcard";
107
+ browser_mode: "stateless" | "dedicated_site" | "trusted_same_site";
108
+ managed_dns: boolean;
109
+ zone_version: string;
110
+ certificate_kind: "exact" | "wildcard";
111
+ required_records: DnsRecord[];
112
+ conflicts: ({
113
+ code: "HOSTNAME_BINDING_DNS_CONFLICT" | "APEX_WEB_MODE_CONFLICT";
114
+ message: string;
115
+ record?: DnsRecord;
116
+ })[];
117
+ required_acknowledgements: string[];
118
+ warnings: string[];
119
+ }
120
+ export interface HostnameBindingReceipt {
121
+ hostname_binding: HostnameBinding;
122
+ idempotency_key: string;
123
+ idempotent_replay: boolean;
124
+ pending?: boolean;
125
+ manual_records?: DnsRecord[];
126
+ }
127
+ export interface HttpRoute {
128
+ id: string;
129
+ url: string;
130
+ hostname: string;
131
+ domain: string;
132
+ upstream: string;
133
+ /** Names of write-only headers injected toward the upstream; values are never returned */
134
+ upstream_header_names: string[];
135
+ host_header: "public" | "upstream";
136
+ browser_mode: "stateless" | "dedicated_site" | "trusted_same_site";
137
+ upstream_verification: {
138
+ mode: "none" | "signed_headers";
139
+ secret?: string;
140
+ };
141
+ status: "active" | "expired" | "deleted" | "suspended";
142
+ revision: number;
143
+ expires_at: string;
144
+ created_at: string;
145
+ updated_at?: string;
146
+ created_by: {
147
+ type: "user" | "agent" | "token";
148
+ id: string;
149
+ label: string;
150
+ };
151
+ }
152
+ export interface HttpRouteReceipt {
153
+ http_route: HttpRoute;
154
+ idempotency_key: string;
155
+ idempotent_replay: boolean;
156
+ hint?: string;
157
+ }
158
+ export interface HttpRouteVerificationReceipt {
159
+ http_route: HttpRoute;
160
+ upstream_verification: {
161
+ mode: "signed_headers";
162
+ secret: string;
163
+ };
164
+ idempotency_key: string;
165
+ idempotent_replay: boolean;
166
+ hint?: string;
167
+ }
168
+ export interface HttpRouteHeadersReceipt {
169
+ http_route: HttpRoute;
170
+ upstream_header_names: string[];
171
+ idempotency_key: string;
172
+ idempotent_replay: boolean;
173
+ hint?: string;
174
+ }
90
175
  export interface AgentIdentity {
91
176
  /** Stable identity id used to bind scoped API tokens */
92
177
  id: string;
@@ -147,7 +232,7 @@ export interface MailRule {
147
232
  match_field?: "from" | "to" | "subject" | "body";
148
233
  match_op?: "contains" | "equals" | "regex";
149
234
  match_value?: string;
150
- action?: "drop" | "mark_read" | "forward" | "webhook_only" | "label";
235
+ action?: "drop" | "mark_read" | "forward" | "webhook_only" | "label" | "escalate";
151
236
  action_arg?: string | null;
152
237
  enabled?: boolean;
153
238
  created_at?: string;
@@ -157,7 +242,7 @@ export interface MailboxOperationReceipt {
157
242
  idempotency_key: string;
158
243
  /** True when this response reused the immutable completed receipt and performed no new mutation. */
159
244
  idempotent_replay: boolean;
160
- action: "move" | "mark_read" | "star" | "restore" | "delete_permanently";
245
+ action: "move" | "mark_read" | "star" | "restore" | "delete_permanently" | "label";
161
246
  status: "succeeded" | "partial";
162
247
  results: ({
163
248
  message_id: string;
@@ -183,7 +268,7 @@ export interface LegacyMailboxOperationReceipt {
183
268
  idempotency_key: string;
184
269
  /** True when this response reused the immutable completed receipt and performed no new mutation. */
185
270
  idempotent_replay: boolean;
186
- action: "move" | "mark_read" | "star" | "restore" | "delete_permanently";
271
+ action: "move" | "mark_read" | "star" | "restore" | "delete_permanently" | "label";
187
272
  status: "succeeded" | "partial";
188
273
  results: ({
189
274
  message_id: string;
@@ -219,6 +304,138 @@ export interface WorkspaceSummary {
219
304
  }[];
220
305
  created_at: string;
221
306
  }
307
+ export interface AssistantSettings {
308
+ enabled?: boolean;
309
+ shadow_enabled?: boolean;
310
+ paused?: boolean;
311
+ mailbox_ids?: string[];
312
+ /** Mailboxes operated by your agents. Their items appear in the agents section of Today instead of Needs you. */
313
+ agent_mailbox_ids?: string[];
314
+ /** Your agent identities, for delegation. */
315
+ agents?: ({
316
+ slug?: string;
317
+ name?: string;
318
+ emoji?: string | null;
319
+ })[];
320
+ /** Mailboxes whose mail is searched by words only: their messages are never sent to the embedding model. */
321
+ search_opt_out_mailbox_ids?: string[];
322
+ history_window_days?: number;
323
+ privacy_route?: "private_cloud";
324
+ attachment_vision?: boolean;
325
+ pipeline_version?: string;
326
+ consent?: {
327
+ required_version?: string;
328
+ accepted_version?: string | null;
329
+ accepted_at?: string | null;
330
+ };
331
+ mailboxes?: ({
332
+ id?: string;
333
+ slug?: string;
334
+ domain?: string;
335
+ name?: string | null;
336
+ kind?: string;
337
+ address?: string;
338
+ })[];
339
+ }
340
+ export interface AssistantWorkItem {
341
+ id?: string;
342
+ version?: number;
343
+ status?: "open" | "needs_judgment" | "snoozed" | "waiting" | "handled" | "ignored";
344
+ title?: string;
345
+ summary?: string;
346
+ /** The single thing the owner must do or decide, or null. */
347
+ ask?: string | null;
348
+ sender?: {
349
+ address?: string;
350
+ name?: string | null;
351
+ kind?: "human" | "automated" | "self" | "harness";
352
+ } | null;
353
+ /** How often this same situation came back: one item, N messages. */
354
+ recurrence?: {
355
+ count?: number;
356
+ first_seen_at?: string | null;
357
+ last_seen_at?: string | null;
358
+ };
359
+ mailbox?: {
360
+ id?: string;
361
+ address?: string;
362
+ name?: string | null;
363
+ operator?: "human" | "agent";
364
+ agent?: {
365
+ name?: string;
366
+ emoji?: string | null;
367
+ } | null;
368
+ };
369
+ opened_at?: string | null;
370
+ /** The slug of the agent the owner handed this item to, or null. */
371
+ delegated_to?: string | null;
372
+ /** True until the owner opens the item after its latest change. */
373
+ unread?: boolean;
374
+ /** The source messages behind this item, newest first. */
375
+ messages?: ({
376
+ id?: string;
377
+ subject?: string | null;
378
+ from?: string;
379
+ received_at?: string;
380
+ conversation_id?: string | null;
381
+ })[];
382
+ /** What already happened in this matter, oldest first: one line per earlier message. */
383
+ history?: {
384
+ message_id?: string;
385
+ occurred_at?: string;
386
+ sender?: string;
387
+ title?: string;
388
+ }[];
389
+ source?: {
390
+ type?: string;
391
+ conversation_id?: string | null;
392
+ event_id?: string;
393
+ revision?: number;
394
+ };
395
+ attention?: {
396
+ level?: "now" | "needs_you" | "fyi" | "quiet";
397
+ reason?: string;
398
+ confidence?: string;
399
+ deadline?: string | null;
400
+ };
401
+ analysis?: {
402
+ coverage?: string;
403
+ warnings?: string[];
404
+ };
405
+ evidence_refs?: string[];
406
+ entity_refs?: string[];
407
+ snoozed_until?: string | null;
408
+ decision?: {
409
+ id?: string;
410
+ version?: number;
411
+ status?: string;
412
+ question?: string;
413
+ options?: {
414
+ id?: string;
415
+ label?: string;
416
+ recommended?: boolean;
417
+ outcome?: string;
418
+ }[];
419
+ } | null;
420
+ plan?: {
421
+ id?: string;
422
+ status?: string;
423
+ expires_at?: string;
424
+ } | null;
425
+ }
426
+ export interface AssistantTodayView {
427
+ type?: "today";
428
+ as_of?: string;
429
+ projection_lag_ms?: number;
430
+ sections?: {
431
+ now?: AssistantWorkItem[];
432
+ needs_you?: AssistantWorkItem[];
433
+ agents?: AssistantWorkItem[];
434
+ waiting?: AssistantWorkItem[];
435
+ upcoming?: AssistantWorkItem[];
436
+ handled?: AssistantWorkItem[];
437
+ };
438
+ }
222
439
  export type MailboxEffectiveCapabilities = ("mail.read" | "mail.search" | "mail.auth.read" | "mail.seen.write" | "mail.lifecycle.write" | "mail.delete.permanent" | "draft.create" | "mail.submit" | "conversation.read" | "conversation.assign" | "conversation.note" | "conversation.close" | "mailbox.manage" | "routing.manage" | "delivery.manage" | "mail.client.connect" | "mail.credentials.create_self" | "mail.credentials.revoke_self" | "workspace.members.manage" | "workspace.billing.manage")[];
223
440
  export interface WorkspaceDetail {
224
441
  id: string;
@@ -378,6 +595,197 @@ export interface MailActivity {
378
595
  metadata: Record<string, unknown>;
379
596
  created_at: string;
380
597
  }
598
+ export interface EmailThread {
599
+ /** Thread id, the id of its first message */
600
+ id: string;
601
+ /** Subject of the first message */
602
+ subject?: string | null;
603
+ /** Every address that wrote or received in the thread */
604
+ participants: string[];
605
+ message_count: number;
606
+ /** Unread inbound messages */
607
+ unread_count: number;
608
+ starred: boolean;
609
+ has_attachments: boolean;
610
+ first_message_at: string;
611
+ last_message_at: string;
612
+ last_message: {
613
+ id: string;
614
+ direction: "in" | "out";
615
+ from: string;
616
+ to: string;
617
+ subject?: string | null;
618
+ snippet: string;
619
+ folder: string;
620
+ is_read: boolean;
621
+ created_at: string;
622
+ };
623
+ }
624
+ export interface AssistantBrief {
625
+ id: string;
626
+ version: number;
627
+ generated_at: string;
628
+ title: string;
629
+ summary: string;
630
+ ask?: string | null;
631
+ mailbox?: {
632
+ id?: string;
633
+ address?: string;
634
+ name?: string | null;
635
+ operator?: "human" | "agent";
636
+ };
637
+ delegated_to?: string | null;
638
+ situation: {
639
+ key?: string;
640
+ status?: string;
641
+ attention?: {
642
+ level?: string;
643
+ reason?: string;
644
+ confidence?: string;
645
+ deadline?: string | null;
646
+ };
647
+ occurrences?: number;
648
+ first_seen_at?: string | null;
649
+ last_seen_at?: string | null;
650
+ sender?: {
651
+ address?: string;
652
+ name?: string | null;
653
+ kind?: string;
654
+ } | null;
655
+ };
656
+ /** Every mail of the situation, oldest first, with the one-line title the analysis gave it */
657
+ story: {
658
+ message_id?: string;
659
+ occurred_at?: string;
660
+ sender?: string;
661
+ title?: string;
662
+ analysed?: boolean;
663
+ }[];
664
+ facts: ({
665
+ key?: string | null;
666
+ subject?: string | null;
667
+ predicate?: string | null;
668
+ object?: string | null;
669
+ value?: {
670
+ type?: string;
671
+ value?: string | null;
672
+ currency?: string | null;
673
+ } | null;
674
+ basis?: string | null;
675
+ confidence?: number | null;
676
+ valid_from?: string | null;
677
+ valid_until?: string | null;
678
+ sensitivity?: string;
679
+ evidence_refs?: string[];
680
+ seen_at?: string;
681
+ })[];
682
+ entities: {
683
+ kind?: string;
684
+ name?: string;
685
+ aliases?: string[];
686
+ ref?: string;
687
+ }[];
688
+ /** Open promises made by the owner's side */
689
+ commitments: ({
690
+ id?: string;
691
+ who?: string;
692
+ owed_to?: string | null;
693
+ what?: string;
694
+ due_at?: string | null;
695
+ overdue?: boolean;
696
+ status?: string;
697
+ })[];
698
+ /** Open things awaited from others */
699
+ expectations: ({
700
+ id?: string;
701
+ who?: string;
702
+ what?: string;
703
+ due_at?: string | null;
704
+ overdue?: boolean;
705
+ status?: string;
706
+ })[];
707
+ /** Closed loops and receipts, newest first */
708
+ settled: ({
709
+ kind?: "commitment" | "expectation" | "receipt";
710
+ who?: string;
711
+ what?: string;
712
+ status?: string;
713
+ at?: string;
714
+ })[];
715
+ awaiting: ({
716
+ who?: string;
717
+ what?: string;
718
+ since?: string;
719
+ due_at?: string | null;
720
+ overdue?: boolean;
721
+ })[];
722
+ /** The current prepared Decision with its options */
723
+ decision?: Record<string, unknown> | null;
724
+ suggested_next: {
725
+ action?: string;
726
+ reason?: string;
727
+ source?: "decision" | "rule";
728
+ } | null;
729
+ evidence: ({
730
+ id?: string;
731
+ subject?: string | null;
732
+ from?: string;
733
+ received_at?: string;
734
+ conversation_id?: string | null;
735
+ })[];
736
+ evidence_refs?: string[];
737
+ }
738
+ export interface Fact {
739
+ key?: string | null;
740
+ subject?: string | null;
741
+ predicate?: string | null;
742
+ object?: string | null;
743
+ value?: {
744
+ type?: "string" | "date" | "money";
745
+ value?: string | null;
746
+ currency?: string | null;
747
+ } | null;
748
+ basis?: "source_explicit" | "source_implied" | "model_inference" | null | null;
749
+ confidence?: number | null;
750
+ valid_from?: string | null;
751
+ valid_until?: string | null;
752
+ sensitivity?: string;
753
+ evidence_refs?: string[];
754
+ seen_at?: string;
755
+ }
756
+ export interface MessageFacts {
757
+ message_id: string;
758
+ thread_id: string;
759
+ analysed: boolean;
760
+ /** Only when analysed is false */
761
+ reason?: "not_enabled" | "not_analysed";
762
+ analysis?: {
763
+ id?: string;
764
+ generated_at?: string;
765
+ coverage?: string;
766
+ warnings?: string[];
767
+ pipeline_version?: string;
768
+ };
769
+ facts: Fact[];
770
+ entities: {
771
+ kind?: string;
772
+ name?: string;
773
+ aliases?: string[];
774
+ ref?: string;
775
+ }[];
776
+ commitments: ({
777
+ who?: string;
778
+ what?: string;
779
+ due_at?: string | null;
780
+ evidence_refs?: string[];
781
+ })[];
782
+ expectations: ({
783
+ who?: string;
784
+ what?: string;
785
+ due_at?: string | null;
786
+ evidence_refs?: string[];
787
+ })[];
788
+ }
381
789
  export interface MailboxChange {
382
790
  /** Monotonic sequence serialized as a string */
383
791
  sequence: string;
@@ -458,6 +866,7 @@ export interface DomainBrief {
458
866
  detectedAt: string;
459
867
  type: "identity" | "content" | "redirect" | "registration";
460
868
  summary: string;
869
+ data?: Record<string, unknown>;
461
870
  evidenceIds: string[];
462
871
  })[];
463
872
  };
@@ -523,6 +932,7 @@ export interface DomainBrief {
523
932
  claimKey: string;
524
933
  label: string;
525
934
  value: string;
935
+ data?: Record<string, unknown>;
526
936
  source: string;
527
937
  sourceUrl?: string;
528
938
  confidence: "high" | "medium" | "low";
@@ -559,11 +969,57 @@ export interface Backorder {
559
969
  caught_at?: string | null;
560
970
  /** ID of the Domain created when caught */
561
971
  registered_domain_id?: string | null;
562
- failure_reason?: string | null;
972
+ /** Stable, language-independent failure code. Internal registrar prose is never returned. */
973
+ failure_reason?: "price_cap" | "registration_race" | "marketplace_listing" | "payment" | "registrar" | "unavailable" | "unexpected" | "unspecified" | null;
563
974
  /** When the watch window ends */
564
975
  expires_at?: string;
565
976
  created_at?: string;
566
977
  }
978
+ export interface BuyDomainItem {
979
+ domain: string;
980
+ status: "active" | "provisioning";
981
+ expires?: string | null;
982
+ price: number;
983
+ currency: string;
984
+ years: number;
985
+ payment_method: "card" | "balance" | "x402" | "crypto";
986
+ payment_tx?: string;
987
+ auto_renew: boolean;
988
+ marketplace_purchase?: boolean;
989
+ }
990
+ export interface BuyDomainFailure {
991
+ domain: string;
992
+ error: string;
993
+ failure_code: "registration_race" | "payment" | "registrar" | "unexpected" | "marketplace_listing";
994
+ }
995
+ export interface BuyDomainRegistrationError {
996
+ error: string;
997
+ code: "REGISTRATION_FAILED";
998
+ failure_code: "payment" | "registrar" | "unexpected";
999
+ refunded?: boolean;
1000
+ hint?: string;
1001
+ documentation_url?: string;
1002
+ }
1003
+ export interface BuyDomainAvailabilityError {
1004
+ error: string;
1005
+ code: "DOMAIN_UNAVAILABLE";
1006
+ failure_code: "registration_race";
1007
+ hint?: string;
1008
+ documentation_url?: string;
1009
+ }
1010
+ export interface BuyDomainBulkResult {
1011
+ results: BuyDomainItem[];
1012
+ errors: BuyDomainFailure[];
1013
+ summary: {
1014
+ total: number;
1015
+ succeeded: number;
1016
+ failed: number;
1017
+ charged: number;
1018
+ refunded: number;
1019
+ };
1020
+ hint: string;
1021
+ next_steps: string[];
1022
+ }
567
1023
  export interface DealInvoice {
568
1024
  deal_id?: string;
569
1025
  domain?: string;
@@ -668,7 +1124,7 @@ export interface TokenInfo {
668
1124
  /** Whether this token has expired */
669
1125
  expired?: boolean;
670
1126
  /** Permission scopes granted to this token. ['*'] means full access. */
671
- scopes?: string[];
1127
+ scopes: string[];
672
1128
  createdAt: string;
673
1129
  /** Per-transaction spend cap in USD (null = uncapped) */
674
1130
  max_per_tx?: number | null;
@@ -678,6 +1134,9 @@ export interface TokenInfo {
678
1134
  spent_this_month?: number;
679
1135
  /** Id of the token that minted this one (null = created via dashboard/session) */
680
1136
  parent_token_id?: string | null;
1137
+ /** Mailbox ids this token is confined to. Empty means no mailbox-id confinement. */
1138
+ mailbox_ids: string[];
1139
+ http_route_policy: HttpRoutePolicy | null;
681
1140
  /** Agent identity represented by this token. Its mail actions are attributed to this agent. */
682
1141
  agent_identity?: {
683
1142
  id?: string;
@@ -685,6 +1144,19 @@ export interface TokenInfo {
685
1144
  slug?: string;
686
1145
  } | null;
687
1146
  }
1147
+ export interface HttpRoutePolicy {
1148
+ hostname_rules: ({
1149
+ domain: string;
1150
+ kind: "exact";
1151
+ hostname: string;
1152
+ } | {
1153
+ domain: string;
1154
+ kind: "subdomain_prefix";
1155
+ prefix: string;
1156
+ })[];
1157
+ max_concurrent: number;
1158
+ max_lease_seconds: number;
1159
+ }
688
1160
  export interface Contact {
689
1161
  /** Contact name */
690
1162
  name?: string | null;
@@ -757,6 +1229,9 @@ export interface AccountInfo {
757
1229
  domain_count: number;
758
1230
  /** Number of active API tokens */
759
1231
  token_count: number;
1232
+ /** Feature flags enabled for this account (GA features plus the preview features granted to the user), e.g. mailzero_assistant */
1233
+ features?: string[];
1234
+ is_admin?: boolean;
760
1235
  created_at: string;
761
1236
  }
762
1237
  export interface ActivationProjection {
@@ -798,19 +1273,26 @@ export declare class Domani {
798
1273
  request<T = unknown>(method: string, path: string, opts?: {
799
1274
  query?: Record<string, unknown>;
800
1275
  body?: unknown;
1276
+ headers?: Record<string, string | undefined>;
801
1277
  }): Promise<T>;
1278
+ /** Open a server-sent event stream; read `response.body` with an SSE parser. */
1279
+ stream(method: string, path: string, opts?: {
1280
+ query?: Record<string, unknown>;
1281
+ headers?: Record<string, string | undefined>;
1282
+ signal?: AbortSignal;
1283
+ }): Promise<Response>;
802
1284
  /** Accept an access or ownership offer (POST /api/workspaces/access/offers/accept) */
803
1285
  acceptWorkspaceAccessOffer(body: {
804
1286
  token: string;
805
- }): Promise<unknown>;
1287
+ }): Promise<void>;
806
1288
  /** Accept a workspace invitation (POST /api/workspaces/invitations/accept) */
807
1289
  acceptWorkspaceInvitation(body: {
808
1290
  token: string;
809
- }): Promise<unknown>;
1291
+ }): Promise<void>;
810
1292
  /** Accept workspace ownership (POST /api/workspaces/ownership-transfers/accept) */
811
1293
  acceptWorkspaceOwnershipTransfer(body: {
812
1294
  token: string;
813
- }): Promise<unknown>;
1295
+ }): Promise<void>;
814
1296
  /** Add a private conversation note (POST /api/email/collaboration/{id}/notes) */
815
1297
  addConversationNote(id: string, body: {
816
1298
  body: string;
@@ -837,7 +1319,7 @@ export declare class Domani {
837
1319
  match_field: "from" | "to" | "subject" | "body";
838
1320
  match_op: "contains" | "equals" | "regex";
839
1321
  match_value: string;
840
- action: "drop" | "mark_read" | "forward" | "webhook_only" | "label";
1322
+ action: "drop" | "mark_read" | "forward" | "webhook_only" | "label" | "escalate";
841
1323
  action_arg?: string;
842
1324
  priority?: number;
843
1325
  enabled?: boolean;
@@ -856,7 +1338,7 @@ export declare class Domani {
856
1338
  /** Adopt an owned mailbox into a workspace (POST /api/workspaces/{id}/mailboxes) */
857
1339
  attachWorkspaceMailbox(id: string, body: {
858
1340
  mailbox_id: string;
859
- }): Promise<unknown>;
1341
+ }): Promise<void>;
860
1342
  /** Buy an aftermarket domain (POST /api/domains/{domain}/buy-aftermarket) */
861
1343
  buyAftermarket(domain: string, body?: {
862
1344
  max_price?: number;
@@ -884,17 +1366,7 @@ export declare class Domani {
884
1366
  years?: number;
885
1367
  max_price?: number;
886
1368
  ref?: string;
887
- }): Promise<{
888
- domain?: string;
889
- status?: "active";
890
- expires?: string;
891
- price?: number;
892
- currency?: string;
893
- years?: number;
894
- payment_method?: "card" | "x402" | "crypto";
895
- payment_tx?: string;
896
- marketplace_purchase?: boolean;
897
- }>;
1369
+ }, paymentSignature?: string): Promise<BuyDomainItem | BuyDomainBulkResult>;
898
1370
  /** Cancel a backorder (DELETE /api/backorders/{id}) */
899
1371
  cancelBackorder(id: string): Promise<{
900
1372
  id?: string;
@@ -1047,6 +1519,33 @@ export declare class Domani {
1047
1519
  next_steps?: string[];
1048
1520
  diff?: Record<string, unknown>;
1049
1521
  }>;
1522
+ /** Give an agent its own API key in one call (POST /api/agents/identity/{slug}/tokens) */
1523
+ createAgentToken(slug: string, body?: {
1524
+ name?: string;
1525
+ scopes?: string[];
1526
+ mailboxes?: string[];
1527
+ expires_in?: number;
1528
+ }): Promise<{
1529
+ success?: boolean;
1530
+ token?: {
1531
+ id?: string;
1532
+ name?: string;
1533
+ key?: string;
1534
+ scopes?: string[];
1535
+ mailbox_ids?: string[];
1536
+ expires_at?: string | null;
1537
+ agent_identity?: {
1538
+ id?: string;
1539
+ name?: string | null;
1540
+ slug?: string;
1541
+ } | null;
1542
+ };
1543
+ agent?: {
1544
+ slug?: string;
1545
+ name?: string | null;
1546
+ };
1547
+ hint?: string;
1548
+ }>;
1050
1549
  /** Place a backorder on a taken domain (POST /api/backorders) */
1051
1550
  createBackorder(body: {
1052
1551
  domain: string;
@@ -1080,6 +1579,22 @@ export declare class Domani {
1080
1579
  }): Promise<{
1081
1580
  brief: DomainBrief;
1082
1581
  }>;
1582
+ /** Create an HTTP hostname binding (POST /api/domains/{domain}/hostname-bindings) */
1583
+ createHostnameBinding(domain: string, body: {
1584
+ hostname: string;
1585
+ browser_mode?: "stateless" | "dedicated_site" | "trusted_same_site";
1586
+ expected_zone_version?: string;
1587
+ acknowledgements?: string[];
1588
+ }, idempotencyKey: string): Promise<HostnameBindingReceipt>;
1589
+ /** Publish a leased HTTP route (POST /api/http-routes) */
1590
+ createHttpRoute(body: {
1591
+ hostname?: string;
1592
+ upstream: string;
1593
+ expires_in?: number;
1594
+ host_header?: "public" | "upstream";
1595
+ upstream_verification?: "none" | "signed_headers";
1596
+ upstream_headers?: Record<string, string>;
1597
+ }, idempotencyKey: string): Promise<HttpRouteReceipt>;
1083
1598
  /** List a domain for sale (PUT /api/domains/{domain}/for-sale) */
1084
1599
  createListing(domain: string, body: {
1085
1600
  price: number;
@@ -1180,6 +1695,21 @@ export declare class Domani {
1180
1695
  max_per_tx?: number;
1181
1696
  max_per_month?: number;
1182
1697
  agent_identity_id?: string;
1698
+ http_route_policy?: {
1699
+ hostname_rules: ({
1700
+ domain: string;
1701
+ kind: "exact";
1702
+ hostname: string;
1703
+ } | {
1704
+ domain: string;
1705
+ kind: "subdomain_prefix";
1706
+ prefix: string;
1707
+ })[];
1708
+ max_concurrent?: number;
1709
+ max_lease_seconds?: number;
1710
+ acknowledge_apex_delegation?: boolean;
1711
+ };
1712
+ mailboxes?: string[];
1183
1713
  }): Promise<{
1184
1714
  id?: string;
1185
1715
  name?: string;
@@ -1189,6 +1719,8 @@ export declare class Domani {
1189
1719
  createdAt?: string;
1190
1720
  max_per_tx?: number | null;
1191
1721
  max_per_month?: number | null;
1722
+ mailbox_ids?: string[];
1723
+ http_route_policy?: HttpRoutePolicy | null;
1192
1724
  agent_identity?: {
1193
1725
  id?: string;
1194
1726
  name?: string | null;
@@ -1199,7 +1731,7 @@ export declare class Domani {
1199
1731
  createWebhook(body: {
1200
1732
  url: string;
1201
1733
  events: string[];
1202
- headers?: Record<string, unknown>;
1734
+ headers?: Record<string, string>;
1203
1735
  }): Promise<{
1204
1736
  id?: string;
1205
1737
  url?: string;
@@ -1213,7 +1745,7 @@ export declare class Domani {
1213
1745
  /** Create a workspace (POST /api/workspaces) */
1214
1746
  createWorkspace(body: {
1215
1747
  name: string;
1216
- }): Promise<unknown>;
1748
+ }): Promise<void>;
1217
1749
  /** Offer mailbox access or workspace ownership (POST /api/workspaces/{id}/access/offers) */
1218
1750
  createWorkspaceAccessOffer(id: string, body: {
1219
1751
  email: string;
@@ -1221,7 +1753,7 @@ export declare class Domani {
1221
1753
  ownership_disposition?: "unchanged" | "claim";
1222
1754
  creator_disposition?: "stay" | "stay_admin" | "leave";
1223
1755
  billing_disposition?: "unchanged" | "sponsor" | "transfer";
1224
- }): Promise<unknown>;
1756
+ }): Promise<void>;
1225
1757
  /** Start Mailzero workspace checkout (POST /api/workspaces/{id}/billing/checkout) */
1226
1758
  createWorkspaceCheckout(id: string, body: {
1227
1759
  plan: "mail_solo" | "mail_team" | "mail_business";
@@ -1235,6 +1767,19 @@ export declare class Domani {
1235
1767
  deleted?: boolean;
1236
1768
  hint?: string;
1237
1769
  }>;
1770
+ /** Delete assistant-derived data (DELETE /api/assistant/data) */
1771
+ deleteAssistantData(): Promise<{
1772
+ ok?: boolean;
1773
+ deleted?: {
1774
+ work_items?: number;
1775
+ claims?: number;
1776
+ entities?: number;
1777
+ jobs?: number;
1778
+ };
1779
+ source_mail_deleted?: false;
1780
+ }>;
1781
+ /** Delete a contact (DELETE /api/contacts/{address}) */
1782
+ deleteContact(address: string): Promise<void>;
1238
1783
  /** Remove a DNSSEC DS record (disable DNSSEC) (DELETE /api/domains/{domain}/dnssec) */
1239
1784
  deleteDnssecRecord(domain: string, query?: {
1240
1785
  keyTag: string;
@@ -1244,10 +1789,18 @@ export declare class Domani {
1244
1789
  enabled?: boolean;
1245
1790
  records?: DsRecord[];
1246
1791
  }>;
1792
+ /** Disable an HTTP hostname binding (DELETE /api/domains/{domain}/hostname-bindings/{id}) */
1793
+ deleteHostnameBinding(domain: string, id: string): Promise<{
1794
+ disabled: boolean;
1795
+ cleanup_pending: boolean;
1796
+ manual_cleanup_records?: DnsRecord[];
1797
+ }>;
1798
+ /** Terminate a route without releasing its hostname claim (DELETE /api/http-routes/{id}) */
1799
+ deleteHttpRoute(id: string): Promise<void>;
1247
1800
  /** Delete a mailbox (DELETE /api/emails/{address}) */
1248
1801
  deleteMailboxByAddress(address: string, body?: {
1249
1802
  confirm?: boolean;
1250
- }): Promise<unknown>;
1803
+ }): Promise<void>;
1251
1804
  /** Delete a message (DELETE /api/emails/{address}/messages/{id}) */
1252
1805
  deleteMessageByAddress(address: string, id: string): Promise<{
1253
1806
  id?: string;
@@ -1257,7 +1810,7 @@ export declare class Domani {
1257
1810
  deleteMessagesByAddress(address: string, body?: {
1258
1811
  message_ids: string[];
1259
1812
  idempotency_key?: string;
1260
- }): Promise<LegacyMailboxOperationReceipt>;
1813
+ }, idempotencyKey?: string): Promise<LegacyMailboxOperationReceipt>;
1261
1814
  /** Delete webhook (DELETE /api/webhooks/{id}) */
1262
1815
  deleteWebhook(id: string): Promise<{
1263
1816
  success?: boolean;
@@ -1272,6 +1825,48 @@ export declare class Domani {
1272
1825
  taken?: string[];
1273
1826
  candidates?: string[];
1274
1827
  }>;
1828
+ /** Flag a message for a human (POST /api/emails/{address}/messages/{id}/escalate) */
1829
+ escalateMessageByAddress(address: string, id: string, body?: {
1830
+ reason?: string;
1831
+ clear?: boolean;
1832
+ }): Promise<{
1833
+ id?: string;
1834
+ needs_human?: boolean;
1835
+ escalation_reason?: string | null;
1836
+ thread_key?: string;
1837
+ }>;
1838
+ /** OAuth token endpoint (POST /api/oauth/token) */
1839
+ exchangeOAuthToken(): Promise<{
1840
+ access_token?: string;
1841
+ token_type?: string;
1842
+ expires_in?: number;
1843
+ refresh_token?: string;
1844
+ scope?: string;
1845
+ }>;
1846
+ /** Export derived assistant data (GET /api/assistant/data) */
1847
+ exportAssistantData(): Promise<{
1848
+ format?: "mailzero-derived-export.v1";
1849
+ exported_at?: string;
1850
+ note?: string;
1851
+ }>;
1852
+ /** Extract the fields you need from a message with your own schema (POST /api/emails/{address}/messages/{id}/extract) */
1853
+ extractFromEmailMessage(address: string, id: string, body: {
1854
+ schema: Record<string, unknown>;
1855
+ instructions?: string;
1856
+ }): Promise<{
1857
+ message_id: string;
1858
+ data: Record<string, unknown>;
1859
+ confidence: number;
1860
+ evidence_quotes: string[];
1861
+ model: string;
1862
+ cached: boolean;
1863
+ generated_at: string;
1864
+ usage?: {
1865
+ input_tokens?: number;
1866
+ output_tokens?: number;
1867
+ latency_ms?: number;
1868
+ };
1869
+ }>;
1275
1870
  /** Finalize an agreed negotiation (pay) (POST /api/negotiations/{id}/finalize) */
1276
1871
  finalizeNegotiation(id: string, body?: {
1277
1872
  payment_method?: "card" | "usdc" | "balance";
@@ -1295,6 +1890,127 @@ export declare class Domani {
1295
1890
  getAccount(): Promise<AccountInfo>;
1296
1891
  /** Get truthful activation state and recommended next actions (GET /api/me/activation) */
1297
1892
  getActivation(): Promise<ActivationProjection>;
1893
+ /** Get the exact action preview by opaque ID (GET /api/assistant/action-plans/{id}) */
1894
+ getAssistantActionPlan(id: string): Promise<{
1895
+ id?: string;
1896
+ status?: "proposed" | "approved" | "executed" | "stale" | "expired";
1897
+ expires_at?: string;
1898
+ source_revision?: number;
1899
+ effects?: ({
1900
+ kind?: "reply";
1901
+ mailbox_id?: string;
1902
+ reply_to_message_id?: string;
1903
+ body?: string;
1904
+ commitments?: Record<string, unknown>[];
1905
+ expected_reply?: Record<string, unknown> | null;
1906
+ })[];
1907
+ }>;
1908
+ /** Get content-minimized assistant Activity (GET /api/assistant/activity) */
1909
+ getAssistantActivity(query?: {
1910
+ limit?: number;
1911
+ }): Promise<{
1912
+ type?: "activity";
1913
+ as_of?: string;
1914
+ events?: ({
1915
+ id?: string;
1916
+ kind?: "interaction" | "receipt";
1917
+ action?: string;
1918
+ status?: string;
1919
+ actor?: string;
1920
+ work_item?: {
1921
+ id?: string;
1922
+ title?: string;
1923
+ };
1924
+ occurred_at?: string;
1925
+ })[];
1926
+ }>;
1927
+ /** Get background history-import progress (GET /api/assistant/backfill) */
1928
+ getAssistantBackfill(): Promise<{
1929
+ backfill?: {
1930
+ id?: string;
1931
+ status?: "queued" | "scanning" | "processing" | "completed" | "cancelled";
1932
+ phase?: string;
1933
+ paused?: boolean;
1934
+ processed?: number;
1935
+ total?: number;
1936
+ failed?: number;
1937
+ percent?: number | null;
1938
+ estimated_seconds_remaining?: number | null;
1939
+ estimated_completion_at?: string | null;
1940
+ can_close_app?: boolean;
1941
+ started_at?: string;
1942
+ completed_at?: string | null;
1943
+ } | null;
1944
+ }>;
1945
+ /** Read the situation brief for a correspondent (GET /api/assistant/brief) */
1946
+ getAssistantCorrespondentBrief(query?: {
1947
+ correspondent: string;
1948
+ mailbox?: string;
1949
+ }): Promise<{
1950
+ correspondent: string;
1951
+ mailboxes: string[];
1952
+ brief: AssistantBrief | unknown;
1953
+ related: {
1954
+ id?: string;
1955
+ title?: string;
1956
+ status?: string;
1957
+ attention_level?: string;
1958
+ occurrences?: number;
1959
+ last_seen_at?: string;
1960
+ }[];
1961
+ recent_mail: ({
1962
+ id?: string;
1963
+ thread_id?: string;
1964
+ subject?: string | null;
1965
+ mailbox?: string;
1966
+ received_at?: string;
1967
+ })[];
1968
+ generated_at: string;
1969
+ }>;
1970
+ /** Get Mailzero assistant settings (GET /api/assistant/settings) */
1971
+ getAssistantSettings(): Promise<AssistantSettings>;
1972
+ /** Get the grounded Today decision queue (GET /api/assistant/today) */
1973
+ getAssistantToday(query?: {
1974
+ agent?: string;
1975
+ }): Promise<AssistantTodayView>;
1976
+ /** Get one assistant Work item and exact current plan (GET /api/assistant/work-items/{id}) */
1977
+ getAssistantWorkItem(id: string): Promise<AssistantWorkItem>;
1978
+ /** Read the situation brief of a Work item (GET /api/assistant/work-items/{id}/brief) */
1979
+ getAssistantWorkItemBrief(id: string): Promise<AssistantBrief>;
1980
+ /** Read the facts behind a Work item (GET /api/assistant/work-items/{id}/facts) */
1981
+ getAssistantWorkItemFacts(id: string): Promise<{
1982
+ work_item_id: string;
1983
+ version?: number;
1984
+ analysed: boolean;
1985
+ analyses?: {
1986
+ id?: string;
1987
+ generated_at?: string;
1988
+ coverage?: string;
1989
+ }[];
1990
+ facts: Fact[];
1991
+ entities: {
1992
+ kind?: string;
1993
+ name?: string;
1994
+ aliases?: string[];
1995
+ ref?: string;
1996
+ }[];
1997
+ commitments: ({
1998
+ id?: string;
1999
+ who?: string;
2000
+ owed_to?: string | null;
2001
+ what?: string;
2002
+ due_at?: string | null;
2003
+ status?: string;
2004
+ })[];
2005
+ expectations: ({
2006
+ id?: string;
2007
+ who?: string;
2008
+ what?: string;
2009
+ due_at?: string | null;
2010
+ status?: string;
2011
+ })[];
2012
+ evidence_refs?: string[];
2013
+ }>;
1298
2014
  /** Get EPP auth code (GET /api/domains/{domain}/auth-code) */
1299
2015
  getAuthCode(domain: string): Promise<{
1300
2016
  domain: string;
@@ -1440,7 +2156,7 @@ export declare class Domani {
1440
2156
  }[];
1441
2157
  };
1442
2158
  sending_health: {
1443
- recipients?: Record<string, unknown>;
2159
+ recipients?: Record<string, number>;
1444
2160
  rates?: {
1445
2161
  bounce?: number;
1446
2162
  complaint?: number;
@@ -1466,6 +2182,16 @@ export declare class Domani {
1466
2182
  })[];
1467
2183
  caveats?: string[];
1468
2184
  }>;
2185
+ /** Read what the assistant established about a message (GET /api/emails/{address}/messages/{id}/facts) */
2186
+ getEmailMessageFacts(address: string, id: string): Promise<MessageFacts>;
2187
+ /** Get an HTTP hostname binding (GET /api/domains/{domain}/hostname-bindings/{id}) */
2188
+ getHostnameBinding(domain: string, id: string): Promise<{
2189
+ hostname_binding: HostnameBinding;
2190
+ }>;
2191
+ /** Get a leased HTTP route (GET /api/http-routes/{id}) */
2192
+ getHttpRoute(id: string): Promise<{
2193
+ http_route: HttpRoute;
2194
+ }>;
1469
2195
  /** Get mailbox avatar info (GET /api/emails/{address}/avatar) */
1470
2196
  getMailboxAvatarByAddress(address: string): Promise<{
1471
2197
  address?: string;
@@ -1509,18 +2235,52 @@ export declare class Domani {
1509
2235
  };
1510
2236
  hint?: string;
1511
2237
  }>;
2238
+ /** Read one conversation, oldest message first (GET /api/emails/{address}/threads/{id}) */
2239
+ getMailboxThread(address: string, id: string): Promise<{
2240
+ id: string;
2241
+ subject?: string | null;
2242
+ participants: string[];
2243
+ message_count: number;
2244
+ unread_count: number;
2245
+ first_message_at?: string;
2246
+ last_message_at?: string;
2247
+ messages: ({
2248
+ id?: string;
2249
+ thread_id?: string;
2250
+ labels?: string[];
2251
+ message_id?: string | null;
2252
+ direction?: "in" | "out";
2253
+ from?: string;
2254
+ to?: string;
2255
+ cc?: string | null;
2256
+ subject?: string | null;
2257
+ text?: string | null;
2258
+ html?: string | null;
2259
+ in_reply_to?: string | null;
2260
+ references?: string | null;
2261
+ folder?: string;
2262
+ is_read?: boolean;
2263
+ starred?: boolean;
2264
+ label?: string | null;
2265
+ status?: string;
2266
+ created_at?: string;
2267
+ })[];
2268
+ }>;
1512
2269
  /** Get mailbox webhook config (GET /api/emails/{address}/webhook) */
1513
2270
  getMailboxWebhook(address: string): Promise<{
1514
2271
  address?: string;
1515
2272
  webhook_url?: string | null;
1516
2273
  signing_secret?: string | null;
1517
2274
  has_webhook?: boolean;
2275
+ events?: string[];
1518
2276
  header_names?: string[];
1519
2277
  hint?: string;
1520
2278
  }>;
1521
2279
  /** Get a message (GET /api/emails/{address}/messages/{id}) */
1522
2280
  getMessageByAddress(address: string, id: string): Promise<{
1523
2281
  id?: string;
2282
+ thread_id?: string;
2283
+ labels?: string[];
1524
2284
  thread_key?: string;
1525
2285
  thread_aliases?: string[];
1526
2286
  message_id?: string | null;
@@ -1656,7 +2416,7 @@ export declare class Domani {
1656
2416
  /** Get workspace members and mailboxes (GET /api/workspaces/{id}) */
1657
2417
  getWorkspace(id: string): Promise<WorkspaceDetail>;
1658
2418
  /** Get the canonical workspace access graph (GET /api/workspaces/{id}/access) */
1659
- getWorkspaceAccess(id: string): Promise<unknown>;
2419
+ getWorkspaceAccess(id: string): Promise<void>;
1660
2420
  /** Heartbeat viewing or composing presence (PUT /api/email/collaboration/coordination) */
1661
2421
  heartbeatConversationPresence(body: {
1662
2422
  mailbox_id: string;
@@ -1680,15 +2440,37 @@ export declare class Domani {
1680
2440
  };
1681
2441
  hint?: string;
1682
2442
  }>;
2443
+ /** Record a fenced human Decision (POST /api/assistant/work-items/{id}/interactions) */
2444
+ interactWithAssistantWorkItem(id: string, body: {
2445
+ scope?: "item" | "sender" | "sender_domain" | "situation";
2446
+ type: "choose" | "instruct" | "take_over" | "snooze" | "ignore" | "correct" | "delegate";
2447
+ agent_slug?: string | null;
2448
+ work_item_version: number;
2449
+ decision_id?: string;
2450
+ decision_version?: number;
2451
+ option_id?: string;
2452
+ instruction?: string;
2453
+ until?: string;
2454
+ remind_at?: string;
2455
+ field?: string;
2456
+ correction?: string;
2457
+ idempotency_key: string;
2458
+ }): Promise<{
2459
+ ok?: boolean;
2460
+ work_item?: AssistantWorkItem;
2461
+ plan_id?: string | null;
2462
+ }>;
1683
2463
  /** Invite a workspace member (POST /api/workspaces/{id}/invitations) */
1684
2464
  inviteWorkspaceMember(id: string, body: {
1685
2465
  email: string;
1686
2466
  role?: "admin" | "member";
1687
2467
  mailbox_ids?: string[];
1688
2468
  mailbox_role?: "viewer" | "responder" | "manager";
1689
- }): Promise<unknown>;
2469
+ }): Promise<void>;
1690
2470
  /** Leave a workspace (DELETE /api/workspaces/{id}/members/me) */
1691
- leaveWorkspace(id: string): Promise<unknown>;
2471
+ leaveWorkspace(id: string): Promise<void>;
2472
+ /** List the API tokens of an agent identity (GET /api/agents/identity/{slug}/tokens) */
2473
+ listAgentTokens(slug: string): Promise<unknown>;
1692
2474
  /** List security audit events (GET /api/audit) */
1693
2475
  listAuditEvents(query?: {
1694
2476
  limit?: number;
@@ -1727,6 +2509,24 @@ export declare class Domani {
1727
2509
  email?: Record<string, unknown>[];
1728
2510
  };
1729
2511
  }>;
2512
+ /** List contacts (GET /api/contacts) */
2513
+ listContacts(query?: {
2514
+ q?: string;
2515
+ limit?: number;
2516
+ cursor?: string;
2517
+ }): Promise<{
2518
+ contacts?: ({
2519
+ address?: string;
2520
+ name?: string | null;
2521
+ notes?: string | null;
2522
+ source?: "auto" | "manual";
2523
+ message_count?: number;
2524
+ first_seen_at?: string;
2525
+ last_seen_at?: string;
2526
+ last_direction?: string | null;
2527
+ })[];
2528
+ next_cursor?: string | null;
2529
+ }>;
1730
2530
  /** List attributed conversation activity (GET /api/email/collaboration/{id}/activity) */
1731
2531
  listConversationActivity(id: string): Promise<{
1732
2532
  activity: MailActivity[];
@@ -1778,7 +2578,7 @@ export declare class Domani {
1778
2578
  unread?: number;
1779
2579
  })[];
1780
2580
  views?: ({
1781
- id?: "starred" | "all";
2581
+ id?: "starred" | "all" | "needs_human";
1782
2582
  total?: number;
1783
2583
  unread?: number;
1784
2584
  })[];
@@ -1790,7 +2590,8 @@ export declare class Domani {
1790
2590
  limit?: number;
1791
2591
  direction?: "in" | "out" | "all";
1792
2592
  folder?: "inbox" | "archive" | "sent" | "spam" | "trash";
1793
- view?: "starred" | "all";
2593
+ label?: string;
2594
+ view?: "starred" | "all" | "needs_human";
1794
2595
  since?: string;
1795
2596
  from?: string;
1796
2597
  to?: string;
@@ -1802,6 +2603,8 @@ export declare class Domani {
1802
2603
  }): Promise<{
1803
2604
  messages?: ({
1804
2605
  id?: string;
2606
+ thread_id?: string;
2607
+ labels?: string[];
1805
2608
  thread_key?: string;
1806
2609
  thread_aliases?: string[];
1807
2610
  message_id?: string | null;
@@ -1809,6 +2612,10 @@ export declare class Domani {
1809
2612
  folder?: "inbox" | "archive" | "sent" | "spam" | "trash";
1810
2613
  read?: boolean;
1811
2614
  starred?: boolean;
2615
+ needs_human?: boolean;
2616
+ escalation_reason?: string | null;
2617
+ remind_at?: string | null;
2618
+ reminder_note?: string | null;
1812
2619
  answered?: boolean;
1813
2620
  forwarded?: boolean;
1814
2621
  spam_detected?: boolean;
@@ -1828,6 +2635,21 @@ export declare class Domani {
1828
2635
  })[];
1829
2636
  next_cursor?: string | null;
1830
2637
  }>;
2638
+ /** List HTTP hostname bindings (GET /api/domains/{domain}/hostname-bindings) */
2639
+ listHostnameBindings(domain: string): Promise<{
2640
+ hostname_bindings: HostnameBinding[];
2641
+ }>;
2642
+ /** List visible leased HTTP routes (GET /api/http-routes) */
2643
+ listHttpRoutes(query?: {
2644
+ domain?: string;
2645
+ hostname?: string;
2646
+ status?: "active" | "expired" | "deleted" | "suspended" | "all";
2647
+ limit?: number;
2648
+ cursor?: string;
2649
+ }): Promise<{
2650
+ http_routes: HttpRoute[];
2651
+ next_cursor: string | null;
2652
+ }>;
1831
2653
  /** List your agent identities (GET /api/agents/identity) */
1832
2654
  listIdentities(): Promise<{
1833
2655
  identities?: AgentIdentity[];
@@ -1927,6 +2749,18 @@ export declare class Domani {
1927
2749
  storage_measured_at?: string | null;
1928
2750
  })[];
1929
2751
  }>;
2752
+ /** List the conversations of a mailbox (GET /api/emails/{address}/threads) */
2753
+ listMailboxThreads(address: string, query?: {
2754
+ folder?: "all" | "inbox" | "archive" | "sent" | "spam" | "trash";
2755
+ since?: string;
2756
+ limit?: number;
2757
+ cursor?: string;
2758
+ label?: string;
2759
+ }): Promise<{
2760
+ threads: EmailThread[];
2761
+ next_cursor: string | null;
2762
+ has_more: boolean;
2763
+ }>;
1930
2764
  /** List inbound mail rules (GET /api/emails/{address}/rules) */
1931
2765
  listMailRules(address: string): Promise<{
1932
2766
  mailbox?: string;
@@ -2063,13 +2897,19 @@ export declare class Domani {
2063
2897
  message_ids: string[];
2064
2898
  read: boolean;
2065
2899
  idempotency_key?: string;
2066
- }): Promise<LegacyMailboxOperationReceipt>;
2900
+ }, idempotencyKey?: string): Promise<LegacyMailboxOperationReceipt>;
2067
2901
  /** Mark notification as read (PATCH /api/notifications/{id}) */
2068
2902
  markNotificationRead(id: string, body: {
2069
2903
  read: boolean;
2070
2904
  }): Promise<{
2071
2905
  ok?: boolean;
2072
2906
  }>;
2907
+ /** Mark a Work item as opened (POST /api/assistant/work-items/{id}/open) */
2908
+ openAssistantWorkItem(id: string): Promise<{
2909
+ ok?: boolean;
2910
+ opened_at?: string;
2911
+ unread?: boolean;
2912
+ }>;
2073
2913
  /** Plan how to adopt an existing domain (GET /api/domains/adoption-plan) */
2074
2914
  planDomainAdoption(query?: {
2075
2915
  domain: string;
@@ -2087,6 +2927,7 @@ export declare class Domani {
2087
2927
  nameservers: string[];
2088
2928
  dns_provider: string;
2089
2929
  dnssec_enabled: boolean;
2930
+ checked_at: string | null;
2090
2931
  };
2091
2932
  options: {
2092
2933
  connect?: {
@@ -2111,6 +2952,12 @@ export declare class Domani {
2111
2952
  reason?: string;
2112
2953
  code?: string;
2113
2954
  eligible_at?: string;
2955
+ guidance?: {
2956
+ managed_via: string;
2957
+ unlock: string;
2958
+ auth_code: string;
2959
+ notes: string[];
2960
+ };
2114
2961
  next_action?: {
2115
2962
  method?: string;
2116
2963
  path?: string;
@@ -2120,6 +2967,11 @@ export declare class Domani {
2120
2967
  invariants: string[];
2121
2968
  warnings: string[];
2122
2969
  }>;
2970
+ /** Plan an HTTP hostname binding (POST /api/domains/{domain}/hostname-bindings/plan) */
2971
+ planHostnameBinding(domain: string, body: {
2972
+ hostname: string;
2973
+ browser_mode?: "stateless" | "dedicated_site" | "trusted_same_site";
2974
+ }): Promise<HostnameBindingPlan>;
2123
2975
  /** Provide EPP/auth code (seller) (PATCH /api/deals/{id}) */
2124
2976
  provideEppCode(id: string, body: {
2125
2977
  auth_code: string;
@@ -2142,11 +2994,50 @@ export declare class Domani {
2142
2994
  payment_tx?: string;
2143
2995
  payment_chain?: "base" | "ethereum";
2144
2996
  years?: number;
2145
- }): Promise<ProvisionAgentResult>;
2997
+ }, paymentSignature?: string): Promise<ProvisionAgentResult>;
2146
2998
  /** Refresh a domain brief from live sources (POST /api/domain-briefs/{id}/refresh) */
2147
2999
  refreshDomainBrief(id: string): Promise<{
2148
3000
  brief: DomainBrief;
2149
3001
  }>;
3002
+ /** Refresh a route lease (PATCH /api/http-routes/{id}) */
3003
+ refreshHttpRoute(id: string, body: {
3004
+ expires_in: number;
3005
+ }, idempotencyKey: string): Promise<HttpRouteReceipt>;
3006
+ /** Register a device for redacted Now alerts (POST /api/assistant/devices) */
3007
+ registerAssistantDevice(body: {
3008
+ installation_id: string;
3009
+ platform: "ios" | "android";
3010
+ environment: "development" | "preview" | "production";
3011
+ push_token: string;
3012
+ locale: string;
3013
+ lock_screen_detail?: "redacted" | "sender_only";
3014
+ }): Promise<{
3015
+ ok?: boolean;
3016
+ device?: {
3017
+ id?: string;
3018
+ platform?: string;
3019
+ environment?: string;
3020
+ locale?: string;
3021
+ lockScreenDetail?: string;
3022
+ };
3023
+ }>;
3024
+ /** Register an OAuth client (RFC 7591) (POST /api/oauth/register) */
3025
+ registerOAuthClient(body: {
3026
+ redirect_uris: string[];
3027
+ client_name?: string;
3028
+ token_endpoint_auth_method?: "none" | "client_secret_post" | "client_secret_basic";
3029
+ client_uri?: string;
3030
+ logo_uri?: string;
3031
+ }): Promise<{
3032
+ client_id?: string;
3033
+ client_name?: string;
3034
+ redirect_uris?: string[];
3035
+ token_endpoint_auth_method?: string;
3036
+ grant_types?: string[];
3037
+ response_types?: string[];
3038
+ client_id_issued_at?: number;
3039
+ client_secret?: string;
3040
+ }>;
2150
3041
  /** Create a new account (POST /api/auth/register) */
2151
3042
  registerUser(body: {
2152
3043
  email: string;
@@ -2173,12 +3064,18 @@ export declare class Domani {
2173
3064
  slug?: string;
2174
3065
  released?: boolean;
2175
3066
  }>;
3067
+ /** Revoke a device registration (DELETE /api/assistant/devices) */
3068
+ removeAssistantDevice(query?: {
3069
+ installation_id: string;
3070
+ }): Promise<{
3071
+ ok?: boolean;
3072
+ }>;
2176
3073
  /** Remove saved payment method (DELETE /api/billing/card) */
2177
3074
  removeCard(): Promise<{
2178
3075
  removed?: boolean;
2179
3076
  }>;
2180
3077
  /** Remove email from a domain (DELETE /api/domains/{domain}/email/setup) */
2181
- removeDomainEmail(domain: string): Promise<unknown>;
3078
+ removeDomainEmail(domain: string): Promise<void>;
2182
3079
  /** Remove a mailbox alias (DELETE /api/emails/{address}/aliases/{alias}) */
2183
3080
  removeMailboxAlias(address: string, alias: string): Promise<{
2184
3081
  address?: string;
@@ -2188,13 +3085,14 @@ export declare class Domani {
2188
3085
  /** Remove a member mailbox permission (DELETE /api/workspaces/{id}/mailboxes/{mailboxId}/grants) */
2189
3086
  removeMailboxGrant(id: string, mailboxId: string, body: {
2190
3087
  membership_id: string;
2191
- }): Promise<unknown>;
3088
+ }): Promise<void>;
2192
3089
  /** Remove mailbox webhook (DELETE /api/emails/{address}/webhook) */
2193
3090
  removeMailboxWebhook(address: string): Promise<{
2194
3091
  address?: string;
2195
3092
  webhook_url?: string | null;
2196
3093
  signing_secret?: string | null;
2197
3094
  has_webhook?: boolean;
3095
+ events?: string[];
2198
3096
  header_names?: string[];
2199
3097
  hint?: string;
2200
3098
  }>;
@@ -2211,7 +3109,7 @@ export declare class Domani {
2211
3109
  hint?: string;
2212
3110
  }>;
2213
3111
  /** Remove a workspace member (DELETE /api/workspaces/{id}/members/{membershipId}) */
2214
- removeWorkspaceMember(id: string, membershipId: string): Promise<unknown>;
3112
+ removeWorkspaceMember(id: string, membershipId: string): Promise<void>;
2215
3113
  /** Renew a domain (POST /api/domains/{domain}/renew) */
2216
3114
  renewDomain(domain: string, body?: {
2217
3115
  years?: number;
@@ -2256,7 +3154,7 @@ export declare class Domani {
2256
3154
  lease_id: string;
2257
3155
  expected_reply_version: number;
2258
3156
  };
2259
- }): Promise<{
3157
+ }, idempotencyKey?: string): Promise<{
2260
3158
  id?: string;
2261
3159
  message_id?: string;
2262
3160
  from?: string;
@@ -2267,7 +3165,7 @@ export declare class Domani {
2267
3165
  /** Request a workspace ownership transfer (POST /api/workspaces/{id}/ownership-transfer) */
2268
3166
  requestWorkspaceOwnershipTransfer(id: string, body: {
2269
3167
  membership_id: string;
2270
- }): Promise<unknown>;
3168
+ }): Promise<void>;
2271
3169
  /** Research or refresh a public domain profile (POST /api/domains/{domain}/profile) */
2272
3170
  researchPublicDomainProfile(domain: string, query?: {
2273
3171
  depth?: "instant" | "deep";
@@ -2321,6 +3219,16 @@ export declare class Domani {
2321
3219
  dry_run?: boolean;
2322
3220
  would_apply?: DnsRecord[];
2323
3221
  }>;
3222
+ /** Retry failed history-import messages (POST /api/assistant/backfill) */
3223
+ retryAssistantBackfillFailures(): Promise<{
3224
+ ok?: boolean;
3225
+ retried?: number;
3226
+ }>;
3227
+ /** Revoke an agent's API token (DELETE /api/agents/identity/{slug}/tokens/{id}) */
3228
+ revokeAgentToken(slug: string, id: string): Promise<{
3229
+ success?: boolean;
3230
+ hint?: string;
3231
+ }>;
2324
3232
  /** Revoke an app password (hosted) (DELETE /api/emails/{address}/credentials/{id}) */
2325
3233
  revokeMailboxCredential(address: string, id: string): Promise<{
2326
3234
  id?: string;
@@ -2334,11 +3242,17 @@ export declare class Domani {
2334
3242
  /** Revoke an access grant and its credentials (DELETE /api/workspaces/{id}/access/grants/{grantId}) */
2335
3243
  revokeWorkspaceAccess(id: string, grantId: string, body?: {
2336
3244
  expected_version?: number;
2337
- }): Promise<unknown>;
3245
+ }): Promise<void>;
2338
3246
  /** Revoke a pending invitation (DELETE /api/workspaces/{id}/invitations/{invitationId}) */
2339
- revokeWorkspaceInvitation(id: string, invitationId: string): Promise<unknown>;
3247
+ revokeWorkspaceInvitation(id: string, invitationId: string): Promise<void>;
2340
3248
  /** Revoke a pending ownership transfer (DELETE /api/workspaces/{id}/ownership-transfer/{transferId}) */
2341
- revokeWorkspaceOwnershipTransfer(id: string, transferId: string): Promise<unknown>;
3249
+ revokeWorkspaceOwnershipTransfer(id: string, transferId: string): Promise<void>;
3250
+ /** Replace write-only upstream authentication headers (PUT /api/http-routes/{id}/upstream-headers) */
3251
+ rotateHttpRouteUpstreamHeaders(id: string, body: {
3252
+ upstream_headers: Record<string, string>;
3253
+ }, idempotencyKey: string): Promise<HttpRouteHeadersReceipt>;
3254
+ /** Rotate the upstream verification secret (POST /api/http-routes/{id}/upstream-verification/rotate) */
3255
+ rotateHttpRouteUpstreamVerification(id: string, idempotencyKey: string): Promise<HttpRouteVerificationReceipt>;
2342
3256
  /** Rotate webhook signing secret (POST /api/emails/{address}/webhook/rotate) */
2343
3257
  rotateMailboxWebhookSecret(address: string): Promise<{
2344
3258
  address?: string;
@@ -2356,6 +3270,75 @@ export declare class Domani {
2356
3270
  source?: "all" | "primary" | "secondary";
2357
3271
  order?: "asc" | "desc";
2358
3272
  }): Promise<SearchResult>;
3273
+ /** Search mail by meaning and by words (GET /api/emails/search) */
3274
+ searchEmailMessages(query?: {
3275
+ mailbox?: string;
3276
+ q: string;
3277
+ mode?: "hybrid" | "semantic" | "keyword";
3278
+ limit?: number;
3279
+ since?: string;
3280
+ until?: string;
3281
+ folder?: "inbox" | "archive" | "sent" | "spam" | "trash";
3282
+ from?: string;
3283
+ label?: string;
3284
+ }): Promise<{
3285
+ results?: ({
3286
+ message?: {
3287
+ id?: string;
3288
+ mailbox?: string;
3289
+ thread_key?: string;
3290
+ direction?: string;
3291
+ from?: string;
3292
+ to?: string;
3293
+ subject?: string | null;
3294
+ snippet?: string;
3295
+ created_at?: string;
3296
+ folder?: string;
3297
+ is_read?: boolean;
3298
+ };
3299
+ score?: number;
3300
+ why?: "words" | "meaning" | "both";
3301
+ highlight?: string | null;
3302
+ })[];
3303
+ mode?: "hybrid" | "semantic" | "keyword";
3304
+ query?: string;
3305
+ took_ms?: number;
3306
+ hint?: string;
3307
+ }>;
3308
+ /** Search one mailbox by meaning and by words (GET /api/emails/{address}/search) */
3309
+ searchEmailMessagesByAddress(address: string, query?: {
3310
+ q: string;
3311
+ mode?: "hybrid" | "semantic" | "keyword";
3312
+ limit?: number;
3313
+ since?: string;
3314
+ until?: string;
3315
+ folder?: "inbox" | "archive" | "sent" | "spam" | "trash";
3316
+ from?: string;
3317
+ label?: string;
3318
+ }): Promise<{
3319
+ results?: ({
3320
+ message?: {
3321
+ id?: string;
3322
+ mailbox?: string;
3323
+ thread_key?: string;
3324
+ direction?: string;
3325
+ from?: string;
3326
+ to?: string;
3327
+ subject?: string | null;
3328
+ snippet?: string;
3329
+ created_at?: string;
3330
+ folder?: string;
3331
+ is_read?: boolean;
3332
+ };
3333
+ score?: number;
3334
+ why?: "words" | "meaning" | "both";
3335
+ highlight?: string | null;
3336
+ })[];
3337
+ mode?: "hybrid" | "semantic" | "keyword";
3338
+ query?: string;
3339
+ took_ms?: number;
3340
+ hint?: string;
3341
+ }>;
2359
3342
  /** List a domain for sale (open marketplace) (POST /api/domains/sell) */
2360
3343
  sellDomain(body: {
2361
3344
  domain: string;
@@ -2390,6 +3373,7 @@ export declare class Domani {
2390
3373
  in_reply_to?: string;
2391
3374
  references?: string;
2392
3375
  idempotency_key?: string;
3376
+ send_at?: string;
2393
3377
  coordination?: {
2394
3378
  thread_key: string;
2395
3379
  client_id: string;
@@ -2402,7 +3386,7 @@ export declare class Domani {
2402
3386
  filename: string;
2403
3387
  content_type?: string;
2404
3388
  }[];
2405
- }): Promise<{
3389
+ }, idempotencyKey?: string): Promise<{
2406
3390
  id?: string;
2407
3391
  message_id?: string;
2408
3392
  from?: string;
@@ -2446,19 +3430,31 @@ export declare class Domani {
2446
3430
  setMailboxGrant(id: string, mailboxId: string, body: {
2447
3431
  membership_id: string;
2448
3432
  role: "viewer" | "responder" | "manager";
2449
- }): Promise<unknown>;
3433
+ }): Promise<void>;
2450
3434
  /** Set mailbox webhook (PUT /api/emails/{address}/webhook) */
2451
3435
  setMailboxWebhook(address: string, body: {
2452
3436
  url: string;
2453
- headers?: Record<string, unknown>;
3437
+ events?: ("email.received" | "email.delivered" | "email.bounced" | "email.failed" | "email.suppressed" | "email.complained" | "email.delayed" | "assistant.item.delegated" | "assistant.item.recalled")[];
3438
+ headers?: Record<string, string>;
2454
3439
  }): Promise<{
2455
3440
  address?: string;
2456
3441
  webhook_url?: string;
2457
3442
  signing_secret?: string;
2458
3443
  has_webhook?: boolean;
3444
+ events?: string[];
2459
3445
  header_names?: string[];
2460
3446
  hint?: string;
2461
3447
  }>;
3448
+ /** Set a follow-up reminder (POST /api/emails/{address}/messages/{id}/remind) */
3449
+ setMessageReminderByAddress(address: string, id: string, body?: {
3450
+ remind_at?: string;
3451
+ note?: string;
3452
+ clear?: boolean;
3453
+ }): Promise<{
3454
+ id?: string;
3455
+ remind_at?: string | null;
3456
+ reminder_note?: string | null;
3457
+ }>;
2462
3458
  /** Set nameservers for a domain (PUT /api/domains/{domain}/nameservers) */
2463
3459
  setNameservers(domain: string, body: {
2464
3460
  nameservers: string[];
@@ -2503,7 +3499,7 @@ export declare class Domani {
2503
3499
  };
2504
3500
  expected_version?: number;
2505
3501
  reason?: string;
2506
- }): Promise<unknown>;
3502
+ }): Promise<void>;
2507
3503
  /** Capture a DNS snapshot (POST /api/domains/{domain}/dns/snapshot) */
2508
3504
  snapshotDns(domain: string, body?: {
2509
3505
  extra_subdomains?: string[];
@@ -2514,10 +3510,29 @@ export declare class Domani {
2514
3510
  sources?: string[];
2515
3511
  capturedAt?: string;
2516
3512
  }>;
3513
+ /** Consent to and start a background history import (POST /api/assistant/preview) */
3514
+ startAssistantPreview(body: {
3515
+ mailbox_ids: string[];
3516
+ history_window_days?: number;
3517
+ consent: true;
3518
+ consent_version: "mailzero-personal-ai.v1";
3519
+ }): Promise<{
3520
+ ok?: boolean;
3521
+ preview?: {
3522
+ mailbox_ids?: string[];
3523
+ history_window_days?: number;
3524
+ background?: boolean;
3525
+ backfill_id?: string;
3526
+ };
3527
+ }>;
2517
3528
  /** Start bank payout onboarding (POST /api/billing/connect) */
2518
3529
  startPayoutOnboarding(): Promise<{
2519
3530
  url?: string;
2520
3531
  }>;
3532
+ /** Stream mailbox events (server-sent events) (GET /api/emails/{address}/events) */
3533
+ streamMailboxEvents(address: string, lastEventId?: string, query?: {
3534
+ since?: string;
3535
+ }): Promise<Response>;
2521
3536
  /** AI-powered domain suggestions with availability (GET /api/domains/suggest) */
2522
3537
  suggestDomains(query?: {
2523
3538
  prompt: string;
@@ -2545,14 +3560,14 @@ export declare class Domani {
2545
3560
  id: string;
2546
3561
  label: string;
2547
3562
  })[];
2548
- }): Promise<unknown>;
3563
+ }): Promise<void>;
2549
3564
  /** Create or replace an explicit mailbox collection (PUT /api/workspaces/{id}/access/collections) */
2550
3565
  syncMailboxCollection(id: string, body: {
2551
3566
  id?: string;
2552
3567
  name: string;
2553
3568
  description?: string | null;
2554
3569
  mailbox_ids: string[];
2555
- }): Promise<unknown>;
3570
+ }): Promise<void>;
2556
3571
  /** Test mailbox webhook (POST /api/emails/{address}/webhook/test) */
2557
3572
  testMailboxWebhook(address: string): Promise<{
2558
3573
  address?: string;
@@ -2569,7 +3584,29 @@ export declare class Domani {
2569
3584
  payment_tx?: string;
2570
3585
  payment_chain?: "base" | "ethereum";
2571
3586
  extra_subdomains?: string[];
2572
- }): Promise<unknown>;
3587
+ }): Promise<{
3588
+ domain: string;
3589
+ status: "pending" | "active";
3590
+ expires: string;
3591
+ price: number;
3592
+ currency: string;
3593
+ payment_method: string;
3594
+ payment_tx?: string;
3595
+ auto_renew?: boolean;
3596
+ hint: string;
3597
+ dns_snapshot?: {
3598
+ record_count?: number;
3599
+ subdomain_count?: number;
3600
+ };
3601
+ nameservers_preserved: true;
3602
+ dns_migration: "not_requested";
3603
+ continuity: {
3604
+ nameservers?: string[];
3605
+ dns_provider?: string;
3606
+ dnssec_enabled?: boolean;
3607
+ verification_status?: "verified" | "repaired" | "degraded" | "unknown";
3608
+ };
3609
+ }>;
2573
3610
  /** Update account preferences (PUT /api/me) */
2574
3611
  updateAccount(body: {
2575
3612
  preferred_payment_method?: "card" | "usdc" | null;
@@ -2586,9 +3623,27 @@ export declare class Domani {
2586
3623
  dismissed_version: number;
2587
3624
  hint: string;
2588
3625
  }>;
3626
+ /** Update Mailzero assistant settings (PUT /api/assistant/settings) */
3627
+ updateAssistantSettings(body: {
3628
+ enabled?: boolean;
3629
+ shadow_enabled?: boolean;
3630
+ paused?: boolean;
3631
+ mailbox_ids?: string[];
3632
+ agent_mailbox_ids?: string[];
3633
+ history_window_days?: number;
3634
+ attachment_vision?: boolean;
3635
+ }): Promise<{
3636
+ ok?: boolean;
3637
+ enabled?: boolean;
3638
+ shadow_enabled?: boolean;
3639
+ paused?: boolean;
3640
+ mailbox_ids?: string[];
3641
+ }>;
2589
3642
  /** Assign or update a shared inbox conversation (PATCH /api/email/collaboration) */
2590
3643
  updateConversationState(body: {
2591
3644
  mailbox_id: string;
3645
+ thread_id?: string;
3646
+ labels?: string[];
2592
3647
  thread_key: string;
2593
3648
  thread_aliases?: string[];
2594
3649
  subject?: string | null;
@@ -2614,12 +3669,20 @@ export declare class Domani {
2614
3669
  /** Apply a lifecycle action to messages (POST /api/emails/{address}/messages/actions) */
2615
3670
  updateEmailMessagesByAddress(address: string, body: {
2616
3671
  message_ids: string[];
2617
- action: "move" | "mark_read" | "star" | "restore" | "delete_permanently";
3672
+ action: "move" | "mark_read" | "star" | "restore" | "delete_permanently" | "label";
2618
3673
  destination?: "inbox" | "archive" | "sent" | "spam" | "trash";
2619
3674
  read?: boolean;
2620
3675
  starred?: boolean;
3676
+ add?: string[];
3677
+ remove?: string[];
3678
+ set?: string[];
2621
3679
  idempotency_key?: string;
2622
- }): Promise<MailboxOperationReceipt>;
3680
+ }, idempotencyKey?: string): Promise<MailboxOperationReceipt>;
3681
+ /** Update binding browser mode (PATCH /api/domains/{domain}/hostname-bindings/{id}) */
3682
+ updateHostnameBinding(domain: string, id: string, body: {
3683
+ browser_mode: "stateless" | "dedicated_site" | "trusted_same_site";
3684
+ acknowledgements?: string[];
3685
+ }, idempotencyKey: string): Promise<HostnameBindingReceipt>;
2623
3686
  /** Update an agent identity (PATCH /api/agents/identity/{slug}) */
2624
3687
  updateIdentity(slug: string, body: {
2625
3688
  name?: string;
@@ -2653,6 +3716,7 @@ export declare class Domani {
2653
3716
  webhook_url?: string | null;
2654
3717
  forward_to?: string | null;
2655
3718
  drop_spam?: boolean;
3719
+ tone_notes?: string | null;
2656
3720
  }): Promise<{
2657
3721
  id?: string;
2658
3722
  address?: string;
@@ -2661,6 +3725,7 @@ export declare class Domani {
2661
3725
  name?: string | null;
2662
3726
  webhook_url?: string | null;
2663
3727
  forward_to?: string | null;
3728
+ tone_notes?: string | null;
2664
3729
  signing_secret?: string;
2665
3730
  }>;
2666
3731
  /** Update notification preferences (PUT /api/notifications/preferences) */
@@ -2689,7 +3754,7 @@ export declare class Domani {
2689
3754
  url?: string;
2690
3755
  events?: string[];
2691
3756
  active?: boolean;
2692
- headers?: Record<string, unknown>;
3757
+ headers?: Record<string, string>;
2693
3758
  }): Promise<{
2694
3759
  id?: string;
2695
3760
  url?: string;
@@ -2701,11 +3766,17 @@ export declare class Domani {
2701
3766
  /** Rename a workspace (PATCH /api/workspaces/{id}) */
2702
3767
  updateWorkspace(id: string, body: {
2703
3768
  name: string;
2704
- }): Promise<unknown>;
3769
+ }): Promise<void>;
2705
3770
  /** Change a member role (PATCH /api/workspaces/{id}/members/{membershipId}) */
2706
3771
  updateWorkspaceMember(id: string, membershipId: string, body: {
2707
3772
  role: "admin" | "member";
2708
- }): Promise<unknown>;
3773
+ }): Promise<void>;
3774
+ /** Create or update a contact (POST /api/contacts) */
3775
+ upsertContact(body: {
3776
+ address: string;
3777
+ name?: string | null;
3778
+ notes?: string | null;
3779
+ }): Promise<void>;
2709
3780
  /** Verify that a provider connection is working (POST /api/domains/{domain}/verify) */
2710
3781
  verifyConnection(domain: string, body: {
2711
3782
  target?: string;
@@ -2720,6 +3791,11 @@ export declare class Domani {
2720
3791
  hint?: string;
2721
3792
  next_steps?: string[];
2722
3793
  }>;
3794
+ /** Verify binding DNS and certificate (POST /api/domains/{domain}/hostname-bindings/{id}/verify) */
3795
+ verifyHostnameBinding(domain: string, id: string): Promise<{
3796
+ hostname_binding: HostnameBinding;
3797
+ pending: boolean;
3798
+ }>;
2723
3799
  /** Verify and complete domain import (POST /api/domains/import/verify) */
2724
3800
  verifyImport(body: {
2725
3801
  domain: string;
@@ -2734,7 +3810,7 @@ export declare class Domani {
2734
3810
  /** Verify a magic link token (GET /api/auth/verify) */
2735
3811
  verifyMagicLink(query?: {
2736
3812
  token: string;
2737
- }): Promise<unknown>;
3813
+ }): Promise<void>;
2738
3814
  /** Verify TXT ownership for external listing (POST /api/domains/sell/verify) */
2739
3815
  verifySellListing(body: {
2740
3816
  domain: string;