@transcodely/sdk 0.3.5 → 0.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -317,6 +317,199 @@ declare enum BitrateMode {
317
317
  */
318
318
  VBR = 3
319
319
  }
320
+ /**
321
+ * An organization's derived payment health, and the input that can replace its
322
+ * assigned usage limits with the free tier's.
323
+ *
324
+ * DERIVED, never assigned. It is a pure function of stored billing facts — is a
325
+ * payment method on file, has it expired, is an invoice past due, how many
326
+ * times consecutively — recomputed whenever one of those facts changes. There
327
+ * is no API to set it, because setting it would be a claim about a customer's
328
+ * payment health that the payment provider had not made.
329
+ *
330
+ * Lives here rather than in billing.proto because three surfaces carry it: the
331
+ * customer's billing profile, the admin app-limits read, and the admin
332
+ * organization record.
333
+ *
334
+ * @generated from enum transcodely.v1.BillingStanding
335
+ */
336
+ declare enum BillingStanding {
337
+ /**
338
+ * @generated from enum value: BILLING_STANDING_UNSPECIFIED = 0;
339
+ */
340
+ UNSPECIFIED = 0,
341
+ /**
342
+ * No payment method on file, and this organization is required to have one.
343
+ * Usage limits resolve to the free tier's — short outputs, economy quality,
344
+ * one job at a time — whatever plan the account is assigned. Free-tier usage
345
+ * is recorded but never invoiced.
346
+ *
347
+ * Not a penalty. An organization exempt from the payment-method requirement
348
+ * (every organization that predates it) never reports this.
349
+ *
350
+ * @generated from enum value: BILLING_STANDING_FREE = 1;
351
+ */
352
+ FREE = 1,
353
+ /**
354
+ * Nothing is wrong: the account's assigned limits apply exactly as they
355
+ * would if billing standing did not exist. Also what an exempt organization
356
+ * always reports.
357
+ *
358
+ * @generated from enum value: BILLING_STANDING_ACTIVE = 2;
359
+ */
360
+ ACTIVE = 2,
361
+ /**
362
+ * Something IS wrong — an unpaid invoice, a removed card, an expired one —
363
+ * and the account keeps its full limits anyway until grace_until. The window
364
+ * exists so a card that quietly expired produces a warning rather than a
365
+ * stopped pipeline. What it decays into depends on the cause: a card problem
366
+ * becomes FREE, an unpaid invoice becomes DELINQUENT.
367
+ *
368
+ * @generated from enum value: BILLING_STANDING_GRACE = 3;
369
+ */
370
+ GRACE = 3,
371
+ /**
372
+ * An invoice is past due and grace is spent or was never granted (a second
373
+ * consecutive failed invoice gets none). Limits drop to the free tier's, but
374
+ * usage continues to BILL: arrears are a limit, not a discount, and an
375
+ * account that settles returns to ACTIVE with its ledger intact.
376
+ *
377
+ * Never a suspension. Running jobs finish, delivery keeps serving, and
378
+ * everything already stored stays readable.
379
+ *
380
+ * @generated from enum value: BILLING_STANDING_DELINQUENT = 4;
381
+ */
382
+ DELINQUENT = 4
383
+ }
384
+ /**
385
+ * How AUTOMATION is allowed to treat an organization.
386
+ *
387
+ * Orthogonal to BillingStanding, and the distinction is the whole point.
388
+ * Standing is a derived FACT about payment health. Treatment is a commercial
389
+ * DECISION about whether a cron may act on that fact — email the customer,
390
+ * block their creates, suspend them. An account can be in dunning and
391
+ * untouchable at the same time.
392
+ *
393
+ * ASSIGNED, never derived: an operator says what a relationship is, through the
394
+ * audited admin RPC. Admin surfaces only; a customer does not learn from an API
395
+ * field how patiently we treat them.
396
+ *
397
+ * @generated from enum transcodely.v1.BillingTreatment
398
+ */
399
+ declare enum BillingTreatment {
400
+ /**
401
+ * @generated from enum value: BILLING_TREATMENT_UNSPECIFIED = 0;
402
+ */
403
+ UNSPECIFIED = 0,
404
+ /**
405
+ * The default and the full lifecycle: the dunning ladder, the soft limit,
406
+ * suspension, every customer email, and the dispute posture.
407
+ *
408
+ * @generated from enum value: BILLING_TREATMENT_NORMAL = 1;
409
+ */
410
+ NORMAL = 1,
411
+ /**
412
+ * Billed COMPLETELY NORMALLY — payment method on file, monthly statements,
413
+ * real charges — and exempt from every automated interruption. A failed
414
+ * payment or a dispute on one of these routes to the founder instead of to
415
+ * the customer, so it becomes a conversation rather than a cutoff.
416
+ *
417
+ * Requires a payment method on file: this is a promise not to interrupt
418
+ * someone who pays, not a way to run an account with no card.
419
+ *
420
+ * @generated from enum value: BILLING_TREATMENT_TRUSTED = 2;
421
+ */
422
+ TRUSTED = 2,
423
+ /**
424
+ * Grandfather / comp semantics: not billed, not enforced. Internal, dogfood
425
+ * and legacy accounts. Selecting it also maintains payment_method_required
426
+ * and billing_exempt, in the same transaction, so the standing derivation and
427
+ * this value can never describe different postures.
428
+ *
429
+ * @generated from enum value: BILLING_TREATMENT_EXEMPT = 3;
430
+ */
431
+ EXEMPT = 3
432
+ }
433
+ /**
434
+ * How far the CONSEQUENCES of an unpaid statement have progressed.
435
+ *
436
+ * Deliberately NOT a fifth BillingStanding. Standing is payment HEALTH, derived
437
+ * from facts. This is what we have DONE about it, and it needs states standing
438
+ * cannot express: "new jobs refused but playback still serving" and "suspended"
439
+ * are consequences, not healths, and an account can be delinquent for weeks at
440
+ * any of them.
441
+ *
442
+ * Every rung's timing derives from the episode's own start, and the schedule is
443
+ * a set of Go constants (domain.DunningStage) rather than configuration — the
444
+ * day counts below are documentation of that policy, not a second copy of it.
445
+ *
446
+ * ADMIN SURFACES ONLY in this release. A customer is told what is happening to
447
+ * their account in the email that accompanies each rung; they do not read the
448
+ * ladder's internal vocabulary out of an API.
449
+ *
450
+ * @generated from enum transcodely.v1.DunningStage
451
+ */
452
+ declare enum DunningStage {
453
+ /**
454
+ * @generated from enum value: DUNNING_STAGE_UNSPECIFIED = 0;
455
+ */
456
+ UNSPECIFIED = 0,
457
+ /**
458
+ * The resting state: no episode, or one that a payment closed.
459
+ *
460
+ * @generated from enum value: DUNNING_STAGE_NONE = 1;
461
+ */
462
+ NONE = 1,
463
+ /**
464
+ * Day 0 — the provider's charge failed and it is retrying on its own
465
+ * schedule. Full service continues; the customer is told, and nothing else
466
+ * happens.
467
+ *
468
+ * @generated from enum value: DUNNING_STAGE_PAST_DUE = 2;
469
+ */
470
+ PAST_DUE = 2,
471
+ /**
472
+ * Day 3 — still unpaid, and the mail now names the date service will be
473
+ * limited. Full service continues.
474
+ *
475
+ * @generated from enum value: DUNNING_STAGE_WARNED = 3;
476
+ */
477
+ WARNED = 3,
478
+ /**
479
+ * Day 7 — NEW jobs are refused. Everything already queued or running
480
+ * finishes, playback keeps serving, and the dashboard stays fully readable.
481
+ *
482
+ * @generated from enum value: DUNNING_STAGE_SOFT_LIMITED = 4;
483
+ */
484
+ SOFT_LIMITED = 4,
485
+ /**
486
+ * Day 14 — the organization is suspended: API keys refused, public playback
487
+ * stopped. Dashboard reads stay open and Cancel stays allowed, so a suspended
488
+ * customer can still see what they owe, pay it, and stop their own meter.
489
+ *
490
+ * @generated from enum value: DUNNING_STAGE_SUSPENDED = 5;
491
+ */
492
+ SUSPENDED = 5,
493
+ /**
494
+ * Day 45 — the T-14 notice naming the exact date stored media goes. Nothing
495
+ * new is enforced here; the mail IS the event.
496
+ *
497
+ * @generated from enum value: DUNNING_STAGE_DELETION_WARNED = 6;
498
+ */
499
+ DELETION_WARNED = 6,
500
+ /**
501
+ * Day 60 — statements marked uncollectible, ledger entries flagged, stored
502
+ * media eligible for deletion. The organization stays suspended. Terminal for
503
+ * this episode.
504
+ *
505
+ * Also the state an operator's manual write-off produces: the same end state,
506
+ * reached earlier and by a human. Which of the two happened is answered by
507
+ * the audit log, not by this field.
508
+ *
509
+ * @generated from enum value: DUNNING_STAGE_WRITTEN_OFF = 7;
510
+ */
511
+ WRITTEN_OFF = 7
512
+ }
320
513
  /**
321
514
  * Pagination request parameters.
322
515
  *
@@ -1118,6 +1311,14 @@ declare class App extends Message<App> {
1118
1311
  * @generated from field: optional double monthly_spend_limit_eur = 15;
1119
1312
  */
1120
1313
  monthlySpendLimitEur?: number;
1314
+ /**
1315
+ * Player configuration for the app's hosted player and embeds. Unset when
1316
+ * never configured (the player uses its built-in defaults). Update via
1317
+ * AppService.UpdatePlayerConfig.
1318
+ *
1319
+ * @generated from field: optional transcodely.v1.PlayerConfig player_config = 16;
1320
+ */
1321
+ playerConfig?: PlayerConfig;
1121
1322
  constructor(data?: PartialMessage<App>);
1122
1323
  static readonly runtime: typeof proto3;
1123
1324
  static readonly typeName = "transcodely.v1.App";
@@ -1127,6 +1328,122 @@ declare class App extends Message<App> {
1127
1328
  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): App;
1128
1329
  static equals(a: App | PlainMessage<App> | undefined, b: App | PlainMessage<App> | undefined): boolean;
1129
1330
  }
1331
+ /**
1332
+ * Player configuration: how the hosted player and embeds present every video
1333
+ * in the app. All fields are optional; an unset field keeps the player's
1334
+ * built-in default.
1335
+ *
1336
+ * @generated from message transcodely.v1.PlayerConfig
1337
+ */
1338
+ declare class PlayerConfig extends Message<PlayerConfig> {
1339
+ /**
1340
+ * Caption (subtitle) rendering style.
1341
+ *
1342
+ * @generated from field: optional transcodely.v1.CaptionStyle captions = 1;
1343
+ */
1344
+ captions?: CaptionStyle;
1345
+ constructor(data?: PartialMessage<PlayerConfig>);
1346
+ static readonly runtime: typeof proto3;
1347
+ static readonly typeName = "transcodely.v1.PlayerConfig";
1348
+ static readonly fields: FieldList;
1349
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): PlayerConfig;
1350
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): PlayerConfig;
1351
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): PlayerConfig;
1352
+ static equals(a: PlayerConfig | PlainMessage<PlayerConfig> | undefined, b: PlayerConfig | PlainMessage<PlayerConfig> | undefined): boolean;
1353
+ }
1354
+ /**
1355
+ * Caption rendering style for the hosted player. Colors are 6-digit hex with
1356
+ * a leading '#' (e.g. "#0a0a0a"). On update: an unset field keeps its stored
1357
+ * value, an empty string clears a color back to the player default, and a
1358
+ * numeric field returns to default when set to the documented default value.
1359
+ *
1360
+ * @generated from message transcodely.v1.CaptionStyle
1361
+ */
1362
+ declare class CaptionStyle extends Message<CaptionStyle> {
1363
+ /**
1364
+ * Cue box background color. Player default: "#0a0a0a". Empty string clears.
1365
+ *
1366
+ * @generated from field: optional string background_color = 1;
1367
+ */
1368
+ backgroundColor?: string;
1369
+ /**
1370
+ * Cue box background opacity, 0 (fully transparent) to 1 (solid).
1371
+ * Player default: 0.7.
1372
+ *
1373
+ * @generated from field: optional double background_opacity = 2;
1374
+ */
1375
+ backgroundOpacity?: number;
1376
+ /**
1377
+ * Caption text color. Player default: "#ffffff". Empty string clears.
1378
+ *
1379
+ * @generated from field: optional string text_color = 3;
1380
+ */
1381
+ textColor?: string;
1382
+ /**
1383
+ * Caption text size multiplier applied to the player's responsive base
1384
+ * size: 0.5 (half) to 2 (double). Player default: 1.
1385
+ *
1386
+ * @generated from field: optional double font_scale = 4;
1387
+ */
1388
+ fontScale?: number;
1389
+ constructor(data?: PartialMessage<CaptionStyle>);
1390
+ static readonly runtime: typeof proto3;
1391
+ static readonly typeName = "transcodely.v1.CaptionStyle";
1392
+ static readonly fields: FieldList;
1393
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CaptionStyle;
1394
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CaptionStyle;
1395
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CaptionStyle;
1396
+ static equals(a: CaptionStyle | PlainMessage<CaptionStyle> | undefined, b: CaptionStyle | PlainMessage<CaptionStyle> | undefined): boolean;
1397
+ }
1398
+ /**
1399
+ * Request to update player configuration for an app.
1400
+ *
1401
+ * @generated from message transcodely.v1.UpdatePlayerConfigRequest
1402
+ */
1403
+ declare class UpdatePlayerConfigRequest extends Message<UpdatePlayerConfigRequest> {
1404
+ /**
1405
+ * App ID.
1406
+ *
1407
+ * @generated from field: string id = 1;
1408
+ */
1409
+ id: string;
1410
+ /**
1411
+ * Player configuration to merge. Fields present here overwrite the stored
1412
+ * value; absent fields are left unchanged.
1413
+ *
1414
+ * @generated from field: transcodely.v1.PlayerConfig player_config = 2;
1415
+ */
1416
+ playerConfig?: PlayerConfig;
1417
+ constructor(data?: PartialMessage<UpdatePlayerConfigRequest>);
1418
+ static readonly runtime: typeof proto3;
1419
+ static readonly typeName = "transcodely.v1.UpdatePlayerConfigRequest";
1420
+ static readonly fields: FieldList;
1421
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UpdatePlayerConfigRequest;
1422
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UpdatePlayerConfigRequest;
1423
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UpdatePlayerConfigRequest;
1424
+ static equals(a: UpdatePlayerConfigRequest | PlainMessage<UpdatePlayerConfigRequest> | undefined, b: UpdatePlayerConfigRequest | PlainMessage<UpdatePlayerConfigRequest> | undefined): boolean;
1425
+ }
1426
+ /**
1427
+ * Response from updating player configuration.
1428
+ *
1429
+ * @generated from message transcodely.v1.UpdatePlayerConfigResponse
1430
+ */
1431
+ declare class UpdatePlayerConfigResponse extends Message<UpdatePlayerConfigResponse> {
1432
+ /**
1433
+ * The updated app with merged player config.
1434
+ *
1435
+ * @generated from field: transcodely.v1.App app = 1;
1436
+ */
1437
+ app?: App;
1438
+ constructor(data?: PartialMessage<UpdatePlayerConfigResponse>);
1439
+ static readonly runtime: typeof proto3;
1440
+ static readonly typeName = "transcodely.v1.UpdatePlayerConfigResponse";
1441
+ static readonly fields: FieldList;
1442
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UpdatePlayerConfigResponse;
1443
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UpdatePlayerConfigResponse;
1444
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UpdatePlayerConfigResponse;
1445
+ static equals(a: UpdatePlayerConfigResponse | PlainMessage<UpdatePlayerConfigResponse> | undefined, b: UpdatePlayerConfigResponse | PlainMessage<UpdatePlayerConfigResponse> | undefined): boolean;
1446
+ }
1130
1447
  /**
1131
1448
  * Request to create a new app.
1132
1449
  *
@@ -1811,7 +2128,129 @@ declare enum InvoiceLineType {
1811
2128
  *
1812
2129
  * @generated from enum value: INVOICE_LINE_TYPE_ADJUSTMENT = 4;
1813
2130
  */
