@transcodely/sdk 0.3.4 → 0.3.6

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,70 @@ 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
+ }
320
384
  /**
321
385
  * Pagination request parameters.
322
386
  *
@@ -1813,6 +1877,30 @@ declare enum InvoiceLineType {
1813
1877
  */
1814
1878
  ADJUSTMENT = 4
1815
1879
  }
1880
+ /**
1881
+ * Whether an organization has a payment method the provider can charge.
1882
+ *
1883
+ * @generated from enum transcodely.v1.PaymentMethodState
1884
+ */
1885
+ declare enum PaymentMethodState {
1886
+ /**
1887
+ * @generated from enum value: PAYMENT_METHOD_STATE_UNSPECIFIED = 0;
1888
+ */
1889
+ UNSPECIFIED = 0,
1890
+ /**
1891
+ * No payment method on file. Nothing is blocked by this today.
1892
+ *
1893
+ * @generated from enum value: PAYMENT_METHOD_STATE_NONE = 1;
1894
+ */
1895
+ NONE = 1,
1896
+ /**
1897
+ * At least one payment method is on file. Says only that the provider holds
1898
+ * something it can charge — not that its card details are known.
1899
+ *
1900
+ * @generated from enum value: PAYMENT_METHOD_STATE_ON_FILE = 2;
1901
+ */
1902
+ ON_FILE = 2
1903
+ }
1816
1904
  /**
1817
1905
  * A billing statement for one period.
1818
1906
  *
@@ -1990,6 +2078,222 @@ declare class InvoiceLineItem extends Message<InvoiceLineItem> {
1990
2078
  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): InvoiceLineItem;
1991
2079
  static equals(a: InvoiceLineItem | PlainMessage<InvoiceLineItem> | undefined, b: InvoiceLineItem | PlainMessage<InvoiceLineItem> | undefined): boolean;
1992
2080
  }
2081
+ /**
2082
+ * An organization's payment standing: whether the payment provider can charge
2083
+ * it, and what the customer sees when they look.
2084
+ *
2085
+ * Payment METHODS are read live from the payment provider on every request
2086
+ * rather than mirrored locally, so a card added in the hosted portal shows up
2087
+ * on the next read with no polling and no waiting for a webhook. STANDING is
2088
+ * derived at request time from the organization's stored billing facts
2089
+ * (invoice outcomes, observed payment methods) together with that live read, so
2090
+ * it is never staler than the page showing it.
2091
+ *
2092
+ * @generated from message transcodely.v1.BillingProfile
2093
+ */
2094
+ declare class BillingProfile extends Message<BillingProfile> {
2095
+ /**
2096
+ * Object type, always "billing_profile".
2097
+ *
2098
+ * @generated from field: string object = 1;
2099
+ */
2100
+ object: string;
2101
+ /**
2102
+ * Organization this profile describes.
2103
+ *
2104
+ * @generated from field: string org_id = 2;
2105
+ */
2106
+ orgId: string;
2107
+ /**
2108
+ * Whether a payment method is on file. Determined by whether the payment
2109
+ * provider holds any payment method for this organization, and by nothing
2110
+ * else — in particular, a method missing its card details is still a
2111
+ * payment method.
2112
+ *
2113
+ * @generated from field: transcodely.v1.PaymentMethodState payment_method_state = 3;
2114
+ */
2115
+ paymentMethodState: PaymentMethodState;
2116
+ /**
2117
+ * The methods the provider holds, for display only. Empty when the state is
2118
+ * "none", and never empty when the state is "on_file".
2119
+ *
2120
+ * @generated from field: repeated transcodely.v1.BillingPaymentMethod payment_methods = 4;
2121
+ */
2122
+ paymentMethods: BillingPaymentMethod[];
2123
+ /**
2124
+ * The organization's billing email, which the payment provider requires
2125
+ * before it will accept a payment method. Absent when unset.
2126
+ *
2127
+ * @generated from field: optional string billing_email = 5;
2128
+ */
2129
+ billingEmail?: string;
2130
+ /**
2131
+ * The organization's derived payment health, and what its usage limits
2132
+ * resolve from. See BillingStanding.
2133
+ *
2134
+ * @generated from field: transcodely.v1.BillingStanding standing = 6;
2135
+ */
2136
+ standing: BillingStanding;
2137
+ /**
2138
+ * When the current grace window closes. Present if and only if standing is
2139
+ * BILLING_STANDING_GRACE. At this instant the account is already past it —
2140
+ * the deadline is inclusive — and what it becomes is determined by
2141
+ * standing_reason: a card problem decays to FREE, an unpaid invoice to
2142
+ * DELINQUENT.
2143
+ *
2144
+ * @generated from field: optional google.protobuf.Timestamp grace_until = 7;
2145
+ */
2146
+ graceUntil?: Timestamp;
2147
+ /**
2148
+ * Why standing is what it is, as a stable token to switch on rather than
2149
+ * copy to display:
2150
+ *
2151
+ * "" nothing is wrong
2152
+ * "exempt" the org is not required to hold a payment
2153
+ * method, so standing is always active
2154
+ * "no_payment_method" none has ever been on file
2155
+ * "card_expired" one is on file and its expiry has passed
2156
+ * "card_removed" one we had observed is gone
2157
+ * "invoice_past_due" an invoice failed to collect
2158
+ * "repeated_invoice_failure" a second consecutive failure, which earns no
2159
+ * grace window at all
2160
+ *
2161
+ * New tokens may be added; treat an unrecognized one as a generic billing
2162
+ * problem rather than failing.
2163
+ *
2164
+ * @generated from field: string standing_reason = 8;
2165
+ */
2166
+ standingReason: string;
2167
+ /**
2168
+ * Whether this organization must hold a payment method. FALSE means it is
2169
+ * exempt — organizations predating the requirement are, and an operator may
2170
+ * exempt one deliberately — in which case standing is always
2171
+ * BILLING_STANDING_ACTIVE and no banner or prompt about payment methods
2172
+ * should be shown.
2173
+ *
2174
+ * Exempt is not free service: the organization still accrues usage and is
2175
+ * still invoiced. It simply is not limited for lacking a card on file.
2176
+ *
2177
+ * @generated from field: bool payment_method_required = 9;
2178
+ */
2179
+ paymentMethodRequired: boolean;
2180
+ constructor(data?: PartialMessage<BillingProfile>);
2181
+ static readonly runtime: typeof proto3;
2182
+ static readonly typeName = "transcodely.v1.BillingProfile";
2183
+ static readonly fields: FieldList;
2184
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): BillingProfile;
2185
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): BillingProfile;
2186
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): BillingProfile;
2187
+ static equals(a: BillingProfile | PlainMessage<BillingProfile> | undefined, b: BillingProfile | PlainMessage<BillingProfile> | undefined): boolean;
2188
+ }
2189
+ /**
2190
+ * One payment method held by the payment provider.
2191
+ *
2192
+ * Display data only. Card numbers never reach the Transcodely API; a method is
2193
+ * added, replaced or removed in the provider's hosted portal.
2194
+ *
2195
+ * The card detail fields are all optional and are frequently absent even for a
2196
+ * working card — the payment provider does not always expose card metadata.
2197
+ * Treat their presence as a bonus: a method with no brand or last4 is a valid,
2198
+ * chargeable payment method that simply cannot be described more precisely than
2199
+ * its type. Render it as "Card on file" rather than waiting for digits that may
2200
+ * never arrive.
2201
+ *
2202
+ * @generated from message transcodely.v1.BillingPaymentMethod
2203
+ */
2204
+ declare class BillingPaymentMethod extends Message<BillingPaymentMethod> {
2205
+ /**
2206
+ * The payment provider's identifier for this method.
2207
+ *
2208
+ * @generated from field: string id = 1;
2209
+ */
2210
+ id: string;
2211
+ /**
2212
+ * Method family: "card", or "generic" for everything else the provider
2213
+ * supports (direct debit and similar). Always present.
2214
+ *
2215
+ * @generated from field: string type = 2;
2216
+ */
2217
+ type: string;
2218
+ /**
2219
+ * Card network, e.g. "visa" or "mastercard". Cards only, and only when the
2220
+ * provider exposes it.
2221
+ *
2222
+ * @generated from field: optional string brand = 3;
2223
+ */
2224
+ brand?: string;
2225
+ /**
2226
+ * Last four digits of the card number. Cards only, and only when the
2227
+ * provider exposes it.
2228
+ *
2229
+ * @generated from field: optional string last4 = 4;
2230
+ */
2231
+ last4?: string;
2232
+ /**
2233
+ * Expiry month, 1-12. Cards only, and only when the provider exposes it.
2234
+ *
2235
+ * @generated from field: optional int32 exp_month = 5;
2236
+ */
2237
+ expMonth?: number;
2238
+ /**
2239
+ * Expiry year, four digits. Cards only, and only when the provider exposes
2240
+ * it.
2241
+ *
2242
+ * @generated from field: optional int32 exp_year = 6;
2243
+ */
2244
+ expYear?: number;
2245
+ /**
2246
+ * Whether this is the method the provider charges by default. Advisory: the
2247
+ * provider does not always mark a default, so false here does not mean the
2248
+ * method is unused, and it is never a signal about the organization's
2249
+ * payment standing.
2250
+ *
2251
+ * @generated from field: bool is_default = 7;
2252
+ */
2253
+ isDefault: boolean;
2254
+ constructor(data?: PartialMessage<BillingPaymentMethod>);
2255
+ static readonly runtime: typeof proto3;
2256
+ static readonly typeName = "transcodely.v1.BillingPaymentMethod";
2257
+ static readonly fields: FieldList;
2258
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): BillingPaymentMethod;
2259
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): BillingPaymentMethod;
2260
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): BillingPaymentMethod;
2261
+ static equals(a: BillingPaymentMethod | PlainMessage<BillingPaymentMethod> | undefined, b: BillingPaymentMethod | PlainMessage<BillingPaymentMethod> | undefined): boolean;
2262
+ }
2263
+ /**
2264
+ * A short-lived session for the payment provider's hosted billing portal.
2265
+ *
2266
+ * @generated from message transcodely.v1.BillingPortalSession
2267
+ */
2268
+ declare class BillingPortalSession extends Message<BillingPortalSession> {
2269
+ /**
2270
+ * Object type, always "billing_portal_session".
2271
+ *
2272
+ * @generated from field: string object = 1;
2273
+ */
2274
+ object: string;
2275
+ /**
2276
+ * Where to send the browser. Single-use and short-lived; request a new
2277
+ * session rather than storing this.
2278
+ *
2279
+ * @generated from field: string url = 2;
2280
+ */
2281
+ url: string;
2282
+ /**
2283
+ * When the session stops working.
2284
+ *
2285
+ * @generated from field: google.protobuf.Timestamp expires_at = 3;
2286
+ */
2287
+ expiresAt?: Timestamp;
2288
+ constructor(data?: PartialMessage<BillingPortalSession>);
2289
+ static readonly runtime: typeof proto3;
2290
+ static readonly typeName = "transcodely.v1.BillingPortalSession";
2291
+ static readonly fields: FieldList;
2292
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): BillingPortalSession;
2293
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): BillingPortalSession;
2294
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): BillingPortalSession;
2295
+ static equals(a: BillingPortalSession | PlainMessage<BillingPortalSession> | undefined, b: BillingPortalSession | PlainMessage<BillingPortalSession> | undefined): boolean;
2296
+ }
1993
2297
  /**
1994
2298
  * Request to list the organization's invoices.
1995
2299
  *
@@ -2118,6 +2422,81 @@ declare class GetUpcomingInvoiceResponse extends Message<GetUpcomingInvoiceRespo
2118
2422
  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetUpcomingInvoiceResponse;
2119
2423
  static equals(a: GetUpcomingInvoiceResponse | PlainMessage<GetUpcomingInvoiceResponse> | undefined, b: GetUpcomingInvoiceResponse | PlainMessage<GetUpcomingInvoiceResponse> | undefined): boolean;
2120
2424
  }
2425
+ /**
2426
+ * Request to retrieve the organization's billing profile. The organization is
2427
+ * taken from the X-Organization-ID header.
2428
+ *
2429
+ * @generated from message transcodely.v1.GetBillingProfileRequest
2430
+ */
2431
+ declare class GetBillingProfileRequest extends Message<GetBillingProfileRequest> {
2432
+ constructor(data?: PartialMessage<GetBillingProfileRequest>);
2433
+ static readonly runtime: typeof proto3;
2434
+ static readonly typeName = "transcodely.v1.GetBillingProfileRequest";
2435
+ static readonly fields: FieldList;
2436
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetBillingProfileRequest;
2437
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetBillingProfileRequest;
2438
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetBillingProfileRequest;
2439
+ static equals(a: GetBillingProfileRequest | PlainMessage<GetBillingProfileRequest> | undefined, b: GetBillingProfileRequest | PlainMessage<GetBillingProfileRequest> | undefined): boolean;
2440
+ }
2441
+ /**
2442
+ * Response carrying the billing profile.
2443
+ *
2444
+ * @generated from message transcodely.v1.GetBillingProfileResponse
2445
+ */
2446
+ declare class GetBillingProfileResponse extends Message<GetBillingProfileResponse> {
2447
+ /**
2448
+ * The organization's payment standing, read live from the payment provider.
2449
+ *
2450
+ * @generated from field: transcodely.v1.BillingProfile profile = 1;
2451
+ */
2452
+ profile?: BillingProfile;
2453
+ constructor(data?: PartialMessage<GetBillingProfileResponse>);
2454
+ static readonly runtime: typeof proto3;
2455
+ static readonly typeName = "transcodely.v1.GetBillingProfileResponse";
2456
+ static readonly fields: FieldList;
2457
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetBillingProfileResponse;
2458
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetBillingProfileResponse;
2459
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetBillingProfileResponse;
2460
+ static equals(a: GetBillingProfileResponse | PlainMessage<GetBillingProfileResponse> | undefined, b: GetBillingProfileResponse | PlainMessage<GetBillingProfileResponse> | undefined): boolean;
2461
+ }
2462
+ /**
2463
+ * Request to create a billing portal session. The organization is taken from
2464
+ * the X-Organization-ID header, and where the portal returns to is fixed by
2465
+ * the API rather than supplied by the caller.
2466
+ *
2467
+ * @generated from message transcodely.v1.CreateBillingPortalSessionRequest
2468
+ */
2469
+ declare class CreateBillingPortalSessionRequest extends Message<CreateBillingPortalSessionRequest> {
2470
+ constructor(data?: PartialMessage<CreateBillingPortalSessionRequest>);
2471
+ static readonly runtime: typeof proto3;
2472
+ static readonly typeName = "transcodely.v1.CreateBillingPortalSessionRequest";
2473
+ static readonly fields: FieldList;
2474
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateBillingPortalSessionRequest;
2475
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateBillingPortalSessionRequest;
2476
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateBillingPortalSessionRequest;
2477
+ static equals(a: CreateBillingPortalSessionRequest | PlainMessage<CreateBillingPortalSessionRequest> | undefined, b: CreateBillingPortalSessionRequest | PlainMessage<CreateBillingPortalSessionRequest> | undefined): boolean;
2478
+ }
2479
+ /**
2480
+ * Response carrying the portal session to redirect to.
2481
+ *
2482
+ * @generated from message transcodely.v1.CreateBillingPortalSessionResponse
2483
+ */
2484
+ declare class CreateBillingPortalSessionResponse extends Message<CreateBillingPortalSessionResponse> {
2485
+ /**
2486
+ * The session. Redirect the browser to its url.
2487
+ *
2488
+ * @generated from field: transcodely.v1.BillingPortalSession session = 1;
2489
+ */
2490
+ session?: BillingPortalSession;
2491
+ constructor(data?: PartialMessage<CreateBillingPortalSessionResponse>);
2492
+ static readonly runtime: typeof proto3;
2493
+ static readonly typeName = "transcodely.v1.CreateBillingPortalSessionResponse";
2494
+ static readonly fields: FieldList;
2495
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateBillingPortalSessionResponse;
2496
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateBillingPortalSessionResponse;
2497
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateBillingPortalSessionResponse;
2498
+ static equals(a: CreateBillingPortalSessionResponse | PlainMessage<CreateBillingPortalSessionResponse> | undefined, b: CreateBillingPortalSessionResponse | PlainMessage<CreateBillingPortalSessionResponse> | undefined): boolean;
2499
+ }
2121
2500
 
