samva 0.3.0 → 0.5.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 (54) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +5 -1
  3. package/dist/{categories-CsUa8ojo.js → categories-B9Nw2v_F.js} +5 -1
  4. package/dist/client/sdk.gen.d.ts +312 -190
  5. package/dist/client/types.gen.d.ts +2284 -728
  6. package/dist/{client-BOghX8fr.js → client-B7gEkvEq.js} +2740 -1036
  7. package/dist/client-attribution-B2yJBXdZ.js +9 -0
  8. package/dist/client-attribution.d.ts +2 -0
  9. package/dist/effect/api-keys.d.ts +51 -51
  10. package/dist/effect/api-keys.js +1 -1
  11. package/dist/effect/campaigns.d.ts +269 -219
  12. package/dist/effect/campaigns.js +1 -1
  13. package/dist/effect/categories.d.ts +6 -6
  14. package/dist/effect/categories.js +1 -1
  15. package/dist/effect/client.js +1 -1
  16. package/dist/effect/contacts.d.ts +225 -225
  17. package/dist/effect/contacts.js +1 -1
  18. package/dist/effect/conversations.d.ts +308 -293
  19. package/dist/effect/conversations.js +1 -1
  20. package/dist/effect/design.d.ts +76 -76
  21. package/dist/effect/design.js +1 -1
  22. package/dist/effect/email.d.ts +923 -213
  23. package/dist/effect/email.js +27 -3
  24. package/dist/effect/generated-metadata.d.ts +4 -0
  25. package/dist/effect/generated.d.ts +14948 -10919
  26. package/dist/effect/index.js +2 -2
  27. package/dist/effect/internal/client.d.ts +1 -1
  28. package/dist/effect/internal/operation.d.ts +31 -20
  29. package/dist/effect/media.d.ts +12 -12
  30. package/dist/effect/media.js +1 -1
  31. package/dist/effect/messages.d.ts +243 -61
  32. package/dist/effect/messages.js +5 -3
  33. package/dist/effect/operations.d.ts +17 -17
  34. package/dist/effect/operations.js +1 -1
  35. package/dist/effect/organizations.d.ts +162 -162
  36. package/dist/effect/organizations.js +1 -1
  37. package/dist/effect/retry.js +1 -1
  38. package/dist/effect/runtime.d.ts +0 -2
  39. package/dist/effect/scheduled-messages.d.ts +375 -277
  40. package/dist/effect/scheduled-messages.js +5 -3
  41. package/dist/effect/templates.d.ts +1383 -1554
  42. package/dist/effect/templates.js +40 -30
  43. package/dist/effect/webhooks.d.ts +81 -47
  44. package/dist/effect/webhooks.js +2 -2
  45. package/dist/index.js +2 -2
  46. package/dist/{normalize-BKFjbR9t.js → normalize-BiIJnycv.js} +2 -3
  47. package/dist/{operation-C2Q4cFJL.js → operation-B4FjN6wq.js} +113 -38
  48. package/dist/promises/errors.gen.d.ts +21 -2
  49. package/dist/promises/index.d.ts +11 -8
  50. package/dist/promises/index.js +2 -2
  51. package/dist/promises/types.gen.d.ts +1 -1
  52. package/dist/{promises-oiy7mOyu.js → promises-CP_nxUus.js} +828 -306
  53. package/dist/service-map.d.ts +136 -44
  54. package/package.json +13 -14
@@ -1,5 +1,5 @@
1
1
  export type ClientOptions = {
2
- baseUrl: `${string}://${string}` | (string & {});
2
+ baseUrl: "https://api.samva.dev" | (string & {});
3
3
  };
4
4
  export type ConversationId = string;
5
5
  export type ContactId = string;
@@ -64,6 +64,11 @@ export type Message = {
64
64
  contact: MessageContact | null;
65
65
  }>;