1814
- ADJUSTMENT = 4
2131
+ ADJUSTMENT = 4,
2132
+ /**
2133
+ * Metered hosting: managed storage (GB, averaged over the covered days) and
2134
+ * CDN delivery (GB egressed), one line per app and service. dimensions
2135
+ * carries {"app_id", "service": "storage"|"egress", "covered_from",
2136
+ * "covered_through"} — the coverage window rolls with the meter, so the last
2137
+ * day or so of a period appears on the next statement rather than this one.
2138
+ *
2139
+ * @generated from enum value: INVOICE_LINE_TYPE_HOSTING = 5;
2140
+ */
2141
+ HOSTING = 5
2142
+ }
2143
+ /**
2144
+ * How much unbilled usage an organization's payment history earns it.
2145
+ *
2146
+ * Derived from the number of statements it has paid, never stored, and it only
2147
+ * ever moves upward as payments land. It is not a customer segment, a plan, or
2148
+ * anything anyone is told about beyond the billing page: its single job is to
2149
+ * answer "how much work should we run for this account before asking to be
2150
+ * paid".
2151
+ *
2152
+ * @generated from enum transcodely.v1.TrustTier
2153
+ */
2154
+ declare enum TrustTier {
2155
+ /**
2156
+ * @generated from enum value: TRUST_TIER_UNSPECIFIED = 0;
2157
+ */
2158
+ UNSPECIFIED = 0,
2159
+ /**
2160
+ * No settled payments yet. Every account starts here, including the ones that
2161
+ * go on to spend thousands.
2162
+ *
2163
+ * @generated from enum value: TRUST_TIER_NEW = 1;
2164
+ */
2165
+ NEW = 1,
2166
+ /**
2167
+ * One or two settled payments.
2168
+ *
2169
+ * @generated from enum value: TRUST_TIER_ESTABLISHED = 2;
2170
+ */
2171
+ ESTABLISHED = 2,
2172
+ /**
2173
+ * Three or more settled payments. The tier imposes NO threshold of its own —
2174
+ * the account falls through to whatever ceiling its plan sets, which for most
2175
+ * accounts is none. This is where the ladder is meant to end up.
2176
+ *
2177
+ * @generated from enum value: TRUST_TIER_PROVEN = 3;
2178
+ */
2179
+ PROVEN = 3
2180
+ }
2181
+ /**
2182
+ * Which rung supplied an organization's outstanding-balance threshold.
2183
+ *
2184
+ * Same purpose as LimitSource on the usage ladder: "€50" reads very differently
2185
+ * depending on whether changing it means an operator editing this organization,
2186
+ * editing its plan, or the account simply paying an invoice.
2187
+ *
2188
+ * @generated from enum transcodely.v1.ExposureThresholdSource
2189
+ */
2190
+ declare enum ExposureThresholdSource {
2191
+ /**
2192
+ * @generated from enum value: EXPOSURE_THRESHOLD_SOURCE_UNSPECIFIED = 0;
2193
+ */
2194
+ UNSPECIFIED = 0,
2195
+ /**
2196
+ * An operator set this organization's threshold by hand. Audited, and the
2197
+ * only rung that can RAISE a threshold above what the tier would give.
2198
+ *
2199
+ * @generated from enum value: EXPOSURE_THRESHOLD_SOURCE_OVERRIDE = 1;
2200
+ */
2201
+ OVERRIDE = 1,
2202
+ /**
2203
+ * The trust tier's own number — the everyday answer.
2204
+ *
2205
+ * @generated from enum value: EXPOSURE_THRESHOLD_SOURCE_TRUST_TIER = 2;
2206
+ */
2207
+ TRUST_TIER = 2,
2208
+ /**
2209
+ * The monthly spend ceiling on the organization's plan. It joins by MINIMUM,
2210
+ * so a plan can only ever tighten what the tier or an operator allowed:
2211
+ * carrying more unbilled usage than an account is permitted to spend in a
2212
+ * month would be extending credit past the amount it may run up at all.
2213
+ *
2214
+ * @generated from enum value: EXPOSURE_THRESHOLD_SOURCE_ORG_PLAN = 3;
2215
+ */
2216
+ ORG_PLAN = 3,
2217
+ /**
2218
+ * The platform-wide default ceiling.
2219
+ *
2220
+ * @generated from enum value: EXPOSURE_THRESHOLD_SOURCE_PLATFORM_DEFAULT = 4;
2221
+ */
2222
+ PLATFORM_DEFAULT = 4,
2223
+ /**
2224
+ * Every rung declined: no threshold applies, no reminders are sent and
2225
+ * admission is never refused for this reason.
2226
+ *
2227
+ * @generated from enum value: EXPOSURE_THRESHOLD_SOURCE_UNBOUNDED = 5;
2228
+ */
2229
+ UNBOUNDED = 5
2230
+ }
2231
+ /**
2232
+ * Whether an organization has a payment method the provider can charge.
2233
+ *
2234
+ * @generated from enum transcodely.v1.PaymentMethodState
2235
+ */
2236
+ declare enum PaymentMethodState {
2237
+ /**
2238
+ * @generated from enum value: PAYMENT_METHOD_STATE_UNSPECIFIED = 0;
2239
+ */
2240
+ UNSPECIFIED = 0,
2241
+ /**
2242
+ * No payment method on file. Nothing is blocked by this today.
2243
+ *
2244
+ * @generated from enum value: PAYMENT_METHOD_STATE_NONE = 1;
2245
+ */
2246
+ NONE = 1,
2247
+ /**
2248
+ * At least one payment method is on file. Says only that the provider holds
2249
+ * something it can charge — not that its card details are known.
2250
+ *
2251
+ * @generated from enum value: PAYMENT_METHOD_STATE_ON_FILE = 2;
2252
+ */
2253
+ ON_FILE = 2
1815
2254
  }