2122
2501
  /**
2123
2502
  * An organization's billing statements — read-only.
@@ -2164,6 +2543,33 @@ declare class Billing {
2164
2543
  * settles.
2165
2544
  */
2166
2545
  retrieveUpcoming(opts?: CallOptions): Promise<Invoice>;
2546
+ /**
2547
+ * Retrieve the organization's payment standing: whether the payment provider
2548
+ * holds a chargeable method, and what it will say about it for display.
2549
+ *
2550
+ * Read-only and side-effect free — it never creates provider resources. An
2551
+ * organization that has never touched billing reports
2552
+ * `PaymentMethodState.NONE` and no payment methods.
2553
+ *
2554
+ * `paymentMethodState` is the only reliable signal. A method's `brand` and
2555
+ * `last4` are frequently absent even for a working card, because the provider
2556
+ * does not always expose card metadata; render such a method as "Card on
2557
+ * file" rather than treating the missing digits as an error.
2558
+ */
2559
+ retrieveProfile(opts?: CallOptions): Promise<BillingProfile>;
2560
+ /**
2561
+ * Create a short-lived session for the payment provider's hosted billing
2562
+ * portal and return it. The portal is where a payment method is added or
2563
+ * replaced and where receipts live — card details never touch this SDK.
2564
+ *
2565
+ * The first call for an organization also links it to the payment provider,
2566
+ * so the returned portal is already attached to this organization's billing
2567
+ * account. Safe to call repeatedly.
2568
+ *
2569
+ * The session is single-use and expires; request a fresh one per visit rather
2570
+ * than storing the URL.
2571
+ */
2572
+ createPortalSession(opts?: CallOptions): Promise<BillingPortalSession>;
2167
2573
  }
