@isnap/sdk 1.3.0-next.185 → 1.3.0-next.186

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/CHANGELOG.md CHANGED
@@ -21,6 +21,10 @@ All notable changes to `@isnap/sdk` will be documented in this file. The format
21
21
  - System probes on the client itself: `client.version()` (`GET /v1/version`) and `client.health()` (`GET /v1/health`). `health()` takes the **bare-body** path — `/v1/health` is the one endpoint that returns no `{success,data}` envelope — and resolves a degraded `503` as data instead of throwing, so a status check reads `status`/`checks` without a `try`/`catch`. Named to be unmistakable from the per-line `client.lines.health(id)`: this one is the global backend probe on the client.
22
22
  - `client.lines.setVariant(id, { inbound_only })` — `POST /v1/lines/{id}/variant` (contract §2.4, WHA-3336): move a **rental** line between the INBOUND product and the TWO-WAY product **keeping the same phone number**, the same hardware and the same device session. `inbound_only` is not receive-only — the line converses normally and simply cannot OPEN a conversation, and once a handle has messaged it the exchange is unrestricted in both directions for good. Idempotent **on the value**, not on a key: asking for the variant the line already has resolves with the line and writes nothing, so a retry after a timeout is safe and is not a second change; it is not a toggle, state the value you want. Refusals are `ConflictError` (409) with `not_a_rental_line`, `line_not_active` or `variant_bound_to_stripe_price` (the line carries an iSnap Stripe subscription whose price IS its variant — change the subscription instead), and a line the caller does not own is a masked `NotFoundError` (404).
23
23
  - Webhook event `line.variant_changed` (contract §4.3.3, WHA-3336) on the `LineEventType` alias: `data` carries `{ line, from, to, changed_at }`, where `from` / `to` are the old and new `inbound_only` and `line` already holds the new value. It fires on the change only, and on any operator door that reuses the same service function — which is the case a partner cannot poll for. Added to the alias rather than left to the prefix guard because `LineEventType` is locked to the generated `WebhookEventName` enum by the compile-time parity assertion, so a catalogue addition that skipped it would fail `bun run typecheck`.