1816
2255
  /**
1817
2256
  * A billing statement for one period.
@@ -1898,97 +2337,626 @@ declare class Invoice extends Message<Invoice> {
1898
2337
  /**
1899
2338
  * When payment was received. Absent unless status is "paid".
1900
2339
  *
1901
- * @generated from field: google.protobuf.Timestamp paid_at = 12;
2340
+ * @generated from field: google.protobuf.Timestamp paid_at = 12;
2341
+ */
2342
+ paidAt?: Timestamp;
2343
+ /**
2344
+ * The itemized breakdown, in display order.
2345
+ *
2346
+ * @generated from field: repeated transcodely.v1.InvoiceLineItem line_items = 13;
2347
+ */
2348
+ lineItems: InvoiceLineItem[];
2349
+ /**
2350
+ * When the statement row was created.
2351
+ *
2352
+ * @generated from field: google.protobuf.Timestamp created_at = 14;
2353
+ */
2354
+ createdAt?: Timestamp;
2355
+ constructor(data?: PartialMessage<Invoice>);
2356
+ static readonly runtime: typeof proto3;
2357
+ static readonly typeName = "transcodely.v1.Invoice";
2358
+ static readonly fields: FieldList;
2359
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Invoice;
2360
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Invoice;
2361
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Invoice;
2362
+ static equals(a: Invoice | PlainMessage<Invoice> | undefined, b: Invoice | PlainMessage<Invoice> | undefined): boolean;
2363
+ }
2364
+ /**
2365
+ * One line of an invoice's breakdown.
2366
+ *
2367
+ * Line items explain the total; they do not compute it. They are regenerated
2368
+ * wholesale whenever a statement is rebuilt before finalization, so a line item
2369
+ * id is not stable until the invoice is finalized.
2370
+ *
2371
+ * @generated from message transcodely.v1.InvoiceLineItem
2372
+ */
2373
+ declare class InvoiceLineItem extends Message<InvoiceLineItem> {
2374
+ /**
2375
+ * Unique identifier (e.g., "li_a1b2c3d4e5f6g7"). Empty on the upcoming
2376
+ * invoice, whose lines are computed rather than stored.
2377
+ *
2378
+ * @generated from field: string id = 1;
2379
+ */
2380
+ id: string;
2381
+ /**
2382
+ * What kind of charge this line represents.
2383
+ *
2384
+ * @generated from field: transcodely.v1.InvoiceLineType line_type = 2;
2385
+ */
2386
+ lineType: InvoiceLineType;
2387
+ /**
2388
+ * Human-readable description, e.g. "Encoding — h264 1080p standard".
2389
+ *
2390
+ * @generated from field: string description = 3;
2391
+ */
2392
+ description: string;
2393
+ /**
2394
+ * How many units the line covers (e.g. 12 outputs). Absent for lines that
2395
+ * are not metered, such as the rounding adjustment.
2396
+ *
2397
+ * @generated from field: optional double quantity = 4;
2398
+ */
2399
+ quantity?: number;
2400
+ /**
2401
+ * Unit that quantity is counted in, e.g. "output" or "minute".
2402
+ *
2403
+ * @generated from field: string unit = 5;
2404
+ */
2405
+ unit: string;
2406
+ /**
2407
+ * Amount for this line, in cents. Signed: the rounding adjustment is
2408
+ * routinely negative.
2409
+ *
2410
+ * @generated from field: int64 amount_cents = 6;
2411
+ */
2412
+ amountCents: bigint;
2413
+ /**
2414
+ * The grouping key that produced this line, e.g.
2415
+ * {"app_id": "app_k1l2m3n4o5", "codec": "h264", "resolution": "1080p"}.
2416
+ * Keys vary by line_type and new ones may be added.
2417
+ *
2418
+ * @generated from field: map<string, string> dimensions = 7;
2419
+ */
2420
+ dimensions: {
2421
+ [key: string]: string;
2422
+ };
2423
+ constructor(data?: PartialMessage<InvoiceLineItem>);
2424
+ static readonly runtime: typeof proto3;
2425
+ static readonly typeName = "transcodely.v1.InvoiceLineItem";
2426
+ static readonly fields: FieldList;
2427
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): InvoiceLineItem;
2428
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): InvoiceLineItem;
2429
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): InvoiceLineItem;
2430
+ static equals(a: InvoiceLineItem | PlainMessage<InvoiceLineItem> | undefined, b: InvoiceLineItem | PlainMessage<InvoiceLineItem> | undefined): boolean;
2431
+ }
2432
+ /**
2433
+ * An organization's payment standing: whether the payment provider can charge
2434
+ * it, and what the customer sees when they look.
2435
+ *
2436
+ * Payment METHODS are read live from the payment provider on every request
2437
+ * rather than mirrored locally, so a card added in the hosted portal shows up
2438
+ * on the next read with no polling and no waiting for a webhook. STANDING is
2439
+ * derived at request time from the organization's stored billing facts
2440
+ * (invoice outcomes, observed payment methods) together with that live read, so
2441
+ * it is never staler than the page showing it.
2442
+ *
2443
+ * @generated from message transcodely.v1.BillingProfile
2444
+ */
2445
+ declare class BillingProfile extends Message<BillingProfile> {
2446
+ /**
2447
+ * Object type, always "billing_profile".
2448
+ *
2449
+ * @generated from field: string object = 1;
2450
+ */
2451
+ object: string;
2452
+ /**
2453
+ * Organization this profile describes.
2454
+ *
2455
+ * @generated from field: string org_id = 2;
2456
+ */
2457
+ orgId: string;
2458
+ /**
2459
+ * Whether a payment method is on file. Determined by whether the payment
2460
+ * provider holds any payment method for this organization, and by nothing
2461
+ * else — in particular, a method missing its card details is still a
2462
+ * payment method.
2463
+ *
2464
+ * @generated from field: transcodely.v1.PaymentMethodState payment_method_state = 3;
2465
+ */
2466
+ paymentMethodState: PaymentMethodState;
2467
+ /**
2468
+ * The methods the provider holds, for display only. Empty when the state is
2469
+ * "none", and never empty when the state is "on_file".
2470
+ *
2471
+ * @generated from field: repeated transcodely.v1.BillingPaymentMethod payment_methods = 4;
2472
+ */
2473
+ paymentMethods: BillingPaymentMethod[];
2474
+ /**
2475
+ * The organization's billing email, which the payment provider requires
2476
+ * before it will accept a payment method. Absent when unset.
2477
+ *
2478
+ * @generated from field: optional string billing_email = 5;
2479
+ */
2480
+ billingEmail?: string;
2481
+ /**
2482
+ * The organization's derived payment health, and what its usage limits
2483
+ * resolve from. See BillingStanding.
2484
+ *
2485
+ * @generated from field: transcodely.v1.BillingStanding standing = 6;
2486
+ */
2487
+ standing: BillingStanding;
2488
+ /**
2489
+ * When the current grace window closes. Present if and only if standing is
2490
+ * BILLING_STANDING_GRACE. At this instant the account is already past it —
2491
+ * the deadline is inclusive — and what it becomes is determined by
2492
+ * standing_reason: a card problem decays to FREE, an unpaid invoice to
2493
+ * DELINQUENT.
2494
+ *
2495
+ * @generated from field: optional google.protobuf.Timestamp grace_until = 7;
2496
+ */
2497
+ graceUntil?: Timestamp;
2498
+ /**
2499
+ * Why standing is what it is, as a stable token to switch on rather than
2500
+ * copy to display:
2501
+ *
2502
+ * "" nothing is wrong
2503
+ * "exempt" the org is not required to hold a payment
2504
+ * method, so standing is always active
2505
+ * "no_payment_method" none has ever been on file
2506
+ * "card_expired" one is on file and its expiry has passed
2507
+ * "card_removed" one we had observed is gone
2508
+ * "invoice_past_due" an invoice failed to collect
2509
+ * "repeated_invoice_failure" a second consecutive failure, which earns no
2510
+ * grace window at all
2511
+ *
2512
+ * New tokens may be added; treat an unrecognized one as a generic billing
2513
+ * problem rather than failing.
2514
+ *
2515
+ * @generated from field: string standing_reason = 8;
2516
+ */
2517
+ standingReason: string;
2518
+ /**
2519
+ * Whether this organization must hold a payment method. FALSE means it is
2520
+ * exempt — organizations predating the requirement are, and an operator may
2521
+ * exempt one deliberately — in which case standing is always
2522
+ * BILLING_STANDING_ACTIVE and no banner or prompt about payment methods
2523
+ * should be shown.
2524
+ *
2525
+ * Exempt is not free service: the organization still accrues usage and is
2526
+ * still invoiced. It simply is not limited for lacking a card on file.
2527
+ *
2528
+ * @generated from field: bool payment_method_required = 9;
2529
+ */
2530
+ paymentMethodRequired: boolean;
2531
+ constructor(data?: PartialMessage<BillingProfile>);
2532
+ static readonly runtime: typeof proto3;
2533
+ static readonly typeName = "transcodely.v1.BillingProfile";
2534
+ static readonly fields: FieldList;
2535
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): BillingProfile;
2536
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): BillingProfile;
2537
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): BillingProfile;
2538
+ static equals(a: BillingProfile | PlainMessage<BillingProfile> | undefined, b: BillingProfile | PlainMessage<BillingProfile> | undefined): boolean;
2539
+ }
2540
+ /**
2541
+ * One payment method held by the payment provider.
2542
+ *
2543
+ * Display data only. Card numbers never reach the Transcodely API; a method is
2544
+ * added, replaced or removed in the provider's hosted portal.
2545
+ *
2546
+ * The card detail fields are all optional and are frequently absent even for a
2547
+ * working card — the payment provider does not always expose card metadata.
2548
+ * Treat their presence as a bonus: a method with no brand or last4 is a valid,
2549
+ * chargeable payment method that simply cannot be described more precisely than
2550
+ * its type. Render it as "Card on file" rather than waiting for digits that may
2551
+ * never arrive.
2552
+ *
2553
+ * @generated from message transcodely.v1.BillingPaymentMethod
2554
+ */
2555
+ declare class BillingPaymentMethod extends Message<BillingPaymentMethod> {
2556
+ /**
2557
+ * The payment provider's identifier for this method.
2558
+ *
2559
+ * @generated from field: string id = 1;
2560
+ */
2561
+ id: string;
2562
+ /**
2563
+ * Method family: "card", or "generic" for everything else the provider
2564
+ * supports (direct debit and similar). Always present.
2565
+ *
2566
+ * @generated from field: string type = 2;
2567
+ */
2568
+ type: string;
2569
+ /**
2570
+ * Card network, e.g. "visa" or "mastercard". Cards only, and only when the
2571
+ * provider exposes it.
2572
+ *
2573
+ * @generated from field: optional string brand = 3;
2574
+ */
2575
+ brand?: string;
2576
+ /**
2577
+ * Last four digits of the card number. Cards only, and only when the
2578
+ * provider exposes it.
2579
+ *
2580
+ * @generated from field: optional string last4 = 4;
2581
+ */
2582
+ last4?: string;
2583
+ /**
2584
+ * Expiry month, 1-12. Cards only, and only when the provider exposes it.
2585
+ *
2586
+ * @generated from field: optional int32 exp_month = 5;
2587
+ */
2588
+ expMonth?: number;
2589
+ /**
2590
+ * Expiry year, four digits. Cards only, and only when the provider exposes
2591
+ * it.
2592
+ *
2593
+ * @generated from field: optional int32 exp_year = 6;
2594
+ */
2595
+ expYear?: number;
2596
+ /**
2597
+ * Whether this is the method the provider charges by default. Advisory: the
2598
+ * provider does not always mark a default, so false here does not mean the
2599
+ * method is unused, and it is never a signal about the organization's
2600
+ * payment standing.
2601
+ *
2602
+ * @generated from field: bool is_default = 7;
2603
+ */
2604
+ isDefault: boolean;
2605
+ constructor(data?: PartialMessage<BillingPaymentMethod>);
2606
+ static readonly runtime: typeof proto3;
2607
+ static readonly typeName = "transcodely.v1.BillingPaymentMethod";
2608
+ static readonly fields: FieldList;
2609
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): BillingPaymentMethod;
2610
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): BillingPaymentMethod;
2611
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): BillingPaymentMethod;
2612
+ static equals(a: BillingPaymentMethod | PlainMessage<BillingPaymentMethod> | undefined, b: BillingPaymentMethod | PlainMessage<BillingPaymentMethod> | undefined): boolean;
2613
+ }
2614
+ /**
2615
+ * A short-lived session for the payment provider's hosted billing portal.
2616
+ *
2617
+ * @generated from message transcodely.v1.BillingPortalSession
2618
+ */
2619
+ declare class BillingPortalSession extends Message<BillingPortalSession> {
2620
+ /**
2621
+ * Object type, always "billing_portal_session".
2622
+ *
2623
+ * @generated from field: string object = 1;
2624
+ */
2625
+ object: string;
2626
+ /**
2627
+ * Where to send the browser. Single-use and short-lived; request a new
2628
+ * session rather than storing this.
2629
+ *
2630
+ * Points at the portal's settings section, where payment methods are managed,
2631
+ * rather than at its landing page.
2632
+ *
2633
+ * @generated from field: string url = 2;
2634
+ */
2635
+ url: string;
2636
+ /**
2637
+ * When the session stops working. Applies to url and session_token alike —
2638
+ * they are two ways into the same session.
2639
+ *
2640
+ * @generated from field: google.protobuf.Timestamp expires_at = 3;
2641
+ */
2642
+ expiresAt?: Timestamp;
2643
+ /**
2644
+ * Short-lived (~1h), single-customer-scoped token for the provider's embedded
2645
+ * payment-method form, so a card can be added in place instead of by
2646
+ * redirecting to the hosted portal.
2647
+ *
2648
+ * Same trust level as `url`, which reaches the same portal as the same
2649
+ * customer with no further authentication. It is still a bare credential:
2650
+ * hand it to the embed, never log or store it, and request a new session
2651
+ * instead of reusing one.
2652
+ *
2653
+ * Empty when the configured provider exposes no such token; fall back to
2654
+ * opening `url`.
2655
+ *
2656
+ * @generated from field: string session_token = 4;
2657
+ */
2658
+ sessionToken: string;
2659
+ constructor(data?: PartialMessage<BillingPortalSession>);
2660
+ static readonly runtime: typeof proto3;
2661
+ static readonly typeName = "transcodely.v1.BillingPortalSession";
2662
+ static readonly fields: FieldList;
2663
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): BillingPortalSession;
2664
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): BillingPortalSession;
2665
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): BillingPortalSession;
2666
+ static equals(a: BillingPortalSession | PlainMessage<BillingPortalSession> | undefined, b: BillingPortalSession | PlainMessage<BillingPortalSession> | undefined): boolean;
2667
+ }
2668
+ /**
2669
+ * An organization's monthly budget and the spend it is measured against.
2670
+ *
2671
+ * A budget is the customer's OWN telemetry: it exists so an account can be told
2672
+ * it is spending more than it meant to. It NEVER enforces anything. Crossing
2673
+ * 100% of a budget sends an email and changes nothing else — no job is
2674
+ * rejected, no video stops playing, no limit is applied.
2675
+ *
2676
+ * It is not the per-app spend LIMIT (App.monthly_spend_limit_eur, set via
2677
+ * AppService.UpdateSpendLimit), which IS a hard cap: at 100% of a spend limit,
2678
+ * new jobs are refused. Limits block; budgets notify. An organization can use
2679
+ * either, both, or neither.
2680
+ *
2681
+ * @generated from message transcodely.v1.Budget
2682
+ */
2683
+ declare class Budget extends Message<Budget> {
2684
+ /**
2685
+ * Object type, always "budget".
2686
+ *
2687
+ * @generated from field: string object = 1;
2688
+ */
2689
+ object: string;
2690
+ /**
2691
+ * Organization this budget belongs to.
2692
+ *
2693
+ * @generated from field: string org_id = 2;
2694
+ */
2695
+ orgId: string;
2696
+ /**
2697
+ * The monthly budget in EUR. Absent when no budget is set, which is the
2698
+ * default and means no alerts are sent.
2699
+ *
2700
+ * @generated from field: optional double amount_eur = 3;
2701
+ */
2702
+ amountEur?: number;
2703
+ /**
2704
+ * Spend so far in the current billing period, in EUR.
2705
+ *
2706
+ * This is the same ledger, over the same window, that GetUpcomingInvoice
2707
+ * reports — it covers transcoding AND hosting for every app in the
2708
+ * organization, and it excludes usage that will never be billed. It is
2709
+ * therefore NOT the same number as AppService.GetSpend, which is scoped to
2710
+ * one app, counts estimates for jobs still running, and knows nothing about
2711
+ * hosting.
2712
+ *
2713
+ * @generated from field: double spent_eur = 4;
2714
+ */
2715
+ spentEur: number;
2716
+ /**
2717
+ * spent_eur as a percentage of amount_eur. Absent when no budget is set.
2718
+ * Not capped at 100: an organization at 240% of its budget is shown 240.
2719
+ *
2720
+ * @generated from field: optional double used_percent = 5;
2721
+ */
2722
+ usedPercent?: number;
2723
+ /**
2724
+ * Start of the current billing period (inclusive), UTC.
2725
+ *
2726
+ * @generated from field: google.protobuf.Timestamp period_start = 6;
2727
+ */
2728
+ periodStart?: Timestamp;
2729
+ /**
2730
+ * End of the current billing period (exclusive), UTC. Spend resets here.
2731
+ *
2732
+ * @generated from field: google.protobuf.Timestamp period_end = 7;
2733
+ */
2734
+ periodEnd?: Timestamp;
2735
+ /**
2736
+ * The percentage steps that send an alert email, ascending. Fixed at
2737
+ * 50, 80 and 100 today; new steps may be added.
2738
+ *
2739
+ * @generated from field: repeated int32 alert_steps = 8;
2740
+ */
2741
+ alertSteps: number[];
2742
+ /**
2743
+ * The steps already emailed this billing period, ascending. Fire-once per
2744
+ * period: a step listed here does not send again, and changing the budget
2745
+ * mid-period does not re-arm it. Empty at the start of every period.
2746
+ *
2747
+ * @generated from field: repeated int32 notified_steps = 9;
2748
+ */
2749
+ notifiedSteps: number[];
2750
+ /**
2751
+ * ISO 4217 currency code for every amount here. Always "EUR" today.
2752
+ *
2753
+ * @generated from field: string currency = 10;
2754
+ */
2755
+ currency: string;
2756
+ constructor(data?: PartialMessage<Budget>);
2757
+ static readonly runtime: typeof proto3;
2758
+ static readonly typeName = "transcodely.v1.Budget";
2759
+ static readonly fields: FieldList;
2760
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Budget;
2761
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Budget;
2762
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Budget;
2763
+ static equals(a: Budget | PlainMessage<Budget> | undefined, b: Budget | PlainMessage<Budget> | undefined): boolean;
2764
+ }
2765
+ /**
2766
+ * An organization's unsettled balance and the threshold it is measured against.
2767
+ *
2768
+ * # What the number is
2769
+ *
2770
+ * Usage that has been accrued and NOT yet captured onto a statement —
2771
+ * transcoding and hosting, across every app in the organization. Paying a
2772
+ * statement, or settling mid-cycle, resets it to zero.
2773
+ *
2774
+ * It is a different number from all three of its neighbours, and the
2775
+ * differences matter:
2776
+ *
2777
+ * - GetUpcomingInvoice shows what THIS PERIOD has accrued. This shows what is
2778
+ * UNSETTLED, which also carries anything an earlier period left uncaptured.
2779
+ * - Budget.spent_eur keeps counting after an invoice is issued, because spend
2780
+ * does not un-happen when it is billed. This drops to zero when it is.
2781
+ * - App.monthly_spend_limit_eur is a cap the customer sets on one app for
2782
+ * themselves. This is the platform's own exposure control over the whole
2783
+ * organization, and no calendar clears it — only payment does.
2784
+ *
2785
+ * # What happens as it climbs
2786
+ *
2787
+ * Nothing, for a long time. Reminder emails go out at 80%, 100%, 125%, 150% and
2788
+ * 175% of the threshold and NOTHING is restricted at any of them: service
2789
+ * continues past the threshold on purpose, so that a busy month never stops a
2790
+ * pipeline without warning. Only at `hard_stop_cents` — twice the threshold —
2791
+ * are new jobs refused, with error code "outstanding_balance_exceeded".
2792
+ *
2793
+ * Even then, work already queued or running finishes, outputs are delivered,
2794
+ * videos keep playing, uploads keep working and jobs can still be canceled.
2795
+ * Paying lifts the block on the very next request.
2796
+ *
2797
+ * @generated from message transcodely.v1.OutstandingBalance
2798
+ */
2799
+ declare class OutstandingBalance extends Message<OutstandingBalance> {
2800
+ /**
2801
+ * Object type, always "outstanding_balance".
2802
+ *
2803
+ * @generated from field: string object = 1;
2804
+ */
2805
+ object: string;
2806
+ /**
2807
+ * Organization this balance belongs to.
2808
+ *
2809
+ * @generated from field: string org_id = 2;
2810
+ */
2811
+ orgId: string;
2812
+ /**
2813
+ * The unsettled amount, in integer minor units (cents) of `currency`.
2814
+ * Rendered as a JSON string per the protobuf 64-bit integer mapping.
2815
+ *
2816
+ * @generated from field: int64 outstanding_cents = 3;
2817
+ */
2818
+ outstandingCents: bigint;
2819
+ /**
2820
+ * The trust tier the organization's payment history puts it on, which is what
2821
+ * sets the threshold unless an operator or a plan overrides it.
2822
+ *
2823
+ * @generated from field: transcodely.v1.TrustTier tier = 4;
2824
+ */
2825
+ tier: TrustTier;
2826
+ /**
2827
+ * How many statements this organization has PAID. The input behind `tier`,
2828
+ * surfaced so the path to a higher threshold is visible rather than implied.
2829
+ * A mid-cycle settlement counts once it is paid, like any other statement.
2830
+ *
2831
+ * @generated from field: int64 settled_payments = 5;
2832
+ */
2833
+ settledPayments: bigint;
2834
+ /**
2835
+ * The threshold, in cents. Absent when no threshold applies at all — a
2836
+ * long-standing account with no plan ceiling has none, which is the intended
2837
+ * destination of the whole ladder.
2838
+ *
2839
+ * @generated from field: optional int64 threshold_cents = 6;
2840
+ */
2841
+ thresholdCents?: bigint;
2842
+ /**
2843
+ * Which rung supplied `threshold_cents`.
2844
+ *
2845
+ * @generated from field: transcodely.v1.ExposureThresholdSource threshold_source = 7;
2846
+ */
2847
+ thresholdSource: ExposureThresholdSource;
2848
+ /**
2849
+ * The amount at which new-job admission stops: twice `threshold_cents`.
2850
+ * Absent exactly when `threshold_cents` is.
2851
+ *
2852
+ * @generated from field: optional int64 hard_stop_cents = 8;
2853
+ */
2854
+ hardStopCents?: bigint;
2855
+ /**
2856
+ * Whether new jobs are being refused right now. Reads the same numbers the
2857
+ * admission gate reads, so a card showing false cannot coexist with a create
2858
+ * being rejected for this reason.
2859
+ *
2860
+ * @generated from field: bool blocked = 9;
2861
+ */
2862
+ blocked: boolean;
2863
+ /**
2864
+ * `outstanding_cents` as a percentage of `threshold_cents`. Absent when no
2865
+ * threshold applies. Not capped at 100: an organization at 180% is shown 180.
2866
+ *
2867
+ * @generated from field: optional double used_percent = 10;
2868
+ */
2869
+ usedPercent?: number;
2870
+ /**
2871
+ * The percentage steps that send a reminder email, ascending. 80, 100, 125,
2872
+ * 150, 175 and 200 today; the last one is where admission stops.
2873
+ *
2874
+ * @generated from field: repeated int32 alert_steps = 11;
2875
+ */
2876
+ alertSteps: number[];
2877
+ /**
2878
+ * The steps already emailed for the current accrual window, ascending.
2879
+ * Fire-once: a step listed here does not send again until the balance is
2880
+ * settled or the billing period rolls.
2881
+ *
2882
+ * @generated from field: repeated int32 notified_steps = 12;
1902
2883
  */
1903
- paidAt?: Timestamp;
2884
+ notifiedSteps: number[];
1904
2885
  /**
1905
- * The itemized breakdown, in display order.
2886
+ * ISO 4217 currency code for every amount here. Always "EUR" today.
1906
2887
  *
1907
- * @generated from field: repeated transcodely.v1.InvoiceLineItem line_items = 13;
2888
+ * @generated from field: string currency = 13;
1908
2889
  */
1909
- lineItems: InvoiceLineItem[];
2890
+ currency: string;
1910
2891
  /**
1911
- * When the statement row was created.
2892
+ * Whether SettleOutstandingBalance is available on this deployment. False
2893
+ * while the settlement rail is disabled — a billing page should not render a
2894
+ * "pay now" action that can only fail.
1912
2895
  *
1913
- * @generated from field: google.protobuf.Timestamp created_at = 14;
2896
+ * @generated from field: bool settlement_available = 14;
1914
2897
  */
1915
- createdAt?: Timestamp;
1916
- constructor(data?: PartialMessage<Invoice>);
2898
+ settlementAvailable: boolean;
2899
+ constructor(data?: PartialMessage<OutstandingBalance>);
1917
2900
  static readonly runtime: typeof proto3;
1918
- static readonly typeName = "transcodely.v1.Invoice";
2901
+ static readonly typeName = "transcodely.v1.OutstandingBalance";
1919
2902
  static readonly fields: FieldList;
1920
- static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Invoice;
1921
- static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Invoice;
1922
- static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Invoice;
1923
- static equals(a: Invoice | PlainMessage<Invoice> | undefined, b: Invoice | PlainMessage<Invoice> | undefined): boolean;
2903
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OutstandingBalance;
2904
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OutstandingBalance;
2905
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OutstandingBalance;
2906
+ static equals(a: OutstandingBalance | PlainMessage<OutstandingBalance> | undefined, b: OutstandingBalance | PlainMessage<OutstandingBalance> | undefined): boolean;
1924
2907
  }