2168
2574
 
2169
2575
  /**
@@ -7036,6 +7442,47 @@ declare enum WatchEventType {
7036
7442
  */
7037
7443
  HEARTBEAT = 5
7038
7444
  }
7445
+ /**
7446
+ * JobCostLineType discriminates a line of a job's cost breakdown.
7447
+ *
7448
+ * @generated from enum transcodely.v1.JobCostLineType
7449
+ */
7450
+ declare enum JobCostLineType {
7451
+ /**
7452
+ * @generated from enum value: JOB_COST_LINE_TYPE_UNSPECIFIED = 0;
7453
+ */
7454
+ UNSPECIFIED = 0,
7455
+ /**
7456
+ * One output rendition's share of the total.
7457
+ *
7458
+ * @generated from enum value: JOB_COST_LINE_TYPE_OUTPUT = 1;
7459
+ */
7460
+ OUTPUT = 1,
7461
+ /**
7462
+ * HISTORICAL: the per-job minimum-charge top-up — what the floor added on
7463
+ * top of the renditions. Derived from Job.minimum_charge_eur, never larger
7464
+ * than it. Appears only on jobs created before the processing-fee model.
7465
+ *
7466
+ * @generated from enum value: JOB_COST_LINE_TYPE_MINIMUM_CHARGE = 2;
7467
+ */
7468
+ MINIMUM_CHARGE = 2,
7469
+ /**
7470
+ * One fee (see JobFee) — the processing fee, or an additive metered one.
7471
+ *
7472
+ * @generated from enum value: JOB_COST_LINE_TYPE_FEE = 3;
7473
+ */
7474
+ FEE = 3,
7475
+ /**
7476
+ * A signed reconciliation adjustment carrying any difference between the
7477
+ * itemized lines above and the stored total — metering refined between the
7478
+ * estimate and settlement, or a historical partial write. Rare by design,
7479
+ * and may be negative. Its existence is what makes the sum-to-totals
7480
+ * guarantee unconditional instead of aspirational.
7481
+ *
7482
+ * @generated from enum value: JOB_COST_LINE_TYPE_ADJUSTMENT = 4;
7483
+ */
7484
+ ADJUSTMENT = 4
7485
+ }
7039
7486
  /**
7040
7487
  * Audio track configuration for multi-audio outputs.
7041
7488
  * Used to specify multiple audio language tracks in HLS/DASH outputs.
@@ -8140,17 +8587,26 @@ declare class Job extends Message<Job> {
8140
8587
  *
8141
8588
  * Only completed outputs are billable, and what happened to the job as a
8142
8589
  * whole decides whether they are billed at all:
8143
- * - completed: the sum of its outputs' actual costs, raised to
8144
- * minimum_charge_eur if that minimum is in effect.
8145
- * - canceled: the sum of the outputs that had already completed and been
8146
- * delivered when the cancel landed. Identical whether the job was
8147
- * canceled through CancelJob or observed as canceled by the worker. The
8148
- * minimum charge never applies.
8149
- * - failed: zero. A job that ends failed is not billed, even if some of
8150
- * its outputs completed before the failure.
8151
- * - partial: the sum of the outputs that completed, un-floored.
8152
- * Additive fees (see fees) are included on top, and are charged only on jobs
8153
- * that ended completed or partial.
8590
+ * - completed: the sum of its outputs' actual costs, plus the fees below.
8591
+ * - partial: the sum of the outputs that completed, plus the fees below.
8592
+ * - canceled: the processing fee, if an encoder had already begun work,
8593
+ * plus the outputs that had already completed and been delivered when
8594
+ * the cancel landed. Canceling a job that was still queued bills
8595
+ * nothing. Identical whether the job was canceled through CancelJob or
8596
+ * observed as canceled by the worker.
8597
+ * - failed: zero. A job that ends failed is not billed at all — not for
8598
+ * outputs that completed before the failure, and not for the machine it
8599
+ * ran on.
8600
+ *
8601
+ * Fees (see fees) are included on top of the output costs. Which ones are
8602
+ * charged depends on the fee: the flat processing fee is charged on every
8603
+ * job an encoder began, including a canceled one, while a metered add-on
8604
+ * such as AI captions is charged only when a completed or partial job
8605
+ * actually delivered its artifact.
8606
+ *
8607
+ * Jobs created before the processing-fee model (August 2026) are billed
8608
+ * max(sum of output costs, minimum_charge_eur) + fees when completed, and
8609
+ * their canceled/partial totals are un-floored.
8154
8610
  *
8155
8611
  * @generated from field: optional double total_actual_cost = 9;
8156
8612
  */