24
+ - `client.lines.setVariant(id, { inbound_only, effective? })` gains the optional `effective: 'now' | 'next_anchor'` (contract §2.4, WHA-3344). It is **optional and absent means `'now'`**, so every existing `setVariant(id, { inbound_only })` call is unchanged — deliberately typed `effective?` rather than carrying an OpenAPI `default`, because `openapi-typescript@7` renders a property with a `default` as REQUIRED and would have stopped those calls compiling. `'next_anchor'` stores the change against the line's next billing anchor and moves nothing today: `inbound_only` keeps its current value, so the line keeps serving the product it is being billed for, and the resolved `Line` carries `pending_variant: { inbound_only, effective_at }`. Use it for a **downgrade**, so the customer keeps the two-way product through the month they have already bought; use the default for an upgrade. `body.not_before` (optional ISO instant, `next_anchor` only, default now) is the earliest instant the change may take effect: iSnap resolves it to the FIRST anchor occurrence at or after it, applying the anchor's own day-of-month clamp. A monthly customer needs nothing here; a QUARTERLY or ANNUAL customer does, because without it the change lands on the next anchor and takes back capability they have already paid for. State the floor and read `pending_variant.effective_at` for the answer — never reproduce the clamp client-side. A past instant is `BadRequestError` (400 `not_before_in_the_past`), refused rather than clamped. ⚠️ **Adopt `effective` / `not_before` only against a deployment that has them**: iSnap STRIPS unknown request properties instead of rejecting them, so an early call gets no 400 — it gets the field dropped and an immediate downgrade. Check `client.version()` first, and read `pending_variant` on the 200. Scheduling is idempotent on the PENDING value the way an immediate change is on the live one — re-scheduling the change already pending resolves with the line and the date it was already given — while a DIFFERENT pending change is `ConflictError` (409 `variant_change_already_pending`). An immediate change does **not** withdraw a scheduled one: they are separate acts.
25
+ - `client.lines.cancelVariantChange(id)` — `DELETE /v1/lines/{id}/variant` (contract §2.4, WHA-3344): call off the change waiting for the anchor. The line's live `inbound_only` is never touched, so the only effect is that `pending_variant` becomes `null`. A line with no pending change is `NotFoundError` (404 `no_pending_variant_change`), which includes a change the anchor has already applied; losing the race to the anchor mid-request is `ConflictError` (409 `variant_change_already_applied`), so the two are distinguishable from the code alone. It succeeds on a suspended or cancelled line — withdrawing an instruction must never be blocked by the state that made it moot.
26
+ - `Line.pending_variant` — `{ inbound_only, effective_at } | null` on every `Line` (contract §2.4, WHA-3344). **Not a second spelling of `inbound_only`**: that field is what the line IS and what the send gate enforces today, this is what it WILL be and on which date. Test the object against `null`, never `pending_variant.inbound_only` for truthiness — `false` there is a scheduled UPGRADE, a meaningful value and not an absence.
27
+ - Webhook events `line.variant_scheduled` and `line.variant_unscheduled` (contract §4.3.3, WHA-3344) on the `LineEventType` alias: both carry the same three fields, `data.line_id`, `data.inbound_only` (the value the line WILL take, or would have taken) and `data.effective_at`, so a console mirrors the pending state with one code path in both directions instead of polling. They announce the PENDING state, not the change — the change still arrives as `line.variant_changed`, which now carries those SAME three flat fields on BOTH producers plus `data.scheduled` (always present, `false` from the partner's own immediate call and `true` when the anchor applied a scheduled one) beside the original `data.line` / `data.from` / `data.to` / `data.changed_at`. So one accessor reads a line's variant across all three events. A change DROPPED at the anchor (the line was cancelled, suspended or released, or the partner made it themselves meanwhile) fires nothing — do not treat a missing `line.variant_changed` at the expected instant as a delivery failure; re-read the line.
24
28
  - `coverage.test.ts` guard: for every `/v1` operation in the published `openapi.json`, asserts an SDK wrapper exists (or is listed as deliberately un-wrapped, each with a reason). The expected set is derived from the spec, not hand-written, so a newly published endpoint reddens the suite until it is wrapped.
25
29
 
26
30
  ### Changed
@@ -624,8 +624,8 @@ export interface paths {
624
624
  options?: never;
625
625
  head?: never;
626
626
  /**
627
- * Update line metadata
628
- * @description Merge-patch the line's free-form `metadata` tag object. Pass `null` for a key to delete it; pass a new value to overwrite. Metadata is echoed on every `line.*` webhook so partners can attribute events back to their own customer IDs.
627
+ * Update a line
628
+ * @description Update the line's free-form `metadata` tag object, its billing anchor, or both. **`metadata`** is a MERGE-patch: pass `null` for a key to delete it, a new value to overwrite. It is echoed on every `line.*` webhook so partners can attribute events back to their own customer IDs. **`billing_anchor_at`** is the date the customer who pays for this line is billed on: a change takes effect at the NEXT occurrence and never rewrites a period already billed, and `null` clears it so the line falls back to its activation instant. Send at least one of the two — a body that sets neither is refused with `no_fields_to_patch`.
629
629
  */
630
630
  patch: {
631
631
  parameters: {
@@ -1060,7 +1060,7 @@ export interface paths {
1060
1060
  put?: never;
1061
1061
  /**
1062
1062
  * Activate a reserved line
1063
- * @description Commit a `reserved` line to `active`. **Wholesale partners only** (no Stripe checkout surface): this is the second phase of reserve→activate — they reserve, bill their own end-user, then activate within the 15-minute window with no per-line Stripe sub (EOM-metered), and may pick the INBOUND product via `inbound_only` (a line that cannot initiate — the contact must message first, after which the exchange is unrestricted; not receive-only). Direct customers get `402 checkout_required`: their line is activated by the `checkout.session.completed` webhook once `POST /v1/billing/checkout` is paid, which is what mints the Stripe subscription that bills them (§2.5 Flow A). `inbound_only` is meaningless for them — theirs comes from the checkout price.
1063
+ * @description Commit a `reserved` line to `active`. **Wholesale partners only** (no Stripe checkout surface): this is the second phase of reserve→activate — they reserve, bill their own end-user, then activate within the 15-minute window with no per-line Stripe sub (EOM-metered), and may pick the INBOUND product via `inbound_only` (a line that cannot initiate — the contact must message first, after which the exchange is unrestricted; not receive-only). Pass `billing_anchor_at` to bill this line on the date your own customer is billed on rather than on its activation instant — one full month at each occurrence, with a credit at the first one for the days the activation month had already paid for past it. Direct customers get `402 checkout_required`: their line is activated by the `checkout.session.completed` webhook once `POST /v1/billing/checkout` is paid, which is what mints the Stripe subscription that bills them (§2.5 Flow A). `inbound_only` is meaningless for them — theirs comes from the checkout price.
1064
1064
  */
1065
1065
  post: {
1066
1066
  parameters: {
@@ -1517,7 +1517,7 @@ export interface paths {
1517
1517
  put?: never;
1518
1518
  /**
1519
1519
  * Switch a rental line between inbound-only and two-way
1520
- * @description Move a rental line you own between the INBOUND product (`inbound_only: true` — the line may only message a handle that has messaged it first; it is NOT receive-only) and the TWO-WAY product, **keeping the same phone number, hardware and device session**. Idempotent on the value: asking for the variant the line already has returns 200 and writes nothing. Refused with 409 on a non-rental line (`not_a_rental_line`), on a line that is not `active` (`line_not_active`), and on a line carrying an iSnap Stripe subscription (`variant_bound_to_stripe_price`) — there the subscription's price is the variant and changing the subscription is how it moves. Emits `line.variant_changed`.
1520
+ * @description Move a rental line you own between the INBOUND product (`inbound_only: true` — the line may only message a handle that has messaged it first; it is NOT receive-only) and the TWO-WAY product, **keeping the same phone number, hardware and device session**. `effective` says WHEN: `now` (the default, and the only behaviour before the field existed) applies it to the very next send; `next_anchor` stores it against the line's next billing anchor, leaves `inbound_only` alone, and surfaces the change as `pending_variant` on the line — which is what a DOWNGRADE needs, so the customer keeps the product they have already paid for through the month. Idempotent on the value in both modes: asking for the variant the line already has (or re-scheduling the change already pending) returns 200 and writes nothing. **A scheduled call can therefore legitimately answer `pending_variant: null`** — scheduling the variant the line ALREADY carries writes nothing, because nothing is pending: the line will still be on that variant at the anchor. That is a truthful 200, not a failure. Tell it apart from a dropped-field failure by reading the top-level `inbound_only`: equal to what you asked for means already-at-target; different means your `effective` never reached this endpoint and the change was applied immediately. `not_before` (optional ISO instant, `next_anchor` only, default now) is the earliest instant the change may take effect; iSnap schedules it at the first anchor occurrence AT OR AFTER it, so a quarterly or annual customer keeps their product for the whole period they paid for instead of losing it at the next anchor. A `not_before` in the past is refused with `400 not_before_in_the_past` rather than clamped. Refused with 409 on a non-rental line (`not_a_rental_line`), on a line that is not `active` (`line_not_active`), on a line carrying an iSnap Stripe subscription (`variant_bound_to_stripe_price`) — there the subscription's price is the variant and changing the subscription is how it moves — and, when scheduling, on a line that already has a DIFFERENT change pending (`variant_change_already_pending`; cancel it first). Emits `line.variant_changed` on an immediate change and `line.variant_scheduled` on a scheduled one.
1521
1521
  */
1522
1522
  post: {
1523
1523
  parameters: {
@@ -1534,7 +1534,7 @@ export interface paths {
1534
1534
  };
1535
1535
  };
1536
1536
  responses: {
1537
- /** @description Line, with `inbound_only` reflecting the requested variant */
1537
+ /** @description Line. With `effective: "now"` its `inbound_only` reflects the requested variant; with `effective: "next_anchor"` `inbound_only` is unchanged and `pending_variant` carries the requested variant and the date it applies. */
1538
1538
  200: {
1539
1539
  headers: {
1540
1540
  [name: string]: unknown;
@@ -1614,7 +1614,93 @@ export interface paths {
1614
1614
  };
1615
1615
  };
1616
1616
  };
1617
- delete?: never;
1617
+ /**
1618
+ * Cancel a scheduled variant change
1619
+ * @description Call off the variant change scheduled for this line's next billing anchor (`POST /v1/lines/{id}/variant` with `effective: 'next_anchor'`). The line's live `inbound_only` is never touched by this call — it was never moved by the scheduling either — so the only effect is that `pending_variant` becomes `null` and nothing happens at the anchor. Answers `404 no_pending_variant_change` when the line carries no pending change, which includes a change the anchor has already applied; a change applied while this request was in flight is `409 variant_change_already_applied`. Succeeds on a suspended or cancelled line: withdrawing an instruction must never be blocked by the state that made it moot. Emits `line.variant_unscheduled`.
1620
+ */
1621
+ delete: {
1622
+ parameters: {
1623
+ query?: never;
1624
+ header?: never;
1625
+ path: {
1626
+ id: string;
1627
+ };
1628
+ cookie?: never;
1629
+ };
1630
+ requestBody?: never;
1631
+ responses: {
1632
+ /** @description Scheduled variant change cancelled */
1633
+ 204: {
1634
+ headers: {
1635
+ [name: string]: unknown;
1636
+ };
1637
+ content?: never;
1638
+ };
1639
+ /** @description Bad request — validation failed */
1640
+ 400: {
1641
+ headers: {
1642
+ [name: string]: unknown;
1643
+ };
1644
+ content: {
1645
+ "application/json": components["schemas"]["ErrorEnvelope"];
1646
+ };
1647
+ };
1648
+ /** @description Unauthenticated — missing or invalid bearer token */
1649
+ 401: {
1650
+ headers: {
1651
+ [name: string]: unknown;
1652
+ };
1653
+ content: {
1654
+ "application/json": components["schemas"]["ErrorEnvelope"];
1655
+ };
1656
+ };
1657
+ /** @description Forbidden — caller authenticated but not allowed */
1658
+ 403: {
1659
+ headers: {
1660
+ [name: string]: unknown;
1661
+ };
1662
+ content: {
1663
+ "application/json": components["schemas"]["ErrorEnvelope"];
1664
+ };
1665
+ };
1666
+ /** @description Not found */
1667
+ 404: {
1668
+ headers: {
1669
+ [name: string]: unknown;
1670
+ };
1671
+ content: {
1672
+ "application/json": components["schemas"]["ErrorEnvelope"];
1673
+ };
1674
+ };
1675
+ /** @description Conflict — concurrent or terminal state */
1676
+ 409: {
1677
+ headers: {
1678
+ [name: string]: unknown;
1679
+ };
1680
+ content: {
1681
+ "application/json": components["schemas"]["ErrorEnvelope"];
1682
+ };
1683
+ };
1684
+ /** @description Too many requests — rate limit exceeded */
1685
+ 429: {
1686
+ headers: {
1687
+ [name: string]: unknown;
1688
+ };
1689
+ content: {
1690
+ "application/json": components["schemas"]["ErrorEnvelope"];
1691
+ };
1692
+ };
1693
+ /** @description Internal server error */
1694
+ 500: {
1695
+ headers: {
1696
+ [name: string]: unknown;
1697
+ };
1698
+ content: {
1699
+ "application/json": components["schemas"]["ErrorEnvelope"];
1700
+ };
1701
+ };
1702
+ };
1703
+ };
1618
1704
  options?: never;
1619
1705
  head?: never;
1620
1706
  patch?: never;
@@ -2728,6 +2814,12 @@ export interface paths {
2728
2814
  inbound_only?: boolean;
2729
2815
  /** @enum {string} */
2730
2816
  billing_tier?: "rental_iphone" | "rental_android" | "byod_imessage" | "byod_android" | "shared_pool" | "shared_imessage";
2817
+ /**
2818
+ * Format: date-time
2819
+ * @description The billing anchor of the customer who pays for this line (ISO-8601, UTC) — the ONE date it is billed on. Its day of the month becomes the line’s billing day, clamped to the last day of a shorter month; the time of day is kept, because the anchor is an instant and not a calendar day. State the date your own customer is billed on and every line they hold moves together: at each occurrence the line is charged one full month, and at the FIRST occurrence after activation it is credited for the days the activation month had already paid for past it, at the activation rate. Omit it and the line is billed on its activation instant, which is the behaviour of every line provisioned before anchors existed. Refused (400 `billing_anchor_too_far`) more than 31 days after the activation — that would make the first period longer than a month.
2820
+ * @example 2026-09-11T09:15:00Z
2821
+ */
2822
+ billing_anchor_at?: string;
2731
2823
  };
2732
2824
  };
2733
2825
  };
@@ -7067,6 +7159,15 @@ export interface components {
7067
7159
  anniversary_at: string | null;
7068
7160
  /** @description The anniversary occurrence at which iSnap will END this line, set by POST /v1/lines/{id}/cancel and cleared by POST /v1/lines/{id}/uncancel. The line stays fully active and usable until this instant — the month is already paid for and is never prorated — and iSnap terminates it itself when the date arrives. `null` means the line is not cancelled. It survives the termination it schedules, so a `cancelled` line still says which date ended it. */
7069
7161
  cancel_at: string | null;
7162
+ /** @description The billing anchor you stated for this line — the date the customer who pays for it is billed on. Every line that customer holds moves on this same date, so their period and your invoice advance together. `null` means you stated nothing, NOT that the line has no billing date: it then falls back to the activation instant, which is how every line was billed before anchors existed. Set it at provisioning (`POST /v1/pre-orders`, `POST /v1/lines/{id}/activate`) or change it later with `PATCH /v1/lines/{id}` — a change takes effect at the NEXT anchor and never rewrites a period already billed. */
7163
+ billing_anchor_at: string | null;
7164
+ /** @description The next instant this line will be billed on, derived from the anchor above (or from the activation instant when you stated none) and clamped to the last day of a shorter month — a line anchored on the 31st bills on the 28th in February and on the 31st again in March, the clamp never sticks. At that instant the line is charged one full month at the product it carries then; at the FIRST occurrence after activation it is also credited for the days the activation month had already paid for past it, at the activation rate. `null` when the line will not be billed again: never activated, not in a billable status, or cancelled on or before that occurrence. */
7165
+ next_anchor_at: string | null;
7166
+ /** @description The variant change scheduled for this line's next billing anchor, or `null` when none is pending. `inbound_only` is the value the line WILL carry — the live value stays in the top-level `inbound_only` field until `effective_at` arrives, because the line keeps serving the product it is being billed for until then. Schedule one with POST /v1/lines/{id}/variant and `effective: 'next_anchor'`; cancel it with DELETE /v1/lines/{id}/variant. It is cleared when the change is applied, when it is cancelled, and when the line leaves its owner. */
7167
+ pending_variant: {
7168
+ inbound_only: boolean;
7169
+ effective_at: string;
7170
+ } | null;
7070
7171
  created_at: string;
7071
7172
  metadata: {
7072
7173
  [key: string]: unknown;
@@ -7148,6 +7249,12 @@ export interface components {
7148
7249
  };
7149
7250
  ActivateLine: {
7150
7251
  inbound_only?: boolean;
7252
+ /**
7253
+ * Format: date-time
7254
+ * @description The billing anchor of the customer who pays for this line (ISO-8601, UTC) — the ONE date it is billed on. Its day of the month becomes the line’s billing day, clamped to the last day of a shorter month; the time of day is kept, because the anchor is an instant and not a calendar day. State the date your own customer is billed on and every line they hold moves together: at each occurrence the line is charged one full month, and at the FIRST occurrence after activation it is credited for the days the activation month had already paid for past it, at the activation rate. Omit it and the line is billed on its activation instant, which is the behaviour of every line provisioned before anchors existed. Refused (400 `billing_anchor_too_far`) more than 31 days after the activation — that would make the first period longer than a month.
7255
+ * @example 2026-09-11T09:15:00Z
7256
+ */
7257
+ billing_anchor_at?: string;
7151
7258
  };
7152
7259
  TransferOwnership: {
7153
7260
  /** Format: uuid */
@@ -7157,6 +7264,17 @@ export interface components {
7157
7264
  SetLineVariant: {
7158
7265
  /** @description True for the INBOUND product: the line may then only message a handle that has messaged it FIRST (`outbound_first_forbidden`), and once that handle has, the exchange is unrestricted in both directions. It is NOT receive-only. False for the two-way product. Rental lines only. */
7159
7266
  inbound_only: boolean;
7267
+ /**
7268
+ * @description WHEN the variant moves. `now` (the default, and the only behaviour before this field existed) writes the variant immediately and it applies to the very next send. `next_anchor` stores the change against the line's next billing anchor and applies nothing today: `inbound_only` keeps its current value, the line keeps serving the product it is being billed for, and `pending_variant` on the line read carries what will change and when. Use `next_anchor` for a DOWNGRADE, so the customer keeps the two-way product through the month they have already paid for; use `now` for an upgrade. A scheduled change is cancelled with DELETE /v1/lines/{id}/variant, and an immediate change does NOT cancel one — the two are separate acts.
7269
+ * @enum {string}
7270
+ */
7271
+ effective?: "now" | "next_anchor";
7272
+ /**
7273
+ * Format: date-time
7274
+ * @description Only meaningful with `effective: "next_anchor"`. The earliest instant the change may take effect (ISO-8601, UTC); defaults to now. iSnap schedules it at the FIRST anchor occurrence at or after this instant, with the anchor's own day-of-month clamp applied — so state your customer's paid-period end and let iSnap resolve the occurrence rather than computing one yourself. For a monthly customer that is the next anchor, which is the default; for a quarterly or annual customer it is the occurrence three or twelve months out, and the line keeps its two-way capability for the whole period they have paid for. The resolved instant comes back as `pending_variant.effective_at`. An instant in the past is refused with 400 `not_before_in_the_past`.
7275
+ * @example 2027-08-11T14:30:00Z
7276
+ */
7277
+ not_before?: string;
7160
7278
  };
7161
7279
  TerminateLine: {
7162
7280
  reason?: string;
@@ -7170,9 +7288,15 @@ export interface components {
7170
7288
  anniversary_at: string;
7171
7289
  };
7172
7290
  PatchLine: {
7173
- metadata: {
7291
+ metadata?: {
7174
7292
  [key: string]: unknown;
7175
7293
  };
7294
+ /**
7295
+ * Format: date-time
7296
+ * @description The billing anchor of the customer who pays for this line (ISO-8601, UTC) — the ONE date it is billed on. Its day of the month becomes the line’s billing day, clamped to the last day of a shorter month; the time of day is kept, because the anchor is an instant and not a calendar day. State the date your own customer is billed on and every line they hold moves together: at each occurrence the line is charged one full month, and at the FIRST occurrence after activation it is credited for the days the activation month had already paid for past it, at the activation rate. Omit it and the line is billed on its activation instant, which is the behaviour of every line provisioned before anchors existed. Refused (400 `billing_anchor_too_far`) more than 31 days after the activation — that would make the first period longer than a month.
7297
+ * @example 2026-09-11T09:15:00Z
7298
+ */
7299
+ billing_anchor_at?: string | null;
7176
7300
  };
7177
7301
  QuotaEnvelope: {
7178
7302
  /** @enum {boolean} */
@@ -7340,6 +7464,8 @@ export interface components {
7340
7464
  id: string;
7341
7465
  preferred_area_codes: string[];
7342
7466
  inbound_only: boolean;
7467
+ /** @description The billing anchor you stated when placing this pre-order, carried onto the line at confirm. `null` means you stated none and the line is billed on its activation instant. */
7468
+ billing_anchor_at: string | null;
7343
7469
  status: components["schemas"]["PreOrderStatus"];
7344
7470
  stripe_client_secret: string | null;
7345
7471
  estimated_fulfillment: string | null;
@@ -7669,7 +7795,7 @@ export interface components {
7669
7795
  * @description A concrete event type (e.g. `message.received`), a family wildcard (`line.*`), or the catch-all `*`.
7670
7796
  * @enum {string}
7671
7797
  */
7672
- WebhookEventName: "message.queued" | "message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.received" | "message.scheduled" | "message.cancelled" | "message.fallback_triggered" | "reaction.added" | "reaction.received" | "reaction.removed" | "line.connected" | "line.disconnected" | "line.offline" | "line.degraded" | "line.apple_id_flagged" | "line.quota_warning" | "line.quota_exceeded" | "line.capability_changed" | "line.terminated" | "line.variant_changed" | "typing_indicator.started" | "typing_indicator.stopped" | "trial.linked" | "trial.dormant" | "trial.reactivated" | "trial.bind_conflict" | "trial.revoked" | "binding.released" | "pre_order.fulfilled" | "pre_order.cancelled" | "macos_session.rented" | "macos_session.released" | "webhook.test" | "*" | "message.*" | "reaction.*" | "line.*" | "typing_indicator.*" | "trial.*" | "binding.*" | "pre_order.*" | "macos_session.*" | "webhook.*";
7798
+ WebhookEventName: "message.queued" | "message.sent" | "message.delivered" | "message.read" | "message.failed" | "message.received" | "message.scheduled" | "message.cancelled" | "message.fallback_triggered" | "reaction.added" | "reaction.received" | "reaction.removed" | "line.connected" | "line.disconnected" | "line.offline" | "line.degraded" | "line.apple_id_flagged" | "line.quota_warning" | "line.quota_exceeded" | "line.capability_changed" | "line.terminated" | "line.variant_changed" | "line.variant_scheduled" | "line.variant_unscheduled" | "typing_indicator.started" | "typing_indicator.stopped" | "trial.linked" | "trial.dormant" | "trial.reactivated" | "trial.bind_conflict" | "trial.revoked" | "binding.released" | "pre_order.fulfilled" | "pre_order.cancelled" | "macos_session.rented" | "macos_session.released" | "webhook.test" | "*" | "message.*" | "reaction.*" | "line.*" | "typing_indicator.*" | "trial.*" | "binding.*" | "pre_order.*" | "macos_session.*" | "webhook.*";
7673
7799
  WebhookList: {
7674
7800
  webhooks: components["schemas"]["Webhook"][];
7675
7801
  };
@@ -65,6 +65,12 @@ export declare class LinesResource extends BaseResource {
65
65
  * checkout_required` — their line activates when the Stripe Checkout session
66
66
  * from `billing.checkout()` is paid, and their `inbound_only` comes from the
67
67
  * price they paid.
68
+ *
69
+ * `body.billing_anchor_at` states the date the customer who pays for this
70
+ * line is billed on — every line that customer holds then moves together: one
71
+ * full month at each occurrence, with a credit at the first occurrence for
72
+ * the days the activation month had already paid for past it. Omit it and the
73
+ * line is billed on its activation instant.
68
74
  */
69
75
  activate(id: string, body?: ActivateLineBody, opts?: RequestOptions): Promise<Line>;
70
76
  /** `POST /v1/lines/{id}/release` — release an active or reserved line back to the pool. */
@@ -190,6 +196,59 @@ export declare class LinesResource extends BaseResource {
190
196
  * `line.variant_changed` event — so a retry after a timeout is safe and is
191
197
  * not a second change. It is not a toggle: state the value you want.
192
198
  *
199
+ * `body.effective` says WHEN, and defaults to `'now'` — the only behaviour
200
+ * before the field existed, so an existing call is unchanged.
201
+ *
202
+ * - `'now'`: as above. Use it for an UPGRADE, which the customer has just
203
+ * paid for and which must apply to the very next send.
204
+ * - `'next_anchor'`: store the change against the line's next billing
205
+ * anchor. Nothing moves today — `inbound_only` keeps its current value and
206
+ * the line keeps serving the product it is being billed for — and the
207
+ * resolved line carries `pending_variant: { inbound_only, effective_at }`.
208
+ * Use it for a DOWNGRADE, so the customer keeps the two-way product
209
+ * through the month they have already bought. iSnap applies it at the
210
+ * anchor and fires `line.variant_changed` with `data.scheduled: true`;
211
+ * cancel it beforehand with {@link LinesResource.cancelVariantChange}.
212
+ *
213
+ * `body.not_before` (ISO instant, `'next_anchor'` only, defaults to now) is
214
+ * the earliest instant the change may take effect. iSnap resolves it to the
215
+ * FIRST anchor occurrence at or after it, applying the anchor's own
216
+ * day-of-month clamp — so state your customer's paid-period end and let
217
+ * iSnap pick the occurrence rather than computing one yourself. A monthly
218
+ * customer needs nothing here; a QUARTERLY or ANNUAL customer does, because
219
+ * without it the change would land on the next anchor and take back
220
+ * capability they have already paid for. The resolved instant comes back as
221
+ * `pending_variant.effective_at`. An instant in the past is a
222
+ * `BadRequestError` (400 `not_before_in_the_past`) — it is refused rather
223
+ * than clamped, because for a long-period customer the silent repair and the
224
+ * correct answer differ by months of the product they bought.
225
+ *
226
+ * Scheduling is idempotent on the PENDING value the same way an immediate
227
+ * change is on the live one: re-scheduling the change already pending
228
+ * resolves with the line and the date it was already given, and writes
229
+ * nothing. A DIFFERENT pending change is a `ConflictError` (409
230
+ * `variant_change_already_pending`) — cancel it first, because there is no
231
+ * honest way to merge two answers to "what is this line at the anchor".
232
+ *
233
+ * **A scheduled call can legitimately resolve with `pending_variant: null`,
234
+ * and that is not a failure.** Scheduling the variant the line ALREADY
235
+ * carries writes nothing, because nothing is pending — the line will still
236
+ * be on that variant at the anchor. Do not retry it. Tell it apart from a
237
+ * silently-dropped `effective` (see the deploy-order warning below) by
238
+ * reading the top-level `inbound_only`: equal to what you asked for means
239
+ * already-at-target; different means the field never reached the server and
240
+ * the change was applied immediately.
241
+ *
242
+ * ⚠️ **Adopt `effective` and `not_before` only against a deployment that has
243
+ * them.** iSnap STRIPS unknown request properties rather than rejecting
244
+ * them, so an early call gets no 400 — it gets the field dropped and an
245
+ * ordinary immediate flip, applying a downgrade on the spot. Check
246
+ * `client.version()` before sending either field.
247
+ *
248
+ * An immediate change does NOT cancel a scheduled one: they are separate
249
+ * acts, and a partner who needs an urgent upgrade must not have their
250
+ * standing downgrade withdrawn by it. Use `cancelVariantChange` for that.
251
+ *
193
252
  * Refusals: `ConflictError` (409) — `not_a_rental_line` (byod / pool /
194
253
  * shared have no variant), `line_not_active` (the line must be in service),
195
254
  * `variant_bound_to_stripe_price` (the line carries an iSnap Stripe
@@ -199,8 +258,34 @@ export declare class LinesResource extends BaseResource {
199
258
  */
200
259
  setVariant(id: string, body: SetLineVariantBody, opts?: RequestOptions): Promise<Line>;
201
260
  /**
202
- * `PATCH /v1/lines/{id}` — merge-patch the line's free-form metadata
203
- * object. Null-valued keys delete those keys from the stored object.
261
+ * `DELETE /v1/lines/{id}/variant` — call off the variant change scheduled
262
+ * for this line's next billing anchor.
263
+ *
264
+ * The line's live `inbound_only` is never touched: the scheduling did not
265
+ * move it either, so the only effect is that `pending_variant` becomes
266
+ * `null` and nothing happens at the anchor.
267
+ *
268
+ * A line with no pending change is a `NotFoundError` (404
269
+ * `no_pending_variant_change`), which includes a change the anchor has
270
+ * already applied — there is nothing left to cancel, and the line's own
271
+ * `inbound_only` now carries the answer. A change applied while this request
272
+ * was in flight is a `ConflictError` (409 `variant_change_already_applied`),
273
+ * so the two outcomes are distinguishable from the code alone.
274
+ *
275
+ * Succeeds on a suspended or cancelled line: withdrawing an instruction must
276
+ * never be blocked by the state that made it moot.
277
+ */
278
+ cancelVariantChange(id: string, opts?: RequestOptions): Promise<void>;
279
+ /**
280
+ * `PATCH /v1/lines/{id}` — update the line's free-form metadata object, its
281
+ * billing anchor, or both.
282
+ *
283
+ * `metadata` is a MERGE: null-valued keys delete those keys from the stored
284
+ * object. `billing_anchor_at` is the date the customer who pays for this line
285
+ * is billed on — a change takes effect at the NEXT occurrence and never
286
+ * rewrites a period already billed, and `null` clears it so the line falls
287
+ * back to its activation instant. Send at least one of the two; a body that
288
+ * states neither is refused with `no_fields_to_patch`.
204
289
  */
205
290
  patch(id: string, body: PatchLineBody, opts?: RequestOptions): Promise<Line>;
206
291
  /** `GET /v1/lines/{id}/quota` — the line's current 5-bucket quota snapshot. */
@@ -1 +1 @@
1
- {"version":3,"file":"lines.d.ts","sourceRoot":"","sources":["../../src/resources/lines.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lines.d.ts","sourceRoot":"","sources":["../../src/resources/lines.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAExC,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;AAChD,MAAM,MAAM,QAAQ,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,CAAC,CAAA;AACxD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,CAAA;AACtD,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAA;AAChE,MAAM,MAAM,gBAAgB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,cAAc,CAAC,CAAA;AACpE,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAA;AAC9E,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,CAAA;AAC9D,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAA;AACxE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAA;AACtE,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,oBAAoB,CAAC,CAAA;AAChF,MAAM,MAAM,kBAAkB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,gBAAgB,CAAC,CAAA;AACxE,MAAM,MAAM,eAAe,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,iBAAiB,CAAC,CAAA;AACtE,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,wBAAwB,CAAC,CAAA;AACpF,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAA;AAC5D,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,eAAe,CAAC,CAAA;AAClE,MAAM,MAAM,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC,mBAAmB,CAAC,CAAA;AAE1E,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAC1F,MAAM,MAAM,cAAc,GAAG,WAAW,CACtC,KAAK,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAC5D,CAAA;AAED,qBAAa,aAAc,SAAQ,YAAY;IAC7C;;;;;OAKG;IACH,IAAI,CAAC,KAAK,GAAE,cAAmB,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAO1E,uEAAuE;IACvE,QAAQ,CAAC,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD,qFAAqF;IACrF,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIrD;;;;OAIG;IACH,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAIlE;;;;;;;;;;;;;;;;OAgBG;IACH,UAAU,CAAC,IAAI,GAAE,kBAAuB,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E,mFAAmF;IACnF,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASzD;;;;;;;;;;;;;;OAcG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,gBAAqB,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASvF,2FAA2F;IAC3F,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,iBAAsB,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASxD;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAS1D;;;;;;;;;;;;OAYG;IACH,cAAc,CACZ,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,sBAAsB,EAC5B,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC;IAShB;;;OAGG;IACH,iBAAiB,CACf,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,qBAAqB,EAC3B,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/D;;;;;OAKG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA2EG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAStF;;;;;;;;;;;;;;;;;OAiBG;IACH,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IASrE;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAS5E,+EAA+E;IAC/E,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAShE,qFAAqF;IACrF,KAAK,CACH,EAAE,EAAE,MAAM,EACV,KAAK,GAAE,cAAmB,EAC1B,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,iBAAiB,CAAC;IAS7B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,UAAU,CAAC;IAS9D,6FAA6F;IAC7F,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAS7E;;;;OAIG;IACH,YAAY,CACV,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,eAAe,EACrB,IAAI,CAAC,EAAE,cAAc,GACpB,OAAO,CAAC,sBAAsB,CAAC;CAQnC"}
@@ -60,6 +60,12 @@ export class LinesResource extends BaseResource {
60
60
  * checkout_required` — their line activates when the Stripe Checkout session
61
61
  * from `billing.checkout()` is paid, and their `inbound_only` comes from the
62
62
  * price they paid.
63
+ *
64
+ * `body.billing_anchor_at` states the date the customer who pays for this
65
+ * line is billed on — every line that customer holds then moves together: one
66
+ * full month at each occurrence, with a credit at the first occurrence for
67
+ * the days the activation month had already paid for past it. Omit it and the
68
+ * line is billed on its activation instant.
63
69
  */
64
70
  activate(id, body = {}, opts) {
65
71
  return this.client.request('POST', `/v1/lines/${encodeURIComponent(id)}/activate`, body, opts);
@@ -203,6 +209,59 @@ export class LinesResource extends BaseResource {
203
209
  * `line.variant_changed` event — so a retry after a timeout is safe and is
204
210
  * not a second change. It is not a toggle: state the value you want.
205
211
  *
212
+ * `body.effective` says WHEN, and defaults to `'now'` — the only behaviour
213
+ * before the field existed, so an existing call is unchanged.
214
+ *
215
+ * - `'now'`: as above. Use it for an UPGRADE, which the customer has just
216
+ * paid for and which must apply to the very next send.
217
+ * - `'next_anchor'`: store the change against the line's next billing
218
+ * anchor. Nothing moves today — `inbound_only` keeps its current value and
219
+ * the line keeps serving the product it is being billed for — and the
220
+ * resolved line carries `pending_variant: { inbound_only, effective_at }`.
221
+ * Use it for a DOWNGRADE, so the customer keeps the two-way product
222
+ * through the month they have already bought. iSnap applies it at the
223
+ * anchor and fires `line.variant_changed` with `data.scheduled: true`;
224
+ * cancel it beforehand with {@link LinesResource.cancelVariantChange}.
225
+ *
226
+ * `body.not_before` (ISO instant, `'next_anchor'` only, defaults to now) is
227
+ * the earliest instant the change may take effect. iSnap resolves it to the
228
+ * FIRST anchor occurrence at or after it, applying the anchor's own
229
+ * day-of-month clamp — so state your customer's paid-period end and let
230
+ * iSnap pick the occurrence rather than computing one yourself. A monthly
231
+ * customer needs nothing here; a QUARTERLY or ANNUAL customer does, because
232
+ * without it the change would land on the next anchor and take back
233
+ * capability they have already paid for. The resolved instant comes back as
234
+ * `pending_variant.effective_at`. An instant in the past is a
235
+ * `BadRequestError` (400 `not_before_in_the_past`) — it is refused rather
236
+ * than clamped, because for a long-period customer the silent repair and the
237
+ * correct answer differ by months of the product they bought.
238
+ *
239
+ * Scheduling is idempotent on the PENDING value the same way an immediate
240
+ * change is on the live one: re-scheduling the change already pending
241
+ * resolves with the line and the date it was already given, and writes
242
+ * nothing. A DIFFERENT pending change is a `ConflictError` (409
243
+ * `variant_change_already_pending`) — cancel it first, because there is no
244
+ * honest way to merge two answers to "what is this line at the anchor".
245
+ *
246
+ * **A scheduled call can legitimately resolve with `pending_variant: null`,
247
+ * and that is not a failure.** Scheduling the variant the line ALREADY
248
+ * carries writes nothing, because nothing is pending — the line will still
249
+ * be on that variant at the anchor. Do not retry it. Tell it apart from a
250
+ * silently-dropped `effective` (see the deploy-order warning below) by
251
+ * reading the top-level `inbound_only`: equal to what you asked for means
252
+ * already-at-target; different means the field never reached the server and
253
+ * the change was applied immediately.
254
+ *
255
+ * ⚠️ **Adopt `effective` and `not_before` only against a deployment that has
256
+ * them.** iSnap STRIPS unknown request properties rather than rejecting
257
+ * them, so an early call gets no 400 — it gets the field dropped and an
258
+ * ordinary immediate flip, applying a downgrade on the spot. Check
259
+ * `client.version()` before sending either field.
260
+ *
261
+ * An immediate change does NOT cancel a scheduled one: they are separate
262
+ * acts, and a partner who needs an urgent upgrade must not have their
263
+ * standing downgrade withdrawn by it. Use `cancelVariantChange` for that.
264
+ *
206
265
  * Refusals: `ConflictError` (409) — `not_a_rental_line` (byod / pool /
207
266
  * shared have no variant), `line_not_active` (the line must be in service),
208
267
  * `variant_bound_to_stripe_price` (the line carries an iSnap Stripe
@@ -214,8 +273,36 @@ export class LinesResource extends BaseResource {
214
273
  return this.client.request('POST', `/v1/lines/${encodeURIComponent(id)}/variant`, body, opts);
215
274
  }
216
275
  /**
217
- * `PATCH /v1/lines/{id}` — merge-patch the line's free-form metadata
218
- * object. Null-valued keys delete those keys from the stored object.
276
+ * `DELETE /v1/lines/{id}/variant` — call off the variant change scheduled
277
+ * for this line's next billing anchor.
278
+ *
279
+ * The line's live `inbound_only` is never touched: the scheduling did not
280
+ * move it either, so the only effect is that `pending_variant` becomes
281
+ * `null` and nothing happens at the anchor.
282
+ *
283
+ * A line with no pending change is a `NotFoundError` (404
284
+ * `no_pending_variant_change`), which includes a change the anchor has
285
+ * already applied — there is nothing left to cancel, and the line's own
286
+ * `inbound_only` now carries the answer. A change applied while this request
287
+ * was in flight is a `ConflictError` (409 `variant_change_already_applied`),
288
+ * so the two outcomes are distinguishable from the code alone.
289
+ *
290
+ * Succeeds on a suspended or cancelled line: withdrawing an instruction must
291
+ * never be blocked by the state that made it moot.
292
+ */
293
+ cancelVariantChange(id, opts) {
294
+ return this.client.request('DELETE', `/v1/lines/${encodeURIComponent(id)}/variant`, undefined, opts);
295
+ }
296
+ /**
297
+ * `PATCH /v1/lines/{id}` — update the line's free-form metadata object, its
298
+ * billing anchor, or both.
299
+ *
300
+ * `metadata` is a MERGE: null-valued keys delete those keys from the stored
301
+ * object. `billing_anchor_at` is the date the customer who pays for this line
302
+ * is billed on — a change takes effect at the NEXT occurrence and never
303
+ * rewrites a period already billed, and `null` clears it so the line falls
304
+ * back to its activation instant. Send at least one of the two; a body that
305
+ * states neither is refused with `no_fields_to_patch`.
219
306
  */
220
307
  patch(id, body, opts) {
221
308
  return this.client.request('PATCH', `/v1/lines/${encodeURIComponent(id)}`, body, opts);
@@ -1 +1 @@
1
- {"version":3,"file":"lines.js","sourceRoot":"","sources":["../../src/resources/lines.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lines.js","sourceRoot":"","sources":["../../src/resources/lines.ts"],"names":[],"mappings":"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"}
@@ -77,7 +77,7 @@ export interface ReactionEvent extends WebhookEventBase {
77
77
  event_type: `reaction.${string}`;
78
78
  data: ReactionEventData;
79
79
  }
80
- export type LineEventType = 'line.connected' | 'line.disconnected' | 'line.offline' | 'line.degraded' | 'line.apple_id_flagged' | 'line.quota_warning' | 'line.quota_exceeded' | 'line.capability_changed' | 'line.terminated' | 'line.variant_changed';
80
+ export type LineEventType = 'line.connected' | 'line.disconnected' | 'line.offline' | 'line.degraded' | 'line.apple_id_flagged' | 'line.quota_warning' | 'line.quota_exceeded' | 'line.capability_changed' | 'line.terminated' | 'line.variant_changed' | 'line.variant_scheduled' | 'line.variant_unscheduled';
81
81
  /**
82
82
  * `data` is intentionally typed as `Record<string, unknown>` until the
83
83
  * contract pins per-event-type field shapes. Today's payloads vary by
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/webhooks/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/webhooks/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/webhooks/types.ts"],"names":[],"mappings":"AAmVA,6EAA6E;AAE7E,MAAM,UAAU,cAAc,CAAC,KAAuB;IACpD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAuB;IAEvB,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAuB;IAClD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAuB;IACpD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAuB;IAClD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAChD,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/webhooks/types.ts"],"names":[],"mappings":"AAyWA,6EAA6E;AAE7E,MAAM,UAAU,cAAc,CAAC,KAAuB;IACpD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAA;AACjD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAuB;IACjD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;AAC7C,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAuB;IAEvB,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAA;AACzD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAuB;IAClD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AAC9C,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,KAAuB;IACrD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,CAAA;AAClD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAuB;IACpD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAuB;IACzD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAuB;IAClD,OAAO,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,UAAU,CAAC,CAAA;AAChD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isnap/sdk",
3
- "version": "1.3.0-next.185",
3
+ "version": "1.3.0-next.186",
4
4
  "description": "Official TypeScript SDK for the iSnap P2P telephony API",
5
5
  "license": "MIT",
6
6
  "type": "module",