@transcodely/sdk 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,25 @@ All notable changes to the Transcodely JavaScript / TypeScript SDK will be docum
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Breaking changes are allowed on minor bumps until 1.0.0.
6
6
 
7
+ ## [0.1.4](https://github.com/transcodely/transcodely-js/compare/v0.1.3...v0.1.4) (2026-07-07)
8
+
9
+
10
+ ### Documentation
11
+
12
+ * **examples:** add S3-compatible (custom-endpoint) origin example ([#11](https://github.com/transcodely/transcodely-js/issues/11)) ([1d262f7](https://github.com/transcodely/transcodely-js/commit/1d262f7193fefd09f63279921d8781c6f45ae14f))
13
+
14
+ ## [0.1.3](https://github.com/transcodely/transcodely-js/compare/v0.1.2...v0.1.3) (2026-07-02)
15
+
16
+
17
+ ### Features
18
+
19
+ * resync proto — thumbnail path_template + accumulated drift ([#9](https://github.com/transcodely/transcodely-js/issues/9)) ([b304946](https://github.com/transcodely/transcodely-js/commit/b30494607e4b969014654e75fc7e3832bc4ad79e))
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **webhooks:** accept null request.id in envelope ([#8](https://github.com/transcodely/transcodely-js/issues/8)) ([b1c2b70](https://github.com/transcodely/transcodely-js/commit/b1c2b7073b814b8aba4ac2e4c438d291ae7461ca))
25
+
7
26
  ## [0.1.2](https://github.com/transcodely/transcodely-js/compare/v0.1.1...v0.1.2) (2026-07-01)
8
27
 
9
28
 
package/dist/index.cjs CHANGED
@@ -3311,7 +3311,10 @@ var ResendEventRequest = class _ResendEventRequest extends protobuf.Message {
3311
3311
  };
3312
3312
  var ResendEventResponse = class _ResendEventResponse extends protobuf.Message {
3313
3313
  /**
3314
- * Newly-created pending delivery records, one per target endpoint.
3314
+ * Newly-created pending delivery records, one per target endpoint. These are
3315
+ * freshly queued, so response-side fields (latency_ms, response_status,
3316
+ * response_headers, transport_error) are absent until the worker attempts
3317
+ * delivery — re-fetch via ListWebhookDeliveries to see the completed row.
3315
3318
  *
3316
3319
  * @generated from field: repeated transcodely.v1.WebhookDelivery deliveries = 1;
3317
3320
  */
@@ -3392,7 +3395,9 @@ var SendTestWebhookResponse = class _SendTestWebhookResponse extends protobuf.Me
3392
3395
  /**
3393
3396
  * The newly-queued delivery row. The UI navigates the operator to its
3394
3397
  * detail sheet so they can watch the worker transition it from pending
3395
- * to succeeded / failed in real time.
3398
+ * to succeeded / failed in real time. Because it is freshly queued,
3399
+ * response-side fields (latency_ms, response_status, response_headers,
3400
+ * transport_error) are absent until the worker attempts delivery.
3396
3401
  *
3397
3402
  * @generated from field: transcodely.v1.WebhookDelivery delivery = 1;
3398
3403
  */
@@ -7414,6 +7419,27 @@ var ThumbnailSpec = class _ThumbnailSpec extends protobuf.Message {
7414
7419
  * @generated from field: optional int32 sprite_columns = 9;
7415
7420
  */
7416
7421
  spriteColumns;
7422
+ /**
7423
+ * Per-thumbnail storage path template, resolved by the worker with
7424
+ * thumbnail-aware variables. Precedence: this field, then the output origin's
7425
+ * path_template, then the built-in default {job_id}/thumbnails/thumb_{thumb_index}.
7426
+ * The job-level output_path_template is NOT applied to thumbnails (it is
7427
+ * documented as applying to every output; thumbnails aren't outputs).
7428
+ *
7429
+ * Variables: {job_id}, {video_id}, {date}, {timestamp}, {uuid},
7430
+ * {format} (image format: jpeg|png|webp), {thumb_index} (0-based),
7431
+ * {thumb_time} (seconds, file-safe), {thumb_time_ms} (milliseconds).
7432
+ *
7433
+ * Example: "video/{video_id}/poster/{thumb_index}".
7434
+ *
7435
+ * Must not start with `/` or contain `..` (no path traversal). When set, it
7436
+ * must reference a uniqueness token ({job_id}, {video_id}, or {uuid}) so
7437
+ * thumbnails from different jobs never collide on a shared origin. Unset →
7438
+ * the default above (existing keys unchanged).
7439
+ *
7440
+ * @generated from field: optional string path_template = 10;
7441
+ */
7442
+ pathTemplate;
7417
7443
  constructor(data) {
7418
7444
  super();
7419
7445
  protobuf.proto3.util.initPartial(data, this);
@@ -7429,7 +7455,8 @@ var ThumbnailSpec = class _ThumbnailSpec extends protobuf.Message {
7429
7455
  { no: 6, name: "timestamp", kind: "scalar", T: 1, opt: true },
7430
7456
  { no: 7, name: "interval_seconds", kind: "scalar", T: 1, opt: true },
7431
7457
  { no: 8, name: "timestamps", kind: "scalar", T: 1, repeated: true },
7432
- { no: 9, name: "sprite_columns", kind: "scalar", T: 5, opt: true }
7458
+ { no: 9, name: "sprite_columns", kind: "scalar", T: 5, opt: true },
7459
+ { no: 10, name: "path_template", kind: "scalar", T: 9, opt: true }
7433
7460
  ]);
7434
7461
  static fromBinary(bytes, options) {
7435
7462
  return new _ThumbnailSpec().fromBinary(bytes, options);
@@ -7444,6 +7471,122 @@ var ThumbnailSpec = class _ThumbnailSpec extends protobuf.Message {
7444
7471
  return protobuf.proto3.util.equals(_ThumbnailSpec, a, b);
7445
7472
  }
7446
7473
  };
7474
+ var ThumbnailResult = class _ThumbnailResult extends protobuf.Message {
7475
+ /**
7476
+ * Storage key relative to the output origin
7477
+ * (e.g. "job_xxx/thumbnails/thumb_0.jpg"). Stable identifier for the file.
7478
+ *
7479
+ * @generated from field: string storage_key = 1;
7480
+ */
7481
+ storageKey = "";
7482
+ /**
7483
+ * Fully-qualified storage URL as built by the worker
7484
+ * (e.g. "s3://bucket/prefix/job_xxx/thumbnails/thumb_0.jpg"). Stored as-is
7485
+ * and echoed on the Job response, exactly like JobOutput.output_url.
7486
+ *
7487
+ * @generated from field: string url = 2;
7488
+ */
7489
+ url = "";
7490
+ /**
7491
+ * Generation mode that produced this file: single | interval | sprite |
7492
+ * timestamps. Lowercase string on the wire.
7493
+ *
7494
+ * @generated from field: string mode = 3;
7495
+ */
7496
+ mode = "";
7497
+ /**
7498
+ * File format: jpeg | png | webp. The sprite mode's WebVTT sidecar uses
7499
+ * "vtt".
7500
+ *
7501
+ * @generated from field: string format = 4;
7502
+ */
7503
+ format = "";
7504
+ /**
7505
+ * Pixel dimensions. 0 when not applicable (e.g. the .vtt sidecar).
7506
+ *
7507
+ * @generated from field: int32 width = 5;
7508
+ */
7509
+ width = 0;
7510
+ /**
7511
+ * @generated from field: int32 height = 6;
7512
+ */
7513
+ height = 0;
7514
+ /**
7515
+ * 0-based index within a multi-file spec (interval frames, sprite tiles).
7516
+ *
7517
+ * @generated from field: int32 index = 7;
7518
+ */
7519
+ index = 0;
7520
+ constructor(data) {
7521
+ super();
7522
+ protobuf.proto3.util.initPartial(data, this);
7523
+ }
7524
+ static runtime = protobuf.proto3;
7525
+ static typeName = "transcodely.v1.ThumbnailResult";
7526
+ static fields = protobuf.proto3.util.newFieldList(() => [
7527
+ {
7528
+ no: 1,
7529
+ name: "storage_key",
7530
+ kind: "scalar",
7531
+ T: 9
7532
+ /* ScalarType.STRING */
7533
+ },
7534
+ {
7535
+ no: 2,
7536
+ name: "url",
7537
+ kind: "scalar",
7538
+ T: 9
7539
+ /* ScalarType.STRING */
7540
+ },
7541
+ {
7542
+ no: 3,
7543
+ name: "mode",
7544
+ kind: "scalar",
7545
+ T: 9
7546
+ /* ScalarType.STRING */
7547
+ },
7548
+ {
7549
+ no: 4,
7550
+ name: "format",
7551
+ kind: "scalar",
7552
+ T: 9
7553
+ /* ScalarType.STRING */
7554
+ },
7555
+ {
7556
+ no: 5,
7557
+ name: "width",
7558
+ kind: "scalar",
7559
+ T: 5
7560
+ /* ScalarType.INT32 */
7561
+ },
7562
+ {
7563
+ no: 6,
7564
+ name: "height",
7565
+ kind: "scalar",
7566
+ T: 5
7567
+ /* ScalarType.INT32 */
7568
+ },
7569
+ {
7570
+ no: 7,
7571
+ name: "index",
7572
+ kind: "scalar",
7573
+ T: 5
7574
+ /* ScalarType.INT32 */
7575
+ }
7576
+ ]);
7577
+ static fromBinary(bytes, options) {
7578
+ return new _ThumbnailResult().fromBinary(bytes, options);
7579
+ }
7580
+ static fromJson(jsonValue, options) {
7581
+ return new _ThumbnailResult().fromJson(jsonValue, options);
7582
+ }
7583
+ static fromJsonString(jsonString, options) {
7584
+ return new _ThumbnailResult().fromJsonString(jsonString, options);
7585
+ }
7586
+ static equals(a, b) {
7587
+ return protobuf.proto3.util.equals(_ThumbnailResult, a, b);
7588
+ }
7589
+ };
7447
7590
 
7448
7591
  // src/gen/transcodely/v1/job_pb.ts
7449
7592
  var JobStatus = /* @__PURE__ */ ((JobStatus2) => {
@@ -7933,6 +8076,17 @@ var OutputSpec = class _OutputSpec extends protobuf.Message {
7933
8076
  * @generated from field: optional string effective_path_template = 15;
7934
8077
  */
7935
8078
  effectivePathTemplate;
8079
+ /**
8080
+ * Produce a video-only output, dropping audio entirely.
8081
+ * Override semantics: when unset, the value is inherited from the referenced
8082
+ * preset (or defaults to false). When true, no audio stream is encoded or
8083
+ * packaged even if the source has one. A source that has no audio is always
8084
+ * handled gracefully (video-only) regardless of this flag.
8085
+ * Must not be combined with explicit audio[] tracks.
8086
+ *
8087
+ * @generated from field: optional bool disable_audio = 16;
8088
+ */
8089
+ disableAudio;
7936
8090
  constructor(data) {
7937
8091
  super();
7938
8092
  protobuf.proto3.util.initPartial(data, this);
@@ -7952,7 +8106,8 @@ var OutputSpec = class _OutputSpec extends protobuf.Message {
7952
8106
  { no: 12, name: "drm", kind: "message", T: DRMConfig, opt: true },
7953
8107
  { no: 13, name: "content_aware", kind: "message", T: ContentAwareConfig, opt: true },
7954
8108
  { no: 14, name: "encoding_mode", kind: "scalar", T: 9, opt: true },
7955
- { no: 15, name: "effective_path_template", kind: "scalar", T: 9, opt: true }
8109
+ { no: 15, name: "effective_path_template", kind: "scalar", T: 9, opt: true },
8110
+ { no: 16, name: "disable_audio", kind: "scalar", T: 8, opt: true }
7956
8111
  ]);
7957
8112
  static fromBinary(bytes, options) {
7958
8113
  return new _OutputSpec().fromBinary(bytes, options);
@@ -8870,6 +9025,15 @@ var Job = class _Job extends protobuf.Message {
8870
9025
  * @generated from field: repeated transcodely.v1.ThumbnailSpec thumbnails = 25;
8871
9026
  */
8872
9027
  thumbnails = [];
9028
+ /**
9029
+ * Generated thumbnail artifacts (populated after the job completes). Each
9030
+ * entry carries the worker-built storage `url` plus `mode`/`index` to
9031
+ * correlate it back to the spec in `thumbnails` that produced it. Mirrors
9032
+ * how JobOutput.output_url surfaces rendition results.
9033
+ *
9034
+ * @generated from field: repeated transcodely.v1.ThumbnailResult thumbnail_results = 28;
9035
+ */
9036
+ thumbnailResults = [];
8873
9037
  /**
8874
9038
  * Job-level output path template (echoed from request).
8875
9039
  * Variables: {job_id}, {output_id}, {date}, {timestamp}, {codec}, {resolution}, {format}, {quality}, {output_index}, {uuid}
@@ -8954,6 +9118,7 @@ var Job = class _Job extends protobuf.Message {
8954
9118
  },
8955
9119
  { no: 24, name: "execution", kind: "message", T: ExecutionTiming },
8956
9120
  { no: 25, name: "thumbnails", kind: "message", T: ThumbnailSpec, repeated: true },
9121
+ { no: 28, name: "thumbnail_results", kind: "message", T: ThumbnailResult, repeated: true },
8957
9122
  { no: 26, name: "output_path_template", kind: "scalar", T: 9, opt: true },
8958
9123
  {
8959
9124
  no: 27,
@@ -9651,14 +9816,6 @@ var Video = class _Video extends protobuf.Message {
9651
9816
  * @generated from field: optional double encoding_cost = 31;
9652
9817
  */
9653
9818
  encodingCost;
9654
- /**
9655
- * @generated from field: optional double storage_cost_monthly = 32;
9656
- */
9657
- storageCostMonthly;
9658
- /**
9659
- * @generated from field: optional double egress_total = 33;
9660
- */
9661
- egressTotal;
9662
9819
  /**
9663
9820
  * Timestamps.
9664
9821
  *
@@ -9744,8 +9901,6 @@ var Video = class _Video extends protobuf.Message {
9744
9901
  /* ScalarType.INT64 */
9745
9902
  },
9746
9903
  { no: 31, name: "encoding_cost", kind: "scalar", T: 1, opt: true },
9747
- { no: 32, name: "storage_cost_monthly", kind: "scalar", T: 1, opt: true },
9748
- { no: 33, name: "egress_total", kind: "scalar", T: 1, opt: true },
9749
9904
  { no: 40, name: "created_at", kind: "message", T: protobuf.Timestamp },
9750
9905
  { no: 41, name: "updated_at", kind: "message", T: protobuf.Timestamp },
9751
9906
  { no: 42, name: "ready_at", kind: "message", T: protobuf.Timestamp, opt: true },
@@ -10990,7 +11145,8 @@ var WatchVideoResponse = class _WatchVideoResponse extends protobuf.Message {
10990
11145
  */
10991
11146
  video;
10992
11147
  /**
10993
- * Type of event that triggered this update (e.g., "snapshot", "status_change", "completed").
11148
+ * Type of event that triggered this update. One of: "snapshot" (initial
11149
+ * state on subscribe), "status_change", "progress", "completed".
10994
11150
  *
10995
11151
  * @generated from field: string event_type = 2;
10996
11152
  */
@@ -11138,6 +11294,12 @@ var UsageSummary = class _UsageSummary extends protobuf.Message {
11138
11294
  * @generated from field: double total_cost = 30;
11139
11295
  */
11140
11296
  totalCost = 0;
11297
+ /**
11298
+ * ISO 4217 currency code for all monetary fields in this summary (e.g. "EUR").
11299
+ *
11300
+ * @generated from field: string currency = 31;
11301
+ */
11302
+ currency = "";
11141
11303
  constructor(data) {
11142
11304
  super();
11143
11305
  protobuf.proto3.util.initPartial(data, this);
@@ -11221,6 +11383,13 @@ var UsageSummary = class _UsageSummary extends protobuf.Message {
11221
11383
  kind: "scalar",
11222
11384
  T: 1
11223
11385
  /* ScalarType.DOUBLE */
11386
+ },
11387
+ {
11388
+ no: 31,
11389
+ name: "currency",
11390
+ kind: "scalar",
11391
+ T: 9
11392
+ /* ScalarType.STRING */
11224
11393
  }
11225
11394
  ]);
11226
11395
  static fromBinary(bytes, options) {
@@ -11688,7 +11857,7 @@ function backoff(attempt) {
11688
11857
  }
11689
11858
 
11690
11859
  // src/version.ts
11691
- var SDK_VERSION = "0.1.2";
11860
+ var SDK_VERSION = "0.1.4";
11692
11861
  var API_VERSION = "2026-05-03";
11693
11862
  var DEFAULT_BASE_URL = "https://api.transcodely.com";
11694
11863
 
@@ -12214,9 +12383,11 @@ var UpdateMembershipRoleRequest = class _UpdateMembershipRoleRequest extends pro
12214
12383
  };
12215
12384
  var UpdateMembershipRoleResponse = class _UpdateMembershipRoleResponse extends protobuf.Message {
12216
12385
  /**
12217
- * The updated membership.
12386
+ * The updated membership, including user details — same shape as
12387
+ * GetMembership / ListMemberships so a client refreshing from this response
12388
+ * doesn't see user fields disappear after a role change.
12218
12389
  *
12219
- * @generated from field: transcodely.v1.Membership membership = 1;
12390
+ * @generated from field: transcodely.v1.MembershipWithUser membership = 1;
12220
12391
  */
12221
12392
  membership;
12222
12393
  constructor(data) {
@@ -12226,7 +12397,7 @@ var UpdateMembershipRoleResponse = class _UpdateMembershipRoleResponse extends p
12226
12397
  static runtime = protobuf.proto3;
12227
12398
  static typeName = "transcodely.v1.UpdateMembershipRoleResponse";
12228
12399
  static fields = protobuf.proto3.util.newFieldList(() => [
12229
- { no: 1, name: "membership", kind: "message", T: Membership }
12400
+ { no: 1, name: "membership", kind: "message", T: MembershipWithUser }
12230
12401
  ]);
12231
12402
  static fromBinary(bytes, options) {
12232
12403
  return new _UpdateMembershipRoleResponse().fromBinary(bytes, options);
@@ -13602,14 +13773,6 @@ var Preset = class _Preset extends protobuf.Message {
13602
13773
  * @generated from field: transcodely.v1.DeliveryFormat delivery_format = 8;
13603
13774
  */
13604
13775
  deliveryFormat = 0 /* UNSPECIFIED */;
13605
- /**
13606
- * Streaming configuration for HLS/DASH outputs.
13607
- * Includes segment duration, GOP alignment, and format options.
13608
- * DEPRECATED: segment_duration field 9 is replaced by this.
13609
- *
13610
- * @generated from field: optional transcodely.v1.StreamingConfig streaming = 17;
13611
- */
13612
- streaming;
13613
13776
  /**
13614
13777
  * Segment duration in seconds for HLS/DASH (default: 6).
13615
13778
  * DEPRECATED: Use streaming.segment_duration_seconds instead.
@@ -13670,6 +13833,13 @@ var Preset = class _Preset extends protobuf.Message {
13670
13833
  * @generated from field: repeated transcodely.v1.PresetVariant variants = 18;
13671
13834
  */
13672
13835
  variants = [];
13836
+ /**
13837
+ * Produce video-only outputs (no audio). When true, outputs derived from this
13838
+ * preset drop audio entirely unless the output overrides disable_audio.
13839
+ *
13840
+ * @generated from field: bool disable_audio = 19;
13841
+ */
13842
+ disableAudio = false;
13673
13843
  constructor(data) {
13674
13844
  super();
13675
13845
  protobuf.proto3.util.initPartial(data, this);
@@ -13709,7 +13879,6 @@ var Preset = class _Preset extends protobuf.Message {
13709
13879
  /* ScalarType.BOOL */
13710
13880
  },
13711
13881
  { no: 8, name: "delivery_format", kind: "enum", T: protobuf.proto3.getEnumType(DeliveryFormat) },
13712
- { no: 17, name: "streaming", kind: "message", T: StreamingConfig, opt: true },
13713
13882
  { no: 9, name: "segment_duration", kind: "scalar", T: 5, opt: true },
13714
13883
  { no: 10, name: "video", kind: "message", T: VideoSettings },
13715
13884
  { no: 11, name: "audio", kind: "message", T: AudioSettings },
@@ -13724,7 +13893,14 @@ var Preset = class _Preset extends protobuf.Message {
13724
13893
  },
13725
13894
  { no: 15, name: "created_at", kind: "message", T: protobuf.Timestamp },
13726
13895
  { no: 16, name: "updated_at", kind: "message", T: protobuf.Timestamp },
13727
- { no: 18, name: "variants", kind: "message", T: PresetVariant, repeated: true }
13896
+ { no: 18, name: "variants", kind: "message", T: PresetVariant, repeated: true },
13897
+ {
13898
+ no: 19,
13899
+ name: "disable_audio",
13900
+ kind: "scalar",
13901
+ T: 8
13902
+ /* ScalarType.BOOL */
13903
+ }
13728
13904
  ]);
13729
13905
  static fromBinary(bytes, options) {
13730
13906
  return new _Preset().fromBinary(bytes, options);
@@ -13819,11 +13995,18 @@ var CreatePresetRequest = class _CreatePresetRequest extends protobuf.Message {
13819
13995
  /**
13820
13996
  * Multi-variant ABR configuration (max 20 variants).
13821
13997
  * Only valid when delivery_format is hls, dash, or cmaf.
13822
- * Requires at least 2 variants when non-empty.
13998
+ * Requires at least 1 variant when non-empty; a single variant produces a
13999
+ * single-rendition streaming output (e.g. one vertical 720p HLS stream).
13823
14000
  *
13824
14001
  * @generated from field: repeated transcodely.v1.PresetVariant variants = 14;
13825
14002
  */
13826
14003
  variants = [];
14004
+ /**
14005
+ * Produce video-only outputs (no audio). Default: false.
14006
+ *
14007
+ * @generated from field: optional bool disable_audio = 15;
14008
+ */
14009
+ disableAudio;
13827
14010
  constructor(data) {
13828
14011
  super();
13829
14012
  protobuf.proto3.util.initPartial(data, this);
@@ -13855,7 +14038,8 @@ var CreatePresetRequest = class _CreatePresetRequest extends protobuf.Message {
13855
14038
  { no: 9, name: "video", kind: "message", T: VideoSettings },
13856
14039
  { no: 10, name: "audio", kind: "message", T: AudioSettings },
13857
14040
  { no: 11, name: "quality_tier", kind: "enum", T: protobuf.proto3.getEnumType(QualityTier) },
13858
- { no: 14, name: "variants", kind: "message", T: PresetVariant, repeated: true }
14041
+ { no: 14, name: "variants", kind: "message", T: PresetVariant, repeated: true },
14042
+ { no: 15, name: "disable_audio", kind: "scalar", T: 8, opt: true }
13859
14043
  ]);
13860
14044
  static fromBinary(bytes, options) {
13861
14045
  return new _CreatePresetRequest().fromBinary(bytes, options);
@@ -14215,6 +14399,13 @@ var UpdatePresetRequest = class _UpdatePresetRequest extends protobuf.Message {
14215
14399
  * @generated from field: repeated transcodely.v1.PresetVariant variants = 15;
14216
14400
  */
14217
14401
  variants = [];
14402
+ /**
14403
+ * New disable_audio setting (optional). When true, outputs from this preset
14404
+ * are video-only.
14405
+ *
14406
+ * @generated from field: optional bool disable_audio = 16;
14407
+ */
14408
+ disableAudio;
14218
14409
  constructor(data) {
14219
14410
  super();
14220
14411
  protobuf.proto3.util.initPartial(data, this);
@@ -14241,7 +14432,8 @@ var UpdatePresetRequest = class _UpdatePresetRequest extends protobuf.Message {
14241
14432
  { no: 10, name: "video", kind: "message", T: VideoSettings, opt: true },
14242
14433
  { no: 11, name: "audio", kind: "message", T: AudioSettings, opt: true },
14243
14434
  { no: 12, name: "quality_tier", kind: "enum", T: protobuf.proto3.getEnumType(QualityTier), opt: true },
14244
- { no: 15, name: "variants", kind: "message", T: PresetVariant, repeated: true }
14435
+ { no: 15, name: "variants", kind: "message", T: PresetVariant, repeated: true },
14436
+ { no: 16, name: "disable_audio", kind: "scalar", T: 8, opt: true }
14245
14437
  ]);
14246
14438
  static fromBinary(bytes, options) {
14247
14439
  return new _UpdatePresetRequest().fromBinary(bytes, options);
@@ -16073,7 +16265,12 @@ function buildEvent(parsed) {
16073
16265
  if (!isPlainObject(requestRaw)) {
16074
16266
  throw new WebhookPayloadError("Webhook envelope field `request` must be a JSON object");
16075
16267
  }
16076
- const requestId = requireString(requestRaw, "id");
16268
+ const requestIdRaw = requestRaw["id"];
16269
+ if (requestIdRaw !== null && (typeof requestIdRaw !== "string" || requestIdRaw.length === 0)) {
16270
+ throw new WebhookPayloadError(
16271
+ "Webhook envelope field `request.id` must be a non-empty string or null"
16272
+ );
16273
+ }
16077
16274
  const idempotencyKeyRaw = requestRaw["idempotency_key"];
16078
16275
  if (idempotencyKeyRaw !== null && typeof idempotencyKeyRaw !== "string") {
16079
16276
  throw new WebhookPayloadError(
@@ -16091,7 +16288,7 @@ function buildEvent(parsed) {
16091
16288
  data,
16092
16289
  livemode,
16093
16290
  pendingWebhooks,
16094
- request: { id: requestId, idempotencyKey: idempotencyKeyRaw }
16291
+ request: { id: requestIdRaw, idempotencyKey: idempotencyKeyRaw }
16095
16292
  };
16096
16293
  }
16097
16294