@@ -8289,44 +8745,62 @@ declare class Job extends Message<Job> {
8289
8745
  */
8290
8746
  object: string;
8291
8747
  /**
8292
- * Minimum charge for this job in EUR, locked at creation and never changed
8293
- * retroactively. It is derived from the job's assigned billing class — a size
8294
- * band (small/medium/large/extra-large) reflecting the compute the job is
8295
- * guaranteed to cover — or, in legacy configurations, from the recommended
8296
- * machine size; either way it is a stable quote, not re-derived from the
8297
- * machine the job ultimately runs on. When the minimum charge is in effect,
8298
- * the billed total for a successfully completed job is
8299
- * max(sum of output costs, minimum_charge_eur) — see minimum_charge_applied
8300
- * for whether it determined this job's total. The minimum applies only to
8301
- * jobs that reach completed: a failed job is billed zero, and a canceled or
8302
- * partial job is billed the un-floored sum of the outputs it did complete.
8303
- * Absent when no minimum was computed for this job.
8304
- *
8305
- * @generated from field: optional double minimum_charge_eur = 30;
8748
+ * HISTORICAL — jobs created before the processing-fee model (August 2026)
8749
+ * only. Always absent on jobs created since; use fees (fee_type
8750
+ * "processing") instead.
8751
+ *
8752
+ * The per-job minimum charge, locked at creation and never changed
8753
+ * retroactively. It was derived from the job's assigned billing class — a
8754
+ * size band (small/medium/large/extra-large) reflecting the compute the job
8755
+ * is guaranteed to cover — or, in earlier configurations, from the
8756
+ * recommended machine size; either way a stable quote, not re-derived from
8757
+ * the machine the job ultimately ran on. When in effect, the billed total for
8758
+ * a successfully completed job was max(sum of output costs,
8759
+ * minimum_charge_eur) — see minimum_charge_applied for whether it determined
8760
+ * this job's total. It applied only to jobs that reached completed: a failed
8761
+ * job was billed zero, and a canceled or partial job the un-floored sum of
8762
+ * the outputs it did complete.
8763
+ *
8764
+ * Jobs quoted under this model keep settling under it, so the field is
8765
+ * populated forever on those jobs and is never removed from the API.
8766
+ *
8767
+ * @generated from field: optional double minimum_charge_eur = 30 [deprecated = true];
8768
+ * @deprecated
8306
8769
  */
8307
8770
  minimumChargeEur?: number;
8308
8771
  /**
8772
+ * HISTORICAL — jobs created before the processing-fee model (August 2026)
8773
+ * only. Always false on jobs created since.
8774
+ *
8309
8775
  * Whether minimum_charge_eur determined the job's most recently computed
8310
8776
  * total — true when the sum of output costs came in below the minimum and
8311
8777
  * the total was raised to it (estimated total after probe; actual total
8312
8778
  * after successful completion). When true, total_estimated_cost or
8313
8779
  * total_actual_cost exceeds the sum of the per-output cost fields, which
8314
- * are never raised themselves. The minimum is a stable quote locked at
8315
- * creation (from the job's billing class, or the recommended machine size in
8316
- * legacy configurations); it is never re-derived from the machine the job
8317
- * ultimately runs on.
8780
+ * were never raised themselves.
8318
8781
  *
8319
- * @generated from field: bool minimum_charge_applied = 31;
8782
+ * @generated from field: bool minimum_charge_applied = 31 [deprecated = true];
8783
+ * @deprecated
8320
8784
  */
8321
8785
  minimumChargeApplied: boolean;
8322
8786
  /**
8323
- * Additive fee line items (v1: AI caption generation). Fees are charged ON
8324
- * TOP of the encode bill and sit OUTSIDE the minimum-charge floor:
8325
- * billed total = max(sum of output costs, minimum_charge_eur) + sum of fees.
8787
+ * Fee line items on the job. Two kinds appear here:
8788
+ *
8789
+ * "processing" — the flat per-job processing fee, charged once for the
8790
+ * encoder the job ran on, scaled by the job's size class. Present on every
8791
+ * job an encoder began processing. Quantity is always 1.
8792
+ * "captions" — AI caption generation, metered per source minute.
8793
+ *
8794
+ * Fees are charged ON TOP of the encode bill:
8795
+ * billed total = sum of output costs + sum of fees. (On historical jobs that
8796
+ * carry a minimum_charge_eur, the output sum is raised to that floor first;
8797
+ * fees have always sat outside the clamp.)
8798
+ *
8326
8799
  * total_estimated_cost / total_actual_cost INCLUDE fees; this list exposes
8327
- * the decomposition. Only live fees are listed — a fee that was voided
8328
- * (job failed/canceled, or the artifact was never produced) is dropped
8329
- * from the list and never charged. Server-set; read-only.
8800
+ * the decomposition. Only live fees are listed — a fee that was voided is
8801
+ * dropped from the list and never charged. A job that failed, or that was
8802
+ * canceled while still queued, therefore reports no fees at all.
8803
+ * Server-set; read-only.
8330
8804
  *
8331
8805
  * @generated from field: repeated transcodely.v1.JobFee fees = 33;
8332
8806
  */
@@ -8354,6 +8828,26 @@ declare class Job extends Message<Job> {
8354
8828
  * @generated from field: optional transcodely.v1.ClipConfig clip = 36;
8355
8829
  */
8356
8830
  clip?: ClipConfig;
8831
+ /**
8832
+ * Hosted video this job's managed output belongs to ("vid_..."). Set when
8833
+ * the job writes to Transcodely-managed hosting storage (created with
8834
+ * managed=true, or with input_video_id targeting an existing video); absent
8835
+ * for jobs delivering to your own origin. Server-set; read-only.
8836
+ *
8837
+ * @generated from field: optional string video_id = 37;
8838
+ */
8839
+ videoId?: string;
8840
+ /**
8841
+ * Itemized decomposition of total_estimated_cost and total_actual_cost:
8842
+ * one line per output, one per fee, and — on jobs old enough to have a
8843
+ * minimum charge — the top-up it added. The lines always sum to the totals,
8844
+ * so this is the field to render a cost from: the per-output cost fields
8845
+ * alone do not add up to the bill, because fees are charged on top of them.
8846
+ * Always present. Server-set; read-only.
8847
+ *
8848
+ * @generated from field: transcodely.v1.JobCostBreakdown cost_breakdown = 38;
8849
+ */
8850
+ costBreakdown?: JobCostBreakdown;
8357
8851
  constructor(data?: PartialMessage<Job>);
8358
8852
  static readonly runtime: typeof proto3;
8359
8853
  static readonly typeName = "transcodely.v1.Job";
@@ -8364,53 +8858,75 @@ declare class Job extends Message<Job> {
8364
8858
  static equals(a: Job | PlainMessage<Job> | undefined, b: Job | PlainMessage<Job> | undefined): boolean;
8365
8859
  }
8366
8860
  /**
8367
- * A single additive fee line item on a job (see Job.fees). Fees are metered
8368
- * charges for services performed alongside the encode (v1: AI caption
8369
- * generation at EUR 0.05 per source minute). A fee is charged once per job,
8370
- * estimated when the input probe supplies the source duration, and only
8371
- * billed when the completion report shows the fee's artifact was actually
8372
- * produced (no artifact, no fee). Fees are never absorbed by the per-job
8373
- * minimum charge: billed total = max(sum of output costs, minimum_charge_eur)
8374
- * + sum of fees. Read-only.
8861
+ * A single fee line item on a job (see Job.fees), charged once per job per
8862
+ * fee type, on top of the encode cost. Two families share this message, and
8863
+ * they differ in what decides whether they are billed:
8864
+ *
8865
+ * METERED ADD-ONS (v1: "captions", AI caption generation at EUR 0.05 per
8866
+ * source minute) pay for a service performed alongside the encode. They are
8867
+ * metered when the input probe supplies the source duration, and billed only
8868
+ * when the completion report shows the artifact was actually produced — no
8869
+ * artifact, no fee. A failed or canceled job never pays one.
8870
+ *
8871
+ * The PROCESSING FEE ("processing") is the flat charge for starting a
8872
+ * dedicated encoder, scaled by the job's size class. It is complete from
8873
+ * creation (quantity 1) and billed on the job's OUTCOME rather than on any
8874
+ * artifact: on completed and partial jobs, and on a job canceled after an
8875
+ * encoder had begun work. A failed job, and a job canceled while still
8876
+ * queued, pay nothing.
8877
+ *
8878
+ * Either way the totals are the sum of their parts:
8879
+ * billed total = sum of output costs + sum of fees
8880
+ *
8881
+ * Jobs created before the processing-fee model (August 2026) instead clamp the
8882
+ * output half: max(sum of output costs, minimum_charge_eur) + sum of fees.
8883
+ * Fees have never been absorbed by that clamp. Read-only.
8375
8884
  *
8376
8885
  * @generated from message transcodely.v1.JobFee
8377
8886
  */
8378
8887
  declare class JobFee extends Message<JobFee> {
8379
8888
  /**
8380
- * Fee discriminator — the fee pricing rule's key. v1: "captions".
8889
+ * Fee discriminator:
8890
+ * "processing" — the flat per-job processing fee (see Job.fees).
8891
+ * "captions" — AI caption generation.
8381
8892
  *
8382
8893
  * @generated from field: string fee_type = 1;
8383
8894
  */
8384
8895
  feeType: string;
8385
8896
  /**
8386
8897
  * Human-readable description of what the fee is for
8387
- * (e.g., "AI Caption Generation").
8898
+ * (e.g., "Processing fee", "AI Caption Generation").
8388
8899
  *
8389
8900
  * @generated from field: string description = 2;
8390
8901
  */
8391
8902
  description: string;
8392
8903
  /**
8393
- * Metering unit. v1: "source_minute" (input duration in minutes).
8904
+ * Metering unit:
8905
+ * "job" — a flat per-job charge; quantity is always 1.
8906
+ * "source_minute" — input duration in minutes.
8394
8907
  *
8395
8908
  * @generated from field: string unit = 3;
8396
8909
  */
8397
8910
  unit: string;
8398
8911
  /**
8399
8912
  * Metered quantity in `unit`s — the exact fraction, e.g. a 90-second
8400
- * source is 1.5 source minutes. 0 until the input probe completes.
8913
+ * source is 1.5 source minutes. For a "source_minute" fee this is 0 until
8914
+ * the input probe completes; a "job" fee is always 1, from creation.
8401
8915
  *
8402
8916
  * @generated from field: double quantity = 4;
8403
8917
  */
8404
8918
  quantity: number;
8405
8919
  /**
8406
- * Price per unit in `currency`, locked at job creation from the
8407
- * then-effective fee pricing rule (e.g., 0.05).
8920
+ * Price per unit in `currency`, locked at job creation (e.g., 0.05). For the
8921
+ * processing fee this is the job's size class's rate at the moment the job
8922
+ * was created; later rate changes never re-price an existing job.
8408
8923
  *
8409
8924
  * @generated from field: double rate = 5;
8410
8925
  */
8411
8926
  rate: number;
8412
8927
  /**
8413
- * quantity x rate, in `currency`. 0 until the input probe completes.
8928
+ * quantity x rate, in `currency`. For a "source_minute" fee this is 0 until
8929
+ * the input probe completes; for a "job" fee it equals rate from creation.
8414
8930
  *
8415
8931
  * @generated from field: double amount = 6;
8416
8932
  */
@@ -8422,6 +8938,13 @@ declare class JobFee extends Message<JobFee> {
8422
8938
  * @generated from field: string currency = 7;
8423
8939
  */
8424
8940
  currency: string;
8941
+ /**
8942
+ * Fee id ("fee_..."). This is what a cost-breakdown fee line's
8943
+ * `reference_id` points at (see JobCostBreakdown).
8944
+ *
8945
+ * @generated from field: string id = 8;
8946
+ */
8947
+ id: string;
8425
8948
  constructor(data?: PartialMessage<JobFee>);
8426
8949
  static readonly runtime: typeof proto3;
8427
8950
  static readonly typeName = "transcodely.v1.JobFee";
@@ -8431,13 +8954,156 @@ declare class JobFee extends Message<JobFee> {
8431
8954
  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): JobFee;
8432
8955
  static equals(a: JobFee | PlainMessage<JobFee> | undefined, b: JobFee | PlainMessage<JobFee> | undefined): boolean;
8433
8956
  }
8957
+ /**
8958
+ * One line of a job's cost breakdown (see JobCostBreakdown).
8959
+ *
8960
+ * @generated from message transcodely.v1.JobCostLine
8961
+ */
8962
+ declare class JobCostLine extends Message<JobCostLine> {
8963
+ /**
8964
+ * What kind of charge this line is: output, minimum_charge, fee or
8965
+ * adjustment.
8966
+ *
8967
+ * @generated from field: transcodely.v1.JobCostLineType type = 1;
8968
+ */
8969
+ type: JobCostLineType;
8970
+ /**
8971
+ * The thing the line is for: an output id ("out_...") on output lines, a
8972
+ * fee id ("fee_...") on fee lines. Empty on the minimum-charge and
8973
+ * adjustment lines, which belong to the job as a whole rather than to any
8974
+ * one part of it.
8975
+ *
8976
+ * @generated from field: string reference_id = 2;
8977
+ */
8978
+ referenceId: string;
8979
+ /**
8980
+ * Human-readable label: "1080p h264 hls", "Minimum job charge",
8981
+ * "AI Caption Generation". Wording is documentation, not API surface, and
8982
+ * may be reworded in any release — key off `type` and `reference_id`.
8983
+ *
8984
+ * @generated from field: string description = 3;
8985
+ */
8986
+ description: string;
8987
+ /**
8988
+ * What this line contributed to total_estimated_cost. Absent until the
8989
+ * input probe supplies a duration.
8990
+ *
8991
+ * @generated from field: optional double estimated_amount_eur = 4;
8992
+ */
8993
+ estimatedAmountEur?: number;
8994
+ /**
8995
+ * What this line contributed to total_actual_cost. Absent until the job
8996
+ * settles; 0 for a line that settled at no charge (a failed job's outputs,
8997
+ * a fee whose artifact was never produced). Absent and zero are different
8998
+ * answers: one is "not known yet", the other is "free".
8999
+ *
9000
+ * Negative only on an adjustment line.
9001
+ *
9002
+ * @generated from field: optional double actual_amount_eur = 5;
9003
+ */
9004
+ actualAmountEur?: number;
9005
+ constructor(data?: PartialMessage<JobCostLine>);
9006
+ static readonly runtime: typeof proto3;
9007
+ static readonly typeName = "transcodely.v1.JobCostLine";
9008
+ static readonly fields: FieldList;
9009
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): JobCostLine;
9010
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): JobCostLine;
9011
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): JobCostLine;
9012
+ static equals(a: JobCostLine | PlainMessage<JobCostLine> | undefined, b: JobCostLine | PlainMessage<JobCostLine> | undefined): boolean;
9013
+ }
9014
+ /**
9015
+ * JobCostBreakdown decomposes a job's totals into the charges that make them
9016
+ * up, so a bill can be read rather than trusted.
9017
+ *
9018
+ * The money model it explains:
9019
+ *
9020
+ * billed total = sum of output costs + sum of fees
9021
+ *
9022
+ * The fees include the flat per-job processing fee, which appears here as an
9023
+ * ordinary `fee` line described "Processing fee" — so on a small job, the line
9024
+ * that explains most of the bill is the machine rather than the encode.
9025
+ *
9026
+ * Jobs created before the processing-fee model (August 2026) are explained
9027
+ * against the model they were billed under, in which the output half was
9028
+ * clamped:
9029
+ *
9030
+ * billed total = max(sum of output costs, minimum_charge_eur) + sum of fees
9031
+ *
9032
+ * That minimum charge was a job-level floor, so when it bound there was money
9033
+ * in the total that no single output accounted for. The difference appears as
9034
+ * its own `minimum_charge` line — the number that explains why a job with
9035
+ * EUR 0.0125 of renditions billed EUR 0.20125. It is present when the floor
9036
+ * raised either total; a side it did not raise reads 0. A job with no floor —
9037
+ * which is every job created since — simply never has the line.
9038
+ *
9039
+ * Guarantees, unconditionally:
9040
+ * - the lines' estimated_amount_eur sum to total_estimated_cost
9041
+ * - the lines' actual_amount_eur sum to total_actual_cost
9042
+ *
9043
+ * Nothing is clamped to make that hold. Anything the itemized lines do not
9044
+ * account for is carried by a signed `adjustment` line, which is why the
9045
+ * guarantee is absolute rather than usually-true.
9046
+ *
9047
+ * Outcome decides what the actual side contains, matching what is billed: a
9048
+ * completed or partial job is charged for the outputs it delivered plus its
9049
+ * fees; a canceled job for the outputs it had already delivered plus the
9050
+ * processing fee, if an encoder had begun work (a job canceled while still
9051
+ * queued has neither, and settles at 0); and a failed job bills nothing at all
9052
+ * — every line settles at 0, and so does total_actual_cost, from the moment it
9053
+ * fails.
9054
+ *
9055
+ * Fee lines cover every fee quoted on the job, INCLUDING fees that were later
9056
+ * voided (those settle at 0). Job.fees deliberately omits voided fees, because
9057
+ * that list answers "what am I charged for"; this one answers "how is this
9058
+ * number composed", and a voided fee is part of how the estimate was composed.
9059
+ *
9060
+ * Server-set; read-only.
9061
+ *
9062
+ * @generated from message transcodely.v1.JobCostBreakdown
9063
+ */
9064
+ declare class JobCostBreakdown extends Message<JobCostBreakdown> {
9065
+ /**
9066
+ * Lines in reading order: outputs, then fees, then the minimum charge, then
9067
+ * the adjustment.
9068
+ *
9069
+ * @generated from field: repeated transcodely.v1.JobCostLine lines = 1;
9070
+ */
9071
+ lines: JobCostLine[];
9072
+ /**
9073
+ * The totals the lines explain. Same values as Job.total_estimated_cost /
9074
+ * Job.total_actual_cost, repeated here so a breakdown can be verified
9075
+ * without carrying the job around.
9076
+ *
9077
+ * One deliberate difference: a failed job reports total_actual_cost as 0
9078
+ * here even in the rare case where no total was ever written for it (a job
9079
+ * the control plane failed after its worker vanished). A failed job bills
9080
+ * nothing, and "unknown" would be a worse answer than the one the policy
9081
+ * already guarantees.
9082
+ *
9083
+ * @generated from field: optional double total_estimated_cost = 2;
9084
+ */
9085
+ totalEstimatedCost?: number;
9086
+ /**
9087
+ * @generated from field: optional double total_actual_cost = 3;
9088
+ */
9089
+ totalActualCost?: number;
9090
+ constructor(data?: PartialMessage<JobCostBreakdown>);
9091
+ static readonly runtime: typeof proto3;
9092
+ static readonly typeName = "transcodely.v1.JobCostBreakdown";
9093
+ static readonly fields: FieldList;
9094
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): JobCostBreakdown;
9095
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): JobCostBreakdown;
9096
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): JobCostBreakdown;
9097
+ static equals(a: JobCostBreakdown | PlainMessage<JobCostBreakdown> | undefined, b: JobCostBreakdown | PlainMessage<JobCostBreakdown> | undefined): boolean;
9098
+ }
8434
9099
  /**
8435
9100
  * ClipConfig selects a sub-range of the input to encode instead of the full
8436
9101
  * duration. Applies to the whole job: every output is encoded from the
8437
9102
  * clipped range, and thumbnails/sprites are computed within it. Cuts are
8438
9103
  * frame-accurate (outputs are always re-encoded). Billing keys off the
8439
- * produced output duration, so clipping reduces cost accordingly (the
8440
- * per-job minimum charge, when in effect, still applies).
9104
+ * produced output duration, so clipping reduces the encode cost accordingly;
9105
+ * the flat per-job processing fee is unaffected, since the encoder still had
9106
+ * to be started. On a short clip the fee is therefore most of the bill.
8441
9107
  *
8442
9108
  * Bounds are stored with 0.1ms (4-decimal) precision; finer-grained values
8443
9109
  * are rounded. The minimum clip length is 1ms. A clip of {0, 0} is treated
@@ -11524,6 +12190,78 @@ declare class Organization extends Message<Organization> {
11524
12190
  * @generated from field: google.protobuf.Timestamp updated_at = 8;
11525
12191
  */
