@runlot/api 0.1.0-rc.210 → 0.1.0-rc.213

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/schema.d.ts CHANGED
@@ -3651,7 +3651,7 @@ export interface paths {
3651
3651
  /**
3652
3652
  * Desktops of the org's members that can lend to this project right now
3653
3653
  * @description Each desktop lending to apps, with the models it lends and whether its Runlot Studio is
3654
- * too old to carry `reasoning` or `responseFormat` (`outdated`), followed by the members'
3654
+ * too old to carry `reasoning`, `responseFormat` or `verbosity` (`outdated`), followed by the members'
3655
3655
  * desktops that are online with lending switched off (`lending: false`). `reachable` is
3656
3656
  * false when the lending service could not be asked. Requires `observability:read`.
3657
3657
  */
@@ -3762,12 +3762,19 @@ export interface paths {
3762
3762
  * charge Y to the saved card, at most N times a day" and takes a checkbox, because card network
3763
3763
  * rules require prior consent for off-session charges.
3764
3764
  *
3765
- * The server checks three things: whether a payment method is saved (409 if not), whether the
3766
- * amount is one of the offered top-up amounts, and whether the threshold is **greater than 0 and
3767
- * smaller than the top-up amount**. A threshold of 0 makes every automatic charge fail with 402,
3765
+ * The server checks: whether a payment method is saved (409 if not), whether the amount is one
3766
+ * of the offered top-up amounts, whether the threshold is **greater than 0 and smaller than the
3767
+ * top-up amount**, and `perDay` — the most top-ups a day, a whole number of at least 1 or `null`
3768
+ * for unlimited (5 when left out). Unlimited has no daily count: charges go on for as long as
3769
+ * the balance keeps falling below the threshold, one at a time. A threshold of 0 makes every automatic charge fail with 402,
3768
3770
  * and a threshold at or above the top-up amount leaves the balance still below the threshold
3769
3771
  * after a top-up, so it would keep topping up until it hit the daily cap.
3770
3772
  *
3773
+ * **A refused charge turns it off.** When the payment provider refuses an automatic charge — a
3774
+ * declined card, no valid saved card, or a provider setting that refuses off-session charges —
3775
+ * auto top-up is turned off at once, `autoTopupStopped` on `getAICredit` says when and why, and
3776
+ * the org's admins get `ai_autotopup_disabled`. Saving this setting again, on or off, clears it.
3777
+ *
3771
3778
  * Requires admin. Audited as `ai.autotopup.on` / `ai.autotopup.off`.
3772
3779
  */
3773
3780
  put: operations["setAIAutoTopup"];
@@ -4641,6 +4648,119 @@ export interface paths {
4641
4648
  patch?: never;
4642
4649
  trace?: never;
4643
4650
  };
4651
+ "/v1/orgs/{orgSlug}/billing/payment-methods": {
4652
+ parameters: {
4653
+ query?: never;
4654
+ header?: never;
4655
+ path: {
4656
+ orgSlug: components["parameters"]["OrgSlug"];
4657
+ };
4658
+ cookie?: never;
4659
+ };
4660
+ /**
4661
+ * The organization's saved cards, read from Polar
4662
+ * @description The cards saved on the organization's Polar customer, with brand, last four digits, expiry and
4663
+ * which one is the **default** — the card automatic charges (AI credit top-up, Pro overage,
4664
+ * domain renewal) are made to. Read live from Polar on every request: runlot stores no card data.
4665
+ *
4666
+ * `customer: false` means the organization has no billing account with Polar yet;
4667
+ * `addBillingPaymentMethod` makes one. A one-time AI credit top-up does not save its card — add
4668
+ * cards with `addBillingPaymentMethod`. Requires admin.
4669
+ */
4670
+ get: operations["getBillingPaymentMethods"];
4671
+ put?: never;
4672
+ post?: never;
4673
+ delete?: never;
4674
+ options?: never;
4675
+ head?: never;
4676
+ patch?: never;
4677
+ trace?: never;
4678
+ };
4679
+ "/v1/orgs/{orgSlug}/billing/payment-methods/default": {
4680
+ parameters: {
4681
+ query?: never;
4682
+ header?: never;
4683
+ path: {
4684
+ orgSlug: components["parameters"]["OrgSlug"];
4685
+ };
4686
+ cookie?: never;
4687
+ };
4688
+ get?: never;
4689
+ /**
4690
+ * Makes a saved card the default
4691
+ * @description Sets Polar's default payment method for the organization's customer. Automatic charges and the
4692
+ * Pro subscription use the default. `id` is one of the organization's own saved cards
4693
+ * (`getBillingPaymentMethods`); an expired card is refused with 409 `card_expired`. Requires
4694
+ * admin. Audited as `billing.card.default`.
4695
+ */
4696
+ put: operations["setBillingDefaultPaymentMethod"];
4697
+ post?: never;
4698
+ delete?: never;
4699
+ options?: never;
4700
+ head?: never;
4701
+ patch?: never;
4702
+ trace?: never;
4703
+ };
4704
+ "/v1/orgs/{orgSlug}/billing/payment-methods/add": {
4705
+ parameters: {
4706
+ query?: never;
4707
+ header?: never;
4708
+ path: {
4709
+ orgSlug: components["parameters"]["OrgSlug"];
4710
+ };
4711
+ cookie?: never;
4712
+ };
4713
+ get?: never;
4714
+ put?: never;
4715
+ /**
4716
+ * Opens Polar's page to add a card
4717
+ * @description Returns a one-time `url` for Polar's hosted customer portal, where the card is entered — the card
4718
+ * never passes through runlot. The browser comes back to `returnTo` (under this deployment's public
4719
+ * URL), and the screen reads `getBillingPaymentMethods` again.
4720
+ *
4721
+ * An organization with no billing account yet (a free organization that never paid, or a Pro plan
4722
+ * provided by Runlot) gets one made with the signed-in admin's email; when that email already has
4723
+ * one, the organization shares it. Requires admin.
4724
+ */
4725
+ post: operations["addBillingPaymentMethod"];
4726
+ delete?: never;
4727
+ options?: never;
4728
+ head?: never;
4729
+ patch?: never;
4730
+ trace?: never;
4731
+ };
4732
+ "/v1/orgs/{orgSlug}/billing/payment-methods/remove": {
4733
+ parameters: {
4734
+ query?: never;
4735
+ header?: never;
4736
+ path: {
4737
+ orgSlug: components["parameters"]["OrgSlug"];
4738
+ };
4739
+ cookie?: never;
4740
+ };
4741
+ get?: never;
4742
+ put?: never;
4743
+ /**
4744
+ * Removes a saved card
4745
+ * @description Removes a saved card from the organization's Polar customer. The card's `id` is in the body,
4746
+ * not the URL, so it never appears in a request log.
4747
+ *
4748
+ * - A paid **Pro** organization always keeps a valid (unexpired) card: removing its last one is
4749
+ * refused with 409 `replacement_required`. Add the replacement first.
4750
+ * - While **auto top-up** is on, the last valid card cannot be removed either: 409
4751
+ * `autotopup_needs_card`. Turn auto top-up off first, or add another card.
4752
+ * - Removing the **default** makes another valid card the default first; `promotedDefault` is then
4753
+ * true and `methods` shows which one.
4754
+ *
4755
+ * Requires admin. Audited as `billing.card.remove`.
4756
+ */
4757
+ post: operations["removeBillingPaymentMethod"];
4758
+ delete?: never;
4759
+ options?: never;
4760
+ head?: never;
4761
+ patch?: never;
4762
+ trace?: never;
4763
+ };
4644
4764
  "/v1/orgs/{orgSlug}/billing/cancel": {
4645
4765
  parameters: {
4646
4766
  query?: never;
@@ -13149,6 +13269,8 @@ export interface components {
13149
13269
  taskTypes?: string[];
13150
13270
  /** @description Chat models only: every value `env.ai.run(model, { reasoning: { effort } })` may carry. Absent when the model has no reasoning-effort control (`@runlot/…` have none), in which case asking for one is `400 bad_effort` rather than a silently ignored field. The vocabularies differ by family — the OpenAI rows include `none`, the Claude rows do not, and Gemini has only `low`/`medium`/`high`. Leaving `reasoning` out sends the model's own default. */
13151
13271
  effortLevels?: string[];
13272
+ /** @description Chat models only: every value `env.ai.run(model, { verbosity })` may carry — how long and detailed the answer is, without changing what it says. Absent when the model has no verbosity control, in which case asking for one is `400 verbosity_unsupported` rather than a silently ignored field; a value off the list is `400 bad_verbosity`. Only the OpenAI rows have it today. Leaving `verbosity` out sends the model's own default. */
13273
+ verbosityLevels?: string[];
13152
13274
  /** @description Chat models only, present when true: `env.ai.run(model, { responseFormat })` is honoured on this model. False or absent means asking for a response format is `400 format_unsupported` rather than prose wearing the caller's schema. Read off each model card, so it is a per-row fact and not a family rule — Claude Haiku 4.5 has it and Claude Sonnet 5 does not, on the same endpoint. */
13153
13275
  structuredOutput?: boolean;
13154
13276
  /** @enum {string} */
@@ -13254,6 +13376,52 @@ export interface components {
13254
13376
  belowMicroCents: number;
13255
13377
  /** Format: int64 */
13256
13378
  microCents: number;
13379
+ /** @description The most automatic top-ups a day the organization agreed to; null is unlimited */
13380
+ perDay: number | null;
13381
+ };
13382
+ /**
13383
+ * @description Present when auto top-up is off because the payment provider refused a charge (not when an admin
13384
+ * turned it off). It stays until auto top-up is saved again. `provider_setting` is the payment
13385
+ * provider refusing automatic charges because of a setting on runlot's side — not the card;
13386
+ * manual top-up still works. `action_required` is a charge the bank wanted the cardholder to
13387
+ * confirm (3-D Secure), which cannot happen with nobody present. `billing_address` is an
13388
+ * incomplete billing address, which the provider needs to calculate tax.
13389
+ */
13390
+ AIAutoTopupStopped: {
13391
+ /** Format: date-time */
13392
+ at: string;
13393
+ /** @enum {string} */
13394
+ reason: "provider_setting" | "card_declined" | "action_required" | "no_card" | "billing_address" | "charge_refused";
13395
+ };
13396
+ /** @description One saved card, as Polar reports it. Nothing here is stored by runlot. */
13397
+ PaymentMethod: {
13398
+ /** @description Polar's id, to name this card in a default change or a removal */
13399
+ id: string;
13400
+ /** @description `card`, `kr_card`, or another payment method type */
13401
+ type: string;
13402
+ /** @example visa */
13403
+ brand?: string;
13404
+ /** @example 4242 */
13405
+ last4?: string;
13406
+ expMonth?: number;
13407
+ expYear?: number;
13408
+ /** @description e.g. apple_pay, when the card came from a wallet */
13409
+ wallet?: string;
13410
+ /** @description The card automatic charges are made to */
13411
+ isDefault: boolean;
13412
+ /** @description Past its expiry month — it cannot be charged */
13413
+ expired: boolean;
13414
+ };
13415
+ PaymentMethodList: {
13416
+ /** @description Whether the billing address is enough for the payment provider to calculate tax — automatic charges need it as well as a card. Completed on the provider's page (`addBillingPaymentMethod`) */
13417
+ billingAddressComplete: boolean;
13418
+ /** @description false means the organization has no billing account with Polar yet — the first checkout creates it */
13419
+ customer: boolean;
13420
+ methods: components["schemas"]["PaymentMethod"][];
13421
+ };
13422
+ PaymentMethodChange: components["schemas"]["PaymentMethodList"] & {
13423
+ /** @description The removed card was the default, and another card became it */
13424
+ promotedDefault: boolean;
13257
13425
  };
13258
13426
  AICredit: {
13259
13427
  /** @description false means AI credit is not available here — the top-up endpoints answer 501 */
@@ -13278,9 +13446,10 @@ export interface components {
13278
13446
  /** @description When false, auto top-up cannot be turned on — your first top-up is what saves the card */
13279
13447
  hasPaymentMethod: boolean;
13280
13448
  autoTopup?: components["schemas"]["AIAutoTopup"];
13449
+ autoTopupStopped?: components["schemas"]["AIAutoTopupStopped"];
13281
13450
  autoTopupsToday: number;
13282
- /** @description the most automatic top-ups that can run in one day */
13283
- autoTopupPerDay: number;
13451
+ /** @description The most automatic top-ups in one day — the organization's choice, 5 until it chooses. Null is unlimited */
13452
+ autoTopupPerDay: number | null;
13284
13453
  };
13285
13454
  StorageObject: {
13286
13455
  /**
@@ -21645,6 +21814,8 @@ export interface operations {
21645
21814
  belowMicroCents?: number;
21646
21815
  /** Format: int64 */
21647
21816
  microCents?: number;
21817
+ /** @description The most automatic top-ups a day, at least 1; null for unlimited. Left out, it is 5 */
21818
+ perDay?: number | null;
21648
21819
  };
21649
21820
  };
21650
21821
  };
@@ -21677,7 +21848,7 @@ export interface operations {
21677
21848
  };
21678
21849
  };
21679
21850
  403: components["responses"]["Forbidden"];
21680
- /** @description `no_payment_method` — there is no saved card. Top up manually once first */
21851
+ /** @description `no_payment_method` — the org has no valid saved card (read from Polar); `billing_address_required` — its billing address is incomplete. Fix either on the billing page first */
21681
21852
  409: {
21682
21853
  headers: {
21683
21854
  [name: string]: unknown;
@@ -21721,6 +21892,11 @@ export interface operations {
21721
21892
  /** @description one of the model's `effortLevels` */
21722
21893
  effort?: string;
21723
21894
  };
21895
+ /**
21896
+ * @description `env.ai.run`'s text verbosity. Only on a model whose catalog row lists `verbosityLevels` (`400 verbosity_unsupported`); a value off that list is `400 bad_verbosity`.
21897
+ * @enum {string}
21898
+ */
21899
+ verbosity?: "low" | "medium" | "high";
21724
21900
  /** @description `env.ai.run`'s structured output. Only on a model whose catalog row says `structuredOutput`. */
21725
21901
  responseFormat?: {
21726
21902
  /** @enum {string} */
@@ -23326,6 +23502,202 @@ export interface operations {
23326
23502
  };
23327
23503
  };
23328
23504
  };
23505
+ getBillingPaymentMethods: {
23506
+ parameters: {
23507
+ query?: never;
23508
+ header?: never;
23509
+ path: {
23510
+ orgSlug: components["parameters"]["OrgSlug"];
23511
+ };
23512
+ cookie?: never;
23513
+ };
23514
+ requestBody?: never;
23515
+ responses: {
23516
+ /** @description Saved cards */
23517
+ 200: {
23518
+ headers: {
23519
+ [name: string]: unknown;
23520
+ };
23521
+ content: {
23522
+ "application/json": components["schemas"]["PaymentMethodList"];
23523
+ };
23524
+ };
23525
+ 403: components["responses"]["Forbidden"];
23526
+ 404: components["responses"]["NotFound"];
23527
+ /** @description `billing_off` */
23528
+ 501: {
23529
+ headers: {
23530
+ [name: string]: unknown;
23531
+ };
23532
+ content?: never;
23533
+ };
23534
+ /** @description `billing_unavailable` */
23535
+ 502: {
23536
+ headers: {
23537
+ [name: string]: unknown;
23538
+ };
23539
+ content?: never;
23540
+ };
23541
+ };
23542
+ };
23543
+ setBillingDefaultPaymentMethod: {
23544
+ parameters: {
23545
+ query?: never;
23546
+ header?: never;
23547
+ path: {
23548
+ orgSlug: components["parameters"]["OrgSlug"];
23549
+ };
23550
+ cookie?: never;
23551
+ };
23552
+ requestBody: {
23553
+ content: {
23554
+ "application/json": {
23555
+ id: string;
23556
+ };
23557
+ };
23558
+ };
23559
+ responses: {
23560
+ /** @description The cards after the change */
23561
+ 200: {
23562
+ headers: {
23563
+ [name: string]: unknown;
23564
+ };
23565
+ content: {
23566
+ "application/json": components["schemas"]["PaymentMethodChange"];
23567
+ };
23568
+ };
23569
+ 400: components["responses"]["BadRequest"];
23570
+ 403: components["responses"]["Forbidden"];
23571
+ 404: components["responses"]["NotFound"];
23572
+ /** @description `card_expired` */
23573
+ 409: {
23574
+ headers: {
23575
+ [name: string]: unknown;
23576
+ };
23577
+ content?: never;
23578
+ };
23579
+ /** @description `billing_off` */
23580
+ 501: {
23581
+ headers: {
23582
+ [name: string]: unknown;
23583
+ };
23584
+ content?: never;
23585
+ };
23586
+ /** @description `billing_unavailable` */
23587
+ 502: {
23588
+ headers: {
23589
+ [name: string]: unknown;
23590
+ };
23591
+ content?: never;
23592
+ };
23593
+ };
23594
+ };
23595
+ addBillingPaymentMethod: {
23596
+ parameters: {
23597
+ query?: never;
23598
+ header?: never;
23599
+ path: {
23600
+ orgSlug: components["parameters"]["OrgSlug"];
23601
+ };
23602
+ cookie?: never;
23603
+ };
23604
+ requestBody: {
23605
+ content: {
23606
+ "application/json": {
23607
+ /** Format: uri */
23608
+ returnTo: string;
23609
+ };
23610
+ };
23611
+ };
23612
+ responses: {
23613
+ /** @description Portal session */
23614
+ 200: {
23615
+ headers: {
23616
+ [name: string]: unknown;
23617
+ };
23618
+ content: {
23619
+ "application/json": {
23620
+ /** Format: uri */
23621
+ url: string;
23622
+ };
23623
+ };
23624
+ };
23625
+ 400: components["responses"]["BadRequest"];
23626
+ 403: components["responses"]["Forbidden"];
23627
+ /** @description `email_required` — the signed-in account has no email address */
23628
+ 409: {
23629
+ headers: {
23630
+ [name: string]: unknown;
23631
+ };
23632
+ content?: never;
23633
+ };
23634
+ /** @description `billing_off` */
23635
+ 501: {
23636
+ headers: {
23637
+ [name: string]: unknown;
23638
+ };
23639
+ content?: never;
23640
+ };
23641
+ /** @description `billing_unavailable` */
23642
+ 502: {
23643
+ headers: {
23644
+ [name: string]: unknown;
23645
+ };
23646
+ content?: never;
23647
+ };
23648
+ };
23649
+ };
23650
+ removeBillingPaymentMethod: {
23651
+ parameters: {
23652
+ query?: never;
23653
+ header?: never;
23654
+ path: {
23655
+ orgSlug: components["parameters"]["OrgSlug"];
23656
+ };
23657
+ cookie?: never;
23658
+ };
23659
+ requestBody: {
23660
+ content: {
23661
+ "application/json": {
23662
+ id: string;
23663
+ };
23664
+ };
23665
+ };
23666
+ responses: {
23667
+ /** @description The cards after the removal */
23668
+ 200: {
23669
+ headers: {
23670
+ [name: string]: unknown;
23671
+ };
23672
+ content: {
23673
+ "application/json": components["schemas"]["PaymentMethodChange"];
23674
+ };
23675
+ };
23676
+ 403: components["responses"]["Forbidden"];
23677
+ 404: components["responses"]["NotFound"];
23678
+ /** @description `replacement_required` or `autotopup_needs_card` */
23679
+ 409: {
23680
+ headers: {
23681
+ [name: string]: unknown;
23682
+ };
23683
+ content?: never;
23684
+ };
23685
+ /** @description `billing_off` */
23686
+ 501: {
23687
+ headers: {
23688
+ [name: string]: unknown;
23689
+ };
23690
+ content?: never;
23691
+ };
23692
+ /** @description `billing_unavailable` */
23693
+ 502: {
23694
+ headers: {
23695
+ [name: string]: unknown;
23696
+ };
23697
+ content?: never;
23698
+ };
23699
+ };
23700
+ };
23329
23701
  cancelBilling: {
23330
23702
  parameters: {
23331
23703
  query?: never;