@amerged/ohmyhost-sdk 0.1.15 → 0.1.17

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.
@@ -57,6 +57,15 @@ export type ManagedMailDisabled = {
57
57
  status: "disabled";
58
58
  };
59
59
 
60
+ export type ManagedMailDomainDeleted = {
61
+ status: "deleted";
62
+ domain: string;
63
+ /**
64
+ * Records ohmyho.st no longer manages; remove them from the domain's DNS.
65
+ */
66
+ dns_records: Array<ManagedMailDnsRecord>;
67
+ };
68
+
60
69
  export type ManagedMailExpired = {
61
70
  status: "expired";
62
71
  };
@@ -430,14 +439,17 @@ export type ConfigureSourceAutoDeployRequest = {
430
439
  enabled: boolean;
431
440
  };
432
441
 
442
+ /**
443
+ * Push-to-deploy configuration. Generation 0 with null branch, ref, grant_status and updated_at means auto-deploy was never configured for this project.
444
+ */
433
445
  export type SourceAutoDeploy = {
434
- branch: string;
435
- ref: string;
446
+ branch: string | null;
447
+ ref: string | null;
436
448
  environment: "dev";
437
449
  enabled: boolean;
438
450
  generation: number;
439
- grant_status: "active" | "revoked";
440
- updated_at: string;
451
+ grant_status: "active" | "revoked" | null;
452
+ updated_at: string | null;
441
453
  };
442
454
 