11526
12192
  updatedAt?: Timestamp;
12193
+ /**
12194
+ * Plan assigned to the organization, applying to every app under it that has
12195
+ * no plan of its own. Absent when the org carries none.
12196
+ *
12197
+ * @generated from field: optional string plan_id = 9;
12198
+ */
12199
+ planId?: string;
12200
+ /**
12201
+ * Display name of the org's plan. Absent exactly when plan_id is.
12202
+ *
12203
+ * @generated from field: optional string plan_name = 10;
12204
+ */
12205
+ planName?: string;
12206
+ /**
12207
+ * Whether this org must have a payment method on file. NOT ENFORCED: no
12208
+ * create, dispatch or delivery path reads this today. It records intent
12209
+ * ahead of the release that starts requiring one, at which point orgs
12210
+ * already carrying false are the grandfathered population.
12211
+ *
12212
+ * @generated from field: bool payment_method_required = 11;
12213
+ */
12214
+ paymentMethodRequired: boolean;
12215
+ /**
12216
+ * When the org was explicitly exempted from the payment-method requirement —
12217
+ * stamped when payment_method_required is turned off, cleared when it is
12218
+ * turned on. Absent for an org that has never been exempted, which today is
12219
+ * every org. Reflects the CURRENT exemption only; the change history lives in
12220
+ * the admin audit log.
12221
+ *
12222
+ * @generated from field: optional google.protobuf.Timestamp grandfathered_at = 12;
12223
+ */
12224
+ grandfatheredAt?: Timestamp;
12225
+ /**
12226
+ * Derived payment health. Always BILLING_STANDING_ACTIVE when
12227
+ * payment_method_required is false, whatever the facts below say.
12228
+ *
12229
+ * @generated from field: transcodely.v1.BillingStanding billing_standing = 13;
12230
+ */
12231
+ billingStanding: BillingStanding;
12232
+ /**
12233
+ * When the current grace window closes, present only while billing_standing
12234
+ * is BILLING_STANDING_GRACE.
12235
+ *
12236
+ * @generated from field: optional google.protobuf.Timestamp grace_until = 14;
12237
+ */
12238
+ graceUntil?: Timestamp;
12239
+ /**
12240
+ * Stable token explaining billing_standing; same vocabulary as
12241
+ * BillingProfile.standing_reason.
12242
+ *
12243
+ * @generated from field: string standing_reason = 15;
12244
+ */
12245
+ standingReason: string;
12246
+ /**
12247
+ * Whether a dunning episode is open right now — the payment provider has an
12248
+ * unpaid invoice for this org and is retrying it. TRUE together with
12249
+ * payment_method_required = false is the case that needs a human: the org is
12250
+ * exempt, so nothing will limit it, and the unpaid invoice will otherwise sit
12251
+ * there indefinitely.
12252
+ *
12253
+ * @generated from field: bool in_dunning = 16;
12254
+ */
12255
+ inDunning: boolean;
12256
+ /**
12257
+ * How many dunning episodes have run without a clean cycle in between. At 2 a
12258
+ * new episode gets no grace window at all. Reset only by an invoice that pays
12259
+ * while no episode is open — recovering INSIDE dunning does not earn the
12260
+ * window back.
12261
+ *
12262
+ * @generated from field: int32 consecutive_dunned_cycles = 17;
12263
+ */
12264
+ consecutiveDunnedCycles: number;
11527
12265
  constructor(data?: PartialMessage<Organization>);
