@isnap/sdk 2.2.0-next.213 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -38,8 +38,6 @@ All notable changes to `@isnap/sdk` will be documented in this file. The format
38
38
  - **`verifyWebhook` verifies the Standard Webhooks headers only** (`webhook-id` / `webhook-timestamp` / `webhook-signature`, WHA-3658) — breaking, MAJOR (`2.0.0`). The fallback to the `X-iSnap-Signature` / `X-iSnap-Timestamp` pair is removed, because iSnap no longer sends those headers: a request that carries only them is now rejected with `WebhookSignatureError` (`Missing webhook-id header`). The key derivation no longer strips a `whs_` prefix either; only `whsec_` secrets, the only kind iSnap mints, verify. Unchanged: the `[newSecret, oldSecret]` rotation array, the `tolerance` option and its 300 s default, case-insensitive header reads, and the return value. A caller that already receives iSnap deliveries needs no code change, since every delivery since `1.4.0` carries the standard headers.
39
39
 
40
40
  ### Changed
41
- - **An owned test line is billed like a rental line** (WHA-3701, API `2.27.0`). `lines.convertToTest()` no longer stops billing: the test line stays on the wholesale partner's end-of-month invoice as the outbound product whatever its platform, on the same billing dates (`anniversary_at` and `billing_anchor_at` are kept), and `Line.monthly_price` reads that price (27500) instead of `0`. `lines.convertFromTest()` therefore leaves the bill unchanged. `lines.convertToTest()` now refuses an inbound line (`ConflictError`, 409 `test_line_not_inbound_only`: move it to outbound with `setVariant` first) and a line with a pending cancellation (409 `line_cancellation_pending`: `uncancel` first). `lines.terminate()` of a test line leaves the instant it ended as the line's `cancel_at`, and a line transferred to a wholesale partner carries the transfer instant as `activated_at`. No SDK code changes: the generated types and the JSDoc of `convertToTest`, `convertFromTest`, `cancel` and `transferOwnership` carry the new wording.
42
- - **`lines.assign()`, `lines.convertToTest()` and `lines.convertFromTest()` are wholesale-partner only** (WHA-3692, API `2.26.0`). A direct (non-wholesale) account is rejected with `PaymentRequiredError` (402 `checkout_required`) and nothing is reserved or converted. `assign()` refuses a direct account with or without `as_test_line`. `lines.transferOwnership()` of a line that is not billed per line (an owned test line, another pool line, a virtual shared line) to a non-wholesale recipient is a `ConflictError` (409 `line_recipient_not_wholesale`). `lines.terminate()` now ends an owned test line once no live trial rides it, which is otherwise a `ConflictError` (409 `test_line_in_use`). No SDK code changes: the existing error classes surface these refusals.
43
41
  - `src/generated/openapi.d.ts` is now generated from the **published** contract. `packages/backend/openapi.json` carries only the partner-facing `/v1/*` surface, so the internal operator routes (`/admin`, `/va`, `/farm-ops`, `/kam`, `/auth`, …) and the bridge-only `/v1/device/*` contract — plus every schema reachable only from them — are no longer emitted into the SDK types. Those routes are the dashboard, the ops back-office and the device bridge; none of them is part of the partner contract this SDK wraps, and no `ISnapClient` method referenced their types, so no documented method changes shape.
44
42
  - **`AppDownloadEntry.version` is now `string | null`** (API `1.15.0`, WHA-2538) — source-breaking for a consumer that renders `apps.manifest()`'s `version` without narrowing, which is the point. The field used to be a per-deployment configured string tied to no artifact: staging advertised `0.1.0-staging` for both platforms while the Mac ran `0.0.209` and the update channel published `0.0.x`, so the number could not be installed and the two platforms agreed only because both read one env value. It is now read from the release feed beside the artifact the download URL resolves to, and is `null` when that feed publishes nothing. Render the absence; do not substitute a number, and do not treat `null` as an error. It is also no longer the same string `byod.pair` returns as `bridge_version`.
45
43
 