1925
2908
  /**
1926
- * One line of an invoice's breakdown.
2909
+ * A statement produced by paying an outstanding balance mid-cycle.
1927
2910
  *
1928
- * Line items explain the total; they do not compute it. They are regenerated
1929
- * wholesale whenever a statement is rebuilt before finalization, so a line item
1930
- * id is not stable until the invoice is finalized.
1931
- *
1932
- * @generated from message transcodely.v1.InvoiceLineItem
2911
+ * @generated from message transcodely.v1.Settlement
1933
2912
  */
1934
- declare class InvoiceLineItem extends Message<InvoiceLineItem> {
1935
- /**
1936
- * Unique identifier (e.g., "li_a1b2c3d4e5f6g7"). Empty on the upcoming
1937
- * invoice, whose lines are computed rather than stored.
1938
- *
1939
- * @generated from field: string id = 1;
1940
- */
1941
- id: string;
2913
+ declare class Settlement extends Message<Settlement> {
1942
2914
  /**
1943
- * What kind of charge this line represents.
2915
+ * Object type, always "settlement".
1944
2916
  *
1945
- * @generated from field: transcodely.v1.InvoiceLineType line_type = 2;
2917
+ * @generated from field: string object = 1;
1946
2918
  */
1947
- lineType: InvoiceLineType;
2919
+ object: string;
1948
2920
  /**
1949
- * Human-readable description, e.g. "Encoding — h264 1080p standard".
2921
+ * The statement the balance was captured onto. It is an ordinary invoice —
2922
+ * readable through GetInvoice, listed by ListInvoices, and paid through the
2923
+ * same provider flow as any other.
1950
2924
  *
1951
- * @generated from field: string description = 3;
2925
+ * @generated from field: string invoice_id = 2;
1952
2926
  */
1953
- description: string;
2927
+ invoiceId: string;
1954
2928
  /**
1955
- * How many units the line covers (e.g. 12 outputs). Absent for lines that
1956
- * are not metered, such as the rounding adjustment.
2929
+ * What it came to, in integer minor units (cents).
1957
2930
  *
1958
- * @generated from field: optional double quantity = 4;
2931
+ * @generated from field: int64 amount_cents = 3;
1959
2932
  */
1960
- quantity?: number;
2933
+ amountCents: bigint;
1961
2934
  /**
1962
- * Unit that quantity is counted in, e.g. "output" or "minute".
2935
+ * The window the statement covers, UTC. It starts where the previous
2936
+ * statement ended (or at the period start) and ends at the settlement
2937
+ * instant.
1963
2938
  *
1964
- * @generated from field: string unit = 5;
2939
+ * @generated from field: google.protobuf.Timestamp period_start = 4;
1965
2940
  */
1966
- unit: string;
2941
+ periodStart?: Timestamp;
1967
2942
  /**
1968
- * Amount for this line, in cents. Signed: the rounding adjustment is
1969
- * routinely negative.
1970
- *
1971
- * @generated from field: int64 amount_cents = 6;
2943
+ * @generated from field: google.protobuf.Timestamp period_end = 5;
1972
2944
  */
1973
- amountCents: bigint;
2945
+ periodEnd?: Timestamp;
1974
2946
  /**
1975
- * The grouping key that produced this line, e.g.
1976
- * {"app_id": "app_k1l2m3n4o5", "codec": "h264", "resolution": "1080p"}.
1977
- * Keys vary by line_type and new ones may be added.
2947
+ * ISO 4217 currency code. Always "EUR" today.
1978
2948
  *
1979
- * @generated from field: map<string, string> dimensions = 7;
2949
+ * @generated from field: string currency = 6;
1980
2950
  */
1981
- dimensions: {
1982
- [key: string]: string;
1983
- };
1984
- constructor(data?: PartialMessage<InvoiceLineItem>);
2951
+ currency: string;
2952
+ constructor(data?: PartialMessage<Settlement>);
1985
2953
  static readonly runtime: typeof proto3;
1986
- static readonly typeName = "transcodely.v1.InvoiceLineItem";
2954
+ static readonly typeName = "transcodely.v1.Settlement";
1987
2955
  static readonly fields: FieldList;
1988
- static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): InvoiceLineItem;
1989
- static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): InvoiceLineItem;
1990
- static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): InvoiceLineItem;
1991
- static equals(a: InvoiceLineItem | PlainMessage<InvoiceLineItem> | undefined, b: InvoiceLineItem | PlainMessage<InvoiceLineItem> | undefined): boolean;
2956
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): Settlement;
2957
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): Settlement;
2958
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): Settlement;
2959
+ static equals(a: Settlement | PlainMessage<Settlement> | undefined, b: Settlement | PlainMessage<Settlement> | undefined): boolean;
1992
2960
  }