11528
12266
  static readonly runtime: typeof proto3;
11529
12267
  static readonly typeName = "transcodely.v1.Organization";
@@ -13378,7 +14116,7 @@ declare class Transcodely {
13378
14116
  }
13379
14117
 
13380
14118
  /** SDK version. Bumped by release-please from package.json on each tag. */
13381
- declare const SDK_VERSION = "0.3.4";
14119
+ declare const SDK_VERSION = "0.3.6";
13382
14120
  /**
13383
14121
  * API version this SDK release is pinned to. Sent on every request as
13384
14122
  * `Transcodely-Version`. Customers can override per-client via the
@@ -13388,4 +14126,4 @@ declare const API_VERSION = "2026-05-03";
13388
14126
  /** Default base URL for the production Transcodely API. */
13389
14127
  declare const DEFAULT_BASE_URL = "https://api.transcodely.com";
13390
14128
 
13391
- 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, 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 };
14129
+ 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, 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, 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, DuplicatePresetRequest, DuplicatePresetResponse, EVENT_ID_HEADER, EnableHostingRequest, EnableHostingResponse, EncryptionScheme, EndpointHealthSummary, ErrorDetails, type EventBase, ExecutionTiming, type FieldViolation, GOPAlignmentMode, GcsCredentials, GcsOriginConfig, GetAPIKeyRequest, GetAPIKeyResponse, GetAppRequest, GetAppResponse, GetBillingProfileRequest, GetBillingProfileResponse, 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, PaymentMethodState, 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 };