package/README.md CHANGED
@@ -182,20 +182,16 @@ if (health.status !== 'ok') {
182
182
 
183
183
  ## Wholesale + test lines
184
184
 
185
- Wholesale partners mint their own billable shared lines and can set a rental line aside as a test line for their own customers' trials:
185
+ Wholesale partners mint their own billable shared lines and can park a line in a non-billable test state:
186
186
 
187
187
  ```ts
188
188
  const line = await client.lines.mintShared() // POST /v1/lines/shared — a NEW billable line every call
189
- await client.lines.convertToTest(rentalLineId) // set a rental line aside as a test line
190
- await client.lines.convertFromTest(rentalLineId) // turn it back into a rental line
189
+ await client.lines.convertToTest(line.id) // stop billing — park as a test line
190
+ await client.lines.convertFromTest(line.id) // resume billing
191
191
  ```
192
192
 
193
193
  `mintShared()` is wholesale-partner only in v1: a direct (non-wholesale) customer is rejected with `PaymentRequiredError` (402) and a scoped API key with `PermissionDeniedError` (403). Each call mints a distinct line — the SDK's auto `Idempotency-Key` only dedupes that one call's internal retries, so a caller-level retry must reuse the same `opts.idempotencyKey` to avoid minting twice.
194
194
 
195
- A test line is **billed like a rental line**: it stays on your end-of-month invoice as the outbound product, on the same billing dates, so `convertToTest()` then `convertFromTest()` leaves your bill unchanged. Its `monthly_price` reads that price. `convertToTest()` refuses an inbound line (move it to outbound first) and a line with a pending cancellation (uncancel it first); end a test line with `client.lines.terminate(id)`.
196
-
197
- `convertToTest()` and `convertFromTest()` are wholesale-partner only too, like `lines.assign()`: a direct account is rejected with `PaymentRequiredError` (402 `checkout_required`), and runs its trials on the global pool with `client.trial.init()`.
198
-
199
195
  ## Errors
200
196
 
201
197
  All API errors extend `APIError` and carry `status`, `code`, `message`, `traceId`, `requestId`. Subclasses match the §6 contract codes:
@@ -726,7 +726,7 @@ export interface paths {
726
726
  put?: never;
727
727
  /**
728
728
  * Atomically reserve + activate a line
729
- * @description Find an available line matching `billing_tier` (and optional `area_code`), reserve it, and activate it in a single round-trip. Useful when the partner doesn't care which specific number they get — saves the reserve→activate round-trip. **Wholesale partners only**: the line is activated with no per-line Stripe subscription and is billed on your end-of-month metered count, as with `POST /v1/lines/{id}/activate`. A direct (non-wholesale) caller with a well-formed body gets `402 checkout_required`, `as_test_line` included, and nothing is reserved: a direct customer reserves a line and pays for it through `POST /v1/billing/checkout`, whose `checkout.session.completed` webhook activates it, and runs trials on the global pool (`POST /v1/trial/init`). Scoped API keys are rejected (cannot assign lines outside their allowlist). Every call takes one more line out of stock and makes it yours, so a retry MUST carry the same `Idempotency-Key` as the call it retries: the same key with the same body replays the first response instead of assigning a second line.
729
+ * @description Find an available line matching `billing_tier` (and optional `area_code`), reserve it, and activate it in a single round-trip. Useful when the partner doesn't care which specific number they get — saves the reserve→checkout→activate dance. Scoped API keys are rejected (cannot assign lines outside their allowlist). Every call takes one more line out of stock and makes it yours, so a retry MUST carry the same `Idempotency-Key` as the call it retries: the same key with the same body replays the first response instead of assigning a second line.
730
730
  */
731
731
  post: {
732
732
  parameters: {
@@ -777,15 +777,6 @@ export interface paths {
777
777
  "application/json": components["schemas"]["ErrorEnvelope"];
778
778
  };
779
779
  };
780
- /** @description Payment required — no billing relationship entitles this call */
781
- 402: {
782
- headers: {
783
- [name: string]: unknown;
784
- };
785
- content: {
786
- "application/json": components["schemas"]["ErrorEnvelope"];
787
- };
788
- };
789
780
  /** @description Forbidden — caller authenticated but not allowed */
790
781
  403: {
791
782
  headers: {
@@ -1216,7 +1207,7 @@ export interface paths {
1216
1207
  put?: never;
1217
1208
  /**
1218
1209
  * Transfer a line to another iSnap user
1219
- * @description Move ownership of a line to a different iSnap user. By default the paired device session stays attached so messaging continues uninterrupted; pass `preserve_device_session: false` to force the new owner to re-pair. See `/concepts/billing` for how the cutover handles the in-flight Stripe subscription. A line that is not billed per line (an owned test line, another pool line, a virtual shared line) can only be transferred to a wholesale partner (`409 line_recipient_not_wholesale`).
1210
+ * @description Move ownership of a line to a different iSnap user. By default the paired device session stays attached so messaging continues uninterrupted; pass `preserve_device_session: false` to force the new owner to re-pair. See `/concepts/billing` for how the cutover handles the in-flight Stripe subscription.
1220
1211
  */
1221
1212
  post: {
1222
1213
  parameters: {
@@ -1330,7 +1321,7 @@ export interface paths {
1330
1321
  put?: never;
1331
1322
  /**
1332
1323
  * Convert an owned rental line into a test line
1333
- * @description Flip a two-way rental line you own into an owned test line that backs trials in your own pool (ownership → pool). **Billing does not stop**: a test line is billed on your end-of-month invoice like a rental line, as the outbound product whatever its platform, on the same billing dates (`anniversary_at`, `billing_anchor_at` and `activated_at` are kept), and the deprecated monthly_price reads that price. An inbound line is refused (409 `test_line_not_inbound_only`): move it to outbound first with `POST /v1/lines/{id}/variant`, which prorates the difference. A line with a pending cancellation is refused (409 `line_cancellation_pending`): a test line is never ended at a scheduled date, so withdraw it with `POST /v1/lines/{id}/uncancel` first, and end a test line with `POST /v1/lines/{id}/terminate`. Rejected on byod lines, lines you do not own, and lines carrying an active subscription. **Wholesale partners only**: a direct (non-wholesale) account gets `402 checkout_required` and runs its trials on the global pool (`POST /v1/trial/init`).
1324
+ * @description Flip a rental line you own into an owned test line that backs trials in your own pool (ownership → pool; test lines are free, so the deprecated monthly_price reads 0). Rejected on byod lines, lines you do not own, and lines carrying an active subscription.
1334
1325
  */
1335
1326
  post: {
1336
1327
  parameters: {
@@ -1376,15 +1367,6 @@ export interface paths {
1376
1367
  "application/json": components["schemas"]["ErrorEnvelope"];
1377
1368
  };
1378
1369
  };
1379
- /** @description Payment required — no billing relationship entitles this call */
1380
- 402: {
1381
- headers: {
1382
- [name: string]: unknown;
1383
- };
1384
- content: {
1385
- "application/json": components["schemas"]["ErrorEnvelope"];
1386
- };
1387
- };
1388
1370
  /** @description Forbidden — caller authenticated but not allowed */
1389
1371
  403: {
1390
1372
  headers: {
@@ -1449,7 +1431,7 @@ export interface paths {
1449
1431
  put?: never;
1450
1432
  /**
1451
1433
  * Revert an owned test line back to a rental line
1452
- * @description Symmetric to convert-to-test: flip an owned test line back to a rental line (ownership → rental). Billing is unchanged: the test line was already billed as an outbound rental, on the same dates, so the monthly bill neither gains nor loses the line. Rejected while the test line still hosts live trials, since reverting would strand them. **Wholesale partners only**: the rental line it becomes carries no subscription and is billed on the end-of-month count, so a direct (non-wholesale) account gets `402 checkout_required`.
1434
+ * @description Symmetric to convert-to-test: flip an owned test line back to a rental line (ownership → rental; monthly_price reads the rental tier price again, derived — nothing is stored). Rejected while the test line still hosts live trials, since reverting would strand them.
1453
1435
  */
1454
1436
  post: {
1455
1437
  parameters: {
@@ -1495,15 +1477,6 @@ export interface paths {
1495
1477
  "application/json": components["schemas"]["ErrorEnvelope"];
1496
1478
  };
1497
1479
  };
1498
- /** @description Payment required — no billing relationship entitles this call */
1499
- 402: {
1500
- headers: {
1501
- [name: string]: unknown;
1502
- };
1503
- content: {
1504
- "application/json": components["schemas"]["ErrorEnvelope"];
1505
- };
1506
- };
1507
1480
  /** @description Forbidden — caller authenticated but not allowed */
1508
1481
  403: {
1509
1482
  headers: {
@@ -1768,7 +1741,7 @@ export interface paths {
1768
1741
  put?: never;
1769
1742
  /**
1770
1743
  * Terminate a line you own
1771
- * @description Permanently END an active line the caller owns — the self-serve counterpart to the admin terminate. Use this when your own customer cancels: `/release` only returns a *reserved* marketplace line to the shelf, while this ends a live `rental` line or a virtual `shared` line for good. The line flips to the terminal `cancelled` status and keeps its owner (who held it when it died is history, not a shelf return); queued messages fail with `carrier_terminated`, shared-fleet bindings are released (`binding.released`), device sessions are revoked, and `line.disconnected` fires with `reason: customer_initiated`. Billing stops in both shapes: a per-line Stripe subscription is cancelled immediately (not at period end), and a wholesale partner's end-of-month active-line count drops the line in the same breath. Dedicated hardware goes back to iSnap stock — the eSIM and Apple ID are recycled, never scrapped, because a customer ending a rental says nothing about whether the carrier plan is still good. **Idempotent**: terminating an already-terminated line returns 200 with the line unchanged and fires nothing a second time. Only an `active` or `suspended` line — the ones you are actually being billed for — is terminable: a merely `reserved` line is a 15-minute hold you give back with `/release`, and a `provisioning` pre-order line is cancelled through `/v1/pre-orders/{id}/cancel`. A BYOD line is terminable like any other: its device session is revoked, so the bridge or phone stops serving it, and it leaves the billable set; a direct customer's slot is freed for a new pairing. An owned test line is terminable too, once no live trial rides it (`409 test_line_in_use`), and it is ended, never converted; any other pool line is refused (403 `pool_line_not_terminable`).
1744
+ * @description Permanently END an active line the caller owns — the self-serve counterpart to the admin terminate. Use this when your own customer cancels: `/release` only returns a *reserved* marketplace line to the shelf, while this ends a live `rental` line or a virtual `shared` line for good. The line flips to the terminal `cancelled` status and keeps its owner (who held it when it died is history, not a shelf return); queued messages fail with `carrier_terminated`, shared-fleet bindings are released (`binding.released`), device sessions are revoked, and `line.disconnected` fires with `reason: customer_initiated`. Billing stops in both shapes: a per-line Stripe subscription is cancelled immediately (not at period end), and a wholesale partner's end-of-month active-line count drops the line in the same breath. Dedicated hardware goes back to iSnap stock — the eSIM and Apple ID are recycled, never scrapped, because a customer ending a rental says nothing about whether the carrier plan is still good. **Idempotent**: terminating an already-terminated line returns 200 with the line unchanged and fires nothing a second time. Only an `active` or `suspended` line — the ones you are actually being billed for — is terminable: a merely `reserved` line is a 15-minute hold you give back with `/release`, and a `provisioning` pre-order line is cancelled through `/v1/pre-orders/{id}/cancel`. A BYOD line is terminable like any other: its device session is revoked, so the bridge or phone stops serving it, and it leaves the billable set; a direct customer's slot is freed for a new pairing. Owned test lines are refused (403) until converted back with `/convert-from-test`.
1772
1745
  */
1773
1746
  post: {
1774
1747
  parameters: {
@@ -7720,15 +7693,15 @@ export interface components {
7720
7693
  status: string;
7721
7694
  /**
7722
7695
  * @deprecated
7723
- * @description Deprecated — derived from the line tier: 0 for a pool line, except an owned test line (`test_line: true`), which reads the outbound price on either platform because it is billed as the outbound product like a rental line. The price a customer actually pays lives on the Stripe subscription (GET /v1/billing/subscriptions) or the pre-order amount. Removed at the next MAJOR.
7696
+ * @description Deprecated — derived from the line tier (0 for pool and owned test lines). The price a customer actually pays lives on the Stripe subscription (GET /v1/billing/subscriptions) or the pre-order amount. Removed at the next MAJOR.
7724
7697
  */
7725
7698
  monthly_price: number;
7726
7699
  stripe_subscription_id: string | null;
7727
7700
  activated_at: string | null;
7728
7701
  expires_at: string | null;
7729
- /** @description The day you took this line, and therefore the day of the month it renews on: billed once per month at this instant, never prorated. Stamped when the line becomes yours, and kept when you convert it to a test line or back; `null` means the line has no per-line anniversary — a direct customer's line renews on its Stripe subscription's own anchor, a pool line other than a test line is billed to nobody, and a test line converted before test lines were billed carries none and is billed on its activation instant. Set it explicitly with POST /v1/lines/{id}/anniversary for a line you migrated from your own system, whose real start date iSnap cannot know. */
7702
+ /** @description The day you took this line, and therefore the day of the month it renews on: billed once per month at this instant, never prorated. Stamped when the line becomes yours; `null` means the line has no per-line anniversary — a direct customer's line renews on its Stripe subscription's own anchor, and a pool line is billed to nobody. Set it explicitly with POST /v1/lines/{id}/anniversary for a line you migrated from your own system, whose real start date iSnap cannot know. */
7730
7703
  anniversary_at: string | null;
7731
- /** @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. An owned test line cannot be cancelled at a date, so when POST /v1/lines/{id}/terminate ends one it records the instant it ended here. */
7704
+ /** @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. */
7732
7705
  cancel_at: string | null;
7733
7706
  /** @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. */
7734
7707
  billing_anchor_at: string | null;
@@ -7743,7 +7716,7 @@ export interface components {
7743
7716
  metadata: {
7744
7717
  [key: string]: unknown;
7745
7718
  } | null;
7746
- /** @description True when the line is an owner-provisioned test line (ownership=pool with a set owner) that backs the owner's own trial pool. A test line is billed like a rental line, at the outbound rental price, on the same billing dates: monthly_price reads that price. */
7719
+ /** @description True when the line is an owner-provisioned test line (ownership=pool with a set owner) that backs the owner's own trial pool. Test lines are free: monthly_price is 0, like every pool line. */
7747
7720
  test_line: boolean;
7748
7721
  /** @description True when the line is a virtual shared-plan line (billing_tier shared_imessage): customer-owned, no dedicated hardware, phone_number empty — sends are proxied onto the shared physical iMessage fleet. Line-scoped API keys, webhooks and per-line quota apply to it like any other line. */
7749
7722
  shared: boolean;
@@ -35,13 +35,6 @@ export declare class LinesResource extends BaseResource {
35
35
  * `POST /v1/lines/assign` — atomically find an available line matching
36
36
  * the requested billing tier (and optional area code), reserve it, and
37
37
  * activate it on the calling account in a single round-trip.
38
- *
39
- * **Wholesale partners only**, `as_test_line` included: the line carries no
40
- * per-line subscription and is billed on the end-of-month count. A direct
41
- * (non-wholesale) account is rejected with `PaymentRequiredError` (402
42
- * `checkout_required`) and nothing is reserved; it buys a line through
43
- * `POST /v1/billing/checkout` and runs trials with `client.trial.init()`.
44
- * A line-scoped API key is rejected first, with `PermissionDeniedError` (403).
45
38
  */
46
39
  assign(body: AssignLineBody, opts?: RequestOptions): Promise<Line>;
47
40
  /**
@@ -103,12 +96,10 @@ export declare class LinesResource extends BaseResource {
103
96
  * A BYOD line is terminable like any other: its device session is revoked,
104
97
  * so the bridge or phone stops serving it, and it leaves the billable set.
105
98
  *
106
- * An owned test line is terminable too, once no live trial rides it
107
- * (`ConflictError`, 409 `test_line_in_use`, until then).
108
- *
109
- * Refusals: `PermissionDeniedError` (403 `pool_line_not_terminable`) — any
110
- * other pool line; `NotFoundError` (404) — a line that does not exist, or one
111
- * you do not own (the same code for both, so nothing leaks).
99
+ * Refusals: `PermissionDeniedError` (403 `pool_line_not_terminable`) — an
100
+ * owned test line must go through `convertFromTest()` first; `NotFoundError`
101
+ * (404) — a line that does not exist, or one you do not own (the same code for
102
+ * both, so nothing leaks).
112
103
  *
113
104
  * `body` defaults to `{}` (not `undefined`) so the request always carries
114
105
  * `Content-Type: application/json`; the route's body is optional and the
@@ -140,9 +131,8 @@ export declare class LinesResource extends BaseResource {
140
131
  * now with `terminate()`. `ConflictError` (409
141
132
  * `line_not_customer_cancellable`) — only an `active` or `suspended` line can
142
133
  * be cancelled. `PermissionDeniedError` (403 `pool_line_not_cancellable`) — an
143
- * owned test line's end is not scheduled here: end it with `terminate()`, or
144
- * convert it back with `convertFromTest()` and cancel the rental line. Rental,
145
- * shared and BYOD lines are all cancellable. `NotFoundError` (404) — a line that does not exist,
134
+ * owned test line has no per-line anniversary. Rental, shared and BYOD lines
135
+ * are all cancellable. `NotFoundError` (404) — a line that does not exist,
146
136
  * or one you do not own (the same code for both, so nothing leaks).
147
137
  */
148
138
  cancel(id: string, opts?: RequestOptions): Promise<Line>;
@@ -175,34 +165,20 @@ export declare class LinesResource extends BaseResource {
175
165
  /**
176
166
  * `POST /v1/lines/{id}/transfer-ownership` — reassign a line to a
177
167
  * different end-user account without re-pairing the underlying device.
178
- * A line with no subscription of its own (an owned test line, another pool
179
- * line, a virtual shared line) can only go to a wholesale partner: any other
180
- * recipient is a `ConflictError` (409 `line_recipient_not_wholesale`).
181
168
  */
182
169
  transferOwnership(id: string, body: TransferOwnershipBody, opts?: RequestOptions): Promise<Line>;
183
170
  /**
184
171
  * `POST /v1/lines/{id}/convert-to-test` — convert a line into a test line.
185
- * Billing does not stop: a test line is billed on your end-of-month invoice
186
- * like a rental line, as the outbound product, on the same billing dates
187
- * (`anniversary_at` and `billing_anchor_at` are kept). End a test line with
188
- * `terminate()`.
189
- * Wholesale partners only: a direct account is rejected with
190
- * `PaymentRequiredError` (402 `checkout_required`). Rejected with
191
- * `ConflictError` (409) for byod lines, a line you do not own, a line with
192
- * an active subscription, an inbound line (`test_line_not_inbound_only`:
193
- * move it to outbound with `setVariant` first) and a line with a pending
194
- * cancellation (`line_cancellation_pending`: `uncancel` first); a line the
195
- * caller cannot see is a masked `NotFoundError` (404).
172
+ * Rejected with `ConflictError` (409) for byod lines, a line you do not own,
173
+ * or a line with an active subscription; a line the caller cannot see is a
174
+ * masked `NotFoundError` (404).
196
175
  */
197
176
  convertToTest(id: string, opts?: RequestOptions): Promise<Line>;
198
177
  /**
199
178
  * `POST /v1/lines/{id}/convert-from-test` — convert a test line back to a
200
- * normal line. The bill does not change: the test line was already billed as
201
- * an outbound rental on the same dates. Wholesale partners only: a direct
202
- * account is rejected with
203
- * `PaymentRequiredError` (402 `checkout_required`). Rejected with
204
- * `ConflictError` (409) while the test line still hosts live trials; a line
205
- * the caller cannot see is a masked `NotFoundError` (404).
179
+ * normal line. Rejected with `ConflictError` (409) while the test line still
180
+ * hosts live trials; a line the caller cannot see is a masked
181
+ * `NotFoundError` (404).
206
182
  */
207
183
  convertFromTest(id: string, opts?: RequestOptions): Promise<Line>;
208
184
  /**
@@ -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":"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"}
@@ -24,13 +24,6 @@ export class LinesResource extends BaseResource {
24
24
  * `POST /v1/lines/assign` — atomically find an available line matching
25
25
  * the requested billing tier (and optional area code), reserve it, and
26
26
  * activate it on the calling account in a single round-trip.
27
- *
28
- * **Wholesale partners only**, `as_test_line` included: the line carries no
29
- * per-line subscription and is billed on the end-of-month count. A direct
30
- * (non-wholesale) account is rejected with `PaymentRequiredError` (402
31
- * `checkout_required`) and nothing is reserved; it buys a line through
32
- * `POST /v1/billing/checkout` and runs trials with `client.trial.init()`.
33
- * A line-scoped API key is rejected first, with `PermissionDeniedError` (403).
34
27
  */
35
28
  assign(body, opts) {
36
29
  return this.client.request('POST', '/v1/lines/assign', body, opts);
@@ -102,12 +95,10 @@ export class LinesResource extends BaseResource {
102
95
  * A BYOD line is terminable like any other: its device session is revoked,
103
96
  * so the bridge or phone stops serving it, and it leaves the billable set.
104
97
  *
105
- * An owned test line is terminable too, once no live trial rides it
106
- * (`ConflictError`, 409 `test_line_in_use`, until then).
107
- *
108
- * Refusals: `PermissionDeniedError` (403 `pool_line_not_terminable`) — any
109
- * other pool line; `NotFoundError` (404) — a line that does not exist, or one
110
- * you do not own (the same code for both, so nothing leaks).
98
+ * Refusals: `PermissionDeniedError` (403 `pool_line_not_terminable`) — an
99
+ * owned test line must go through `convertFromTest()` first; `NotFoundError`
100
+ * (404) — a line that does not exist, or one you do not own (the same code for
101
+ * both, so nothing leaks).
111
102
  *
112
103
  * `body` defaults to `{}` (not `undefined`) so the request always carries
113
104
  * `Content-Type: application/json`; the route's body is optional and the
@@ -141,9 +132,8 @@ export class LinesResource extends BaseResource {
141
132
  * now with `terminate()`. `ConflictError` (409
142
133
  * `line_not_customer_cancellable`) — only an `active` or `suspended` line can
143
134
  * be cancelled. `PermissionDeniedError` (403 `pool_line_not_cancellable`) — an
144
- * owned test line's end is not scheduled here: end it with `terminate()`, or
145
- * convert it back with `convertFromTest()` and cancel the rental line. Rental,
146
- * shared and BYOD lines are all cancellable. `NotFoundError` (404) — a line that does not exist,
135
+ * owned test line has no per-line anniversary. Rental, shared and BYOD lines
136
+ * are all cancellable. `NotFoundError` (404) — a line that does not exist,
147
137
  * or one you do not own (the same code for both, so nothing leaks).
148
138
  */
149
139
  cancel(id, opts) {
@@ -182,38 +172,24 @@ export class LinesResource extends BaseResource {
182
172
  /**
183
173
  * `POST /v1/lines/{id}/transfer-ownership` — reassign a line to a
184
174
  * different end-user account without re-pairing the underlying device.
185
- * A line with no subscription of its own (an owned test line, another pool
186
- * line, a virtual shared line) can only go to a wholesale partner: any other
187
- * recipient is a `ConflictError` (409 `line_recipient_not_wholesale`).
188
175
  */
189
176
  transferOwnership(id, body, opts) {
190
177
  return this.client.request('POST', `/v1/lines/${encodeURIComponent(id)}/transfer-ownership`, body, opts);
191
178
  }
192
179
  /**
193
180
  * `POST /v1/lines/{id}/convert-to-test` — convert a line into a test line.
194
- * Billing does not stop: a test line is billed on your end-of-month invoice
195
- * like a rental line, as the outbound product, on the same billing dates
196
- * (`anniversary_at` and `billing_anchor_at` are kept). End a test line with
197
- * `terminate()`.
198
- * Wholesale partners only: a direct account is rejected with
199
- * `PaymentRequiredError` (402 `checkout_required`). Rejected with
200
- * `ConflictError` (409) for byod lines, a line you do not own, a line with
201
- * an active subscription, an inbound line (`test_line_not_inbound_only`:
202
- * move it to outbound with `setVariant` first) and a line with a pending
203
- * cancellation (`line_cancellation_pending`: `uncancel` first); a line the
204
- * caller cannot see is a masked `NotFoundError` (404).
181
+ * Rejected with `ConflictError` (409) for byod lines, a line you do not own,
182
+ * or a line with an active subscription; a line the caller cannot see is a
183
+ * masked `NotFoundError` (404).
205
184
  */
206
185
  convertToTest(id, opts) {
207
186
  return this.client.request('POST', `/v1/lines/${encodeURIComponent(id)}/convert-to-test`, undefined, opts);
208
187
  }
209
188
  /**
210
189
  * `POST /v1/lines/{id}/convert-from-test` — convert a test line back to a
211
- * normal line. The bill does not change: the test line was already billed as
212
- * an outbound rental on the same dates. Wholesale partners only: a direct
213
- * account is rejected with
214
- * `PaymentRequiredError` (402 `checkout_required`). Rejected with
215
- * `ConflictError` (409) while the test line still hosts live trials; a line
216
- * the caller cannot see is a masked `NotFoundError` (404).
190
+ * normal line. Rejected with `ConflictError` (409) while the test line still
191
+ * hosts live trials; a line the caller cannot see is a masked
192
+ * `NotFoundError` (404).
217
193
  */
218
194
  convertFromTest(id, opts) {
219
195
  return this.client.request('POST', `/v1/lines/${encodeURIComponent(id)}/convert-from-test`, undefined, 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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@isnap/sdk",
3
- "version": "2.2.0-next.213",
3
+ "version": "2.2.0",
4
4
  "description": "Official TypeScript SDK for the iSnap P2P telephony API",
5
5
  "license": "MIT",
6
6
  "type": "module",