1993
2961
  /**
1994
2962
  * Request to list the organization's invoices.
@@ -2118,9 +3086,260 @@ declare class GetUpcomingInvoiceResponse extends Message<GetUpcomingInvoiceRespo
2118
3086
  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetUpcomingInvoiceResponse;
2119
3087
  static equals(a: GetUpcomingInvoiceResponse | PlainMessage<GetUpcomingInvoiceResponse> | undefined, b: GetUpcomingInvoiceResponse | PlainMessage<GetUpcomingInvoiceResponse> | undefined): boolean;
2120
3088
  }
3089
+ /**
3090
+ * Request to retrieve the organization's billing profile. The organization is
3091
+ * taken from the X-Organization-ID header.
3092
+ *
3093
+ * @generated from message transcodely.v1.GetBillingProfileRequest
3094
+ */
3095
+ declare class GetBillingProfileRequest extends Message<GetBillingProfileRequest> {
3096
+ constructor(data?: PartialMessage<GetBillingProfileRequest>);
3097
+ static readonly runtime: typeof proto3;
3098
+ static readonly typeName = "transcodely.v1.GetBillingProfileRequest";
3099
+ static readonly fields: FieldList;
3100
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetBillingProfileRequest;
3101
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetBillingProfileRequest;
3102
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetBillingProfileRequest;
3103
+ static equals(a: GetBillingProfileRequest | PlainMessage<GetBillingProfileRequest> | undefined, b: GetBillingProfileRequest | PlainMessage<GetBillingProfileRequest> | undefined): boolean;
3104
+ }
3105
+ /**
3106
+ * Response carrying the billing profile.
3107
+ *
3108
+ * @generated from message transcodely.v1.GetBillingProfileResponse
3109
+ */
3110
+ declare class GetBillingProfileResponse extends Message<GetBillingProfileResponse> {
3111
+ /**
3112
+ * The organization's payment standing, read live from the payment provider.
3113
+ *
3114
+ * @generated from field: transcodely.v1.BillingProfile profile = 1;
3115
+ */
3116
+ profile?: BillingProfile;
3117
+ constructor(data?: PartialMessage<GetBillingProfileResponse>);
3118
+ static readonly runtime: typeof proto3;
3119
+ static readonly typeName = "transcodely.v1.GetBillingProfileResponse";
3120
+ static readonly fields: FieldList;
3121
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetBillingProfileResponse;
3122
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetBillingProfileResponse;
3123
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetBillingProfileResponse;
3124
+ static equals(a: GetBillingProfileResponse | PlainMessage<GetBillingProfileResponse> | undefined, b: GetBillingProfileResponse | PlainMessage<GetBillingProfileResponse> | undefined): boolean;
3125
+ }
3126
+ /**
3127
+ * Request to create a billing portal session. The organization is taken from
3128
+ * the X-Organization-ID header, and where the portal returns to is fixed by
3129
+ * the API rather than supplied by the caller.
3130
+ *
3131
+ * @generated from message transcodely.v1.CreateBillingPortalSessionRequest
3132
+ */
3133
+ declare class CreateBillingPortalSessionRequest extends Message<CreateBillingPortalSessionRequest> {
3134
+ constructor(data?: PartialMessage<CreateBillingPortalSessionRequest>);
3135
+ static readonly runtime: typeof proto3;
3136
+ static readonly typeName = "transcodely.v1.CreateBillingPortalSessionRequest";
3137
+ static readonly fields: FieldList;
3138
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateBillingPortalSessionRequest;
3139
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateBillingPortalSessionRequest;
3140
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateBillingPortalSessionRequest;
3141
+ static equals(a: CreateBillingPortalSessionRequest | PlainMessage<CreateBillingPortalSessionRequest> | undefined, b: CreateBillingPortalSessionRequest | PlainMessage<CreateBillingPortalSessionRequest> | undefined): boolean;
3142
+ }
3143
+ /**
3144
+ * Response carrying the portal session to redirect to.
3145
+ *
3146
+ * @generated from message transcodely.v1.CreateBillingPortalSessionResponse
3147
+ */
3148
+ declare class CreateBillingPortalSessionResponse extends Message<CreateBillingPortalSessionResponse> {
3149
+ /**
3150
+ * The session. Redirect the browser to its url.
3151
+ *
3152
+ * @generated from field: transcodely.v1.BillingPortalSession session = 1;
3153
+ */
3154
+ session?: BillingPortalSession;
3155
+ constructor(data?: PartialMessage<CreateBillingPortalSessionResponse>);
3156
+ static readonly runtime: typeof proto3;
3157
+ static readonly typeName = "transcodely.v1.CreateBillingPortalSessionResponse";
3158
+ static readonly fields: FieldList;
3159
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateBillingPortalSessionResponse;
3160
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateBillingPortalSessionResponse;
3161
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateBillingPortalSessionResponse;
3162
+ static equals(a: CreateBillingPortalSessionResponse | PlainMessage<CreateBillingPortalSessionResponse> | undefined, b: CreateBillingPortalSessionResponse | PlainMessage<CreateBillingPortalSessionResponse> | undefined): boolean;
3163
+ }
3164
+ /**
3165
+ * Request to read the organization's monthly budget. The organization is taken
3166
+ * from the X-Organization-ID header.
3167
+ *
3168
+ * @generated from message transcodely.v1.GetBudgetRequest
3169
+ */
3170
+ declare class GetBudgetRequest extends Message<GetBudgetRequest> {
3171
+ constructor(data?: PartialMessage<GetBudgetRequest>);
3172
+ static readonly runtime: typeof proto3;
3173
+ static readonly typeName = "transcodely.v1.GetBudgetRequest";
3174
+ static readonly fields: FieldList;
3175
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetBudgetRequest;
3176
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetBudgetRequest;
3177
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetBudgetRequest;
3178
+ static equals(a: GetBudgetRequest | PlainMessage<GetBudgetRequest> | undefined, b: GetBudgetRequest | PlainMessage<GetBudgetRequest> | undefined): boolean;
3179
+ }
3180
+ /**
3181
+ * Response carrying the budget and the spend it is measured against.
3182
+ *
3183
+ * @generated from message transcodely.v1.GetBudgetResponse
3184
+ */
3185
+ declare class GetBudgetResponse extends Message<GetBudgetResponse> {
3186
+ /**
3187
+ * The budget. Always present: an organization with no budget set gets one
3188
+ * with amount_eur absent and spent_eur still populated, so the current
3189
+ * period's spend can be shown before a budget exists.
3190
+ *
3191
+ * @generated from field: transcodely.v1.Budget budget = 1;
3192
+ */
3193
+ budget?: Budget;
3194
+ constructor(data?: PartialMessage<GetBudgetResponse>);
3195
+ static readonly runtime: typeof proto3;
3196
+ static readonly typeName = "transcodely.v1.GetBudgetResponse";
3197
+ static readonly fields: FieldList;
3198
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetBudgetResponse;
3199
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetBudgetResponse;
3200
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetBudgetResponse;
3201
+ static equals(a: GetBudgetResponse | PlainMessage<GetBudgetResponse> | undefined, b: GetBudgetResponse | PlainMessage<GetBudgetResponse> | undefined): boolean;
3202
+ }
3203
+ /**
3204
+ * Request to set or clear the organization's monthly budget. The organization
3205
+ * is taken from the X-Organization-ID header.
3206
+ *
3207
+ * @generated from message transcodely.v1.UpdateBudgetRequest
3208
+ */
3209
+ declare class UpdateBudgetRequest extends Message<UpdateBudgetRequest> {
3210
+ /**
3211
+ * Monthly budget in EUR. When present, sets the budget (must be > 0). When
3212
+ * ABSENT, the budget is cleared and no further alerts are sent — that is the
3213
+ * only way to turn them off. The upper bound matches the NUMERIC(12,2)
3214
+ * storage column.
3215
+ *
3216
+ * @generated from field: optional double amount_eur = 1;
3217
+ */
3218
+ amountEur?: number;
3219
+ constructor(data?: PartialMessage<UpdateBudgetRequest>);
3220
+ static readonly runtime: typeof proto3;
3221
+ static readonly typeName = "transcodely.v1.UpdateBudgetRequest";
3222
+ static readonly fields: FieldList;
3223
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UpdateBudgetRequest;
3224
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UpdateBudgetRequest;
3225
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UpdateBudgetRequest;
3226
+ static equals(a: UpdateBudgetRequest | PlainMessage<UpdateBudgetRequest> | undefined, b: UpdateBudgetRequest | PlainMessage<UpdateBudgetRequest> | undefined): boolean;
3227
+ }
3228
+ /**
3229
+ * Response from setting or clearing a budget.
3230
+ *
3231
+ * @generated from message transcodely.v1.UpdateBudgetResponse
3232
+ */
3233
+ declare class UpdateBudgetResponse extends Message<UpdateBudgetResponse> {
3234
+ /**
3235
+ * The budget as it now stands, with current-period spend recomputed, so a
3236
+ * caller that just moved the number can render the new bar without a second
3237
+ * request. amount_eur is absent when the budget was cleared.
3238
+ *
3239
+ * @generated from field: transcodely.v1.Budget budget = 1;
3240
+ */
3241
+ budget?: Budget;
3242
+ constructor(data?: PartialMessage<UpdateBudgetResponse>);
3243
+ static readonly runtime: typeof proto3;
3244
+ static readonly typeName = "transcodely.v1.UpdateBudgetResponse";
3245
+ static readonly fields: FieldList;
3246
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UpdateBudgetResponse;
3247
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UpdateBudgetResponse;
3248
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UpdateBudgetResponse;
3249
+ static equals(a: UpdateBudgetResponse | PlainMessage<UpdateBudgetResponse> | undefined, b: UpdateBudgetResponse | PlainMessage<UpdateBudgetResponse> | undefined): boolean;
3250
+ }
3251
+ /**
3252
+ * Request to read the organization's outstanding balance. The organization is
3253
+ * taken from the X-Organization-ID header.
3254
+ *
3255
+ * @generated from message transcodely.v1.GetOutstandingBalanceRequest
3256
+ */
3257
+ declare class GetOutstandingBalanceRequest extends Message<GetOutstandingBalanceRequest> {
3258
+ constructor(data?: PartialMessage<GetOutstandingBalanceRequest>);
3259
+ static readonly runtime: typeof proto3;
3260
+ static readonly typeName = "transcodely.v1.GetOutstandingBalanceRequest";
3261
+ static readonly fields: FieldList;
3262
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetOutstandingBalanceRequest;
3263
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetOutstandingBalanceRequest;
3264
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetOutstandingBalanceRequest;
3265
+ static equals(a: GetOutstandingBalanceRequest | PlainMessage<GetOutstandingBalanceRequest> | undefined, b: GetOutstandingBalanceRequest | PlainMessage<GetOutstandingBalanceRequest> | undefined): boolean;
3266
+ }
3267
+ /**
3268
+ * Response carrying the outstanding balance and its threshold.
3269
+ *
3270
+ * @generated from message transcodely.v1.GetOutstandingBalanceResponse
3271
+ */
3272
+ declare class GetOutstandingBalanceResponse extends Message<GetOutstandingBalanceResponse> {
3273
+ /**
3274
+ * Always present. An organization that owes nothing gets one with
3275
+ * outstanding_cents 0 and its threshold still populated, so a card can show
3276
+ * the headroom before anything has been spent.
3277
+ *
3278
+ * @generated from field: transcodely.v1.OutstandingBalance balance = 1;
3279
+ */
3280
+ balance?: OutstandingBalance;
3281
+ constructor(data?: PartialMessage<GetOutstandingBalanceResponse>);
3282
+ static readonly runtime: typeof proto3;
3283
+ static readonly typeName = "transcodely.v1.GetOutstandingBalanceResponse";
3284
+ static readonly fields: FieldList;
3285
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetOutstandingBalanceResponse;
3286
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetOutstandingBalanceResponse;
3287
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetOutstandingBalanceResponse;
3288
+ static equals(a: GetOutstandingBalanceResponse | PlainMessage<GetOutstandingBalanceResponse> | undefined, b: GetOutstandingBalanceResponse | PlainMessage<GetOutstandingBalanceResponse> | undefined): boolean;
3289
+ }
3290
+ /**
3291
+ * Request to settle the outstanding balance now. The organization is taken from
3292
+ * the X-Organization-ID header.
3293
+ *
3294
+ * It carries no amount ON PURPOSE. The figure is whatever the ledger says at the
3295
+ * instant the settlement runs, and letting a caller name its own number would
3296
+ * let a stale page pay less than is owed and leave the difference looking
3297
+ * settled.
3298
+ *
3299
+ * @generated from message transcodely.v1.SettleOutstandingBalanceRequest
3300
+ */
3301
+ declare class SettleOutstandingBalanceRequest extends Message<SettleOutstandingBalanceRequest> {
3302
+ constructor(data?: PartialMessage<SettleOutstandingBalanceRequest>);
3303
+ static readonly runtime: typeof proto3;
3304
+ static readonly typeName = "transcodely.v1.SettleOutstandingBalanceRequest";
3305
+ static readonly fields: FieldList;
3306
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SettleOutstandingBalanceRequest;
3307
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SettleOutstandingBalanceRequest;
3308
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SettleOutstandingBalanceRequest;
3309
+ static equals(a: SettleOutstandingBalanceRequest | PlainMessage<SettleOutstandingBalanceRequest> | undefined, b: SettleOutstandingBalanceRequest | PlainMessage<SettleOutstandingBalanceRequest> | undefined): boolean;
3310
+ }
3311
+ /**
3312
+ * Response from settling an outstanding balance.
3313
+ *
3314
+ * @generated from message transcodely.v1.SettleOutstandingBalanceResponse
3315
+ */
3316
+ declare class SettleOutstandingBalanceResponse extends Message<SettleOutstandingBalanceResponse> {
3317
+ /**
3318
+ * The statement that was produced.
3319
+ *
3320
+ * @generated from field: transcodely.v1.Settlement settlement = 1;
3321
+ */
3322
+ settlement?: Settlement;
3323
+ /**
3324
+ * The balance as it now stands — zero, with the block lifted and the steps
3325
+ * re-armed — so a caller that just paid can render the new state without a
3326
+ * second request.
3327
+ *
3328
+ * @generated from field: transcodely.v1.OutstandingBalance balance = 2;
3329
+ */
3330
+ balance?: OutstandingBalance;
3331
+ constructor(data?: PartialMessage<SettleOutstandingBalanceResponse>);
3332
+ static readonly runtime: typeof proto3;
3333
+ static readonly typeName = "transcodely.v1.SettleOutstandingBalanceResponse";
3334
+ static readonly fields: FieldList;
3335
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): SettleOutstandingBalanceResponse;
3336
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): SettleOutstandingBalanceResponse;
3337
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): SettleOutstandingBalanceResponse;
3338
+ static equals(a: SettleOutstandingBalanceResponse | PlainMessage<SettleOutstandingBalanceResponse> | undefined, b: SettleOutstandingBalanceResponse | PlainMessage<SettleOutstandingBalanceResponse> | undefined): boolean;
3339
+ }
2121
3340
 
2122
3341
  /**
2123
- * An organization's billing statements — read-only.
3342
+ * An organization's money: statements, budget, and outstanding balance.
2124
3343
  *
2125
3344
  * Unlike every other namespace, billing settles a whole organization rather
2126
3345
  * than a single app, so it is **not** available to API-key callers: a key is
@@ -2139,7 +3358,10 @@ declare class GetUpcomingInvoiceResponse extends Message<GetUpcomingInvoiceRespo
2139
3358
  * ```
2140
3359
  *
2141
3360
  * Invoices are generated automatically when a period closes. There is no API to
2142
- * create, edit, or delete one — a statement records what happened.
3361
+ * create, edit, or delete one — a statement records what happened. The two
3362
+ * writes here do not contradict that: {@link updateBudget} moves the customer's
3363
+ * own alert threshold, and {@link settleOutstandingBalance} closes the period
3364
+ * early rather than editing anything already recorded.
2143
3365
  */