66
66
  deliveries: Array<{
67
+ scheduling: {
68
+ dueAt: string;
69
+ expiresAt: string;
70
+ waitReason: "rate" | "daily-quota" | "domain-health" | "tenant-health" | "provider-unavailable" | "retry" | "campaign-paused" | "domain-warming" | "onboarding-review" | null;
71
+ } | null;
67
72
  id: string;
68
73
  messageId: string;
69
74
  recipientId: string | null;
@@ -184,6 +189,8 @@ export type EmailAttachment = {
184
189
  size: number;
185
190
  };
186
191
  export type EmailAttachments = Array<EmailAttachment> | null;
192
+ export type TemplatePublicationId = string;
193
+ export type TemplateInputContractId = string;
187
194
  export type TemplateId = string;
188
195
  export type TemplateData = JsonObject | null;
189
196
  export type ReplyToAddresses = Array<string> | null | null;
@@ -209,6 +216,8 @@ export type EmailContent = {
209
216
  html?: string | null | undefined;
210
217
  text?: string | null | undefined;
211
218
  attachments?: EmailAttachments | undefined;
219
+ publicationId?: TemplatePublicationId | undefined;
220
+ inputContractId?: TemplateInputContractId | undefined;
212
221
  templateId?: TemplateId | null | undefined;
213
222
  templateSlug?: string | null | undefined;
214
223
  templateData?: TemplateData | undefined;
@@ -266,6 +275,15 @@ export type ValidationError = {
266
275
  [key: string]: Array<string>;
267
276
  } | null | undefined;
268
277
  };
278
+ export type OnboardingReviewRequiredError = {
279
+ _tag: "OnboardingReviewRequiredError";
280
+ operation: string;
281
+ code: "review_required" | "review_in_progress" | "information_required" | "review_rejected" | "identity_review_required" | "identity_review_rejected" | "identity_changed";
282
+ decision: "undecided" | "approved" | "rejected" | "exempt";
283
+ stage: "collecting" | "automated_review" | "manual_review" | "information_requested" | "complete";
284
+ nextAction: "wait_for_review" | "provide_information" | "verify_sending_identity" | "reapply" | "contact_support";
285
+ identityId?: string | null | undefined;
286
+ };
269
287
  export type FlagDisabledError = {
270
288
  _tag: "FlagDisabledError";
271
289
  operation: string;
@@ -277,6 +295,20 @@ export type WebhookEnqueueError = {
277
295
  reason: string;
278
296
  details?: string | null | undefined;
279
297
  };
298
+ export type ValidateEmailResponse = {
299
+ valid: true;
300
+ from: {
301
+ email: string;
302
+ name: string | null;
303
+ };
304
+ recipientCount: number;
305
+ content: {
306
+ source: "inline" | "template";
307
+ subject: string;
308
+ hasHtml: boolean;
309
+ hasText: boolean;
310
+ };
311
+ };
280
312
  export type MessageEventId = string;
281
313
  export type OperationId = string;
282
314
  export type OperationResource = {
@@ -319,6 +351,8 @@ export type EmailDispatchContent = {
319
351
  html?: string | null | undefined;
320
352
  text?: string | null | undefined;
321
353
  attachments?: EmailAttachments | undefined;
354
+ publicationId?: TemplatePublicationId | undefined;
355
+ inputContractId?: TemplateInputContractId | undefined;
322
356
  templateId?: TemplateId | null | undefined;
323
357
  templateSlug?: string | null | undefined;
324
358
  templateData?: TemplateData | undefined;
@@ -339,10 +373,11 @@ export type EmailDispatchSendMessagePayload = {
339
373
  email: EmailDispatchContent;
340
374
  };
341
375
  export type DispatchSendMessagePayload = EmailDispatchSendMessagePayload;
376
+ export type IanaTimezone = string;
342
377
  export type ScheduledMessageId = string;
343
378
  export type ScheduledMessage = {
344
379
  id: ScheduledMessageId;
345
- status: "pending" | "dispatching" | "dispatched" | "cancelled" | "failed";
380
+ status: "pending" | "dispatching" | "paused" | "dispatched" | "cancelled" | "failed";
346
381
  scheduledFor: string;
347
382
  timezone: string;
348
383
  send: SendMessagePayload;
@@ -417,6 +452,7 @@ export type Campaign = {
417
452
  createdAt: string;
418
453
  updatedAt: string;
419
454
  };
455
+ export type EmailDomainId = string;
420
456
  export type CampaignRun = {
421
457
  id: CampaignRunId;
422
458
  campaignId: CampaignId;
@@ -433,6 +469,8 @@ export type CampaignRun = {
433
469
  failedCount: number;
434
470
  skippedCount: number;
435
471
  failureReason: string | null;
472
+ holdReason: string | null;
473
+ holdDomainId: EmailDomainId | null;
436
474
  lastContactId: string | null;
437
475
  createdBy: string | null;
438
476
  actorEmail: string;
@@ -445,6 +483,39 @@ export type CampaignRunAction = {
445
483
  item: CampaignRun;
446
484
  };
447
485
  export type CampaignRecipientId = string;
486
+ export type IdentityClearanceStatus = {
487
+ identityId: string;
488
+ decision: "undecided" | "approved" | "rejected";
489
+ generation: number;
490
+ code: "review_required" | "review_in_progress" | "information_required" | "review_rejected" | "identity_review_required" | "identity_review_rejected" | "identity_changed" | null;
491
+ nextAction: "wait_for_review" | "provide_information" | "verify_sending_identity" | "reapply" | "contact_support" | null;
492
+ updatedAt: string;
493
+ };
494
+ export type OnboardingReviewStatus = {
495
+ decision: "undecided" | "approved" | "rejected" | "exempt";
496
+ stage: "collecting" | "automated_review" | "manual_review" | "information_requested" | "complete";
497
+ generation: number;
498
+ canSend: boolean;
499
+ code: "review_required" | "review_in_progress" | "information_required" | "review_rejected" | "identity_review_required" | "identity_review_rejected" | "identity_changed" | null;
500
+ nextAction: "wait_for_review" | "provide_information" | "verify_sending_identity" | "reapply" | "contact_support" | null;
501
+ canReapply: boolean;
502
+ informationRequest: {
503
+ id: string;
504
+ requestedFields: Array<string>;
505
+ requestedAt: string;
506
+ canRespond: boolean;
507
+ } | null;
508
+ identities: Array<IdentityClearanceStatus>;
509
+ updatedAt: string | null;
510
+ };
511
+ export type ReapplyOnboardingReviewInput = {
512
+ expectedGeneration: number;
513
+ };
514
+ export type RespondToOnboardingInformationRequestInput = {
515
+ expectedGeneration: number;
516
+ responseText: string;
517
+ evidenceMediaIds: Array<MediaId>;
518
+ };
448
519
  export type EmailTrackingDefaults = {
449
520
  opens: boolean;
450
521
  clicks: boolean;
@@ -457,21 +528,20 @@ export type EmailRecipientTrackingPreference = {
457
528
  createdAt: string | null;
458
529
  updatedAt: string | null;
459
530
  };
460
- export type EmailDomainId = string;
461
531
  export type EmailSenderId = string;
462
532
  export type DeliverabilityFacts = {
463
533
  bounceRate: number;
464
534
  complaintRate: number;
465
535
  sendingStatus: "enabled" | "disabled" | "reinstated" | "unknown";
466
536
  };
467
- export type EmailDomain = {
537
+ export type EmailDomainDetailed = {
468
538
  id: EmailDomainId;
469
539
  domain: string;
470
540
  phase: "dns-setup" | "provider-setup" | "provider-verification" | "ready" | "degraded" | "failed";
471
541
  dkimSelector?: string | null | undefined;
472
542
  dkimPublicKey?: string | null | undefined;
473
543
  dnsRecords: Array<{
474
- type: string;
544
+ type: "A" | "AAAA" | "CNAME" | "MX" | "NS" | "SOA" | "PTR" | "SRV" | "TXT" | "CAA";
475
545
  name: string;
476
546
  value: string;
477
547
  ttl?: string | null | undefined;
@@ -492,6 +562,27 @@ export type EmailChannelError = {
492
562
  message: string;
493
563
  statusCode?: number | null | undefined;
494
564
  };
565
+ export type EmailDkimRotation = {
566
+ id: string;
567
+ domainId: EmailDomainId;
568
+ phase: "staged" | "cutover" | "complete";
569
+ selector: string;
570
+ record: {
571
+ name: string;
572
+ type: "TXT";
573
+ value: string;
574
+ ttl: string;
575
+ };
576
+ formerRecord: {
577
+ name: string;
578
+ type: "TXT";
579
+ value: string;
580
+ };
581
+ /**
582
+ * Earliest minimum retention horizon only. The former public key remains published indefinitely until a separately approved retirement verifies at least two actual former-record TTLs have elapsed.
583
+ */
584
+ minimumRetainUntil: string | null;
585
+ };
495
586
  export type EmailDomainVerification = {
496
587
  domainId: EmailDomainId;
497
588
  domain: string;
@@ -526,6 +617,40 @@ export type EmailDomainVerification = {
526
617
  message: string;
527
618
  failedAt: string;
528
619
  } | null;
620
+ health: {
621
+ actionOwner: "customer" | "samva" | "provider" | "none";
622
+ action: string;
623
+ freshness: "current" | "stale" | "unknown";
624
+ observedAt: string | null;
625
+ staleAt: string | null;
626
+ nextRetryAt: string | null;
627
+ reason: "ready" | "dns-action-required" | "dns-unavailable" | "provider-pending" | "provider-failed" | "samva-repair" | "signing-custody-action-required" | "provider-ownership-action-required" | "inactive" | "observation-stale" | "observation-unknown";
628
+ };
629
+ /**
630
+ * Stored domain, tenant and workspace health. Ready does not guarantee send acceptance or report configuration-set/account pauses.
631
+ */
632
+ sending: {
633
+ actionOwner: "customer" | "samva" | "provider" | "none";
634
+ action: string;
635
+ freshness: "current" | "stale" | "unknown";
636
+ observedAt: string | null;
637
+ staleAt: string | null;
638
+ nextRetryAt: string | null;
639
+ status: "ready" | "blocked" | "unknown";
640
+ reason: "domain-not-ready" | "domain-observation-stale" | "operator-paused" | "provider-paused" | "tenant-health-stale" | "tenant-health-unknown" | "ready";
641
+ };
642
+ dmarc: {
643
+ status: "valid" | "missing" | "invalid" | "multiple" | "unknown";
644
+ source: "direct" | "organizational" | "none";
645
+ policyDomain: string | null;
646
+ policy: "none" | "quarantine" | "reject" | null;
647
+ subdomainPolicy: "none" | "quarantine" | "reject" | null;
648
+ effectivePolicy: "none" | "quarantine" | "reject" | null;
649
+ observedAt: string | null;
650
+ staleAt: string | null;
651
+ guidance: string;
652
+ };
653
+ rotation: EmailDkimRotation | null;
529
654
  };
530
655
  export type DomainConnectEligibility = {
531
656
  eligible: false;
@@ -591,11 +716,99 @@ export type ForwardingConditions = {
591
716
  hasAttachments?: boolean | null | undefined;
592
717
  };
593
718
  export type EmailForwardingRuleId = string;
719
+ export type DomainWarmingDomainRef = {
720
+ id: EmailDomainId;
721
+ domain: string;
722
+ };
723
+ export type EmailDomainWarmingPlanId = string;
724
+ export type DomainWarmingPlan = {
725
+ id: EmailDomainWarmingPlanId;
726
+ status: "active" | "paused" | "completed";
727
+ identity: "new" | "migrating" | "returning";
728
+ initialDailyRecipients: number;
729
+ dailyGrowthPercent: number;
730
+ targetDailyRecipients: number;
731
+ holdReason: string | null;
732
+ heldAt: string | null;
733
+ pausedAt: string | null;
734
+ completedAt: string | null;
735
+ createdAt: string;
736
+ updatedAt: string;
737
+ };
738
+ export type EmailDomainWarmingBatchId = string;
739
+ export type DomainWarmingBatch = {
740
+ id: EmailDomainWarmingBatchId;
741
+ sequence: number;
742
+ state: "scheduled" | "open" | "closed" | "cancelled";
743
+ startsAt: string;
744
+ endsAt: string;
745
+ allowanceRecipients: number;
746
+ dailyGrowthPercent: number;
747
+ targetDailyRecipients: number;
748
+ reservedRecipients: number;
749
+ acceptedRecipients: number;
750
+ cancelledAt: string | null;
751
+ createdAt: string;
752
+ };
753
+ export type EmailDomainWarmingDecisionId = string;
754
+ export type DomainWarmingDecision = {
755
+ id: EmailDomainWarmingDecisionId;
756
+ kind: "plan-created" | "policy-updated" | "window-opened" | "window-cancelled" | "paused" | "resumed" | "held" | "completed";
757
+ batchId: EmailDomainWarmingBatchId | null;
758
+ actor: string;
759
+ note: string | null;
760
+ createdAt: string;
761
+ };
762
+ export type DomainWarmingWindowHour = {
763
+ sent: number;
764
+ bounced: number;
765
+ complained: number;
766
+ };
767
+ export type DomainWarmingEvidence = {
768
+ observedAt: string;
769
+ windowHours: number;
770
+ minimumSends: number;
771
+ sent: number;
772
+ bounced: number;
773
+ complained: number;
774
+ hourly: Array<DomainWarmingWindowHour>;
775
+ bounceThreshold: number;
776
+ complaintThreshold: number;
777
+ verdict: "insufficient-evidence" | "healthy" | "over-threshold";
778
+ thresholdReason: string | null;
779
+ };
780
+ export type DomainWarmingHolds = {
781
+ workspacePausedAt: string | null;
782
+ workspacePauseReason: string | null;
783
+ sendingStatus: "enabled" | "disabled" | "reinstated" | "unknown";
784
+ };
785
+ export type DomainWarming = {
786
+ domain: DomainWarmingDomainRef;
787
+ plan: DomainWarmingPlan | null;
788
+ batches: Array<DomainWarmingBatch>;
789
+ decisions: Array<DomainWarmingDecision>;
790
+ evidence: DomainWarmingEvidence;
791
+ holds: DomainWarmingHolds;
792
+ };
793
+ export type CreateDomainWarmingPlanPayload = {
794
+ identity: "new" | "migrating" | "returning";
795
+ initialDailyRecipients: number;
796
+ dailyGrowthPercent: number;
797
+ targetDailyRecipients: number;
798
+ };
799
+ export type UpdateDomainWarmingPolicyPayload = {
800
+ dailyGrowthPercent: number;
801
+ targetDailyRecipients: number;
802
+ note?: string | null | undefined;
803
+ };
804
+ export type DomainWarmingNotePayload = {
805
+ note?: string | null | undefined;
806
+ };
594
807
  export type CreateMediaPayload = {
595
808
  filename: string;
596
809
  contentType: string;
597
810
  sizeBytes: number;
598
- purpose: "attachment" | "avatar";
811
+ purpose: "attachment" | "avatar" | "review_evidence";
599
812
  checksumSha256?: string | null | undefined;
600
813
  };
601
814
  export type OrganizationId = string;
@@ -617,7 +830,7 @@ export type CreatedMedia = {
617
830
  width: number | null;
618
831
  height: number | null;
619
832
  durationMs: number | null;
620
- purpose: "attachment" | "avatar";
833
+ purpose: "attachment" | "avatar" | "review_evidence";
621
834
  checksumSha256: string | null;
622
835
  expiresAt: string | null;
623
836
  createdAt: string;
@@ -634,7 +847,7 @@ export type Media = {
634
847
  width: number | null;
635
848
  height: number | null;
636
849
  durationMs: number | null;
637
- purpose: "attachment" | "avatar";
850
+ purpose: "attachment" | "avatar" | "review_evidence";
638
851
  checksumSha256: string | null;
639
852
  expiresAt: string | null;
640
853
  createdAt: string;
@@ -893,27 +1106,12 @@ export type BulkUpdateResult = {
893
1106
  updated: number;
894
1107
  failed: number;
895
1108
  };
1109
+ export type TemplateProjectId = string;
896
1110
  export type TemplateFamilyId = string;
897
1111
  export type TemplateFromDefault = {
898
1112
  email: string;
899
1113
  name?: string | null | undefined;
900
1114
  };
901
- export type TemplateVariable = {
902
- name: string;
903
- type: "string" | "number" | "boolean" | "date" | "array" | "object";
904
- required: boolean;
905
- default?: JsonValue | null | undefined;
906
- description?: string | null | undefined;
907
- validation?: {
908
- pattern?: string | null | undefined;
909
- min?: number | null | undefined;
910
- max?: number | null | undefined;
911
- minLength?: number | null | undefined;
912
- maxLength?: number | null | undefined;
913
- enum?: Array<string> | null | undefined;
914
- format?: "email" | "url" | "date" | "date-time" | "uuid" | null | undefined;
915
- } | null | undefined;
916
- };
917
1115
  export type UserId = string;
918
1116
  export type TemplateCompliance = {
919
1117
  metaStatus?: string | null | undefined;
@@ -932,87 +1130,23 @@ export type TemplateCompliance = {
932
1130
  notes?: string | null | undefined;
933
1131
  }> | null | undefined;
934
1132
  };
935
- export type ThemeColors = {
936
- [key: string]: string;
937
- };
938
- export type Design = {
939
- theme?: {
940
- colors?: ThemeColors | null | undefined;
941
- colorsDark?: ThemeColors | null | undefined;
942
- radiusPx?: {
943
- [key: string]: number;
944
- } | null | undefined;
945
- fontFamilies?: {
946
- [key: string]: {
947
- source: "system" | "google" | "custom";
948
- family: string;
949
- fallback: string;
950
- faces?: Array<{
951
- weight: number;
952
- style: "normal" | "italic";
953
- src: string;
954
- unicodeRange?: string | null | undefined;
955
- }> | null | undefined;
956
- };
957
- } | null | undefined;
958
- fontWeights?: {
959
- [key: string]: number;
960
- } | null | undefined;
961
- text?: {
962
- [key: string]: {
963
- sizePx: number;
964
- lineHeightPx: number;
965
- };
966
- } | null | undefined;
967
- leading?: {
968
- [key: string]: number;
969
- } | null | undefined;
970
- spacingPx?: number | null | undefined;
971
- containerPx?: {
972
- [key: string]: number;
973
- } | null | undefined;
974
- tracking?: {
975
- [key: string]: number;
976
- } | null | undefined;
977
- } | null | undefined;
978
- assets?: {
979
- logoUrl?: string | null | undefined;
980
- logoDarkUrl?: string | null | undefined;
981
- iconUrl?: string | null | undefined;
982
- } | null | undefined;
983
- footer?: {
984
- companyName?: string | null | undefined;
985
- address?: {
986
- street1: string;
987
- street2?: string | null | undefined;
988
- city: string;
989
- region: string;
990
- postalCode: string;
991
- country: string;
992
- } | null | undefined;
993
- socialLinks?: Array<{
994
- label: string;
995
- url: string;
996
- }> | null | undefined;
997
- customHtml?: string | null | undefined;
998
- } | null | undefined;
999
- };
1000
1133
  export type Template = {
1001
1134
  id: TemplateId;
1002
1135
  organizationId: OrganizationId;
1136
+ projectId: TemplateProjectId;
1137
+ entryPath: string;
1003
1138
  name: string;
1004
1139
  slug: string;
1005
1140
  familyId: TemplateFamilyId | null;
1006
1141
  channel: "email";
1007
- origin: "dashboard" | "tsx";
1008
1142
  description: string | null;
1009
1143
  category: string | null;
1010
- fromDefault?: TemplateFromDefault | null | undefined;
1011
- replyToDefault?: Array<string> | null | undefined;
1144
+ fromDefault?: TemplateFromDefault | null | null | undefined;
1145
+ replyToDefault?: Array<string> | null | null | undefined;
1012
1146
  trackingDefault?: {
1013
1147
  opens?: boolean | null | undefined;
1014
1148
  clicks?: boolean | null | undefined;
1015
- } | null | undefined;
1149
+ } | null | null | undefined;
1016
1150
  email: {
1017
1151
  subject: string;
1018
1152
  preheader: string | null;
@@ -1020,15 +1154,17 @@ export type Template = {
1020
1154
  [key: string]: string;
1021
1155
  } | null;
1022
1156
  } | null;
1023
- variableSchema: Array<TemplateVariable> | null;
1157
+ publicationId: TemplatePublicationId | null;
1158
+ inputContractId: TemplateInputContractId | null;
1159
+ inputSchema: {
1160
+ [key: string]: JsonValue;
1161
+ } | null;
1024
1162
  compliance: TemplateCompliance | null;
1025
- designOverrides: Design | null;
1026
1163
  usageCount: number;
1027
1164
  lastUsedAt: string | null;
1028
1165
  status: string;
1029
1166
  isActive: boolean;
1030
1167
  isDefault: boolean;
1031
- version: number;
1032
1168
  publishedAt?: string | null | null | undefined;
1033
1169
  publishedBy?: string | null | null | undefined;
1034
1170
  createdAt: string;
@@ -1039,13 +1175,13 @@ export type TemplateSummary = {
1039
1175
  name: string;
1040
1176
  slug: string;
1041
1177
  channel: "email";
1042
- origin: "dashboard" | "tsx";
1043
1178
  description: string | null;
1044
1179
  category: "transactional" | "marketing" | "support" | "notification" | "verification" | "reminder" | "alert" | null;
1045
1180
  status: "draft" | "pending" | "approved" | "published" | "rejected" | "archived";
1046
- version: number;
1047
1181
  usageCount: number;
1048
1182
  lastUsedAt: string | null;
1183
+ workspaceRevision: string | null;
1184
+ previewFixture: string | null;
1049
1185
  createdAt: string;
1050
1186
  updatedAt: string;
1051
1187
  };
@@ -1058,10 +1194,8 @@ export type TemplateFamily = {
1058
1194
  name: string;
1059
1195
  slug: string;
1060
1196
  channel: "email";
1061
- variableSchema: Array<TemplateVariable> | null;
1062
1197
  status: "draft" | "pending" | "approved" | "published" | "rejected" | "archived";
1063
1198
  isActive: boolean;
1064
- version: number;
1065
1199
  createdAt: string;
1066
1200
  updatedAt: string;
1067
1201
  }>;
@@ -1071,61 +1205,92 @@ export type TemplateFamily = {
1071
1205
  export type TemplateFamilyName = {
1072
1206
  name: string;
1073
1207
  };
1074
- export type TemplatePerformance = {
1075
- deliveryRate?: number | null | undefined;
1076
- openRate?: number | null | undefined;
1077
- clickRate?: number | null | undefined;
1078
- responseRate?: number | null | undefined;
1079
- conversionRate?: number | null | undefined;
1080
- averageSatisfaction?: number | null | undefined;
1081
- totalSent?: number | null | undefined;
1082
- totalDelivered?: number | null | undefined;
1083
- totalOpened?: number | null | undefined;
1084
- totalClicked?: number | null | undefined;
1085
- totalResponses?: number | null | undefined;
1086
- totalConversions?: number | null | undefined;
1087
- lastUsedAt?: string | null | undefined;
1088
- usageCount?: number | null | undefined;
1089
- };
1090
1208
  export type CreateTemplatePayload = {
1091
1209
  name: string;
1210
+ projectName?: string | null | undefined;
1092
1211
  slug?: string | null | undefined;
1093
- origin?: "dashboard" | "tsx" | null | undefined;
1212
+ galleryTemplateId?: string | null | undefined;
1094
1213
  description?: string | null | null | undefined;
1095
1214
  category?: "transactional" | "marketing" | "support" | "notification" | "verification" | "reminder" | "alert" | null | null | undefined;
1096
- source: string;
1097
- subject?: string | null | undefined;
1098
- headers?: {
1099
- [key: string]: string;
1100
- } | null | null | undefined;
1101
- variableSchema?: Array<TemplateVariable> | null | null | undefined;
1102
- compliance?: TemplateCompliance | null | null | undefined;
1103
- performance?: TemplatePerformance | null | null | undefined;
1104
- designOverrides?: Design | null | null | undefined;
1105
1215
  isActive?: boolean | null | undefined;
1106
- isDefault?: boolean | null | undefined;
1107
- version?: number | null | undefined;
1216
+ idempotencyKey: string;
1108
1217
  };
1109
1218
  export type UpdateTemplatePayload = {
1110
1219
  data: {
1111
1220
  name?: string | null | undefined;
1112
1221
  slug?: string | null | undefined;
1113
- origin?: "dashboard" | "tsx" | null | undefined;
1114
1222
  description?: string | null | null | undefined;
1115
1223
  category?: "transactional" | "marketing" | "support" | "notification" | "verification" | "reminder" | "alert" | null | null | undefined;
1116
1224
  fromDefault?: TemplateFromDefault | null | null | undefined;
1117
1225
  replyToDefault?: Array<string> | null | null | undefined;
1118
- variableSchema?: Array<TemplateVariable> | null | null | undefined;
1119
- compliance?: TemplateCompliance | null | null | undefined;
1120
- performance?: TemplatePerformance | null | null | undefined;
1121
- designOverrides?: Design | null | null | undefined;
1122
1226
  isActive?: boolean | null | undefined;
1123
- isDefault?: boolean | null | undefined;
1124
- version?: number | null | undefined;
1125
1227
  };
1126
1228
  };
1127
- export type MailboxExtensionId = string;
1128
- export type TemplateSourceVersionId = string;
1229
+ export type ThemeColors = {
1230
+ [key: string]: string;
1231
+ };
1232
+ export type Design = {
1233
+ theme?: {
1234
+ colors?: ThemeColors | null | undefined;
1235
+ colorsDark?: ThemeColors | null | undefined;
1236
+ radiusPx?: {
1237
+ [key: string]: number;
1238
+ } | null | undefined;
1239
+ fontFamilies?: {
1240
+ [key: string]: {
1241
+ source: "system" | "google" | "custom";
1242
+ family: string;
1243
+ fallback: string;
1244
+ faces?: Array<{
1245
+ weight: number;
1246
+ style: "normal" | "italic";
1247
+ src: string;
1248
+ unicodeRange?: string | null | undefined;
1249
+ }> | null | undefined;
1250
+ };
1251
+ } | null | undefined;
1252
+ fontWeights?: {
1253
+ [key: string]: number;
1254
+ } | null | undefined;
1255
+ text?: {
1256
+ [key: string]: {
1257
+ sizePx: number;
1258
+ lineHeightPx: number;
1259
+ };
1260
+ } | null | undefined;
1261
+ leading?: {
1262
+ [key: string]: number;
1263
+ } | null | undefined;
1264
+ spacingPx?: number | null | undefined;
1265
+ containerPx?: {
1266
+ [key: string]: number;
1267
+ } | null | undefined;
1268
+ tracking?: {
1269
+ [key: string]: number;
1270
+ } | null | undefined;
1271
+ } | null | undefined;
1272
+ assets?: {
1273
+ logoUrl?: string | null | undefined;
1274
+ logoDarkUrl?: string | null | undefined;
1275
+ iconUrl?: string | null | undefined;
1276
+ } | null | undefined;
1277
+ footer?: {
1278
+ companyName?: string | null | undefined;
1279
+ address?: {
1280
+ street1: string;
1281
+ street2?: string | null | undefined;
1282
+ city: string;
1283
+ region: string;
1284
+ postalCode: string;
1285
+ country: string;
1286
+ } | null | undefined;
1287
+ socialLinks?: Array<{
1288
+ label: string;
1289
+ url: string;
1290
+ }> | null | undefined;
1291
+ customHtml?: string | null | undefined;
1292
+ } | null | undefined;
1293
+ };
1129
1294
  export type DesignSettings = {
1130
1295
  design: Design | null;
1131
1296
  footerCompleteness: {
@@ -1135,7 +1300,7 @@ export type DesignSettings = {
1135
1300
  export type CreateWebhookPayload = {
1136
1301
  name: string;
1137
1302
  url: string;
1138
- eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated">;
1303
+ eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated">;
1139
1304
  channels?: Array<"email"> | null | undefined;
1140
1305
  headers?: {
1141
1306
  [key: string]: string;
@@ -1146,7 +1311,27 @@ export type WebhookEndpoint = {
1146
1311
  id: WebhookEndpointId;
1147
1312
  name: string;
1148
1313
  url: string;
1149
- eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated">;
1314
+ eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated">;
1315
+ channels: Array<"email"> | null;
1316
+ status: "active" | "disabled";
1317
+ hasCustomHeaders: boolean;
1318
+ failureStartedAt: string | null;
1319
+ lastSucceededAt: string | null;
1320
+ createdAt: string;
1321
+ updatedAt: string;
1322
+ };
1323
+ export type WebhookDeliveryCounts = {
1324
+ total: number;
1325
+ pending: number;
1326
+ delivered: number;
1327
+ exhausted: number;
1328
+ cancelled: number;
1329
+ };
1330
+ export type WebhookEndpointListItem = {
1331
+ id: WebhookEndpointId;
1332
+ name: string;
1333
+ url: string;
1334
+ eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated">;
1150
1335
  channels: Array<"email"> | null;
1151
1336
  status: "active" | "disabled";
1152
1337
  hasCustomHeaders: boolean;
@@ -1154,11 +1339,12 @@ export type WebhookEndpoint = {
1154
1339
  lastSucceededAt: string | null;
1155
1340
  createdAt: string;
1156
1341
  updatedAt: string;
1342
+ deliveries: WebhookDeliveryCounts;
1157
1343
  };
1158
1344
  export type UpdateWebhookPayload = {
1159
1345
  name?: string | null | undefined;
1160
1346
  url?: string | null | undefined;
1161
- eventTypes?: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated"> | null | undefined;
1347
+ eventTypes?: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated"> | null | undefined;
1162
1348
  channels?: Array<"email"> | null | null | undefined;
1163
1349
  headers?: {
1164
1350
  [key: string]: string;
@@ -1173,6 +1359,21 @@ export type TestWebhookPayload = {
1173
1359
  export type WebhookEventId = string;
1174
1360
  export type WebhookDeliveryId = string;
1175
1361
  export type WebhookAttemptId = string;
1362
+ export type WebhookDailyDeliveries = {
1363
+ date: string;
1364
+ pending: number;
1365
+ delivered: number;
1366
+ exhausted: number;
1367
+ cancelled: number;
1368
+ };
1369
+ export type WebhookStatsResponse = {
1370
+ total: number;
1371
+ pending: number;
1372
+ delivered: number;
1373
+ exhausted: number;
1374
+ cancelled: number;
1375
+ daily: Array<WebhookDailyDeliveries>;
1376
+ };
1176
1377
  export type Organization = {
1177
1378
  id: string;
1178
1379
  billingAccountId: string;
@@ -1242,6 +1443,7 @@ export type MessagesListData = {
1242
1443
  page?: string | null | undefined;
1243
1444
  limit?: string | null | undefined;
1244
1445
  channel?: "email" | null | undefined;
1446
+ direction?: "outbound" | "inbound" | null | undefined;
1245
1447
  status?: "pending" | "scheduled" | "queued" | "processing" | "sent" | "delivered" | "read" | "failed" | "bounced" | "complained" | null | undefined;
1246
1448
  conversationId?: ConversationId | null | undefined;
1247
1449
  contactId?: ContactId | null | undefined;
@@ -1294,9 +1496,9 @@ export type MessagesSendErrors = {
1294
1496
  */
1295
1497
  402: PaymentRequiredError;
1296
1498
  /**
1297
- * ForbiddenError | FlagDisabledError
1499
+ * ForbiddenError | OnboardingReviewRequiredError | FlagDisabledError
1298
1500
  */
1299
- 403: FlagDisabledError | ForbiddenError;
1501
+ 403: OnboardingReviewRequiredError | FlagDisabledError | ForbiddenError;
1300
1502
  /**
1301
1503
  * ResourceNotFoundError
1302
1504
  */
@@ -1436,6 +1638,38 @@ export type MessagesGetEmailResponses = {
1436
1638
  * Success
1437
1639
  */
1438
1640
  200: {
1641
+ deliveries: Array<{
1642
+ scheduling: {
1643
+ dueAt: string;
1644
+ expiresAt: string;
1645
+ waitReason: "rate" | "daily-quota" | "domain-health" | "tenant-health" | "provider-unavailable" | "retry" | "campaign-paused" | "domain-warming" | "onboarding-review" | null;
1646
+ } | null;
1647
+ id: string;
1648
+ messageId: string;
1649
+ recipientId: string | null;
1650
+ channel: "email";
1651
+ status: "pending" | "scheduled" | "queued" | "processing" | "sent" | "delivered" | "read" | "failed" | "bounced" | "complained";
1652
+ attemptCount: number;
1653
+ maxAttempts: number;
1654
+ queuedAt: string | null;
1655
+ claimedAt: string | null;
1656
+ lastAttemptAt: string | null;
1657
+ nextRetryAt: string | null;
1658
+ sentAt: string | null;
1659
+ deliveredAt: string | null;
1660
+ readAt: string | null;
1661
+ failedAt: string | null;
1662
+ terminalAt: string | null;
1663
+ errorCode: string | null;
1664
+ errorMessage: string | null;
1665
+ errorDetails: JsonValue | null;
1666
+ cost: string;
1667
+ currency: string;
1668
+ idempotencyKey: string | null;
1669
+ metadata: JsonValue | null;
1670
+ createdAt: string;
1671
+ updatedAt: string;
1672
+ }>;
1439
1673
  id: MessageId;
1440
1674
  organizationId: string;
1441
1675
  conversationId: ConversationId | null;
@@ -1488,6 +1722,51 @@ export type MessagesGetEmailResponses = {
1488
1722
  };
1489
1723
  };
1490
1724
  export type MessagesGetEmailResponse = MessagesGetEmailResponses[keyof MessagesGetEmailResponses];
1725
+ export type MessagesValidateEmailData = {
1726
+ body: {
1727
+ conversationId?: ConversationId | null | null | undefined;
1728
+ metadata?: MessageMetadata | undefined;
1729
+ channel: "email";
1730
+ to: EmailRecipients;
1731
+ cc?: EmailCcRecipients | undefined;
1732
+ bcc?: EmailBccRecipients | undefined;
1733
+ from?: EmailSender | undefined;
1734
+ email: EmailContent;
1735
+ };
1736
+ path?: never;
1737
+ query?: never;
1738
+ url: "/v1/messages/validate/email";
1739
+ };
1740
+ export type MessagesValidateEmailErrors = {
1741
+ /**
1742
+ * UnauthorizedError
1743
+ */
1744
+ 401: UnauthorizedError;
1745
+ /**
1746
+ * ForbiddenError
1747
+ */
1748
+ 403: ForbiddenError;
1749
+ /**
1750
+ * ResourceNotFoundError
1751
+ */
1752
+ 404: ResourceNotFoundError;
1753
+ /**
1754
+ * ValidationError
1755
+ */
1756
+ 422: ValidationError;
1757
+ /**
1758
+ * InternalError
1759
+ */
1760
+ 500: InternalError;
1761
+ };
1762
+ export type MessagesValidateEmailError = MessagesValidateEmailErrors[keyof MessagesValidateEmailErrors];
1763
+ export type MessagesValidateEmailResponses = {
1764
+ /**
1765
+ * ValidateEmailResponse
1766
+ */
1767
+ 200: ValidateEmailResponse;
1768
+ };
1769
+ export type MessagesValidateEmailResponse = MessagesValidateEmailResponses[keyof MessagesValidateEmailResponses];
1491
1770
  export type MessagesGetStatusData = {
1492
1771
  body?: never;
1493
1772
  path: {
@@ -1685,7 +1964,7 @@ export type ScheduledMessagesListData = {
1685
1964
  body?: never;
1686
1965
  path?: never;
1687
1966
  query?: {
1688
- status?: "pending" | "dispatching" | "dispatched" | "cancelled" | "failed" | null | undefined;
1967
+ status?: "pending" | "dispatching" | "paused" | "dispatched" | "cancelled" | "failed" | null | undefined;
1689
1968
  page?: string | null | undefined;
1690
1969
  limit?: string | null | undefined;
1691
1970
  };
@@ -1720,7 +1999,7 @@ export type ScheduledMessagesCreateData = {
1720
1999
  body: {
1721
2000
  send: DispatchSendMessagePayload;
1722
2001
  scheduledFor: string;
1723
- timezone?: string | null | undefined;
2002
+ timezone?: IanaTimezone | null | undefined;
1724
2003
  idempotencyKey?: string | null | undefined;
1725
2004
  referenceId?: string | null | undefined;
1726
2005
  };
@@ -1837,13 +2116,64 @@ export type ScheduledMessagesCancelResponses = {
1837
2116
  };
1838
2117
  };
1839
2118
  export type ScheduledMessagesCancelResponse = ScheduledMessagesCancelResponses[keyof ScheduledMessagesCancelResponses];
1840
- export type CampaignsListData = {
1841
- body?: never;
1842
- path?: never;
1843
- query?: {
1844
- status?: "draft" | "archived" | null | undefined;
1845
- page?: string | null | undefined;
1846
- limit?: string | null | undefined;
2119
+ export type ScheduledMessagesResumeData = {
2120
+ body: {
2121
+ choice: "send_now";
2122
+ } | {
2123
+ choice: "new_time";
2124
+ scheduledFor: string;
2125
+ };
2126
+ path: {
2127
+ id: ScheduledMessageId;
2128
+ };
2129
+ query?: never;
2130
+ url: "/v1/messages/scheduled/{id}/resume";
2131
+ };
2132
+ export type ScheduledMessagesResumeErrors = {
2133
+ /**
2134
+ * UnauthorizedError
2135
+ */
2136
+ 401: UnauthorizedError;
2137
+ /**
2138
+ * ForbiddenError
2139
+ */
2140
+ 403: ForbiddenError;
2141
+ /**
2142
+ * ResourceNotFoundError
2143
+ */
2144
+ 404: ResourceNotFoundError;
2145
+ /**
2146
+ * ConflictError
2147
+ */
2148
+ 409: ConflictError;
2149
+ /**
2150
+ * ValidationError
2151
+ */
2152
+ 422: ValidationError;
2153
+ /**
2154
+ * InternalError
2155
+ */
2156
+ 500: InternalError;
2157
+ /**
2158
+ * ExternalServiceError
2159
+ */
2160
+ 502: ExternalServiceError;
2161
+ };
2162
+ export type ScheduledMessagesResumeError = ScheduledMessagesResumeErrors[keyof ScheduledMessagesResumeErrors];
2163
+ export type ScheduledMessagesResumeResponses = {
2164
+ /**
2165
+ * ScheduledMessage
2166
+ */
2167
+ 200: ScheduledMessage;
2168
+ };
2169
+ export type ScheduledMessagesResumeResponse = ScheduledMessagesResumeResponses[keyof ScheduledMessagesResumeResponses];
2170
+ export type CampaignsListData = {
2171
+ body?: never;
2172
+ path?: never;
2173
+ query?: {
2174
+ status?: "draft" | "archived" | null | undefined;
2175
+ page?: string | null | undefined;
2176
+ limit?: string | null | undefined;
1847
2177
  };
1848
2178
  url: "/v1/campaigns";
1849
2179
  };
@@ -2335,6 +2665,104 @@ export type CampaignsListRecipientsResponses = {
2335
2665
  };
2336
2666
  };
2337
2667
  export type CampaignsListRecipientsResponse = CampaignsListRecipientsResponses[keyof CampaignsListRecipientsResponses];
2668
+ export type EmailGetOnboardingReviewData = {
2669
+ body?: never;
2670
+ path?: never;
2671
+ query?: never;
2672
+ url: "/v1/email/onboarding-review";
2673
+ };
2674
+ export type EmailGetOnboardingReviewErrors = {
2675
+ /**
2676
+ * UnauthorizedError
2677
+ */
2678
+ 401: UnauthorizedError;
2679
+ /**
2680
+ * ForbiddenError
2681
+ */
2682
+ 403: ForbiddenError;
2683
+ /**
2684
+ * InternalError
2685
+ */
2686
+ 500: InternalError;
2687
+ };
2688
+ export type EmailGetOnboardingReviewError = EmailGetOnboardingReviewErrors[keyof EmailGetOnboardingReviewErrors];
2689
+ export type EmailGetOnboardingReviewResponses = {
2690
+ /**
2691
+ * OnboardingReviewStatus
2692
+ */
2693
+ 200: OnboardingReviewStatus;
2694
+ };
2695
+ export type EmailGetOnboardingReviewResponse = EmailGetOnboardingReviewResponses[keyof EmailGetOnboardingReviewResponses];
2696
+ export type EmailReapplyOnboardingReviewData = {
2697
+ body: {
2698
+ expectedGeneration: number;
2699
+ };
2700
+ path?: never;
2701
+ query?: never;
2702
+ url: "/v1/email/onboarding-review/reapply";
2703
+ };
2704
+ export type EmailReapplyOnboardingReviewErrors = {
2705
+ /**
2706
+ * UnauthorizedError
2707
+ */
2708
+ 401: UnauthorizedError;
2709
+ /**
2710
+ * ForbiddenError
2711
+ */
2712
+ 403: ForbiddenError;
2713
+ /**
2714
+ * ConflictError
2715
+ */
2716
+ 409: ConflictError;
2717
+ /**
2718
+ * InternalError
2719
+ */
2720
+ 500: InternalError;
2721
+ };
2722
+ export type EmailReapplyOnboardingReviewError = EmailReapplyOnboardingReviewErrors[keyof EmailReapplyOnboardingReviewErrors];
2723
+ export type EmailReapplyOnboardingReviewResponses = {
2724
+ /**
2725
+ * OnboardingReviewStatus
2726
+ */
2727
+ 200: OnboardingReviewStatus;
2728
+ };
2729
+ export type EmailReapplyOnboardingReviewResponse = EmailReapplyOnboardingReviewResponses[keyof EmailReapplyOnboardingReviewResponses];
2730
+ export type EmailRespondToOnboardingInformationRequestData = {
2731
+ body: {
2732
+ expectedGeneration: number;
2733
+ responseText: string;
2734
+ evidenceMediaIds: Array<MediaId>;
2735
+ };
2736
+ path?: never;
2737
+ query?: never;
2738
+ url: "/v1/email/onboarding-review/respond";
2739
+ };
2740
+ export type EmailRespondToOnboardingInformationRequestErrors = {
2741
+ /**
2742
+ * UnauthorizedError
2743
+ */
2744
+ 401: UnauthorizedError;
2745
+ /**
2746
+ * ForbiddenError
2747
+ */
2748
+ 403: ForbiddenError;
2749
+ /**
2750
+ * ConflictError
2751
+ */
2752
+ 409: ConflictError;
2753
+ /**
2754
+ * InternalError
2755
+ */
2756
+ 500: InternalError;
2757
+ };
2758
+ export type EmailRespondToOnboardingInformationRequestError = EmailRespondToOnboardingInformationRequestErrors[keyof EmailRespondToOnboardingInformationRequestErrors];
2759
+ export type EmailRespondToOnboardingInformationRequestResponses = {
2760
+ /**
2761
+ * OnboardingReviewStatus
2762
+ */
2763
+ 200: OnboardingReviewStatus;
2764
+ };
2765
+ export type EmailRespondToOnboardingInformationRequestResponse = EmailRespondToOnboardingInformationRequestResponses[keyof EmailRespondToOnboardingInformationRequestResponses];
2338
2766
  export type EmailGetTrackingDefaultsData = {
2339
2767
  body?: never;
2340
2768
  path?: never;
@@ -2522,6 +2950,10 @@ export type EmailListDomainsResponse = EmailListDomainsResponses[keyof EmailList
2522
2950
  export type EmailAddDomainData = {
2523
2951
  body: {
2524
2952
  domain: string;
2953
+ connection?: {
2954
+ connectionId: string;
2955
+ zone: string;
2956
+ } | null | undefined;
2525
2957
  };
2526
2958
  path?: never;
2527
2959
  query?: never;
@@ -2544,6 +2976,10 @@ export type EmailAddDomainErrors = {
2544
2976
  * ConflictError
2545
2977
  */
2546
2978
  409: ConflictError;
2979
+ /**
2980
+ * ValidationError
2981
+ */
2982
+ 422: ValidationError;
2547
2983
  /**
2548
2984
  * InternalError
2549
2985
  */
@@ -2558,7 +2994,7 @@ export type EmailAddDomainResponses = {
2558
2994
  /**
2559
2995
  * Success
2560
2996
  */
2561
- 201: EmailDomain;
2997
+ 201: EmailDomainDetailed;
2562
2998
  };
2563
2999
  export type EmailAddDomainResponse = EmailAddDomainResponses[keyof EmailAddDomainResponses];
2564
3000
  export type EmailGetDomainVerificationData = {
@@ -2645,6 +3081,51 @@ export type EmailAdvanceDomainVerificationResponses = {
2645
3081
  200: EmailDomainVerification;
2646
3082
  };
2647
3083
  export type EmailAdvanceDomainVerificationResponse = EmailAdvanceDomainVerificationResponses[keyof EmailAdvanceDomainVerificationResponses];
3084
+ export type EmailRotateDomainDkimData = {
3085
+ body?: never;
3086
+ headers: {
3087
+ "idempotency-key": string;
3088
+ };
3089
+ path: {
3090
+ id: EmailDomainId;
3091
+ };
3092
+ query?: never;
3093
+ url: "/v1/email/domains/{id}/dkim-rotation";
3094
+ };
3095
+ export type EmailRotateDomainDkimErrors = {
3096
+ /**
3097
+ * UnauthorizedError
3098
+ */
3099
+ 401: UnauthorizedError;
3100
+ /**
3101
+ * ForbiddenError
3102
+ */
3103
+ 403: ForbiddenError;
3104
+ /**
3105
+ * ResourceNotFoundError
3106
+ */
3107
+ 404: ResourceNotFoundError;
3108
+ /**
3109
+ * ConflictError
3110
+ */
3111
+ 409: ConflictError;
3112
+ /**
3113
+ * InternalError
3114
+ */
3115
+ 500: InternalError;
3116
+ /**
3117
+ * EmailChannelError
3118
+ */
3119
+ 502: EmailChannelError;
3120
+ };
3121
+ export type EmailRotateDomainDkimError = EmailRotateDomainDkimErrors[keyof EmailRotateDomainDkimErrors];
3122
+ export type EmailRotateDomainDkimResponses = {
3123
+ /**
3124
+ * EmailDkimRotation
3125
+ */
3126
+ 200: EmailDkimRotation;
3127
+ };
3128
+ export type EmailRotateDomainDkimResponse = EmailRotateDomainDkimResponses[keyof EmailRotateDomainDkimResponses];
2648
3129
  export type EmailRemoveDomainData = {
2649
3130
  body?: never;
2650
3131
  path: {
@@ -2708,9 +3189,9 @@ export type EmailGetDomainByIdErrors = {
2708
3189
  export type EmailGetDomainByIdError = EmailGetDomainByIdErrors[keyof EmailGetDomainByIdErrors];
2709
3190
  export type EmailGetDomainByIdResponses = {
2710
3191
  /**
2711
- * EmailDomain
3192
+ * EmailDomainDetailed
2712
3193
  */
2713
- 200: EmailDomain;
3194
+ 200: EmailDomainDetailed;
2714
3195
  };
2715
3196
  export type EmailGetDomainByIdResponse = EmailGetDomainByIdResponses[keyof EmailGetDomainByIdResponses];
2716
3197
  export type EmailDetectRegistrarData = {
@@ -3339,6 +3820,8 @@ export type EmailListSendersResponses = {
3339
3820
  verificationStatus: "pending" | "verified" | "failed";
3340
3821
  verifiedAt: string | null;
3341
3822
  verificationToken: string | null;
3823
+ providerLifecycle: "provisioning" | "active" | "deleting" | "failed";
3824
+ providerFailureCode: string | null;
3342
3825
  isDefault: boolean;
3343
3826
  replyToEmails: Array<string> | null;
3344
3827
  deliverability: DeliverabilityFacts;
@@ -3357,6 +3840,9 @@ export type EmailAddSenderData = {
3357
3840
  name?: string | null | null | undefined;
3358
3841
  replyToEmails?: Array<string> | null | null | undefined;
3359
3842
  };
3843
+ headers: {
3844
+ "idempotency-key": string;
3845
+ };
3360
3846
  path?: never;
3361
3847
  query?: never;
3362
3848
  url: "/v1/email/senders";
@@ -3400,6 +3886,8 @@ export type EmailAddSenderResponses = {
3400
3886
  id: EmailSenderId;
3401
3887
  email: string;
3402
3888
  status: "pending" | "verified" | "failed";
3889
+ providerLifecycle: "provisioning" | "active" | "deleting" | "failed";
3890
+ providerFailureCode: string | null;
3403
3891
  createdAt: string;
3404
3892
  };
3405
3893
  };
@@ -3481,6 +3969,57 @@ export type EmailRemoveSenderResponses = {
3481
3969
  200: SuccessResult;
3482
3970
  };
3483
3971
  export type EmailRemoveSenderResponse = EmailRemoveSenderResponses[keyof EmailRemoveSenderResponses];
3972
+ export type EmailGetSenderData = {
3973
+ body?: never;
3974
+ path: {
3975
+ id: EmailSenderId;
3976
+ };
3977
+ query?: never;
3978
+ url: "/v1/email/senders/{id}";
3979
+ };
3980
+ export type EmailGetSenderErrors = {
3981
+ /**
3982
+ * UnauthorizedError
3983
+ */
3984
+ 401: UnauthorizedError;
3985
+ /**
3986
+ * ForbiddenError
3987
+ */
3988
+ 403: ForbiddenError;
3989
+ /**
3990
+ * ResourceNotFoundError
3991
+ */
3992
+ 404: ResourceNotFoundError;
3993
+ /**
3994
+ * InternalError
3995
+ */
3996
+ 500: InternalError;
3997
+ };
3998
+ export type EmailGetSenderError = EmailGetSenderErrors[keyof EmailGetSenderErrors];
3999
+ export type EmailGetSenderResponses = {
4000
+ /**
4001
+ * Success
4002
+ */
4003
+ 200: {
4004
+ id: EmailSenderId;
4005
+ organizationId: string;
4006
+ email: string;
4007
+ name: string | null;
4008
+ domainId: EmailDomainId | null;
4009
+ verificationStatus: "pending" | "verified" | "failed";
4010
+ verifiedAt: string | null;
4011
+ verificationToken: string | null;
4012
+ providerLifecycle: "provisioning" | "active" | "deleting" | "failed";
4013
+ providerFailureCode: string | null;
4014
+ isDefault: boolean;
4015
+ replyToEmails: Array<string> | null;
4016
+ deliverability: DeliverabilityFacts;
4017
+ isActive: boolean;
4018
+ createdAt: string;
4019
+ updatedAt: string;
4020
+ };
4021
+ };
4022
+ export type EmailGetSenderResponse = EmailGetSenderResponses[keyof EmailGetSenderResponses];
3484
4023
  export type EmailSetDefaultSenderData = {
3485
4024
  body?: never;
3486
4025
  path: {
@@ -4192,6 +4731,10 @@ export type EmailCreateForwardingRuleErrors = {
4192
4731
  * ForbiddenError
4193
4732
  */
4194
4733
  403: ForbiddenError;
4734
+ /**
4735
+ * ResourceNotFoundError
4736
+ */
4737
+ 404: ResourceNotFoundError;
4195
4738
  /**
4196
4739
  * ValidationError
4197
4740
  */
@@ -4360,19 +4903,15 @@ export type EmailGetForwardingLogResponses = {
4360
4903
  };
4361
4904
  };
4362
4905
  export type EmailGetForwardingLogResponse = EmailGetForwardingLogResponses[keyof EmailGetForwardingLogResponses];
4363
- export type MediaCreateData = {
4364
- body: {
4365
- filename: string;
4366
- contentType: string;
4367
- sizeBytes: number;
4368
- purpose: "attachment" | "avatar";
4369
- checksumSha256?: string | null | undefined;
4906
+ export type EmailGetDomainWarmingData = {
4907
+ body?: never;
4908
+ path: {
4909
+ id: EmailDomainId;
4370
4910
  };
4371
- path?: never;
4372
4911
  query?: never;
4373
- url: "/v1/media";
4912
+ url: "/v1/email/domains/{id}/warming";
4374
4913
  };
4375
- export type MediaCreateErrors = {
4914
+ export type EmailGetDomainWarmingErrors = {
4376
4915
  /**
4377
4916
  * UnauthorizedError
4378
4917
  */
@@ -4382,31 +4921,36 @@ export type MediaCreateErrors = {
4382
4921
  */
4383
4922
  403: ForbiddenError;
4384
4923
  /**
4385
- * ValidationError
4924
+ * ResourceNotFoundError
4386
4925
  */
4387
- 422: ValidationError;
4926
+ 404: ResourceNotFoundError;
4388
4927
  /**
4389
4928
  * InternalError
4390
4929
  */
4391
4930
  500: InternalError;
4392
4931
  };
4393
- export type MediaCreateError = MediaCreateErrors[keyof MediaCreateErrors];
4394
- export type MediaCreateResponses = {
4932
+ export type EmailGetDomainWarmingError = EmailGetDomainWarmingErrors[keyof EmailGetDomainWarmingErrors];
4933
+ export type EmailGetDomainWarmingResponses = {
4395
4934
  /**
4396
- * CreatedMedia
4935
+ * DomainWarming
4397
4936
  */
4398
- 201: CreatedMedia;
4937
+ 200: DomainWarming;
4399
4938
  };
4400
- export type MediaCreateResponse = MediaCreateResponses[keyof MediaCreateResponses];
4401
- export type MediaCompleteData = {
4402
- body?: never;
4939
+ export type EmailGetDomainWarmingResponse = EmailGetDomainWarmingResponses[keyof EmailGetDomainWarmingResponses];
4940
+ export type EmailCreateDomainWarmingPlanData = {
4941
+ body: {
4942
+ identity: "new" | "migrating" | "returning";
4943
+ initialDailyRecipients: number;
4944
+ dailyGrowthPercent: number;
4945
+ targetDailyRecipients: number;
4946
+ };
4403
4947
  path: {
4404
- mediaId: MediaId;
4948
+ id: EmailDomainId;
4405
4949
  };
4406
4950
  query?: never;
4407
- url: "/v1/media/{mediaId}/complete";
4951
+ url: "/v1/email/domains/{id}/warming";
4408
4952
  };
4409
- export type MediaCompleteErrors = {
4953
+ export type EmailCreateDomainWarmingPlanErrors = {
4410
4954
  /**
4411
4955
  * UnauthorizedError
4412
4956
  */
@@ -4419,6 +4963,10 @@ export type MediaCompleteErrors = {
4419
4963
  * ResourceNotFoundError
4420
4964
  */
4421
4965
  404: ResourceNotFoundError;
4966
+ /**
4967
+ * ConflictError
4968
+ */
4969
+ 409: ConflictError;
4422
4970
  /**
4423
4971
  * ValidationError
4424
4972
  */
@@ -4428,23 +4976,27 @@ export type MediaCompleteErrors = {
4428
4976
  */
4429
4977
  500: InternalError;
4430
4978
  };
4431
- export type MediaCompleteError = MediaCompleteErrors[keyof MediaCompleteErrors];
4432
- export type MediaCompleteResponses = {
4979
+ export type EmailCreateDomainWarmingPlanError = EmailCreateDomainWarmingPlanErrors[keyof EmailCreateDomainWarmingPlanErrors];
4980
+ export type EmailCreateDomainWarmingPlanResponses = {
4433
4981
  /**
4434
- * CompletedMedia
4982
+ * Success
4435
4983
  */
4436
- 200: CompletedMedia;
4984
+ 201: DomainWarming;
4437
4985
  };
4438
- export type MediaCompleteResponse = MediaCompleteResponses[keyof MediaCompleteResponses];
4439
- export type MediaRemoveData = {
4440
- body?: never;
4986
+ export type EmailCreateDomainWarmingPlanResponse = EmailCreateDomainWarmingPlanResponses[keyof EmailCreateDomainWarmingPlanResponses];
4987
+ export type EmailUpdateDomainWarmingPolicyData = {
4988
+ body: {
4989
+ dailyGrowthPercent: number;
4990
+ targetDailyRecipients: number;
4991
+ note?: string | null | undefined;
4992
+ };
4441
4993
  path: {
4442
- mediaId: MediaId;
4994
+ id: EmailDomainId;
4443
4995
  };
4444
4996
  query?: never;
4445
- url: "/v1/media/{mediaId}";
4997
+ url: "/v1/email/domains/{id}/warming/policy";
4446
4998
  };
4447
- export type MediaRemoveErrors = {
4999
+ export type EmailUpdateDomainWarmingPolicyErrors = {
4448
5000
  /**
4449
5001
  * UnauthorizedError
4450
5002
  */
@@ -4458,7 +5010,284 @@ export type MediaRemoveErrors = {
4458
5010
  */
4459
5011
  404: ResourceNotFoundError;
4460
5012
  /**
4461
- * ValidationError
5013
+ * ConflictError
5014
+ */
5015
+ 409: ConflictError;
5016
+ /**
5017
+ * ValidationError
5018
+ */
5019
+ 422: ValidationError;
5020
+ /**
5021
+ * InternalError
5022
+ */
5023
+ 500: InternalError;
5024
+ };
5025
+ export type EmailUpdateDomainWarmingPolicyError = EmailUpdateDomainWarmingPolicyErrors[keyof EmailUpdateDomainWarmingPolicyErrors];
5026
+ export type EmailUpdateDomainWarmingPolicyResponses = {
5027
+ /**
5028
+ * DomainWarming
5029
+ */
5030
+ 200: DomainWarming;
5031
+ };
5032
+ export type EmailUpdateDomainWarmingPolicyResponse = EmailUpdateDomainWarmingPolicyResponses[keyof EmailUpdateDomainWarmingPolicyResponses];
5033
+ export type EmailCancelDomainWarmingBatchData = {
5034
+ body?: never;
5035
+ path: {
5036
+ id: EmailDomainId;
5037
+ batchId: EmailDomainWarmingBatchId;
5038
+ };
5039
+ query?: never;
5040
+ url: "/v1/email/domains/{id}/warming/batches/{batchId}";
5041
+ };
5042
+ export type EmailCancelDomainWarmingBatchErrors = {
5043
+ /**
5044
+ * UnauthorizedError
5045
+ */
5046
+ 401: UnauthorizedError;
5047
+ /**
5048
+ * ForbiddenError
5049
+ */
5050
+ 403: ForbiddenError;
5051
+ /**
5052
+ * ResourceNotFoundError
5053
+ */
5054
+ 404: ResourceNotFoundError;
5055
+ /**
5056
+ * ConflictError
5057
+ */
5058
+ 409: ConflictError;
5059
+ /**
5060
+ * InternalError
5061
+ */
5062
+ 500: InternalError;
5063
+ };
5064
+ export type EmailCancelDomainWarmingBatchError = EmailCancelDomainWarmingBatchErrors[keyof EmailCancelDomainWarmingBatchErrors];
5065
+ export type EmailCancelDomainWarmingBatchResponses = {
5066
+ /**
5067
+ * DomainWarming
5068
+ */
5069
+ 200: DomainWarming;
5070
+ };
5071
+ export type EmailCancelDomainWarmingBatchResponse = EmailCancelDomainWarmingBatchResponses[keyof EmailCancelDomainWarmingBatchResponses];
5072
+ export type EmailPauseDomainWarmingData = {
5073
+ body: {
5074
+ note?: string | null | undefined;
5075
+ };
5076
+ path: {
5077
+ id: EmailDomainId;
5078
+ };
5079
+ query?: never;
5080
+ url: "/v1/email/domains/{id}/warming/pause";
5081
+ };
5082
+ export type EmailPauseDomainWarmingErrors = {
5083
+ /**
5084
+ * UnauthorizedError
5085
+ */
5086
+ 401: UnauthorizedError;
5087
+ /**
5088
+ * ForbiddenError
5089
+ */
5090
+ 403: ForbiddenError;
5091
+ /**
5092
+ * ResourceNotFoundError
5093
+ */
5094
+ 404: ResourceNotFoundError;
5095
+ /**
5096
+ * ConflictError
5097
+ */
5098
+ 409: ConflictError;
5099
+ /**
5100
+ * InternalError
5101
+ */
5102
+ 500: InternalError;
5103
+ };
5104
+ export type EmailPauseDomainWarmingError = EmailPauseDomainWarmingErrors[keyof EmailPauseDomainWarmingErrors];
5105
+ export type EmailPauseDomainWarmingResponses = {
5106
+ /**
5107
+ * DomainWarming
5108
+ */
5109
+ 200: DomainWarming;
5110
+ };
5111
+ export type EmailPauseDomainWarmingResponse = EmailPauseDomainWarmingResponses[keyof EmailPauseDomainWarmingResponses];
5112
+ export type EmailResumeDomainWarmingData = {
5113
+ body: {
5114
+ note?: string | null | undefined;
5115
+ };
5116
+ path: {
5117
+ id: EmailDomainId;
5118
+ };
5119
+ query?: never;
5120
+ url: "/v1/email/domains/{id}/warming/resume";
5121
+ };
5122
+ export type EmailResumeDomainWarmingErrors = {
5123
+ /**
5124
+ * UnauthorizedError
5125
+ */
5126
+ 401: UnauthorizedError;
5127
+ /**
5128
+ * ForbiddenError
5129
+ */
5130
+ 403: ForbiddenError;
5131
+ /**
5132
+ * ResourceNotFoundError
5133
+ */
5134
+ 404: ResourceNotFoundError;
5135
+ /**
5136
+ * ConflictError
5137
+ */
5138
+ 409: ConflictError;
5139
+ /**
5140
+ * InternalError
5141
+ */
5142
+ 500: InternalError;
5143
+ };
5144
+ export type EmailResumeDomainWarmingError = EmailResumeDomainWarmingErrors[keyof EmailResumeDomainWarmingErrors];
5145
+ export type EmailResumeDomainWarmingResponses = {
5146
+ /**
5147
+ * DomainWarming
5148
+ */
5149
+ 200: DomainWarming;
5150
+ };
5151
+ export type EmailResumeDomainWarmingResponse = EmailResumeDomainWarmingResponses[keyof EmailResumeDomainWarmingResponses];
5152
+ export type EmailCompleteDomainWarmingData = {
5153
+ body: {
5154
+ note?: string | null | undefined;
5155
+ };
5156
+ path: {
5157
+ id: EmailDomainId;
5158
+ };
5159
+ query?: never;
5160
+ url: "/v1/email/domains/{id}/warming/complete";
5161
+ };
5162
+ export type EmailCompleteDomainWarmingErrors = {
5163
+ /**
5164
+ * UnauthorizedError
5165
+ */
5166
+ 401: UnauthorizedError;
5167
+ /**
5168
+ * ForbiddenError
5169
+ */
5170
+ 403: ForbiddenError;
5171
+ /**
5172
+ * ResourceNotFoundError
5173
+ */
5174
+ 404: ResourceNotFoundError;
5175
+ /**
5176
+ * ConflictError
5177
+ */
5178
+ 409: ConflictError;
5179
+ /**
5180
+ * InternalError
5181
+ */
5182
+ 500: InternalError;
5183
+ };
5184
+ export type EmailCompleteDomainWarmingError = EmailCompleteDomainWarmingErrors[keyof EmailCompleteDomainWarmingErrors];
5185
+ export type EmailCompleteDomainWarmingResponses = {
5186
+ /**
5187
+ * DomainWarming
5188
+ */
5189
+ 200: DomainWarming;
5190
+ };
5191
+ export type EmailCompleteDomainWarmingResponse = EmailCompleteDomainWarmingResponses[keyof EmailCompleteDomainWarmingResponses];
5192
+ export type MediaCreateData = {
5193
+ body: {
5194
+ filename: string;
5195
+ contentType: string;
5196
+ sizeBytes: number;
5197
+ purpose: "attachment" | "avatar" | "review_evidence";
5198
+ checksumSha256?: string | null | undefined;
5199
+ };
5200
+ path?: never;
5201
+ query?: never;
5202
+ url: "/v1/media";
5203
+ };
5204
+ export type MediaCreateErrors = {
5205
+ /**
5206
+ * UnauthorizedError
5207
+ */
5208
+ 401: UnauthorizedError;
5209
+ /**
5210
+ * ForbiddenError
5211
+ */
5212
+ 403: ForbiddenError;
5213
+ /**
5214
+ * ValidationError
5215
+ */
5216
+ 422: ValidationError;
5217
+ /**
5218
+ * InternalError
5219
+ */
5220
+ 500: InternalError;
5221
+ };
5222
+ export type MediaCreateError = MediaCreateErrors[keyof MediaCreateErrors];
5223
+ export type MediaCreateResponses = {
5224
+ /**
5225
+ * CreatedMedia
5226
+ */
5227
+ 201: CreatedMedia;
5228
+ };
5229
+ export type MediaCreateResponse = MediaCreateResponses[keyof MediaCreateResponses];
5230
+ export type MediaCompleteData = {
5231
+ body?: never;
5232
+ path: {
5233
+ mediaId: MediaId;
5234
+ };
5235
+ query?: never;
5236
+ url: "/v1/media/{mediaId}/complete";
5237
+ };
5238
+ export type MediaCompleteErrors = {
5239
+ /**
5240
+ * UnauthorizedError
5241
+ */
5242
+ 401: UnauthorizedError;
5243
+ /**
5244
+ * ForbiddenError
5245
+ */
5246
+ 403: ForbiddenError;
5247
+ /**
5248
+ * ResourceNotFoundError
5249
+ */
5250
+ 404: ResourceNotFoundError;
5251
+ /**
5252
+ * ValidationError
5253
+ */
5254
+ 422: ValidationError;
5255
+ /**
5256
+ * InternalError
5257
+ */
5258
+ 500: InternalError;
5259
+ };
5260
+ export type MediaCompleteError = MediaCompleteErrors[keyof MediaCompleteErrors];
5261
+ export type MediaCompleteResponses = {
5262
+ /**
5263
+ * CompletedMedia
5264
+ */
5265
+ 200: CompletedMedia;
5266
+ };
5267
+ export type MediaCompleteResponse = MediaCompleteResponses[keyof MediaCompleteResponses];
5268
+ export type MediaRemoveData = {
5269
+ body?: never;
5270
+ path: {
5271
+ mediaId: MediaId;
5272
+ };
5273
+ query?: never;
5274
+ url: "/v1/media/{mediaId}";
5275
+ };
5276
+ export type MediaRemoveErrors = {
5277
+ /**
5278
+ * UnauthorizedError
5279
+ */
5280
+ 401: UnauthorizedError;
5281
+ /**
5282
+ * ForbiddenError
5283
+ */
5284
+ 403: ForbiddenError;
5285
+ /**
5286
+ * ResourceNotFoundError
5287
+ */
5288
+ 404: ResourceNotFoundError;
5289
+ /**
5290
+ * ValidationError
4462
5291
  */
4463
5292
  422: ValidationError;
4464
5293
  /**
@@ -5568,22 +6397,13 @@ export type TemplatesListResponse = TemplatesListResponses[keyof TemplatesListRe
5568
6397
  export type TemplatesCreateData = {
5569
6398
  body: {
5570
6399
  name: string;
6400
+ projectName?: string | null | undefined;
5571
6401
  slug?: string | null | undefined;
5572
- origin?: "dashboard" | "tsx" | null | undefined;
6402
+ galleryTemplateId?: string | null | undefined;
5573
6403
  description?: string | null | null | undefined;
5574
6404
  category?: "transactional" | "marketing" | "support" | "notification" | "verification" | "reminder" | "alert" | null | null | undefined;
5575
- source: string;
5576
- subject?: string | null | undefined;
5577
- headers?: {
5578
- [key: string]: string;
5579
- } | null | null | undefined;
5580
- variableSchema?: Array<TemplateVariable> | null | null | undefined;
5581
- compliance?: TemplateCompliance | null | null | undefined;
5582
- performance?: TemplatePerformance | null | null | undefined;
5583
- designOverrides?: Design | null | null | undefined;
5584
6405
  isActive?: boolean | null | undefined;
5585
- isDefault?: boolean | null | undefined;
5586
- version?: number | null | undefined;
6406
+ idempotencyKey: string;
5587
6407
  };
5588
6408
  path?: never;
5589
6409
  query?: never;
@@ -5974,16 +6794,15 @@ export type TemplatesAttachFamilyMemberResponses = {
5974
6794
  200: TemplateFamily;
5975
6795
  };
5976
6796
  export type TemplatesAttachFamilyMemberResponse = TemplatesAttachFamilyMemberResponses[keyof TemplatesAttachFamilyMemberResponses];
5977
- export type TemplatesAddFamilyChannelData = {
6797
+ export type TemplatesRemoveData = {
5978
6798
  body?: never;
5979
6799
  path: {
5980
- familyId: TemplateFamilyId;
5981
- channel: "email";
6800
+ id: TemplateId;
5982
6801
  };
5983
6802
  query?: never;
5984
- url: "/v1/templates/families/{familyId}/channels/{channel}";
6803
+ url: "/v1/templates/{id}";
5985
6804
  };
5986
- export type TemplatesAddFamilyChannelErrors = {
6805
+ export type TemplatesRemoveErrors = {
5987
6806
  /**
5988
6807
  * UnauthorizedError
5989
6808
  */
@@ -5996,55 +6815,13 @@ export type TemplatesAddFamilyChannelErrors = {
5996
6815
  * ResourceNotFoundError
5997
6816
  */
5998
6817
  404: ResourceNotFoundError;
5999
- /**
6000
- * ConflictError
6001
- */
6002
- 409: ConflictError;
6003
- /**
6004
- * ValidationError
6005
- */
6006
- 422: ValidationError;
6007
6818
  /**
6008
6819
  * InternalError
6009
6820
  */
6010
6821
  500: InternalError;
6011
6822
  };
6012
- export type TemplatesAddFamilyChannelError = TemplatesAddFamilyChannelErrors[keyof TemplatesAddFamilyChannelErrors];
6013
- export type TemplatesAddFamilyChannelResponses = {
6014
- /**
6015
- * Success
6016
- */
6017
- 201: TemplateFamily;
6018
- };
6019
- export type TemplatesAddFamilyChannelResponse = TemplatesAddFamilyChannelResponses[keyof TemplatesAddFamilyChannelResponses];
6020
- export type TemplatesRemoveData = {
6021
- body?: never;
6022
- path: {
6023
- id: TemplateId;
6024
- };
6025
- query?: never;
6026
- url: "/v1/templates/{id}";
6027
- };
6028
- export type TemplatesRemoveErrors = {
6029
- /**
6030
- * UnauthorizedError
6031
- */
6032
- 401: UnauthorizedError;
6033
- /**
6034
- * ForbiddenError
6035
- */
6036
- 403: ForbiddenError;
6037
- /**
6038
- * ResourceNotFoundError
6039
- */
6040
- 404: ResourceNotFoundError;
6041
- /**
6042
- * InternalError
6043
- */
6044
- 500: InternalError;
6045
- };
6046
- export type TemplatesRemoveError = TemplatesRemoveErrors[keyof TemplatesRemoveErrors];
6047
- export type TemplatesRemoveResponses = {
6823
+ export type TemplatesRemoveError = TemplatesRemoveErrors[keyof TemplatesRemoveErrors];
6824
+ export type TemplatesRemoveResponses = {
6048
6825
  /**
6049
6826
  * SuccessResponse
6050
6827
  */
@@ -6090,18 +6867,11 @@ export type TemplatesUpdateData = {
6090
6867
  data: {
6091
6868
  name?: string | null | undefined;
6092
6869
  slug?: string | null | undefined;
6093
- origin?: "dashboard" | "tsx" | null | undefined;
6094
6870
  description?: string | null | null | undefined;
6095
6871
  category?: "transactional" | "marketing" | "support" | "notification" | "verification" | "reminder" | "alert" | null | null | undefined;
6096
6872
  fromDefault?: TemplateFromDefault | null | null | undefined;
6097
6873
  replyToDefault?: Array<string> | null | null | undefined;
6098
- variableSchema?: Array<TemplateVariable> | null | null | undefined;
6099
- compliance?: TemplateCompliance | null | null | undefined;
6100
- performance?: TemplatePerformance | null | null | undefined;
6101
- designOverrides?: Design | null | null | undefined;
6102
6874
  isActive?: boolean | null | undefined;
6103
- isDefault?: boolean | null | undefined;
6104
- version?: number | null | undefined;
6105
6875
  };
6106
6876
  };
6107
6877
  path: {
@@ -6144,19 +6914,22 @@ export type TemplatesUpdateResponses = {
6144
6914
  200: Template;
6145
6915
  };
6146
6916
  export type TemplatesUpdateResponse = TemplatesUpdateResponses[keyof TemplatesUpdateResponses];
6147
- export type TemplatesApproveData = {
6917
+ export type TemplatesPatchWorkspaceData = {
6148
6918
  body: {
6149
- data: {
6150
- notes?: string | null | undefined;
6151
- };
6919
+ expectedRevision: string;
6920
+ patches: Array<{
6921
+ path: string;
6922
+ content: string | null;
6923
+ }>;
6924
+ idempotencyKey: string;
6152
6925
  };
6153
6926
  path: {
6154
6927
  id: TemplateId;
6155
6928
  };
6156
6929
  query?: never;
6157
- url: "/v1/templates/{id}/approve";
6930
+ url: "/v1/templates/{id}/workspace";
6158
6931
  };
6159
- export type TemplatesApproveErrors = {
6932
+ export type TemplatesPatchWorkspaceErrors = {
6160
6933
  /**
6161
6934
  * UnauthorizedError
6162
6935
  */
@@ -6169,28 +6942,112 @@ export type TemplatesApproveErrors = {
6169
6942
  * ResourceNotFoundError
6170
6943
  */
6171
6944
  404: ResourceNotFoundError;
6945
+ /**
6946
+ * ConflictError
6947
+ */
6948
+ 409: ConflictError;
6172
6949
  /**
6173
6950
  * InternalError
6174
6951
  */
6175
6952
  500: InternalError;
6176
6953
  };
6177
- export type TemplatesApproveError = TemplatesApproveErrors[keyof TemplatesApproveErrors];
6178
- export type TemplatesApproveResponses = {
6954
+ export type TemplatesPatchWorkspaceError = TemplatesPatchWorkspaceErrors[keyof TemplatesPatchWorkspaceErrors];
6955
+ export type TemplatesPatchWorkspaceResponses = {
6179
6956
  /**
6180
- * Template
6957
+ * Success
6181
6958
  */
6182
- 200: Template;
6959
+ 200: {
6960
+ workspace: {
6961
+ projectId: TemplateProjectId;
6962
+ organizationId: OrganizationId | null;
6963
+ ownerEpoch: number;
6964
+ repositoryName: string;
6965
+ defaultBranch: string;
6966
+ baseCommit: string;
6967
+ remoteHead: string;
6968
+ pendingRemoteHead: string | null;
6969
+ revision: string;
6970
+ overlay: {
6971
+ [key: string]: string | null;
6972
+ };
6973
+ assetChanges: Array<{
6974
+ path: string;
6975
+ status: "added" | "modified" | "deleted";
6976
+ }>;
6977
+ conflicts: Array<{
6978
+ path: string;
6979
+ base: string | null;
6980
+ draft: string | null;
6981
+ main: string | null;
6982
+ }>;
6983
+ provenance: {
6984
+ references: Array<{
6985
+ kind: string;
6986
+ digest: string;
6987
+ locator?: string | undefined;
6988
+ }>;
6989
+ };
6990
+ mounts: Array<{
6991
+ kind: "project";
6992
+ root: "/project";
6993
+ access: "read-write";
6994
+ } | {
6995
+ root: string;
6996
+ digest: string;
6997
+ fileCount: number;
6998
+ byteSize: number;
6999
+ kind: "started-from";
7000
+ access: "read-only";
7001
+ templateId: string;
7002
+ slug: string;
7003
+ name: string;
7004
+ } | {
7005
+ root: string;
7006
+ digest: string;
7007
+ fileCount: number;
7008
+ byteSize: number;
7009
+ kind: "resource";
7010
+ access: "read-only";
7011
+ resourceId: string;
7012
+ name: string;
7013
+ } | {
7014
+ root: string;
7015
+ digest: string;
7016
+ fileCount: number;
7017
+ byteSize: number;
7018
+ kind: "library-template";
7019
+ access: "read-only";
7020
+ templateId: string;
7021
+ slug: string;
7022
+ name: string;
7023
+ }>;
7024
+ libraryManifestDigest: string;
7025
+ createdAt: string;
7026
+ updatedAt: string;
7027
+ createdBy: {
7028
+ userId: UserId;
7029
+ via: "api" | "mcp" | "agent";
7030
+ };
7031
+ updatedBy: {
7032
+ userId: UserId;
7033
+ via: "api" | "mcp" | "agent";
7034
+ };
7035
+ };
7036
+ files: {
7037
+ [key: string]: string;
7038
+ };
7039
+ };
6183
7040
  };
6184
- export type TemplatesApproveResponse = TemplatesApproveResponses[keyof TemplatesApproveResponses];
6185
- export type TemplateDocumentsBootstrapData = {
6186
- body: {
6187
- templateId: TemplateId;
7041
+ export type TemplatesPatchWorkspaceResponse = TemplatesPatchWorkspaceResponses[keyof TemplatesPatchWorkspaceResponses];
7042
+ export type TemplatesOpenWorkspaceData = {
7043
+ body?: never;
7044
+ path: {
7045
+ id: TemplateId;
6188
7046
  };
6189
- path?: never;
6190
7047
  query?: never;
6191
- url: "/v1/template-documents/bootstrap";
7048
+ url: "/v1/templates/{id}/workspace";
6192
7049
  };
6193
- export type TemplateDocumentsBootstrapErrors = {
7050
+ export type TemplatesOpenWorkspaceErrors = {
6194
7051
  /**
6195
7052
  * UnauthorizedError
6196
7053
  */
@@ -6207,49 +7064,110 @@ export type TemplateDocumentsBootstrapErrors = {
6207
7064
  * ConflictError
6208
7065
  */
6209
7066
  409: ConflictError;
6210
- /**
6211
- * ValidationError
6212
- */
6213
- 422: ValidationError;
6214
7067
  /**
6215
7068
  * InternalError
6216
7069
  */
6217
7070
  500: InternalError;
6218
7071
  };
6219
- export type TemplateDocumentsBootstrapError = TemplateDocumentsBootstrapErrors[keyof TemplateDocumentsBootstrapErrors];
6220
- export type TemplateDocumentsBootstrapResponses = {
7072
+ export type TemplatesOpenWorkspaceError = TemplatesOpenWorkspaceErrors[keyof TemplatesOpenWorkspaceErrors];
7073
+ export type TemplatesOpenWorkspaceResponses = {
6221
7074
  /**
6222
7075
  * Success
6223
7076
  */
6224
7077
  200: {
6225
- templateId: TemplateId;
6226
- organizationId: OrganizationId;
6227
- channel: "email";
6228
- source: string;
6229
- revision: string;
6230
- sourceDigest: string;
6231
- createdAt: string;
6232
- updatedAt: string;
6233
- createdBy: {
6234
- userId: UserId;
6235
- via: "api" | "mcp" | "agent";
7078
+ workspace: {
7079
+ projectId: TemplateProjectId;
7080
+ organizationId: OrganizationId | null;
7081
+ ownerEpoch: number;
7082
+ repositoryName: string;
7083
+ defaultBranch: string;
7084
+ baseCommit: string;
7085
+ remoteHead: string;
7086
+ pendingRemoteHead: string | null;
7087
+ revision: string;
7088
+ overlay: {
7089
+ [key: string]: string | null;
7090
+ };
7091
+ assetChanges: Array<{
7092
+ path: string;
7093
+ status: "added" | "modified" | "deleted";
7094
+ }>;
7095
+ conflicts: Array<{
7096
+ path: string;
7097
+ base: string | null;
7098
+ draft: string | null;
7099
+ main: string | null;
7100
+ }>;
7101
+ provenance: {
7102
+ references: Array<{
7103
+ kind: string;
7104
+ digest: string;
7105
+ locator?: string | undefined;
7106
+ }>;
7107
+ };
7108
+ mounts: Array<{
7109
+ kind: "project";
7110
+ root: "/project";
7111
+ access: "read-write";
7112
+ } | {
7113
+ root: string;
7114
+ digest: string;
7115
+ fileCount: number;
7116
+ byteSize: number;
7117
+ kind: "started-from";
7118
+ access: "read-only";
7119
+ templateId: string;
7120
+ slug: string;
7121
+ name: string;
7122
+ } | {
7123
+ root: string;
7124
+ digest: string;
7125
+ fileCount: number;
7126
+ byteSize: number;
7127
+ kind: "resource";
7128
+ access: "read-only";
7129
+ resourceId: string;
7130
+ name: string;
7131
+ } | {
7132
+ root: string;
7133
+ digest: string;
7134
+ fileCount: number;
7135
+ byteSize: number;
7136
+ kind: "library-template";
7137
+ access: "read-only";
7138
+ templateId: string;
7139
+ slug: string;
7140
+ name: string;
7141
+ }>;
7142
+ libraryManifestDigest: string;
7143
+ createdAt: string;
7144
+ updatedAt: string;
7145
+ createdBy: {
7146
+ userId: UserId;
7147
+ via: "api" | "mcp" | "agent";
7148
+ };
7149
+ updatedBy: {
7150
+ userId: UserId;
7151
+ via: "api" | "mcp" | "agent";
7152
+ };
6236
7153
  };
6237
- updatedBy: {
6238
- userId: UserId;
6239
- via: "api" | "mcp" | "agent";
7154
+ files: {
7155
+ [key: string]: string;
6240
7156
  };
6241
7157
  };
6242
7158
  };
6243
- export type TemplateDocumentsBootstrapResponse = TemplateDocumentsBootstrapResponses[keyof TemplateDocumentsBootstrapResponses];
6244
- export type TemplateDocumentsGetData = {
6245
- body?: never;
7159
+ export type TemplatesOpenWorkspaceResponse = TemplatesOpenWorkspaceResponses[keyof TemplatesOpenWorkspaceResponses];
7160
+ export type TemplatesDiffWorkspaceData = {
7161
+ body: {
7162
+ expectedRevision: string;
7163
+ };
6246
7164
  path: {
6247
- templateId: TemplateId;
7165
+ id: TemplateId;
6248
7166
  };
6249
7167
  query?: never;
6250
- url: "/v1/template-documents/{templateId}";
7168
+ url: "/v1/templates/{id}/workspace/diff";
6251
7169
  };
6252
- export type TemplateDocumentsGetErrors = {
7170
+ export type TemplatesDiffWorkspaceErrors = {
6253
7171
  /**
6254
7172
  * UnauthorizedError
6255
7173
  */
@@ -6266,67 +7184,47 @@ export type TemplateDocumentsGetErrors = {
6266
7184
  * ConflictError
6267
7185
  */
6268
7186
  409: ConflictError;
6269
- /**
6270
- * ValidationError
6271
- */
6272
- 422: ValidationError;
6273
7187
  /**
6274
7188
  * InternalError
6275
7189
  */
6276
7190
  500: InternalError;
6277
7191
  };
6278
- export type TemplateDocumentsGetError = TemplateDocumentsGetErrors[keyof TemplateDocumentsGetErrors];
6279
- export type TemplateDocumentsGetResponses = {
7192
+ export type TemplatesDiffWorkspaceError = TemplatesDiffWorkspaceErrors[keyof TemplatesDiffWorkspaceErrors];
7193
+ export type TemplatesDiffWorkspaceResponses = {
6280
7194
  /**
6281
7195
  * Success
6282
7196
  */
6283
7197
  200: {
6284
- templateId: TemplateId;
6285
- organizationId: OrganizationId;
6286
- channel: "email";
6287
- source: string;
7198
+ projectId: TemplateProjectId;
7199
+ baseCommit: string;
6288
7200
  revision: string;
6289
- sourceDigest: string;
6290
- createdAt: string;
6291
- updatedAt: string;
6292
- createdBy: {
6293
- userId: UserId;
6294
- via: "api" | "mcp" | "agent";
6295
- };
6296
- updatedBy: {
6297
- userId: UserId;
6298
- via: "api" | "mcp" | "agent";
6299
- };
7201
+ changes: Array<{
7202
+ path: string;
7203
+ before: string | null;
7204
+ after: string | null;
7205
+ status: "added" | "modified" | "deleted";
7206
+ }>;
7207
+ assetChanges: Array<{
7208
+ path: string;
7209
+ status: "added" | "modified" | "deleted";
7210
+ }>;
6300
7211
  };
6301
7212
  };
6302
- export type TemplateDocumentsGetResponse = TemplateDocumentsGetResponses[keyof TemplateDocumentsGetResponses];
6303
- export type TemplateDocumentsIssueAgentAdmissionData = {
7213
+ export type TemplatesDiffWorkspaceResponse = TemplatesDiffWorkspaceResponses[keyof TemplatesDiffWorkspaceResponses];
7214
+ export type TemplatesReconcileWorkspaceData = {
6304
7215
  body: {
6305
- method: "GET" | "HEAD" | "POST";
6306
- route: "prompt" | "read" | "abort" | "clear";
6307
- referenceDigest?: string | undefined;
6308
- research?: {
6309
- kind: "query";
6310
- query: string;
6311
- } | {
6312
- kind: "url";
6313
- url: string;
6314
- } | {
6315
- kind: "styleguide";
6316
- domain: string;
6317
- } | undefined;
6318
- competitorMessage?: {
6319
- watchId: MailboxExtensionId;
6320
- messageId: MessageId;
6321
- } | undefined;
7216
+ expectedRevision: string;
7217
+ assetResolution?: "draft" | "remote" | undefined;
7218
+ expectedRemoteHead?: string | undefined;
7219
+ idempotencyKey: string;
6322
7220
  };
6323
7221
  path: {
6324
- templateId: TemplateId;
7222
+ id: TemplateId;
6325
7223
  };
6326
7224
  query?: never;
6327
- url: "/v1/template-documents/{templateId}/agent-admission";
7225
+ url: "/v1/templates/{id}/workspace/reconcile";
6328
7226
  };
6329
- export type TemplateDocumentsIssueAgentAdmissionErrors = {
7227
+ export type TemplatesReconcileWorkspaceErrors = {
6330
7228
  /**
6331
7229
  * UnauthorizedError
6332
7230
  */
@@ -6343,132 +7241,115 @@ export type TemplateDocumentsIssueAgentAdmissionErrors = {
6343
7241
  * ConflictError
6344
7242
  */
6345
7243
  409: ConflictError;
6346
- /**
6347
- * ValidationError
6348
- */
6349
- 422: ValidationError;
6350
7244
  /**
6351
7245
  * InternalError
6352
7246
  */
6353
7247
  500: InternalError;
6354
7248
  };
6355
- export type TemplateDocumentsIssueAgentAdmissionError = TemplateDocumentsIssueAgentAdmissionErrors[keyof TemplateDocumentsIssueAgentAdmissionErrors];
6356
- export type TemplateDocumentsIssueAgentAdmissionResponses = {
7249
+ export type TemplatesReconcileWorkspaceError = TemplatesReconcileWorkspaceErrors[keyof TemplatesReconcileWorkspaceErrors];
7250
+ export type TemplatesReconcileWorkspaceResponses = {
6357
7251
  /**
6358
7252
  * Success
6359
7253
  */
6360
7254
  200: {
6361
- token: string;
6362
- conversationId: string;
6363
- snapshot: {
6364
- templateId: TemplateId;
6365
- organizationId: OrganizationId;
6366
- channel: "email";
6367
- source: string;
7255
+ workspace: {
7256
+ projectId: TemplateProjectId;
7257
+ organizationId: OrganizationId | null;
7258
+ ownerEpoch: number;
7259
+ repositoryName: string;
7260
+ defaultBranch: string;
7261
+ baseCommit: string;
7262
+ remoteHead: string;
7263
+ pendingRemoteHead: string | null;
6368
7264
  revision: string;
6369
- sourceDigest: string;
6370
- };
6371
- reference?: {
6372
- version: 1;
6373
- referenceId: string;
6374
- name: string;
6375
- description: string;
6376
- galleryPath: string;
6377
- digest: string;
6378
- citation: {
6379
- kind: string;
6380
- digest: string;
6381
- locator?: string | undefined;
7265
+ overlay: {
7266
+ [key: string]: string | null;
6382
7267
  };
6383
- policy: "samva-owned-source";
6384
- source: string;
6385
- } | {
6386
- version: 1;
6387
- referenceId: string;
6388
- name: string;
6389
- description: string;
6390
- galleryPath: string;
6391
- digest: string;
6392
- citation: {
6393
- kind: string;
6394
- digest: string;
6395
- locator?: string | undefined;
6396
- };
6397
- policy: "reviewed-public-structure";
6398
- structure: {
6399
- nodes: Array<{
6400
- tag: string;
6401
- depth: number;
6402
- childIndex: number;
6403
- }>;
6404
- components: Array<{
6405
- tag: string;
6406
- count: number;
7268
+ assetChanges: Array<{
7269
+ path: string;
7270
+ status: "added" | "modified" | "deleted";
7271
+ }>;
7272
+ conflicts: Array<{
7273
+ path: string;
7274
+ base: string | null;
7275
+ draft: string | null;
7276
+ main: string | null;
7277
+ }>;
7278
+ provenance: {
7279
+ references: Array<{
7280
+ kind: string;
7281
+ digest: string;
7282
+ locator?: string | undefined;
6407
7283
  }>;
6408
- palette: Array<string>;
6409
7284
  };
6410
- } | {
6411
- version: 1;
6412
- policy: "authorized-message-structure";
6413
- referenceId: string;
6414
- name: string;
6415
- description: string;
6416
- digest: string;
6417
- citation: {
6418
- kind: string;
7285
+ mounts: Array<{
7286
+ kind: "project";
7287
+ root: "/project";
7288
+ access: "read-write";
7289
+ } | {
7290
+ root: string;
6419
7291
  digest: string;
6420
- locator?: string | undefined;
6421
- };
6422
- structure: {
6423
- sections: number;
6424
- headings: number;
6425
- images: number;
6426
- links: number;
6427
- buttons: number;
6428
- textLength: number;
6429
- subjectLength: number;
6430
- palette: Array<string>;
6431
- };
6432
- } | {
6433
- version: 1;
6434
- policy: "public-research";
6435
- request: {
6436
- kind: "query";
6437
- query: string;
7292
+ fileCount: number;
7293
+ byteSize: number;
7294
+ kind: "started-from";
7295
+ access: "read-only";
7296
+ templateId: string;
7297
+ slug: string;
7298
+ name: string;
6438
7299
  } | {
6439
- kind: "url";
6440
- url: string;
7300
+ root: string;
7301
+ digest: string;
7302
+ fileCount: number;
7303
+ byteSize: number;
7304
+ kind: "resource";
7305
+ access: "read-only";
7306
+ resourceId: string;
7307
+ name: string;
6441
7308
  } | {
6442
- kind: "styleguide";
6443
- domain: string;
6444
- };
6445
- digest: string;
6446
- citations: Array<{
6447
- title: string;
6448
- url: string;
6449
- excerpts: Array<string>;
6450
- }>;
6451
- citation: {
6452
- kind: string;
7309
+ root: string;
6453
7310
  digest: string;
6454
- locator?: string | undefined;
7311
+ fileCount: number;
7312
+ byteSize: number;
7313
+ kind: "library-template";
7314
+ access: "read-only";
7315
+ templateId: string;
7316
+ slug: string;
7317
+ name: string;
7318
+ }>;
7319
+ libraryManifestDigest: string;
7320
+ createdAt: string;
7321
+ updatedAt: string;
7322
+ createdBy: {
7323
+ userId: UserId;
7324
+ via: "api" | "mcp" | "agent";
7325
+ };
7326
+ updatedBy: {
7327
+ userId: UserId;
7328
+ via: "api" | "mcp" | "agent";
6455
7329
  };
6456
- } | undefined;
6457
- proposalBinding?: string | undefined;
7330
+ };
7331
+ files: {
7332
+ [key: string]: string;
7333
+ };
6458
7334
  };
6459
7335
  };
6460
- export type TemplateDocumentsIssueAgentAdmissionResponse = TemplateDocumentsIssueAgentAdmissionResponses[keyof TemplateDocumentsIssueAgentAdmissionResponses];
6461
- export type TemplateDocumentsCompleteAgentConversationClearData = {
7336
+ export type TemplatesReconcileWorkspaceResponse = TemplatesReconcileWorkspaceResponses[keyof TemplatesReconcileWorkspaceResponses];
7337
+ export type TemplatesResolveWorkspaceConflictData = {
6462
7338
  body: {
6463
- conversationId: string;
7339
+ expectedRevision: string;
7340
+ path: string;
7341
+ resolution: "draft" | "main" | {
7342
+ content: string | null;
7343
+ };
7344
+ idempotencyKey: string;
6464
7345
  };
6465
7346
  path: {
6466
- templateId: TemplateId;
7347
+ id: TemplateId;
6467
7348
  };
6468
7349
  query?: never;
6469
- url: "/v1/template-documents/{templateId}/agent-conversation/clear-completion";
7350
+ url: "/v1/templates/{id}/workspace/conflicts";
6470
7351
  };
6471
- export type TemplateDocumentsCompleteAgentConversationClearErrors = {
7352
+ export type TemplatesResolveWorkspaceConflictErrors = {
6472
7353
  /**
6473
7354
  * UnauthorizedError
6474
7355
  */
@@ -6490,33 +7371,108 @@ export type TemplateDocumentsCompleteAgentConversationClearErrors = {
6490
7371
  */
6491
7372
  500: InternalError;
6492
7373
  };
6493
- export type TemplateDocumentsCompleteAgentConversationClearError = TemplateDocumentsCompleteAgentConversationClearErrors[keyof TemplateDocumentsCompleteAgentConversationClearErrors];
6494
- export type TemplateDocumentsCompleteAgentConversationClearResponses = {
7374
+ export type TemplatesResolveWorkspaceConflictError = TemplatesResolveWorkspaceConflictErrors[keyof TemplatesResolveWorkspaceConflictErrors];
7375
+ export type TemplatesResolveWorkspaceConflictResponses = {
6495
7376
  /**
6496
- * <No Content>
7377
+ * Success
6497
7378
  */
6498
- 200: unknown;
7379
+ 200: {
7380
+ workspace: {
7381
+ projectId: TemplateProjectId;
7382
+ organizationId: OrganizationId | null;
7383
+ ownerEpoch: number;
7384
+ repositoryName: string;
7385
+ defaultBranch: string;
7386
+ baseCommit: string;
7387
+ remoteHead: string;
7388
+ pendingRemoteHead: string | null;
7389
+ revision: string;
7390
+ overlay: {
7391
+ [key: string]: string | null;
7392
+ };
7393
+ assetChanges: Array<{
7394
+ path: string;
7395
+ status: "added" | "modified" | "deleted";
7396
+ }>;
7397
+ conflicts: Array<{
7398
+ path: string;
7399
+ base: string | null;
7400
+ draft: string | null;
7401
+ main: string | null;
7402
+ }>;
7403
+ provenance: {
7404
+ references: Array<{
7405
+ kind: string;
7406
+ digest: string;
7407
+ locator?: string | undefined;
7408
+ }>;
7409
+ };
7410
+ mounts: Array<{
7411
+ kind: "project";
7412
+ root: "/project";
7413
+ access: "read-write";
7414
+ } | {
7415
+ root: string;
7416
+ digest: string;
7417
+ fileCount: number;
7418
+ byteSize: number;
7419
+ kind: "started-from";
7420
+ access: "read-only";
7421
+ templateId: string;
7422
+ slug: string;
7423
+ name: string;
7424
+ } | {
7425
+ root: string;
7426
+ digest: string;
7427
+ fileCount: number;
7428
+ byteSize: number;
7429
+ kind: "resource";
7430
+ access: "read-only";
7431
+ resourceId: string;
7432
+ name: string;
7433
+ } | {
7434
+ root: string;
7435
+ digest: string;
7436
+ fileCount: number;
7437
+ byteSize: number;
7438
+ kind: "library-template";
7439
+ access: "read-only";
7440
+ templateId: string;
7441
+ slug: string;
7442
+ name: string;
7443
+ }>;
7444
+ libraryManifestDigest: string;
7445
+ createdAt: string;
7446
+ updatedAt: string;
7447
+ createdBy: {
7448
+ userId: UserId;
7449
+ via: "api" | "mcp" | "agent";
7450
+ };
7451
+ updatedBy: {
7452
+ userId: UserId;
7453
+ via: "api" | "mcp" | "agent";
7454
+ };
7455
+ };
7456
+ files: {
7457
+ [key: string]: string;
7458
+ };
7459
+ };
6499
7460
  };
6500
- export type TemplateDocumentsApplyAgentProposalData = {
7461
+ export type TemplatesResolveWorkspaceConflictResponse = TemplatesResolveWorkspaceConflictResponses[keyof TemplatesResolveWorkspaceConflictResponses];
7462
+ export type TemplatesSaveWorkspaceData = {
6501
7463
  body: {
6502
7464
  expectedRevision: string;
6503
- sourceDigest: string;
7465
+ expectedHead: string;
7466
+ message: string;
6504
7467
  idempotencyKey: string;
6505
- source: string;
6506
- references: Array<{
6507
- kind: string;
6508
- digest: string;
6509
- locator?: string | undefined;
6510
- }>;
6511
- proposalBinding?: string | undefined;
6512
7468
  };
6513
7469
  path: {
6514
- templateId: TemplateId;
7470
+ id: TemplateId;
6515
7471
  };
6516
7472
  query?: never;
6517
- url: "/v1/template-documents/{templateId}/agent-proposals/apply";
7473
+ url: "/v1/templates/{id}/workspace/save";
6518
7474
  };
6519
- export type TemplateDocumentsApplyAgentProposalErrors = {
7475
+ export type TemplatesSaveWorkspaceErrors = {
6520
7476
  /**
6521
7477
  * UnauthorizedError
6522
7478
  */
@@ -6533,52 +7489,86 @@ export type TemplateDocumentsApplyAgentProposalErrors = {
6533
7489
  * ConflictError
6534
7490
  */
6535
7491
  409: ConflictError;
6536
- /**
6537
- * ValidationError
6538
- */
6539
- 422: ValidationError;
6540
7492
  /**
6541
7493
  * InternalError
6542
7494
  */
6543
7495
  500: InternalError;
6544
7496
  };
6545
- export type TemplateDocumentsApplyAgentProposalError = TemplateDocumentsApplyAgentProposalErrors[keyof TemplateDocumentsApplyAgentProposalErrors];
6546
- export type TemplateDocumentsApplyAgentProposalResponses = {
7497
+ export type TemplatesSaveWorkspaceError = TemplatesSaveWorkspaceErrors[keyof TemplatesSaveWorkspaceErrors];
7498
+ export type TemplatesSaveWorkspaceResponses = {
6547
7499
  /**
6548
7500
  * Success
6549
7501
  */
6550
7502
  200: {
6551
- templateId: TemplateId;
6552
- organizationId: OrganizationId;
6553
- channel: "email";
6554
- source: string;
7503
+ commit: string;
7504
+ parentCommit: string;
7505
+ tree: string;
6555
7506
  revision: string;
7507
+ changedPaths: Array<string>;
6556
7508
  sourceDigest: string;
6557
- createdAt: string;
6558
- updatedAt: string;
6559
- createdBy: {
6560
- userId: UserId;
6561
- via: "api" | "mcp" | "agent";
6562
- };
6563
- updatedBy: {
6564
- userId: UserId;
6565
- via: "api" | "mcp" | "agent";
6566
- };
7509
+ buildDigest: string;
7510
+ warnings: Array<{
7511
+ code: string;
7512
+ severity: "error" | "warning" | "info";
7513
+ message: string;
7514
+ origins: Array<{
7515
+ fileName: string;
7516
+ lineNumber: number;
7517
+ columnNumber: number;
7518
+ }>;
7519
+ clients?: Array<string> | null | undefined;
7520
+ notes?: string | null | undefined;
7521
+ provenance?: string | null | undefined;
7522
+ fixtures?: Array<string> | null | undefined;
7523
+ occurrences?: Array<Array<{
7524
+ fileName: string;
7525
+ lineNumber: number;
7526
+ columnNumber: number;
7527
+ }>> | null | undefined;
7528
+ compatibility?: {
7529
+ assessment: "risk" | "degradation" | "unverified" | "not-applicable";
7530
+ title: string;
7531
+ } | null | undefined;
7532
+ }>;
7533
+ incompatibilities: Array<{
7534
+ code: string;
7535
+ severity: "error" | "warning" | "info";
7536
+ message: string;
7537
+ origins: Array<{
7538
+ fileName: string;
7539
+ lineNumber: number;
7540
+ columnNumber: number;
7541
+ }>;
7542
+ clients?: Array<string> | null | undefined;
7543
+ notes?: string | null | undefined;
7544
+ provenance?: string | null | undefined;
7545
+ fixtures?: Array<string> | null | undefined;
7546
+ occurrences?: Array<Array<{
7547
+ fileName: string;
7548
+ lineNumber: number;
7549
+ columnNumber: number;
7550
+ }>> | null | undefined;
7551
+ compatibility?: {
7552
+ assessment: "risk" | "degradation" | "unverified" | "not-applicable";
7553
+ title: string;
7554
+ } | null | undefined;
7555
+ }>;
6567
7556
  };
6568
7557
  };
6569
- export type TemplateDocumentsApplyAgentProposalResponse = TemplateDocumentsApplyAgentProposalResponses[keyof TemplateDocumentsApplyAgentProposalResponses];
6570
- export type TemplateDocumentsReplaceData = {
7558
+ export type TemplatesSaveWorkspaceResponse = TemplatesSaveWorkspaceResponses[keyof TemplatesSaveWorkspaceResponses];
7559
+ export type TemplatesRestoreWorkspaceData = {
6571
7560
  body: {
6572
7561
  expectedRevision: string;
6573
- source: string;
7562
+ commit: string;
7563
+ idempotencyKey: string;
6574
7564
  };
6575
7565
  path: {
6576
- templateId: TemplateId;
7566
+ id: TemplateId;
6577
7567
  };
6578
7568
  query?: never;
6579
- url: "/v1/template-documents/{templateId}/source";
7569
+ url: "/v1/templates/{id}/workspace/restore";
6580
7570
  };
6581
- export type TemplateDocumentsReplaceErrors = {
7571
+ export type TemplatesRestoreWorkspaceErrors = {
6582
7572
  /**
6583
7573
  * UnauthorizedError
6584
7574
  */
@@ -6595,51 +7585,170 @@ export type TemplateDocumentsReplaceErrors = {
6595
7585
  * ConflictError
6596
7586
  */
6597
7587
  409: ConflictError;
6598
- /**
6599
- * ValidationError
6600
- */
6601
- 422: ValidationError;
6602
7588
  /**
6603
7589
  * InternalError
6604
7590
  */
6605
7591
  500: InternalError;
6606
7592
  };
6607
- export type TemplateDocumentsReplaceError = TemplateDocumentsReplaceErrors[keyof TemplateDocumentsReplaceErrors];
6608
- export type TemplateDocumentsReplaceResponses = {
7593
+ export type TemplatesRestoreWorkspaceError = TemplatesRestoreWorkspaceErrors[keyof TemplatesRestoreWorkspaceErrors];
7594
+ export type TemplatesRestoreWorkspaceResponses = {
6609
7595
  /**
6610
7596
  * Success
6611
7597
  */
6612
7598
  200: {
6613
- templateId: TemplateId;
6614
- organizationId: OrganizationId;
6615
- channel: "email";
6616
- source: string;
6617
- revision: string;
6618
- sourceDigest: string;
6619
- createdAt: string;
6620
- updatedAt: string;
6621
- createdBy: {
6622
- userId: UserId;
6623
- via: "api" | "mcp" | "agent";
7599
+ view: {
7600
+ workspace: {
7601
+ projectId: TemplateProjectId;
7602
+ organizationId: OrganizationId | null;
7603
+ ownerEpoch: number;
7604
+ repositoryName: string;
7605
+ defaultBranch: string;
7606
+ baseCommit: string;
7607
+ remoteHead: string;
7608
+ pendingRemoteHead: string | null;
7609
+ revision: string;
7610
+ overlay: {
7611
+ [key: string]: string | null;
7612
+ };
7613
+ assetChanges: Array<{
7614
+ path: string;
7615
+ status: "added" | "modified" | "deleted";
7616
+ }>;
7617
+ conflicts: Array<{
7618
+ path: string;
7619
+ base: string | null;
7620
+ draft: string | null;
7621
+ main: string | null;
7622
+ }>;
7623
+ provenance: {
7624
+ references: Array<{
7625
+ kind: string;
7626
+ digest: string;
7627
+ locator?: string | undefined;
7628
+ }>;
7629
+ };
7630
+ mounts: Array<{
7631
+ kind: "project";
7632
+ root: "/project";
7633
+ access: "read-write";
7634
+ } | {
7635
+ root: string;
7636
+ digest: string;
7637
+ fileCount: number;
7638
+ byteSize: number;
7639
+ kind: "started-from";
7640
+ access: "read-only";
7641
+ templateId: string;
7642
+ slug: string;
7643
+ name: string;
7644
+ } | {
7645
+ root: string;
7646
+ digest: string;
7647
+ fileCount: number;
7648
+ byteSize: number;
7649
+ kind: "resource";
7650
+ access: "read-only";
7651
+ resourceId: string;
7652
+ name: string;
7653
+ } | {
7654
+ root: string;
7655
+ digest: string;
7656
+ fileCount: number;
7657
+ byteSize: number;
7658
+ kind: "library-template";
7659
+ access: "read-only";
7660
+ templateId: string;
7661
+ slug: string;
7662
+ name: string;
7663
+ }>;
7664
+ libraryManifestDigest: string;
7665
+ createdAt: string;
7666
+ updatedAt: string;
7667
+ createdBy: {
7668
+ userId: UserId;
7669
+ via: "api" | "mcp" | "agent";
7670
+ };
7671
+ updatedBy: {
7672
+ userId: UserId;
7673
+ via: "api" | "mcp" | "agent";
7674
+ };
7675
+ };
7676
+ files: {
7677
+ [key: string]: string;
7678
+ };
6624
7679
  };
6625
- updatedBy: {
6626
- userId: UserId;
6627
- via: "api" | "mcp" | "agent";
7680
+ source: {
7681
+ digest: string;
7682
+ content: string;
6628
7683
  };
6629
7684
  };
6630
7685
  };
6631
- export type TemplateDocumentsReplaceResponse = TemplateDocumentsReplaceResponses[keyof TemplateDocumentsReplaceResponses];
6632
- export type TemplateDocumentsSaveData = {
7686
+ export type TemplatesRestoreWorkspaceResponse = TemplatesRestoreWorkspaceResponses[keyof TemplatesRestoreWorkspaceResponses];
7687
+ export type TemplatesWorkspaceHistoryData = {
7688
+ body?: never;
7689
+ path: {
7690
+ id: TemplateId;
7691
+ };
7692
+ query?: {
7693
+ limit?: string | null | undefined;
7694
+ };
7695
+ url: "/v1/templates/{id}/workspace/history";
7696
+ };
7697
+ export type TemplatesWorkspaceHistoryErrors = {
7698
+ /**
7699
+ * UnauthorizedError
7700
+ */
7701
+ 401: UnauthorizedError;
7702
+ /**
7703
+ * ForbiddenError
7704
+ */
7705
+ 403: ForbiddenError;
7706
+ /**
7707
+ * ResourceNotFoundError
7708
+ */
7709
+ 404: ResourceNotFoundError;
7710
+ /**
7711
+ * ConflictError
7712
+ */
7713
+ 409: ConflictError;
7714
+ /**
7715
+ * InternalError
7716
+ */
7717
+ 500: InternalError;
7718
+ };
7719
+ export type TemplatesWorkspaceHistoryError = TemplatesWorkspaceHistoryErrors[keyof TemplatesWorkspaceHistoryErrors];
7720
+ export type TemplatesWorkspaceHistoryResponses = {
7721
+ /**
7722
+ * Success
7723
+ */
7724
+ 200: {
7725
+ projectId: TemplateProjectId;
7726
+ head: string;
7727
+ commits: Array<{
7728
+ commit: string;
7729
+ tree: string;
7730
+ parentCommit: string | null;
7731
+ message: string;
7732
+ committedAt: string;
7733
+ }>;
7734
+ publication: {
7735
+ id: TemplatePublicationId;
7736
+ commit: string;
7737
+ } | null;
7738
+ };
7739
+ };
7740
+ export type TemplatesWorkspaceHistoryResponse = TemplatesWorkspaceHistoryResponses[keyof TemplatesWorkspaceHistoryResponses];
7741
+ export type TemplatesCheckWorkspaceData = {
6633
7742
  body: {
6634
- revision: string;
7743
+ expectedRevision: string;
6635
7744
  };
6636
7745
  path: {
6637
- templateId: TemplateId;
7746
+ id: TemplateId;
6638
7747
  };
6639
7748
  query?: never;
6640
- url: "/v1/template-documents/{templateId}/save";
7749
+ url: "/v1/templates/{id}/workspace/check";
6641
7750
  };
6642
- export type TemplateDocumentsSaveErrors = {
7751
+ export type TemplatesCheckWorkspaceErrors = {
6643
7752
  /**
6644
7753
  * UnauthorizedError
6645
7754
  */
@@ -6656,45 +7765,97 @@ export type TemplateDocumentsSaveErrors = {
6656
7765
  * ConflictError
6657
7766
  */
6658
7767
  409: ConflictError;
6659
- /**
6660
- * ValidationError
6661
- */
6662
- 422: ValidationError;
6663
7768
  /**
6664
7769
  * InternalError
6665
7770
  */
6666
7771
  500: InternalError;
6667
7772
  };
6668
- export type TemplateDocumentsSaveError = TemplateDocumentsSaveErrors[keyof TemplateDocumentsSaveErrors];
6669
- export type TemplateDocumentsSaveResponses = {
7773
+ export type TemplatesCheckWorkspaceError = TemplatesCheckWorkspaceErrors[keyof TemplatesCheckWorkspaceErrors];
7774
+ export type TemplatesCheckWorkspaceResponses = {
6670
7775
  /**
6671
7776
  * Success
6672
7777
  */
6673
7778
  200: {
6674
- id: string;
6675
- templateId: TemplateId;
6676
- documentRevision: string;
6677
- sourceDigest: string;
6678
- compilerVersion: string;
6679
- createdAt: string;
6680
- versionId: string;
7779
+ projectId: TemplateProjectId;
7780
+ revision: string;
7781
+ entryPath: string;
7782
+ declaration: {
7783
+ codeDigest: string;
7784
+ templateId: string;
7785
+ input: {
7786
+ schema: {
7787
+ [key: string]: JsonValue;
7788
+ };
7789
+ schemaDigest: string;
7790
+ contractDigest: string;
7791
+ };
7792
+ runtime: {
7793
+ now?: number | undefined;
7794
+ randomSeed?: number | undefined;
7795
+ };
7796
+ fixtures: Array<string>;
7797
+ } | null;
7798
+ diagnostics: Array<{
7799
+ code: string;
7800
+ severity: "error" | "warning" | "info";
7801
+ message: string;
7802
+ origins: Array<{
7803
+ fileName: string;
7804
+ lineNumber: number;
7805
+ columnNumber: number;
7806
+ }>;
7807
+ clients?: Array<string> | null | undefined;
7808
+ notes?: string | null | undefined;
7809
+ provenance?: string | null | undefined;
7810
+ fixtures?: Array<string> | null | undefined;
7811
+ occurrences?: Array<Array<{
7812
+ fileName: string;
7813
+ lineNumber: number;
7814
+ columnNumber: number;
7815
+ }>> | null | undefined;
7816
+ compatibility?: {
7817
+ assessment: "risk" | "degradation" | "unverified" | "not-applicable";
7818
+ title: string;
7819
+ } | null | undefined;
7820
+ }>;
7821
+ incompatibilities: Array<{
7822
+ code: string;
7823
+ severity: "error" | "warning" | "info";
7824
+ message: string;
7825
+ origins: Array<{
7826
+ fileName: string;
7827
+ lineNumber: number;
7828
+ columnNumber: number;
7829
+ }>;
7830
+ clients?: Array<string> | null | undefined;
7831
+ notes?: string | null | undefined;
7832
+ provenance?: string | null | undefined;
7833
+ fixtures?: Array<string> | null | undefined;
7834
+ occurrences?: Array<Array<{
7835
+ fileName: string;
7836
+ lineNumber: number;
7837
+ columnNumber: number;
7838
+ }>> | null | undefined;
7839
+ compatibility?: {
7840
+ assessment: "risk" | "degradation" | "unverified" | "not-applicable";
7841
+ title: string;
7842
+ } | null | undefined;
7843
+ }>;
6681
7844
  };
6682
7845
  };
6683
- export type TemplateDocumentsSaveResponse = TemplateDocumentsSaveResponses[keyof TemplateDocumentsSaveResponses];
6684
- export type TemplateDocumentsRenderData = {
7846
+ export type TemplatesCheckWorkspaceResponse = TemplatesCheckWorkspaceResponses[keyof TemplatesCheckWorkspaceResponses];
7847
+ export type TemplatesRenderWorkspaceFixtureData = {
6685
7848
  body: {
6686
- revision: string;
6687
- variables?: {
6688
- [key: string]: JsonValue;
6689
- } | null | undefined;
7849
+ expectedRevision: string;
7850
+ fixture: string;
6690
7851
  };
6691
7852
  path: {
6692
- templateId: TemplateId;
7853
+ id: TemplateId;
6693
7854
  };
6694
7855
  query?: never;
6695
- url: "/v1/template-documents/{templateId}/render";
7856
+ url: "/v1/templates/{id}/workspace/fixtures";
6696
7857
  };
6697
- export type TemplateDocumentsRenderErrors = {
7858
+ export type TemplatesRenderWorkspaceFixtureErrors = {
6698
7859
  /**
6699
7860
  * UnauthorizedError
6700
7861
  */
@@ -6711,43 +7872,121 @@ export type TemplateDocumentsRenderErrors = {
6711
7872
  * ConflictError
6712
7873
  */
6713
7874
  409: ConflictError;
6714
- /**
6715
- * ValidationError
6716
- */
6717
- 422: ValidationError;
6718
7875
  /**
6719
7876
  * InternalError
6720
7877
  */
6721
7878
  500: InternalError;
6722
7879
  };
6723
- export type TemplateDocumentsRenderError = TemplateDocumentsRenderErrors[keyof TemplateDocumentsRenderErrors];
6724
- export type TemplateDocumentsRenderResponses = {
7880
+ export type TemplatesRenderWorkspaceFixtureError = TemplatesRenderWorkspaceFixtureErrors[keyof TemplatesRenderWorkspaceFixtureErrors];
7881
+ export type TemplatesRenderWorkspaceFixtureResponses = {
6725
7882
  /**
6726
7883
  * Success
6727
7884
  */
6728
7885
  200: {
6729
- channel: "email";
6730
- subject?: string | null | undefined;
6731
- html?: string | null | undefined;
6732
- text: string;
6733
- missingVariables: Array<string>;
7886
+ projectId: TemplateProjectId;
7887
+ revision: string;
7888
+ entryPath: string;
7889
+ declaration: {
7890
+ codeDigest: string;
7891
+ templateId: string;
7892
+ input: {
7893
+ schema: {
7894
+ [key: string]: JsonValue;
7895
+ };
7896
+ schemaDigest: string;
7897
+ contractDigest: string;
7898
+ };
7899
+ runtime: {
7900
+ now?: number | undefined;
7901
+ randomSeed?: number | undefined;
7902
+ };
7903
+ fixtures: Array<string>;
7904
+ } | null;
7905
+ diagnostics: Array<{
7906
+ code: string;
7907
+ severity: "error" | "warning" | "info";
7908
+ message: string;
7909
+ origins: Array<{
7910
+ fileName: string;
7911
+ lineNumber: number;
7912
+ columnNumber: number;
7913
+ }>;
7914
+ clients?: Array<string> | null | undefined;
7915
+ notes?: string | null | undefined;
7916
+ provenance?: string | null | undefined;
7917
+ fixtures?: Array<string> | null | undefined;
7918
+ occurrences?: Array<Array<{
7919
+ fileName: string;
7920
+ lineNumber: number;
7921
+ columnNumber: number;
7922
+ }>> | null | undefined;
7923
+ compatibility?: {
7924
+ assessment: "risk" | "degradation" | "unverified" | "not-applicable";
7925
+ title: string;
7926
+ } | null | undefined;
7927
+ }>;
7928
+ incompatibilities: Array<{
7929
+ code: string;
7930
+ severity: "error" | "warning" | "info";
7931
+ message: string;
7932
+ origins: Array<{
7933
+ fileName: string;
7934
+ lineNumber: number;
7935
+ columnNumber: number;
7936
+ }>;
7937
+ clients?: Array<string> | null | undefined;
7938
+ notes?: string | null | undefined;
7939
+ provenance?: string | null | undefined;
7940
+ fixtures?: Array<string> | null | undefined;
7941
+ occurrences?: Array<Array<{
7942
+ fileName: string;
7943
+ lineNumber: number;
7944
+ columnNumber: number;
7945
+ }>> | null | undefined;
7946
+ compatibility?: {
7947
+ assessment: "risk" | "degradation" | "unverified" | "not-applicable";
7948
+ title: string;
7949
+ } | null | undefined;
7950
+ }>;
7951
+ fixture: string;
7952
+ rendered: {
7953
+ subject: string;
7954
+ preheader?: string | undefined;
7955
+ html: string;
7956
+ text: string;
7957
+ selections: Array<{
7958
+ instancePath: string;
7959
+ tag: string;
7960
+ origins: Array<{
7961
+ fileName: string;
7962
+ lineNumber: number;
7963
+ columnNumber: number;
7964
+ }>;
7965
+ authored: boolean;
7966
+ occurrence: number;
7967
+ occurrences: number;
7968
+ parentPath?: string | undefined;
7969
+ start: number;
7970
+ end: number;
7971
+ }>;
7972
+ } | null;
6734
7973
  };
6735
7974
  };
6736
- export type TemplateDocumentsRenderResponse = TemplateDocumentsRenderResponses[keyof TemplateDocumentsRenderResponses];
6737
- export type TemplateDocumentsSpamCheckData = {
7975
+ export type TemplatesRenderWorkspaceFixtureResponse = TemplatesRenderWorkspaceFixtureResponses[keyof TemplatesRenderWorkspaceFixtureResponses];
7976
+ export type TemplatesPublishData = {
6738
7977
  body: {
6739
- revision: string;
6740
- variables?: {
6741
- [key: string]: JsonValue;
6742
- } | null | undefined;
7978
+ projectId: TemplateProjectId;
7979
+ commitSha: string;
7980
+ entryPath: string;
7981
+ expectedWorkspaceRevision: string;
6743
7982
  };
6744
7983
  path: {
6745
- templateId: TemplateId;
7984
+ id: TemplateId;
6746
7985
  };
6747
7986
  query?: never;
6748
- url: "/v1/template-documents/{templateId}/spam-check";
7987
+ url: "/v1/templates/{id}/publications";
6749
7988
  };
6750
- export type TemplateDocumentsSpamCheckErrors = {
7989
+ export type TemplatesPublishErrors = {
6751
7990
  /**
6752
7991
  * UnauthorizedError
6753
7992
  */
@@ -6773,47 +8012,140 @@ export type TemplateDocumentsSpamCheckErrors = {
6773
8012
  */
6774
8013
  500: InternalError;
6775
8014
  };
6776
- export type TemplateDocumentsSpamCheckError = TemplateDocumentsSpamCheckErrors[keyof TemplateDocumentsSpamCheckErrors];
6777
- export type TemplateDocumentsSpamCheckResponses = {
8015
+ export type TemplatesPublishError = TemplatesPublishErrors[keyof TemplatesPublishErrors];
8016
+ export type TemplatesPublishResponses = {
6778
8017
  /**
6779
8018
  * Success
6780
8019
  */
6781
- 200: {
6782
- score: number;
6783
- severity: "low" | "medium" | "high";
6784
- issues: Array<{
6785
- rule: string;
6786
- description: string;
6787
- severity: "low" | "medium" | "high";
6788
- score: number;
8020
+ 201: {
8021
+ id: TemplatePublicationId;
8022
+ organizationId: OrganizationId;
8023
+ projectId: TemplateProjectId;
8024
+ templateId: TemplateId;
8025
+ inputContractId: TemplateInputContractId;
8026
+ commitSha: string;
8027
+ treeSha: string;
8028
+ entryPath: string;
8029
+ buildIdentity: string;
8030
+ manifest: {
8031
+ templateKey: string;
8032
+ executable: {
8033
+ codeDigest: string;
8034
+ bytes: number;
8035
+ };
8036
+ input: {
8037
+ schemaDigest: string;
8038
+ contractDigest: string;
8039
+ };
8040
+ environment: {
8041
+ locale: string;
8042
+ timeZone: "UTC";
8043
+ now?: number | undefined;
8044
+ randomSeed?: number | undefined;
8045
+ compiler: string;
8046
+ runtime: string;
8047
+ checker: string;
8048
+ lockKind: "bun" | "npm";
8049
+ lockDigest: string;
8050
+ digest: string;
8051
+ };
8052
+ assets: {
8053
+ base: string;
8054
+ entries: Array<{
8055
+ path: string;
8056
+ fileName: string;
8057
+ digest: string;
8058
+ bytes: number;
8059
+ contentType: string;
8060
+ url: string;
8061
+ }>;
8062
+ };
8063
+ source: {
8064
+ commitSha: string;
8065
+ treeSha: string;
8066
+ entryPath: string;
8067
+ treeDigest: string;
8068
+ };
8069
+ };
8070
+ executable: {
8071
+ key: string;
8072
+ digest: string;
8073
+ };
8074
+ assets: Array<{
8075
+ path: string;
8076
+ fileName: string;
8077
+ digest: string;
8078
+ bytes: number;
8079
+ contentType: string;
8080
+ url: string;
8081
+ }>;
8082
+ warnings: Array<{
8083
+ code: string;
8084
+ severity: "error" | "warning" | "info";
8085
+ message: string;
8086
+ origins: Array<{
8087
+ fileName: string;
8088
+ lineNumber: number;
8089
+ columnNumber: number;
8090
+ }>;
8091
+ clients?: Array<string> | null | undefined;
8092
+ notes?: string | null | undefined;
8093
+ provenance?: string | null | undefined;
8094
+ fixtures?: Array<string> | null | undefined;
8095
+ occurrences?: Array<Array<{
8096
+ fileName: string;
8097
+ lineNumber: number;
8098
+ columnNumber: number;
8099
+ }>> | null | undefined;
8100
+ compatibility?: {
8101
+ assessment: "risk" | "degradation" | "unverified" | "not-applicable";
8102
+ title: string;
8103
+ } | null | undefined;
8104
+ }>;
8105
+ incompatibilities: Array<{
8106
+ code: string;
8107
+ severity: "error" | "warning" | "info";
8108
+ message: string;
8109
+ origins: Array<{
8110
+ fileName: string;
8111
+ lineNumber: number;
8112
+ columnNumber: number;
8113
+ }>;
8114
+ clients?: Array<string> | null | undefined;
8115
+ notes?: string | null | undefined;
8116
+ provenance?: string | null | undefined;
8117
+ fixtures?: Array<string> | null | undefined;
8118
+ occurrences?: Array<Array<{
8119
+ fileName: string;
8120
+ lineNumber: number;
8121
+ columnNumber: number;
8122
+ }>> | null | undefined;
8123
+ compatibility?: {
8124
+ assessment: "risk" | "degradation" | "unverified" | "not-applicable";
8125
+ title: string;
8126
+ } | null | undefined;
6789
8127
  }>;
6790
- recommendations: Array<string>;
8128
+ status: string;
8129
+ publishedAt: string;
8130
+ publishedBy: string | null;
8131
+ createdAt: string;
6791
8132
  };
6792
8133
  };
6793
- export type TemplateDocumentsSpamCheckResponse = TemplateDocumentsSpamCheckResponses[keyof TemplateDocumentsSpamCheckResponses];
6794
- export type TemplateDocumentsTestSendData = {
6795
- body: {
6796
- revision: string;
6797
- to: string;
6798
- variables?: {
6799
- [key: string]: JsonValue;
6800
- } | null | undefined;
6801
- };
8134
+ export type TemplatesPublishResponse = TemplatesPublishResponses[keyof TemplatesPublishResponses];
8135
+ export type TemplatesGetPublicationData = {
8136
+ body?: never;
6802
8137
  path: {
6803
- templateId: TemplateId;
8138
+ id: TemplateId;
8139
+ publicationId: TemplatePublicationId;
6804
8140
  };
6805
8141
  query?: never;
6806
- url: "/v1/template-documents/{templateId}/send-test";
8142
+ url: "/v1/templates/{id}/publications/{publicationId}";
6807
8143
  };
6808
- export type TemplateDocumentsTestSendErrors = {
8144
+ export type TemplatesGetPublicationErrors = {
6809
8145
  /**
6810
8146
  * UnauthorizedError
6811
8147
  */
6812
8148
  401: UnauthorizedError;
6813
- /**
6814
- * PaymentRequiredError
6815
- */
6816
- 402: PaymentRequiredError;
6817
8149
  /**
6818
8150
  * ForbiddenError
6819
8151
  */
@@ -6823,125 +8155,228 @@ export type TemplateDocumentsTestSendErrors = {
6823
8155
  */
6824
8156
  404: ResourceNotFoundError;
6825
8157
  /**
6826
- * ConflictError
6827
- */
6828
- 409: ConflictError;
6829
- /**
6830
- * ValidationError
6831
- */
6832
- 422: ValidationError;
6833
- /**
6834
- * RateLimitedError
6835
- */
6836
- 429: RateLimitedError;
6837
- /**
6838
- * InternalError | WebhookEnqueueError
6839
- */
6840
- 500: InternalError | WebhookEnqueueError;
6841
- /**
6842
- * BillingProviderError
8158
+ * InternalError
6843
8159
  */
6844
- 502: BillingProviderError;
8160
+ 500: InternalError;
6845
8161
  };
6846
- export type TemplateDocumentsTestSendError = TemplateDocumentsTestSendErrors[keyof TemplateDocumentsTestSendErrors];
6847
- export type TemplateDocumentsTestSendResponses = {
8162
+ export type TemplatesGetPublicationError = TemplatesGetPublicationErrors[keyof TemplatesGetPublicationErrors];
8163
+ export type TemplatesGetPublicationResponses = {
6848
8164
  /**
6849
8165
  * Success
6850
8166
  */
6851
8167
  200: {
6852
- messageId: string;
6853
- status: string;
6854
- rendered: {
6855
- channel: "email";
6856
- subject?: string | null | undefined;
6857
- html?: string | null | undefined;
6858
- text: string;
6859
- missingVariables: Array<string>;
8168
+ id: TemplatePublicationId;
8169
+ organizationId: OrganizationId;
8170
+ projectId: TemplateProjectId;
8171
+ templateId: TemplateId;
8172
+ inputContractId: TemplateInputContractId;
8173
+ commitSha: string;
8174
+ treeSha: string;
8175
+ entryPath: string;
8176
+ buildIdentity: string;
8177
+ manifest: {
8178
+ templateKey: string;
8179
+ executable: {
8180
+ codeDigest: string;
8181
+ bytes: number;
8182
+ };
8183
+ input: {
8184
+ schemaDigest: string;
8185
+ contractDigest: string;
8186
+ };
8187
+ environment: {
8188
+ locale: string;
8189
+ timeZone: "UTC";
8190
+ now?: number | undefined;
8191
+ randomSeed?: number | undefined;
8192
+ compiler: string;
8193
+ runtime: string;
8194
+ checker: string;
8195
+ lockKind: "bun" | "npm";
8196
+ lockDigest: string;
8197
+ digest: string;
8198
+ };
8199
+ assets: {
8200
+ base: string;
8201
+ entries: Array<{
8202
+ path: string;
8203
+ fileName: string;
8204
+ digest: string;
8205
+ bytes: number;
8206
+ contentType: string;
8207
+ url: string;
8208
+ }>;
8209
+ };
8210
+ source: {
8211
+ commitSha: string;
8212
+ treeSha: string;
8213
+ entryPath: string;
8214
+ treeDigest: string;
8215
+ };
6860
8216
  };
6861
- };
6862
- };
6863
- export type TemplateDocumentsTestSendResponse = TemplateDocumentsTestSendResponses[keyof TemplateDocumentsTestSendResponses];
6864
- export type TemplateDocumentsSendData = {
6865
- body: {
6866
- revision: string;
6867
- to: Array<{
6868
- address: string;
6869
- name?: string | null | undefined;
8217
+ executable: {
8218
+ key: string;
8219
+ digest: string;
8220
+ };
8221
+ assets: Array<{
8222
+ path: string;
8223
+ fileName: string;
8224
+ digest: string;
8225
+ bytes: number;
8226
+ contentType: string;
8227
+ url: string;
6870
8228
  }>;
6871
- variables?: {
6872
- [key: string]: JsonValue;
6873
- } | null | undefined;
6874
- schedule?: string | null | null | undefined;
8229
+ warnings: Array<{
8230
+ code: string;
8231
+ severity: "error" | "warning" | "info";
8232
+ message: string;
8233
+ origins: Array<{
8234
+ fileName: string;
8235
+ lineNumber: number;
8236
+ columnNumber: number;
8237
+ }>;
8238
+ clients?: Array<string> | null | undefined;
8239
+ notes?: string | null | undefined;
8240
+ provenance?: string | null | undefined;
8241
+ fixtures?: Array<string> | null | undefined;
8242
+ occurrences?: Array<Array<{
8243
+ fileName: string;
8244
+ lineNumber: number;
8245
+ columnNumber: number;
8246
+ }>> | null | undefined;
8247
+ compatibility?: {
8248
+ assessment: "risk" | "degradation" | "unverified" | "not-applicable";
8249
+ title: string;
8250
+ } | null | undefined;
8251
+ }>;
8252
+ incompatibilities: Array<{
8253
+ code: string;
8254
+ severity: "error" | "warning" | "info";
8255
+ message: string;
8256
+ origins: Array<{
8257
+ fileName: string;
8258
+ lineNumber: number;
8259
+ columnNumber: number;
8260
+ }>;
8261
+ clients?: Array<string> | null | undefined;
8262
+ notes?: string | null | undefined;
8263
+ provenance?: string | null | undefined;
8264
+ fixtures?: Array<string> | null | undefined;
8265
+ occurrences?: Array<Array<{
8266
+ fileName: string;
8267
+ lineNumber: number;
8268
+ columnNumber: number;
8269
+ }>> | null | undefined;
8270
+ compatibility?: {
8271
+ assessment: "risk" | "degradation" | "unverified" | "not-applicable";
8272
+ title: string;
8273
+ } | null | undefined;
8274
+ }>;
8275
+ status: string;
8276
+ publishedAt: string;
8277
+ publishedBy: string | null;
8278
+ createdAt: string;
6875
8279
  };
8280
+ };
8281
+ export type TemplatesGetPublicationResponse = TemplatesGetPublicationResponses[keyof TemplatesGetPublicationResponses];
8282
+ export type TemplatesListInputContractsData = {
8283
+ body?: never;
6876
8284
  path: {
6877
- templateId: TemplateId;
8285
+ id: TemplateId;
6878
8286
  };
6879
8287
  query?: never;
6880
- url: "/v1/template-documents/{templateId}/send";
8288
+ url: "/v1/templates/{id}/input-contracts";
6881
8289
  };
6882
- export type TemplateDocumentsSendErrors = {
8290
+ export type TemplatesListInputContractsErrors = {
6883
8291
  /**
6884
8292
  * UnauthorizedError
6885
8293
  */
6886
8294
  401: UnauthorizedError;
6887
8295
  /**
6888
- * PaymentRequiredError
6889
- */
6890
- 402: PaymentRequiredError;
6891
- /**
6892
- * ForbiddenError | FlagDisabledError
8296
+ * ForbiddenError
6893
8297
  */
6894
- 403: FlagDisabledError | ForbiddenError;
8298
+ 403: ForbiddenError;
6895
8299
  /**
6896
8300
  * ResourceNotFoundError
6897
8301
  */
6898
8302
  404: ResourceNotFoundError;
6899
8303
  /**
6900
- * ConflictError
8304
+ * InternalError
6901
8305
  */
6902
- 409: ConflictError;
8306
+ 500: InternalError;
8307
+ };
8308
+ export type TemplatesListInputContractsError = TemplatesListInputContractsErrors[keyof TemplatesListInputContractsErrors];
8309
+ export type TemplatesListInputContractsResponses = {
6903
8310
  /**
6904
- * ValidationError
8311
+ * Success
6905
8312
  */
6906
- 422: ValidationError;
8313
+ 200: Array<{
8314
+ id: TemplateInputContractId;
8315
+ organizationId: OrganizationId;
8316
+ templateId: TemplateId;
8317
+ version: number;
8318
+ validationDigest: string;
8319
+ schema: {
8320
+ [key: string]: JsonValue;
8321
+ };
8322
+ createdAt: string;
8323
+ }>;
8324
+ };
8325
+ export type TemplatesListInputContractsResponse = TemplatesListInputContractsResponses[keyof TemplatesListInputContractsResponses];
8326
+ export type TemplatesGetInputContractData = {
8327
+ body?: never;
8328
+ path: {
8329
+ id: TemplateId;
8330
+ inputContractId: TemplateInputContractId;
8331
+ };
8332
+ query?: never;
8333
+ url: "/v1/templates/{id}/input-contracts/{inputContractId}";
8334
+ };
8335
+ export type TemplatesGetInputContractErrors = {
6907
8336
  /**
6908
- * RateLimitedError
8337
+ * UnauthorizedError
6909
8338
  */
6910
- 429: RateLimitedError;
8339
+ 401: UnauthorizedError;
6911
8340
  /**
6912
- * InternalError | WebhookEnqueueError
8341
+ * ForbiddenError
6913
8342
  */
6914
- 500: InternalError | WebhookEnqueueError;
8343
+ 403: ForbiddenError;
8344
+ /**
8345
+ * ResourceNotFoundError
8346
+ */
8347
+ 404: ResourceNotFoundError;
6915
8348
  /**
6916
- * ExternalServiceError | BillingProviderError
8349
+ * InternalError
6917
8350
  */
6918
- 502: ExternalServiceError | BillingProviderError;
8351
+ 500: InternalError;
6919
8352
  };
6920
- export type TemplateDocumentsSendError = TemplateDocumentsSendErrors[keyof TemplateDocumentsSendErrors];
6921
- export type TemplateDocumentsSendResponses = {
8353
+ export type TemplatesGetInputContractError = TemplatesGetInputContractErrors[keyof TemplatesGetInputContractErrors];
8354
+ export type TemplatesGetInputContractResponses = {
6922
8355
  /**
6923
8356
  * Success
6924
8357
  */
6925
8358
  200: {
6926
- kind: "sent";
6927
- messageId: string;
6928
- acceptedAt: string;
6929
- } | {
6930
- kind: "scheduled";
6931
- scheduledMessageId: string;
6932
- scheduledFor: string;
8359
+ id: TemplateInputContractId;
8360
+ organizationId: OrganizationId;
8361
+ templateId: TemplateId;
8362
+ version: number;
8363
+ validationDigest: string;
8364
+ schema: {
8365
+ [key: string]: JsonValue;
8366
+ };
8367
+ createdAt: string;
6933
8368
  };
6934
8369
  };
6935
- export type TemplateDocumentsSendResponse = TemplateDocumentsSendResponses[keyof TemplateDocumentsSendResponses];
6936
- export type TemplateDocumentsVersionsData = {
8370
+ export type TemplatesGetInputContractResponse = TemplatesGetInputContractResponses[keyof TemplatesGetInputContractResponses];
8371
+ export type TemplatesGetGitRepositoryData = {
6937
8372
  body?: never;
6938
8373
  path: {
6939
- templateId: TemplateId;
8374
+ id: TemplateId;
6940
8375
  };
6941
8376
  query?: never;
6942
- url: "/v1/template-documents/{templateId}/versions";
8377
+ url: "/v1/templates/{id}/repository";
6943
8378
  };
6944
- export type TemplateDocumentsVersionsErrors = {
8379
+ export type TemplatesGetGitRepositoryErrors = {
6945
8380
  /**
6946
8381
  * UnauthorizedError
6947
8382
  */
@@ -6958,46 +8393,33 @@ export type TemplateDocumentsVersionsErrors = {
6958
8393
  * ConflictError
6959
8394
  */
6960
8395
  409: ConflictError;
6961
- /**
6962
- * ValidationError
6963
- */
6964
- 422: ValidationError;
6965
8396
  /**
6966
8397
  * InternalError
6967
8398
  */
6968
8399
  500: InternalError;
6969
8400
  };
6970
- export type TemplateDocumentsVersionsError = TemplateDocumentsVersionsErrors[keyof TemplateDocumentsVersionsErrors];
6971
- export type TemplateDocumentsVersionsResponses = {
8401
+ export type TemplatesGetGitRepositoryError = TemplatesGetGitRepositoryErrors[keyof TemplatesGetGitRepositoryErrors];
8402
+ export type TemplatesGetGitRepositoryResponses = {
6972
8403
  /**
6973
8404
  * Success
6974
8405
  */
6975
8406
  200: {
6976
- versions: Array<{
6977
- versionId: TemplateSourceVersionId;
6978
- version: number;
6979
- status: string;
6980
- isCurrent: boolean;
6981
- materializationId: string;
6982
- documentRevision: string;
6983
- sourceDigest: string;
6984
- compilerVersion: string;
6985
- publishedAt: string | null;
6986
- archivedAt: string | null;
6987
- createdAt: string;
6988
- }>;
8407
+ remote: string;
8408
+ defaultBranch: string;
6989
8409
  };
6990
8410
  };
6991
- export type TemplateDocumentsVersionsResponse = TemplateDocumentsVersionsResponses[keyof TemplateDocumentsVersionsResponses];
6992
- export type TemplateDocumentsPublishData = {
6993
- body?: never;
8411
+ export type TemplatesGetGitRepositoryResponse = TemplatesGetGitRepositoryResponses[keyof TemplatesGetGitRepositoryResponses];
8412
+ export type TemplatesIssueGitCredentialData = {
8413
+ body: {
8414
+ scope: "read" | "write";
8415
+ };
6994
8416
  path: {
6995
- templateId: TemplateId;
8417
+ id: TemplateId;
6996
8418
  };
6997
8419
  query?: never;
6998
- url: "/v1/template-documents/{templateId}/publish";
8420
+ url: "/v1/templates/{id}/repository/credentials";
6999
8421
  };
7000
- export type TemplateDocumentsPublishErrors = {
8422
+ export type TemplatesIssueGitCredentialErrors = {
7001
8423
  /**
7002
8424
  * UnauthorizedError
7003
8425
  */
@@ -7014,34 +8436,45 @@ export type TemplateDocumentsPublishErrors = {
7014
8436
  * ConflictError
7015
8437
  */
7016
8438
  409: ConflictError;
7017
- /**
7018
- * ValidationError
7019
- */
7020
- 422: ValidationError;
7021
8439
  /**
7022
8440
  * InternalError
7023
8441
  */
7024
8442
  500: InternalError;
7025
8443
  };
7026
- export type TemplateDocumentsPublishError = TemplateDocumentsPublishErrors[keyof TemplateDocumentsPublishErrors];
7027
- export type TemplateDocumentsPublishResponses = {
8444
+ export type TemplatesIssueGitCredentialError = TemplatesIssueGitCredentialErrors[keyof TemplatesIssueGitCredentialErrors];
8445
+ export type TemplatesIssueGitCredentialResponses = {
7028
8446
  /**
7029
8447
  * Success
7030
8448
  */
7031
8449
  200: {
7032
- versionId: string;
8450
+ remote: string;
8451
+ username: "x-access-token";
8452
+ password: string;
8453
+ expiresAt: string;
7033
8454
  };
7034
8455
  };
7035
- export type TemplateDocumentsPublishResponse = TemplateDocumentsPublishResponses[keyof TemplateDocumentsPublishResponses];
7036
- export type TemplateDocumentsUnpublishData = {
7037
- body?: never;
8456
+ export type TemplatesIssueGitCredentialResponse = TemplatesIssueGitCredentialResponses[keyof TemplatesIssueGitCredentialResponses];
8457
+ export type TemplatesAttachWorkspaceResourceData = {
8458
+ body: {
8459
+ expectedRevision: string;
8460
+ resource: {
8461
+ resourceId: string;
8462
+ name: string;
8463
+ files: Array<{
8464
+ path: string;
8465
+ mediaType: string;
8466
+ contentBase64: string;
8467
+ }>;
8468
+ };
8469
+ idempotencyKey: string;
8470
+ };
7038
8471
  path: {
7039
- templateId: TemplateId;
8472
+ id: TemplateId;
7040
8473
  };
7041
8474
  query?: never;
7042
- url: "/v1/template-documents/{templateId}/unpublish";
8475
+ url: "/v1/templates/{id}/workspace/resources";
7043
8476
  };
7044
- export type TemplateDocumentsUnpublishErrors = {
8477
+ export type TemplatesAttachWorkspaceResourceErrors = {
7045
8478
  /**
7046
8479
  * UnauthorizedError
7047
8480
  */
@@ -7058,37 +8491,107 @@ export type TemplateDocumentsUnpublishErrors = {
7058
8491
  * ConflictError
7059
8492
  */
7060
8493
  409: ConflictError;
7061
- /**
7062
- * ValidationError
7063
- */
7064
- 422: ValidationError;
7065
8494
  /**
7066
8495
  * InternalError
7067
8496
  */
7068
8497
  500: InternalError;
7069
8498
  };
7070
- export type TemplateDocumentsUnpublishError = TemplateDocumentsUnpublishErrors[keyof TemplateDocumentsUnpublishErrors];
7071
- export type TemplateDocumentsUnpublishResponses = {
8499
+ export type TemplatesAttachWorkspaceResourceError = TemplatesAttachWorkspaceResourceErrors[keyof TemplatesAttachWorkspaceResourceErrors];
8500
+ export type TemplatesAttachWorkspaceResourceResponses = {
7072
8501
  /**
7073
8502
  * Success
7074
8503
  */
7075
8504
  200: {
7076
- versionId: string;
8505
+ projectId: TemplateProjectId;
8506
+ organizationId: OrganizationId | null;
8507
+ ownerEpoch: number;
8508
+ repositoryName: string;
8509
+ defaultBranch: string;
8510
+ baseCommit: string;
8511
+ remoteHead: string;
8512
+ pendingRemoteHead: string | null;
8513
+ revision: string;
8514
+ overlay: {
8515
+ [key: string]: string | null;
8516
+ };
8517
+ assetChanges: Array<{
8518
+ path: string;
8519
+ status: "added" | "modified" | "deleted";
8520
+ }>;
8521
+ conflicts: Array<{
8522
+ path: string;
8523
+ base: string | null;
8524
+ draft: string | null;
8525
+ main: string | null;
8526
+ }>;
8527
+ provenance: {
8528
+ references: Array<{
8529
+ kind: string;
8530
+ digest: string;
8531
+ locator?: string | undefined;
8532
+ }>;
8533
+ };
8534
+ mounts: Array<{
8535
+ kind: "project";
8536
+ root: "/project";
8537
+ access: "read-write";
8538
+ } | {
8539
+ root: string;
8540
+ digest: string;
8541
+ fileCount: number;
8542
+ byteSize: number;
8543
+ kind: "started-from";
8544
+ access: "read-only";
8545
+ templateId: string;
8546
+ slug: string;
8547
+ name: string;
8548
+ } | {
8549
+ root: string;
8550
+ digest: string;
8551
+ fileCount: number;
8552
+ byteSize: number;
8553
+ kind: "resource";
8554
+ access: "read-only";
8555
+ resourceId: string;
8556
+ name: string;
8557
+ } | {
8558
+ root: string;
8559
+ digest: string;
8560
+ fileCount: number;
8561
+ byteSize: number;
8562
+ kind: "library-template";
8563
+ access: "read-only";
8564
+ templateId: string;
8565
+ slug: string;
8566
+ name: string;
8567
+ }>;
8568
+ libraryManifestDigest: string;
8569
+ createdAt: string;
8570
+ updatedAt: string;
8571
+ createdBy: {
8572
+ userId: UserId;
8573
+ via: "api" | "mcp" | "agent";
8574
+ };
8575
+ updatedBy: {
8576
+ userId: UserId;
8577
+ via: "api" | "mcp" | "agent";
8578
+ };
7077
8579
  };
7078
8580
  };
7079
- export type TemplateDocumentsUnpublishResponse = TemplateDocumentsUnpublishResponses[keyof TemplateDocumentsUnpublishResponses];
7080
- export type TemplateDocumentsRestoreData = {
8581
+ export type TemplatesAttachWorkspaceResourceResponse = TemplatesAttachWorkspaceResourceResponses[keyof TemplatesAttachWorkspaceResourceResponses];
8582
+ export type TemplatesRemoveWorkspaceResourceData = {
7081
8583
  body: {
7082
8584
  expectedRevision: string;
8585
+ idempotencyKey: string;
7083
8586
  };
7084
8587
  path: {
7085
- templateId: TemplateId;
7086
- versionId: TemplateSourceVersionId;
8588
+ id: TemplateId;
8589
+ resourceId: string;
7087
8590
  };
7088
8591
  query?: never;
7089
- url: "/v1/template-documents/{templateId}/versions/{versionId}/restore";
8592
+ url: "/v1/templates/{id}/workspace/resources/{resourceId}/remove";
7090
8593
  };
7091
- export type TemplateDocumentsRestoreErrors = {
8594
+ export type TemplatesRemoveWorkspaceResourceErrors = {
7092
8595
  /**
7093
8596
  * UnauthorizedError
7094
8597
  */
@@ -7105,27 +8608,81 @@ export type TemplateDocumentsRestoreErrors = {
7105
8608
  * ConflictError
7106
8609
  */
7107
8610
  409: ConflictError;
7108
- /**
7109
- * ValidationError
7110
- */
7111
- 422: ValidationError;
7112
8611
  /**
7113
8612
  * InternalError
7114
8613
  */
7115
8614
  500: InternalError;
7116
8615
  };
7117
- export type TemplateDocumentsRestoreError = TemplateDocumentsRestoreErrors[keyof TemplateDocumentsRestoreErrors];
7118
- export type TemplateDocumentsRestoreResponses = {
8616
+ export type TemplatesRemoveWorkspaceResourceError = TemplatesRemoveWorkspaceResourceErrors[keyof TemplatesRemoveWorkspaceResourceErrors];
8617
+ export type TemplatesRemoveWorkspaceResourceResponses = {
7119
8618
  /**
7120
8619
  * Success
7121
8620
  */
7122
8621
  200: {
7123
- templateId: TemplateId;
7124
- organizationId: OrganizationId;
7125
- channel: "email";
7126
- source: string;
8622
+ projectId: TemplateProjectId;
8623
+ organizationId: OrganizationId | null;
8624
+ ownerEpoch: number;
8625
+ repositoryName: string;
8626
+ defaultBranch: string;
8627
+ baseCommit: string;
8628
+ remoteHead: string;
8629
+ pendingRemoteHead: string | null;
7127
8630
  revision: string;
7128
- sourceDigest: string;
8631
+ overlay: {
8632
+ [key: string]: string | null;
8633
+ };
8634
+ assetChanges: Array<{
8635
+ path: string;
8636
+ status: "added" | "modified" | "deleted";
8637
+ }>;
8638
+ conflicts: Array<{
8639
+ path: string;
8640
+ base: string | null;
8641
+ draft: string | null;
8642
+ main: string | null;
8643
+ }>;
8644
+ provenance: {
8645
+ references: Array<{
8646
+ kind: string;
8647
+ digest: string;
8648
+ locator?: string | undefined;
8649
+ }>;
8650
+ };
8651
+ mounts: Array<{
8652
+ kind: "project";
8653
+ root: "/project";
8654
+ access: "read-write";
8655
+ } | {
8656
+ root: string;
8657
+ digest: string;
8658
+ fileCount: number;
8659
+ byteSize: number;
8660
+ kind: "started-from";
8661
+ access: "read-only";
8662
+ templateId: string;
8663
+ slug: string;
8664
+ name: string;
8665
+ } | {
8666
+ root: string;
8667
+ digest: string;
8668
+ fileCount: number;
8669
+ byteSize: number;
8670
+ kind: "resource";
8671
+ access: "read-only";
8672
+ resourceId: string;
8673
+ name: string;
8674
+ } | {
8675
+ root: string;
8676
+ digest: string;
8677
+ fileCount: number;
8678
+ byteSize: number;
8679
+ kind: "library-template";
8680
+ access: "read-only";
8681
+ templateId: string;
8682
+ slug: string;
8683
+ name: string;
8684
+ }>;
8685
+ libraryManifestDigest: string;
7129
8686
  createdAt: string;
7130
8687
  updatedAt: string;
7131
8688
  createdBy: {
@@ -7138,7 +8695,7 @@ export type TemplateDocumentsRestoreResponses = {
7138
8695
  };
7139
8696
  };
7140
8697
  };
7141
- export type TemplateDocumentsRestoreResponse = TemplateDocumentsRestoreResponses[keyof TemplateDocumentsRestoreResponses];
8698
+ export type TemplatesRemoveWorkspaceResourceResponse = TemplatesRemoveWorkspaceResourceResponses[keyof TemplatesRemoveWorkspaceResourceResponses];
7142
8699
  export type DesignGetData = {
7143
8700
  body?: never;
7144
8701
  path?: never;
@@ -7208,6 +8765,7 @@ export type WebhooksListData = {
7208
8765
  page?: string | null | undefined;
7209
8766
  limit?: string | null | undefined;
7210
8767
  search?: string | null | undefined;
8768
+ status?: "active" | "disabled" | null | undefined;
7211
8769
  };
7212
8770
  url: "/v1/webhooks";
7213
8771
  };
@@ -7231,7 +8789,7 @@ export type WebhooksListResponses = {
7231
8789
  * Success
7232
8790
  */
7233
8791
  200: {
7234
- items: Array<WebhookEndpoint>;
8792
+ items: Array<WebhookEndpointListItem>;
7235
8793
  pagination: PaginationMeta;
7236
8794
  };
7237
8795
  };
@@ -7240,7 +8798,7 @@ export type WebhooksCreateData = {
7240
8798
  body: {
7241
8799
  name: string;
7242
8800
  url: string;
7243
- eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated">;
8801
+ eventTypes: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated">;
7244
8802
  channels?: Array<"email"> | null | undefined;
7245
8803
  headers?: {
7246
8804
  [key: string]: string;
@@ -7368,7 +8926,7 @@ export type WebhooksUpdateData = {
7368
8926
  body: {
7369
8927
  name?: string | null | undefined;
7370
8928
  url?: string | null | undefined;
7371
- eventTypes?: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated"> | null | undefined;
8929
+ eventTypes?: Array<"message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.bounced" | "message.complained" | "message.received" | "contact.created" | "contact.updated" | "contact.deleted" | "conversation.started" | "conversation.ended" | "conversation.created" | "conversation.updated" | "conversation.archived" | "template.created" | "template.updated" | "template.deleted" | "template.approved" | "template.rejected" | "webhook.created" | "webhook.updated" | "webhook.deleted" | "webhook.test" | "domain.updated" | "domain.warming.updated"> | null | undefined;
7372
8930
  channels?: Array<"email"> | null | null | undefined;
7373
8931
  headers?: {
7374
8932
  [key: string]: string;
@@ -7494,6 +9052,8 @@ export type WebhooksGetLogsResponses = {
7494
9052
  data: Array<{
7495
9053
  id: WebhookDeliveryId;
7496
9054
  eventId: WebhookEventId;
9055
+ eventType: string;
9056
+ occurredAt: string;
7497
9057
  endpointId: WebhookEndpointId;
7498
9058
  status: "pending" | "delivered" | "exhausted" | "cancelled";
7499
9059
  automaticAttempts: number;
@@ -7527,7 +9087,9 @@ export type WebhooksGetStatsData = {
7527
9087
  path: {
7528
9088
  webhookId: WebhookEndpointId;
7529
9089
  };
7530
- query?: never;
9090
+ query?: {
9091
+ period?: "7d" | "30d" | "90d" | null | undefined;
9092
+ };
7531
9093
  url: "/v1/webhooks/{webhookId}/stats";
7532
9094
  };
7533
9095
  export type WebhooksGetStatsErrors = {
@@ -7551,15 +9113,9 @@ export type WebhooksGetStatsErrors = {
7551
9113
  export type WebhooksGetStatsError = WebhooksGetStatsErrors[keyof WebhooksGetStatsErrors];
7552
9114
  export type WebhooksGetStatsResponses = {
7553
9115
  /**
7554
- * Success
9116
+ * WebhookStatsResponse
7555
9117
  */
7556
- 200: {
7557
- total: number;
7558
- pending: number;
7559
- delivered: number;
7560
- exhausted: number;
7561
- cancelled: number;
7562
- };
9118
+ 200: WebhookStatsResponse;
7563
9119
  };
7564
9120
  export type WebhooksGetStatsResponse = WebhooksGetStatsResponses[keyof WebhooksGetStatsResponses];
7565
9121
  export type WebhooksRetryDeliveryData = {
@@ -7727,7 +9283,7 @@ export type OrganizationsUpdateData = {
7727
9283
  billingEmail?: string | null | undefined;
7728
9284
  countryCode?: string | null | undefined;
7729
9285
  currency?: string | null | undefined;
7730
- timezone?: string | null | undefined;
9286
+ timezone?: IanaTimezone | null | undefined;
7731
9287
  isActive?: boolean | null | undefined;
7732
9288
  metadata?: {
7733
9289
  [key: string]: JsonValue;