domani 1.0.2 → 1.0.3

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.
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";
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";
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. */
@@ -133,6 +133,59 @@ export interface MailRule {
133
133
  enabled?: boolean;
134
134
  created_at?: string;
135
135
  }
136
+ export interface MailboxOperationReceipt {
137
+ operation_id: string;
138
+ idempotency_key: string;
139
+ /** True when this response reused the immutable completed receipt and performed no new mutation. */
140
+ idempotent_replay: boolean;
141
+ action: "move" | "mark_read" | "star" | "restore" | "delete_permanently";
142
+ status: "succeeded" | "partial";
143
+ results: ({
144
+ message_id: string;
145
+ ok: boolean;
146
+ folder?: "inbox" | "archive" | "sent" | "drafts" | "spam" | "trash";
147
+ changed?: boolean;
148
+ error?: {
149
+ code: string;
150
+ message: string;
151
+ };
152
+ })[];
153
+ summary: {
154
+ total: number;
155
+ succeeded: number;
156
+ failed: number;
157
+ changed: number;
158
+ };
159
+ created_at: string;
160
+ completed_at: string | null;
161
+ }
162
+ export interface LegacyMailboxOperationReceipt {
163
+ operation_id: string;
164
+ idempotency_key: string;
165
+ /** True when this response reused the immutable completed receipt and performed no new mutation. */
166
+ idempotent_replay: boolean;
167
+ action: "move" | "mark_read" | "star" | "restore" | "delete_permanently";
168
+ status: "succeeded" | "partial";
169
+ results: ({
170
+ message_id: string;
171
+ ok: boolean;
172
+ folder?: "inbox" | "archive" | "sent" | "drafts" | "spam" | "trash";
173
+ changed?: boolean;
174
+ error?: {
175
+ code: string;
176
+ message: string;
177
+ };
178
+ })[];
179
+ summary: {
180
+ total: number;
181
+ succeeded: number;
182
+ failed: number;
183
+ changed: number;
184
+ };
185
+ created_at: string;
186
+ completed_at: string | null;
187
+ count: number;
188
+ }
136
189
  export interface WorkspaceSummary {
137
190
  id: string;
138
191
  name: string;
@@ -147,34 +200,36 @@ export interface WorkspaceSummary {
147
200
  }[];
148
201
  created_at: string;
149
202
  }