443
455
  export type ConnectGithubOrganizationRequest = {
@@ -654,6 +666,19 @@ export type ProjectDatabaseAccessPage = {
654
666
  items: Array<ProjectDatabaseAccess>;
655
667
  };
656
668
 
669
+ export type SetDevAccessModeRequest = {
670
+ mode: "protected" | "public";
671
+ };
672
+
673
+ export type DevAccessState = {
674
+ project_id: Ulid;
675
+ mode: "protected" | "public";
676
+ /**
677
+ * Owner-only persistent bearer link in protected mode; null when public or revoked.
678
+ */
679
+ share_url: string | null;
680
+ };
681
+
657
682
  export type DevAccessTicket = {
658
683
  ticket_id: Ulid;
659
684
  project_id: Ulid;
@@ -665,6 +690,10 @@ export type DevAccessTicket = {
665
690
 
666
691
  export type PlanDeploymentRequest = {
667
692
  commit_sha: GitCommitSha;
693
+ /**
694
+ * The environment the deployment builds into. Prod skips Dev and switches Prod traffic once activated.
695
+ */
696
+ environment?: "dev" | "prod";
668
697
  };
669
698
 
670
699
  export type CreateDeploymentRequest = {
@@ -672,11 +701,15 @@ export type CreateDeploymentRequest = {
672
701
  };
673
702
 
674
703
  /**
675
- * Immutable pre-build deployment plan. It expires exactly fifteen minutes after creation.
704
+ * Immutable pre-build deployment plan. It expires exactly 24 hours after creation.
676
705
  */
677
706
  export type DeploymentPlan = {
678
707
  id: Ulid;
679
708
  project_id: Ulid;
709
+ /**
710
+ * The environment this plan builds into.
711
+ */
712
+ environment: "dev" | "prod";
680
713
  commit_sha: GitCommitSha;
681
714
  source_digest: Sha256Digest;
682
715
  build_plan_digest: Sha256Digest;
@@ -701,13 +734,14 @@ export type DeploymentPlan = {
701
734
  };
702
735
 
703
736
  /**
704
- * Build-compute reservation quote, not the lifetime cost of the application. amount_micros is the customer USD equivalent of credit_micros; provider_cost_micros is the corresponding published provider-list basis. The versioned price is fixed by this immutable deployment plan. reserved_seconds is the reserved build time in seconds. The measured build seconds settle the reservation and unused credits are released. Storage, mail and runtime costs are separate.
737
+ * Build-compute reservation quote, not the lifetime cost of the application. credits is the reserved amount in credits as a decimal (credit_micros divided by one million), the figure to show people. amount_micros is the customer USD equivalent of credit_micros; provider_cost_micros is the corresponding published provider-list basis. The versioned price is fixed by this immutable deployment plan. reserved_seconds is the reserved build time in seconds. The measured build seconds settle the reservation and unused credits are released. Storage, mail and runtime costs are separate.
705
738
  */
706
739
  export type CostEstimate = {
707
740
  amount_micros: string;
708
741
  currency: string;
709
742
  rate_card_version: string;
710
743
  credit_micros: string;
744
+ credits: string;
711
745
  provider_cost_micros: string;
712
746
  scope: "build_compute";
713
747
  reserved_seconds: string;
@@ -823,6 +857,7 @@ export type FeedbackReceipt = {
823
857
  export type CreateProjectRequest = {
824
858
  organization_id: Ulid;
825
859
  data_mode?: ProjectDataMode;
860
+ dev_access_mode?: "protected" | "public";
826
861
  region?: HostingRegion;
827
862
  name: string;
828
863
  };
@@ -926,6 +961,7 @@ export type ProjectStatus = {
926
961
  project_id: Ulid;
927
962
  handle: string;
928
963
  region: HostingRegion;
964
+ dev_access_mode: "protected" | "public";
929
965
  lifecycle: "active" | "deleting" | "deleted";
930
966
  source: ProjectSource | null;
931
967
  default_environment: ProjectEnvironment | null;
@@ -968,7 +1004,10 @@ export type ProblemDetails = {
968
1004
  | "promotion_invalid_target"
969
1005
  | "mail_domain_conflict"
970
1006
  | "mail_domain_required"
1007
+ | "mail_capacity_unavailable"
971
1008
  | "storage_jurisdiction_conflict"
1009
+ | "shared_data_requires_promotion"
1010
+ | "production_deployment_required"
972
1011
  | "framework_conversion_required"
973
1012
  | "repository_configuration_missing"
974
1013
  | "migration_filename_noncanonical"
@@ -1213,11 +1252,15 @@ export type AuditEventPage = {
1213
1252
  export type Ulid = string;
1214
1253
 
1215
1254
  /**
1216
- * Immutable pre-build deployment plan. It expires exactly fifteen minutes after creation.
1255
+ * Immutable pre-build deployment plan. It expires exactly 24 hours after creation.
1217
1256
  */
1218
1257
  export type DeploymentPlanWritable = {
1219
1258
  id: Ulid;
1220
1259
  project_id: Ulid;
1260
+ /**
1261
+ * The environment this plan builds into.
1262
+ */
1263
+ environment: "dev" | "prod";
1221
1264
  commit_sha: GitCommitSha;
1222
1265
  source_digest: Sha256Digest;
1223
1266
  build_plan_digest: Sha256Digest;
@@ -3391,6 +3434,222 @@ export type GetProjectHandleAvailabilityResponses = {
3391
3434
  export type GetProjectHandleAvailabilityResponse =
3392
3435
  GetProjectHandleAvailabilityResponses[keyof GetProjectHandleAvailabilityResponses];
3393
3436
 
3437
+ export type RevokeProjectDevShareLinkData = {
3438
+ body?: never;
3439
+ headers: {
3440
+ /**
3441
+ * Optional caller-provided correlation identifier.
3442
+ */
3443
+ "X-Request-Id"?: string;
3444
+ /**
3445
+ * Identifies one mutation and its canonical request payload.
3446
+ */
3447
+ "Idempotency-Key": string;
3448
+ };
3449
+ path: {
3450
+ /**
3451
+ * Project identifier.
3452
+ */
3453
+ project_id: Ulid;
3454
+ };
3455
+ query?: never;
3456
+ url: "/v1/projects/{project_id}/dev-share-link";
3457
+ };
3458
+
3459
+ export type RevokeProjectDevShareLinkErrors = {
3460
+ /**
3461
+ * The request failed.
3462
+ */
3463
+ 401: ProblemDetails;
3464
+ /**
3465
+ * The request failed.
3466
+ */
3467
+ 403: ProblemDetails;
3468
+ /**
3469
+ * The request failed.
3470
+ */
3471
+ 404: ProblemDetails;
3472
+ /**
3473
+ * The request failed.
3474
+ */
3475
+ 503: ProblemDetails;
3476
+ };
3477
+
3478
+ export type RevokeProjectDevShareLinkError =
3479
+ RevokeProjectDevShareLinkErrors[keyof RevokeProjectDevShareLinkErrors];
3480
+
3481
+ export type RevokeProjectDevShareLinkResponses = {
3482
+ /**
3483
+ * Dev share link revoked.
3484
+ */
3485
+ 200: DevAccessState;
3486
+ };
3487
+
3488
+ export type RevokeProjectDevShareLinkResponse =
3489
+ RevokeProjectDevShareLinkResponses[keyof RevokeProjectDevShareLinkResponses];
3490
+
3491
+ export type EnsureProjectDevShareLinkData = {
3492
+ body?: never;
3493
+ headers?: {
3494
+ /**
3495
+ * Optional caller-provided correlation identifier.
3496
+ */
3497
+ "X-Request-Id"?: string;
3498
+ };
3499
+ path: {
3500
+ /**
3501
+ * Project identifier.
3502
+ */
3503
+ project_id: Ulid;
3504
+ };
3505
+ query?: never;
3506
+ url: "/v1/projects/{project_id}/dev-share-link";
3507
+ };
3508
+
3509
+ export type EnsureProjectDevShareLinkErrors = {
3510
+ /**
3511
+ * The request failed.
3512
+ */
3513
+ 401: ProblemDetails;
3514
+ /**
3515
+ * The request failed.
3516
+ */
3517
+ 403: ProblemDetails;
3518
+ /**
3519
+ * The request failed.
3520
+ */
3521
+ 404: ProblemDetails;
3522
+ /**
3523
+ * The request failed.
3524
+ */
3525
+ 503: ProblemDetails;
3526
+ };
3527
+
3528
+ export type EnsureProjectDevShareLinkError =
3529
+ EnsureProjectDevShareLinkErrors[keyof EnsureProjectDevShareLinkErrors];
3530
+
3531
+ export type EnsureProjectDevShareLinkResponses = {
3532
+ /**
3533
+ * Current Dev access mode and owner-only share link.
3534
+ */
3535
+ 200: DevAccessState;
3536
+ };
3537
+
3538
+ export type EnsureProjectDevShareLinkResponse =
3539
+ EnsureProjectDevShareLinkResponses[keyof EnsureProjectDevShareLinkResponses];
3540
+
3541
+ export type RotateProjectDevShareLinkData = {
3542
+ body?: never;
3543
+ headers: {
3544
+ /**
3545
+ * Optional caller-provided correlation identifier.
3546
+ */
3547
+ "X-Request-Id"?: string;
3548
+ /**
3549
+ * Identifies one mutation and its canonical request payload.
3550
+ */
3551
+ "Idempotency-Key": string;
3552
+ };
3553
+ path: {
3554
+ /**
3555
+ * Project identifier.
3556
+ */
3557
+ project_id: Ulid;
3558
+ };
3559
+ query?: never;
3560
+ url: "/v1/projects/{project_id}/dev-share-link:rotate";
3561
+ };
3562
+
3563
+ export type RotateProjectDevShareLinkErrors = {
3564
+ /**
3565
+ * The request failed.
3566
+ */
3567
+ 401: ProblemDetails;
3568
+ /**
3569
+ * The request failed.
3570
+ */
3571
+ 403: ProblemDetails;
3572
+ /**
3573
+ * The request failed.
3574
+ */
3575
+ 404: ProblemDetails;
3576
+ /**
3577
+ * The request failed.
3578
+ */
3579
+ 503: ProblemDetails;
3580
+ };
3581
+
3582
+ export type RotateProjectDevShareLinkError =
3583
+ RotateProjectDevShareLinkErrors[keyof RotateProjectDevShareLinkErrors];
3584
+
3585
+ export type RotateProjectDevShareLinkResponses = {
3586
+ /**
3587
+ * New Dev share link.
3588
+ */
3589
+ 200: DevAccessState;
3590
+ };
3591
+
3592
+ export type RotateProjectDevShareLinkResponse =
3593
+ RotateProjectDevShareLinkResponses[keyof RotateProjectDevShareLinkResponses];
3594
+
3595
+ export type SetProjectDevAccessModeData = {
3596
+ body: SetDevAccessModeRequest;
3597
+ headers: {
3598
+ /**
3599
+ * Optional caller-provided correlation identifier.
3600
+ */
3601
+ "X-Request-Id"?: string;
3602
+ /**
3603
+ * Identifies one mutation and its canonical request payload.
3604
+ */
3605
+ "Idempotency-Key": string;
3606
+ };
3607
+ path: {
3608
+ /**
3609
+ * Project identifier.
3610
+ */
3611
+ project_id: Ulid;
3612
+ };
3613
+ query?: never;
3614
+ url: "/v1/projects/{project_id}/dev-access-mode";
3615
+ };
3616
+
3617
+ export type SetProjectDevAccessModeErrors = {
3618
+ /**
3619
+ * The request failed.
3620
+ */
3621
+ 400: ProblemDetails;
3622
+ /**
3623
+ * The request failed.
3624
+ */
3625
+ 401: ProblemDetails;
3626
+ /**
3627
+ * The request failed.
3628
+ */
3629
+ 403: ProblemDetails;
3630
+ /**
3631
+ * The request failed.
3632
+ */
3633
+ 404: ProblemDetails;
3634
+ /**
3635
+ * The request failed.
3636
+ */
3637
+ 503: ProblemDetails;
3638
+ };
3639
+
3640
+ export type SetProjectDevAccessModeError =
3641
+ SetProjectDevAccessModeErrors[keyof SetProjectDevAccessModeErrors];
3642
+
3643
+ export type SetProjectDevAccessModeResponses = {
3644
+ /**
3645
+ * Current Dev access mode and owner-only share link.
3646
+ */
3647
+ 200: DevAccessState;
3648
+ };
3649
+
3650
+ export type SetProjectDevAccessModeResponse =
3651
+ SetProjectDevAccessModeResponses[keyof SetProjectDevAccessModeResponses];
3652
+
3394
3653
  export type CreateProjectDevAccessTicketData = {
3395
3654
  body?: never;
3396
3655
  headers?: {
@@ -4050,6 +4309,10 @@ export type PlanPaidProjectDomainErrors = {
4050
4309
  * The resource does not exist or is not visible to the authenticated principal.
4051
4310
  */
4052
4311
  404: ProblemDetails;
4312
+ /**
4313
+ * The request failed.
4314
+ */
4315
+ 409: ProblemDetails;
4053
4316
  /**
4054
4317
  * The request failed.
4055
4318
  */
@@ -4241,9 +4504,9 @@ export type ApplyPaidProjectDomainErrors = {
4241
4504
  */
4242
4505
  404: ProblemDetails;
4243
4506
  /**
4244
- * The idempotency key was already used with a different canonical request.
4507
+ * The request failed.
4245
4508
  */
4246
- 409: IdempotencyConflictProblem;
4509
+ 409: ProblemDetails;
4247
4510
  /**
4248
4511
  * The request failed.
4249
4512
  */
@@ -4320,7 +4583,7 @@ export type PlanDeploymentError = PlanDeploymentErrors[keyof PlanDeploymentError
4320
4583
 
4321
4584
  export type PlanDeploymentResponses = {
4322
4585
  /**
4323
- * A deployment plan valid for fifteen minutes.
4586
+ * A deployment plan valid for 24 hours.
4324
4587
  */
4325
4588
  200: DeploymentPlan;
4326
4589
  };
@@ -5871,6 +6134,70 @@ export type ListAuditEventsResponses = {
5871
6134
 
5872
6135
  export type ListAuditEventsResponse = ListAuditEventsResponses[keyof ListAuditEventsResponses];
5873
6136
 
6137
+ export type DeleteManagedMailDomainData = {
6138
+ body?: never;
6139
+ headers: {
6140
+ /**
6141
+ * Optional caller-provided correlation identifier.
6142
+ */
6143
+ "X-Request-Id"?: string;
6144
+ /**
6145
+ * Identifies one mutation and its canonical request payload.
6146
+ */
6147
+ "Idempotency-Key": string;
6148
+ };
6149
+ path: {
6150
+ project_id: Ulid;
6151
+ environment_id: Ulid;
6152
+ };
6153
+ query?: never;
6154
+ url: "/v1/projects/{project_id}/environments/{environment_id}/mail-domain";
6155
+ };
6156
+
6157
+ export type DeleteManagedMailDomainErrors = {
6158
+ /**
6159
+ * The request failed.
6160
+ */
6161
+ 400: ProblemDetails;
6162
+ /**
6163
+ * The request failed.
6164
+ */
6165
+ 401: ProblemDetails;
6166
+ /**
6167
+ * The request failed.
6168
+ */
6169
+ 403: ProblemDetails;
6170
+ /**
6171
+ * The request failed.
6172
+ */
6173
+ 404: ProblemDetails;
6174
+ /**
6175
+ * The request failed.
6176
+ */
6177
+ 409: ProblemDetails;
6178
+ /**
6179
+ * The request failed.
6180
+ */
6181
+ 429: ProblemDetails;
6182
+ /**
6183
+ * The request failed.
6184
+ */
6185
+ 503: ProblemDetails;
6186
+ };
6187
+
6188
+ export type DeleteManagedMailDomainError =
6189
+ DeleteManagedMailDomainErrors[keyof DeleteManagedMailDomainErrors];
6190
+
6191
+ export type DeleteManagedMailDomainResponses = {
6192
+ /**
6193
+ * The mail domain is retired.
6194
+ */
6195
+ 200: ManagedMailDomainDeleted;
6196
+ };
6197
+
6198
+ export type DeleteManagedMailDomainResponse =
6199
+ DeleteManagedMailDomainResponses[keyof DeleteManagedMailDomainResponses];
6200
+
5874
6201
  export type GetManagedMailDomainData = {
5875
6202
  body?: never;
5876
6203
  headers?: {
@@ -65,6 +65,13 @@ export function assertManagedMailResponse(value: unknown, input: ManagedMailComm
65
65
  if (r["status"] !== "disabled") invalid();
66
66
  return;
67
67
  }
68
+ if (input.action === "domain_delete") {
69
+ exact(r, ["status", "domain", "dns_records"]);
70
+ if (r["status"] !== "deleted") invalid();
71
+ domain(r["domain"]);
72
+ records(r["dns_records"]);
73
+ return;
74
+ }
68
75
  if (input.action === "messages_list") {
69
76
  exact(r, ["items"]);
70
77
  if (!Array.isArray(r["items"]) || r["items"].length > 50) invalid();
@@ -6,6 +6,7 @@ import {
6
6
  prepareManagedMailWebhook,
7
7
  verifyManagedMailWebhook,
8
8
  disableManagedMailReceiving,
9
+ deleteManagedMailDomain,
9
10
  listManagedMailMessages,
10
11
  getManagedMailMessage,
11
12
  retryManagedMailMessage,
@@ -20,7 +21,7 @@ export type ManagedMailCommand = { projectId: string; environmentId: string } &
20
21
  }
21
22
  | { action: "status" }
22
23
  | { action: "webhook_set"; url: string; idempotencyKey: string }
23
- | { action: "webhook_verify" | "webhook_disable"; idempotencyKey: string }
24
+ | { action: "webhook_verify" | "webhook_disable" | "domain_delete"; idempotencyKey: string }
24
25
  | { action: "messages_list"; after?: string }
25
26
  | { action: "message_get"; messageId: string }
26
27
  | { action: "message_retry"; messageId: string; idempotencyKey: string }
@@ -63,6 +64,11 @@ function requestManagedMail(client: Client, input: ManagedMailCommand) {
63
64
  { ...scope, "Idempotency-Key": input.idempotencyKey },
64
65
  { client },
65
66
  );
67
+ case "domain_delete":
68
+ return deleteManagedMailDomain(
69
+ { ...scope, "Idempotency-Key": input.idempotencyKey },
70
+ { client },
71
+ );
66
72
  case "messages_list":
67
73
  return listManagedMailMessages(
68
74
  { ...scope, ...(input.after ? { after: input.after } : {}) },