@runlot/api 0.1.0-rc.206 → 0.1.0-rc.209
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +65 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +81 -17
- package/dist/index.js.map +1 -1
- package/dist/schema.d.ts +1330 -160
- package/dist/schema.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/schema.d.ts
CHANGED
|
@@ -839,6 +839,51 @@ export interface paths {
|
|
|
839
839
|
patch?: never;
|
|
840
840
|
trace?: never;
|
|
841
841
|
};
|
|
842
|
+
"/v1/me/heard-from": {
|
|
843
|
+
parameters: {
|
|
844
|
+
query?: never;
|
|
845
|
+
header?: never;
|
|
846
|
+
path?: never;
|
|
847
|
+
cookie?: never;
|
|
848
|
+
};
|
|
849
|
+
get?: never;
|
|
850
|
+
/**
|
|
851
|
+
* Answer, or dismiss, "How did you hear about Runlot?"
|
|
852
|
+
* @description Asked once per account. An empty `answer` dismisses the question. Only the first call
|
|
853
|
+
* is stored; later calls change nothing and still answer 204. The answer is kept in the
|
|
854
|
+
* account record for the operator and is not sent to product analytics.
|
|
855
|
+
*/
|
|
856
|
+
put: operations["answerHeardFrom"];
|
|
857
|
+
post?: never;
|
|
858
|
+
delete?: never;
|
|
859
|
+
options?: never;
|
|
860
|
+
head?: never;
|
|
861
|
+
patch?: never;
|
|
862
|
+
trace?: never;
|
|
863
|
+
};
|
|
864
|
+
"/v1/me/marketing-consent": {
|
|
865
|
+
parameters: {
|
|
866
|
+
query?: never;
|
|
867
|
+
header?: never;
|
|
868
|
+
path?: never;
|
|
869
|
+
cookie?: never;
|
|
870
|
+
};
|
|
871
|
+
get?: never;
|
|
872
|
+
/**
|
|
873
|
+
* Give or withdraw consent to advertising email
|
|
874
|
+
* @description Consent is opt-in: the dashboard sends `granted: true` only from a checkbox the person
|
|
875
|
+
* ticked. A change is recorded with its source and time, and a result notice is mailed
|
|
876
|
+
* to the account's address, as Korean law requires (Network Act, Article 50(7)). A call
|
|
877
|
+
* that changes nothing records nothing and sends nothing.
|
|
878
|
+
*/
|
|
879
|
+
put: operations["setMarketingConsent"];
|
|
880
|
+
post?: never;
|
|
881
|
+
delete?: never;
|
|
882
|
+
options?: never;
|
|
883
|
+
head?: never;
|
|
884
|
+
patch?: never;
|
|
885
|
+
trace?: never;
|
|
886
|
+
};
|
|
842
887
|
"/v1/me/totp": {
|
|
843
888
|
parameters: {
|
|
844
889
|
query?: never;
|
|
@@ -1028,7 +1073,7 @@ export interface paths {
|
|
|
1028
1073
|
* Delete a project (`runlot project delete`)
|
|
1029
1074
|
* @description Requires admin or higher. **This cannot be undone, and there is no recovery
|
|
1030
1075
|
* generation to restore from afterwards.** Export anything you need first with
|
|
1031
|
-
* `runlot
|
|
1076
|
+
* `runlot db export`.
|
|
1032
1077
|
*
|
|
1033
1078
|
* The `confirm` field must carry the exact project name.
|
|
1034
1079
|
*
|
|
@@ -1045,6 +1090,11 @@ export interface paths {
|
|
|
1045
1090
|
* The 202 carries an operation id you can read with
|
|
1046
1091
|
* `GET /v1/orgs/{orgSlug}/operations/{opId}`, which reports the first step. Clients
|
|
1047
1092
|
* should not block on it.
|
|
1093
|
+
*
|
|
1094
|
+
* **Deleting a project never deletes a database.** A project with a database of its
|
|
1095
|
+
* own leaves it in the organization under the project's name (`databaseKept`), with
|
|
1096
|
+
* its data, backups and the projects that bind it; delete it separately with
|
|
1097
|
+
* `runlot db delete`. The project's own bindings to other databases go with it.
|
|
1048
1098
|
*/
|
|
1049
1099
|
delete: operations["deleteProject"];
|
|
1050
1100
|
options?: never;
|
|
@@ -2548,51 +2598,42 @@ export interface paths {
|
|
|
2548
2598
|
patch?: never;
|
|
2549
2599
|
trace?: never;
|
|
2550
2600
|
};
|
|
2551
|
-
"/v1/orgs/{orgSlug}/
|
|
2601
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}": {
|
|
2552
2602
|
parameters: {
|
|
2553
2603
|
query?: never;
|
|
2554
2604
|
header?: never;
|
|
2555
2605
|
path: {
|
|
2556
2606
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2557
|
-
|
|
2607
|
+
/** @description A database's name in the organization */
|
|
2608
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2558
2609
|
};
|
|
2559
2610
|
cookie?: never;
|
|
2560
2611
|
};
|
|
2561
2612
|
/**
|
|
2562
|
-
*
|
|
2563
|
-
* @description The
|
|
2613
|
+
* One database in the organization
|
|
2614
|
+
* @description The database's size, state and the projects that bind it — the same row as the
|
|
2615
|
+
* list. A project whose name matches a database but which has none answers 404.
|
|
2564
2616
|
*
|
|
2565
2617
|
* **No credentials are returned.** Viewer and above may call this; connection details
|
|
2566
|
-
* live at
|
|
2618
|
+
* live at `…/connect`.
|
|
2567
2619
|
*/
|
|
2568
2620
|
get: operations["getDatabase"];
|
|
2569
2621
|
put?: never;
|
|
2570
|
-
|
|
2571
|
-
* Creates the project's database
|
|
2572
|
-
* @description A database is created when your app uses one; this creates it by name, whether the
|
|
2573
|
-
* project never had one or its database was deleted. A new database starts empty. It
|
|
2574
|
-
* also clears the turn-off, so later deploys keep it. It returns the connection
|
|
2575
|
-
* details. Shortly afterwards
|
|
2576
|
-
* the running worker picks up a connected `env.db`. No redeploy is needed.
|
|
2577
|
-
*
|
|
2578
|
-
* **It is idempotent and never rotates the password.** A second call returns the same
|
|
2579
|
-
* connection details, so a connection string saved from the first response keeps
|
|
2580
|
-
* working.
|
|
2581
|
-
*/
|
|
2582
|
-
post: operations["createDatabase"];
|
|
2622
|
+
post?: never;
|
|
2583
2623
|
delete?: never;
|
|
2584
2624
|
options?: never;
|
|
2585
2625
|
head?: never;
|
|
2586
2626
|
patch?: never;
|
|
2587
2627
|
trace?: never;
|
|
2588
2628
|
};
|
|
2589
|
-
"/v1/orgs/{orgSlug}/
|
|
2629
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/connect": {
|
|
2590
2630
|
parameters: {
|
|
2591
2631
|
query?: never;
|
|
2592
2632
|
header?: never;
|
|
2593
2633
|
path: {
|
|
2594
2634
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2595
|
-
|
|
2635
|
+
/** @description A database's name in the organization */
|
|
2636
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2596
2637
|
};
|
|
2597
2638
|
cookie?: never;
|
|
2598
2639
|
};
|
|
@@ -2611,20 +2652,21 @@ export interface paths {
|
|
|
2611
2652
|
patch?: never;
|
|
2612
2653
|
trace?: never;
|
|
2613
2654
|
};
|
|
2614
|
-
"/v1/orgs/{orgSlug}/
|
|
2655
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/endpoint": {
|
|
2615
2656
|
parameters: {
|
|
2616
2657
|
query?: never;
|
|
2617
2658
|
header?: never;
|
|
2618
2659
|
path: {
|
|
2619
2660
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2620
|
-
|
|
2661
|
+
/** @description A database's name in the organization */
|
|
2662
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2621
2663
|
};
|
|
2622
2664
|
cookie?: never;
|
|
2623
2665
|
};
|
|
2624
2666
|
/**
|
|
2625
|
-
* Connection info without credentials (`runlot
|
|
2667
|
+
* Connection info without credentials (`runlot db forward`)
|
|
2626
2668
|
* @description Only host, port, database and `sslmode` — no secret, so viewer and above may call it.
|
|
2627
|
-
* `runlot
|
|
2669
|
+
* `runlot db forward` authenticates with your login session rather than a password,
|
|
2628
2670
|
* so this endpoint is all it needs.
|
|
2629
2671
|
*/
|
|
2630
2672
|
get: operations["getDatabaseEndpoint"];
|
|
@@ -2636,13 +2678,14 @@ export interface paths {
|
|
|
2636
2678
|
patch?: never;
|
|
2637
2679
|
trace?: never;
|
|
2638
2680
|
};
|
|
2639
|
-
"/v1/orgs/{orgSlug}/
|
|
2681
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/tokens": {
|
|
2640
2682
|
parameters: {
|
|
2641
2683
|
query?: never;
|
|
2642
2684
|
header?: never;
|
|
2643
2685
|
path: {
|
|
2644
2686
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2645
|
-
|
|
2687
|
+
/** @description A database's name in the organization */
|
|
2688
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2646
2689
|
};
|
|
2647
2690
|
cookie?: never;
|
|
2648
2691
|
};
|
|
@@ -2653,7 +2696,7 @@ export interface paths {
|
|
|
2653
2696
|
get: operations["listDatabaseTokens"];
|
|
2654
2697
|
put?: never;
|
|
2655
2698
|
/**
|
|
2656
|
-
* Issue a credential for short-lived automation (`runlot
|
|
2699
|
+
* Issue a credential for short-lived automation (`runlot db token`)
|
|
2657
2700
|
* @description Issues a user/password pair for use in a connection string. **The password appears
|
|
2658
2701
|
* only in this response** — only its SCRAM verifier is stored, so a lost password must
|
|
2659
2702
|
* be reissued. The session still opens under the project's own database role; the token
|
|
@@ -2666,13 +2709,14 @@ export interface paths {
|
|
|
2666
2709
|
patch?: never;
|
|
2667
2710
|
trace?: never;
|
|
2668
2711
|
};
|
|
2669
|
-
"/v1/orgs/{orgSlug}/
|
|
2712
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/tokens/{tokenUser}": {
|
|
2670
2713
|
parameters: {
|
|
2671
2714
|
query?: never;
|
|
2672
2715
|
header?: never;
|
|
2673
2716
|
path: {
|
|
2674
2717
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2675
|
-
|
|
2718
|
+
/** @description A database's name in the organization */
|
|
2719
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2676
2720
|
tokenUser: string;
|
|
2677
2721
|
};
|
|
2678
2722
|
cookie?: never;
|
|
@@ -2690,13 +2734,14 @@ export interface paths {
|
|
|
2690
2734
|
patch?: never;
|
|
2691
2735
|
trace?: never;
|
|
2692
2736
|
};
|
|
2693
|
-
"/v1/orgs/{orgSlug}/
|
|
2737
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/execute": {
|
|
2694
2738
|
parameters: {
|
|
2695
2739
|
query?: never;
|
|
2696
2740
|
header?: never;
|
|
2697
2741
|
path: {
|
|
2698
2742
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2699
|
-
|
|
2743
|
+
/** @description A database's name in the organization */
|
|
2744
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2700
2745
|
};
|
|
2701
2746
|
cookie?: never;
|
|
2702
2747
|
};
|
|
@@ -2705,11 +2750,11 @@ export interface paths {
|
|
|
2705
2750
|
/**
|
|
2706
2751
|
* Run one statement (the dashboard's SQL console)
|
|
2707
2752
|
* @description Runs a single SQL statement against the project's database and returns the rows. This
|
|
2708
|
-
* backs the dashboard's SQL console; from a terminal, use `runlot
|
|
2753
|
+
* backs the dashboard's SQL console; from a terminal, use `runlot db execute`, which
|
|
2709
2754
|
* connects directly instead.
|
|
2710
2755
|
*
|
|
2711
2756
|
* The statement is executed over an ordinary PostgreSQL connection using the same
|
|
2712
|
-
* host, port, `sslmode` and credential that `…/
|
|
2757
|
+
* host, port, `sslmode` and credential that `…/databases/{databaseName}/connect` hands a member for
|
|
2713
2758
|
* psql, so every rule that applies to a normal connection applies here too, including
|
|
2714
2759
|
* the 10 s statement ceiling.
|
|
2715
2760
|
*
|
|
@@ -2726,7 +2771,7 @@ export interface paths {
|
|
|
2726
2771
|
* **Write mode belongs to a dashboard session.** A personal access token reaches this
|
|
2727
2772
|
* route with `db:read` and runs read-only statements; asking for `readOnly: false`
|
|
2728
2773
|
* with a token is 403 `console_write_needs_session`. No scope opens it — a credential
|
|
2729
|
-
* that has to write goes through `…/
|
|
2774
|
+
* that has to write goes through `…/databases/{databaseName}/connect` or `…/databases/{databaseName}/tokens` and
|
|
2730
2775
|
* connects, where the power it carries is named on the token.
|
|
2731
2776
|
*
|
|
2732
2777
|
* Requires member or higher. A write leaves a `db.execute` audit event; a read leaves
|
|
@@ -2739,26 +2784,27 @@ export interface paths {
|
|
|
2739
2784
|
patch?: never;
|
|
2740
2785
|
trace?: never;
|
|
2741
2786
|
};
|
|
2742
|
-
"/v1/orgs/{orgSlug}/
|
|
2787
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/export": {
|
|
2743
2788
|
parameters: {
|
|
2744
2789
|
query?: never;
|
|
2745
2790
|
header?: never;
|
|
2746
2791
|
path: {
|
|
2747
2792
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2748
|
-
|
|
2793
|
+
/** @description A database's name in the organization */
|
|
2794
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2749
2795
|
};
|
|
2750
2796
|
cookie?: never;
|
|
2751
2797
|
};
|
|
2752
2798
|
get?: never;
|
|
2753
2799
|
put?: never;
|
|
2754
2800
|
/**
|
|
2755
|
-
* Creates a diagnostic image (`runlot
|
|
2801
|
+
* Creates a diagnostic image (`runlot db export`)
|
|
2756
2802
|
* @description **This is not a backup.** It creates an immutable diagnostic image of the database as
|
|
2757
2803
|
* it is right now. It does not move any backup pointer, does not affect retention, and
|
|
2758
2804
|
* cannot be selected by a restore.
|
|
2759
2805
|
*
|
|
2760
2806
|
* Scheduled backups are separate and run on their own hourly schedule. List them at
|
|
2761
|
-
* `…/
|
|
2807
|
+
* `…/databases/{databaseName}/generations` and pick one at `…/databases/{databaseName}/restore`. Diagnostic images stay
|
|
2762
2808
|
* outside that history entirely: restore cannot choose one and pruning ignores them.
|
|
2763
2809
|
*
|
|
2764
2810
|
* **This is not idempotent.** Each call creates one more image.
|
|
@@ -2775,18 +2821,19 @@ export interface paths {
|
|
|
2775
2821
|
patch?: never;
|
|
2776
2822
|
trace?: never;
|
|
2777
2823
|
};
|
|
2778
|
-
"/v1/orgs/{orgSlug}/
|
|
2824
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/generations": {
|
|
2779
2825
|
parameters: {
|
|
2780
2826
|
query?: never;
|
|
2781
2827
|
header?: never;
|
|
2782
2828
|
path: {
|
|
2783
2829
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2784
|
-
|
|
2830
|
+
/** @description A database's name in the organization */
|
|
2831
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2785
2832
|
};
|
|
2786
2833
|
cookie?: never;
|
|
2787
2834
|
};
|
|
2788
2835
|
/**
|
|
2789
|
-
* List of backup generations (`runlot
|
|
2836
|
+
* List of backup generations (`runlot db backups`)
|
|
2790
2837
|
* @description Lists the backup generations a restore can choose from, newest first, each with its
|
|
2791
2838
|
* storage key, size and `sha256` digest so the restore can verify what it receives.
|
|
2792
2839
|
*
|
|
@@ -2797,7 +2844,7 @@ export interface paths {
|
|
|
2797
2844
|
* Requires member or higher.
|
|
2798
2845
|
*
|
|
2799
2846
|
* **The database does not have to be enabled.** A final safety generation is kept even
|
|
2800
|
-
* after `runlot
|
|
2847
|
+
* after `runlot db delete`, so it still appears here after deletion.
|
|
2801
2848
|
*
|
|
2802
2849
|
* **`objects` is the Durable Object half of the same history**, returned alongside the
|
|
2803
2850
|
* database generations because a project's restorable state is the union of the two.
|
|
@@ -2824,20 +2871,21 @@ export interface paths {
|
|
|
2824
2871
|
patch?: never;
|
|
2825
2872
|
trace?: never;
|
|
2826
2873
|
};
|
|
2827
|
-
"/v1/orgs/{orgSlug}/
|
|
2874
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/restore": {
|
|
2828
2875
|
parameters: {
|
|
2829
2876
|
query?: never;
|
|
2830
2877
|
header?: never;
|
|
2831
2878
|
path: {
|
|
2832
2879
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2833
|
-
|
|
2880
|
+
/** @description A database's name in the organization */
|
|
2881
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2834
2882
|
};
|
|
2835
2883
|
cookie?: never;
|
|
2836
2884
|
};
|
|
2837
2885
|
get?: never;
|
|
2838
2886
|
put?: never;
|
|
2839
2887
|
/**
|
|
2840
|
-
* Restore to a generation (`runlot
|
|
2888
|
+
* Restore to a generation (`runlot db restore`)
|
|
2841
2889
|
* @description A restore stops the project's database, replaces its contents with the chosen
|
|
2842
2890
|
* generation, and starts it again. The data as it stands immediately before the restore
|
|
2843
2891
|
* is archived first, so there is a way back.
|
|
@@ -2851,7 +2899,7 @@ export interface paths {
|
|
|
2851
2899
|
* whole restore, database included, rather than restoring only part of the project.
|
|
2852
2900
|
*
|
|
2853
2901
|
* **Check `objects.restorable` before calling this, for the generation you are about to
|
|
2854
|
-
* pass.** Call `…/
|
|
2902
|
+
* pass.** Call `…/databases/{databaseName}/generations?at=<the chosen generation's lastAt>` first: the
|
|
2855
2903
|
* object half is selected on its own instant, independent of the `(epoch, seq)` you
|
|
2856
2904
|
* send here, so a `restorable=true` read at another instant answers a different
|
|
2857
2905
|
* question. Even a correctly timed `restorable=true` is eligibility, not a guarantee —
|
|
@@ -2861,7 +2909,7 @@ export interface paths {
|
|
|
2861
2909
|
* list, so a generation created in the meantime cannot send you somewhere else.
|
|
2862
2910
|
*
|
|
2863
2911
|
* Returns 202 with an operation id, not the result. Poll
|
|
2864
|
-
* `…/
|
|
2912
|
+
* `…/databases/{databaseName}/operations/{opId}` for progress.
|
|
2865
2913
|
*/
|
|
2866
2914
|
post: operations["restoreDatabase"];
|
|
2867
2915
|
delete?: never;
|
|
@@ -2870,29 +2918,37 @@ export interface paths {
|
|
|
2870
2918
|
patch?: never;
|
|
2871
2919
|
trace?: never;
|
|
2872
2920
|
};
|
|
2873
|
-
"/v1/orgs/{orgSlug}/
|
|
2921
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/delete": {
|
|
2874
2922
|
parameters: {
|
|
2875
2923
|
query?: never;
|
|
2876
2924
|
header?: never;
|
|
2877
2925
|
path: {
|
|
2878
2926
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2879
|
-
|
|
2927
|
+
/** @description A database's name in the organization */
|
|
2928
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2880
2929
|
};
|
|
2881
2930
|
cookie?: never;
|
|
2882
2931
|
};
|
|
2883
2932
|
get?: never;
|
|
2884
2933
|
put?: never;
|
|
2885
2934
|
/**
|
|
2886
|
-
* Delete a database (`runlot
|
|
2887
|
-
* @description Deletes
|
|
2888
|
-
*
|
|
2889
|
-
*
|
|
2935
|
+
* Delete a database (`runlot db delete`)
|
|
2936
|
+
* @description Deletes a database in the organization. Requires admin or higher.
|
|
2937
|
+
*
|
|
2938
|
+
* **A bound database is not deleted.** The call answers 409 `database_bound` with
|
|
2939
|
+
* `details.bindings` (`project`, `binding`); the project whose name the database
|
|
2940
|
+
* shares counts as a binding (`db`). Remove the `databases` entry from each project's
|
|
2941
|
+
* `runlot.json` and deploy, or send `unbindAll: true`, which removes every binding
|
|
2942
|
+
* (each recorded in the audit log). Bound projects then fail calls on that binding
|
|
2943
|
+
* with `DatabaseNotAttached`, and their next deploy is refused with
|
|
2944
|
+
* `database_not_found` until their `runlot.json` drops the entry.
|
|
2890
2945
|
*
|
|
2891
|
-
*
|
|
2892
|
-
* project
|
|
2893
|
-
*
|
|
2946
|
+
* While the project of the same name exists, a final safety generation is kept and
|
|
2947
|
+
* that project runs without `env.db` afterwards; this also turns end-user auth off,
|
|
2948
|
+
* because the subscriber records live in the database. A database with no project of
|
|
2949
|
+
* its name is erased with no generation left — export it first (`runlot db export`).
|
|
2894
2950
|
*
|
|
2895
|
-
* **`confirm` must match the
|
|
2951
|
+
* **`confirm` must match the database name exactly.** If it does not, the call returns
|
|
2896
2952
|
* 400 `confirm_mismatch` and nothing starts.
|
|
2897
2953
|
*
|
|
2898
2954
|
* This is a `POST` rather than a `DELETE` because it is a long-running operation that
|
|
@@ -2906,13 +2962,14 @@ export interface paths {
|
|
|
2906
2962
|
patch?: never;
|
|
2907
2963
|
trace?: never;
|
|
2908
2964
|
};
|
|
2909
|
-
"/v1/orgs/{orgSlug}/
|
|
2965
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/operations/{opId}": {
|
|
2910
2966
|
parameters: {
|
|
2911
2967
|
query?: never;
|
|
2912
2968
|
header?: never;
|
|
2913
2969
|
path: {
|
|
2914
2970
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2915
|
-
|
|
2971
|
+
/** @description A database's name in the organization */
|
|
2972
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2916
2973
|
/**
|
|
2917
2974
|
* @description The operation id. **Not a credential** — an operation that does not belong to the
|
|
2918
2975
|
* project in the path returns 404.
|
|
@@ -2940,13 +2997,14 @@ export interface paths {
|
|
|
2940
2997
|
patch?: never;
|
|
2941
2998
|
trace?: never;
|
|
2942
2999
|
};
|
|
2943
|
-
"/v1/orgs/{orgSlug}/
|
|
3000
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/operations/{opId}/abort": {
|
|
2944
3001
|
parameters: {
|
|
2945
3002
|
query?: never;
|
|
2946
3003
|
header?: never;
|
|
2947
3004
|
path: {
|
|
2948
3005
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
2949
|
-
|
|
3006
|
+
/** @description A database's name in the organization */
|
|
3007
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
2950
3008
|
/**
|
|
2951
3009
|
* @description The operation id. **Not a credential** — an operation that does not belong to the
|
|
2952
3010
|
* project in the path returns 404.
|
|
@@ -2958,7 +3016,7 @@ export interface paths {
|
|
|
2958
3016
|
get?: never;
|
|
2959
3017
|
put?: never;
|
|
2960
3018
|
/**
|
|
2961
|
-
* Aborts an in-progress operation (`runlot
|
|
3019
|
+
* Aborts an in-progress operation (`runlot db abort`)
|
|
2962
3020
|
* @description Only possible **before** the operation reaches a point of no return: evict,
|
|
2963
3021
|
* restore_generation and delete can be aborted up to the committing phase; restore
|
|
2964
3022
|
* cannot. Aborting returns the project to active and leaves `terminalCode=aborted`.
|
|
@@ -3570,8 +3628,9 @@ export interface paths {
|
|
|
3570
3628
|
/**
|
|
3571
3629
|
* Desktops of the org's members that can lend to this project right now
|
|
3572
3630
|
* @description Each desktop lending to apps, with the models it lends and whether its Runlot Studio is
|
|
3573
|
-
* too old to carry `reasoning` or `responseFormat` (`outdated`)
|
|
3574
|
-
*
|
|
3631
|
+
* too old to carry `reasoning` or `responseFormat` (`outdated`), followed by the members'
|
|
3632
|
+
* desktops that are online with lending switched off (`lending: false`). `reachable` is
|
|
3633
|
+
* false when the lending service could not be asked. Requires `observability:read`.
|
|
3575
3634
|
*/
|
|
3576
3635
|
get: operations["getAILenders"];
|
|
3577
3636
|
put?: never;
|
|
@@ -3713,7 +3772,10 @@ export interface paths {
|
|
|
3713
3772
|
* @description The call a local `runlot dev` makes when your worker calls `env.ai.run`. It is forwarded to the
|
|
3714
3773
|
* same lane Studio's local runtime uses: catalog models only, the free plan's caps on every plan
|
|
3715
3774
|
* (4,096 output tokens, 30 calls a minute, two at a time), the org's balance checked before and
|
|
3716
|
-
* debited after, recorded in the ledger as `lane = dev`.
|
|
3775
|
+
* debited after, recorded in the ledger as `lane = dev`. One JSON answer, or with `stream: true`
|
|
3776
|
+
* server-sent events: `data: {"delta"}` pieces, then `event: done` (model, stopReason, usage,
|
|
3777
|
+
* usageComplete) or `event: error` (code, message, usage). A stream takes no tools and no
|
|
3778
|
+
* `responseFormat` (`400 stream_unsupported`, `400 format_unsupported`).
|
|
3717
3779
|
*
|
|
3718
3780
|
* This is not an API for calling models from outside a worker: it needs a member's login and a
|
|
3719
3781
|
* project with AI turned on, and it answers `env.ai.run`'s own shape. Requires member or higher.
|
|
@@ -4016,7 +4078,7 @@ export interface paths {
|
|
|
4016
4078
|
*
|
|
4017
4079
|
* **The end-user table is not part of this API.** User records live in the `runlot_auth`
|
|
4018
4080
|
* schema of the project's database; read them through the worker's `env.auth.users.*` or
|
|
4019
|
-
* with `runlot
|
|
4081
|
+
* with `runlot db shell`.
|
|
4020
4082
|
*
|
|
4021
4083
|
* `providers` carries only the client id. Client secrets are stored encrypted and never
|
|
4022
4084
|
* appear in any response.
|
|
@@ -4032,10 +4094,10 @@ export interface paths {
|
|
|
4032
4094
|
*
|
|
4033
4095
|
* **Login creates the database it needs.** The end-user tables live inside the
|
|
4034
4096
|
* project's database, so a project without one gets it first, as if you had run
|
|
4035
|
-
* `runlot
|
|
4097
|
+
* `runlot db create <project>`. Two cases are refused instead, each with a 409 that says why: the
|
|
4036
4098
|
* project's database was deleted (`database_required`), or the live deployment's
|
|
4037
4099
|
* `runlot.json` says `"database": false` (`database_disabled`). Create the database with
|
|
4038
|
-
* `POST
|
|
4100
|
+
* `POST /v1/orgs/{orgSlug}/databases` (`runlot db create <project>`) and call this again.
|
|
4039
4101
|
*
|
|
4040
4102
|
* Once enabled, the built-in login endpoints start serving shortly afterwards. As with
|
|
4041
4103
|
* `env.db` and `env.storage`, no redeploy is needed. Table initialization is idempotent,
|
|
@@ -4050,7 +4112,7 @@ export interface paths {
|
|
|
4050
4112
|
* Disables auth (`runlot auth delete`)
|
|
4051
4113
|
* @description **End-user data is not deleted.** The `runlot_auth` tables stay in the project's
|
|
4052
4114
|
* database as they are — deleting them is a database operation you run yourself with
|
|
4053
|
-
* `runlot
|
|
4115
|
+
* `runlot db`. Turning auth back on lets the same people log in as before.
|
|
4054
4116
|
*
|
|
4055
4117
|
* Shortly afterwards the built-in login endpoints stop serving, and `/__runlot/auth/*`
|
|
4056
4118
|
* passes straight through to your worker — if that path has no route, it is a 404.
|
|
@@ -4258,7 +4320,7 @@ export interface paths {
|
|
|
4258
4320
|
* The app's end users (`runlot auth users`)
|
|
4259
4321
|
* @description The people who signed up to **your app** — not the members of your organization.
|
|
4260
4322
|
* They live in the project's own database, under the `runlot_auth` schema, and this
|
|
4261
|
-
* route reads them over the same connection `…/
|
|
4323
|
+
* route reads them over the same connection `…/databases/{databaseName}/connect` hands you for psql.
|
|
4262
4324
|
* Everything here is also visible through `env.db` and `psql`; this is a convenience,
|
|
4263
4325
|
* not a second source.
|
|
4264
4326
|
*
|
|
@@ -4579,6 +4641,119 @@ export interface paths {
|
|
|
4579
4641
|
patch?: never;
|
|
4580
4642
|
trace?: never;
|
|
4581
4643
|
};
|
|
4644
|
+
"/v1/orgs/{orgSlug}/billing/spending-limit": {
|
|
4645
|
+
parameters: {
|
|
4646
|
+
query?: never;
|
|
4647
|
+
header?: never;
|
|
4648
|
+
path: {
|
|
4649
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
4650
|
+
};
|
|
4651
|
+
cookie?: never;
|
|
4652
|
+
};
|
|
4653
|
+
/**
|
|
4654
|
+
* The org's spending limit, this month's overage and the lock
|
|
4655
|
+
* @description The spending limit is the most a Pro organization is billed in a month for usage above
|
|
4656
|
+
* the included amounts. It is always on (default $20) and has no "unlimited" value: when
|
|
4657
|
+
* this month's overage reaches it, every HTTP request to the organization's projects is
|
|
4658
|
+
* refused with `429 budget_exhausted` until the first of next month, and uploads past the
|
|
4659
|
+
* storage quota get `507`. Raising the limit releases the lock within one map poll.
|
|
4660
|
+
*
|
|
4661
|
+
* `overageMicroCents` is this month's accrued overage; `breakdown` names the axes that
|
|
4662
|
+
* made it (requests, CPU, storage held, memory above the plan, and collection). Held
|
|
4663
|
+
* storage and memory never take the month past the limit; requests and CPU in the
|
|
4664
|
+
* 2–3 minute enforcement lag can. `applies` is false on Free (Free is never billed past
|
|
4665
|
+
* its included amounts) and on a granted Pro (not billed). `projects` lists every project
|
|
4666
|
+
* with its own spending limit (null where it has none) and its share of this month's
|
|
4667
|
+
* overage (see `getProjectLimits`). Requires viewer or higher.
|
|
4668
|
+
*/
|
|
4669
|
+
get: operations["getSpendingLimit"];
|
|
4670
|
+
/**
|
|
4671
|
+
* Set the org's spending limit
|
|
4672
|
+
* @description Sets the limit in cents, from 0 (stop at the first cent past the included amounts) up to
|
|
4673
|
+
* `maxCents` ($1,000); above that, contact us. The lock is judged again at once: a limit
|
|
4674
|
+
* above this month's overage releases it, and a limit below it locks the organization now —
|
|
4675
|
+
* the answer's `throttled` shows the lock the change left. Pro only:
|
|
4676
|
+
* `409 spending_limit_not_applicable` on Free and on a granted Pro, with
|
|
4677
|
+
* `details.reason` `free` or `granted`. A value out of range is
|
|
4678
|
+
* `400 spending_limit_out_of_range`. Requires admin. Audited as `org.spending_limit`.
|
|
4679
|
+
*/
|
|
4680
|
+
put: operations["setSpendingLimit"];
|
|
4681
|
+
post?: never;
|
|
4682
|
+
delete?: never;
|
|
4683
|
+
options?: never;
|
|
4684
|
+
head?: never;
|
|
4685
|
+
patch?: never;
|
|
4686
|
+
trace?: never;
|
|
4687
|
+
};
|
|
4688
|
+
"/v1/orgs/{orgSlug}/projects/{projectName}/limits": {
|
|
4689
|
+
parameters: {
|
|
4690
|
+
query?: never;
|
|
4691
|
+
header?: never;
|
|
4692
|
+
path: {
|
|
4693
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
4694
|
+
projectName: components["parameters"]["ProjectName"];
|
|
4695
|
+
};
|
|
4696
|
+
cookie?: never;
|
|
4697
|
+
};
|
|
4698
|
+
/**
|
|
4699
|
+
* A project's app memory, per-request CPU and spending limits
|
|
4700
|
+
* @description `appMemory` is the most one copy of the app may use. For a project with a database this
|
|
4701
|
+
* is the app process's own limit (the database keeps the plan's memory); the project's
|
|
4702
|
+
* memory cap, `projectBytes`, is raised to twice it, because a deploy runs two copies side
|
|
4703
|
+
* by side. For a project without a database it is the project's whole cap. An app over its
|
|
4704
|
+
* limit is restarted and reported as an `app_out_of_memory` issue.
|
|
4705
|
+
*
|
|
4706
|
+
* A limit is a ceiling, not reserved memory. On Pro, memory the project actually holds
|
|
4707
|
+
* above `includedProjectBytes` (the plan's project cap) is billed per hour of use within
|
|
4708
|
+
* the organization's spending limit, when `billed` is true. `p99Bytes` is the project's
|
|
4709
|
+
* 14-day p99 hourly peak, database and app together.
|
|
4710
|
+
*
|
|
4711
|
+
* `requestCpu` is the CPU one request may spend before it fails with `exceededCpu`.
|
|
4712
|
+
*
|
|
4713
|
+
* `spend` is the project's own spending limit, under the organization's. Optional: with
|
|
4714
|
+
* none (`cents` null) only the organization's limit applies. The project's share of the
|
|
4715
|
+
* organization's overage this month (`shareMicroCents`) is, per axis, that axis's overage
|
|
4716
|
+
* times the project's fraction of the organization's use of it — requests, CPU and file
|
|
4717
|
+
* storage held — plus the memory the project held above the plan. Error and observability
|
|
4718
|
+
* collection is not part of it. Because the included amounts are the organization's, a
|
|
4719
|
+
* project's share can grow while it is idle when another project takes the organization
|
|
4720
|
+
* further past them. When the share reaches the limit, only this project's HTTP requests
|
|
4721
|
+
* are refused, with `429 project_budget_exhausted`, until the first of next month
|
|
4722
|
+
* (`throttledUntil`); the organization's other projects keep serving, and the
|
|
4723
|
+
* organization's own limit still applies on top. Requires viewer or higher.
|
|
4724
|
+
*/
|
|
4725
|
+
get: operations["getProjectLimits"];
|
|
4726
|
+
/**
|
|
4727
|
+
* Set a project's app memory, per-request CPU or spending limit
|
|
4728
|
+
* @description A field left out is unchanged; `null` puts it back on the plan's value. Free may lower
|
|
4729
|
+
* either limit and raising one needs Pro (`403 plan_required`). Pro may raise app memory to
|
|
4730
|
+
* `maxBytes` (at most 2 GiB) and the CPU limit to 300 s. The change reaches the running app
|
|
4731
|
+
* by a zero-downtime replacement.
|
|
4732
|
+
*
|
|
4733
|
+
* `spendCents` sets the project's own spending limit, from 0 (stop at the first cent of the
|
|
4734
|
+
* project's share) up to the organization's limit (`spend.orgCents`); `null` removes it.
|
|
4735
|
+
* The lock is judged again at once: a limit above the project's share releases it within
|
|
4736
|
+
* one map poll, and a limit at or below it refuses the project's requests now — the
|
|
4737
|
+
* answer's `spend.throttled` shows the lock the change left. Pro only:
|
|
4738
|
+
* `409 spending_limit_not_applicable` on Free and on a granted Pro (`details.reason`). Out
|
|
4739
|
+
* of range is `400 limit_out_of_range` with `details.maxCents`. Audited as
|
|
4740
|
+
* `project.spending_limit`.
|
|
4741
|
+
*
|
|
4742
|
+
* Refusals: `409 memory_limit_below_use` lowers app memory below the 14-day p99
|
|
4743
|
+
* (`details.p99Bytes`) — send `confirm: true` to set it anyway; `409
|
|
4744
|
+
* memory_limit_exceeds_node` raises past what the project's server can offer
|
|
4745
|
+
* (`details.maxBytes`); `409 memory_limit_set_by_operator` raises past a value Runlot set;
|
|
4746
|
+
* `400 limit_out_of_range` is outside the bounds (`details.field`). Requires admin. Memory
|
|
4747
|
+
* and CPU changes are audited as `project.limits`.
|
|
4748
|
+
*/
|
|
4749
|
+
put: operations["setProjectLimits"];
|
|
4750
|
+
post?: never;
|
|
4751
|
+
delete?: never;
|
|
4752
|
+
options?: never;
|
|
4753
|
+
head?: never;
|
|
4754
|
+
patch?: never;
|
|
4755
|
+
trace?: never;
|
|
4756
|
+
};
|
|
4582
4757
|
"/v1/orgs/{orgSlug}/members": {
|
|
4583
4758
|
parameters: {
|
|
4584
4759
|
query?: never;
|
|
@@ -7168,6 +7343,126 @@ export interface paths {
|
|
|
7168
7343
|
patch?: never;
|
|
7169
7344
|
trace?: never;
|
|
7170
7345
|
};
|
|
7346
|
+
"/v1/orgs/{orgSlug}/projects/{projectName}/health": {
|
|
7347
|
+
parameters: {
|
|
7348
|
+
query?: never;
|
|
7349
|
+
header?: never;
|
|
7350
|
+
path: {
|
|
7351
|
+
orgSlug: string;
|
|
7352
|
+
projectName: string;
|
|
7353
|
+
};
|
|
7354
|
+
cookie?: never;
|
|
7355
|
+
};
|
|
7356
|
+
/**
|
|
7357
|
+
* Read a project's capacity risks
|
|
7358
|
+
* @description The project's capacity risks: how close its memory, CPU, database, AI calls and the
|
|
7359
|
+
* organization's budget are to the hard limits they will hit, each with its evidence
|
|
7360
|
+
* and the next step. Call before a launch, after a deploy, and when the app is slow or
|
|
7361
|
+
* restarting. `checks` lists every signal: `unknown` means it was not measured (the
|
|
7362
|
+
* reason says why), which is not the same as `ok`. Every plan. Viewer.
|
|
7363
|
+
*/
|
|
7364
|
+
get: operations["getProjectHealth"];
|
|
7365
|
+
put?: never;
|
|
7366
|
+
post?: never;
|
|
7367
|
+
delete?: never;
|
|
7368
|
+
options?: never;
|
|
7369
|
+
head?: never;
|
|
7370
|
+
patch?: never;
|
|
7371
|
+
trace?: never;
|
|
7372
|
+
};
|
|
7373
|
+
"/v1/orgs/{orgSlug}/databases": {
|
|
7374
|
+
parameters: {
|
|
7375
|
+
query?: never;
|
|
7376
|
+
header?: never;
|
|
7377
|
+
path: {
|
|
7378
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
7379
|
+
};
|
|
7380
|
+
cookie?: never;
|
|
7381
|
+
};
|
|
7382
|
+
/**
|
|
7383
|
+
* Every database in the organization, with the projects that bind it
|
|
7384
|
+
* @description One row per database: its size against the plan's cap, whether it is running, and
|
|
7385
|
+
* every project that binds it with the binding name and mode — including the project
|
|
7386
|
+
* whose name it shares, as `db`. A database no project binds is `unbound`: it keeps
|
|
7387
|
+
* its data and its bill until it is deleted. Viewer and above.
|
|
7388
|
+
*/
|
|
7389
|
+
get: operations["listOrgDatabases"];
|
|
7390
|
+
put?: never;
|
|
7391
|
+
/**
|
|
7392
|
+
* Create a database in the organization (`runlot db create`)
|
|
7393
|
+
* @description Creates a database named `name` and places it, so it runs before any project binds
|
|
7394
|
+
* it. Projects bind it by name in `runlot.json`
|
|
7395
|
+
* (`"databases": [{"binding": "shared", "database": "<name>"}]`) and deploy. Member
|
|
7396
|
+
* and above.
|
|
7397
|
+
*
|
|
7398
|
+
* If `name` is a project without a database, this creates that project's own
|
|
7399
|
+
* database (its `env.db`), on every plan. A database that stands alone is Pro.
|
|
7400
|
+
*
|
|
7401
|
+
* Names share one namespace with projects: a name held by a project with a database
|
|
7402
|
+
* or by another database answers 409 `name_taken`. The plan's database count applies
|
|
7403
|
+
* (`database_limit`). It is idempotent for a project's own database: a second call
|
|
7404
|
+
* returns the same connection details.
|
|
7405
|
+
*/
|
|
7406
|
+
post: operations["createOrgDatabase"];
|
|
7407
|
+
delete?: never;
|
|
7408
|
+
options?: never;
|
|
7409
|
+
head?: never;
|
|
7410
|
+
patch?: never;
|
|
7411
|
+
trace?: never;
|
|
7412
|
+
};
|
|
7413
|
+
"/v1/orgs/{orgSlug}/databases/{databaseName}/bindings/{projectName}": {
|
|
7414
|
+
parameters: {
|
|
7415
|
+
query?: never;
|
|
7416
|
+
header?: never;
|
|
7417
|
+
path: {
|
|
7418
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
7419
|
+
/** @description A database's name in the organization */
|
|
7420
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
7421
|
+
projectName: components["parameters"]["ProjectName"];
|
|
7422
|
+
};
|
|
7423
|
+
cookie?: never;
|
|
7424
|
+
};
|
|
7425
|
+
get?: never;
|
|
7426
|
+
put?: never;
|
|
7427
|
+
post?: never;
|
|
7428
|
+
/**
|
|
7429
|
+
* Remove a project's binding to this database
|
|
7430
|
+
* @description For a project nobody will redeploy: its running app loses `env.<binding>` shortly
|
|
7431
|
+
* and calls on it fail with `DatabaseNotAttached`. A binding is otherwise written and
|
|
7432
|
+
* removed by the project's own deploy from its `runlot.json`, so a later deploy that
|
|
7433
|
+
* still names this database binds it again. The project whose name the database
|
|
7434
|
+
* shares cannot be unbound (delete the database instead). Admin and above.
|
|
7435
|
+
*/
|
|
7436
|
+
delete: operations["unbindDatabase"];
|
|
7437
|
+
options?: never;
|
|
7438
|
+
head?: never;
|
|
7439
|
+
patch?: never;
|
|
7440
|
+
trace?: never;
|
|
7441
|
+
};
|
|
7442
|
+
"/v1/orgs/{orgSlug}/health": {
|
|
7443
|
+
parameters: {
|
|
7444
|
+
query?: never;
|
|
7445
|
+
header?: never;
|
|
7446
|
+
path: {
|
|
7447
|
+
orgSlug: string;
|
|
7448
|
+
};
|
|
7449
|
+
cookie?: never;
|
|
7450
|
+
};
|
|
7451
|
+
/**
|
|
7452
|
+
* Read every project's capacity status
|
|
7453
|
+
* @description One line per project of the organization: its worst open capacity risk and how many
|
|
7454
|
+
* are open, and the organization's budget check. Use it to find the project that needs
|
|
7455
|
+
* `getProjectHealth`. Viewer.
|
|
7456
|
+
*/
|
|
7457
|
+
get: operations["getOrgHealth"];
|
|
7458
|
+
put?: never;
|
|
7459
|
+
post?: never;
|
|
7460
|
+
delete?: never;
|
|
7461
|
+
options?: never;
|
|
7462
|
+
head?: never;
|
|
7463
|
+
patch?: never;
|
|
7464
|
+
trace?: never;
|
|
7465
|
+
};
|
|
7171
7466
|
"/v1/orgs/{orgSlug}/projects/{projectName}/synthetics": {
|
|
7172
7467
|
parameters: {
|
|
7173
7468
|
query?: never;
|
|
@@ -9062,7 +9357,7 @@ export interface components {
|
|
|
9062
9357
|
MonitorQuery: {
|
|
9063
9358
|
/** @enum {string} */
|
|
9064
9359
|
source?: "apm" | "database" | "infra" | "custom";
|
|
9065
|
-
/** @description apm: requests, errors, error_rate (percent), status_4xx, status_5xx, latency_avg, latency_p50, latency_p75, latency_p90, latency_p95, latency_p99, latency_p999. database: calls, errors, latency_avg, latency_p50, latency_p95, latency_p99, wait_share (percent of route wall time). infra: memory_pct, memory_bytes, psi_cpu_some, psi_mem_some, psi_mem_full, psi_io_some, oom_kills, oom_exits, high_events, cpu_throttled_us. */
|
|
9360
|
+
/** @description apm: requests, errors, error_rate (percent), status_4xx, status_5xx, latency_avg, latency_p50, latency_p75, latency_p90, latency_p95, latency_p99, latency_p999. database: calls, errors, latency_avg, latency_p50, latency_p95, latency_p99, wait_share (percent of route wall time). infra: memory_pct, memory_bytes, cpu_cores (cores used over the sampled minutes; an app uses at most one), psi_cpu_some, psi_mem_some, psi_mem_full, psi_io_some, oom_kills, oom_exits, high_events, cpu_throttled_us. */
|
|
9066
9361
|
metric?: string;
|
|
9067
9362
|
name?: string;
|
|
9068
9363
|
/** @enum {string} */
|
|
@@ -9900,7 +10195,7 @@ export interface components {
|
|
|
9900
10195
|
* human-readable wording is produced separately by the dashboard and by email.
|
|
9901
10196
|
* @enum {string}
|
|
9902
10197
|
*/
|
|
9903
|
-
kind: "project_limit" | "db_near_cap" | "storage_near_quota" | "storage_quota_hit" | "backup_failed" | "cron_failed" | "queue_failed" | "queue_ops_cap" | "build_failed" | "restore_done" | "dns_publish_stalled" | "billing_past_due" | "overage_charge_failed" | "domain_renewal_failed" | "disabled_project_deletion" | "backup_stalled" | "backup_no_restore_point" | "backup_chain_broken" | "backup_always_full" | "budget_exhausted" | "ai_credit_low" | "ai_credit_exhausted" | "ai_autotopup_failed" | "ai_autotopup_disabled" | "license_expiring" | "license_grace" | "license_restricted" | "new_device" | "error_issue_new" | "app_out_of_memory" | "monitor_alert" | "watchdog_digest";
|
|
10198
|
+
kind: "project_limit" | "db_near_cap" | "storage_near_quota" | "storage_quota_hit" | "backup_failed" | "cron_failed" | "queue_failed" | "queue_ops_cap" | "build_failed" | "restore_done" | "dns_publish_stalled" | "billing_past_due" | "overage_charge_failed" | "domain_renewal_failed" | "disabled_project_deletion" | "backup_stalled" | "backup_no_restore_point" | "backup_chain_broken" | "backup_always_full" | "budget_exhausted" | "ai_credit_low" | "ai_credit_exhausted" | "ai_autotopup_failed" | "ai_autotopup_disabled" | "license_expiring" | "license_grace" | "license_restricted" | "new_device" | "error_issue_new" | "app_out_of_memory" | "monitor_alert" | "watchdog_digest" | "capacity_risk" | "budget_near";
|
|
9904
10199
|
/** @description If this is a project-related notification, the name of that project. Absent for org-level notifications (`project_limit`) */
|
|
9905
10200
|
projectName?: string;
|
|
9906
10201
|
/**
|
|
@@ -9917,6 +10212,11 @@ export interface components {
|
|
|
9917
10212
|
* `{app, clientId, device}`, `error_issue_new` is `{issueId, shortId, title, origin}` and
|
|
9918
10213
|
* `app_out_of_memory` is `{issueId, limitMiB, peakMiB, release}`.
|
|
9919
10214
|
* `monitor_alert` is `{monitorId, monitorName, monitorKind, monitorState, monitorGroup, monitorValue, monitorThreshold, monitorMessage, monitorLink}`.
|
|
10215
|
+
* `capacity_risk` is `{insightId, signal, severity, route, summary, magnitude}` and
|
|
10216
|
+
* `budget_near` is `{kind, used, limit, period, until}` (kind is `requests`, `cpu` or `spend`,
|
|
10217
|
+
* or `project_spend` for a project's own spending limit, with the project set and `used`
|
|
10218
|
+
* and `limit` in cents). `budget_exhausted` is `{throttled, until, plan}`; a project's own
|
|
10219
|
+
* limit carries `throttled: ["project_spend"]`, the project and the limit in `cents`.
|
|
9920
10220
|
*/
|
|
9921
10221
|
detail: {
|
|
9922
10222
|
[key: string]: unknown;
|
|
@@ -9932,6 +10232,15 @@ export interface components {
|
|
|
9932
10232
|
Project: {
|
|
9933
10233
|
/** Format: uuid */
|
|
9934
10234
|
projectId: string;
|
|
10235
|
+
/**
|
|
10236
|
+
* @description Only on the answer to creating a project: the organization already had a database
|
|
10237
|
+
* with this name (its project was deleted earlier), and the new project uses it as
|
|
10238
|
+
* `env.db`. `runlot deploy` prints it on its first line.
|
|
10239
|
+
*/
|
|
10240
|
+
existingDatabase?: {
|
|
10241
|
+
/** Format: int64 */
|
|
10242
|
+
sizeBytes: number | null;
|
|
10243
|
+
};
|
|
9935
10244
|
orgSlug: components["schemas"]["Slug"];
|
|
9936
10245
|
name: components["schemas"]["Slug"];
|
|
9937
10246
|
hostnames: string[];
|
|
@@ -10020,7 +10329,7 @@ export interface components {
|
|
|
10020
10329
|
/** @description A deployment in the overview. Same shape as `Deployment`, including `actor`. */
|
|
10021
10330
|
OverviewDeployment: components["schemas"]["Deployment"];
|
|
10022
10331
|
OverviewDatabase: {
|
|
10023
|
-
/** @description Whether the project has a database. One is created when the app uses it, or by `runlot
|
|
10332
|
+
/** @description Whether the project has a database. One is created when the app uses it, or by `runlot db create <project>`. */
|
|
10024
10333
|
granted: boolean;
|
|
10025
10334
|
/**
|
|
10026
10335
|
* Format: date-time
|
|
@@ -10110,6 +10419,8 @@ export interface components {
|
|
|
10110
10419
|
* contradicts, or a recognised framework deployed without `runWorkerFirst: false`.
|
|
10111
10420
|
*/
|
|
10112
10421
|
warnings?: string[];
|
|
10422
|
+
/** @description What the deploy-time static checks found in this deployment's code. Absent when it was not checked. */
|
|
10423
|
+
staticChecks?: components["schemas"]["DeployStaticChecks"];
|
|
10113
10424
|
};
|
|
10114
10425
|
/**
|
|
10115
10426
|
* @description The one address Studio hands to a person who is not a developer
|
|
@@ -11633,7 +11944,7 @@ export interface components {
|
|
|
11633
11944
|
available: boolean;
|
|
11634
11945
|
/** @description **Always `false`.** The database and the objects are not restored to one consistent instant, so do not present a single restore time for both. */
|
|
11635
11946
|
atomic: boolean;
|
|
11636
|
-
/** @description `available && complete` — eligibility, not a success guarantee. The restore call (`POST /orgs/{orgSlug}/
|
|
11947
|
+
/** @description `available && complete` — eligibility, not a success guarantee. The restore call (`POST /orgs/{orgSlug}/databases/{databaseName}/restore`) refuses outright when `missing` or `gaps` is non-empty, so `false` here means the call is not worth attempting. `true` means only that the preflight would pass; the restore can still fail afterwards on a holder's own store (unreachable node, a lost or corrupted archive, a digest mismatch found only when the file is read). It is also computed at this response's `at`, which is one instant for the whole project — a restore targets one generation's own `lastAt`, so re-query with `?at=<that generation's lastAt>` before trusting this field for that restore. */
|
|
11637
11948
|
restorable: boolean;
|
|
11638
11949
|
/** Format: date-time */
|
|
11639
11950
|
at?: string;
|
|
@@ -11801,17 +12112,64 @@ export interface components {
|
|
|
11801
12112
|
* @example app
|
|
11802
12113
|
*/
|
|
11803
12114
|
confirm: string;
|
|
12115
|
+
/**
|
|
12116
|
+
* @description Remove every binding of this database first. Without it, a bound database
|
|
12117
|
+
* refuses the deletion with 409 `database_bound`.
|
|
12118
|
+
*/
|
|
12119
|
+
unbindAll?: boolean;
|
|
12120
|
+
};
|
|
12121
|
+
OrgDatabase: {
|
|
12122
|
+
/** @description The database's name in the organization */
|
|
12123
|
+
name: string;
|
|
12124
|
+
/** Format: date-time */
|
|
12125
|
+
createdAt: string;
|
|
12126
|
+
/**
|
|
12127
|
+
* Format: int64
|
|
12128
|
+
* @description The last measured size, when one has been reported
|
|
12129
|
+
*/
|
|
12130
|
+
sizeBytes: number | null;
|
|
12131
|
+
/**
|
|
12132
|
+
* Format: int64
|
|
12133
|
+
* @description The plan's size cap for one database
|
|
12134
|
+
*/
|
|
12135
|
+
capBytes: number;
|
|
12136
|
+
/**
|
|
12137
|
+
* @description `running`: placed on a node (an idle database stops after a few minutes and
|
|
12138
|
+
* starts again on the next connection). `cold`: stored offsite, woken by the next
|
|
12139
|
+
* connection. `none`: not placed yet (its project was never deployed).
|
|
12140
|
+
* @enum {string}
|
|
12141
|
+
*/
|
|
12142
|
+
state: "running" | "cold" | "none";
|
|
12143
|
+
/** @description No project of the same name exists: the database stands alone */
|
|
12144
|
+
standalone: boolean;
|
|
12145
|
+
/** @description No project binds it, including one of the same name */
|
|
12146
|
+
unbound: boolean;
|
|
12147
|
+
/**
|
|
12148
|
+
* @description Projects that reach this database. The project of the same name, if any, is listed
|
|
12149
|
+
* with `binding: db`.
|
|
12150
|
+
*/
|
|
12151
|
+
bindings: components["schemas"]["DatabaseBinding"][];
|
|
12152
|
+
};
|
|
12153
|
+
DatabaseBinding: {
|
|
12154
|
+
project: string;
|
|
12155
|
+
/** @example service_db */
|
|
12156
|
+
binding: string;
|
|
12157
|
+
/** @enum {string} */
|
|
12158
|
+
mode: "write" | "read";
|
|
12159
|
+
};
|
|
12160
|
+
OrgDatabases: {
|
|
12161
|
+
databases: components["schemas"]["OrgDatabase"][];
|
|
11804
12162
|
};
|
|
11805
12163
|
/**
|
|
11806
12164
|
* @description This response means the multi-step operation was queued (202). **It does not mean it
|
|
11807
|
-
* finished** — check progress at `…/
|
|
12165
|
+
* finished** — check progress at `…/databases/{databaseName}/operations/{opId}`.
|
|
11808
12166
|
*/
|
|
11809
12167
|
OperationStarted: {
|
|
11810
12168
|
/** Format: uuid */
|
|
11811
12169
|
projectId: string;
|
|
11812
12170
|
opId: string;
|
|
11813
12171
|
/** @enum {string} */
|
|
11814
|
-
kind: "restore_generation" | "delete_database" | "delete_project" | "purge_project" | "evict" | "restore";
|
|
12172
|
+
kind: "restore_generation" | "delete_database" | "delete_project" | "purge_project" | "retire_app" | "evict" | "restore";
|
|
11815
12173
|
/** Format: int64 */
|
|
11816
12174
|
epoch: number;
|
|
11817
12175
|
node?: string;
|
|
@@ -11822,6 +12180,12 @@ export interface components {
|
|
|
11822
12180
|
* value rather than computing it from a retention window.
|
|
11823
12181
|
*/
|
|
11824
12182
|
purgeAfter?: string;
|
|
12183
|
+
/**
|
|
12184
|
+
* @description Project deletion only: the name of the project's database, which stays in the
|
|
12185
|
+
* organization (listed under databases; delete it with `runlot db delete`). Absent
|
|
12186
|
+
* when the project had no database.
|
|
12187
|
+
*/
|
|
12188
|
+
databaseKept?: string;
|
|
11825
12189
|
};
|
|
11826
12190
|
Operation: {
|
|
11827
12191
|
opId: string;
|
|
@@ -12016,11 +12380,42 @@ export interface components {
|
|
|
12016
12380
|
* of `@runlot/auth`; a `migrations/NNNN_*.sql` file; or `env.db` / `env.DB` in the
|
|
12017
12381
|
* project's own sources. A value set in your `runlot.json` wins over that guess.
|
|
12018
12382
|
* - **`false`** — never create one. Neither the deployment nor a call creates it, and
|
|
12019
|
-
* `env.db` rejects with `DatabaseNotEnabled`. `runlot
|
|
12383
|
+
* `env.db` rejects with `DatabaseNotEnabled`. `runlot db create <project>` still creates one,
|
|
12020
12384
|
* because it asks by name. Declaring `queues` with `false` is refused with a 400:
|
|
12021
12385
|
* queue messages are kept in the database.
|
|
12022
12386
|
*/
|
|
12023
12387
|
database?: boolean;
|
|
12388
|
+
/**
|
|
12389
|
+
* @description Databases in the organization this code reaches, each as `env.<binding>`. The
|
|
12390
|
+
* deployment binds them: it adds, changes and removes this project's bindings to
|
|
12391
|
+
* match this list, and a database that does not exist is refused with 409
|
|
12392
|
+
* `database_not_found` (create it with `runlot db create`). At most two besides
|
|
12393
|
+
* `db`; binding a database into a second project is Pro.
|
|
12394
|
+
*
|
|
12395
|
+
* `{"binding": "db", "database": "<this project's name>"}` is the explicit form of
|
|
12396
|
+
* the default `env.db`; `db` cannot name another database yet. A bound database is
|
|
12397
|
+
* not this project's own `env.db`, and naming one does not create a database for
|
|
12398
|
+
* this project.
|
|
12399
|
+
*/
|
|
12400
|
+
databases?: {
|
|
12401
|
+
/** @example service_db */
|
|
12402
|
+
binding: string;
|
|
12403
|
+
/** @description The database's name, in the same organization */
|
|
12404
|
+
database: string;
|
|
12405
|
+
/**
|
|
12406
|
+
* @description `write` runs statements as the database owner. `read` runs every statement
|
|
12407
|
+
* as a read-only role.
|
|
12408
|
+
* @default write
|
|
12409
|
+
* @enum {string}
|
|
12410
|
+
*/
|
|
12411
|
+
mode: "write" | "read";
|
|
12412
|
+
/**
|
|
12413
|
+
* @description Path to the database's `migrations/`, used only by `runlot dev` to prepare
|
|
12414
|
+
* the local stand-in database. A deployment never applies it
|
|
12415
|
+
* (`runlot db migrate <name>` does).
|
|
12416
|
+
*/
|
|
12417
|
+
migrations?: string;
|
|
12418
|
+
}[];
|
|
12024
12419
|
/**
|
|
12025
12420
|
* @description Declares email sending and receiving. When `true`, the worker receives
|
|
12026
12421
|
* `env.email`, and `export default { email() }` becomes the receiving handler.
|
|
@@ -12783,8 +13178,9 @@ export interface components {
|
|
|
12783
13178
|
byosCreditFallback?: boolean;
|
|
12784
13179
|
/**
|
|
12785
13180
|
* @description How many members of the project's organization have a Studio desktop lending to
|
|
12786
|
-
* apps right now. Present
|
|
12787
|
-
*
|
|
13181
|
+
* apps right now. Present on the answer to a PATCH that leaves `byos` on, on a GET
|
|
13182
|
+
* while `byos` is on and `byosCreditFallback` off, and only when Studio could be
|
|
13183
|
+
* asked. With `byos` on, `byosCreditFallback` off and 0
|
|
12788
13184
|
* here, every lendable call is refused.
|
|
12789
13185
|
*/
|
|
12790
13186
|
byosLenders?: number;
|
|
@@ -12970,6 +13366,8 @@ export interface components {
|
|
|
12970
13366
|
tags: string[];
|
|
12971
13367
|
hasBody: boolean;
|
|
12972
13368
|
deploymentVersion: number;
|
|
13369
|
+
/** @description The cache counts the provider did not report: their 0 above means unknown, not none. Absent when both were reported, or on a call recorded before the field existed. */
|
|
13370
|
+
cacheUnreported?: ("cachedInputTokens" | "cacheWriteInputTokens")[];
|
|
12973
13371
|
};
|
|
12974
13372
|
AICallDetail: components["schemas"]["AICallRow"] & {
|
|
12975
13373
|
input?: string;
|
|
@@ -13029,6 +13427,16 @@ export interface components {
|
|
|
13029
13427
|
p50Ms: number;
|
|
13030
13428
|
p95Ms: number;
|
|
13031
13429
|
ttftP50Ms: number;
|
|
13430
|
+
/**
|
|
13431
|
+
* Format: int64
|
|
13432
|
+
* @description tokensIn over the chat calls whose provider reported a read count. The hit rate is tokensCachedReadKnown / tokensInReadKnown; 0 here (no such call, or only hours rolled up before the field) means no hit rate, not 0 %.
|
|
13433
|
+
*/
|
|
13434
|
+
tokensInReadKnown?: number;
|
|
13435
|
+
/**
|
|
13436
|
+
* Format: int64
|
|
13437
|
+
* @description tokensCached over the same calls as tokensInReadKnown.
|
|
13438
|
+
*/
|
|
13439
|
+
tokensCachedReadKnown?: number;
|
|
13032
13440
|
};
|
|
13033
13441
|
series?: {
|
|
13034
13442
|
/** Format: date-time */
|
|
@@ -13069,6 +13477,16 @@ export interface components {
|
|
|
13069
13477
|
byosServed: number;
|
|
13070
13478
|
p50Ms: number;
|
|
13071
13479
|
p95Ms: number;
|
|
13480
|
+
/**
|
|
13481
|
+
* Format: int64
|
|
13482
|
+
* @description As in totals.
|
|
13483
|
+
*/
|
|
13484
|
+
tokensInReadKnown?: number;
|
|
13485
|
+
/**
|
|
13486
|
+
* Format: int64
|
|
13487
|
+
* @description As in totals.
|
|
13488
|
+
*/
|
|
13489
|
+
tokensCachedReadKnown?: number;
|
|
13072
13490
|
}[];
|
|
13073
13491
|
byosReasons?: {
|
|
13074
13492
|
code: string;
|
|
@@ -13116,6 +13534,10 @@ export interface components {
|
|
|
13116
13534
|
email: string;
|
|
13117
13535
|
};
|
|
13118
13536
|
device: string;
|
|
13537
|
+
/** @description False for a desktop that is online but has lending to apps switched off in Studio. Such a desktop is never offered a call, and its `models` is empty. */
|
|
13538
|
+
lending: boolean;
|
|
13539
|
+
/** @description The desktop app's own version. Absent from a desktop that does not announce it. */
|
|
13540
|
+
studioVersion?: string;
|
|
13119
13541
|
models: string[];
|
|
13120
13542
|
options: string[];
|
|
13121
13543
|
outdated: boolean;
|
|
@@ -13123,6 +13545,10 @@ export interface components {
|
|
|
13123
13545
|
vendor: string;
|
|
13124
13546
|
connected: boolean;
|
|
13125
13547
|
version?: string;
|
|
13548
|
+
/** @description How the vendor is signed in on the desktop: `claudeai`, `console`, `bedrock`, `vertex`, `foundry`, `chatgpt`, `device` or `apikey` */
|
|
13549
|
+
via?: string;
|
|
13550
|
+
/** @description The vendor's plan code for the signed-in account (`plus`, `pro`, `max` …), when the desktop knows it. The vendor account's email is never sent. */
|
|
13551
|
+
planType?: string;
|
|
13126
13552
|
}[];
|
|
13127
13553
|
inflight: number;
|
|
13128
13554
|
/** @description How many lent calls at once this desktop's owner allows (1–8; 2 when the desktop does not say) */
|
|
@@ -13324,43 +13750,230 @@ export interface components {
|
|
|
13324
13750
|
pro: components["schemas"]["PlanLimits"];
|
|
13325
13751
|
};
|
|
13326
13752
|
};
|
|
13327
|
-
/** @description The
|
|
13328
|
-
|
|
13329
|
-
|
|
13330
|
-
/**
|
|
13331
|
-
|
|
13753
|
+
/** @description The org's spending limit and this month's overage against it. */
|
|
13754
|
+
SpendingLimit: {
|
|
13755
|
+
orgId: string;
|
|
13756
|
+
/** @enum {string} */
|
|
13757
|
+
plan: "free" | "pro";
|
|
13758
|
+
/** @description The plan's billing status (active, past_due, canceled, granted), empty on Free */
|
|
13759
|
+
status: string;
|
|
13760
|
+
/** @description False on Free and on a granted Pro: the limit does nothing there */
|
|
13761
|
+
applies: boolean;
|
|
13762
|
+
/** @enum {string} */
|
|
13763
|
+
notApplicableReason?: "free" | "granted";
|
|
13764
|
+
/** @description The limit, in cents per month above the included amounts */
|
|
13765
|
+
cents: number;
|
|
13766
|
+
/** @description The default limit ($20) */
|
|
13767
|
+
defaultCents: number;
|
|
13768
|
+
/** @description The most it can be set to here ($1,000) */
|
|
13769
|
+
maxCents: number;
|
|
13332
13770
|
/**
|
|
13333
|
-
* Format:
|
|
13334
|
-
* @description
|
|
13335
|
-
* dashboard's usage meter and chart read this value, and you are notified when a
|
|
13336
|
-
* project passes 90% of it.
|
|
13771
|
+
* Format: date
|
|
13772
|
+
* @description First day of the month the overage belongs to
|
|
13337
13773
|
*/
|
|
13338
|
-
|
|
13339
|
-
/** @description how many database generations are retained */
|
|
13340
|
-
backupKeep: number;
|
|
13341
|
-
crons: number;
|
|
13342
|
-
mailPerHour: number;
|
|
13343
|
-
};
|
|
13344
|
-
/**
|
|
13345
|
-
* @description The state of the project's dedicated object storage.
|
|
13346
|
-
*
|
|
13347
|
-
* **Objects are not part of database generations** — `runlot pg restore` does not roll back
|
|
13348
|
-
* files. Read-after-write is guaranteed, but `list` may lag.
|
|
13349
|
-
*/
|
|
13350
|
-
StorageStatus: {
|
|
13774
|
+
month: string;
|
|
13351
13775
|
/**
|
|
13352
|
-
*
|
|
13353
|
-
*
|
|
13776
|
+
* Format: int64
|
|
13777
|
+
* @description This month's accrued overage (1 cent = 1,000,000)
|
|
13354
13778
|
*/
|
|
13355
|
-
|
|
13779
|
+
overageMicroCents: number;
|
|
13356
13780
|
/**
|
|
13357
|
-
* @description
|
|
13358
|
-
*
|
|
13359
|
-
*
|
|
13360
|
-
*
|
|
13781
|
+
* @description This month's overage by axis, in microcents. The platform axes are the nominal price
|
|
13782
|
+
* of what was used; `collection` is what error and observability collection was billed
|
|
13783
|
+
* within the limit. Their sum can exceed `overageMicroCents` when held storage and memory
|
|
13784
|
+
* were stopped at the limit.
|
|
13361
13785
|
*/
|
|
13362
|
-
|
|
13363
|
-
|
|
13786
|
+
breakdown: {
|
|
13787
|
+
/** Format: int64 */
|
|
13788
|
+
requests: number;
|
|
13789
|
+
/** Format: int64 */
|
|
13790
|
+
cpu: number;
|
|
13791
|
+
/** Format: int64 */
|
|
13792
|
+
storage: number;
|
|
13793
|
+
/** Format: int64 */
|
|
13794
|
+
memory: number;
|
|
13795
|
+
/** Format: int64 */
|
|
13796
|
+
collection: number;
|
|
13797
|
+
};
|
|
13798
|
+
/** @description The locks in force; `spend` is the spending limit */
|
|
13799
|
+
throttled: ("requests" | "cpu" | "spend")[];
|
|
13800
|
+
/**
|
|
13801
|
+
* Format: date-time
|
|
13802
|
+
* @description When the locks end
|
|
13803
|
+
*/
|
|
13804
|
+
throttledUntil: string | null;
|
|
13805
|
+
/** @description The limit before the change (PUT only) */
|
|
13806
|
+
previousCents?: number;
|
|
13807
|
+
/** @description The organization's projects, by name, with their own spending limits and shares */
|
|
13808
|
+
projects?: components["schemas"]["ProjectSpendLine"][];
|
|
13809
|
+
};
|
|
13810
|
+
/** @description One project's own spending limit and its share of this month's overage. */
|
|
13811
|
+
ProjectSpendLine: {
|
|
13812
|
+
name: string;
|
|
13813
|
+
/** @description The project's own limit in cents; null is none (only the organization's applies) */
|
|
13814
|
+
cents: number | null;
|
|
13815
|
+
/**
|
|
13816
|
+
* Format: int64
|
|
13817
|
+
* @description The project's share of the organization's overage this month (1 cent = 1,000,000)
|
|
13818
|
+
*/
|
|
13819
|
+
shareMicroCents: number;
|
|
13820
|
+
breakdown: components["schemas"]["ProjectSpendBreakdown"];
|
|
13821
|
+
/** @description The project's own limit is spent: its requests get 429 project_budget_exhausted */
|
|
13822
|
+
throttled: boolean;
|
|
13823
|
+
/**
|
|
13824
|
+
* Format: date-time
|
|
13825
|
+
* @description When the project's lock ends
|
|
13826
|
+
*/
|
|
13827
|
+
throttledUntil: string | null;
|
|
13828
|
+
};
|
|
13829
|
+
/** @description A project's share by axis, in microcents. Collection is not part of a project's share. */
|
|
13830
|
+
ProjectSpendBreakdown: {
|
|
13831
|
+
/** Format: int64 */
|
|
13832
|
+
requests: number;
|
|
13833
|
+
/** Format: int64 */
|
|
13834
|
+
cpu: number;
|
|
13835
|
+
/** Format: int64 */
|
|
13836
|
+
storage: number;
|
|
13837
|
+
/** Format: int64 */
|
|
13838
|
+
memory: number;
|
|
13839
|
+
};
|
|
13840
|
+
SpendingLimitUpdate: {
|
|
13841
|
+
/** @description The new limit in cents */
|
|
13842
|
+
cents: number;
|
|
13843
|
+
};
|
|
13844
|
+
/** @description A project's app memory, per-request CPU and spending limits. */
|
|
13845
|
+
ProjectLimits: {
|
|
13846
|
+
projectId: string;
|
|
13847
|
+
/** @enum {string} */
|
|
13848
|
+
plan: "free" | "pro";
|
|
13849
|
+
hasDatabase: boolean;
|
|
13850
|
+
appMemory: {
|
|
13851
|
+
/**
|
|
13852
|
+
* Format: int64
|
|
13853
|
+
* @description The most one copy of the app may use
|
|
13854
|
+
*/
|
|
13855
|
+
bytes: number;
|
|
13856
|
+
/**
|
|
13857
|
+
* Format: int64
|
|
13858
|
+
* @description The value with no project setting
|
|
13859
|
+
*/
|
|
13860
|
+
planBytes: number;
|
|
13861
|
+
/** Format: int64 */
|
|
13862
|
+
minBytes: number;
|
|
13863
|
+
/**
|
|
13864
|
+
* Format: int64
|
|
13865
|
+
* @description The most it can be set to now (plan and server together)
|
|
13866
|
+
*/
|
|
13867
|
+
maxBytes: number;
|
|
13868
|
+
/**
|
|
13869
|
+
* Format: int64
|
|
13870
|
+
* @description The project's memory cap, database and app together
|
|
13871
|
+
*/
|
|
13872
|
+
projectBytes: number;
|
|
13873
|
+
/**
|
|
13874
|
+
* Format: int64
|
|
13875
|
+
* @description Memory a project-hour holds without being billed
|
|
13876
|
+
*/
|
|
13877
|
+
includedProjectBytes: number;
|
|
13878
|
+
/** @description Memory above includedProjectBytes is billed for this project */
|
|
13879
|
+
billed: boolean;
|
|
13880
|
+
/**
|
|
13881
|
+
* @description Who set the value; null is the plan's
|
|
13882
|
+
* @enum {string|null}
|
|
13883
|
+
*/
|
|
13884
|
+
setBy: "customer" | "operator" | null;
|
|
13885
|
+
/**
|
|
13886
|
+
* Format: int64
|
|
13887
|
+
* @description 14-day p99 hourly peak, database and app together
|
|
13888
|
+
*/
|
|
13889
|
+
p99Bytes: number | null;
|
|
13890
|
+
};
|
|
13891
|
+
requestCpu: {
|
|
13892
|
+
/** @description CPU one request may spend, in milliseconds */
|
|
13893
|
+
ms: number;
|
|
13894
|
+
planMs: number;
|
|
13895
|
+
minMs: number;
|
|
13896
|
+
maxMs: number;
|
|
13897
|
+
/** @enum {string|null} */
|
|
13898
|
+
setBy: "customer" | null;
|
|
13899
|
+
};
|
|
13900
|
+
/** @description The project's own spending limit, under the organization's, and its share this month */
|
|
13901
|
+
spend: {
|
|
13902
|
+
/** @description False on Free and on a granted Pro: a limit does nothing there */
|
|
13903
|
+
applies: boolean;
|
|
13904
|
+
/** @enum {string} */
|
|
13905
|
+
notApplicableReason?: "free" | "granted";
|
|
13906
|
+
/** @description The project's own limit in cents a month; null is none */
|
|
13907
|
+
cents: number | null;
|
|
13908
|
+
/** @description The organization's spending limit, the most this one can be set to */
|
|
13909
|
+
orgCents: number;
|
|
13910
|
+
/**
|
|
13911
|
+
* Format: date
|
|
13912
|
+
* @description First day of the month the share belongs to
|
|
13913
|
+
*/
|
|
13914
|
+
month: string;
|
|
13915
|
+
/**
|
|
13916
|
+
* Format: int64
|
|
13917
|
+
* @description The project's share of the organization's overage this month (1 cent = 1,000,000)
|
|
13918
|
+
*/
|
|
13919
|
+
shareMicroCents: number;
|
|
13920
|
+
breakdown: components["schemas"]["ProjectSpendBreakdown"];
|
|
13921
|
+
/** @description The limit is spent: this project's requests get 429 project_budget_exhausted */
|
|
13922
|
+
throttled: boolean;
|
|
13923
|
+
/**
|
|
13924
|
+
* Format: date-time
|
|
13925
|
+
* @description When the project's lock ends
|
|
13926
|
+
*/
|
|
13927
|
+
throttledUntil: string | null;
|
|
13928
|
+
};
|
|
13929
|
+
};
|
|
13930
|
+
/** @description A field left out is unchanged; null puts it back on the plan's value (for spendCents: no limit of the project's own). */
|
|
13931
|
+
ProjectLimitsUpdate: {
|
|
13932
|
+
/** Format: int64 */
|
|
13933
|
+
appMemoryBytes?: number | null;
|
|
13934
|
+
requestCpuMs?: number | null;
|
|
13935
|
+
/** @description The project's own spending limit in cents a month, at most the organization's */
|
|
13936
|
+
spendCents?: number | null;
|
|
13937
|
+
/** @description Set app memory below the 14-day p99 anyway */
|
|
13938
|
+
confirm?: boolean;
|
|
13939
|
+
};
|
|
13940
|
+
/** @description The limits that apply to one plan */
|
|
13941
|
+
PlanLimits: {
|
|
13942
|
+
projects: number;
|
|
13943
|
+
/** Format: int64 */
|
|
13944
|
+
storageBytes: number;
|
|
13945
|
+
/**
|
|
13946
|
+
* Format: int64
|
|
13947
|
+
* @description The project Postgres size cap for this plan (Free 500 MiB, Pro 8 GiB). The
|
|
13948
|
+
* dashboard's usage meter and chart read this value, and you are notified when a
|
|
13949
|
+
* project passes 90% of it.
|
|
13950
|
+
*/
|
|
13951
|
+
dbCapBytes: number;
|
|
13952
|
+
/** @description how many database generations are retained */
|
|
13953
|
+
backupKeep: number;
|
|
13954
|
+
crons: number;
|
|
13955
|
+
mailPerHour: number;
|
|
13956
|
+
};
|
|
13957
|
+
/**
|
|
13958
|
+
* @description The state of the project's dedicated object storage.
|
|
13959
|
+
*
|
|
13960
|
+
* **Objects are not part of database generations** — `runlot db restore` does not roll back
|
|
13961
|
+
* files. Read-after-write is guaranteed, but `list` may lag.
|
|
13962
|
+
*/
|
|
13963
|
+
StorageStatus: {
|
|
13964
|
+
/**
|
|
13965
|
+
* @description Whether object storage is turned on for this project. When it is off, there is no
|
|
13966
|
+
* bucket at all, and `prefix` and `quotaBytes` are empty.
|
|
13967
|
+
*/
|
|
13968
|
+
granted: boolean;
|
|
13969
|
+
/**
|
|
13970
|
+
* @description The prefix every object of this project is stored under. It is added for you, so
|
|
13971
|
+
* your own keys stay relative to it and no key you send can reach another project's
|
|
13972
|
+
* storage. Empty when storage is not configured.
|
|
13973
|
+
* @example p/6f1a0b4c-0000-0000-0000-000000000001/
|
|
13974
|
+
*/
|
|
13975
|
+
prefix: string;
|
|
13976
|
+
/**
|
|
13364
13977
|
* Format: int64
|
|
13365
13978
|
* @description The quota (10 GiB on Free, 100 GiB on Pro). Once you exceed it, only `put` and
|
|
13366
13979
|
* `presign(PUT)` are rejected — `get`, `list`, and `delete` keep working, so you can
|
|
@@ -14224,6 +14837,150 @@ export interface components {
|
|
|
14224
14837
|
/** @description false on Free: deploy regressions only. */
|
|
14225
14838
|
full: boolean;
|
|
14226
14839
|
};
|
|
14840
|
+
/**
|
|
14841
|
+
* @description The worst open risk: alert, then warn; ok when none is open.
|
|
14842
|
+
* @enum {string}
|
|
14843
|
+
*/
|
|
14844
|
+
HealthStatus: "ok" | "warn" | "alert";
|
|
14845
|
+
HealthCheck: {
|
|
14846
|
+
/** @description app_memory, app_restarts, db_memory, app_cpu, request_cpu, app_stall, busy_latency, db_admission, rpc_not_disposed, ai_refusals, org_budget, project_budget, db_size, file_storage, log_cap or cron_overlap. */
|
|
14847
|
+
signal: string;
|
|
14848
|
+
/** @enum {string} */
|
|
14849
|
+
state: "ok" | "warn" | "alert" | "unknown";
|
|
14850
|
+
/** @description Why an `unknown` check was not measured. */
|
|
14851
|
+
reason?: string;
|
|
14852
|
+
};
|
|
14853
|
+
HealthEvidence: {
|
|
14854
|
+
/** @description What was measured, for example `peak`, `cores` or `share`. */
|
|
14855
|
+
name: string;
|
|
14856
|
+
value: number;
|
|
14857
|
+
/** @description bytes, fraction, cores, ms, count, per_second or cents. */
|
|
14858
|
+
unit: string;
|
|
14859
|
+
/** @description The hard limit the value is compared with, in the same unit. */
|
|
14860
|
+
limit?: number;
|
|
14861
|
+
/** @description The span the value covers, for example `24h` or `3d`. */
|
|
14862
|
+
window: string;
|
|
14863
|
+
};
|
|
14864
|
+
HealthRisk: {
|
|
14865
|
+
/** Format: uuid */
|
|
14866
|
+
id: string;
|
|
14867
|
+
signal: string;
|
|
14868
|
+
/** @enum {string} */
|
|
14869
|
+
severity: "warn" | "alert";
|
|
14870
|
+
/** @description The route, cron expression or log template the risk is about; absent when it is the whole project. */
|
|
14871
|
+
route?: string;
|
|
14872
|
+
/** Format: date-time */
|
|
14873
|
+
since: string;
|
|
14874
|
+
/** Format: date-time */
|
|
14875
|
+
updatedAt: string;
|
|
14876
|
+
/** @description One sentence: what, how close. */
|
|
14877
|
+
summary: string;
|
|
14878
|
+
evidence: components["schemas"]["HealthEvidence"][];
|
|
14879
|
+
/** @description Concrete steps, the most useful first. */
|
|
14880
|
+
next: string[];
|
|
14881
|
+
links: {
|
|
14882
|
+
label: string;
|
|
14883
|
+
/** @description A dashboard path under the project, for example `/observability/infrastructure?range=24h`. */
|
|
14884
|
+
path: string;
|
|
14885
|
+
}[];
|
|
14886
|
+
};
|
|
14887
|
+
CapacityEstimate: {
|
|
14888
|
+
/** @description The span the estimate reads: `3d`, the per-minute samples of the last three days. */
|
|
14889
|
+
window: string;
|
|
14890
|
+
/** @description Requests in the window that reached the app. Below 1,000 there is no estimate. */
|
|
14891
|
+
requests: number;
|
|
14892
|
+
/** @description Requests in the same minutes that Runlot answered before the app ran (outcome `unavailable`: the rate limit, the budget, the access gate, a failed wake). They cost the app no CPU, so the mean leaves them out. */
|
|
14893
|
+
refusedRequests?: number;
|
|
14894
|
+
busiestMinute?: {
|
|
14895
|
+
/** Format: date-time */
|
|
14896
|
+
at: string;
|
|
14897
|
+
/** @description Requests that reached the app, per second, in the busiest minute. */
|
|
14898
|
+
requestsPerSecond: number;
|
|
14899
|
+
appCores: number;
|
|
14900
|
+
ownerCores?: number;
|
|
14901
|
+
};
|
|
14902
|
+
appCpuMsPerRequest?: {
|
|
14903
|
+
mean: number;
|
|
14904
|
+
};
|
|
14905
|
+
/** @description 0.7 of one core divided by the mean app CPU per request. */
|
|
14906
|
+
ceilingRequestsPerSecond?: number;
|
|
14907
|
+
/** @description The ceiling divided by the busiest minute's rate. */
|
|
14908
|
+
headroom?: number;
|
|
14909
|
+
/** @description The app's peak memory as a fraction of its limit over the window. */
|
|
14910
|
+
memoryPeakFraction?: number;
|
|
14911
|
+
/** @description What the estimate cannot see. */
|
|
14912
|
+
notCovered: string[];
|
|
14913
|
+
};
|
|
14914
|
+
ProjectHealth: {
|
|
14915
|
+
/**
|
|
14916
|
+
* Format: date-time
|
|
14917
|
+
* @description When the checks last ran. Absent when they have never run for this project.
|
|
14918
|
+
*/
|
|
14919
|
+
checkedAt?: string;
|
|
14920
|
+
status: components["schemas"]["HealthStatus"];
|
|
14921
|
+
/** @description Open risks, alert first, then warn. */
|
|
14922
|
+
risks: components["schemas"]["HealthRisk"][];
|
|
14923
|
+
checks: components["schemas"]["HealthCheck"][];
|
|
14924
|
+
capacity?: components["schemas"]["CapacityEstimate"];
|
|
14925
|
+
/** @description The live deployment's deploy-time static checks. They do not change `status`: the checks read code, `status` reads production. Absent when nothing is deployed. */
|
|
14926
|
+
staticChecks?: {
|
|
14927
|
+
/** @description The live deployment's version. */
|
|
14928
|
+
version: number;
|
|
14929
|
+
/** Format: date-time */
|
|
14930
|
+
deployedAt: string;
|
|
14931
|
+
/** @description Absent when that deployment was not checked. */
|
|
14932
|
+
report?: components["schemas"]["DeployStaticChecks"];
|
|
14933
|
+
};
|
|
14934
|
+
};
|
|
14935
|
+
OrgHealth: {
|
|
14936
|
+
/** Format: date-time */
|
|
14937
|
+
checkedAt?: string;
|
|
14938
|
+
status: components["schemas"]["HealthStatus"];
|
|
14939
|
+
budget: components["schemas"]["HealthCheck"];
|
|
14940
|
+
projects: {
|
|
14941
|
+
name: string;
|
|
14942
|
+
status: components["schemas"]["HealthStatus"];
|
|
14943
|
+
alerts: number;
|
|
14944
|
+
warns: number;
|
|
14945
|
+
/** Format: date-time */
|
|
14946
|
+
checkedAt?: string;
|
|
14947
|
+
}[];
|
|
14948
|
+
};
|
|
14949
|
+
DeployStaticCheckFinding: {
|
|
14950
|
+
/** @description The rule's id: `rpc-result-not-disposed`, `module-cache-unbounded`, `module-state-per-request`, `interval-in-request`, `time-loop-never-ends`, `sync-cpu-in-request`, `bundle-size`, `source-map-size`. New ids may appear. */
|
|
14951
|
+
rule: string;
|
|
14952
|
+
/**
|
|
14953
|
+
* @description No finding refuses a deploy.
|
|
14954
|
+
* @enum {string}
|
|
14955
|
+
*/
|
|
14956
|
+
severity: "warn" | "info";
|
|
14957
|
+
/** @description Project-relative path of the user's own source file. Absent for a finding about the whole bundle. */
|
|
14958
|
+
file?: string;
|
|
14959
|
+
line?: number;
|
|
14960
|
+
column?: number;
|
|
14961
|
+
/** @description This occurrence, one sentence. */
|
|
14962
|
+
message: string;
|
|
14963
|
+
/** @description The Runlot limit it runs into. */
|
|
14964
|
+
why: string;
|
|
14965
|
+
fix: string;
|
|
14966
|
+
};
|
|
14967
|
+
/**
|
|
14968
|
+
* @description What `runlot deploy` found in the project's own code (never node_modules) before the
|
|
14969
|
+
* upload: known patterns that hurt an app on Runlot under traffic. Warnings only.
|
|
14970
|
+
* Silence one line with `// runlot-ignore <rule>` on it or the line above.
|
|
14971
|
+
*/
|
|
14972
|
+
DeployStaticChecks: {
|
|
14973
|
+
findings: components["schemas"]["DeployStaticCheckFinding"][];
|
|
14974
|
+
/** @description Findings past the 50 listed. */
|
|
14975
|
+
omitted: number;
|
|
14976
|
+
filesScanned: number;
|
|
14977
|
+
/** @description Files that did not parse or were too large to read. */
|
|
14978
|
+
filesSkipped: number;
|
|
14979
|
+
/** @description Why some or all of the code was not read, when it was not. */
|
|
14980
|
+
note?: string;
|
|
14981
|
+
/** @description The CLI that ran the checks. */
|
|
14982
|
+
analyzer?: string;
|
|
14983
|
+
};
|
|
14227
14984
|
UptimeAssertion: {
|
|
14228
14985
|
/** @enum {string} */
|
|
14229
14986
|
source: "status" | "header" | "body" | "jsonPath" | "latency";
|
|
@@ -15181,6 +15938,8 @@ export interface components {
|
|
|
15181
15938
|
ReleaseIssueCursor: string;
|
|
15182
15939
|
OrgSlug: components["schemas"]["Slug"];
|
|
15183
15940
|
ProjectName: components["schemas"]["Slug"];
|
|
15941
|
+
/** @description A database's name in the organization */
|
|
15942
|
+
DatabaseName: components["schemas"]["Slug"];
|
|
15184
15943
|
/** @description A queue name as the manifest wrote it (`^[a-z0-9-]{1,63}$`). */
|
|
15185
15944
|
QueueName: string;
|
|
15186
15945
|
/**
|
|
@@ -16483,9 +17242,83 @@ export interface operations {
|
|
|
16483
17242
|
* enrollment banner when an organization sets `requireTotp`.
|
|
16484
17243
|
*/
|
|
16485
17244
|
totpEnabled: boolean;
|
|
17245
|
+
/**
|
|
17246
|
+
* @description Whether the dashboard should still ask "How did you hear about Runlot?".
|
|
17247
|
+
* False once the question was answered or dismissed (`PUT /v1/me/heard-from`).
|
|
17248
|
+
*/
|
|
17249
|
+
heardFromPending: boolean;
|
|
17250
|
+
/**
|
|
17251
|
+
* Format: date-time
|
|
17252
|
+
* @description When this account consented to advertising email; null when it has not
|
|
17253
|
+
* (`PUT /v1/me/marketing-consent`).
|
|
17254
|
+
*/
|
|
17255
|
+
marketingEmailConsentAt?: string | null;
|
|
17256
|
+
};
|
|
17257
|
+
};
|
|
17258
|
+
};
|
|
17259
|
+
401: components["responses"]["Unauthorized"];
|
|
17260
|
+
};
|
|
17261
|
+
};
|
|
17262
|
+
answerHeardFrom: {
|
|
17263
|
+
parameters: {
|
|
17264
|
+
query?: never;
|
|
17265
|
+
header?: never;
|
|
17266
|
+
path?: never;
|
|
17267
|
+
cookie?: never;
|
|
17268
|
+
};
|
|
17269
|
+
requestBody: {
|
|
17270
|
+
content: {
|
|
17271
|
+
"application/json": {
|
|
17272
|
+
/** @description Free text in the person's own words; empty to dismiss */
|
|
17273
|
+
answer: string;
|
|
17274
|
+
};
|
|
17275
|
+
};
|
|
17276
|
+
};
|
|
17277
|
+
responses: {
|
|
17278
|
+
/** @description Recorded, or already recorded before */
|
|
17279
|
+
204: {
|
|
17280
|
+
headers: {
|
|
17281
|
+
[name: string]: unknown;
|
|
17282
|
+
};
|
|
17283
|
+
content?: never;
|
|
17284
|
+
};
|
|
17285
|
+
400: components["responses"]["BadRequest"];
|
|
17286
|
+
401: components["responses"]["Unauthorized"];
|
|
17287
|
+
};
|
|
17288
|
+
};
|
|
17289
|
+
setMarketingConsent: {
|
|
17290
|
+
parameters: {
|
|
17291
|
+
query?: never;
|
|
17292
|
+
header?: never;
|
|
17293
|
+
path?: never;
|
|
17294
|
+
cookie?: never;
|
|
17295
|
+
};
|
|
17296
|
+
requestBody: {
|
|
17297
|
+
content: {
|
|
17298
|
+
"application/json": {
|
|
17299
|
+
granted: boolean;
|
|
17300
|
+
/**
|
|
17301
|
+
* @description The screen the choice was made on
|
|
17302
|
+
* @enum {string}
|
|
17303
|
+
*/
|
|
17304
|
+
source: "login" | "sign_up" | "account";
|
|
17305
|
+
};
|
|
17306
|
+
};
|
|
17307
|
+
};
|
|
17308
|
+
responses: {
|
|
17309
|
+
/** @description The consent that now stands */
|
|
17310
|
+
200: {
|
|
17311
|
+
headers: {
|
|
17312
|
+
[name: string]: unknown;
|
|
17313
|
+
};
|
|
17314
|
+
content: {
|
|
17315
|
+
"application/json": {
|
|
17316
|
+
/** Format: date-time */
|
|
17317
|
+
marketingEmailConsentAt: string | null;
|
|
16486
17318
|
};
|
|
16487
17319
|
};
|
|
16488
17320
|
};
|
|
17321
|
+
400: components["responses"]["BadRequest"];
|
|
16489
17322
|
401: components["responses"]["Unauthorized"];
|
|
16490
17323
|
};
|
|
16491
17324
|
};
|
|
@@ -16842,7 +17675,10 @@ export interface operations {
|
|
|
16842
17675
|
403: components["responses"]["Forbidden"];
|
|
16843
17676
|
/**
|
|
16844
17677
|
* @description The name is already taken (`project_name_taken`, `hostname_taken`), or the plan's
|
|
16845
|
-
* project limit has been reached (`project_limit`).
|
|
17678
|
+
* project limit has been reached (`project_limit`). A database of the same name
|
|
17679
|
+
* whose earlier project's leftovers are still being erased answers
|
|
17680
|
+
* `database_name_pending` (`details.purgeAfter`); otherwise the new project takes
|
|
17681
|
+
* that database over as `env.db` and the answer carries `existingDatabase`.
|
|
16846
17682
|
*
|
|
16847
17683
|
* The `details` of `project_limit` is `{limit, count, plan}` — read the numbers from
|
|
16848
17684
|
* there rather than parsing the message. It is 409 because retrying will not change
|
|
@@ -16913,7 +17749,7 @@ export interface operations {
|
|
|
16913
17749
|
400: components["responses"]["BadRequest"];
|
|
16914
17750
|
403: components["responses"]["Forbidden"];
|
|
16915
17751
|
404: components["responses"]["NotFound"];
|
|
16916
|
-
/** @description Another operation is in progress (`op_in_flight`) */
|
|
17752
|
+
/** @description Another operation is in progress (`op_in_flight`). */
|
|
16917
17753
|
409: {
|
|
16918
17754
|
headers: {
|
|
16919
17755
|
[name: string]: unknown;
|
|
@@ -17111,6 +17947,11 @@ export interface operations {
|
|
|
17111
17947
|
* allows (usually after a downgrade). Every project's deploys are paused until one is
|
|
17112
17948
|
* disabled or deleted, or the plan is upgraded; nothing is deleted automatically.
|
|
17113
17949
|
* `project_disabled` — this project is disabled; enable it first.
|
|
17950
|
+
* `database_not_found` — `runlot.json` names a database (`databases`) the
|
|
17951
|
+
* organization does not have; `details` carries `binding` and `database`.
|
|
17952
|
+
* `binding_needs_colocation` — this project already runs where it cannot reach a
|
|
17953
|
+
* database it binds. `database_limit`, `plan_required` (binding a database into a
|
|
17954
|
+
* second project is Pro), `database_name_pending`.
|
|
17114
17955
|
*/
|
|
17115
17956
|
409: {
|
|
17116
17957
|
headers: {
|
|
@@ -17247,7 +18088,18 @@ export interface operations {
|
|
|
17247
18088
|
};
|
|
17248
18089
|
cookie?: never;
|
|
17249
18090
|
};
|
|
17250
|
-
|
|
18091
|
+
/**
|
|
18092
|
+
* @description Optional. What the deploy-time static checks found in this bundle's code, stored with
|
|
18093
|
+
* the deployment. A report that does not fit the schema is dropped and named in the
|
|
18094
|
+
* deployment's `warnings`; it never refuses the deploy.
|
|
18095
|
+
*/
|
|
18096
|
+
requestBody?: {
|
|
18097
|
+
content: {
|
|
18098
|
+
"application/json": {
|
|
18099
|
+
staticChecks?: components["schemas"]["DeployStaticChecks"];
|
|
18100
|
+
};
|
|
18101
|
+
};
|
|
18102
|
+
};
|
|
17251
18103
|
responses: {
|
|
17252
18104
|
/** @description The created deployment */
|
|
17253
18105
|
201: {
|
|
@@ -19005,46 +19857,20 @@ export interface operations {
|
|
|
19005
19857
|
header?: never;
|
|
19006
19858
|
path: {
|
|
19007
19859
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19008
|
-
|
|
19009
|
-
|
|
19010
|
-
cookie?: never;
|
|
19011
|
-
};
|
|
19012
|
-
requestBody?: never;
|
|
19013
|
-
responses: {
|
|
19014
|
-
/** @description Whether the database is available */
|
|
19015
|
-
200: {
|
|
19016
|
-
headers: {
|
|
19017
|
-
[name: string]: unknown;
|
|
19018
|
-
};
|
|
19019
|
-
content: {
|
|
19020
|
-
"application/json": {
|
|
19021
|
-
db: boolean;
|
|
19022
|
-
};
|
|
19023
|
-
};
|
|
19024
|
-
};
|
|
19025
|
-
403: components["responses"]["Forbidden"];
|
|
19026
|
-
404: components["responses"]["NotFound"];
|
|
19027
|
-
};
|
|
19028
|
-
};
|
|
19029
|
-
createDatabase: {
|
|
19030
|
-
parameters: {
|
|
19031
|
-
query?: never;
|
|
19032
|
-
header?: never;
|
|
19033
|
-
path: {
|
|
19034
|
-
orgSlug: components["parameters"]["OrgSlug"];
|
|
19035
|
-
projectName: components["parameters"]["ProjectName"];
|
|
19860
|
+
/** @description A database's name in the organization */
|
|
19861
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19036
19862
|
};
|
|
19037
19863
|
cookie?: never;
|
|
19038
19864
|
};
|
|
19039
19865
|
requestBody?: never;
|
|
19040
19866
|
responses: {
|
|
19041
|
-
/** @description
|
|
19867
|
+
/** @description The database */
|
|
19042
19868
|
200: {
|
|
19043
19869
|
headers: {
|
|
19044
19870
|
[name: string]: unknown;
|
|
19045
19871
|
};
|
|
19046
19872
|
content: {
|
|
19047
|
-
"application/json": components["schemas"]["
|
|
19873
|
+
"application/json": components["schemas"]["OrgDatabase"];
|
|
19048
19874
|
};
|
|
19049
19875
|
};
|
|
19050
19876
|
403: components["responses"]["Forbidden"];
|
|
@@ -19057,7 +19883,8 @@ export interface operations {
|
|
|
19057
19883
|
header?: never;
|
|
19058
19884
|
path: {
|
|
19059
19885
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19060
|
-
|
|
19886
|
+
/** @description A database's name in the organization */
|
|
19887
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19061
19888
|
};
|
|
19062
19889
|
cookie?: never;
|
|
19063
19890
|
};
|
|
@@ -19090,7 +19917,8 @@ export interface operations {
|
|
|
19090
19917
|
header?: never;
|
|
19091
19918
|
path: {
|
|
19092
19919
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19093
|
-
|
|
19920
|
+
/** @description A database's name in the organization */
|
|
19921
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19094
19922
|
};
|
|
19095
19923
|
cookie?: never;
|
|
19096
19924
|
};
|
|
@@ -19118,7 +19946,8 @@ export interface operations {
|
|
|
19118
19946
|
header?: never;
|
|
19119
19947
|
path: {
|
|
19120
19948
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19121
|
-
|
|
19949
|
+
/** @description A database's name in the organization */
|
|
19950
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19122
19951
|
};
|
|
19123
19952
|
cookie?: never;
|
|
19124
19953
|
};
|
|
@@ -19145,7 +19974,8 @@ export interface operations {
|
|
|
19145
19974
|
header?: never;
|
|
19146
19975
|
path: {
|
|
19147
19976
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19148
|
-
|
|
19977
|
+
/** @description A database's name in the organization */
|
|
19978
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19149
19979
|
};
|
|
19150
19980
|
cookie?: never;
|
|
19151
19981
|
};
|
|
@@ -19178,7 +20008,8 @@ export interface operations {
|
|
|
19178
20008
|
header?: never;
|
|
19179
20009
|
path: {
|
|
19180
20010
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19181
|
-
|
|
20011
|
+
/** @description A database's name in the organization */
|
|
20012
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19182
20013
|
tokenUser: string;
|
|
19183
20014
|
};
|
|
19184
20015
|
cookie?: never;
|
|
@@ -19202,7 +20033,8 @@ export interface operations {
|
|
|
19202
20033
|
header?: never;
|
|
19203
20034
|
path: {
|
|
19204
20035
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19205
|
-
|
|
20036
|
+
/** @description A database's name in the organization */
|
|
20037
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19206
20038
|
};
|
|
19207
20039
|
cookie?: never;
|
|
19208
20040
|
};
|
|
@@ -19270,7 +20102,8 @@ export interface operations {
|
|
|
19270
20102
|
header?: never;
|
|
19271
20103
|
path: {
|
|
19272
20104
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19273
|
-
|
|
20105
|
+
/** @description A database's name in the organization */
|
|
20106
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19274
20107
|
};
|
|
19275
20108
|
cookie?: never;
|
|
19276
20109
|
};
|
|
@@ -19339,7 +20172,8 @@ export interface operations {
|
|
|
19339
20172
|
header?: never;
|
|
19340
20173
|
path: {
|
|
19341
20174
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19342
|
-
|
|
20175
|
+
/** @description A database's name in the organization */
|
|
20176
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19343
20177
|
};
|
|
19344
20178
|
cookie?: never;
|
|
19345
20179
|
};
|
|
@@ -19364,7 +20198,8 @@ export interface operations {
|
|
|
19364
20198
|
header?: never;
|
|
19365
20199
|
path: {
|
|
19366
20200
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19367
|
-
|
|
20201
|
+
/** @description A database's name in the organization */
|
|
20202
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19368
20203
|
};
|
|
19369
20204
|
cookie?: never;
|
|
19370
20205
|
};
|
|
@@ -19423,7 +20258,8 @@ export interface operations {
|
|
|
19423
20258
|
header?: never;
|
|
19424
20259
|
path: {
|
|
19425
20260
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19426
|
-
|
|
20261
|
+
/** @description A database's name in the organization */
|
|
20262
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19427
20263
|
};
|
|
19428
20264
|
cookie?: never;
|
|
19429
20265
|
};
|
|
@@ -19442,7 +20278,7 @@ export interface operations {
|
|
|
19442
20278
|
"application/json": components["schemas"]["OperationStarted"];
|
|
19443
20279
|
};
|
|
19444
20280
|
};
|
|
19445
|
-
/** @description The confirmation string does not match the
|
|
20281
|
+
/** @description The confirmation string does not match the database name (`confirm_mismatch`) */
|
|
19446
20282
|
400: {
|
|
19447
20283
|
headers: {
|
|
19448
20284
|
[name: string]: unknown;
|
|
@@ -19461,7 +20297,11 @@ export interface operations {
|
|
|
19461
20297
|
"application/json": components["schemas"]["Error"];
|
|
19462
20298
|
};
|
|
19463
20299
|
};
|
|
19464
|
-
/**
|
|
20300
|
+
/**
|
|
20301
|
+
* @description Another operation is already in progress (`operation_in_progress`), or the
|
|
20302
|
+
* database is bound into projects (`database_bound`, `details.bindings` lists
|
|
20303
|
+
* them).
|
|
20304
|
+
*/
|
|
19465
20305
|
409: {
|
|
19466
20306
|
headers: {
|
|
19467
20307
|
[name: string]: unknown;
|
|
@@ -19478,7 +20318,8 @@ export interface operations {
|
|
|
19478
20318
|
header?: never;
|
|
19479
20319
|
path: {
|
|
19480
20320
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19481
|
-
|
|
20321
|
+
/** @description A database's name in the organization */
|
|
20322
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19482
20323
|
/**
|
|
19483
20324
|
* @description The operation id. **Not a credential** — an operation that does not belong to the
|
|
19484
20325
|
* project in the path returns 404.
|
|
@@ -19516,7 +20357,8 @@ export interface operations {
|
|
|
19516
20357
|
header?: never;
|
|
19517
20358
|
path: {
|
|
19518
20359
|
orgSlug: components["parameters"]["OrgSlug"];
|
|
19519
|
-
|
|
20360
|
+
/** @description A database's name in the organization */
|
|
20361
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
19520
20362
|
/**
|
|
19521
20363
|
* @description The operation id. **Not a credential** — an operation that does not belong to the
|
|
19522
20364
|
* project in the path returns 404.
|
|
@@ -20788,6 +21630,8 @@ export interface operations {
|
|
|
20788
21630
|
/** @description capped at 4,096 by the lane */
|
|
20789
21631
|
maxTokens?: number;
|
|
20790
21632
|
temperature?: number;
|
|
21633
|
+
/** @description answer as server-sent events instead of one JSON body */
|
|
21634
|
+
stream?: boolean;
|
|
20791
21635
|
/** @description `env.ai.run`'s reasoning option. cp-core checks `effort` against the model's catalog row. */
|
|
20792
21636
|
reasoning?: {
|
|
20793
21637
|
/** @description one of the model's `effortLevels` */
|
|
@@ -20841,8 +21685,11 @@ export interface operations {
|
|
|
20841
21685
|
* @description the part of inputTokens written to the prompt cache
|
|
20842
21686
|
*/
|
|
20843
21687
|
cacheWriteInputTokens?: number;
|
|
21688
|
+
/** @description the cache counts the provider did not report; each is 0 above for lack of information. Absent when every count was reported */
|
|
21689
|
+
unreported?: ("cachedInputTokens" | "cacheWriteInputTokens")[];
|
|
20844
21690
|
};
|
|
20845
21691
|
};
|
|
21692
|
+
"text/event-stream": string;
|
|
20846
21693
|
};
|
|
20847
21694
|
};
|
|
20848
21695
|
400: components["responses"]["BadRequest"];
|
|
@@ -21454,7 +22301,7 @@ export interface operations {
|
|
|
21454
22301
|
/**
|
|
21455
22302
|
* @description `database_required` — this project's database was deleted.
|
|
21456
22303
|
* `database_disabled` — `runlot.json` says `"database": false`.
|
|
21457
|
-
* Either way, create the database with `POST
|
|
22304
|
+
* Either way, create the database with `POST /v1/orgs/{orgSlug}/databases` (`runlot db create <project>`) first.
|
|
21458
22305
|
*/
|
|
21459
22306
|
409: {
|
|
21460
22307
|
headers: {
|
|
@@ -22445,7 +23292,133 @@ export interface operations {
|
|
|
22445
23292
|
};
|
|
22446
23293
|
};
|
|
22447
23294
|
};
|
|
22448
|
-
|
|
23295
|
+
getSpendingLimit: {
|
|
23296
|
+
parameters: {
|
|
23297
|
+
query?: never;
|
|
23298
|
+
header?: never;
|
|
23299
|
+
path: {
|
|
23300
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
23301
|
+
};
|
|
23302
|
+
cookie?: never;
|
|
23303
|
+
};
|
|
23304
|
+
requestBody?: never;
|
|
23305
|
+
responses: {
|
|
23306
|
+
/** @description The spending limit */
|
|
23307
|
+
200: {
|
|
23308
|
+
headers: {
|
|
23309
|
+
[name: string]: unknown;
|
|
23310
|
+
};
|
|
23311
|
+
content: {
|
|
23312
|
+
"application/json": components["schemas"]["SpendingLimit"];
|
|
23313
|
+
};
|
|
23314
|
+
};
|
|
23315
|
+
403: components["responses"]["Forbidden"];
|
|
23316
|
+
404: components["responses"]["NotFound"];
|
|
23317
|
+
};
|
|
23318
|
+
};
|
|
23319
|
+
setSpendingLimit: {
|
|
23320
|
+
parameters: {
|
|
23321
|
+
query?: never;
|
|
23322
|
+
header?: never;
|
|
23323
|
+
path: {
|
|
23324
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
23325
|
+
};
|
|
23326
|
+
cookie?: never;
|
|
23327
|
+
};
|
|
23328
|
+
requestBody: {
|
|
23329
|
+
content: {
|
|
23330
|
+
"application/json": components["schemas"]["SpendingLimitUpdate"];
|
|
23331
|
+
};
|
|
23332
|
+
};
|
|
23333
|
+
responses: {
|
|
23334
|
+
/** @description The spending limit after the change */
|
|
23335
|
+
200: {
|
|
23336
|
+
headers: {
|
|
23337
|
+
[name: string]: unknown;
|
|
23338
|
+
};
|
|
23339
|
+
content: {
|
|
23340
|
+
"application/json": components["schemas"]["SpendingLimit"];
|
|
23341
|
+
};
|
|
23342
|
+
};
|
|
23343
|
+
400: components["responses"]["BadRequest"];
|
|
23344
|
+
403: components["responses"]["Forbidden"];
|
|
23345
|
+
404: components["responses"]["NotFound"];
|
|
23346
|
+
/** @description `spending_limit_not_applicable` */
|
|
23347
|
+
409: {
|
|
23348
|
+
headers: {
|
|
23349
|
+
[name: string]: unknown;
|
|
23350
|
+
};
|
|
23351
|
+
content: {
|
|
23352
|
+
"application/json": components["schemas"]["Error"];
|
|
23353
|
+
};
|
|
23354
|
+
};
|
|
23355
|
+
};
|
|
23356
|
+
};
|
|
23357
|
+
getProjectLimits: {
|
|
23358
|
+
parameters: {
|
|
23359
|
+
query?: never;
|
|
23360
|
+
header?: never;
|
|
23361
|
+
path: {
|
|
23362
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
23363
|
+
projectName: components["parameters"]["ProjectName"];
|
|
23364
|
+
};
|
|
23365
|
+
cookie?: never;
|
|
23366
|
+
};
|
|
23367
|
+
requestBody?: never;
|
|
23368
|
+
responses: {
|
|
23369
|
+
/** @description The limits */
|
|
23370
|
+
200: {
|
|
23371
|
+
headers: {
|
|
23372
|
+
[name: string]: unknown;
|
|
23373
|
+
};
|
|
23374
|
+
content: {
|
|
23375
|
+
"application/json": components["schemas"]["ProjectLimits"];
|
|
23376
|
+
};
|
|
23377
|
+
};
|
|
23378
|
+
403: components["responses"]["Forbidden"];
|
|
23379
|
+
404: components["responses"]["NotFound"];
|
|
23380
|
+
};
|
|
23381
|
+
};
|
|
23382
|
+
setProjectLimits: {
|
|
23383
|
+
parameters: {
|
|
23384
|
+
query?: never;
|
|
23385
|
+
header?: never;
|
|
23386
|
+
path: {
|
|
23387
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
23388
|
+
projectName: components["parameters"]["ProjectName"];
|
|
23389
|
+
};
|
|
23390
|
+
cookie?: never;
|
|
23391
|
+
};
|
|
23392
|
+
requestBody: {
|
|
23393
|
+
content: {
|
|
23394
|
+
"application/json": components["schemas"]["ProjectLimitsUpdate"];
|
|
23395
|
+
};
|
|
23396
|
+
};
|
|
23397
|
+
responses: {
|
|
23398
|
+
/** @description The limits after the change */
|
|
23399
|
+
200: {
|
|
23400
|
+
headers: {
|
|
23401
|
+
[name: string]: unknown;
|
|
23402
|
+
};
|
|
23403
|
+
content: {
|
|
23404
|
+
"application/json": components["schemas"]["ProjectLimits"];
|
|
23405
|
+
};
|
|
23406
|
+
};
|
|
23407
|
+
400: components["responses"]["BadRequest"];
|
|
23408
|
+
403: components["responses"]["Forbidden"];
|
|
23409
|
+
404: components["responses"]["NotFound"];
|
|
23410
|
+
/** @description `memory_limit_below_use`, `memory_limit_exceeds_node`, `memory_limit_set_by_operator` or `spending_limit_not_applicable` */
|
|
23411
|
+
409: {
|
|
23412
|
+
headers: {
|
|
23413
|
+
[name: string]: unknown;
|
|
23414
|
+
};
|
|
23415
|
+
content: {
|
|
23416
|
+
"application/json": components["schemas"]["Error"];
|
|
23417
|
+
};
|
|
23418
|
+
};
|
|
23419
|
+
};
|
|
23420
|
+
};
|
|
23421
|
+
listMembers: {
|
|
22449
23422
|
parameters: {
|
|
22450
23423
|
query?: never;
|
|
22451
23424
|
header?: never;
|
|
@@ -27781,6 +28754,203 @@ export interface operations {
|
|
|
27781
28754
|
};
|
|
27782
28755
|
};
|
|
27783
28756
|
};
|
|
28757
|
+
getProjectHealth: {
|
|
28758
|
+
parameters: {
|
|
28759
|
+
query?: never;
|
|
28760
|
+
header?: never;
|
|
28761
|
+
path: {
|
|
28762
|
+
orgSlug: string;
|
|
28763
|
+
projectName: string;
|
|
28764
|
+
};
|
|
28765
|
+
cookie?: never;
|
|
28766
|
+
};
|
|
28767
|
+
requestBody?: never;
|
|
28768
|
+
responses: {
|
|
28769
|
+
/** @description Health */
|
|
28770
|
+
200: {
|
|
28771
|
+
headers: {
|
|
28772
|
+
[name: string]: unknown;
|
|
28773
|
+
};
|
|
28774
|
+
content: {
|
|
28775
|
+
"application/json": components["schemas"]["ProjectHealth"];
|
|
28776
|
+
};
|
|
28777
|
+
};
|
|
28778
|
+
/** @description Request refused */
|
|
28779
|
+
401: {
|
|
28780
|
+
headers: {
|
|
28781
|
+
[name: string]: unknown;
|
|
28782
|
+
};
|
|
28783
|
+
content?: never;
|
|
28784
|
+
};
|
|
28785
|
+
/** @description Request refused */
|
|
28786
|
+
403: {
|
|
28787
|
+
headers: {
|
|
28788
|
+
[name: string]: unknown;
|
|
28789
|
+
};
|
|
28790
|
+
content?: never;
|
|
28791
|
+
};
|
|
28792
|
+
/** @description Request refused */
|
|
28793
|
+
404: {
|
|
28794
|
+
headers: {
|
|
28795
|
+
[name: string]: unknown;
|
|
28796
|
+
};
|
|
28797
|
+
content?: never;
|
|
28798
|
+
};
|
|
28799
|
+
};
|
|
28800
|
+
};
|
|
28801
|
+
listOrgDatabases: {
|
|
28802
|
+
parameters: {
|
|
28803
|
+
query?: never;
|
|
28804
|
+
header?: never;
|
|
28805
|
+
path: {
|
|
28806
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
28807
|
+
};
|
|
28808
|
+
cookie?: never;
|
|
28809
|
+
};
|
|
28810
|
+
requestBody?: never;
|
|
28811
|
+
responses: {
|
|
28812
|
+
/** @description Databases */
|
|
28813
|
+
200: {
|
|
28814
|
+
headers: {
|
|
28815
|
+
[name: string]: unknown;
|
|
28816
|
+
};
|
|
28817
|
+
content: {
|
|
28818
|
+
"application/json": components["schemas"]["OrgDatabases"];
|
|
28819
|
+
};
|
|
28820
|
+
};
|
|
28821
|
+
403: components["responses"]["Forbidden"];
|
|
28822
|
+
404: components["responses"]["NotFound"];
|
|
28823
|
+
};
|
|
28824
|
+
};
|
|
28825
|
+
createOrgDatabase: {
|
|
28826
|
+
parameters: {
|
|
28827
|
+
query?: never;
|
|
28828
|
+
header?: never;
|
|
28829
|
+
path: {
|
|
28830
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
28831
|
+
};
|
|
28832
|
+
cookie?: never;
|
|
28833
|
+
};
|
|
28834
|
+
requestBody: {
|
|
28835
|
+
content: {
|
|
28836
|
+
"application/json": {
|
|
28837
|
+
name: components["schemas"]["Slug"];
|
|
28838
|
+
};
|
|
28839
|
+
};
|
|
28840
|
+
};
|
|
28841
|
+
responses: {
|
|
28842
|
+
/** @description The project's own database already existed or was created */
|
|
28843
|
+
200: {
|
|
28844
|
+
headers: {
|
|
28845
|
+
[name: string]: unknown;
|
|
28846
|
+
};
|
|
28847
|
+
content: {
|
|
28848
|
+
"application/json": components["schemas"]["DatabaseConnect"];
|
|
28849
|
+
};
|
|
28850
|
+
};
|
|
28851
|
+
/** @description A new database */
|
|
28852
|
+
201: {
|
|
28853
|
+
headers: {
|
|
28854
|
+
[name: string]: unknown;
|
|
28855
|
+
};
|
|
28856
|
+
content: {
|
|
28857
|
+
"application/json": components["schemas"]["DatabaseConnect"];
|
|
28858
|
+
};
|
|
28859
|
+
};
|
|
28860
|
+
400: components["responses"]["BadRequest"];
|
|
28861
|
+
/** @description Not a member, or a standalone database on a plan without it (`plan_required`) */
|
|
28862
|
+
403: {
|
|
28863
|
+
headers: {
|
|
28864
|
+
[name: string]: unknown;
|
|
28865
|
+
};
|
|
28866
|
+
content: {
|
|
28867
|
+
"application/json": components["schemas"]["Error"];
|
|
28868
|
+
};
|
|
28869
|
+
};
|
|
28870
|
+
/**
|
|
28871
|
+
* @description `name_taken` (`details.kind` is `project` or `database`), `database_limit`
|
|
28872
|
+
* (`details.limit`, `details.unbound` names databases no project binds),
|
|
28873
|
+
* `database_name_pending` (a deleted project's leftovers are still being erased
|
|
28874
|
+
* under this name; `details.purgeAfter`).
|
|
28875
|
+
*/
|
|
28876
|
+
409: {
|
|
28877
|
+
headers: {
|
|
28878
|
+
[name: string]: unknown;
|
|
28879
|
+
};
|
|
28880
|
+
content: {
|
|
28881
|
+
"application/json": components["schemas"]["Error"];
|
|
28882
|
+
};
|
|
28883
|
+
};
|
|
28884
|
+
};
|
|
28885
|
+
};
|
|
28886
|
+
unbindDatabase: {
|
|
28887
|
+
parameters: {
|
|
28888
|
+
query?: never;
|
|
28889
|
+
header?: never;
|
|
28890
|
+
path: {
|
|
28891
|
+
orgSlug: components["parameters"]["OrgSlug"];
|
|
28892
|
+
/** @description A database's name in the organization */
|
|
28893
|
+
databaseName: components["parameters"]["DatabaseName"];
|
|
28894
|
+
projectName: components["parameters"]["ProjectName"];
|
|
28895
|
+
};
|
|
28896
|
+
cookie?: never;
|
|
28897
|
+
};
|
|
28898
|
+
requestBody?: never;
|
|
28899
|
+
responses: {
|
|
28900
|
+
/** @description Unbound */
|
|
28901
|
+
204: {
|
|
28902
|
+
headers: {
|
|
28903
|
+
[name: string]: unknown;
|
|
28904
|
+
};
|
|
28905
|
+
content?: never;
|
|
28906
|
+
};
|
|
28907
|
+
403: components["responses"]["Forbidden"];
|
|
28908
|
+
404: components["responses"]["NotFound"];
|
|
28909
|
+
};
|
|
28910
|
+
};
|
|
28911
|
+
getOrgHealth: {
|
|
28912
|
+
parameters: {
|
|
28913
|
+
query?: never;
|
|
28914
|
+
header?: never;
|
|
28915
|
+
path: {
|
|
28916
|
+
orgSlug: string;
|
|
28917
|
+
};
|
|
28918
|
+
cookie?: never;
|
|
28919
|
+
};
|
|
28920
|
+
requestBody?: never;
|
|
28921
|
+
responses: {
|
|
28922
|
+
/** @description Health */
|
|
28923
|
+
200: {
|
|
28924
|
+
headers: {
|
|
28925
|
+
[name: string]: unknown;
|
|
28926
|
+
};
|
|
28927
|
+
content: {
|
|
28928
|
+
"application/json": components["schemas"]["OrgHealth"];
|
|
28929
|
+
};
|
|
28930
|
+
};
|
|
28931
|
+
/** @description Request refused */
|
|
28932
|
+
401: {
|
|
28933
|
+
headers: {
|
|
28934
|
+
[name: string]: unknown;
|
|
28935
|
+
};
|
|
28936
|
+
content?: never;
|
|
28937
|
+
};
|
|
28938
|
+
/** @description Request refused */
|
|
28939
|
+
403: {
|
|
28940
|
+
headers: {
|
|
28941
|
+
[name: string]: unknown;
|
|
28942
|
+
};
|
|
28943
|
+
content?: never;
|
|
28944
|
+
};
|
|
28945
|
+
/** @description Request refused */
|
|
28946
|
+
404: {
|
|
28947
|
+
headers: {
|
|
28948
|
+
[name: string]: unknown;
|
|
28949
|
+
};
|
|
28950
|
+
content?: never;
|
|
28951
|
+
};
|
|
28952
|
+
};
|
|
28953
|
+
};
|
|
27784
28954
|
listSynthetics: {
|
|
27785
28955
|
parameters: {
|
|
27786
28956
|
query?: never;
|