203
+ 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")[];
150
204
  export interface WorkspaceDetail {
151
205
  id: string;
152
206
  name: string;
153
207
  role: "owner" | "admin" | "member";
154
208
  personal: boolean;
155
- members: {
156
- id?: string;
157
- email?: string;
158
- role?: "owner" | "admin" | "member";
159
- joined_at?: string;
160
- mailbox_grants?: {
209
+ members: ({
210
+ id: string;
211
+ principal_id: string;
212
+ email: string;
213
+ role: "owner" | "admin" | "member";
214
+ joined_at: string;
215
+ mailbox_grants: ({
161
216
  mailbox_id?: string;
162
217
  address?: string;
163
218
  role?: "viewer" | "responder" | "manager";
164
- }[];
165
- }[];
219
+ })[];
220
+ })[];
166
221
  /** Visible only to workspace owners and admins. */
167
- invitations: {
222
+ invitations: ({
168
223
  id?: string;
169
224
  email?: string;
170
225
  role?: "admin" | "member";
171
226
  expires_at?: string;
172
- }[];
173
- mailboxes: {
227
+ })[];
228
+ mailboxes: ({
174
229
  id?: string;
175
230
  address?: string;
176
231
  name?: string | null;
177
- }[];
232
+ })[];
178
233
  ownership: {
179
234
  owner_membership_id: string | null;
180
235
  pending_transfer: {
@@ -196,12 +251,91 @@ export interface ConversationState {
196
251
  label?: string;
197
252
  } | null;
198
253
  version: number;
254
+ /** Generation used by stale-safe guarded replies */
255
+ reply_version: number;
256
+ last_reply: {
257
+ actor: {
258
+ type: string;
259
+ id: string;
260
+ label: string;
261
+ };
262
+ at: string;
263
+ } | null;
199
264
  note_count: number;
200
265
  assigned_to_me?: boolean;
201
266
  last_activity_at: string;
202
267
  created_at: string;
203
268
  updated_at: string;
204
269
  }
270
+ export interface ConversationCoordinationSnapshot {
271
+ conversation_id: string;
272
+ mailbox_id: string;
273
+ thread_key: string;
274
+ reply_version: number;
275
+ last_reply: {
276
+ actor: {
277
+ type: string;
278
+ id: string;
279
+ label: string;
280
+ };
281
+ at: string;
282
+ } | null;
283
+ presence: ({
284
+ actor: {
285
+ type: string;
286
+ id: string;
287
+ label: string;
288
+ };
289
+ client_id: string;
290
+ mode: "viewing" | "composing";
291
+ expires_at: string;
292
+ })[];
293
+ compose_lease: {
294
+ lease_id: string;
295
+ holder: {
296
+ type: string;
297
+ id: string;
298
+ label: string;
299
+ };
300
+ client_id: string;
301
+ base_reply_version: number;
302
+ version: number;
303
+ expires_at: string;
304
+ held_by_me: boolean;
305
+ } | null;
306
+ server_time: string;
307
+ heartbeat_after_ms: 15000;
308
+ expires_after_ms: 45000;
309
+ }
310
+ export interface ConversationWorkItem {
311
+ mailbox_id: string;
312
+ thread_key: string;
313
+ thread_aliases: string[];
314
+ subject: string | null;
315
+ status: "open" | "waiting" | "closed";
316
+ assignee: {
317
+ type: "member" | "token" | "agent";
318
+ id: string;
319
+ label: string | null;
320
+ } | null;
321
+ assigned_to_me: boolean;
322
+ persisted: boolean;
323
+ conversation_id: string | null;
324
+ version: number | null;
325
+ note_count: number;
326
+ scanned_message_count: number;
327
+ scanned_unread_count: number;
328
+ first_message_at: string | null;
329
+ last_activity_at: string;
330
+ latest_message: {
331
+ id: string;
332
+ direction: string;
333
+ from: string;
334
+ to: string;
335
+ preview: string | null;
336
+ created_at: string;
337
+ } | null;
338
+ }
205
339
  export interface ConversationNote {
206
340
  id: string;
207
341
  author: {
@@ -225,6 +359,82 @@ export interface MailActivity {
225
359
  metadata: Record<string, unknown>;
226
360
  created_at: string;
227
361
  }
362
+ export interface MailboxChange {
363
+ /** Monotonic sequence serialized as a string */
364
+ sequence: string;
365
+ type: string;
366
+ resource_type: string;
367
+ resource_id: string | null;
368
+ resource_version: number | null;
369
+ actor: {
370
+ type: string;
371
+ id: string;
372
+ label: string | null;
373
+ } | null;
374
+ operation_id: string | null;
375
+ data: Record<string, unknown>;
376
+ created_at: string;
377
+ }
378
+ export interface DomainBrief {
379
+ id: string;
380
+ domain: string;
381
+ depth: "instant" | "deep";
382
+ status: "ready" | "degraded" | "failed";
383
+ summary: string;
384
+ registration: Record<string, unknown>;
385
+ website: Record<string, unknown>;
386
+ infrastructure: {
387
+ nameservers: string[];
388
+ mailProviders: string[];
389
+ dnssec: boolean;
390
+ mail: {
391
+ status: "active" | "inactive" | "unknown";
392
+ provider: string | null;
393
+ providerKind: "managed" | "self_hosted" | "gateway" | "custom" | "unknown";
394
+ security: "hardened" | "established" | "basic" | "exposed" | "unknown";
395
+ businessCriticality: "high" | "medium" | "low" | "unknown";
396
+ spf: boolean | null;
397
+ dmarc: "reject" | "quarantine" | "monitor" | "none" | "unknown";
398
+ mtaSts: boolean | null;
399
+ tlsReporting: boolean | null;
400
+ bimi: boolean | null;
401
+ };
402
+ };
403
+ market: Record<string, unknown>;
404
+ /** Redacted contact-channel metadata. Raw addresses are never returned. */
405
+ contactability: {
406
+ state: "direct" | "indirect" | "none_found" | "unknown";
407
+ channelType: "registration_email" | null;
408
+ source: string | null;
409
+ confidence: "high" | "medium" | "low" | null;
410
+ };
411
+ acquisitionOutlook: {
412
+ state: "promising" | "possible" | "difficult" | "unknown";
413
+ rationale: string;
414
+ };
415
+ recommendation: {
416
+ action: "register" | "buy_now" | "negotiate_listing" | "private_broker" | "backorder" | "watch" | "choose_alternative";
417
+ rationale: string;
418
+ };
419
+ completeness: number;
420
+ analyzedAt: string;
421
+ staleAt: string;
422
+ analysisVersion: string;
423
+ evidence: ({
424
+ id: string;
425
+ kind: string;
426
+ label: string;
427
+ value: string;
428
+ source: string;
429
+ sourceUrl?: string;
430
+ confidence: "high" | "medium" | "low";
431
+ visibility: "public" | "redacted";
432
+ capturedAt: string;
433
+ })[];
434
+ warnings: string[];
435
+ createdAt: string;
436
+ updatedAt: string;
437
+ }
228
438
  export interface Backorder {
229
439
  id?: string;
230
440
  domain?: string;
@@ -302,13 +512,13 @@ export interface Negotiation {
302
512
  deal_id?: string | null;
303
513
  created_at?: string;
304
514
  /** The negotiation thread, oldest first */
305
- offers?: {
515
+ offers?: ({
306
516
  from?: "you" | "counterparty";
307
517
  kind?: "offer" | "counter" | "accept" | "decline";
308
518
  amount?: number | null;
309
519
  message?: string | null;
310
520
  at?: string;
311
- }[];
521
+ })[];
312
522
  }
313
523
  export interface DomainDetail {
314
524
  domain: string;
@@ -434,6 +644,36 @@ export interface AccountInfo {
434
644
  token_count: number;
435
645
  created_at: string;
436
646
  }
647
+ export interface ActivationProjection {
648
+ version: 1;
649
+ account_created_at: string;
650
+ entry: {
651
+ brand: string;
652
+ surface: string;
653
+ intent: string;
654
+ };
655
+ milestones: {
656
+ mailbox_created_at: string | null;
657
+ first_message_sent_at: string | null;
658
+ first_message_received_at: string | null;
659
+ custom_domain_activated_at: string | null;
660
+ programmatic_action_completed_at: string | null;
661
+ };
662
+ status: "first_run" | "setup_active" | "mail_active" | "mail_loop_complete" | "domain_active" | "programmatic_active" | "multi_surface_active";
663
+ recommended_actions: ({
664
+ id: string;
665
+ label: string;
666
+ priority: number;
667
+ surfaces: ("web" | "mobile" | "cli" | "mcp")[];
668
+ href?: string;
669
+ operation: string;
670
+ })[];
671
+ available_paths: string[];
672
+ dismissed_version: number;
673
+ pending_claim: {
674
+ slug: string;
675
+ } | null;
676
+ }
437
677
  export declare class Domani {
438
678
  private apiKey;
439
679
  private baseUrl;
@@ -443,6 +683,10 @@ export declare class Domani {
443
683
  query?: Record<string, unknown>;
444
684
  body?: unknown;
445
685
  }): Promise<T>;
686
+ /** Accept an access or ownership offer (POST /api/workspaces/access/offers/accept) */
687
+ acceptWorkspaceAccessOffer(body: {
688
+ token: string;
689
+ }): Promise<unknown>;
446
690
  /** Accept a workspace invitation (POST /api/workspaces/invitations/accept) */
447
691
  acceptWorkspaceInvitation(body: {
448
692
  token: string;
@@ -589,14 +833,14 @@ export declare class Domani {
589
833
  risk: "low" | "medium" | "high" | "blocked";
590
834
  score: number;
591
835
  authentication_message?: boolean;
592
- checks: {
836
+ checks: ({
593
837
  id: string;
594
838
  category: "transport_safety" | "credential_safety" | "reputation" | "content_quality" | "reliability";
595
839
  status: "pass" | "warning" | "blocked";
596
840
  message: string;
597
841
  fix?: string;
598
842
  evidence?: string[];
599
- }[];
843
+ })[];
600
844
  blocked_reasons: string[];
601
845
  warnings: string[];
602
846
  override_used?: boolean;
@@ -712,6 +956,14 @@ export declare class Domani {
712
956
  hint?: string;
713
957
  next_steps?: string[];
714
958
  }>;
959
+ /** Analyze a domain and persist an evidence-backed brief (POST /api/domain-briefs) */
960
+ createDomainBrief(body: {
961
+ domain: string;
962
+ depth?: "instant" | "deep";
963
+ refresh?: boolean;
964
+ }): Promise<{
965
+ brief: DomainBrief;
966
+ }>;
715
967
  /** List a domain for sale (PUT /api/domains/{domain}/for-sale) */
716
968
  createListing(domain: string, body: {
717
969
  price: number;
@@ -733,10 +985,22 @@ export declare class Domani {
733
985
  slug: string;
734
986
  name?: string;
735
987
  }): Promise<{
736
- id?: string;
737
- address?: string;
738
- slug?: string;
739
- domain?: string;
988
+ id: string;
989
+ address: string;
990
+ name: string | null;
991
+ slug: string;
992
+ domain: string;
993
+ kind: string;
994
+ workspace_id: string | null;
995
+ access_role: "viewer" | "responder" | "manager";
996
+ effective_capabilities: MailboxEffectiveCapabilities;
997
+ collaboration_enabled: boolean;
998
+ message_count: number;
999
+ webhook_url: string | null;
1000
+ forward_to: string | null;
1001
+ signing_secret?: string | null;
1002
+ created_at: string;
1003
+ hint: string;
740
1004
  }>;
741
1005
  /** Create a mailbox (POST /api/emails) */
742
1006
  createMailboxByAddress(body: {
@@ -746,15 +1010,22 @@ export declare class Domani {
746
1010
  kind?: "api" | "hosted";
747
1011
  workspace_id?: string;
748
1012
  }): Promise<{
749
- id?: string;
750
- address?: string;
751
- name?: string | null;
752
- domain?: string;
753
- slug?: string;
754
- workspace_id?: string | null;
755
- webhook_url?: string | null;
756
- forward_to?: string | null;
757
- signing_secret?: string;
1013
+ id: string;
1014
+ address: string;
1015
+ name: string | null;
1016
+ domain: string;
1017
+ slug: string;
1018
+ kind: string;
1019
+ workspace_id: string | null;
1020
+ access_role: "viewer" | "responder" | "manager";
1021
+ effective_capabilities: MailboxEffectiveCapabilities;
1022
+ collaboration_enabled: boolean;
1023
+ message_count: number;
1024
+ webhook_url: string | null;
1025
+ forward_to: string | null;
1026
+ signing_secret?: string | null;
1027
+ created_at: string;
1028
+ hint: string;
758
1029
  }>;
759
1030
  /** Create an app password (hosted) (POST /api/emails/{address}/credentials) */
760
1031
  createMailboxCredential(address: string, body?: {
@@ -807,6 +1078,14 @@ export declare class Domani {
807
1078
  createWorkspace(body: {
808
1079
  name: string;
809
1080
  }): Promise<unknown>;
1081
+ /** Offer mailbox access or workspace ownership (POST /api/workspaces/{id}/access/offers) */
1082
+ createWorkspaceAccessOffer(id: string, body: {
1083
+ email: string;
1084
+ grants: Record<string, unknown>[];
1085
+ ownership_disposition?: "unchanged" | "claim";
1086
+ creator_disposition?: "stay" | "stay_admin" | "leave";
1087
+ billing_disposition?: "unchanged" | "sponsor" | "transfer";
1088
+ }): Promise<unknown>;
810
1089
  /** Start Mailzero workspace checkout (POST /api/workspaces/{id}/billing/checkout) */
811
1090
  createWorkspaceCheckout(id: string, body: {
812
1091
  plan: "mail_solo" | "mail_team" | "mail_business";
@@ -841,9 +1120,8 @@ export declare class Domani {
841
1120
  /** Bulk delete messages (POST /api/emails/{address}/messages/delete) */
842
1121
  deleteMessagesByAddress(address: string, body?: {
843
1122
  message_ids: string[];
844
- }): Promise<{
845
- count?: number;
846
- }>;
1123
+ idempotency_key?: string;
1124
+ }): Promise<LegacyMailboxOperationReceipt>;
847
1125
  /** Delete webhook (DELETE /api/webhooks/{id}) */
848
1126
  deleteWebhook(id: string): Promise<{
849
1127
  success?: boolean;
@@ -879,6 +1157,8 @@ export declare class Domani {
879
1157
  }>;
880
1158
  /** Get current account details (GET /api/me) */
881
1159
  getAccount(): Promise<AccountInfo>;
1160
+ /** Get truthful activation state and recommended next actions (GET /api/me/activation) */
1161
+ getActivation(): Promise<ActivationProjection>;
882
1162
  /** Get EPP auth code (GET /api/domains/{domain}/auth-code) */
883
1163
  getAuthCode(domain: string): Promise<{
884
1164
  domain: string;
@@ -911,6 +1191,11 @@ export declare class Domani {
911
1191
  has_contact?: boolean;
912
1192
  contact?: RegistrantContact;
913
1193
  }>;
1194
+ /** Get active viewers, composers, and the compose lease (GET /api/email/collaboration/coordination) */
1195
+ getConversationCoordination(query?: {
1196
+ mailbox_id: string;
1197
+ thread_key: string;
1198
+ }): Promise<ConversationCoordinationSnapshot>;
914
1199
  /** Get deal detail with timeline (GET /api/deals/{id}) */
915
1200
  getDeal(id: string): Promise<{
916
1201
  deal?: {
@@ -927,11 +1212,11 @@ export declare class Domani {
927
1212
  transfer_deadline?: string | null;
928
1213
  completed_at?: string | null;
929
1214
  created_at?: string;
930
- events?: {
1215
+ events?: ({
931
1216
  status?: string;
932
1217
  detail?: string | null;
933
1218
  created_at?: string;
934
- }[];
1219
+ })[];
935
1220
  };
936
1221
  hint?: string;
937
1222
  }>;
@@ -951,6 +1236,10 @@ export declare class Domani {
951
1236
  enabled?: boolean;
952
1237
  records?: DsRecord[];
953
1238
  }>;
1239
+ /** Get a previously generated domain brief (GET /api/domain-briefs/{id}) */
1240
+ getDomainBrief(id: string): Promise<{
1241
+ brief: DomainBrief;
1242
+ }>;
954
1243
  /** Check email DNS status (GET /api/domains/{domain}/email/status) */
955
1244
  getDomainEmailStatus(domain: string): Promise<{
956
1245
  domain?: string;
@@ -1022,18 +1311,18 @@ export declare class Domani {
1022
1311
  placement: {
1023
1312
  available?: boolean;
1024
1313
  last_checked_at?: string | null;
1025
- providers?: {
1314
+ providers?: ({
1026
1315
  provider?: "gmail" | "outlook" | "yahoo";
1027
- status?: "inbox" | "spam" | "missing" | "not_tested";
1028
- }[];
1316
+ status?: "inbox" | "spam" | "missing" | "error" | "not_tested";
1317
+ })[];
1029
1318
  note?: string;
1030
1319
  };
1031
- actions: {
1320
+ actions: ({
1032
1321
  id?: string;
1033
1322
  severity?: "info" | "warning" | "critical";
1034
1323
  title?: string;
1035
1324
  detail?: string;
1036
- }[];
1325
+ })[];
1037
1326
  caveats?: string[];
1038
1327
  }>;
1039
1328
  /** Get mailbox avatar info (GET /api/emails/{address}/avatar) */
@@ -1053,6 +1342,7 @@ export declare class Domani {
1053
1342
  kind?: string;
1054
1343
  workspace_id?: string | null;
1055
1344
  access_role?: "viewer" | "responder" | "manager";
1345
+ effective_capabilities?: MailboxEffectiveCapabilities;
1056
1346
  webhook_url?: string | null;
1057
1347
  forward_to?: string | null;
1058
1348
  signing_secret?: string | null;
@@ -1089,9 +1379,12 @@ export declare class Domani {
1089
1379
  /** Get a message (GET /api/emails/{address}/messages/{id}) */
1090
1380
  getMessageByAddress(address: string, id: string): Promise<{
1091
1381
  id?: string;
1382
+ thread_key?: string;
1383
+ thread_aliases?: string[];
1092
1384
  message_id?: string | null;
1093
1385
  direction?: "in" | "out";
1094
1386
  from?: string;
1387
+ avatar_url?: string | null;
1095
1388
  to?: string;
1096
1389
  cc?: string | null;
1097
1390
  reply_to?: string | null;
@@ -1100,20 +1393,20 @@ export declare class Domani {
1100
1393
  html?: string | null;
1101
1394
  in_reply_to?: string | null;
1102
1395
  references?: string | null;
1103
- attachments?: {
1396
+ attachments?: ({
1104
1397
  filename?: string;
1105
1398
  content_type?: string;
1106
1399
  size?: number;
1107
1400
  url?: string | null;
1108
- }[];
1401
+ })[];
1109
1402
  status?: string;
1110
1403
  is_read?: boolean;
1111
1404
  read_at?: string | null;
1112
- events?: {
1405
+ events?: ({
1113
1406
  status?: string;
1114
1407
  detail?: Record<string, unknown> | null;
1115
1408
  created_at?: string;
1116
- }[];
1409
+ })[];
1117
1410
  created_at?: string;
1118
1411
  }>;
1119
1412
  /** Get nameservers for a domain (GET /api/domains/{domain}/nameservers) */
@@ -1129,13 +1422,13 @@ export declare class Domani {
1129
1422
  }>;
1130
1423
  /** Get notification preferences (GET /api/notifications/preferences) */
1131
1424
  getNotificationPreferences(): Promise<{
1132
- preferences?: {
1425
+ preferences?: ({
1133
1426
  category?: "domains" | "transfers" | "marketplace" | "email" | "inquiries";
1134
1427
  label?: string;
1135
1428
  description?: string;
1136
1429
  channel?: "in_app" | "email";
1137
1430
  enabled?: boolean;
1138
- }[];
1431
+ })[];
1139
1432
  expiry_alert_days?: number[];
1140
1433
  }>;
1141
1434
  /** Get parking analytics (GET /api/domains/{domain}/analytics) */
@@ -1149,11 +1442,11 @@ export declare class Domani {
1149
1442
  date?: string;
1150
1443
  views?: number;
1151
1444
  }[];
1152
- recent_inquiries?: {
1445
+ recent_inquiries?: ({
1153
1446
  email?: string;
1154
1447
  offer?: number | null;
1155
1448
  date?: string;
1156
- }[];
1449
+ })[];
1157
1450
  hint?: string;
1158
1451
  }>;
1159
1452
  /** Get marketplace payout status (GET /api/billing/connect) */
@@ -1202,19 +1495,31 @@ export declare class Domani {
1202
1495
  getWebhookDeliveries(id: string, query?: {
1203
1496
  limit?: number;
1204
1497
  }): Promise<{
1205
- deliveries?: {
1498
+ deliveries?: ({
1206
1499
  id?: string;
1500
+ replay_of_id?: string | null;
1207
1501
  event_type?: string;
1208
1502
  status?: "pending" | "delivered" | "failed";
1209
1503
  http_status?: number | null;
1210
1504
  attempts?: number;
1211
1505
  last_error?: string | null;
1212
1506
  created_at?: string;
1213
- }[];
1507
+ })[];
1214
1508
  hint?: string;
1215
1509
  }>;
1216
1510
  /** Get workspace members and mailboxes (GET /api/workspaces/{id}) */
1217
1511
  getWorkspace(id: string): Promise<WorkspaceDetail>;
1512
+ /** Get the canonical workspace access graph (GET /api/workspaces/{id}/access) */
1513
+ getWorkspaceAccess(id: string): Promise<unknown>;
1514
+ /** Heartbeat viewing or composing presence (PUT /api/email/collaboration/coordination) */
1515
+ heartbeatConversationPresence(body: {
1516
+ mailbox_id: string;
1517
+ thread_key: string;
1518
+ client_id: string;
1519
+ subject?: string | null;
1520
+ mode: "viewing" | "composing";
1521
+ acquire_lease?: boolean;
1522
+ }): Promise<ConversationCoordinationSnapshot>;
1218
1523
  /** Import an external domain (POST /api/domains/import) */
1219
1524
  importDomain(body: {
1220
1525
  domain: string;
@@ -1244,7 +1549,7 @@ export declare class Domani {
1244
1549
  cursor?: string;
1245
1550
  type?: string;
1246
1551
  }): Promise<{
1247
- events?: {
1552
+ events?: ({
1248
1553
  id?: string;
1249
1554
  tokenId?: string | null;
1250
1555
  type?: string;
@@ -1252,7 +1557,7 @@ export declare class Domani {
1252
1557
  targetId?: string | null;
1253
1558
  metadata?: Record<string, unknown>;
1254
1559
  createdAt?: string;
1255
- }[];
1560
+ })[];
1256
1561
  next_cursor?: string | null;
1257
1562
  hint?: string;
1258
1563
  }>;
@@ -1284,7 +1589,7 @@ export declare class Domani {
1284
1589
  listConversationNotes(id: string): Promise<{
1285
1590
  notes: ConversationNote[];
1286
1591
  }>;
1287
- /** List shared inbox conversation state (GET /api/email/collaboration) */
1592
+ /** List persisted shared inbox state (GET /api/email/collaboration) */
1288
1593
  listConversationStates(query?: {
1289
1594
  mailbox_ids: string;
1290
1595
  status?: "open" | "waiting" | "closed";
@@ -1300,7 +1605,7 @@ export declare class Domani {
1300
1605
  limit?: number;
1301
1606
  cursor?: string;
1302
1607
  }): Promise<{
1303
- deals?: {
1608
+ deals?: ({
1304
1609
  id?: string;
1305
1610
  domain?: string;
1306
1611
  price?: number;
@@ -1311,7 +1616,7 @@ export declare class Domani {
1311
1616
  epp_deadline?: string | null;
1312
1617
  transfer_deadline?: string | null;
1313
1618
  created_at?: string;
1314
- }[];
1619
+ })[];
1315
1620
  has_more?: boolean;
1316
1621
  next_cursor?: string | null;
1317
1622
  }>;
@@ -1321,16 +1626,16 @@ export declare class Domani {
1321
1626
  }>;
1322
1627
  /** List email folders and counts (GET /api/emails/{address}/folders) */
1323
1628
  listEmailFoldersByAddress(address: string): Promise<{
1324
- folders?: {
1629
+ folders?: ({
1325
1630
  id?: "inbox" | "archive" | "sent" | "drafts" | "spam" | "trash";
1326
1631
  total?: number;
1327
1632
  unread?: number;
1328
- }[];
1329
- views?: {
1633
+ })[];
1634
+ views?: ({
1330
1635
  id?: "starred" | "all";
1331
1636
  total?: number;
1332
1637
  unread?: number;
1333
- }[];
1638
+ })[];
1334
1639
  capabilities?: Record<string, unknown>;
1335
1640
  }>;
1336
1641
  /** List emails (GET /api/emails/{address}/messages) */
@@ -1349,8 +1654,10 @@ export declare class Domani {
1349
1654
  attachments?: boolean;
1350
1655
  spam?: boolean;
1351
1656
  }): Promise<{
1352
- messages?: {
1657
+ messages?: ({
1353
1658
  id?: string;
1659
+ thread_key?: string;
1660
+ thread_aliases?: string[];
1354
1661
  message_id?: string | null;
1355
1662
  direction?: "in" | "out";
1356
1663
  folder?: "inbox" | "archive" | "sent" | "spam" | "trash";
@@ -1361,6 +1668,7 @@ export declare class Domani {
1361
1668
  spam_detected?: boolean;
1362
1669
  trashed_at?: string | null;
1363
1670
  from?: string;
1671
+ avatar_url?: string | null;
1364
1672
  to?: string;
1365
1673
  cc?: string | null;
1366
1674
  reply_to?: string | null;
@@ -1371,7 +1679,7 @@ export declare class Domani {
1371
1679
  status?: string;
1372
1680
  events?: Record<string, unknown>[];
1373
1681
  created_at?: string;
1374
- }[];
1682
+ })[];
1375
1683
  next_cursor?: string | null;
1376
1684
  }>;
1377
1685
  /** List your agent identities (GET /api/agents/identity) */
@@ -1382,7 +1690,7 @@ export declare class Domani {
1382
1690
  listInvoices(query?: {
1383
1691
  limit?: number;
1384
1692
  }): Promise<{
1385
- invoices?: {
1693
+ invoices?: ({
1386
1694
  id?: string;
1387
1695
  number?: string | null;
1388
1696
  status?: string;
@@ -1393,7 +1701,7 @@ export declare class Domani {
1393
1701
  created?: string;
1394
1702
  hosted_invoice_url?: string | null;
1395
1703
  invoice_pdf?: string | null;
1396
- }[];
1704
+ })[];
1397
1705
  has_more?: boolean;
1398
1706
  hint?: string;
1399
1707
  }>;
@@ -1406,10 +1714,22 @@ export declare class Domani {
1406
1714
  }[];
1407
1715
  hint?: string;
1408
1716
  }>;
1717
+ /** Incrementally synchronize one mailbox (GET /api/email/changes) */
1718
+ listMailboxChanges(query?: {
1719
+ mailbox_id: string;
1720
+ cursor?: string;
1721
+ limit?: number;
1722
+ }): Promise<{
1723
+ changes: MailboxChange[];
1724
+ next_cursor: string;
1725
+ has_more: boolean;
1726
+ requires_full_sync: boolean;
1727
+ reason?: "cursor_required" | "cursor_expired";
1728
+ }>;
1409
1729
  /** List app passwords (hosted) (GET /api/emails/{address}/credentials) */
1410
1730
  listMailboxCredentials(address: string): Promise<{
1411
1731
  mailbox?: string;
1412
- credentials?: {
1732
+ credentials?: ({
1413
1733
  id?: string;
1414
1734
  label?: string;
1415
1735
  created_at?: string;
@@ -1419,30 +1739,31 @@ export declare class Domani {
1419
1739
  id?: string;
1420
1740
  label?: string;
1421
1741
  } | null;
1422
- }[];
1742
+ })[];
1423
1743
  hint?: string;
1424
1744
  }>;
1425
1745
  /** List all mailboxes (GET /api/email) */
1426
1746
  listMailboxes(query?: {
1427
1747
  domain?: string;
1428
1748
  }): Promise<{
1429
- mailboxes?: {
1749
+ mailboxes?: ({
1430
1750
  id?: string;
1431
1751
  address?: string;
1432
1752
  slug?: string;
1433
1753
  domain?: string;
1434
1754
  message_count?: number;
1435
1755
  access_role?: "viewer" | "responder" | "manager";
1756
+ effective_capabilities?: MailboxEffectiveCapabilities;
1436
1757
  storage_quota_bytes?: number | null;
1437
1758
  storage_used_bytes?: number | null;
1438
1759
  storage_measured_at?: string | null;
1439
- }[];
1760
+ })[];
1440
1761
  }>;
1441
1762
  /** List all mailboxes (GET /api/emails) */
1442
1763
  listMailboxesByAddress(query?: {
1443
1764
  domain?: string;
1444
1765
  }): Promise<{
1445
- mailboxes?: {
1766
+ mailboxes?: ({
1446
1767
  id?: string;
1447
1768
  address?: string;
1448
1769
  slug?: string;
@@ -1452,11 +1773,12 @@ export declare class Domani {
1452
1773
  forward_to?: string | null;
1453
1774
  workspace_id?: string | null;
1454
1775
  access_role?: "viewer" | "responder" | "manager";
1776
+ effective_capabilities?: MailboxEffectiveCapabilities;
1455
1777
  collaboration_enabled?: boolean;
1456
1778
  storage_quota_bytes?: number | null;
1457
1779
  storage_used_bytes?: number | null;
1458
1780
  storage_measured_at?: string | null;
1459
- }[];
1781
+ })[];
1460
1782
  }>;
1461
1783
  /** List inbound mail rules (GET /api/emails/{address}/rules) */
1462
1784
  listMailRules(address: string): Promise<{
@@ -1464,6 +1786,20 @@ export declare class Domani {
1464
1786
  rules?: MailRule[];
1465
1787
  hint?: string;
1466
1788
  }>;
1789
+ /** List actionable mailbox conversations (GET /api/email/work-queue) */
1790
+ listMailWorkQueue(query?: {
1791
+ mailbox_ids: string;
1792
+ status?: "open" | "waiting" | "closed";
1793
+ assigned?: "mine" | "unassigned" | "all";
1794
+ limit?: number;
1795
+ scan_limit?: number;
1796
+ }): Promise<{
1797
+ items: ConversationWorkItem[];
1798
+ returned: number;
1799
+ scanned_messages: number;
1800
+ partial: boolean;
1801
+ scan_limit_per_mailbox: number;
1802
+ }>;
1467
1803
  /** List your negotiations (GET /api/negotiations) */
1468
1804
  listNegotiations(query?: {
1469
1805
  role?: "buyer" | "seller";
@@ -1476,7 +1812,7 @@ export declare class Domani {
1476
1812
  limit?: number;
1477
1813
  cursor?: string;
1478
1814
  }): Promise<{
1479
- notifications?: {
1815
+ notifications?: ({
1480
1816
  id?: string;
1481
1817
  type?: string;
1482
1818
  title?: string;
@@ -1484,7 +1820,7 @@ export declare class Domani {
1484
1820
  action_url?: string | null;
1485
1821
  read?: boolean;
1486
1822
  created_at?: string;
1487
- }[];
1823
+ })[];
1488
1824
  has_more?: boolean;
1489
1825
  next_cursor?: string | null;
1490
1826
  }>;
@@ -1493,12 +1829,12 @@ export declare class Domani {
1493
1829
  cursor?: string;
1494
1830
  limit?: number;
1495
1831
  }): Promise<{
1496
- suppressions?: {
1832
+ suppressions?: ({
1497
1833
  address?: string;
1498
1834
  reason?: "hard_bounce" | "complaint" | "manual";
1499
1835
  source?: "resend" | "api";
1500
1836
  created_at?: string;
1501
- }[];
1837
+ })[];
1502
1838
  next_cursor?: string | null;
1503
1839
  hint?: string;
1504
1840
  }>;
@@ -1578,9 +1914,8 @@ export declare class Domani {
1578
1914
  markMessagesReadByAddress(address: string, body?: {
1579
1915
  message_ids: string[];
1580
1916
  read: boolean;
1581
- }): Promise<{
1582
- count?: number;
1583
- }>;
1917
+ idempotency_key?: string;
1918
+ }): Promise<LegacyMailboxOperationReceipt>;
1584
1919
  /** Mark notification as read (PATCH /api/notifications/{id}) */
1585
1920
  markNotificationRead(id: string, body: {
1586
1921
  read: boolean;
@@ -1656,6 +1991,10 @@ export declare class Domani {
1656
1991
  payment_chain?: "base" | "ethereum";
1657
1992
  years?: number;
1658
1993
  }): Promise<unknown>;
1994
+ /** Refresh a domain brief from live sources (POST /api/domain-briefs/{id}/refresh) */
1995
+ refreshDomainBrief(id: string): Promise<{
1996
+ brief: DomainBrief;
1997
+ }>;
1659
1998
  /** Create a new account (POST /api/auth/register) */
1660
1999
  registerUser(body: {
1661
2000
  email: string;
@@ -1669,6 +2008,13 @@ export declare class Domani {
1669
2008
  email?: string;
1670
2009
  };
1671
2010
  }>;
2011
+ /** Release this client's presence and compose lease (DELETE /api/email/collaboration/coordination) */
2012
+ releaseConversationPresence(body: {
2013
+ mailbox_id: string;
2014
+ thread_key: string;
2015
+ client_id: string;
2016
+ lease_id?: string;
2017
+ }): Promise<ConversationCoordinationSnapshot>;
1672
2018
  /** Release an agent identity (DELETE /api/agents/identity/{slug}) */
1673
2019
  releaseIdentity(slug: string): Promise<{
1674
2020
  success?: boolean;
@@ -1729,18 +2075,41 @@ export declare class Domani {
1729
2075
  payment_method: string;
1730
2076
  payment_tx?: string;
1731
2077
  }>;
2078
+ /** Replay a webhook delivery (POST /api/webhooks/{id}/deliveries/{deliveryId}/replay) */
2079
+ replayWebhookDelivery(id: string, deliveryId: string, body: {
2080
+ idempotency_key: string;
2081
+ }): Promise<{
2082
+ delivery_id: string;
2083
+ original_delivery_id: string;
2084
+ event_type: string;
2085
+ status: "pending" | "delivered" | "failed";
2086
+ http_status?: number | null;
2087
+ attempts: number;
2088
+ idempotency_key: string;
2089
+ idempotent_replay: boolean;
2090
+ created_at: string;
2091
+ hint?: string;
2092
+ }>;
1732
2093
  /** Reply to a message (POST /api/emails/{address}/messages/{id}/reply) */
1733
2094
  replyToMessageByAddress(address: string, id: string, body?: {
1734
2095
  text?: string;
1735
2096
  html?: string;
1736
2097
  cc?: string | string[];
1737
2098
  all?: boolean;
2099
+ idempotency_key?: string;
2100
+ coordination?: {
2101
+ thread_key?: string;
2102
+ client_id: string;
2103
+ lease_id: string;
2104
+ expected_reply_version: number;
2105
+ };
1738
2106
  }): Promise<{
1739
2107
  id?: string;
1740
2108
  message_id?: string;
1741
2109
  from?: string;
1742
2110
  to?: string;
1743
2111
  status?: string;
2112
+ reply_version?: number;
1744
2113
  }>;
1745
2114
  /** Request a workspace ownership transfer (POST /api/workspaces/{id}/ownership-transfer) */
1746
2115
  requestWorkspaceOwnershipTransfer(id: string, body: {
@@ -1803,6 +2172,10 @@ export declare class Domani {
1803
2172
  revokeToken(id: string): Promise<{
1804
2173
  success?: boolean;
1805
2174
  }>;
2175
+ /** Revoke an access grant and its credentials (DELETE /api/workspaces/{id}/access/grants/{grantId}) */
2176
+ revokeWorkspaceAccess(id: string, grantId: string, body?: {
2177
+ expected_version?: number;
2178
+ }): Promise<unknown>;
1806
2179
  /** Revoke a pending invitation (DELETE /api/workspaces/{id}/invitations/{invitationId}) */
1807
2180
  revokeWorkspaceInvitation(id: string, invitationId: string): Promise<unknown>;
1808
2181
  /** Revoke a pending ownership transfer (DELETE /api/workspaces/{id}/ownership-transfer/{transferId}) */
@@ -1858,6 +2231,12 @@ export declare class Domani {
1858
2231
  in_reply_to?: string;
1859
2232
  references?: string;
1860
2233
  idempotency_key?: string;
2234
+ coordination?: {
2235
+ thread_key: string;
2236
+ client_id: string;
2237
+ lease_id: string;
2238
+ expected_reply_version: number;
2239
+ };
1861
2240
  allow_risky_content?: boolean;
1862
2241
  attachments?: {
1863
2242
  content: string;
@@ -1946,6 +2325,21 @@ export declare class Domani {
1946
2325
  records?: DnsRecord[];
1947
2326
  hint?: string;
1948
2327
  }>;
2328
+ /** Plan or apply one access grant (PUT /api/workspaces/{id}/access) */
2329
+ setWorkspaceAccess(id: string, body: {
2330
+ mode: "plan" | "apply";
2331
+ subject: Record<string, unknown>;
2332
+ resource: Record<string, unknown>;
2333
+ profile: "viewer" | "responder" | "manager" | "draft_only" | "mail_client";
2334
+ policy?: {
2335
+ expires_at?: string | null;
2336
+ recipient_domains?: string[];
2337
+ max_recipients_per_message?: number;
2338
+ require_approval_for?: string[];
2339
+ };
2340
+ expected_version?: number;
2341
+ reason?: string;
2342
+ }): Promise<unknown>;
1949
2343
  /** Capture a DNS snapshot (POST /api/domains/{domain}/dns/snapshot) */
1950
2344
  snapshotDns(domain: string, body?: {
1951
2345
  extra_subdomains?: string[];
@@ -1977,6 +2371,24 @@ export declare class Domani {
1977
2371
  checked: number;
1978
2372
  iterations: number;
1979
2373
  }>;
2374
+ /** Create or replace a flat access group (PUT /api/workspaces/{id}/access/groups) */
2375
+ syncAccessGroup(id: string, body: {
2376
+ id?: string;
2377
+ name: string;
2378
+ description?: string | null;
2379
+ principals: ({
2380
+ type: "human" | "agent" | "service" | "token";
2381
+ id: string;
2382
+ label: string;
2383
+ })[];
2384
+ }): Promise<unknown>;
2385
+ /** Create or replace an explicit mailbox collection (PUT /api/workspaces/{id}/access/collections) */
2386
+ syncMailboxCollection(id: string, body: {
2387
+ id?: string;
2388
+ name: string;
2389
+ description?: string | null;
2390
+ mailbox_ids: string[];
2391
+ }): Promise<unknown>;
1980
2392
  /** Test mailbox webhook (POST /api/emails/{address}/webhook/test) */
1981
2393
  testMailboxWebhook(address: string): Promise<{
1982
2394
  address?: string;
@@ -2001,10 +2413,18 @@ export declare class Domani {
2001
2413
  preferred_payment_method?: string | null;
2002
2414
  hint?: string;
2003
2415
  }>;
2416
+ /** Dismiss or restore first-run guidance (PUT /api/me/activation) */
2417
+ updateActivationPreference(body: {
2418
+ dismissed_version: number;
2419
+ }): Promise<{
2420
+ dismissed_version: number;
2421
+ hint: string;
2422
+ }>;
2004
2423
  /** Assign or update a shared inbox conversation (PATCH /api/email/collaboration) */
2005
2424
  updateConversationState(body: {
2006
2425
  mailbox_id: string;
2007
2426
  thread_key: string;
2427
+ thread_aliases?: string[];
2008
2428
  subject?: string | null;
2009
2429
  status?: "open" | "waiting" | "closed";
2010
2430
  assignee?: {
@@ -2032,7 +2452,8 @@ export declare class Domani {
2032
2452
  destination?: "inbox" | "archive" | "sent" | "spam" | "trash";
2033
2453
  read?: boolean;
2034
2454
  starred?: boolean;
2035
- }): Promise<unknown>;
2455
+ idempotency_key?: string;
2456
+ }): Promise<MailboxOperationReceipt>;
2036
2457
  /** Update an agent identity (PATCH /api/agents/identity/{slug}) */
2037
2458
  updateIdentity(slug: string, body: {
2038
2459
  name?: string;
@@ -2078,11 +2499,11 @@ export declare class Domani {
2078
2499
  }>;
2079
2500
  /** Update notification preferences (PUT /api/notifications/preferences) */
2080
2501
  updateNotificationPreferences(body: {
2081
- preferences?: {
2502
+ preferences?: ({
2082
2503
  category: "domains" | "transfers" | "marketplace" | "email" | "inquiries";
2083
2504
  channel: "in_app" | "email";
2084
2505
  enabled: boolean;
2085
- }[];
2506
+ })[];
2086
2507
  expiry_alert_days?: number[];
2087
2508
  }): Promise<{
2088
2509
  ok?: boolean;
package/dist/index.js CHANGED
@@ -72,6 +72,10 @@ class Domani {
72
72
  throw new DomaniError(res.status, data);
73
73
  return data;
74
74
  }
75
+ /** Accept an access or ownership offer (POST /api/workspaces/access/offers/accept) */
76
+ acceptWorkspaceAccessOffer(body) {
77
+ return this.request("POST", `/api/workspaces/access/offers/accept`, { body });
78
+ }
75
79
  /** Accept a workspace invitation (POST /api/workspaces/invitations/accept) */
76
80
  acceptWorkspaceInvitation(body) {
77
81
  return this.request("POST", `/api/workspaces/invitations/accept`, { body });
@@ -180,6 +184,10 @@ class Domani {
180
184
  createDeal(body) {
181
185
  return this.request("POST", `/api/deals`, { body });
182
186
  }
187
+ /** Analyze a domain and persist an evidence-backed brief (POST /api/domain-briefs) */
188
+ createDomainBrief(body) {
189
+ return this.request("POST", `/api/domain-briefs`, { body });
190
+ }
183
191
  /** List a domain for sale (PUT /api/domains/{domain}/for-sale) */
184
192
  createListing(domain, body) {
185
193
  return this.request("PUT", `/api/domains/${enc(domain)}/for-sale`, { body });
@@ -208,6 +216,10 @@ class Domani {
208
216
  createWorkspace(body) {
209
217
  return this.request("POST", `/api/workspaces`, { body });
210
218
  }
219
+ /** Offer mailbox access or workspace ownership (POST /api/workspaces/{id}/access/offers) */
220
+ createWorkspaceAccessOffer(id, body) {
221
+ return this.request("POST", `/api/workspaces/${enc(id)}/access/offers`, { body });
222
+ }
211
223
  /** Start Mailzero workspace checkout (POST /api/workspaces/{id}/billing/checkout) */
212
224
  createWorkspaceCheckout(id, body) {
213
225
  return this.request("POST", `/api/workspaces/${enc(id)}/billing/checkout`, { body });
@@ -252,6 +264,10 @@ class Domani {
252
264
  getAccount() {
253
265
  return this.request("GET", `/api/me`, undefined);
254
266
  }
267
+ /** Get truthful activation state and recommended next actions (GET /api/me/activation) */
268
+ getActivation() {
269
+ return this.request("GET", `/api/me/activation`, undefined);
270
+ }
255
271
  /** Get EPP auth code (GET /api/domains/{domain}/auth-code) */
256
272
  getAuthCode(domain) {
257
273
  return this.request("GET", `/api/domains/${enc(domain)}/auth-code`, undefined);
@@ -272,6 +288,10 @@ class Domani {
272
288
  getContact() {
273
289
  return this.request("GET", `/api/me/contact`, undefined);
274
290
  }
291
+ /** Get active viewers, composers, and the compose lease (GET /api/email/collaboration/coordination) */
292
+ getConversationCoordination(query) {
293
+ return this.request("GET", `/api/email/collaboration/coordination`, { query });
294
+ }
275
295
  /** Get deal detail with timeline (GET /api/deals/{id}) */
276
296
  getDeal(id) {
277
297
  return this.request("GET", `/api/deals/${enc(id)}`, undefined);
@@ -288,6 +308,10 @@ class Domani {
288
308
  getDnssecRecords(domain) {
289
309
  return this.request("GET", `/api/domains/${enc(domain)}/dnssec`, undefined);
290
310
  }
311
+ /** Get a previously generated domain brief (GET /api/domain-briefs/{id}) */
312
+ getDomainBrief(id) {
313
+ return this.request("GET", `/api/domain-briefs/${enc(id)}`, undefined);
314
+ }
291
315
  /** Check email DNS status (GET /api/domains/{domain}/email/status) */
292
316
  getDomainEmailStatus(domain) {
293
317
  return this.request("GET", `/api/domains/${enc(domain)}/email/status`, undefined);
@@ -372,6 +396,14 @@ class Domani {
372
396
  getWorkspace(id) {
373
397
  return this.request("GET", `/api/workspaces/${enc(id)}`, undefined);
374
398
  }
399
+ /** Get the canonical workspace access graph (GET /api/workspaces/{id}/access) */
400
+ getWorkspaceAccess(id) {
401
+ return this.request("GET", `/api/workspaces/${enc(id)}/access`, undefined);
402
+ }
403
+ /** Heartbeat viewing or composing presence (PUT /api/email/collaboration/coordination) */
404
+ heartbeatConversationPresence(body) {
405
+ return this.request("PUT", `/api/email/collaboration/coordination`, { body });
406
+ }
375
407
  /** Import an external domain (POST /api/domains/import) */
376
408
  importDomain(body) {
377
409
  return this.request("POST", `/api/domains/import`, { body });
@@ -408,7 +440,7 @@ class Domani {
408
440
  listConversationNotes(id) {
409
441
  return this.request("GET", `/api/email/collaboration/${enc(id)}/notes`, undefined);
410
442
  }
411
- /** List shared inbox conversation state (GET /api/email/collaboration) */
443
+ /** List persisted shared inbox state (GET /api/email/collaboration) */
412
444
  listConversationStates(query) {
413
445
  return this.request("GET", `/api/email/collaboration`, { query });
414
446
  }
@@ -440,6 +472,10 @@ class Domani {
440
472
  listMailboxAliases(address) {
441
473
  return this.request("GET", `/api/emails/${enc(address)}/aliases`, undefined);
442
474
  }
475
+ /** Incrementally synchronize one mailbox (GET /api/email/changes) */
476
+ listMailboxChanges(query) {
477
+ return this.request("GET", `/api/email/changes`, { query });
478
+ }
443
479
  /** List app passwords (hosted) (GET /api/emails/{address}/credentials) */
444
480
  listMailboxCredentials(address) {
445
481
  return this.request("GET", `/api/emails/${enc(address)}/credentials`, undefined);
@@ -456,6 +492,10 @@ class Domani {
456
492
  listMailRules(address) {
457
493
  return this.request("GET", `/api/emails/${enc(address)}/rules`, undefined);
458
494
  }
495
+ /** List actionable mailbox conversations (GET /api/email/work-queue) */
496
+ listMailWorkQueue(query) {
497
+ return this.request("GET", `/api/email/work-queue`, { query });
498
+ }
459
499
  /** List your negotiations (GET /api/negotiations) */
460
500
  listNegotiations(query) {
461
501
  return this.request("GET", `/api/negotiations`, { query });
@@ -524,10 +564,18 @@ class Domani {
524
564
  provisionAgent(body) {
525
565
  return this.request("POST", `/api/agents/provision`, { body });
526
566
  }
567
+ /** Refresh a domain brief from live sources (POST /api/domain-briefs/{id}/refresh) */
568
+ refreshDomainBrief(id) {
569
+ return this.request("POST", `/api/domain-briefs/${enc(id)}/refresh`, undefined);
570
+ }
527
571
  /** Create a new account (POST /api/auth/register) */
528
572
  registerUser(body) {
529
573
  return this.request("POST", `/api/auth/register`, { body });
530
574
  }
575
+ /** Release this client's presence and compose lease (DELETE /api/email/collaboration/coordination) */
576
+ releaseConversationPresence(body) {
577
+ return this.request("DELETE", `/api/email/collaboration/coordination`, { body });
578
+ }
531
579
  /** Release an agent identity (DELETE /api/agents/identity/{slug}) */
532
580
  releaseIdentity(slug) {
533
581
  return this.request("DELETE", `/api/agents/identity/${enc(slug)}`, undefined);
@@ -568,6 +616,10 @@ class Domani {
568
616
  renewDomain(domain, body) {
569
617
  return this.request("POST", `/api/domains/${enc(domain)}/renew`, { body });
570
618
  }
619
+ /** Replay a webhook delivery (POST /api/webhooks/{id}/deliveries/{deliveryId}/replay) */
620
+ replayWebhookDelivery(id, deliveryId, body) {
621
+ return this.request("POST", `/api/webhooks/${enc(id)}/deliveries/${enc(deliveryId)}/replay`, { body });
622
+ }
571
623
  /** Reply to a message (POST /api/emails/{address}/messages/{id}/reply) */
572
624
  replyToMessageByAddress(address, id, body) {
573
625
  return this.request("POST", `/api/emails/${enc(address)}/messages/${enc(id)}/reply`, { body });
@@ -600,6 +652,10 @@ class Domani {
600
652
  revokeToken(id) {
601
653
  return this.request("DELETE", `/api/tokens/${enc(id)}`, undefined);
602
654
  }
655
+ /** Revoke an access grant and its credentials (DELETE /api/workspaces/{id}/access/grants/{grantId}) */
656
+ revokeWorkspaceAccess(id, grantId, body) {
657
+ return this.request("DELETE", `/api/workspaces/${enc(id)}/access/grants/${enc(grantId)}`, { body });
658
+ }
603
659
  /** Revoke a pending invitation (DELETE /api/workspaces/{id}/invitations/{invitationId}) */
604
660
  revokeWorkspaceInvitation(id, invitationId) {
605
661
  return this.request("DELETE", `/api/workspaces/${enc(id)}/invitations/${enc(invitationId)}`, undefined);
@@ -660,6 +716,10 @@ class Domani {
660
716
  setupDomainEmail(domain, body) {
661
717
  return this.request("POST", `/api/domains/${enc(domain)}/email/setup`, { body });
662
718
  }
719
+ /** Plan or apply one access grant (PUT /api/workspaces/{id}/access) */
720
+ setWorkspaceAccess(id, body) {
721
+ return this.request("PUT", `/api/workspaces/${enc(id)}/access`, { body });
722
+ }
663
723
  /** Capture a DNS snapshot (POST /api/domains/{domain}/dns/snapshot) */
664
724
  snapshotDns(domain, body) {
665
725
  return this.request("POST", `/api/domains/${enc(domain)}/dns/snapshot`, { body });
@@ -672,6 +732,14 @@ class Domani {
672
732
  suggestDomains(query) {
673
733
  return this.request("GET", `/api/domains/suggest`, { query });
674
734
  }
735
+ /** Create or replace a flat access group (PUT /api/workspaces/{id}/access/groups) */
736
+ syncAccessGroup(id, body) {
737
+ return this.request("PUT", `/api/workspaces/${enc(id)}/access/groups`, { body });
738
+ }
739
+ /** Create or replace an explicit mailbox collection (PUT /api/workspaces/{id}/access/collections) */
740
+ syncMailboxCollection(id, body) {
741
+ return this.request("PUT", `/api/workspaces/${enc(id)}/access/collections`, { body });
742
+ }
675
743
  /** Test mailbox webhook (POST /api/emails/{address}/webhook/test) */
676
744
  testMailboxWebhook(address) {
677
745
  return this.request("POST", `/api/emails/${enc(address)}/webhook/test`, undefined);
@@ -684,6 +752,10 @@ class Domani {
684
752
  updateAccount(body) {
685
753
  return this.request("PUT", `/api/me`, { body });
686
754
  }
755
+ /** Dismiss or restore first-run guidance (PUT /api/me/activation) */
756
+ updateActivationPreference(body) {
757
+ return this.request("PUT", `/api/me/activation`, { body });
758
+ }
687
759
  /** Assign or update a shared inbox conversation (PATCH /api/email/collaboration) */
688
760
  updateConversationState(body) {
689
761
  return this.request("PATCH", `/api/email/collaboration`, { body });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "domani",
3
- "version": "1.0.2",
3
+ "version": "1.0.3",
4
4
  "description": "Official TypeScript SDK for the domani API - domains, email, and identity for AI agents.",
5
5
  "main": "./src/index.ts",
6
6
  "types": "./src/index.ts",