2144
3366
  declare class Billing {
2145
3367
  private readonly transport;
@@ -2164,6 +3386,105 @@ declare class Billing {
2164
3386
  * settles.
2165
3387
  */
2166
3388
  retrieveUpcoming(opts?: CallOptions): Promise<Invoice>;
3389
+ /**
3390
+ * Retrieve the organization's payment standing: whether the payment provider
3391
+ * holds a chargeable method, and what it will say about it for display.
3392
+ *
3393
+ * Read-only and side-effect free — it never creates provider resources. An
3394
+ * organization that has never touched billing reports
3395
+ * `PaymentMethodState.NONE` and no payment methods.
3396
+ *
3397
+ * `paymentMethodState` is the only reliable signal. A method's `brand` and
3398
+ * `last4` are frequently absent even for a working card, because the provider
3399
+ * does not always expose card metadata; render such a method as "Card on
3400
+ * file" rather than treating the missing digits as an error.
3401
+ */
3402
+ retrieveProfile(opts?: CallOptions): Promise<BillingProfile>;
3403
+ /**
3404
+ * Create a short-lived session for the payment provider's hosted billing
3405
+ * portal and return it. The portal is where a payment method is added or
3406
+ * replaced and where receipts live — card details never touch this SDK.
3407
+ *
3408
+ * The first call for an organization also links it to the payment provider,
3409
+ * so the returned portal is already attached to this organization's billing
3410
+ * account. Safe to call repeatedly.
3411
+ *
3412
+ * The session is single-use and expires; request a fresh one per visit rather
3413
+ * than storing the URL.
3414
+ */
3415
+ createPortalSession(opts?: CallOptions): Promise<BillingPortalSession>;
3416
+ /**
3417
+ * Retrieve the organization's monthly budget together with the spend it is
3418
+ * measured against — everything a budget card needs, in one call.
3419
+ *
3420
+ * A budget only ever **notifies**: crossing 100% sends an email and changes
3421
+ * nothing else. The hard cap is the per-app spend limit
3422
+ * (`client.apps.setSpendLimit`), which rejects new jobs at 100%.
3423
+ *
3424
+ * Always returns a budget. An organization with none set gets one with
3425
+ * `amountEur` and `usedPercent` absent and `spentEur` still populated, so the
3426
+ * current period's spend renders before a budget exists.
3427
+ */
3428
+ retrieveBudget(opts?: CallOptions): Promise<Budget>;
3429
+ /**
3430
+ * Set or clear the organization's monthly budget. Provide `amountEur` (must
3431
+ * be > 0) to set it; omit it to clear the budget and stop the alert emails.
3432
+ * {@link setBudget} and {@link clearBudget} are the ergonomic shorthands.
3433
+ *
3434
+ * The returned budget has current-period spend recomputed, so a caller that
3435
+ * just moved the number can re-render without a second request.
3436
+ */
3437
+ updateBudget(req?: PartialMessage<UpdateBudgetRequest>, opts?: CallOptions): Promise<Budget>;
3438
+ /**
3439
+ * Set the organization's monthly budget in EUR (must be > 0).
3440
+ *
3441
+ * Alert emails fire once per billing period at each of `budget.alertSteps`
3442
+ * (50%, 80%, 100% today). Raising or lowering the amount mid-period never
3443
+ * re-arms a step already listed in `budget.notifiedSteps`.
3444
+ */
3445
+ setBudget(amountEur: number, opts?: CallOptions): Promise<Budget>;
3446
+ /**
3447
+ * Clear the organization's monthly budget, turning the alert emails off —
3448
+ * omitting the optional amount is the only way to switch them off.
3449
+ */
3450
+ clearBudget(opts?: CallOptions): Promise<Budget>;
3451
+ /**
3452
+ * Retrieve the organization's outstanding balance — usage accrued but not yet
3453
+ * captured onto a statement — together with the threshold it is measured
3454
+ * against.
3455
+ *
3456
+ * Distinct from {@link retrieveUpcoming}, which reports what the **current
3457
+ * period** has accrued: this is what is **unsettled**, so it also carries
3458
+ * anything an earlier period left uncaptured, and it is the number that
3459
+ * decides whether new jobs are admitted.
3460
+ *
3461
+ * Nothing is restricted as it climbs — reminder emails go out at 80%, 100%,
3462
+ * 125%, 150% and 175% and service continues past the threshold on purpose.
3463
+ * Only at `hardStopCents` (twice the threshold) are new jobs refused, with
3464
+ * error code `outstanding_balance_exceeded`; queued and running work still
3465
+ * finishes and playback keeps serving. Branch on `blocked`, which reads the
3466
+ * same numbers the admission gate reads.
3467
+ */
3468
+ retrieveOutstandingBalance(opts?: CallOptions): Promise<OutstandingBalance>;
3469
+ /**
3470
+ * Pay the outstanding balance now, without waiting for the period to end.
3471
+ *
3472
+ * Closes the current period at this instant and produces a real statement —
3473
+ * an ordinary invoice, readable through {@link retrieve} — which the payment
3474
+ * provider then charges. On success the balance is zero and any admission
3475
+ * block is lifted immediately; the response carries the refreshed balance too,
3476
+ * so no follow-up read is needed.
3477
+ *
3478
+ * Takes no amount on purpose: the figure is whatever the ledger says at the
3479
+ * instant it runs, so a stale page cannot underpay and leave the difference
3480
+ * looking settled.
3481
+ *
3482
+ * Throws {@link PreconditionError} with code `settlement_unavailable` when the
3483
+ * deployment has mid-cycle settlement switched off — check
3484
+ * `balance.settlementAvailable` before offering a "pay now" action — and with
3485
+ * `nothing_outstanding` when there is nothing to pay.
3486
+ */
3487
+ settleOutstandingBalance(opts?: CallOptions): Promise<SettleOutstandingBalanceResponse>;
2167
3488
  }
2168
3489
 
2169
3490
  /**
@@ -4282,6 +5603,11 @@ declare class StreamingConfig extends Message<StreamingConfig> {
4282
5603
  * Example: "video_{resolution}" produces "video_1080p.m3u8"
4283
5604
  * Default: "{codec}_{resolution}" produces "h264_1080p.m3u8"
4284
5605
  *
5606
+ * The rendered value becomes a filename and is also carried through the
5607
+ * packager's stream descriptors, so the accepted charset is deliberately
5608
+ * narrow: letters, digits, `_`, `-`, `.` and the `{}` that delimit template
5609
+ * variables. No path separators, no `..`, and none of `, : ; ' " \`.
5610
+ *
4285
5611
  * @generated from field: optional string hls_variant_pattern = 12;
4286
5612
  */
4287
5613
  hlsVariantPattern?: string;
@@ -4373,6 +5699,12 @@ declare class BurnInStyle extends Message<BurnInStyle> {
4373
5699
  /**
4374
5700
  * Font family name. Default: "Arial".
4375
5701
  *
5702
+ * Letters, digits, spaces, `_` and `-` only. The value is embedded in the
5703
+ * renderer's style string, where a quote, comma or semicolon would terminate
5704
+ * it and let whatever follows parse as further styling arguments.
5705
+ *
5706
+ * Example: "DejaVu Sans"
5707
+ *
4376
5708
  * @generated from field: optional string font_family = 1;
4377
5709
  */
4378
5710
  fontFamily?: string;
@@ -7053,14 +8385,15 @@ declare enum JobCostLineType {
7053
8385
  */
7054
8386
  OUTPUT = 1,
7055
8387
  /**
7056
- * The per-job minimum charge top-up — what the floor added on top of the
7057
- * renditions. Derived from Job.minimum_charge_eur, never larger than it.
8388
+ * HISTORICAL: the per-job minimum-charge top-up — what the floor added on
8389
+ * top of the renditions. Derived from Job.minimum_charge_eur, never larger
8390
+ * than it. Appears only on jobs created before the processing-fee model.
7058
8391
  *
7059
8392
  * @generated from enum value: JOB_COST_LINE_TYPE_MINIMUM_CHARGE = 2;
7060
8393
  */
7061
8394
  MINIMUM_CHARGE = 2,
7062
8395
  /**
7063
- * One additive fee (see JobFee).
8396
+ * One fee (see JobFee) — the processing fee, or an additive metered one.
7064
8397
  *
7065
8398
  * @generated from enum value: JOB_COST_LINE_TYPE_FEE = 3;
7066
8399
  */
@@ -7244,6 +8577,11 @@ declare class HLSConfig extends Message<HLSConfig> {
7244
8577
  * Variables: {codec}, {resolution}, {bitrate}, {index}
7245
8578
  * Default: "{codec}_{resolution}"
7246
8579
  *
8580
+ * The rendered value becomes a filename and is also carried through the
8581
+ * packager's stream descriptors, so the accepted charset is deliberately
8582
+ * narrow: letters, digits, `_`, `-`, `.` and the `{}` that delimit template
8583
+ * variables. No path separators, no `..`, and none of `, : ; ' " \`.
8584
+ *
7247
8585
  * @generated from field: optional string variant_pattern = 4;
7248
8586
  */
7249
8587
  variantPattern?: string;
@@ -8180,17 +9518,26 @@ declare class Job extends Message<Job> {
8180
9518
  *
8181
9519
  * Only completed outputs are billable, and what happened to the job as a
8182
9520
  * whole decides whether they are billed at all:
8183
- * - completed: the sum of its outputs' actual costs, raised to
8184
- * minimum_charge_eur if that minimum is in effect.
8185
- * - canceled: the sum of the outputs that had already completed and been
8186
- * delivered when the cancel landed. Identical whether the job was
8187
- * canceled through CancelJob or observed as canceled by the worker. The
8188
- * minimum charge never applies.
8189
- * - failed: zero. A job that ends failed is not billed, even if some of
8190
- * its outputs completed before the failure.
8191
- * - partial: the sum of the outputs that completed, un-floored.
8192
- * Additive fees (see fees) are included on top, and are charged only on jobs
8193
- * that ended completed or partial.
9521
+ * - completed: the sum of its outputs' actual costs, plus the fees below.
9522
+ * - partial: the sum of the outputs that completed, plus the fees below.
9523
+ * - canceled: the processing fee, if an encoder had already begun work,
9524
+ * plus the outputs that had already completed and been delivered when
9525
+ * the cancel landed. Canceling a job that was still queued bills
9526
+ * nothing. Identical whether the job was canceled through CancelJob or
9527
+ * observed as canceled by the worker.
9528
+ * - failed: zero. A job that ends failed is not billed at all — not for
9529
+ * outputs that completed before the failure, and not for the machine it
9530
+ * ran on.
9531
+ *
9532
+ * Fees (see fees) are included on top of the output costs. Which ones are
9533
+ * charged depends on the fee: the flat processing fee is charged on every
9534
+ * job an encoder began, including a canceled one, while a metered add-on
9535
+ * such as AI captions is charged only when a completed or partial job
9536
+ * actually delivered its artifact.
9537
+ *
9538
+ * Jobs created before the processing-fee model (August 2026) are billed
9539
+ * max(sum of output costs, minimum_charge_eur) + fees when completed, and
9540
+ * their canceled/partial totals are un-floored.
8194
9541
  *
8195
9542
  * @generated from field: optional double total_actual_cost = 9;
8196
9543
  */
@@ -8329,44 +9676,62 @@ declare class Job extends Message<Job> {
8329
9676
  */
8330
9677
  object: string;
8331
9678
  /**
8332
- * Minimum charge for this job in EUR, locked at creation and never changed
8333
- * retroactively. It is derived from the job's assigned billing class — a size
8334
- * band (small/medium/large/extra-large) reflecting the compute the job is
8335
- * guaranteed to cover — or, in legacy configurations, from the recommended
8336
- * machine size; either way it is a stable quote, not re-derived from the
8337
- * machine the job ultimately runs on. When the minimum charge is in effect,
8338
- * the billed total for a successfully completed job is
8339
- * max(sum of output costs, minimum_charge_eur) — see minimum_charge_applied
8340
- * for whether it determined this job's total. The minimum applies only to
8341
- * jobs that reach completed: a failed job is billed zero, and a canceled or
8342
- * partial job is billed the un-floored sum of the outputs it did complete.
8343
- * Absent when no minimum was computed for this job.
8344
- *
8345
- * @generated from field: optional double minimum_charge_eur = 30;
9679
+ * HISTORICAL — jobs created before the processing-fee model (August 2026)
9680
+ * only. Always absent on jobs created since; use fees (fee_type
9681
+ * "processing") instead.
9682
+ *
9683
+ * The per-job minimum charge, locked at creation and never changed
9684
+ * retroactively. It was derived from the job's assigned billing class — a
9685
+ * size band (small/medium/large/extra-large) reflecting the compute the job
9686
+ * is guaranteed to cover — or, in earlier configurations, from the
9687
+ * recommended machine size; either way a stable quote, not re-derived from
9688
+ * the machine the job ultimately ran on. When in effect, the billed total for
9689
+ * a successfully completed job was max(sum of output costs,
9690
+ * minimum_charge_eur) — see minimum_charge_applied for whether it determined
9691
+ * this job's total. It applied only to jobs that reached completed: a failed
9692
+ * job was billed zero, and a canceled or partial job the un-floored sum of
9693
+ * the outputs it did complete.
9694
+ *
9695
+ * Jobs quoted under this model keep settling under it, so the field is
9696
+ * populated forever on those jobs and is never removed from the API.
9697
+ *
9698
+ * @generated from field: optional double minimum_charge_eur = 30 [deprecated = true];
9699
+ * @deprecated
8346
9700
  */
8347
9701
  minimumChargeEur?: number;
8348
9702
  /**
9703
+ * HISTORICAL — jobs created before the processing-fee model (August 2026)
9704
+ * only. Always false on jobs created since.
9705
+ *
8349
9706
  * Whether minimum_charge_eur determined the job's most recently computed
8350
9707
  * total — true when the sum of output costs came in below the minimum and
8351
9708
  * the total was raised to it (estimated total after probe; actual total
8352
9709
  * after successful completion). When true, total_estimated_cost or
8353
9710
  * total_actual_cost exceeds the sum of the per-output cost fields, which
8354
- * are never raised themselves. The minimum is a stable quote locked at
8355
- * creation (from the job's billing class, or the recommended machine size in
8356
- * legacy configurations); it is never re-derived from the machine the job
8357
- * ultimately runs on.
9711
+ * were never raised themselves.
8358
9712
  *
8359
- * @generated from field: bool minimum_charge_applied = 31;
9713
+ * @generated from field: bool minimum_charge_applied = 31 [deprecated = true];
9714
+ * @deprecated
8360
9715
  */
8361
9716
  minimumChargeApplied: boolean;
8362
9717
  /**
8363
- * Additive fee line items (v1: AI caption generation). Fees are charged ON
8364
- * TOP of the encode bill and sit OUTSIDE the minimum-charge floor:
8365
- * billed total = max(sum of output costs, minimum_charge_eur) + sum of fees.
9718
+ * Fee line items on the job. Two kinds appear here:
9719
+ *
9720
+ * "processing" — the flat per-job processing fee, charged once for the
9721
+ * encoder the job ran on, scaled by the job's size class. Present on every
9722
+ * job an encoder began processing. Quantity is always 1.
9723
+ * "captions" — AI caption generation, metered per source minute.
9724
+ *
9725
+ * Fees are charged ON TOP of the encode bill:
9726
+ * billed total = sum of output costs + sum of fees. (On historical jobs that
9727
+ * carry a minimum_charge_eur, the output sum is raised to that floor first;
9728
+ * fees have always sat outside the clamp.)
9729
+ *
8366
9730
  * total_estimated_cost / total_actual_cost INCLUDE fees; this list exposes
8367
- * the decomposition. Only live fees are listed — a fee that was voided
8368
- * (job failed/canceled, or the artifact was never produced) is dropped
8369
- * from the list and never charged. Server-set; read-only.
9731
+ * the decomposition. Only live fees are listed — a fee that was voided is
9732
+ * dropped from the list and never charged. A job that failed, or that was
9733
+ * canceled while still queued, therefore reports no fees at all.
9734
+ * Server-set; read-only.
8370
9735
  *
8371
9736
  * @generated from field: repeated transcodely.v1.JobFee fees = 33;
8372
9737
  */
@@ -8405,10 +9770,10 @@ declare class Job extends Message<Job> {
8405
9770
  videoId?: string;
8406
9771
  /**
8407
9772
  * Itemized decomposition of total_estimated_cost and total_actual_cost:
8408
- * one line per output, one per fee, and the minimum-charge top-up when the
8409
- * per-job minimum raised a total. The lines always sum to the totals, so
8410
- * this is the field to render a cost from — the per-output cost fields
8411
- * alone do not add up to the bill whenever the minimum charge is in effect.
9773
+ * one line per output, one per fee, and — on jobs old enough to have a
9774
+ * minimum charge — the top-up it added. The lines always sum to the totals,
9775
+ * so this is the field to render a cost from: the per-output cost fields
9776
+ * alone do not add up to the bill, because fees are charged on top of them.
8412
9777
  * Always present. Server-set; read-only.
8413
9778
  *
8414
9779
  * @generated from field: transcodely.v1.JobCostBreakdown cost_breakdown = 38;
@@ -8424,53 +9789,75 @@ declare class Job extends Message<Job> {
8424
9789
  static equals(a: Job | PlainMessage<Job> | undefined, b: Job | PlainMessage<Job> | undefined): boolean;
8425
9790
  }
8426
9791
  /**
8427
- * A single additive fee line item on a job (see Job.fees). Fees are metered
8428
- * charges for services performed alongside the encode (v1: AI caption
8429
- * generation at EUR 0.05 per source minute). A fee is charged once per job,
8430
- * estimated when the input probe supplies the source duration, and only
8431
- * billed when the completion report shows the fee's artifact was actually
8432
- * produced (no artifact, no fee). Fees are never absorbed by the per-job
8433
- * minimum charge: billed total = max(sum of output costs, minimum_charge_eur)
8434
- * + sum of fees. Read-only.
9792
+ * A single fee line item on a job (see Job.fees), charged once per job per
9793
+ * fee type, on top of the encode cost. Two families share this message, and
9794
+ * they differ in what decides whether they are billed:
9795
+ *
9796
+ * METERED ADD-ONS (v1: "captions", AI caption generation at EUR 0.05 per
9797
+ * source minute) pay for a service performed alongside the encode. They are
9798
+ * metered when the input probe supplies the source duration, and billed only
9799
+ * when the completion report shows the artifact was actually produced — no
9800
+ * artifact, no fee. A failed or canceled job never pays one.
9801
+ *
9802
+ * The PROCESSING FEE ("processing") is the flat charge for starting a
9803
+ * dedicated encoder, scaled by the job's size class. It is complete from
9804
+ * creation (quantity 1) and billed on the job's OUTCOME rather than on any
9805
+ * artifact: on completed and partial jobs, and on a job canceled after an
9806
+ * encoder had begun work. A failed job, and a job canceled while still
9807
+ * queued, pay nothing.
9808
+ *
9809
+ * Either way the totals are the sum of their parts:
9810
+ * billed total = sum of output costs + sum of fees
9811
+ *
9812
+ * Jobs created before the processing-fee model (August 2026) instead clamp the
9813
+ * output half: max(sum of output costs, minimum_charge_eur) + sum of fees.
9814
+ * Fees have never been absorbed by that clamp. Read-only.
8435
9815
  *
8436
9816
  * @generated from message transcodely.v1.JobFee
8437
9817
  */
8438
9818
  declare class JobFee extends Message<JobFee> {
8439
9819
  /**
8440
- * Fee discriminator — the fee pricing rule's key. v1: "captions".
9820
+ * Fee discriminator:
9821
+ * "processing" — the flat per-job processing fee (see Job.fees).
9822
+ * "captions" — AI caption generation.
8441
9823
  *
8442
9824
  * @generated from field: string fee_type = 1;
8443
9825
  */
8444
9826
  feeType: string;
8445
9827
  /**
8446
9828
  * Human-readable description of what the fee is for
8447
- * (e.g., "AI Caption Generation").
9829
+ * (e.g., "Processing fee", "AI Caption Generation").
8448
9830
  *
8449
9831
  * @generated from field: string description = 2;
8450
9832
  */
8451
9833
  description: string;
8452
9834
  /**
8453
- * Metering unit. v1: "source_minute" (input duration in minutes).
9835
+ * Metering unit:
9836
+ * "job" — a flat per-job charge; quantity is always 1.
9837
+ * "source_minute" — input duration in minutes.
8454
9838
  *
8455
9839
  * @generated from field: string unit = 3;
8456
9840
  */
8457
9841
  unit: string;
8458
9842
  /**
8459
9843
  * Metered quantity in `unit`s — the exact fraction, e.g. a 90-second
8460
- * source is 1.5 source minutes. 0 until the input probe completes.
9844
+ * source is 1.5 source minutes. For a "source_minute" fee this is 0 until
9845
+ * the input probe completes; a "job" fee is always 1, from creation.
8461
9846
  *
8462
9847
  * @generated from field: double quantity = 4;
8463
9848
  */
8464
9849
  quantity: number;
8465
9850
  /**
8466
- * Price per unit in `currency`, locked at job creation from the
8467
- * then-effective fee pricing rule (e.g., 0.05).
9851
+ * Price per unit in `currency`, locked at job creation (e.g., 0.05). For the
9852
+ * processing fee this is the job's size class's rate at the moment the job
9853
+ * was created; later rate changes never re-price an existing job.
8468
9854
  *
8469
9855
  * @generated from field: double rate = 5;
8470
9856
  */
8471
9857
  rate: number;
8472
9858
  /**
8473
- * quantity x rate, in `currency`. 0 until the input probe completes.
9859
+ * quantity x rate, in `currency`. For a "source_minute" fee this is 0 until
9860
+ * the input probe completes; for a "job" fee it equals rate from creation.
8474
9861
  *
8475
9862
  * @generated from field: double amount = 6;
8476
9863
  */
@@ -8561,15 +9948,24 @@ declare class JobCostLine extends Message<JobCostLine> {
8561
9948
  *
8562
9949
  * The money model it explains:
8563
9950
  *
9951
+ * billed total = sum of output costs + sum of fees
9952
+ *
9953
+ * The fees include the flat per-job processing fee, which appears here as an
9954
+ * ordinary `fee` line described "Processing fee" — so on a small job, the line
9955
+ * that explains most of the bill is the machine rather than the encode.
9956
+ *
9957
+ * Jobs created before the processing-fee model (August 2026) are explained
9958
+ * against the model they were billed under, in which the output half was
9959
+ * clamped:
9960
+ *
8564
9961
  * billed total = max(sum of output costs, minimum_charge_eur) + sum of fees
8565
9962
  *
8566
- * The minimum charge is a job-level floor, so when it binds there is money in
8567
- * the total that no single output accounts for. That difference appears here as
9963
+ * That minimum charge was a job-level floor, so when it bound there was money
9964
+ * in the total that no single output accounted for. The difference appears as
8568
9965
  * its own `minimum_charge` line — the number that explains why a job with
8569
- * EUR 0.0125 of renditions bills EUR 0.20125. The line is present when the
8570
- * floor raised either total; a side it did not raise reads 0. On a job whose
8571
- * usage cleared the floor on both sides there is nothing to explain and no
8572
- * line.
9966
+ * EUR 0.0125 of renditions billed EUR 0.20125. It is present when the floor
9967
+ * raised either total; a side it did not raise reads 0. A job with no floor —
9968
+ * which is every job created since — simply never has the line.
8573
9969
  *
8574
9970
  * Guarantees, unconditionally:
8575
9971
  * - the lines' estimated_amount_eur sum to total_estimated_cost
@@ -8580,10 +9976,12 @@ declare class JobCostLine extends Message<JobCostLine> {
8580
9976
  * guarantee is absolute rather than usually-true.
8581
9977
  *
8582
9978
  * Outcome decides what the actual side contains, matching what is billed: a
8583
- * completed job's totals are floored, a canceled or partial job's are the
8584
- * un-floored sum of the outputs it delivered, and a failed job bills nothing at
8585
- * all — every line settles at 0, and so does total_actual_cost, from the moment
8586
- * it fails.
9979
+ * completed or partial job is charged for the outputs it delivered plus its
9980
+ * fees; a canceled job for the outputs it had already delivered plus the
9981
+ * processing fee, if an encoder had begun work (a job canceled while still
9982
+ * queued has neither, and settles at 0); and a failed job bills nothing at all
9983
+ * — every line settles at 0, and so does total_actual_cost, from the moment it
9984
+ * fails.
8587
9985
  *
8588
9986
  * Fee lines cover every fee quoted on the job, INCLUDING fees that were later
8589
9987
  * voided (those settle at 0). Job.fees deliberately omits voided fees, because
@@ -8634,8 +10032,9 @@ declare class JobCostBreakdown extends Message<JobCostBreakdown> {
8634
10032
  * duration. Applies to the whole job: every output is encoded from the
8635
10033
  * clipped range, and thumbnails/sprites are computed within it. Cuts are
8636
10034
  * frame-accurate (outputs are always re-encoded). Billing keys off the
8637
- * produced output duration, so clipping reduces cost accordingly (the
8638
- * per-job minimum charge, when in effect, still applies).
10035
+ * produced output duration, so clipping reduces the encode cost accordingly;
10036
+ * the flat per-job processing fee is unaffected, since the encoder still had
10037
+ * to be started. On a short clip the fee is therefore most of the bill.
8639
10038
  *
8640
10039
  * Bounds are stored with 0.1ms (4-decimal) precision; finer-grained values
8641
10040
  * are rounded. The minimum clip length is 1ms. A clip of {0, 0} is treated
@@ -9378,6 +10777,18 @@ declare class Video extends Message<Video> {
9378
10777
  */
9379
10778
  outputSizeBytes: bigint;
9380
10779
  /**
10780
+ * Total billed by the transcode job that produced this video, in EUR.
10781
+ *
10782
+ * Despite the name this is the job's WHOLE total, not encoding alone: a
10783
+ * job's total already includes every fee billed on it, so for a video
10784
+ * captioned inline (the auto_captions upload flag) the captions fee is part
10785
+ * of this number, as is the flat per-job processing fee. Absent until the
10786
+ * job settles.
10787
+ *
10788
+ * Prefer total_cost. This field covers one job, so it misses the cost of
10789
+ * later jobs run against the video, and adding captions_cost to it
10790
+ * double-counts inline captions.
10791
+ *
9381
10792
  * @generated from field: optional double encoding_cost = 31;
9382
10793
  */
9383
10794
  encodingCost?: number;
@@ -9389,11 +10800,35 @@ declare class Video extends Message<Video> {
9389
10800
  * confirmed only when a caption artifact is actually delivered, so voided
9390
10801
  * and still-estimated fees are never counted. This is a per-feature
9391
10802
  * breakdown of already-billed job totals, not an extra charge on top of
9392
- * them.
10803
+ * them: it is contained in total_cost, never added to it.
9393
10804
  *
9394
10805
  * @generated from field: optional double captions_cost = 50;
9395
10806
  */
9396
10807
  captionsCost?: number;
10808
+ /**
10809
+ * Everything this video has cost, in EUR: the sum of the settled totals of
10810
+ * every job billed for it — the transcode that produced it plus any later
10811
+ * job that took it as input (retro captions, for example).
10812
+ *
10813
+ * This is the authoritative per-video figure and the one to display. It is
10814
+ * built from the same job totals the billing ledger is written from, so it
10815
+ * reconciles with the invoice; captions_cost is a breakdown inside it.
10816
+ * Absent while no linked job has settled yet.
10817
+ *
10818
+ * @generated from field: optional double total_cost = 52;
10819
+ */
10820
+ totalCost?: number;
10821
+ /**
10822
+ * Why this video failed, in one sentence a customer can act on. Present only
10823
+ * when status is "error"; absent for every other status.
10824
+ *
10825
+ * This is curated copy, never raw failure text — it will not contain
10826
+ * encoder output, storage-provider responses, or internal identifiers. When
10827
+ * the video has a linked job, that job's error_message says the same thing.
10828
+ *
10829
+ * @generated from field: optional string error_message = 51;
10830
+ */
10831
+ errorMessage?: string;
9397
10832
  /**
9398
10833
  * Timestamps.
9399
10834
  *
@@ -11722,6 +13157,101 @@ declare class Organization extends Message<Organization> {
11722
13157
  * @generated from field: google.protobuf.Timestamp updated_at = 8;
11723
13158
  */
11724
13159
  updatedAt?: Timestamp;
13160
+ /**
13161
+ * Plan assigned to the organization, applying to every app under it that has
13162
+ * no plan of its own. Absent when the org carries none.
13163
+ *
13164
+ * @generated from field: optional string plan_id = 9;
13165
+ */
13166
+ planId?: string;
13167
+ /**
13168
+ * Display name of the org's plan. Absent exactly when plan_id is.
13169
+ *
13170
+ * @generated from field: optional string plan_name = 10;
13171
+ */
13172
+ planName?: string;
13173
+ /**
13174
+ * Whether this org must have a payment method on file. ENFORCED: with no
13175
+ * usable payment method a required org derives a restricting
13176
+ * billing_standing, and its jobs resolve to the free tier's limits rather
13177
+ * than to its plan.
13178
+ *
13179
+ * Organizations created before the enforcement release carry false and are
13180
+ * the grandfathered population — unaffected until an operator turns it on.
13181
+ * A comped org (billing_exempt) is off the hook whatever this says.
13182
+ *
13183
+ * @generated from field: bool payment_method_required = 11;
13184
+ */
13185
+ paymentMethodRequired: boolean;
13186
+ /**
13187
+ * When the org was explicitly exempted from the payment-method requirement —
13188
+ * stamped when payment_method_required is turned off, cleared when it is
13189
+ * turned on. Absent for an org that has never been exempted, which today is
13190
+ * every org. Reflects the CURRENT exemption only; the change history lives in
13191
+ * the admin audit log.
13192
+ *
13193
+ * @generated from field: optional google.protobuf.Timestamp grandfathered_at = 12;
13194
+ */
13195
+ grandfatheredAt?: Timestamp;
13196
+ /**
13197
+ * Derived payment health. Always BILLING_STANDING_ACTIVE when
13198
+ * payment_method_required is false, whatever the facts below say.
13199
+ *
13200
+ * Filled on admin reads, and on OrganizationService.Get for a member of the
13201
+ * org (JWT/portal actors). Absent on the API-key read path, which gets a
13202
+ * refusal code on the create instead, and on List.
13203
+ *
13204
+ * @generated from field: transcodely.v1.BillingStanding billing_standing = 13;
13205
+ */
13206
+ billingStanding: BillingStanding;
13207
+ /**
13208
+ * When the current grace window closes, present only while billing_standing
13209
+ * is BILLING_STANDING_GRACE. Filled wherever billing_standing is.
13210
+ *
13211
+ * @generated from field: optional google.protobuf.Timestamp grace_until = 14;
13212
+ */
13213
+ graceUntil?: Timestamp;
13214
+ /**
13215
+ * Stable token explaining billing_standing; same vocabulary as
13216
+ * BillingProfile.standing_reason. ADMIN reads only — tokens like
13217
+ * card_expired are payment-method detail, which a plain member never sees.
13218
+ *
13219
+ * @generated from field: string standing_reason = 15;
13220
+ */
13221
+ standingReason: string;
13222
+ /**
13223
+ * Whether a dunning episode is open right now — the payment provider has an
13224
+ * unpaid invoice for this org and is retrying it. TRUE together with
13225
+ * payment_method_required = false is the case that needs a human: the org is
13226
+ * exempt, so nothing will limit it, and the unpaid invoice will otherwise sit
13227
+ * there indefinitely.
13228
+ *
13229
+ * @generated from field: bool in_dunning = 16;
13230
+ */
13231
+ inDunning: boolean;
13232
+ /**
13233
+ * How many dunning episodes have run without a clean cycle in between. At 2 a
13234
+ * new episode gets no grace window at all. Reset only by an invoice that pays
13235
+ * while no episode is open — recovering INSIDE dunning does not earn the
13236
+ * window back.
13237
+ *
13238
+ * @generated from field: int32 consecutive_dunned_cycles = 17;
13239
+ */
13240
+ consecutiveDunnedCycles: number;
13241
+ /**
13242
+ * How automation may treat this organization — see BillingTreatment.
13243
+ *
13244
+ * ADMIN reads only, like standing_reason above: it is a statement about a
13245
+ * commercial relationship, and a customer does not learn from an API field
13246
+ * that we have decided never to interrupt them.
13247
+ *
13248
+ * Orthogonal to billing_standing. A trusted org can report
13249
+ * BILLING_STANDING_DELINQUENT and still be untouched by every automated
13250
+ * path — the founder gets an email instead.
13251
+ *
13252
+ * @generated from field: transcodely.v1.BillingTreatment billing_treatment = 18;
13253
+ */
13254
+ billingTreatment: BillingTreatment;
11725
13255
  constructor(data?: PartialMessage<Organization>);
11726
13256
  static readonly runtime: typeof proto3;
11727
13257
  static readonly typeName = "transcodely.v1.Organization";
@@ -13009,9 +14539,10 @@ declare enum UserStatus {
13009
14539
  DELETED = 3
13010
14540
  }
13011
14541
  /**
13012
- * User approval status. Until we have a payment gate, every new sign-up is
13013
- * held in PENDING and must be approved by a staff member before they can use
13014
- * the platform.
14542
+ * Dashboard access review status. New sign-ups are approved automatically
14543
+ * unless the platform is operating in manual-review mode, in which case they
14544
+ * stay PENDING until a staff member approves them. Staff can reject a user at
14545
+ * any time to revoke dashboard access.
13015
14546
  *
13016
14547
  * @generated from enum transcodely.v1.UserApprovalStatus
13017
14548
  */
@@ -13101,8 +14632,7 @@ declare class User extends Message<User> {
13101
14632
  */
13102
14633
  updatedAt?: Timestamp;
13103
14634
  /**
13104
- * Whether this user has been approved by a staff member.
13105
- * New sign-ups default to PENDING.
14635
+ * Whether this user may use the dashboard.
13106
14636
  *
13107
14637
  * @generated from field: transcodely.v1.UserApprovalStatus approval_status = 11;
13108
14638
  */
@@ -13114,7 +14644,8 @@ declare class User extends Message<User> {
13114
14644
  */
13115
14645
  approvalDecidedAt?: Timestamp;
13116
14646
  /**
13117
- * The staff member's user_id who decided approval.
14647
+ * The staff member's user_id who decided approval. Absent when the user was
14648
+ * approved automatically rather than by a person.
13118
14649
  *
13119
14650
  * @generated from field: optional string approval_decided_by_user_id = 13;
13120
14651
  */
@@ -13576,7 +15107,7 @@ declare class Transcodely {
13576
15107
  }
13577
15108
 
13578
15109
  /** SDK version. Bumped by release-please from package.json on each tag. */
13579
- declare const SDK_VERSION = "0.3.5";
15110
+ declare const SDK_VERSION = "0.3.7";
13580
15111
  /**
13581
15112
  * API version this SDK release is pinned to. Sent on every request as
13582
15113
  * `Transcodely-Version`. Customers can override per-client via the
@@ -13586,4 +15117,4 @@ declare const API_VERSION = "2026-05-03";
13586
15117
  /** Default base URL for the production Transcodely API. */
13587
15118
  declare const DEFAULT_BASE_URL = "https://api.transcodely.com";
13588
15119
 
13589
- export { APIConnectionError, APIError, Event as APIEvent, APIKey, API_VERSION, AV1Options, AbortMultipartUploadRequest, App, AppStatus, ArchiveAppRequest, ArchiveOriginRequest, ArchivePresetRequest, AudioCodec, AudioSettings, AudioStreamInfo, AudioTrackConfig, AuthenticationError, AutoABRConfig, AutoProfileDefaults, BYOKConfig, BitrateMode, BurnInStyle, type CallOptions, CancelJobRequest, CancelJobResponse, ChapterPoint, ChapterResult, CheckSlugRequest, CheckSlugResponse, ClipConfig, CompleteMultipartUploadRequest, CompleteMultipartUploadResponse, CompleteUploadRequest, CompleteUploadResponse, CompletedPart, ConfirmJobRequest, ConfirmJobResponse, ConflictError, Container, ContentAnalysis, ContentAwareConfig, ContentAwareMode, ContentType, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateAppRequest, CreateAppResponse, CreateFromUrlRequest, CreateFromUrlResponse, CreateJobRequest, CreateJobResponse, CreateMultipartUploadRequest, CreateMultipartUploadResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOriginRequest, CreateOriginResponse, CreatePresetRequest, CreatePresetResponse, CreateUploadRequest, CreateUploadResponse, CreateWebhookEndpointRequest, CreateWebhookEndpointResponse, DASHConfig, DEFAULT_BASE_URL, DEFAULT_TOLERANCE_SECONDS, DRMConfig, DRMSystem, DailyUsage, DeleteVideoRequest, DeleteWebhookEndpointRequest, DeleteWebhookEndpointResponse, DeliveryFormat, DuplicatePresetRequest, DuplicatePresetResponse, EVENT_ID_HEADER, EnableHostingRequest, EnableHostingResponse, EncryptionScheme, EndpointHealthSummary, ErrorDetails, type EventBase, ExecutionTiming, type FieldViolation, GOPAlignmentMode, GcsCredentials, GcsOriginConfig, GetAPIKeyRequest, GetAPIKeyResponse, GetAppRequest, GetAppResponse, GetEndpointHealthRequest, GetEndpointHealthResponse, GetInvoiceRequest, GetInvoiceResponse, GetJobRequest, GetJobResponse, GetMeRequest, GetMeResponse, GetMembershipRequest, GetMembershipResponse, GetOrganizationRequest, GetOrganizationResponse, GetOriginRequest, GetOriginResponse, GetPresetBySlugRequest, GetPresetBySlugResponse, GetPresetRequest, GetPresetResponse, GetSpendRequest, GetSpendResponse, GetStatsRequest, GetStatsResponse, GetUpcomingInvoiceRequest, GetUpcomingInvoiceResponse, GetUploadPartUrlsRequest, GetUploadPartUrlsResponse, GetUsageRequest, GetUsageResponse, GetUserRequest, GetUserResponse, GetVideoRequest, GetVideoResponse, H264Options, H265Options, HDRConfig, HDRFormat, HDRMode, HLSConfig, HLSPlaylistType, HLSSegmentFormat, HealthBucket, HostingConfig, HttpCredentials, HttpOriginConfig, InputMetadata, InvalidRequestError, Invoice, InvoiceLineItem, InvoiceLineType, InvoiceStatus, Job, JobCostBreakdown, JobCostLine, JobCostLineType, JobFee, JobOutput, JobPriority, JobStatus, KeyServerConfig, type KnownWebhookEvent, ListAPIKeysRequest, ListAPIKeysResponse, ListAppsRequest, ListAppsResponse, ListEventsRequest, ListEventsResponse, ListInvoicesRequest, ListInvoicesResponse, ListJobsRequest, ListJobsResponse, ListMembershipsRequest, ListMembershipsResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListOriginsRequest, ListOriginsResponse, ListPresetsRequest, ListPresetsResponse, ListTopVideosRequest, ListTopVideosResponse, ListUsersRequest, ListUsersResponse, ListVideosRequest, ListVideosResponse, ListWebhookDeliveriesRequest, ListWebhookDeliveriesResponse, ListWebhookEndpointsRequest, ListWebhookEndpointsResponse, type LogEvent, Membership, MembershipRole, MembershipStatus, MembershipWithUser, NotFoundError, Organization, OrganizationStatus, Origin, OriginPermission, OriginProvider, OriginRef, OriginStatus, OutputFormat, OutputSpec, OutputStatus, OutputVariantResult, Page, PaginationRequest, PaginationResponse, PermissionError, PreconditionError, Preset, PresetVariant, PricingSnapshot, QualityTier, R2Jurisdiction, R2OriginConfig, RateLimitError, RemoveMembershipRequest, ResendEventRequest, ResendEventResponse, Resolution, RetrieveEventRequest, RetrieveEventResponse, RetrieveWebhookEndpointRequest, RetrieveWebhookEndpointResponse, RevokeAPIKeyRequest, RotateWebhookSecretRequest, RotateWebhookSecretResponse, S3Credentials, S3OriginConfig, SDK_VERSION, SIGNATURE_HEADER, SegmentConfig, SendTestWebhookRequest, SendTestWebhookResponse, type SpendLimitNotification, StreamingConfig, SubtitleFormat, SubtitleOperation, SubtitleResult, SubtitleStreamInfo, SubtitleTrack, ThumbnailFormat, ThumbnailMode, ThumbnailResult, ThumbnailSpec, ToneMapping, TopVideo, Transcodely, type TranscodelyConfig, TranscodelyError, type UnknownWebhookEvent, UpdateAppRequest, UpdateAppResponse, UpdateHostingConfigRequest, UpdateHostingConfigResponse, UpdateMeRequest, UpdateMeResponse, UpdateMembershipRoleRequest, UpdateMembershipRoleResponse, UpdateOrganizationRequest, UpdateOrganizationResponse, UpdateOriginRequest, UpdateOriginResponse, UpdatePresetRequest, UpdatePresetResponse, UpdateSpendLimitRequest, UpdateSpendLimitResponse, UpdateVideoRequest, UpdateVideoResponse, UpdateWebhookEndpointRequest, UpdateWebhookEndpointResponse, UploadPart, UsageSummary, User, UserApprovalStatus, UserOrganization, UserStatus, UserWithOrganizations, VP9Options, ValidateOriginRequest, ValidateOriginResponse, ValidationResult, VariantPricingSnapshot, type VerifyOptions, Video, VideoCodec, VideoRendition, VideoSettings, VideoStatsDay, VideoStatsTotals, VideoStatus, VideoStreamInfo, VideoTextTrack, VideoVariant, VideoVisibility, WEBHOOK_EVENT_TYPES, WatchEventType, WatchJobRequest, WatchJobResponse, WatchVideoRequest, WatchVideoResponse, WatermarkAnchor, WatermarkConfig, WatermarkPixelPlacement, WebhookDelivery, WebhookEndpoint, WebhookError, type WebhookEvent, type WebhookEventType, WebhookPayloadError, WebhookSignatureError, WebhookTimestampError, Webhooks, constructEvent, isEventType, isKnownEvent, verifySignature };
15120
+ export { APIConnectionError, APIError, Event as APIEvent, APIKey, API_VERSION, AV1Options, AbortMultipartUploadRequest, App, AppStatus, ArchiveAppRequest, ArchiveOriginRequest, ArchivePresetRequest, AudioCodec, AudioSettings, AudioStreamInfo, AudioTrackConfig, AuthenticationError, AutoABRConfig, AutoProfileDefaults, BYOKConfig, BillingPaymentMethod, BillingPortalSession, BillingProfile, BillingStanding, BillingTreatment, BitrateMode, Budget, BurnInStyle, type CallOptions, CancelJobRequest, CancelJobResponse, CaptionStyle, ChapterPoint, ChapterResult, CheckSlugRequest, CheckSlugResponse, ClipConfig, CompleteMultipartUploadRequest, CompleteMultipartUploadResponse, CompleteUploadRequest, CompleteUploadResponse, CompletedPart, ConfirmJobRequest, ConfirmJobResponse, ConflictError, Container, ContentAnalysis, ContentAwareConfig, ContentAwareMode, ContentType, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateAppRequest, CreateAppResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateFromUrlRequest, CreateFromUrlResponse, CreateJobRequest, CreateJobResponse, CreateMultipartUploadRequest, CreateMultipartUploadResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOriginRequest, CreateOriginResponse, CreatePresetRequest, CreatePresetResponse, CreateUploadRequest, CreateUploadResponse, CreateWebhookEndpointRequest, CreateWebhookEndpointResponse, DASHConfig, DEFAULT_BASE_URL, DEFAULT_TOLERANCE_SECONDS, DRMConfig, DRMSystem, DailyUsage, DeleteVideoRequest, DeleteWebhookEndpointRequest, DeleteWebhookEndpointResponse, DeliveryFormat, DunningStage, DuplicatePresetRequest, DuplicatePresetResponse, EVENT_ID_HEADER, EnableHostingRequest, EnableHostingResponse, EncryptionScheme, EndpointHealthSummary, ErrorDetails, type EventBase, ExecutionTiming, ExposureThresholdSource, type FieldViolation, GOPAlignmentMode, GcsCredentials, GcsOriginConfig, GetAPIKeyRequest, GetAPIKeyResponse, GetAppRequest, GetAppResponse, GetBillingProfileRequest, GetBillingProfileResponse, GetBudgetRequest, GetBudgetResponse, GetEndpointHealthRequest, GetEndpointHealthResponse, GetInvoiceRequest, GetInvoiceResponse, GetJobRequest, GetJobResponse, GetMeRequest, GetMeResponse, GetMembershipRequest, GetMembershipResponse, GetOrganizationRequest, GetOrganizationResponse, GetOriginRequest, GetOriginResponse, GetOutstandingBalanceRequest, GetOutstandingBalanceResponse, GetPresetBySlugRequest, GetPresetBySlugResponse, GetPresetRequest, GetPresetResponse, GetSpendRequest, GetSpendResponse, GetStatsRequest, GetStatsResponse, GetUpcomingInvoiceRequest, GetUpcomingInvoiceResponse, GetUploadPartUrlsRequest, GetUploadPartUrlsResponse, GetUsageRequest, GetUsageResponse, GetUserRequest, GetUserResponse, GetVideoRequest, GetVideoResponse, H264Options, H265Options, HDRConfig, HDRFormat, HDRMode, HLSConfig, HLSPlaylistType, HLSSegmentFormat, HealthBucket, HostingConfig, HttpCredentials, HttpOriginConfig, InputMetadata, InvalidRequestError, Invoice, InvoiceLineItem, InvoiceLineType, InvoiceStatus, Job, JobCostBreakdown, JobCostLine, JobCostLineType, JobFee, JobOutput, JobPriority, JobStatus, KeyServerConfig, type KnownWebhookEvent, ListAPIKeysRequest, ListAPIKeysResponse, ListAppsRequest, ListAppsResponse, ListEventsRequest, ListEventsResponse, ListInvoicesRequest, ListInvoicesResponse, ListJobsRequest, ListJobsResponse, ListMembershipsRequest, ListMembershipsResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListOriginsRequest, ListOriginsResponse, ListPresetsRequest, ListPresetsResponse, ListTopVideosRequest, ListTopVideosResponse, ListUsersRequest, ListUsersResponse, ListVideosRequest, ListVideosResponse, ListWebhookDeliveriesRequest, ListWebhookDeliveriesResponse, ListWebhookEndpointsRequest, ListWebhookEndpointsResponse, type LogEvent, Membership, MembershipRole, MembershipStatus, MembershipWithUser, NotFoundError, Organization, OrganizationStatus, Origin, OriginPermission, OriginProvider, OriginRef, OriginStatus, OutputFormat, OutputSpec, OutputStatus, OutputVariantResult, OutstandingBalance, Page, PaginationRequest, PaginationResponse, PaymentMethodState, PermissionError, PlayerConfig, PreconditionError, Preset, PresetVariant, PricingSnapshot, QualityTier, R2Jurisdiction, R2OriginConfig, RateLimitError, RemoveMembershipRequest, ResendEventRequest, ResendEventResponse, Resolution, RetrieveEventRequest, RetrieveEventResponse, RetrieveWebhookEndpointRequest, RetrieveWebhookEndpointResponse, RevokeAPIKeyRequest, RotateWebhookSecretRequest, RotateWebhookSecretResponse, S3Credentials, S3OriginConfig, SDK_VERSION, SIGNATURE_HEADER, SegmentConfig, SendTestWebhookRequest, SendTestWebhookResponse, SettleOutstandingBalanceRequest, SettleOutstandingBalanceResponse, Settlement, type SpendLimitNotification, StreamingConfig, SubtitleFormat, SubtitleOperation, SubtitleResult, SubtitleStreamInfo, SubtitleTrack, ThumbnailFormat, ThumbnailMode, ThumbnailResult, ThumbnailSpec, ToneMapping, TopVideo, Transcodely, type TranscodelyConfig, TranscodelyError, TrustTier, type UnknownWebhookEvent, UpdateAppRequest, UpdateAppResponse, UpdateBudgetRequest, UpdateBudgetResponse, UpdateHostingConfigRequest, UpdateHostingConfigResponse, UpdateMeRequest, UpdateMeResponse, UpdateMembershipRoleRequest, UpdateMembershipRoleResponse, UpdateOrganizationRequest, UpdateOrganizationResponse, UpdateOriginRequest, UpdateOriginResponse, UpdatePlayerConfigRequest, UpdatePlayerConfigResponse, UpdatePresetRequest, UpdatePresetResponse, UpdateSpendLimitRequest, UpdateSpendLimitResponse, UpdateVideoRequest, UpdateVideoResponse, UpdateWebhookEndpointRequest, UpdateWebhookEndpointResponse, UploadPart, UsageSummary, User, UserApprovalStatus, UserOrganization, UserStatus, UserWithOrganizations, VP9Options, ValidateOriginRequest, ValidateOriginResponse, ValidationResult, VariantPricingSnapshot, type VerifyOptions, Video, VideoCodec, VideoRendition, VideoSettings, VideoStatsDay, VideoStatsTotals, VideoStatus, VideoStreamInfo, VideoTextTrack, VideoVariant, VideoVisibility, WEBHOOK_EVENT_TYPES, WatchEventType, WatchJobRequest, WatchJobResponse, WatchVideoRequest, WatchVideoResponse, WatermarkAnchor, WatermarkConfig, WatermarkPixelPlacement, WebhookDelivery, WebhookEndpoint, WebhookError, type WebhookEvent, type WebhookEventType, WebhookPayloadError, WebhookSignatureError, WebhookTimestampError, Webhooks, constructEvent, isEventType, isKnownEvent, verifySignature };