@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.mjs CHANGED
@@ -147,6 +147,55 @@ proto3.util.setEnumType(BitrateMode, "transcodely.v1.BitrateMode", [
147
147
  { no: 2, name: "BITRATE_MODE_CBR" },
148
148
  { no: 3, name: "BITRATE_MODE_VBR" }
149
149
  ]);
150
+ var BillingStanding = /* @__PURE__ */ ((BillingStanding2) => {
151
+ BillingStanding2[BillingStanding2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
152
+ BillingStanding2[BillingStanding2["FREE"] = 1] = "FREE";
153
+ BillingStanding2[BillingStanding2["ACTIVE"] = 2] = "ACTIVE";
154
+ BillingStanding2[BillingStanding2["GRACE"] = 3] = "GRACE";
155
+ BillingStanding2[BillingStanding2["DELINQUENT"] = 4] = "DELINQUENT";
156
+ return BillingStanding2;
157
+ })(BillingStanding || {});
158
+ proto3.util.setEnumType(BillingStanding, "transcodely.v1.BillingStanding", [
159
+ { no: 0, name: "BILLING_STANDING_UNSPECIFIED" },
160
+ { no: 1, name: "BILLING_STANDING_FREE" },
161
+ { no: 2, name: "BILLING_STANDING_ACTIVE" },
162
+ { no: 3, name: "BILLING_STANDING_GRACE" },
163
+ { no: 4, name: "BILLING_STANDING_DELINQUENT" }
164
+ ]);
165
+ var BillingTreatment = /* @__PURE__ */ ((BillingTreatment2) => {
166
+ BillingTreatment2[BillingTreatment2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
167
+ BillingTreatment2[BillingTreatment2["NORMAL"] = 1] = "NORMAL";
168
+ BillingTreatment2[BillingTreatment2["TRUSTED"] = 2] = "TRUSTED";
169
+ BillingTreatment2[BillingTreatment2["EXEMPT"] = 3] = "EXEMPT";
170
+ return BillingTreatment2;
171
+ })(BillingTreatment || {});
172
+ proto3.util.setEnumType(BillingTreatment, "transcodely.v1.BillingTreatment", [
173
+ { no: 0, name: "BILLING_TREATMENT_UNSPECIFIED" },
174
+ { no: 1, name: "BILLING_TREATMENT_NORMAL" },
175
+ { no: 2, name: "BILLING_TREATMENT_TRUSTED" },
176
+ { no: 3, name: "BILLING_TREATMENT_EXEMPT" }
177
+ ]);
178
+ var DunningStage = /* @__PURE__ */ ((DunningStage2) => {
179
+ DunningStage2[DunningStage2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
180
+ DunningStage2[DunningStage2["NONE"] = 1] = "NONE";
181
+ DunningStage2[DunningStage2["PAST_DUE"] = 2] = "PAST_DUE";
182
+ DunningStage2[DunningStage2["WARNED"] = 3] = "WARNED";
183
+ DunningStage2[DunningStage2["SOFT_LIMITED"] = 4] = "SOFT_LIMITED";
184
+ DunningStage2[DunningStage2["SUSPENDED"] = 5] = "SUSPENDED";
185
+ DunningStage2[DunningStage2["DELETION_WARNED"] = 6] = "DELETION_WARNED";
186
+ DunningStage2[DunningStage2["WRITTEN_OFF"] = 7] = "WRITTEN_OFF";
187
+ return DunningStage2;
188
+ })(DunningStage || {});
189
+ proto3.util.setEnumType(DunningStage, "transcodely.v1.DunningStage", [
190
+ { no: 0, name: "DUNNING_STAGE_UNSPECIFIED" },
191
+ { no: 1, name: "DUNNING_STAGE_NONE" },
192
+ { no: 2, name: "DUNNING_STAGE_PAST_DUE" },
193
+ { no: 3, name: "DUNNING_STAGE_WARNED" },
194
+ { no: 4, name: "DUNNING_STAGE_SOFT_LIMITED" },
195
+ { no: 5, name: "DUNNING_STAGE_SUSPENDED" },
196
+ { no: 6, name: "DUNNING_STAGE_DELETION_WARNED" },
197
+ { no: 7, name: "DUNNING_STAGE_WRITTEN_OFF" }
198
+ ]);
150
199
  var PaginationRequest = class _PaginationRequest extends Message {
151
200
  /**
152
201
  * Maximum number of items to return (default: 20, max: 100).
@@ -1088,6 +1137,14 @@ var App = class _App extends Message {
1088
1137
  * @generated from field: optional double monthly_spend_limit_eur = 15;
1089
1138
  */
1090
1139
  monthlySpendLimitEur;
1140
+ /**
1141
+ * Player configuration for the app's hosted player and embeds. Unset when
1142
+ * never configured (the player uses its built-in defaults). Update via
1143
+ * AppService.UpdatePlayerConfig.
1144
+ *
1145
+ * @generated from field: optional transcodely.v1.PlayerConfig player_config = 16;
1146
+ */
1147
+ playerConfig;
1091
1148
  constructor(data) {
1092
1149
  super();
1093
1150
  proto3.util.initPartial(data, this);
@@ -1132,7 +1189,8 @@ var App = class _App extends Message {
1132
1189
  T: 9
1133
1190
  /* ScalarType.STRING */
1134
1191
  },
1135
- { no: 15, name: "monthly_spend_limit_eur", kind: "scalar", T: 1, opt: true }
1192
+ { no: 15, name: "monthly_spend_limit_eur", kind: "scalar", T: 1, opt: true },
1193
+ { no: 16, name: "player_config", kind: "message", T: PlayerConfig, opt: true }
1136
1194
  ]);
1137
1195
  static fromBinary(bytes, options) {
1138
1196
  return new _App().fromBinary(bytes, options);
@@ -1147,6 +1205,159 @@ var App = class _App extends Message {
1147
1205
  return proto3.util.equals(_App, a, b);
1148
1206
  }
1149
1207
  };
1208
+ var PlayerConfig = class _PlayerConfig extends Message {
1209
+ /**
1210
+ * Caption (subtitle) rendering style.
1211
+ *
1212
+ * @generated from field: optional transcodely.v1.CaptionStyle captions = 1;
1213
+ */
1214
+ captions;
1215
+ constructor(data) {
1216
+ super();
1217
+ proto3.util.initPartial(data, this);
1218
+ }
1219
+ static runtime = proto3;
1220
+ static typeName = "transcodely.v1.PlayerConfig";
1221
+ static fields = proto3.util.newFieldList(() => [
1222
+ { no: 1, name: "captions", kind: "message", T: CaptionStyle, opt: true }
1223
+ ]);
1224
+ static fromBinary(bytes, options) {
1225
+ return new _PlayerConfig().fromBinary(bytes, options);
1226
+ }
1227
+ static fromJson(jsonValue, options) {
1228
+ return new _PlayerConfig().fromJson(jsonValue, options);
1229
+ }
1230
+ static fromJsonString(jsonString, options) {
1231
+ return new _PlayerConfig().fromJsonString(jsonString, options);
1232
+ }
1233
+ static equals(a, b) {
1234
+ return proto3.util.equals(_PlayerConfig, a, b);
1235
+ }
1236
+ };
1237
+ var CaptionStyle = class _CaptionStyle extends Message {
1238
+ /**
1239
+ * Cue box background color. Player default: "#0a0a0a". Empty string clears.
1240
+ *
1241
+ * @generated from field: optional string background_color = 1;
1242
+ */
1243
+ backgroundColor;
1244
+ /**
1245
+ * Cue box background opacity, 0 (fully transparent) to 1 (solid).
1246
+ * Player default: 0.7.
1247
+ *
1248
+ * @generated from field: optional double background_opacity = 2;
1249
+ */
1250
+ backgroundOpacity;
1251
+ /**
1252
+ * Caption text color. Player default: "#ffffff". Empty string clears.
1253
+ *
1254
+ * @generated from field: optional string text_color = 3;
1255
+ */
1256
+ textColor;
1257
+ /**
1258
+ * Caption text size multiplier applied to the player's responsive base
1259
+ * size: 0.5 (half) to 2 (double). Player default: 1.
1260
+ *
1261
+ * @generated from field: optional double font_scale = 4;
1262
+ */
1263
+ fontScale;
1264
+ constructor(data) {
1265
+ super();
1266
+ proto3.util.initPartial(data, this);
1267
+ }
1268
+ static runtime = proto3;
1269
+ static typeName = "transcodely.v1.CaptionStyle";
1270
+ static fields = proto3.util.newFieldList(() => [
1271
+ { no: 1, name: "background_color", kind: "scalar", T: 9, opt: true },
1272
+ { no: 2, name: "background_opacity", kind: "scalar", T: 1, opt: true },
1273
+ { no: 3, name: "text_color", kind: "scalar", T: 9, opt: true },
1274
+ { no: 4, name: "font_scale", kind: "scalar", T: 1, opt: true }
1275
+ ]);
1276
+ static fromBinary(bytes, options) {
1277
+ return new _CaptionStyle().fromBinary(bytes, options);
1278
+ }
1279
+ static fromJson(jsonValue, options) {
1280
+ return new _CaptionStyle().fromJson(jsonValue, options);
1281
+ }
1282
+ static fromJsonString(jsonString, options) {
1283
+ return new _CaptionStyle().fromJsonString(jsonString, options);
1284
+ }
1285
+ static equals(a, b) {
1286
+ return proto3.util.equals(_CaptionStyle, a, b);
1287
+ }
1288
+ };
1289
+ var UpdatePlayerConfigRequest = class _UpdatePlayerConfigRequest extends Message {
1290
+ /**
1291
+ * App ID.
1292
+ *
1293
+ * @generated from field: string id = 1;
1294
+ */
1295
+ id = "";
1296
+ /**
1297
+ * Player configuration to merge. Fields present here overwrite the stored
1298
+ * value; absent fields are left unchanged.
1299
+ *
1300
+ * @generated from field: transcodely.v1.PlayerConfig player_config = 2;
1301
+ */
1302
+ playerConfig;
1303
+ constructor(data) {
1304
+ super();
1305
+ proto3.util.initPartial(data, this);
1306
+ }
1307
+ static runtime = proto3;
1308
+ static typeName = "transcodely.v1.UpdatePlayerConfigRequest";
1309
+ static fields = proto3.util.newFieldList(() => [
1310
+ {
1311
+ no: 1,
1312
+ name: "id",
1313
+ kind: "scalar",
1314
+ T: 9
1315
+ /* ScalarType.STRING */
1316
+ },
1317
+ { no: 2, name: "player_config", kind: "message", T: PlayerConfig }
1318
+ ]);
1319
+ static fromBinary(bytes, options) {
1320
+ return new _UpdatePlayerConfigRequest().fromBinary(bytes, options);
1321
+ }
1322
+ static fromJson(jsonValue, options) {
1323
+ return new _UpdatePlayerConfigRequest().fromJson(jsonValue, options);
1324
+ }
1325
+ static fromJsonString(jsonString, options) {
1326
+ return new _UpdatePlayerConfigRequest().fromJsonString(jsonString, options);
1327
+ }
1328
+ static equals(a, b) {
1329
+ return proto3.util.equals(_UpdatePlayerConfigRequest, a, b);
1330
+ }
1331
+ };
1332
+ var UpdatePlayerConfigResponse = class _UpdatePlayerConfigResponse extends Message {
1333
+ /**
1334
+ * The updated app with merged player config.
1335
+ *
1336
+ * @generated from field: transcodely.v1.App app = 1;
1337
+ */
1338
+ app;
1339
+ constructor(data) {
1340
+ super();
1341
+ proto3.util.initPartial(data, this);
1342
+ }
1343
+ static runtime = proto3;
1344
+ static typeName = "transcodely.v1.UpdatePlayerConfigResponse";
1345
+ static fields = proto3.util.newFieldList(() => [
1346
+ { no: 1, name: "app", kind: "message", T: App }
1347
+ ]);
1348
+ static fromBinary(bytes, options) {
1349
+ return new _UpdatePlayerConfigResponse().fromBinary(bytes, options);
1350
+ }
1351
+ static fromJson(jsonValue, options) {
1352
+ return new _UpdatePlayerConfigResponse().fromJson(jsonValue, options);
1353
+ }
1354
+ static fromJsonString(jsonString, options) {
1355
+ return new _UpdatePlayerConfigResponse().fromJsonString(jsonString, options);
1356
+ }
1357
+ static equals(a, b) {
1358
+ return proto3.util.equals(_UpdatePlayerConfigResponse, a, b);
1359
+ }
1360
+ };
1150
1361
  var CreateAppRequest = class _CreateAppRequest extends Message {
1151
1362
  /**
1152
1363
  * Parent organization ID.
@@ -2087,6 +2298,20 @@ var AppService = {
2087
2298
  O: UpdateHostingConfigResponse,
2088
2299
  kind: MethodKind.Unary
2089
2300
  },
2301
+ /**
2302
+ * Update player configuration for an app.
2303
+ * Merges provided fields into the existing player config. Applies to the
2304
+ * hosted player and embeds for every video in the app. Unlike hosting
2305
+ * config, this does not require hosting to be enabled first.
2306
+ *
2307
+ * @generated from rpc transcodely.v1.AppService.UpdatePlayerConfig
2308
+ */
2309
+ updatePlayerConfig: {
2310
+ name: "UpdatePlayerConfig",
2311
+ I: UpdatePlayerConfigRequest,
2312
+ O: UpdatePlayerConfigResponse,
2313
+ kind: MethodKind.Unary
2314
+ },
2090
2315
  /**
2091
2316
  * Set or clear an app's monthly spend limit for transcoding charges.
2092
2317
  * Providing monthly_spend_limit_eur sets the cap (must be > 0); omitting it
@@ -2258,6 +2483,7 @@ var InvoiceLineType = /* @__PURE__ */ ((InvoiceLineType2) => {
2258
2483
  InvoiceLineType2[InvoiceLineType2["FEE"] = 2] = "FEE";
2259
2484
  InvoiceLineType2[InvoiceLineType2["MIN_CHARGE"] = 3] = "MIN_CHARGE";
2260
2485
  InvoiceLineType2[InvoiceLineType2["ADJUSTMENT"] = 4] = "ADJUSTMENT";
2486
+ InvoiceLineType2[InvoiceLineType2["HOSTING"] = 5] = "HOSTING";
2261
2487
  return InvoiceLineType2;
2262
2488
  })(InvoiceLineType || {});
2263
2489
  proto3.util.setEnumType(InvoiceLineType, "transcodely.v1.InvoiceLineType", [
@@ -2265,7 +2491,49 @@ proto3.util.setEnumType(InvoiceLineType, "transcodely.v1.InvoiceLineType", [
2265
2491
  { no: 1, name: "INVOICE_LINE_TYPE_USAGE" },
2266
2492
  { no: 2, name: "INVOICE_LINE_TYPE_FEE" },
2267
2493
  { no: 3, name: "INVOICE_LINE_TYPE_MIN_CHARGE" },
2268
- { no: 4, name: "INVOICE_LINE_TYPE_ADJUSTMENT" }
2494
+ { no: 4, name: "INVOICE_LINE_TYPE_ADJUSTMENT" },
2495
+ { no: 5, name: "INVOICE_LINE_TYPE_HOSTING" }
2496
+ ]);
2497
+ var TrustTier = /* @__PURE__ */ ((TrustTier2) => {
2498
+ TrustTier2[TrustTier2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
2499
+ TrustTier2[TrustTier2["NEW"] = 1] = "NEW";
2500
+ TrustTier2[TrustTier2["ESTABLISHED"] = 2] = "ESTABLISHED";
2501
+ TrustTier2[TrustTier2["PROVEN"] = 3] = "PROVEN";
2502
+ return TrustTier2;
2503
+ })(TrustTier || {});
2504
+ proto3.util.setEnumType(TrustTier, "transcodely.v1.TrustTier", [
2505
+ { no: 0, name: "TRUST_TIER_UNSPECIFIED" },
2506
+ { no: 1, name: "TRUST_TIER_NEW" },
2507
+ { no: 2, name: "TRUST_TIER_ESTABLISHED" },
2508
+ { no: 3, name: "TRUST_TIER_PROVEN" }
2509
+ ]);
2510
+ var ExposureThresholdSource = /* @__PURE__ */ ((ExposureThresholdSource2) => {
2511
+ ExposureThresholdSource2[ExposureThresholdSource2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
2512
+ ExposureThresholdSource2[ExposureThresholdSource2["OVERRIDE"] = 1] = "OVERRIDE";
2513
+ ExposureThresholdSource2[ExposureThresholdSource2["TRUST_TIER"] = 2] = "TRUST_TIER";
2514
+ ExposureThresholdSource2[ExposureThresholdSource2["ORG_PLAN"] = 3] = "ORG_PLAN";
2515
+ ExposureThresholdSource2[ExposureThresholdSource2["PLATFORM_DEFAULT"] = 4] = "PLATFORM_DEFAULT";
2516
+ ExposureThresholdSource2[ExposureThresholdSource2["UNBOUNDED"] = 5] = "UNBOUNDED";
2517
+ return ExposureThresholdSource2;
2518
+ })(ExposureThresholdSource || {});
2519
+ proto3.util.setEnumType(ExposureThresholdSource, "transcodely.v1.ExposureThresholdSource", [
2520
+ { no: 0, name: "EXPOSURE_THRESHOLD_SOURCE_UNSPECIFIED" },
2521
+ { no: 1, name: "EXPOSURE_THRESHOLD_SOURCE_OVERRIDE" },
2522
+ { no: 2, name: "EXPOSURE_THRESHOLD_SOURCE_TRUST_TIER" },
2523
+ { no: 3, name: "EXPOSURE_THRESHOLD_SOURCE_ORG_PLAN" },
2524
+ { no: 4, name: "EXPOSURE_THRESHOLD_SOURCE_PLATFORM_DEFAULT" },
2525
+ { no: 5, name: "EXPOSURE_THRESHOLD_SOURCE_UNBOUNDED" }
2526
+ ]);
2527
+ var PaymentMethodState = /* @__PURE__ */ ((PaymentMethodState2) => {
2528
+ PaymentMethodState2[PaymentMethodState2["UNSPECIFIED"] = 0] = "UNSPECIFIED";
2529
+ PaymentMethodState2[PaymentMethodState2["NONE"] = 1] = "NONE";
2530
+ PaymentMethodState2[PaymentMethodState2["ON_FILE"] = 2] = "ON_FILE";
2531
+ return PaymentMethodState2;
2532
+ })(PaymentMethodState || {});
2533
+ proto3.util.setEnumType(PaymentMethodState, "transcodely.v1.PaymentMethodState", [
2534
+ { no: 0, name: "PAYMENT_METHOD_STATE_UNSPECIFIED" },
2535
+ { no: 1, name: "PAYMENT_METHOD_STATE_NONE" },
2536
+ { no: 2, name: "PAYMENT_METHOD_STATE_ON_FILE" }
2269
2537
  ]);
2270
2538
  var Invoice = class _Invoice extends Message {
2271
2539
  /**
@@ -2533,185 +2801,1225 @@ var InvoiceLineItem = class _InvoiceLineItem extends Message {
2533
2801
  return proto3.util.equals(_InvoiceLineItem, a, b);
2534
2802
  }
2535
2803
  };
2536
- var ListInvoicesRequest = class _ListInvoicesRequest extends Message {
2804
+ var BillingProfile = class _BillingProfile extends Message {
2537
2805
  /**
2538
- * Pagination parameters.
2806
+ * Object type, always "billing_profile".
2539
2807
  *
2540
- * @generated from field: transcodely.v1.PaginationRequest pagination = 1;
2808
+ * @generated from field: string object = 1;
2809
+ */
2810
+ object = "";
2811
+ /**
2812
+ * Organization this profile describes.
2813
+ *
2814
+ * @generated from field: string org_id = 2;
2815
+ */
2816
+ orgId = "";
2817
+ /**
2818
+ * Whether a payment method is on file. Determined by whether the payment
2819
+ * provider holds any payment method for this organization, and by nothing
2820
+ * else — in particular, a method missing its card details is still a
2821
+ * payment method.
2822
+ *
2823
+ * @generated from field: transcodely.v1.PaymentMethodState payment_method_state = 3;
2824
+ */
2825
+ paymentMethodState = 0 /* UNSPECIFIED */;
2826
+ /**
2827
+ * The methods the provider holds, for display only. Empty when the state is
2828
+ * "none", and never empty when the state is "on_file".
2829
+ *
2830
+ * @generated from field: repeated transcodely.v1.BillingPaymentMethod payment_methods = 4;
2831
+ */
2832
+ paymentMethods = [];
2833
+ /**
2834
+ * The organization's billing email, which the payment provider requires
2835
+ * before it will accept a payment method. Absent when unset.
2836
+ *
2837
+ * @generated from field: optional string billing_email = 5;
2838
+ */
2839
+ billingEmail;
2840
+ /**
2841
+ * The organization's derived payment health, and what its usage limits
2842
+ * resolve from. See BillingStanding.
2843
+ *
2844
+ * @generated from field: transcodely.v1.BillingStanding standing = 6;
2845
+ */
2846
+ standing = 0 /* UNSPECIFIED */;
2847
+ /**
2848
+ * When the current grace window closes. Present if and only if standing is
2849
+ * BILLING_STANDING_GRACE. At this instant the account is already past it —
2850
+ * the deadline is inclusive — and what it becomes is determined by
2851
+ * standing_reason: a card problem decays to FREE, an unpaid invoice to
2852
+ * DELINQUENT.
2853
+ *
2854
+ * @generated from field: optional google.protobuf.Timestamp grace_until = 7;
2855
+ */
2856
+ graceUntil;
2857
+ /**
2858
+ * Why standing is what it is, as a stable token to switch on rather than
2859
+ * copy to display:
2860
+ *
2861
+ * "" nothing is wrong
2862
+ * "exempt" the org is not required to hold a payment
2863
+ * method, so standing is always active
2864
+ * "no_payment_method" none has ever been on file
2865
+ * "card_expired" one is on file and its expiry has passed
2866
+ * "card_removed" one we had observed is gone
2867
+ * "invoice_past_due" an invoice failed to collect
2868
+ * "repeated_invoice_failure" a second consecutive failure, which earns no
2869
+ * grace window at all
2870
+ *
2871
+ * New tokens may be added; treat an unrecognized one as a generic billing
2872
+ * problem rather than failing.
2873
+ *
2874
+ * @generated from field: string standing_reason = 8;
2875
+ */
2876
+ standingReason = "";
2877
+ /**
2878
+ * Whether this organization must hold a payment method. FALSE means it is
2879
+ * exempt — organizations predating the requirement are, and an operator may
2880
+ * exempt one deliberately — in which case standing is always
2881
+ * BILLING_STANDING_ACTIVE and no banner or prompt about payment methods
2882
+ * should be shown.
2883
+ *
2884
+ * Exempt is not free service: the organization still accrues usage and is
2885
+ * still invoiced. It simply is not limited for lacking a card on file.
2886
+ *
2887
+ * @generated from field: bool payment_method_required = 9;
2888
+ */
2889
+ paymentMethodRequired = false;
2890
+ constructor(data) {
2891
+ super();
2892
+ proto3.util.initPartial(data, this);
2893
+ }
2894
+ static runtime = proto3;
2895
+ static typeName = "transcodely.v1.BillingProfile";
2896
+ static fields = proto3.util.newFieldList(() => [
2897
+ {
2898
+ no: 1,
2899
+ name: "object",
2900
+ kind: "scalar",
2901
+ T: 9
2902
+ /* ScalarType.STRING */
2903
+ },
2904
+ {
2905
+ no: 2,
2906
+ name: "org_id",
2907
+ kind: "scalar",
2908
+ T: 9
2909
+ /* ScalarType.STRING */
2910
+ },
2911
+ { no: 3, name: "payment_method_state", kind: "enum", T: proto3.getEnumType(PaymentMethodState) },
2912
+ { no: 4, name: "payment_methods", kind: "message", T: BillingPaymentMethod, repeated: true },
2913
+ { no: 5, name: "billing_email", kind: "scalar", T: 9, opt: true },
2914
+ { no: 6, name: "standing", kind: "enum", T: proto3.getEnumType(BillingStanding) },
2915
+ { no: 7, name: "grace_until", kind: "message", T: Timestamp, opt: true },
2916
+ {
2917
+ no: 8,
2918
+ name: "standing_reason",
2919
+ kind: "scalar",
2920
+ T: 9
2921
+ /* ScalarType.STRING */
2922
+ },
2923
+ {
2924
+ no: 9,
2925
+ name: "payment_method_required",
2926
+ kind: "scalar",
2927
+ T: 8
2928
+ /* ScalarType.BOOL */
2929
+ }
2930
+ ]);
2931
+ static fromBinary(bytes, options) {
2932
+ return new _BillingProfile().fromBinary(bytes, options);
2933
+ }
2934
+ static fromJson(jsonValue, options) {
2935
+ return new _BillingProfile().fromJson(jsonValue, options);
2936
+ }
2937
+ static fromJsonString(jsonString, options) {
2938
+ return new _BillingProfile().fromJsonString(jsonString, options);
2939
+ }
2940
+ static equals(a, b) {
2941
+ return proto3.util.equals(_BillingProfile, a, b);
2942
+ }
2943
+ };
2944
+ var BillingPaymentMethod = class _BillingPaymentMethod extends Message {
2945
+ /**
2946
+ * The payment provider's identifier for this method.
2947
+ *
2948
+ * @generated from field: string id = 1;
2949
+ */
2950
+ id = "";
2951
+ /**
2952
+ * Method family: "card", or "generic" for everything else the provider
2953
+ * supports (direct debit and similar). Always present.
2954
+ *
2955
+ * @generated from field: string type = 2;
2956
+ */
2957
+ type = "";
2958
+ /**
2959
+ * Card network, e.g. "visa" or "mastercard". Cards only, and only when the
2960
+ * provider exposes it.
2961
+ *
2962
+ * @generated from field: optional string brand = 3;
2963
+ */
2964
+ brand;
2965
+ /**
2966
+ * Last four digits of the card number. Cards only, and only when the
2967
+ * provider exposes it.
2968
+ *
2969
+ * @generated from field: optional string last4 = 4;
2970
+ */
2971
+ last4;
2972
+ /**
2973
+ * Expiry month, 1-12. Cards only, and only when the provider exposes it.
2974
+ *
2975
+ * @generated from field: optional int32 exp_month = 5;
2976
+ */
2977
+ expMonth;
2978
+ /**
2979
+ * Expiry year, four digits. Cards only, and only when the provider exposes
2980
+ * it.
2981
+ *
2982
+ * @generated from field: optional int32 exp_year = 6;
2983
+ */
2984
+ expYear;
2985
+ /**
2986
+ * Whether this is the method the provider charges by default. Advisory: the
2987
+ * provider does not always mark a default, so false here does not mean the
2988
+ * method is unused, and it is never a signal about the organization's
2989
+ * payment standing.
2990
+ *
2991
+ * @generated from field: bool is_default = 7;
2992
+ */
2993
+ isDefault = false;
2994
+ constructor(data) {
2995
+ super();
2996
+ proto3.util.initPartial(data, this);
2997
+ }
2998
+ static runtime = proto3;
2999
+ static typeName = "transcodely.v1.BillingPaymentMethod";
3000
+ static fields = proto3.util.newFieldList(() => [
3001
+ {
3002
+ no: 1,
3003
+ name: "id",
3004
+ kind: "scalar",
3005
+ T: 9
3006
+ /* ScalarType.STRING */
3007
+ },
3008
+ {
3009
+ no: 2,
3010
+ name: "type",
3011
+ kind: "scalar",
3012
+ T: 9
3013
+ /* ScalarType.STRING */
3014
+ },
3015
+ { no: 3, name: "brand", kind: "scalar", T: 9, opt: true },
3016
+ { no: 4, name: "last4", kind: "scalar", T: 9, opt: true },
3017
+ { no: 5, name: "exp_month", kind: "scalar", T: 5, opt: true },
3018
+ { no: 6, name: "exp_year", kind: "scalar", T: 5, opt: true },
3019
+ {
3020
+ no: 7,
3021
+ name: "is_default",
3022
+ kind: "scalar",
3023
+ T: 8
3024
+ /* ScalarType.BOOL */
3025
+ }
3026
+ ]);
3027
+ static fromBinary(bytes, options) {
3028
+ return new _BillingPaymentMethod().fromBinary(bytes, options);
3029
+ }
3030
+ static fromJson(jsonValue, options) {
3031
+ return new _BillingPaymentMethod().fromJson(jsonValue, options);
3032
+ }
3033
+ static fromJsonString(jsonString, options) {
3034
+ return new _BillingPaymentMethod().fromJsonString(jsonString, options);
3035
+ }
3036
+ static equals(a, b) {
3037
+ return proto3.util.equals(_BillingPaymentMethod, a, b);
3038
+ }
3039
+ };
3040
+ var BillingPortalSession = class _BillingPortalSession extends Message {
3041
+ /**
3042
+ * Object type, always "billing_portal_session".
3043
+ *
3044
+ * @generated from field: string object = 1;
3045
+ */
3046
+ object = "";
3047
+ /**
3048
+ * Where to send the browser. Single-use and short-lived; request a new
3049
+ * session rather than storing this.
3050
+ *
3051
+ * Points at the portal's settings section, where payment methods are managed,
3052
+ * rather than at its landing page.
3053
+ *
3054
+ * @generated from field: string url = 2;
3055
+ */
3056
+ url = "";
3057
+ /**
3058
+ * When the session stops working. Applies to url and session_token alike —
3059
+ * they are two ways into the same session.
3060
+ *
3061
+ * @generated from field: google.protobuf.Timestamp expires_at = 3;
3062
+ */
3063
+ expiresAt;
3064
+ /**
3065
+ * Short-lived (~1h), single-customer-scoped token for the provider's embedded
3066
+ * payment-method form, so a card can be added in place instead of by
3067
+ * redirecting to the hosted portal.
3068
+ *
3069
+ * Same trust level as `url`, which reaches the same portal as the same
3070
+ * customer with no further authentication. It is still a bare credential:
3071
+ * hand it to the embed, never log or store it, and request a new session
3072
+ * instead of reusing one.
3073
+ *
3074
+ * Empty when the configured provider exposes no such token; fall back to
3075
+ * opening `url`.
3076
+ *
3077
+ * @generated from field: string session_token = 4;
3078
+ */
3079
+ sessionToken = "";
3080
+ constructor(data) {
3081
+ super();
3082
+ proto3.util.initPartial(data, this);
3083
+ }
3084
+ static runtime = proto3;
3085
+ static typeName = "transcodely.v1.BillingPortalSession";
3086
+ static fields = proto3.util.newFieldList(() => [
3087
+ {
3088
+ no: 1,
3089
+ name: "object",
3090
+ kind: "scalar",
3091
+ T: 9
3092
+ /* ScalarType.STRING */
3093
+ },
3094
+ {
3095
+ no: 2,
3096
+ name: "url",
3097
+ kind: "scalar",
3098
+ T: 9
3099
+ /* ScalarType.STRING */
3100
+ },
3101
+ { no: 3, name: "expires_at", kind: "message", T: Timestamp },
3102
+ {
3103
+ no: 4,
3104
+ name: "session_token",
3105
+ kind: "scalar",
3106
+ T: 9
3107
+ /* ScalarType.STRING */
3108
+ }
3109
+ ]);
3110
+ static fromBinary(bytes, options) {
3111
+ return new _BillingPortalSession().fromBinary(bytes, options);
3112
+ }
3113
+ static fromJson(jsonValue, options) {
3114
+ return new _BillingPortalSession().fromJson(jsonValue, options);
3115
+ }
3116
+ static fromJsonString(jsonString, options) {
3117
+ return new _BillingPortalSession().fromJsonString(jsonString, options);
3118
+ }
3119
+ static equals(a, b) {
3120
+ return proto3.util.equals(_BillingPortalSession, a, b);
3121
+ }
3122
+ };
3123
+ var Budget = class _Budget extends Message {
3124
+ /**
3125
+ * Object type, always "budget".
3126
+ *
3127
+ * @generated from field: string object = 1;
3128
+ */
3129
+ object = "";
3130
+ /**
3131
+ * Organization this budget belongs to.
3132
+ *
3133
+ * @generated from field: string org_id = 2;
3134
+ */
3135
+ orgId = "";
3136
+ /**
3137
+ * The monthly budget in EUR. Absent when no budget is set, which is the
3138
+ * default and means no alerts are sent.
3139
+ *
3140
+ * @generated from field: optional double amount_eur = 3;
3141
+ */
3142
+ amountEur;
3143
+ /**
3144
+ * Spend so far in the current billing period, in EUR.
3145
+ *
3146
+ * This is the same ledger, over the same window, that GetUpcomingInvoice
3147
+ * reports — it covers transcoding AND hosting for every app in the
3148
+ * organization, and it excludes usage that will never be billed. It is
3149
+ * therefore NOT the same number as AppService.GetSpend, which is scoped to
3150
+ * one app, counts estimates for jobs still running, and knows nothing about
3151
+ * hosting.
3152
+ *
3153
+ * @generated from field: double spent_eur = 4;
3154
+ */
3155
+ spentEur = 0;
3156
+ /**
3157
+ * spent_eur as a percentage of amount_eur. Absent when no budget is set.
3158
+ * Not capped at 100: an organization at 240% of its budget is shown 240.
3159
+ *
3160
+ * @generated from field: optional double used_percent = 5;
3161
+ */
3162
+ usedPercent;
3163
+ /**
3164
+ * Start of the current billing period (inclusive), UTC.
3165
+ *
3166
+ * @generated from field: google.protobuf.Timestamp period_start = 6;
3167
+ */
3168
+ periodStart;
3169
+ /**
3170
+ * End of the current billing period (exclusive), UTC. Spend resets here.
3171
+ *
3172
+ * @generated from field: google.protobuf.Timestamp period_end = 7;
3173
+ */
3174
+ periodEnd;
3175
+ /**
3176
+ * The percentage steps that send an alert email, ascending. Fixed at
3177
+ * 50, 80 and 100 today; new steps may be added.
3178
+ *
3179
+ * @generated from field: repeated int32 alert_steps = 8;
3180
+ */
3181
+ alertSteps = [];
3182
+ /**
3183
+ * The steps already emailed this billing period, ascending. Fire-once per
3184
+ * period: a step listed here does not send again, and changing the budget
3185
+ * mid-period does not re-arm it. Empty at the start of every period.
3186
+ *
3187
+ * @generated from field: repeated int32 notified_steps = 9;
3188
+ */
3189
+ notifiedSteps = [];
3190
+ /**
3191
+ * ISO 4217 currency code for every amount here. Always "EUR" today.
3192
+ *
3193
+ * @generated from field: string currency = 10;
3194
+ */
3195
+ currency = "";
3196
+ constructor(data) {
3197
+ super();
3198
+ proto3.util.initPartial(data, this);
3199
+ }
3200
+ static runtime = proto3;
3201
+ static typeName = "transcodely.v1.Budget";
3202
+ static fields = proto3.util.newFieldList(() => [
3203
+ {
3204
+ no: 1,
3205
+ name: "object",
3206
+ kind: "scalar",
3207
+ T: 9
3208
+ /* ScalarType.STRING */
3209
+ },
3210
+ {
3211
+ no: 2,
3212
+ name: "org_id",
3213
+ kind: "scalar",
3214
+ T: 9
3215
+ /* ScalarType.STRING */
3216
+ },
3217
+ { no: 3, name: "amount_eur", kind: "scalar", T: 1, opt: true },
3218
+ {
3219
+ no: 4,
3220
+ name: "spent_eur",
3221
+ kind: "scalar",
3222
+ T: 1
3223
+ /* ScalarType.DOUBLE */
3224
+ },
3225
+ { no: 5, name: "used_percent", kind: "scalar", T: 1, opt: true },
3226
+ { no: 6, name: "period_start", kind: "message", T: Timestamp },
3227
+ { no: 7, name: "period_end", kind: "message", T: Timestamp },
3228
+ { no: 8, name: "alert_steps", kind: "scalar", T: 5, repeated: true },
3229
+ { no: 9, name: "notified_steps", kind: "scalar", T: 5, repeated: true },
3230
+ {
3231
+ no: 10,
3232
+ name: "currency",
3233
+ kind: "scalar",
3234
+ T: 9
3235
+ /* ScalarType.STRING */
3236
+ }
3237
+ ]);
3238
+ static fromBinary(bytes, options) {
3239
+ return new _Budget().fromBinary(bytes, options);
3240
+ }
3241
+ static fromJson(jsonValue, options) {
3242
+ return new _Budget().fromJson(jsonValue, options);
3243
+ }
3244
+ static fromJsonString(jsonString, options) {
3245
+ return new _Budget().fromJsonString(jsonString, options);
3246
+ }
3247
+ static equals(a, b) {
3248
+ return proto3.util.equals(_Budget, a, b);
3249
+ }
3250
+ };
3251
+ var OutstandingBalance = class _OutstandingBalance extends Message {
3252
+ /**
3253
+ * Object type, always "outstanding_balance".
3254
+ *
3255
+ * @generated from field: string object = 1;
3256
+ */
3257
+ object = "";
3258
+ /**
3259
+ * Organization this balance belongs to.
3260
+ *
3261
+ * @generated from field: string org_id = 2;
3262
+ */
3263
+ orgId = "";
3264
+ /**
3265
+ * The unsettled amount, in integer minor units (cents) of `currency`.
3266
+ * Rendered as a JSON string per the protobuf 64-bit integer mapping.
3267
+ *
3268
+ * @generated from field: int64 outstanding_cents = 3;
3269
+ */
3270
+ outstandingCents = protoInt64.zero;
3271
+ /**
3272
+ * The trust tier the organization's payment history puts it on, which is what
3273
+ * sets the threshold unless an operator or a plan overrides it.
3274
+ *
3275
+ * @generated from field: transcodely.v1.TrustTier tier = 4;
3276
+ */
3277
+ tier = 0 /* UNSPECIFIED */;
3278
+ /**
3279
+ * How many statements this organization has PAID. The input behind `tier`,
3280
+ * surfaced so the path to a higher threshold is visible rather than implied.
3281
+ * A mid-cycle settlement counts once it is paid, like any other statement.
3282
+ *
3283
+ * @generated from field: int64 settled_payments = 5;
3284
+ */
3285
+ settledPayments = protoInt64.zero;
3286
+ /**
3287
+ * The threshold, in cents. Absent when no threshold applies at all — a
3288
+ * long-standing account with no plan ceiling has none, which is the intended
3289
+ * destination of the whole ladder.
3290
+ *
3291
+ * @generated from field: optional int64 threshold_cents = 6;
3292
+ */
3293
+ thresholdCents;
3294
+ /**
3295
+ * Which rung supplied `threshold_cents`.
3296
+ *
3297
+ * @generated from field: transcodely.v1.ExposureThresholdSource threshold_source = 7;
3298
+ */
3299
+ thresholdSource = 0 /* UNSPECIFIED */;
3300
+ /**
3301
+ * The amount at which new-job admission stops: twice `threshold_cents`.
3302
+ * Absent exactly when `threshold_cents` is.
3303
+ *
3304
+ * @generated from field: optional int64 hard_stop_cents = 8;
3305
+ */
3306
+ hardStopCents;
3307
+ /**
3308
+ * Whether new jobs are being refused right now. Reads the same numbers the
3309
+ * admission gate reads, so a card showing false cannot coexist with a create
3310
+ * being rejected for this reason.
3311
+ *
3312
+ * @generated from field: bool blocked = 9;
3313
+ */
3314
+ blocked = false;
3315
+ /**
3316
+ * `outstanding_cents` as a percentage of `threshold_cents`. Absent when no
3317
+ * threshold applies. Not capped at 100: an organization at 180% is shown 180.
3318
+ *
3319
+ * @generated from field: optional double used_percent = 10;
3320
+ */
3321
+ usedPercent;
3322
+ /**
3323
+ * The percentage steps that send a reminder email, ascending. 80, 100, 125,
3324
+ * 150, 175 and 200 today; the last one is where admission stops.
3325
+ *
3326
+ * @generated from field: repeated int32 alert_steps = 11;
3327
+ */
3328
+ alertSteps = [];
3329
+ /**
3330
+ * The steps already emailed for the current accrual window, ascending.
3331
+ * Fire-once: a step listed here does not send again until the balance is
3332
+ * settled or the billing period rolls.
3333
+ *
3334
+ * @generated from field: repeated int32 notified_steps = 12;
3335
+ */
3336
+ notifiedSteps = [];
3337
+ /**
3338
+ * ISO 4217 currency code for every amount here. Always "EUR" today.
3339
+ *
3340
+ * @generated from field: string currency = 13;
3341
+ */
3342
+ currency = "";
3343
+ /**
3344
+ * Whether SettleOutstandingBalance is available on this deployment. False
3345
+ * while the settlement rail is disabled — a billing page should not render a
3346
+ * "pay now" action that can only fail.
3347
+ *
3348
+ * @generated from field: bool settlement_available = 14;
3349
+ */
3350
+ settlementAvailable = false;
3351
+ constructor(data) {
3352
+ super();
3353
+ proto3.util.initPartial(data, this);
3354
+ }
3355
+ static runtime = proto3;
3356
+ static typeName = "transcodely.v1.OutstandingBalance";
3357
+ static fields = proto3.util.newFieldList(() => [
3358
+ {
3359
+ no: 1,
3360
+ name: "object",
3361
+ kind: "scalar",
3362
+ T: 9
3363
+ /* ScalarType.STRING */
3364
+ },
3365
+ {
3366
+ no: 2,
3367
+ name: "org_id",
3368
+ kind: "scalar",
3369
+ T: 9
3370
+ /* ScalarType.STRING */
3371
+ },
3372
+ {
3373
+ no: 3,
3374
+ name: "outstanding_cents",
3375
+ kind: "scalar",
3376
+ T: 3
3377
+ /* ScalarType.INT64 */
3378
+ },
3379
+ { no: 4, name: "tier", kind: "enum", T: proto3.getEnumType(TrustTier) },
3380
+ {
3381
+ no: 5,
3382
+ name: "settled_payments",
3383
+ kind: "scalar",
3384
+ T: 3
3385
+ /* ScalarType.INT64 */
3386
+ },
3387
+ { no: 6, name: "threshold_cents", kind: "scalar", T: 3, opt: true },
3388
+ { no: 7, name: "threshold_source", kind: "enum", T: proto3.getEnumType(ExposureThresholdSource) },
3389
+ { no: 8, name: "hard_stop_cents", kind: "scalar", T: 3, opt: true },
3390
+ {
3391
+ no: 9,
3392
+ name: "blocked",
3393
+ kind: "scalar",
3394
+ T: 8
3395
+ /* ScalarType.BOOL */
3396
+ },
3397
+ { no: 10, name: "used_percent", kind: "scalar", T: 1, opt: true },
3398
+ { no: 11, name: "alert_steps", kind: "scalar", T: 5, repeated: true },
3399
+ { no: 12, name: "notified_steps", kind: "scalar", T: 5, repeated: true },
3400
+ {
3401
+ no: 13,
3402
+ name: "currency",
3403
+ kind: "scalar",
3404
+ T: 9
3405
+ /* ScalarType.STRING */
3406
+ },
3407
+ {
3408
+ no: 14,
3409
+ name: "settlement_available",
3410
+ kind: "scalar",
3411
+ T: 8
3412
+ /* ScalarType.BOOL */
3413
+ }
3414
+ ]);
3415
+ static fromBinary(bytes, options) {
3416
+ return new _OutstandingBalance().fromBinary(bytes, options);
3417
+ }
3418
+ static fromJson(jsonValue, options) {
3419
+ return new _OutstandingBalance().fromJson(jsonValue, options);
3420
+ }
3421
+ static fromJsonString(jsonString, options) {
3422
+ return new _OutstandingBalance().fromJsonString(jsonString, options);
3423
+ }
3424
+ static equals(a, b) {
3425
+ return proto3.util.equals(_OutstandingBalance, a, b);
3426
+ }
3427
+ };
3428
+ var Settlement = class _Settlement extends Message {
3429
+ /**
3430
+ * Object type, always "settlement".
3431
+ *
3432
+ * @generated from field: string object = 1;
3433
+ */
3434
+ object = "";
3435
+ /**
3436
+ * The statement the balance was captured onto. It is an ordinary invoice —
3437
+ * readable through GetInvoice, listed by ListInvoices, and paid through the
3438
+ * same provider flow as any other.
3439
+ *
3440
+ * @generated from field: string invoice_id = 2;
3441
+ */
3442
+ invoiceId = "";
3443
+ /**
3444
+ * What it came to, in integer minor units (cents).
3445
+ *
3446
+ * @generated from field: int64 amount_cents = 3;
3447
+ */
3448
+ amountCents = protoInt64.zero;
3449
+ /**
3450
+ * The window the statement covers, UTC. It starts where the previous
3451
+ * statement ended (or at the period start) and ends at the settlement
3452
+ * instant.
3453
+ *
3454
+ * @generated from field: google.protobuf.Timestamp period_start = 4;
3455
+ */
3456
+ periodStart;
3457
+ /**
3458
+ * @generated from field: google.protobuf.Timestamp period_end = 5;
3459
+ */
3460
+ periodEnd;
3461
+ /**
3462
+ * ISO 4217 currency code. Always "EUR" today.
3463
+ *
3464
+ * @generated from field: string currency = 6;
3465
+ */
3466
+ currency = "";
3467
+ constructor(data) {
3468
+ super();
3469
+ proto3.util.initPartial(data, this);
3470
+ }
3471
+ static runtime = proto3;
3472
+ static typeName = "transcodely.v1.Settlement";
3473
+ static fields = proto3.util.newFieldList(() => [
3474
+ {
3475
+ no: 1,
3476
+ name: "object",
3477
+ kind: "scalar",
3478
+ T: 9
3479
+ /* ScalarType.STRING */
3480
+ },
3481
+ {
3482
+ no: 2,
3483
+ name: "invoice_id",
3484
+ kind: "scalar",
3485
+ T: 9
3486
+ /* ScalarType.STRING */
3487
+ },
3488
+ {
3489
+ no: 3,
3490
+ name: "amount_cents",
3491
+ kind: "scalar",
3492
+ T: 3
3493
+ /* ScalarType.INT64 */
3494
+ },
3495
+ { no: 4, name: "period_start", kind: "message", T: Timestamp },
3496
+ { no: 5, name: "period_end", kind: "message", T: Timestamp },
3497
+ {
3498
+ no: 6,
3499
+ name: "currency",
3500
+ kind: "scalar",
3501
+ T: 9
3502
+ /* ScalarType.STRING */
3503
+ }
3504
+ ]);
3505
+ static fromBinary(bytes, options) {
3506
+ return new _Settlement().fromBinary(bytes, options);
3507
+ }
3508
+ static fromJson(jsonValue, options) {
3509
+ return new _Settlement().fromJson(jsonValue, options);
3510
+ }
3511
+ static fromJsonString(jsonString, options) {
3512
+ return new _Settlement().fromJsonString(jsonString, options);
3513
+ }
3514
+ static equals(a, b) {
3515
+ return proto3.util.equals(_Settlement, a, b);
3516
+ }
3517
+ };
3518
+ var ListInvoicesRequest = class _ListInvoicesRequest extends Message {
3519
+ /**
3520
+ * Pagination parameters.
3521
+ *
3522
+ * @generated from field: transcodely.v1.PaginationRequest pagination = 1;
3523
+ */
3524
+ pagination;
3525
+ constructor(data) {
3526
+ super();
3527
+ proto3.util.initPartial(data, this);
3528
+ }
3529
+ static runtime = proto3;
3530
+ static typeName = "transcodely.v1.ListInvoicesRequest";
3531
+ static fields = proto3.util.newFieldList(() => [
3532
+ { no: 1, name: "pagination", kind: "message", T: PaginationRequest }
3533
+ ]);
3534
+ static fromBinary(bytes, options) {
3535
+ return new _ListInvoicesRequest().fromBinary(bytes, options);
3536
+ }
3537
+ static fromJson(jsonValue, options) {
3538
+ return new _ListInvoicesRequest().fromJson(jsonValue, options);
3539
+ }
3540
+ static fromJsonString(jsonString, options) {
3541
+ return new _ListInvoicesRequest().fromJsonString(jsonString, options);
3542
+ }
3543
+ static equals(a, b) {
3544
+ return proto3.util.equals(_ListInvoicesRequest, a, b);
3545
+ }
3546
+ };
3547
+ var ListInvoicesResponse = class _ListInvoicesResponse extends Message {
3548
+ /**
3549
+ * Invoices, newest period first. Line items are omitted here; fetch a single
3550
+ * invoice to get them.
3551
+ *
3552
+ * @generated from field: repeated transcodely.v1.Invoice invoices = 1;
3553
+ */
3554
+ invoices = [];
3555
+ /**
3556
+ * Pagination metadata.
3557
+ *
3558
+ * @generated from field: transcodely.v1.PaginationResponse pagination = 2;
3559
+ */
3560
+ pagination;
3561
+ constructor(data) {
3562
+ super();
3563
+ proto3.util.initPartial(data, this);
3564
+ }
3565
+ static runtime = proto3;
3566
+ static typeName = "transcodely.v1.ListInvoicesResponse";
3567
+ static fields = proto3.util.newFieldList(() => [
3568
+ { no: 1, name: "invoices", kind: "message", T: Invoice, repeated: true },
3569
+ { no: 2, name: "pagination", kind: "message", T: PaginationResponse }
3570
+ ]);
3571
+ static fromBinary(bytes, options) {
3572
+ return new _ListInvoicesResponse().fromBinary(bytes, options);
3573
+ }
3574
+ static fromJson(jsonValue, options) {
3575
+ return new _ListInvoicesResponse().fromJson(jsonValue, options);
3576
+ }
3577
+ static fromJsonString(jsonString, options) {
3578
+ return new _ListInvoicesResponse().fromJsonString(jsonString, options);
3579
+ }
3580
+ static equals(a, b) {
3581
+ return proto3.util.equals(_ListInvoicesResponse, a, b);
3582
+ }
3583
+ };
3584
+ var GetInvoiceRequest = class _GetInvoiceRequest extends Message {
3585
+ /**
3586
+ * Invoice ID (e.g., "inv_a1b2c3d4e5f6").
3587
+ *
3588
+ * @generated from field: string id = 1;
3589
+ */
3590
+ id = "";
3591
+ constructor(data) {
3592
+ super();
3593
+ proto3.util.initPartial(data, this);
3594
+ }
3595
+ static runtime = proto3;
3596
+ static typeName = "transcodely.v1.GetInvoiceRequest";
3597
+ static fields = proto3.util.newFieldList(() => [
3598
+ {
3599
+ no: 1,
3600
+ name: "id",
3601
+ kind: "scalar",
3602
+ T: 9
3603
+ /* ScalarType.STRING */
3604
+ }
3605
+ ]);
3606
+ static fromBinary(bytes, options) {
3607
+ return new _GetInvoiceRequest().fromBinary(bytes, options);
3608
+ }
3609
+ static fromJson(jsonValue, options) {
3610
+ return new _GetInvoiceRequest().fromJson(jsonValue, options);
3611
+ }
3612
+ static fromJsonString(jsonString, options) {
3613
+ return new _GetInvoiceRequest().fromJsonString(jsonString, options);
3614
+ }
3615
+ static equals(a, b) {
3616
+ return proto3.util.equals(_GetInvoiceRequest, a, b);
3617
+ }
3618
+ };
3619
+ var GetInvoiceResponse = class _GetInvoiceResponse extends Message {
3620
+ /**
3621
+ * The requested invoice, with its line items.
3622
+ *
3623
+ * @generated from field: transcodely.v1.Invoice invoice = 1;
3624
+ */
3625
+ invoice;
3626
+ constructor(data) {
3627
+ super();
3628
+ proto3.util.initPartial(data, this);
3629
+ }
3630
+ static runtime = proto3;
3631
+ static typeName = "transcodely.v1.GetInvoiceResponse";
3632
+ static fields = proto3.util.newFieldList(() => [
3633
+ { no: 1, name: "invoice", kind: "message", T: Invoice }
3634
+ ]);
3635
+ static fromBinary(bytes, options) {
3636
+ return new _GetInvoiceResponse().fromBinary(bytes, options);
3637
+ }
3638
+ static fromJson(jsonValue, options) {
3639
+ return new _GetInvoiceResponse().fromJson(jsonValue, options);
3640
+ }
3641
+ static fromJsonString(jsonString, options) {
3642
+ return new _GetInvoiceResponse().fromJsonString(jsonString, options);
3643
+ }
3644
+ static equals(a, b) {
3645
+ return proto3.util.equals(_GetInvoiceResponse, a, b);
3646
+ }
3647
+ };
3648
+ var GetUpcomingInvoiceRequest = class _GetUpcomingInvoiceRequest extends Message {
3649
+ constructor(data) {
3650
+ super();
3651
+ proto3.util.initPartial(data, this);
3652
+ }
3653
+ static runtime = proto3;
3654
+ static typeName = "transcodely.v1.GetUpcomingInvoiceRequest";
3655
+ static fields = proto3.util.newFieldList(() => []);
3656
+ static fromBinary(bytes, options) {
3657
+ return new _GetUpcomingInvoiceRequest().fromBinary(bytes, options);
3658
+ }
3659
+ static fromJson(jsonValue, options) {
3660
+ return new _GetUpcomingInvoiceRequest().fromJson(jsonValue, options);
3661
+ }
3662
+ static fromJsonString(jsonString, options) {
3663
+ return new _GetUpcomingInvoiceRequest().fromJsonString(jsonString, options);
3664
+ }
3665
+ static equals(a, b) {
3666
+ return proto3.util.equals(_GetUpcomingInvoiceRequest, a, b);
3667
+ }
3668
+ };
3669
+ var GetUpcomingInvoiceResponse = class _GetUpcomingInvoiceResponse extends Message {
3670
+ /**
3671
+ * The computed statement. Its id is empty and its status is "draft". Totals
3672
+ * are zero when nothing has been billed in the period yet.
3673
+ *
3674
+ * @generated from field: transcodely.v1.Invoice invoice = 1;
3675
+ */
3676
+ invoice;
3677
+ constructor(data) {
3678
+ super();
3679
+ proto3.util.initPartial(data, this);
3680
+ }
3681
+ static runtime = proto3;
3682
+ static typeName = "transcodely.v1.GetUpcomingInvoiceResponse";
3683
+ static fields = proto3.util.newFieldList(() => [
3684
+ { no: 1, name: "invoice", kind: "message", T: Invoice }
3685
+ ]);
3686
+ static fromBinary(bytes, options) {
3687
+ return new _GetUpcomingInvoiceResponse().fromBinary(bytes, options);
3688
+ }
3689
+ static fromJson(jsonValue, options) {
3690
+ return new _GetUpcomingInvoiceResponse().fromJson(jsonValue, options);
3691
+ }
3692
+ static fromJsonString(jsonString, options) {
3693
+ return new _GetUpcomingInvoiceResponse().fromJsonString(jsonString, options);
3694
+ }
3695
+ static equals(a, b) {
3696
+ return proto3.util.equals(_GetUpcomingInvoiceResponse, a, b);
3697
+ }
3698
+ };
3699
+ var GetBillingProfileRequest = class _GetBillingProfileRequest extends Message {
3700
+ constructor(data) {
3701
+ super();
3702
+ proto3.util.initPartial(data, this);
3703
+ }
3704
+ static runtime = proto3;
3705
+ static typeName = "transcodely.v1.GetBillingProfileRequest";
3706
+ static fields = proto3.util.newFieldList(() => []);
3707
+ static fromBinary(bytes, options) {
3708
+ return new _GetBillingProfileRequest().fromBinary(bytes, options);
3709
+ }
3710
+ static fromJson(jsonValue, options) {
3711
+ return new _GetBillingProfileRequest().fromJson(jsonValue, options);
3712
+ }
3713
+ static fromJsonString(jsonString, options) {
3714
+ return new _GetBillingProfileRequest().fromJsonString(jsonString, options);
3715
+ }
3716
+ static equals(a, b) {
3717
+ return proto3.util.equals(_GetBillingProfileRequest, a, b);
3718
+ }
3719
+ };
3720
+ var GetBillingProfileResponse = class _GetBillingProfileResponse extends Message {
3721
+ /**
3722
+ * The organization's payment standing, read live from the payment provider.
3723
+ *
3724
+ * @generated from field: transcodely.v1.BillingProfile profile = 1;
3725
+ */
3726
+ profile;
3727
+ constructor(data) {
3728
+ super();
3729
+ proto3.util.initPartial(data, this);
3730
+ }
3731
+ static runtime = proto3;
3732
+ static typeName = "transcodely.v1.GetBillingProfileResponse";
3733
+ static fields = proto3.util.newFieldList(() => [
3734
+ { no: 1, name: "profile", kind: "message", T: BillingProfile }
3735
+ ]);
3736
+ static fromBinary(bytes, options) {
3737
+ return new _GetBillingProfileResponse().fromBinary(bytes, options);
3738
+ }
3739
+ static fromJson(jsonValue, options) {
3740
+ return new _GetBillingProfileResponse().fromJson(jsonValue, options);
3741
+ }
3742
+ static fromJsonString(jsonString, options) {
3743
+ return new _GetBillingProfileResponse().fromJsonString(jsonString, options);
3744
+ }
3745
+ static equals(a, b) {
3746
+ return proto3.util.equals(_GetBillingProfileResponse, a, b);
3747
+ }
3748
+ };
3749
+ var CreateBillingPortalSessionRequest = class _CreateBillingPortalSessionRequest extends Message {
3750
+ constructor(data) {
3751
+ super();
3752
+ proto3.util.initPartial(data, this);
3753
+ }
3754
+ static runtime = proto3;
3755
+ static typeName = "transcodely.v1.CreateBillingPortalSessionRequest";
3756
+ static fields = proto3.util.newFieldList(() => []);
3757
+ static fromBinary(bytes, options) {
3758
+ return new _CreateBillingPortalSessionRequest().fromBinary(bytes, options);
3759
+ }
3760
+ static fromJson(jsonValue, options) {
3761
+ return new _CreateBillingPortalSessionRequest().fromJson(jsonValue, options);
3762
+ }
3763
+ static fromJsonString(jsonString, options) {
3764
+ return new _CreateBillingPortalSessionRequest().fromJsonString(jsonString, options);
3765
+ }
3766
+ static equals(a, b) {
3767
+ return proto3.util.equals(_CreateBillingPortalSessionRequest, a, b);
3768
+ }
3769
+ };
3770
+ var CreateBillingPortalSessionResponse = class _CreateBillingPortalSessionResponse extends Message {
3771
+ /**
3772
+ * The session. Redirect the browser to its url.
3773
+ *
3774
+ * @generated from field: transcodely.v1.BillingPortalSession session = 1;
3775
+ */
3776
+ session;
3777
+ constructor(data) {
3778
+ super();
3779
+ proto3.util.initPartial(data, this);
3780
+ }
3781
+ static runtime = proto3;
3782
+ static typeName = "transcodely.v1.CreateBillingPortalSessionResponse";
3783
+ static fields = proto3.util.newFieldList(() => [
3784
+ { no: 1, name: "session", kind: "message", T: BillingPortalSession }
3785
+ ]);
3786
+ static fromBinary(bytes, options) {
3787
+ return new _CreateBillingPortalSessionResponse().fromBinary(bytes, options);
3788
+ }
3789
+ static fromJson(jsonValue, options) {
3790
+ return new _CreateBillingPortalSessionResponse().fromJson(jsonValue, options);
3791
+ }
3792
+ static fromJsonString(jsonString, options) {
3793
+ return new _CreateBillingPortalSessionResponse().fromJsonString(jsonString, options);
3794
+ }
3795
+ static equals(a, b) {
3796
+ return proto3.util.equals(_CreateBillingPortalSessionResponse, a, b);
3797
+ }
3798
+ };
3799
+ var GetBudgetRequest = class _GetBudgetRequest extends Message {
3800
+ constructor(data) {
3801
+ super();
3802
+ proto3.util.initPartial(data, this);
3803
+ }
3804
+ static runtime = proto3;
3805
+ static typeName = "transcodely.v1.GetBudgetRequest";
3806
+ static fields = proto3.util.newFieldList(() => []);
3807
+ static fromBinary(bytes, options) {
3808
+ return new _GetBudgetRequest().fromBinary(bytes, options);
3809
+ }
3810
+ static fromJson(jsonValue, options) {
3811
+ return new _GetBudgetRequest().fromJson(jsonValue, options);
3812
+ }
3813
+ static fromJsonString(jsonString, options) {
3814
+ return new _GetBudgetRequest().fromJsonString(jsonString, options);
3815
+ }
3816
+ static equals(a, b) {
3817
+ return proto3.util.equals(_GetBudgetRequest, a, b);
3818
+ }
3819
+ };
3820
+ var GetBudgetResponse = class _GetBudgetResponse extends Message {
3821
+ /**
3822
+ * The budget. Always present: an organization with no budget set gets one
3823
+ * with amount_eur absent and spent_eur still populated, so the current
3824
+ * period's spend can be shown before a budget exists.
3825
+ *
3826
+ * @generated from field: transcodely.v1.Budget budget = 1;
3827
+ */
3828
+ budget;
3829
+ constructor(data) {
3830
+ super();
3831
+ proto3.util.initPartial(data, this);
3832
+ }
3833
+ static runtime = proto3;
3834
+ static typeName = "transcodely.v1.GetBudgetResponse";
3835
+ static fields = proto3.util.newFieldList(() => [
3836
+ { no: 1, name: "budget", kind: "message", T: Budget }
3837
+ ]);
3838
+ static fromBinary(bytes, options) {
3839
+ return new _GetBudgetResponse().fromBinary(bytes, options);
3840
+ }
3841
+ static fromJson(jsonValue, options) {
3842
+ return new _GetBudgetResponse().fromJson(jsonValue, options);
3843
+ }
3844
+ static fromJsonString(jsonString, options) {
3845
+ return new _GetBudgetResponse().fromJsonString(jsonString, options);
3846
+ }
3847
+ static equals(a, b) {
3848
+ return proto3.util.equals(_GetBudgetResponse, a, b);
3849
+ }
3850
+ };
3851
+ var UpdateBudgetRequest = class _UpdateBudgetRequest extends Message {
3852
+ /**
3853
+ * Monthly budget in EUR. When present, sets the budget (must be > 0). When
3854
+ * ABSENT, the budget is cleared and no further alerts are sent — that is the
3855
+ * only way to turn them off. The upper bound matches the NUMERIC(12,2)
3856
+ * storage column.
3857
+ *
3858
+ * @generated from field: optional double amount_eur = 1;
2541
3859
  */
2542
- pagination;
3860
+ amountEur;
2543
3861
  constructor(data) {
2544
3862
  super();
2545
3863
  proto3.util.initPartial(data, this);
2546
3864
  }
2547
3865
  static runtime = proto3;
2548
- static typeName = "transcodely.v1.ListInvoicesRequest";
3866
+ static typeName = "transcodely.v1.UpdateBudgetRequest";
2549
3867
  static fields = proto3.util.newFieldList(() => [
2550
- { no: 1, name: "pagination", kind: "message", T: PaginationRequest }
3868
+ { no: 1, name: "amount_eur", kind: "scalar", T: 1, opt: true }
2551
3869
  ]);
2552
3870
  static fromBinary(bytes, options) {
2553
- return new _ListInvoicesRequest().fromBinary(bytes, options);
3871
+ return new _UpdateBudgetRequest().fromBinary(bytes, options);
2554
3872
  }
2555
3873
  static fromJson(jsonValue, options) {
2556
- return new _ListInvoicesRequest().fromJson(jsonValue, options);
3874
+ return new _UpdateBudgetRequest().fromJson(jsonValue, options);
2557
3875
  }
2558
3876
  static fromJsonString(jsonString, options) {
2559
- return new _ListInvoicesRequest().fromJsonString(jsonString, options);
3877
+ return new _UpdateBudgetRequest().fromJsonString(jsonString, options);
2560
3878
  }
2561
3879
  static equals(a, b) {
2562
- return proto3.util.equals(_ListInvoicesRequest, a, b);
3880
+ return proto3.util.equals(_UpdateBudgetRequest, a, b);
2563
3881
  }
2564
3882
  };
2565
- var ListInvoicesResponse = class _ListInvoicesResponse extends Message {
3883
+ var UpdateBudgetResponse = class _UpdateBudgetResponse extends Message {
2566
3884
  /**
2567
- * Invoices, newest period first. Line items are omitted here; fetch a single
2568
- * invoice to get them.
2569
- *
2570
- * @generated from field: repeated transcodely.v1.Invoice invoices = 1;
2571
- */
2572
- invoices = [];
2573
- /**
2574
- * Pagination metadata.
3885
+ * The budget as it now stands, with current-period spend recomputed, so a
3886
+ * caller that just moved the number can render the new bar without a second
3887
+ * request. amount_eur is absent when the budget was cleared.
2575
3888
  *
2576
- * @generated from field: transcodely.v1.PaginationResponse pagination = 2;
3889
+ * @generated from field: transcodely.v1.Budget budget = 1;
2577
3890
  */
2578
- pagination;
3891
+ budget;
2579
3892
  constructor(data) {
2580
3893
  super();
2581
3894
  proto3.util.initPartial(data, this);
2582
3895
  }
2583
3896
  static runtime = proto3;
2584
- static typeName = "transcodely.v1.ListInvoicesResponse";
3897
+ static typeName = "transcodely.v1.UpdateBudgetResponse";
2585
3898
  static fields = proto3.util.newFieldList(() => [
2586
- { no: 1, name: "invoices", kind: "message", T: Invoice, repeated: true },
2587
- { no: 2, name: "pagination", kind: "message", T: PaginationResponse }
3899
+ { no: 1, name: "budget", kind: "message", T: Budget }
2588
3900
  ]);
2589
3901
  static fromBinary(bytes, options) {
2590
- return new _ListInvoicesResponse().fromBinary(bytes, options);
3902
+ return new _UpdateBudgetResponse().fromBinary(bytes, options);
2591
3903
  }
2592
3904
  static fromJson(jsonValue, options) {
2593
- return new _ListInvoicesResponse().fromJson(jsonValue, options);
3905
+ return new _UpdateBudgetResponse().fromJson(jsonValue, options);
2594
3906
  }
2595
3907
  static fromJsonString(jsonString, options) {
2596
- return new _ListInvoicesResponse().fromJsonString(jsonString, options);
3908
+ return new _UpdateBudgetResponse().fromJsonString(jsonString, options);
2597
3909
  }
2598
3910
  static equals(a, b) {
2599
- return proto3.util.equals(_ListInvoicesResponse, a, b);
3911
+ return proto3.util.equals(_UpdateBudgetResponse, a, b);
2600
3912
  }
2601
3913
  };
2602
- var GetInvoiceRequest = class _GetInvoiceRequest extends Message {
2603
- /**
2604
- * Invoice ID (e.g., "inv_a1b2c3d4e5f6").
2605
- *
2606
- * @generated from field: string id = 1;
2607
- */
2608
- id = "";
3914
+ var GetOutstandingBalanceRequest = class _GetOutstandingBalanceRequest extends Message {
2609
3915
  constructor(data) {
2610
3916
  super();
2611
3917
  proto3.util.initPartial(data, this);
2612
3918
  }
2613
3919
  static runtime = proto3;
2614
- static typeName = "transcodely.v1.GetInvoiceRequest";
2615
- static fields = proto3.util.newFieldList(() => [
2616
- {
2617
- no: 1,
2618
- name: "id",
2619
- kind: "scalar",
2620
- T: 9
2621
- /* ScalarType.STRING */
2622
- }
2623
- ]);
3920
+ static typeName = "transcodely.v1.GetOutstandingBalanceRequest";
3921
+ static fields = proto3.util.newFieldList(() => []);
2624
3922
  static fromBinary(bytes, options) {
2625
- return new _GetInvoiceRequest().fromBinary(bytes, options);
3923
+ return new _GetOutstandingBalanceRequest().fromBinary(bytes, options);
2626
3924
  }
2627
3925
  static fromJson(jsonValue, options) {
2628
- return new _GetInvoiceRequest().fromJson(jsonValue, options);
3926
+ return new _GetOutstandingBalanceRequest().fromJson(jsonValue, options);
2629
3927
  }
2630
3928
  static fromJsonString(jsonString, options) {
2631
- return new _GetInvoiceRequest().fromJsonString(jsonString, options);
3929
+ return new _GetOutstandingBalanceRequest().fromJsonString(jsonString, options);
2632
3930
  }
2633
3931
  static equals(a, b) {
2634
- return proto3.util.equals(_GetInvoiceRequest, a, b);
3932
+ return proto3.util.equals(_GetOutstandingBalanceRequest, a, b);
2635
3933
  }
2636
3934
  };
2637
- var GetInvoiceResponse = class _GetInvoiceResponse extends Message {
3935
+ var GetOutstandingBalanceResponse = class _GetOutstandingBalanceResponse extends Message {
2638
3936
  /**
2639
- * The requested invoice, with its line items.
3937
+ * Always present. An organization that owes nothing gets one with
3938
+ * outstanding_cents 0 and its threshold still populated, so a card can show
3939
+ * the headroom before anything has been spent.
2640
3940
  *
2641
- * @generated from field: transcodely.v1.Invoice invoice = 1;
3941
+ * @generated from field: transcodely.v1.OutstandingBalance balance = 1;
2642
3942
  */
2643
- invoice;
3943
+ balance;
2644
3944
  constructor(data) {
2645
3945
  super();
2646
3946
  proto3.util.initPartial(data, this);
2647
3947
  }
2648
3948
  static runtime = proto3;
2649
- static typeName = "transcodely.v1.GetInvoiceResponse";
3949
+ static typeName = "transcodely.v1.GetOutstandingBalanceResponse";
2650
3950
  static fields = proto3.util.newFieldList(() => [
2651
- { no: 1, name: "invoice", kind: "message", T: Invoice }
3951
+ { no: 1, name: "balance", kind: "message", T: OutstandingBalance }
2652
3952
  ]);
2653
3953
  static fromBinary(bytes, options) {
2654
- return new _GetInvoiceResponse().fromBinary(bytes, options);
3954
+ return new _GetOutstandingBalanceResponse().fromBinary(bytes, options);
2655
3955
  }
2656
3956
  static fromJson(jsonValue, options) {
2657
- return new _GetInvoiceResponse().fromJson(jsonValue, options);
3957
+ return new _GetOutstandingBalanceResponse().fromJson(jsonValue, options);
2658
3958
  }
2659
3959
  static fromJsonString(jsonString, options) {
2660
- return new _GetInvoiceResponse().fromJsonString(jsonString, options);
3960
+ return new _GetOutstandingBalanceResponse().fromJsonString(jsonString, options);
2661
3961
  }
2662
3962
  static equals(a, b) {
2663
- return proto3.util.equals(_GetInvoiceResponse, a, b);
3963
+ return proto3.util.equals(_GetOutstandingBalanceResponse, a, b);
2664
3964
  }
2665
3965
  };
2666
- var GetUpcomingInvoiceRequest = class _GetUpcomingInvoiceRequest extends Message {
3966
+ var SettleOutstandingBalanceRequest = class _SettleOutstandingBalanceRequest extends Message {
2667
3967
  constructor(data) {
2668
3968
  super();
2669
3969
  proto3.util.initPartial(data, this);
2670
3970
  }
2671
3971
  static runtime = proto3;
2672
- static typeName = "transcodely.v1.GetUpcomingInvoiceRequest";
3972
+ static typeName = "transcodely.v1.SettleOutstandingBalanceRequest";
2673
3973
  static fields = proto3.util.newFieldList(() => []);
2674
3974
  static fromBinary(bytes, options) {
2675
- return new _GetUpcomingInvoiceRequest().fromBinary(bytes, options);
3975
+ return new _SettleOutstandingBalanceRequest().fromBinary(bytes, options);
2676
3976
  }
2677
3977
  static fromJson(jsonValue, options) {
2678
- return new _GetUpcomingInvoiceRequest().fromJson(jsonValue, options);
3978
+ return new _SettleOutstandingBalanceRequest().fromJson(jsonValue, options);
2679
3979
  }
2680
3980
  static fromJsonString(jsonString, options) {
2681
- return new _GetUpcomingInvoiceRequest().fromJsonString(jsonString, options);
3981
+ return new _SettleOutstandingBalanceRequest().fromJsonString(jsonString, options);
2682
3982
  }
2683
3983
  static equals(a, b) {
2684
- return proto3.util.equals(_GetUpcomingInvoiceRequest, a, b);
3984
+ return proto3.util.equals(_SettleOutstandingBalanceRequest, a, b);
2685
3985
  }
2686
3986
  };
2687
- var GetUpcomingInvoiceResponse = class _GetUpcomingInvoiceResponse extends Message {
3987
+ var SettleOutstandingBalanceResponse = class _SettleOutstandingBalanceResponse extends Message {
2688
3988
  /**
2689
- * The computed statement. Its id is empty and its status is "draft". Totals
2690
- * are zero when nothing has been billed in the period yet.
3989
+ * The statement that was produced.
2691
3990
  *
2692
- * @generated from field: transcodely.v1.Invoice invoice = 1;
3991
+ * @generated from field: transcodely.v1.Settlement settlement = 1;
2693
3992
  */
2694
- invoice;
3993
+ settlement;
3994
+ /**
3995
+ * The balance as it now stands — zero, with the block lifted and the steps
3996
+ * re-armed — so a caller that just paid can render the new state without a
3997
+ * second request.
3998
+ *
3999
+ * @generated from field: transcodely.v1.OutstandingBalance balance = 2;
4000
+ */
4001
+ balance;
2695
4002
  constructor(data) {
2696
4003
  super();
2697
4004
  proto3.util.initPartial(data, this);
2698
4005
  }
2699
4006
  static runtime = proto3;
2700
- static typeName = "transcodely.v1.GetUpcomingInvoiceResponse";
4007
+ static typeName = "transcodely.v1.SettleOutstandingBalanceResponse";
2701
4008
  static fields = proto3.util.newFieldList(() => [
2702
- { no: 1, name: "invoice", kind: "message", T: Invoice }
4009
+ { no: 1, name: "settlement", kind: "message", T: Settlement },
4010
+ { no: 2, name: "balance", kind: "message", T: OutstandingBalance }
2703
4011
  ]);
2704
4012
  static fromBinary(bytes, options) {
2705
- return new _GetUpcomingInvoiceResponse().fromBinary(bytes, options);
4013
+ return new _SettleOutstandingBalanceResponse().fromBinary(bytes, options);
2706
4014
  }
2707
4015
  static fromJson(jsonValue, options) {
2708
- return new _GetUpcomingInvoiceResponse().fromJson(jsonValue, options);
4016
+ return new _SettleOutstandingBalanceResponse().fromJson(jsonValue, options);
2709
4017
  }
2710
4018
  static fromJsonString(jsonString, options) {
2711
- return new _GetUpcomingInvoiceResponse().fromJsonString(jsonString, options);
4019
+ return new _SettleOutstandingBalanceResponse().fromJsonString(jsonString, options);
2712
4020
  }
2713
4021
  static equals(a, b) {
2714
- return proto3.util.equals(_GetUpcomingInvoiceResponse, a, b);
4022
+ return proto3.util.equals(_SettleOutstandingBalanceResponse, a, b);
2715
4023
  }
2716
4024
  };
2717
4025
  var BillingService = {
@@ -2759,6 +4067,105 @@ var BillingService = {
2759
4067
  I: GetUpcomingInvoiceRequest,
2760
4068
  O: GetUpcomingInvoiceResponse,
2761
4069
  kind: MethodKind.Unary
4070
+ },
4071
+ /**
4072
+ * Retrieve the organization's billing profile: whether a payment method is
4073
+ * on file, and the card details the payment provider exposes for display.
4074
+ *
4075
+ * Read-only and side-effect free: it never creates provider resources. An
4076
+ * organization that has never touched billing gets payment_method_state
4077
+ * "none" and an empty payment_methods list.
4078
+ *
4079
+ * @generated from rpc transcodely.v1.BillingService.GetBillingProfile
4080
+ */
4081
+ getBillingProfile: {
4082
+ name: "GetBillingProfile",
4083
+ I: GetBillingProfileRequest,
4084
+ O: GetBillingProfileResponse,
4085
+ kind: MethodKind.Unary
4086
+ },
4087
+ /**
4088
+ * Create a short-lived session for the payment provider's hosted billing
4089
+ * portal and return its URL. The portal is where a payment method is added
4090
+ * or replaced and where receipts live; card details never touch the
4091
+ * Transcodely API.
4092
+ *
4093
+ * First call for an organization also links it to the payment provider
4094
+ * (customer + subscription), so the returned portal is already attached to
4095
+ * this organization's billing account. Safe to call repeatedly.
4096
+ *
4097
+ * @generated from rpc transcodely.v1.BillingService.CreateBillingPortalSession
4098
+ */
4099
+ createBillingPortalSession: {
4100
+ name: "CreateBillingPortalSession",
4101
+ I: CreateBillingPortalSessionRequest,
4102
+ O: CreateBillingPortalSessionResponse,
4103
+ kind: MethodKind.Unary
4104
+ },
4105
+ /**
4106
+ * Retrieve the organization's monthly budget together with the spend it is
4107
+ * measured against, in one call: everything a budget card needs.
4108
+ *
4109
+ * @generated from rpc transcodely.v1.BillingService.GetBudget
4110
+ */
4111
+ getBudget: {
4112
+ name: "GetBudget",
4113
+ I: GetBudgetRequest,
4114
+ O: GetBudgetResponse,
4115
+ kind: MethodKind.Unary
4116
+ },
4117
+ /**
4118
+ * Set or clear the organization's monthly budget.
4119
+ *
4120
+ * Omitting amount_eur clears the budget and turns the alert emails off.
4121
+ * Changing the amount never re-sends an alert step already sent this period;
4122
+ * see Budget.notified_steps.
4123
+ *
4124
+ * @generated from rpc transcodely.v1.BillingService.UpdateBudget
4125
+ */
4126
+ updateBudget: {
4127
+ name: "UpdateBudget",
4128
+ I: UpdateBudgetRequest,
4129
+ O: UpdateBudgetResponse,
4130
+ kind: MethodKind.Unary
4131
+ },
4132
+ /**
4133
+ * Retrieve the organization's outstanding balance — usage that has been
4134
+ * accrued but not yet billed — together with the threshold it is measured
4135
+ * against, in one call: everything an outstanding-balance card needs.
4136
+ *
4137
+ * Distinct from GetUpcomingInvoice, which shows what the CURRENT PERIOD has
4138
+ * accrued. This shows what is UNSETTLED, which also includes anything a
4139
+ * previous period left uncaptured, and it is the number that decides whether
4140
+ * new jobs are admitted.
4141
+ *
4142
+ * @generated from rpc transcodely.v1.BillingService.GetOutstandingBalance
4143
+ */
4144
+ getOutstandingBalance: {
4145
+ name: "GetOutstandingBalance",
4146
+ I: GetOutstandingBalanceRequest,
4147
+ O: GetOutstandingBalanceResponse,
4148
+ kind: MethodKind.Unary
4149
+ },
4150
+ /**
4151
+ * Pay the outstanding balance now, without waiting for the period to end.
4152
+ *
4153
+ * Closes the current period at this instant and produces a real statement for
4154
+ * everything owed, which the payment provider then charges. On success the
4155
+ * outstanding balance is zero, any admission block is lifted immediately, and
4156
+ * the organization's trust tier re-evaluates once the statement is paid.
4157
+ *
4158
+ * Returns failed_precondition with error code "settlement_unavailable" when
4159
+ * the deployment has mid-cycle settlement switched off, and
4160
+ * "nothing_outstanding" when there is nothing to pay.
4161
+ *
4162
+ * @generated from rpc transcodely.v1.BillingService.SettleOutstandingBalance
4163
+ */
4164
+ settleOutstandingBalance: {
4165
+ name: "SettleOutstandingBalance",
4166
+ I: SettleOutstandingBalanceRequest,
4167
+ O: SettleOutstandingBalanceResponse,
4168
+ kind: MethodKind.Unary
2762
4169
  }
2763
4170
  }
2764
4171
  };
@@ -2822,6 +4229,156 @@ var Billing = class {
2822
4229
  );
2823
4230
  return res.invoice;
2824
4231
  }
4232
+ /**
4233
+ * Retrieve the organization's payment standing: whether the payment provider
4234
+ * holds a chargeable method, and what it will say about it for display.
4235
+ *
4236
+ * Read-only and side-effect free — it never creates provider resources. An
4237
+ * organization that has never touched billing reports
4238
+ * `PaymentMethodState.NONE` and no payment methods.
4239
+ *
4240
+ * `paymentMethodState` is the only reliable signal. A method's `brand` and
4241
+ * `last4` are frequently absent even for a working card, because the provider
4242
+ * does not always expose card metadata; render such a method as "Card on
4243
+ * file" rather than treating the missing digits as an error.
4244
+ */
4245
+ async retrieveProfile(opts) {
4246
+ const res = await this.transport.unary(
4247
+ BillingService,
4248
+ BillingService.methods.getBillingProfile,
4249
+ new GetBillingProfileRequest({}),
4250
+ opts
4251
+ );
4252
+ return res.profile;
4253
+ }
4254
+ /**
4255
+ * Create a short-lived session for the payment provider's hosted billing
4256
+ * portal and return it. The portal is where a payment method is added or
4257
+ * replaced and where receipts live — card details never touch this SDK.
4258
+ *
4259
+ * The first call for an organization also links it to the payment provider,
4260
+ * so the returned portal is already attached to this organization's billing
4261
+ * account. Safe to call repeatedly.
4262
+ *
4263
+ * The session is single-use and expires; request a fresh one per visit rather
4264
+ * than storing the URL.
4265
+ */
4266
+ async createPortalSession(opts) {
4267
+ const res = await this.transport.unary(
4268
+ BillingService,
4269
+ BillingService.methods.createBillingPortalSession,
4270
+ new CreateBillingPortalSessionRequest({}),
4271
+ opts
4272
+ );
4273
+ return res.session;
4274
+ }
4275
+ /**
4276
+ * Retrieve the organization's monthly budget together with the spend it is
4277
+ * measured against — everything a budget card needs, in one call.
4278
+ *
4279
+ * A budget only ever **notifies**: crossing 100% sends an email and changes
4280
+ * nothing else. The hard cap is the per-app spend limit
4281
+ * (`client.apps.setSpendLimit`), which rejects new jobs at 100%.
4282
+ *
4283
+ * Always returns a budget. An organization with none set gets one with
4284
+ * `amountEur` and `usedPercent` absent and `spentEur` still populated, so the
4285
+ * current period's spend renders before a budget exists.
4286
+ */
4287
+ async retrieveBudget(opts) {
4288
+ const res = await this.transport.unary(
4289
+ BillingService,
4290
+ BillingService.methods.getBudget,
4291
+ new GetBudgetRequest({}),
4292
+ opts
4293
+ );
4294
+ return res.budget;
4295
+ }
4296
+ /**
4297
+ * Set or clear the organization's monthly budget. Provide `amountEur` (must
4298
+ * be > 0) to set it; omit it to clear the budget and stop the alert emails.
4299
+ * {@link setBudget} and {@link clearBudget} are the ergonomic shorthands.
4300
+ *
4301
+ * The returned budget has current-period spend recomputed, so a caller that
4302
+ * just moved the number can re-render without a second request.
4303
+ */
4304
+ async updateBudget(req = {}, opts) {
4305
+ const res = await this.transport.unary(
4306
+ BillingService,
4307
+ BillingService.methods.updateBudget,
4308
+ new UpdateBudgetRequest(req),
4309
+ opts
4310
+ );
4311
+ return res.budget;
4312
+ }
4313
+ /**
4314
+ * Set the organization's monthly budget in EUR (must be > 0).
4315
+ *
4316
+ * Alert emails fire once per billing period at each of `budget.alertSteps`
4317
+ * (50%, 80%, 100% today). Raising or lowering the amount mid-period never
4318
+ * re-arms a step already listed in `budget.notifiedSteps`.
4319
+ */
4320
+ setBudget(amountEur, opts) {
4321
+ return this.updateBudget({ amountEur }, opts);
4322
+ }
4323
+ /**
4324
+ * Clear the organization's monthly budget, turning the alert emails off —
4325
+ * omitting the optional amount is the only way to switch them off.
4326
+ */
4327
+ clearBudget(opts) {
4328
+ return this.updateBudget({}, opts);
4329
+ }
4330
+ /**
4331
+ * Retrieve the organization's outstanding balance — usage accrued but not yet
4332
+ * captured onto a statement — together with the threshold it is measured
4333
+ * against.
4334
+ *
4335
+ * Distinct from {@link retrieveUpcoming}, which reports what the **current
4336
+ * period** has accrued: this is what is **unsettled**, so it also carries
4337
+ * anything an earlier period left uncaptured, and it is the number that
4338
+ * decides whether new jobs are admitted.
4339
+ *
4340
+ * Nothing is restricted as it climbs — reminder emails go out at 80%, 100%,
4341
+ * 125%, 150% and 175% and service continues past the threshold on purpose.
4342
+ * Only at `hardStopCents` (twice the threshold) are new jobs refused, with
4343
+ * error code `outstanding_balance_exceeded`; queued and running work still
4344
+ * finishes and playback keeps serving. Branch on `blocked`, which reads the
4345
+ * same numbers the admission gate reads.
4346
+ */
4347
+ async retrieveOutstandingBalance(opts) {
4348
+ const res = await this.transport.unary(
4349
+ BillingService,
4350
+ BillingService.methods.getOutstandingBalance,
4351
+ new GetOutstandingBalanceRequest({}),
4352
+ opts
4353
+ );
4354
+ return res.balance;
4355
+ }
4356
+ /**
4357
+ * Pay the outstanding balance now, without waiting for the period to end.
4358
+ *
4359
+ * Closes the current period at this instant and produces a real statement —
4360
+ * an ordinary invoice, readable through {@link retrieve} — which the payment
4361
+ * provider then charges. On success the balance is zero and any admission
4362
+ * block is lifted immediately; the response carries the refreshed balance too,
4363
+ * so no follow-up read is needed.
4364
+ *
4365
+ * Takes no amount on purpose: the figure is whatever the ledger says at the
4366
+ * instant it runs, so a stale page cannot underpay and leave the difference
4367
+ * looking settled.
4368
+ *
4369
+ * Throws {@link PreconditionError} with code `settlement_unavailable` when the
4370
+ * deployment has mid-cycle settlement switched off — check
4371
+ * `balance.settlementAvailable` before offering a "pay now" action — and with
4372
+ * `nothing_outstanding` when there is nothing to pay.
4373
+ */
4374
+ settleOutstandingBalance(opts) {
4375
+ return this.transport.unary(
4376
+ BillingService,
4377
+ BillingService.methods.settleOutstandingBalance,
4378
+ new SettleOutstandingBalanceRequest({}),
4379
+ opts
4380
+ );
4381
+ }
2825
4382
  };
2826
4383
  var WebhookEndpoint = class _WebhookEndpoint extends Message {
2827
4384
  /**
@@ -5675,6 +7232,11 @@ var StreamingConfig = class _StreamingConfig extends Message {
5675
7232
  * Example: "video_{resolution}" produces "video_1080p.m3u8"
5676
7233
  * Default: "{codec}_{resolution}" produces "h264_1080p.m3u8"
5677
7234
  *
7235
+ * The rendered value becomes a filename and is also carried through the
7236
+ * packager's stream descriptors, so the accepted charset is deliberately
7237
+ * narrow: letters, digits, `_`, `-`, `.` and the `{}` that delimit template
7238
+ * variables. No path separators, no `..`, and none of `, : ; ' " \`.
7239
+ *
5678
7240
  * @generated from field: optional string hls_variant_pattern = 12;
5679
7241
  */
5680
7242
  hlsVariantPattern;
@@ -5744,6 +7306,12 @@ var BurnInStyle = class _BurnInStyle extends Message {
5744
7306
  /**
5745
7307
  * Font family name. Default: "Arial".
5746
7308
  *
7309
+ * Letters, digits, spaces, `_` and `-` only. The value is embedded in the
7310
+ * renderer's style string, where a quote, comma or semicolon would terminate
7311
+ * it and let whatever follows parse as further styling arguments.
7312
+ *
7313
+ * Example: "DejaVu Sans"
7314
+ *
5747
7315
  * @generated from field: optional string font_family = 1;
5748
7316
  */
5749
7317
  fontFamily;
@@ -9275,6 +10843,11 @@ var HLSConfig = class _HLSConfig extends Message {
9275
10843
  * Variables: {codec}, {resolution}, {bitrate}, {index}
9276
10844
  * Default: "{codec}_{resolution}"
9277
10845
  *
10846
+ * The rendered value becomes a filename and is also carried through the
10847
+ * packager's stream descriptors, so the accepted charset is deliberately
10848
+ * narrow: letters, digits, `_`, `-`, `.` and the `{}` that delimit template
10849
+ * variables. No path separators, no `..`, and none of `, : ; ' " \`.
10850
+ *
9278
10851
  * @generated from field: optional string variant_pattern = 4;
9279
10852
  */
9280
10853
  variantPattern;
@@ -10517,17 +12090,26 @@ var Job = class _Job extends Message {
10517
12090
  *
10518
12091
  * Only completed outputs are billable, and what happened to the job as a
10519
12092
  * whole decides whether they are billed at all:
10520
- * - completed: the sum of its outputs' actual costs, raised to
10521
- * minimum_charge_eur if that minimum is in effect.
10522
- * - canceled: the sum of the outputs that had already completed and been
10523
- * delivered when the cancel landed. Identical whether the job was
10524
- * canceled through CancelJob or observed as canceled by the worker. The
10525
- * minimum charge never applies.
10526
- * - failed: zero. A job that ends failed is not billed, even if some of
10527
- * its outputs completed before the failure.
10528
- * - partial: the sum of the outputs that completed, un-floored.
10529
- * Additive fees (see fees) are included on top, and are charged only on jobs
10530
- * that ended completed or partial.
12093
+ * - completed: the sum of its outputs' actual costs, plus the fees below.
12094
+ * - partial: the sum of the outputs that completed, plus the fees below.
12095
+ * - canceled: the processing fee, if an encoder had already begun work,
12096
+ * plus the outputs that had already completed and been delivered when
12097
+ * the cancel landed. Canceling a job that was still queued bills
12098
+ * nothing. Identical whether the job was canceled through CancelJob or
12099
+ * observed as canceled by the worker.
12100
+ * - failed: zero. A job that ends failed is not billed at all — not for
12101
+ * outputs that completed before the failure, and not for the machine it
12102
+ * ran on.
12103
+ *
12104
+ * Fees (see fees) are included on top of the output costs. Which ones are
12105
+ * charged depends on the fee: the flat processing fee is charged on every
12106
+ * job an encoder began, including a canceled one, while a metered add-on
12107
+ * such as AI captions is charged only when a completed or partial job
12108
+ * actually delivered its artifact.
12109
+ *
12110
+ * Jobs created before the processing-fee model (August 2026) are billed
12111
+ * max(sum of output costs, minimum_charge_eur) + fees when completed, and
12112
+ * their canceled/partial totals are un-floored.
10531
12113
  *
10532
12114
  * @generated from field: optional double total_actual_cost = 9;
10533
12115
  */
@@ -10664,44 +12246,62 @@ var Job = class _Job extends Message {
10664
12246
  */
10665
12247
  object = "";
10666
12248
  /**
10667
- * Minimum charge for this job in EUR, locked at creation and never changed
10668
- * retroactively. It is derived from the job's assigned billing class — a size
10669
- * band (small/medium/large/extra-large) reflecting the compute the job is
10670
- * guaranteed to cover — or, in legacy configurations, from the recommended
10671
- * machine size; either way it is a stable quote, not re-derived from the
10672
- * machine the job ultimately runs on. When the minimum charge is in effect,
10673
- * the billed total for a successfully completed job is
10674
- * max(sum of output costs, minimum_charge_eur) — see minimum_charge_applied
10675
- * for whether it determined this job's total. The minimum applies only to
10676
- * jobs that reach completed: a failed job is billed zero, and a canceled or
10677
- * partial job is billed the un-floored sum of the outputs it did complete.
10678
- * Absent when no minimum was computed for this job.
10679
- *
10680
- * @generated from field: optional double minimum_charge_eur = 30;
12249
+ * HISTORICAL — jobs created before the processing-fee model (August 2026)
12250
+ * only. Always absent on jobs created since; use fees (fee_type
12251
+ * "processing") instead.
12252
+ *
12253
+ * The per-job minimum charge, locked at creation and never changed
12254
+ * retroactively. It was derived from the job's assigned billing class — a
12255
+ * size band (small/medium/large/extra-large) reflecting the compute the job
12256
+ * is guaranteed to cover — or, in earlier configurations, from the
12257
+ * recommended machine size; either way a stable quote, not re-derived from
12258
+ * the machine the job ultimately ran on. When in effect, the billed total for
12259
+ * a successfully completed job was max(sum of output costs,
12260
+ * minimum_charge_eur) — see minimum_charge_applied for whether it determined
12261
+ * this job's total. It applied only to jobs that reached completed: a failed
12262
+ * job was billed zero, and a canceled or partial job the un-floored sum of
12263
+ * the outputs it did complete.
12264
+ *
12265
+ * Jobs quoted under this model keep settling under it, so the field is
12266
+ * populated forever on those jobs and is never removed from the API.
12267
+ *
12268
+ * @generated from field: optional double minimum_charge_eur = 30 [deprecated = true];
12269
+ * @deprecated
10681
12270
  */
10682
12271
  minimumChargeEur;
10683
12272
  /**
12273
+ * HISTORICAL — jobs created before the processing-fee model (August 2026)
12274
+ * only. Always false on jobs created since.
12275
+ *
10684
12276
  * Whether minimum_charge_eur determined the job's most recently computed
10685
12277
  * total — true when the sum of output costs came in below the minimum and
10686
12278
  * the total was raised to it (estimated total after probe; actual total
10687
12279
  * after successful completion). When true, total_estimated_cost or
10688
12280
  * total_actual_cost exceeds the sum of the per-output cost fields, which
10689
- * are never raised themselves. The minimum is a stable quote locked at
10690
- * creation (from the job's billing class, or the recommended machine size in
10691
- * legacy configurations); it is never re-derived from the machine the job
10692
- * ultimately runs on.
12281
+ * were never raised themselves.
10693
12282
  *
10694
- * @generated from field: bool minimum_charge_applied = 31;
12283
+ * @generated from field: bool minimum_charge_applied = 31 [deprecated = true];
12284
+ * @deprecated
10695
12285
  */
10696
12286
  minimumChargeApplied = false;
10697
12287
  /**
10698
- * Additive fee line items (v1: AI caption generation). Fees are charged ON
10699
- * TOP of the encode bill and sit OUTSIDE the minimum-charge floor:
10700
- * billed total = max(sum of output costs, minimum_charge_eur) + sum of fees.
12288
+ * Fee line items on the job. Two kinds appear here:
12289
+ *
12290
+ * "processing" — the flat per-job processing fee, charged once for the
12291
+ * encoder the job ran on, scaled by the job's size class. Present on every
12292
+ * job an encoder began processing. Quantity is always 1.
12293
+ * "captions" — AI caption generation, metered per source minute.
12294
+ *
12295
+ * Fees are charged ON TOP of the encode bill:
12296
+ * billed total = sum of output costs + sum of fees. (On historical jobs that
12297
+ * carry a minimum_charge_eur, the output sum is raised to that floor first;
12298
+ * fees have always sat outside the clamp.)
12299
+ *
10701
12300
  * total_estimated_cost / total_actual_cost INCLUDE fees; this list exposes
10702
- * the decomposition. Only live fees are listed — a fee that was voided
10703
- * (job failed/canceled, or the artifact was never produced) is dropped
10704
- * from the list and never charged. Server-set; read-only.
12301
+ * the decomposition. Only live fees are listed — a fee that was voided is
12302
+ * dropped from the list and never charged. A job that failed, or that was
12303
+ * canceled while still queued, therefore reports no fees at all.
12304
+ * Server-set; read-only.
10705
12305
  *
10706
12306
  * @generated from field: repeated transcodely.v1.JobFee fees = 33;
10707
12307
  */
@@ -10740,10 +12340,10 @@ var Job = class _Job extends Message {
10740
12340
  videoId;
10741
12341
  /**
10742
12342
  * Itemized decomposition of total_estimated_cost and total_actual_cost:
10743
- * one line per output, one per fee, and the minimum-charge top-up when the
10744
- * per-job minimum raised a total. The lines always sum to the totals, so
10745
- * this is the field to render a cost from — the per-output cost fields
10746
- * alone do not add up to the bill whenever the minimum charge is in effect.
12343
+ * one line per output, one per fee, and — on jobs old enough to have a
12344
+ * minimum charge — the top-up it added. The lines always sum to the totals,
12345
+ * so this is the field to render a cost from: the per-output cost fields
12346
+ * alone do not add up to the bill, because fees are charged on top of them.
10747
12347
  * Always present. Server-set; read-only.
10748
12348
  *
10749
12349
  * @generated from field: transcodely.v1.JobCostBreakdown cost_breakdown = 38;
@@ -10868,40 +12468,47 @@ var Job = class _Job extends Message {
10868
12468
  };
10869
12469
  var JobFee = class _JobFee extends Message {
10870
12470
  /**
10871
- * Fee discriminator — the fee pricing rule's key. v1: "captions".
12471
+ * Fee discriminator:
12472
+ * "processing" — the flat per-job processing fee (see Job.fees).
12473
+ * "captions" — AI caption generation.
10872
12474
  *
10873
12475
  * @generated from field: string fee_type = 1;
10874
12476
  */
10875
12477
  feeType = "";
10876
12478
  /**
10877
12479
  * Human-readable description of what the fee is for
10878
- * (e.g., "AI Caption Generation").
12480
+ * (e.g., "Processing fee", "AI Caption Generation").
10879
12481
  *
10880
12482
  * @generated from field: string description = 2;
10881
12483
  */
10882
12484
  description = "";
10883
12485
  /**
10884
- * Metering unit. v1: "source_minute" (input duration in minutes).
12486
+ * Metering unit:
12487
+ * "job" — a flat per-job charge; quantity is always 1.
12488
+ * "source_minute" — input duration in minutes.
10885
12489
  *
10886
12490
  * @generated from field: string unit = 3;
10887
12491
  */
10888
12492
  unit = "";
10889
12493
  /**
10890
12494
  * Metered quantity in `unit`s — the exact fraction, e.g. a 90-second
10891
- * source is 1.5 source minutes. 0 until the input probe completes.
12495
+ * source is 1.5 source minutes. For a "source_minute" fee this is 0 until
12496
+ * the input probe completes; a "job" fee is always 1, from creation.
10892
12497
  *
10893
12498
  * @generated from field: double quantity = 4;
10894
12499
  */
10895
12500
  quantity = 0;
10896
12501
  /**
10897
- * Price per unit in `currency`, locked at job creation from the
10898
- * then-effective fee pricing rule (e.g., 0.05).
12502
+ * Price per unit in `currency`, locked at job creation (e.g., 0.05). For the
12503
+ * processing fee this is the job's size class's rate at the moment the job
12504
+ * was created; later rate changes never re-price an existing job.
10899
12505
  *
10900
12506
  * @generated from field: double rate = 5;
10901
12507
  */
10902
12508
  rate = 0;
10903
12509
  /**
10904
- * quantity x rate, in `currency`. 0 until the input probe completes.
12510
+ * quantity x rate, in `currency`. For a "source_minute" fee this is 0 until
12511
+ * the input probe completes; for a "job" fee it equals rate from creation.
10905
12512
  *
10906
12513
  * @generated from field: double amount = 6;
10907
12514
  */
@@ -11989,6 +13596,18 @@ var Video = class _Video extends Message {
11989
13596
  */
11990
13597
  outputSizeBytes = protoInt64.zero;
11991
13598
  /**
13599
+ * Total billed by the transcode job that produced this video, in EUR.
13600
+ *
13601
+ * Despite the name this is the job's WHOLE total, not encoding alone: a
13602
+ * job's total already includes every fee billed on it, so for a video
13603
+ * captioned inline (the auto_captions upload flag) the captions fee is part
13604
+ * of this number, as is the flat per-job processing fee. Absent until the
13605
+ * job settles.
13606
+ *
13607
+ * Prefer total_cost. This field covers one job, so it misses the cost of
13608
+ * later jobs run against the video, and adding captions_cost to it
13609
+ * double-counts inline captions.
13610
+ *
11992
13611
  * @generated from field: optional double encoding_cost = 31;
11993
13612
  */
11994
13613
  encodingCost;
@@ -12000,11 +13619,35 @@ var Video = class _Video extends Message {
12000
13619
  * confirmed only when a caption artifact is actually delivered, so voided
12001
13620
  * and still-estimated fees are never counted. This is a per-feature
12002
13621
  * breakdown of already-billed job totals, not an extra charge on top of
12003
- * them.
13622
+ * them: it is contained in total_cost, never added to it.
12004
13623
  *
12005
13624
  * @generated from field: optional double captions_cost = 50;
12006
13625
  */
12007
13626
  captionsCost;
13627
+ /**
13628
+ * Everything this video has cost, in EUR: the sum of the settled totals of
13629
+ * every job billed for it — the transcode that produced it plus any later
13630
+ * job that took it as input (retro captions, for example).
13631
+ *
13632
+ * This is the authoritative per-video figure and the one to display. It is
13633
+ * built from the same job totals the billing ledger is written from, so it
13634
+ * reconciles with the invoice; captions_cost is a breakdown inside it.
13635
+ * Absent while no linked job has settled yet.
13636
+ *
13637
+ * @generated from field: optional double total_cost = 52;
13638
+ */
13639
+ totalCost;
13640
+ /**
13641
+ * Why this video failed, in one sentence a customer can act on. Present only
13642
+ * when status is "error"; absent for every other status.
13643
+ *
13644
+ * This is curated copy, never raw failure text — it will not contain
13645
+ * encoder output, storage-provider responses, or internal identifiers. When
13646
+ * the video has a linked job, that job's error_message says the same thing.
13647
+ *
13648
+ * @generated from field: optional string error_message = 51;
13649
+ */
13650
+ errorMessage;
12008
13651
  /**
12009
13652
  * Timestamps.
12010
13653
  *
@@ -12119,6 +13762,8 @@ var Video = class _Video extends Message {
12119
13762
  },
12120
13763
  { no: 31, name: "encoding_cost", kind: "scalar", T: 1, opt: true },
12121
13764
  { no: 50, name: "captions_cost", kind: "scalar", T: 1, opt: true },
13765
+ { no: 52, name: "total_cost", kind: "scalar", T: 1, opt: true },
13766
+ { no: 51, name: "error_message", kind: "scalar", T: 9, opt: true },
12122
13767
  { no: 40, name: "created_at", kind: "message", T: Timestamp },
12123
13768
  { no: 41, name: "updated_at", kind: "message", T: Timestamp },
12124
13769
  { no: 42, name: "ready_at", kind: "message", T: Timestamp, opt: true },
@@ -14986,7 +16631,7 @@ function backoff(attempt) {
14986
16631
  }
14987
16632
 
14988
16633
  // src/version.ts
14989
- var SDK_VERSION = "0.3.5";
16634
+ var SDK_VERSION = "0.3.7";
14990
16635
  var API_VERSION = "2026-05-03";
14991
16636
  var DEFAULT_BASE_URL = "https://api.transcodely.com";
14992
16637
 
@@ -15769,6 +17414,101 @@ var Organization = class _Organization extends Message {
15769
17414
  * @generated from field: google.protobuf.Timestamp updated_at = 8;
15770
17415
  */
15771
17416
  updatedAt;
17417
+ /**
17418
+ * Plan assigned to the organization, applying to every app under it that has
17419
+ * no plan of its own. Absent when the org carries none.
17420
+ *
17421
+ * @generated from field: optional string plan_id = 9;
17422
+ */
17423
+ planId;
17424
+ /**
17425
+ * Display name of the org's plan. Absent exactly when plan_id is.
17426
+ *
17427
+ * @generated from field: optional string plan_name = 10;
17428
+ */
17429
+ planName;
17430
+ /**
17431
+ * Whether this org must have a payment method on file. ENFORCED: with no
17432
+ * usable payment method a required org derives a restricting
17433
+ * billing_standing, and its jobs resolve to the free tier's limits rather
17434
+ * than to its plan.
17435
+ *
17436
+ * Organizations created before the enforcement release carry false and are
17437
+ * the grandfathered population — unaffected until an operator turns it on.
17438
+ * A comped org (billing_exempt) is off the hook whatever this says.
17439
+ *
17440
+ * @generated from field: bool payment_method_required = 11;
17441
+ */
17442
+ paymentMethodRequired = false;
17443
+ /**
17444
+ * When the org was explicitly exempted from the payment-method requirement —
17445
+ * stamped when payment_method_required is turned off, cleared when it is
17446
+ * turned on. Absent for an org that has never been exempted, which today is
17447
+ * every org. Reflects the CURRENT exemption only; the change history lives in
17448
+ * the admin audit log.
17449
+ *
17450
+ * @generated from field: optional google.protobuf.Timestamp grandfathered_at = 12;
17451
+ */
17452
+ grandfatheredAt;
17453
+ /**
17454
+ * Derived payment health. Always BILLING_STANDING_ACTIVE when
17455
+ * payment_method_required is false, whatever the facts below say.
17456
+ *
17457
+ * Filled on admin reads, and on OrganizationService.Get for a member of the
17458
+ * org (JWT/portal actors). Absent on the API-key read path, which gets a
17459
+ * refusal code on the create instead, and on List.
17460
+ *
17461
+ * @generated from field: transcodely.v1.BillingStanding billing_standing = 13;
17462
+ */
17463
+ billingStanding = 0 /* UNSPECIFIED */;
17464
+ /**
17465
+ * When the current grace window closes, present only while billing_standing
17466
+ * is BILLING_STANDING_GRACE. Filled wherever billing_standing is.
17467
+ *
17468
+ * @generated from field: optional google.protobuf.Timestamp grace_until = 14;
17469
+ */
17470
+ graceUntil;
17471
+ /**
17472
+ * Stable token explaining billing_standing; same vocabulary as
17473
+ * BillingProfile.standing_reason. ADMIN reads only — tokens like
17474
+ * card_expired are payment-method detail, which a plain member never sees.
17475
+ *
17476
+ * @generated from field: string standing_reason = 15;
17477
+ */
17478
+ standingReason = "";
17479
+ /**
17480
+ * Whether a dunning episode is open right now — the payment provider has an
17481
+ * unpaid invoice for this org and is retrying it. TRUE together with
17482
+ * payment_method_required = false is the case that needs a human: the org is
17483
+ * exempt, so nothing will limit it, and the unpaid invoice will otherwise sit
17484
+ * there indefinitely.
17485
+ *
17486
+ * @generated from field: bool in_dunning = 16;
17487
+ */
17488
+ inDunning = false;
17489
+ /**
17490
+ * How many dunning episodes have run without a clean cycle in between. At 2 a
17491
+ * new episode gets no grace window at all. Reset only by an invoice that pays
17492
+ * while no episode is open — recovering INSIDE dunning does not earn the
17493
+ * window back.
17494
+ *
17495
+ * @generated from field: int32 consecutive_dunned_cycles = 17;
17496
+ */
17497
+ consecutiveDunnedCycles = 0;
17498
+ /**
17499
+ * How automation may treat this organization — see BillingTreatment.
17500
+ *
17501
+ * ADMIN reads only, like standing_reason above: it is a statement about a
17502
+ * commercial relationship, and a customer does not learn from an API field
17503
+ * that we have decided never to interrupt them.
17504
+ *
17505
+ * Orthogonal to billing_standing. A trusted org can report
17506
+ * BILLING_STANDING_DELINQUENT and still be untouched by every automated
17507
+ * path — the founder gets an email instead.
17508
+ *
17509
+ * @generated from field: transcodely.v1.BillingTreatment billing_treatment = 18;
17510
+ */
17511
+ billingTreatment = 0 /* UNSPECIFIED */;
15772
17512
  constructor(data) {
15773
17513
  super();
15774
17514
  proto3.util.initPartial(data, this);
@@ -15807,7 +17547,41 @@ var Organization = class _Organization extends Message {
15807
17547
  },
15808
17548
  { no: 6, name: "status", kind: "enum", T: proto3.getEnumType(OrganizationStatus) },
15809
17549
  { no: 7, name: "created_at", kind: "message", T: Timestamp },
15810
- { no: 8, name: "updated_at", kind: "message", T: Timestamp }
17550
+ { no: 8, name: "updated_at", kind: "message", T: Timestamp },
17551
+ { no: 9, name: "plan_id", kind: "scalar", T: 9, opt: true },
17552
+ { no: 10, name: "plan_name", kind: "scalar", T: 9, opt: true },
17553
+ {
17554
+ no: 11,
17555
+ name: "payment_method_required",
17556
+ kind: "scalar",
17557
+ T: 8
17558
+ /* ScalarType.BOOL */
17559
+ },
17560
+ { no: 12, name: "grandfathered_at", kind: "message", T: Timestamp, opt: true },
17561
+ { no: 13, name: "billing_standing", kind: "enum", T: proto3.getEnumType(BillingStanding) },
17562
+ { no: 14, name: "grace_until", kind: "message", T: Timestamp, opt: true },
17563
+ {
17564
+ no: 15,
17565
+ name: "standing_reason",
17566
+ kind: "scalar",
17567
+ T: 9
17568
+ /* ScalarType.STRING */
17569
+ },
17570
+ {
17571
+ no: 16,
17572
+ name: "in_dunning",
17573
+ kind: "scalar",
17574
+ T: 8
17575
+ /* ScalarType.BOOL */
17576
+ },
17577
+ {
17578
+ no: 17,
17579
+ name: "consecutive_dunned_cycles",
17580
+ kind: "scalar",
17581
+ T: 5
17582
+ /* ScalarType.INT32 */
17583
+ },
17584
+ { no: 18, name: "billing_treatment", kind: "enum", T: proto3.getEnumType(BillingTreatment) }
15811
17585
  ]);
15812
17586
  static fromBinary(bytes, options) {
15813
17587
  return new _Organization().fromBinary(bytes, options);
@@ -18048,8 +19822,7 @@ var User = class _User extends Message {
18048
19822
  */
18049
19823
  updatedAt;
18050
19824
  /**
18051
- * Whether this user has been approved by a staff member.
18052
- * New sign-ups default to PENDING.
19825
+ * Whether this user may use the dashboard.
18053
19826
  *
18054
19827
  * @generated from field: transcodely.v1.UserApprovalStatus approval_status = 11;
18055
19828
  */
@@ -18061,7 +19834,8 @@ var User = class _User extends Message {
18061
19834
  */
18062
19835
  approvalDecidedAt;
18063
19836
  /**
18064
- * The staff member's user_id who decided approval.
19837
+ * The staff member's user_id who decided approval. Absent when the user was
19838
+ * approved automatically rather than by a person.
18065
19839
  *
18066
19840
  * @generated from field: optional string approval_decided_by_user_id = 13;
18067
19841
  */
@@ -19618,6 +21392,6 @@ var Transcodely = class {
19618
21392
  Transcodely.API_VERSION = API_VERSION;
19619
21393
  Transcodely.SDK_VERSION = SDK_VERSION;
19620
21394
 
19621
- export { APIConnectionError, APIError, API_VERSION, AppStatus, AudioCodec, AuthenticationError, BitrateMode, ConflictError, Container, ContentAwareMode, ContentType, DEFAULT_BASE_URL, DEFAULT_TOLERANCE_SECONDS, DRMSystem, DeliveryFormat, EVENT_ID_HEADER, EncryptionScheme, GOPAlignmentMode, HDRFormat, HDRMode, HLSPlaylistType, HLSSegmentFormat, InvalidRequestError, InvoiceLineType, InvoiceStatus, JobCostLineType, JobPriority, JobStatus, MembershipRole, MembershipStatus, NotFoundError, OrganizationStatus, OriginPermission, OriginProvider, OriginStatus, OutputFormat, OutputStatus, Page, PermissionError, PreconditionError, QualityTier, R2Jurisdiction, RateLimitError, Resolution, SDK_VERSION, SIGNATURE_HEADER, SubtitleFormat, SubtitleOperation, ThumbnailFormat, ThumbnailMode, ToneMapping, Transcodely, TranscodelyError, UserApprovalStatus, UserStatus, VideoCodec, VideoStatus, VideoVisibility, WEBHOOK_EVENT_TYPES, WatchEventType, WatermarkAnchor, WebhookError, WebhookPayloadError, WebhookSignatureError, WebhookTimestampError, Webhooks, constructEvent, isEventType, isKnownEvent, verifySignature };
21395
+ export { APIConnectionError, APIError, API_VERSION, AppStatus, AudioCodec, AuthenticationError, BillingStanding, BillingTreatment, BitrateMode, ConflictError, Container, ContentAwareMode, ContentType, DEFAULT_BASE_URL, DEFAULT_TOLERANCE_SECONDS, DRMSystem, DeliveryFormat, DunningStage, EVENT_ID_HEADER, EncryptionScheme, ExposureThresholdSource, GOPAlignmentMode, HDRFormat, HDRMode, HLSPlaylistType, HLSSegmentFormat, InvalidRequestError, InvoiceLineType, InvoiceStatus, JobCostLineType, JobPriority, JobStatus, MembershipRole, MembershipStatus, NotFoundError, OrganizationStatus, OriginPermission, OriginProvider, OriginStatus, OutputFormat, OutputStatus, Page, PaymentMethodState, PermissionError, PreconditionError, QualityTier, R2Jurisdiction, RateLimitError, Resolution, SDK_VERSION, SIGNATURE_HEADER, SubtitleFormat, SubtitleOperation, ThumbnailFormat, ThumbnailMode, ToneMapping, Transcodely, TranscodelyError, TrustTier, UserApprovalStatus, UserStatus, VideoCodec, VideoStatus, VideoVisibility, WEBHOOK_EVENT_TYPES, WatchEventType, WatermarkAnchor, WebhookError, WebhookPayloadError, WebhookSignatureError, WebhookTimestampError, Webhooks, constructEvent, isEventType, isKnownEvent, verifySignature };
19622
21396
  //# sourceMappingURL=index.mjs.map
19623
21397
  //# sourceMappingURL=index.mjs.map