@transcodely/sdk 0.3.7 → 0.3.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -747,8 +747,12 @@ declare class CreateAPIKeyRequest extends Message<CreateAPIKeyRequest> {
747
747
  */
748
748
  expiresAt?: Timestamp;
749
749
  /**
750
- * App ID to create the key for.
751
- * Required when unauthenticated. Ignored when authenticated (uses the authenticated app).
750
+ * App ID to create the key for. API-key callers may omit it (their key's app
751
+ * is used) or pass their own app; a different app is rejected with
752
+ * PermissionDenied. Portal/JWT callers pass it to create in a specific app in
753
+ * their org; omitted selects the org's first active app. Still REQUIRED on
754
+ * the unauthenticated onboarding bootstrap path, where nothing else can name
755
+ * an app: omitting it there is invalid_argument (`app_id_required`).
752
756
  *
753
757
  * @generated from field: string app_id = 5;
754
758
  */
@@ -1044,6 +1048,18 @@ declare class InvalidRequestError extends TranscodelyError {
1044
1048
  /** 412 — preconditions not met (e.g. job not cancelable in current state). */
1045
1049
  declare class PreconditionError extends TranscodelyError {
1046
1050
  }
1051
+ /**
1052
+ * Raised by `client.uploads.putFile` when the byte transfer itself fails —
1053
+ * a presigned PUT rejected after retries, a store that returned no ETag, or a
1054
+ * source the SDK refuses to send (empty, over the 5 GB ceiling, a stream with
1055
+ * no declared size). Errors from the upload RPCs themselves stay in their own
1056
+ * classes; this one covers the part of the upload the API never sees.
1057
+ */
1058
+ declare class UploadError extends TranscodelyError {
1059
+ }
1060
+ /** The upload's `signal` fired. The multipart upload is aborted server-side. */
1061
+ declare class UploadAbortedError extends UploadError {
1062
+ }
1047
1063
  /**
1048
1064
  * Base class for errors thrown by {@link Webhooks.constructEvent}. Unlike the
1049
1065
  * other SDK errors, these originate locally — the SDK never made a network
@@ -1732,13 +1748,22 @@ declare class EnableHostingResponse extends Message<EnableHostingResponse> {
1732
1748
  */
1733
1749
  declare class HostingConfig extends Message<HostingConfig> {
1734
1750
  /**
1735
- * Default visibility for new uploads: "public", "unlisted", or "private".
1751
+ * Default visibility for videos this app creates: "public", "unlisted", or
1752
+ * "private". Applies to every creation path — CreateUpload,
1753
+ * CreateMultipartUpload, CreateFromUrl and the video a managed CreateJob
1754
+ * produces — whenever the request itself does not name a visibility. Unset
1755
+ * means "unlisted".
1736
1756
  *
1737
1757
  * @generated from field: optional string default_visibility = 1;
1738
1758
  */
1739
1759
  defaultVisibility?: string;
1740
1760
  /**
1741
- * Max upload file size in bytes (0 = no limit).
1761
+ * Max upload file size in bytes (0 = no limit). Enforced at CreateUpload and
1762
+ * CreateMultipartUpload against the request's declared size_bytes, on top of
1763
+ * the fixed 5 GB per-request ceiling; over-limit requests are rejected with
1764
+ * error code "max_upload_size_exceeded" before anything is created. Not
1765
+ * enforced by CreateFromUrl, whose source size is unknown until the worker
1766
+ * fetches the URL.
1742
1767
  *
1743
1768
  * @generated from field: optional int64 max_upload_size_bytes = 2;
1744
1769
  */
@@ -3859,7 +3884,10 @@ declare class WebhookDelivery extends Message<WebhookDelivery> {
3859
3884
  */
3860
3885
  declare class CreateWebhookEndpointRequest extends Message<CreateWebhookEndpointRequest> {
3861
3886
  /**
3862
- * App to create the endpoint for.
3887
+ * App to create the endpoint for. API-key callers may omit it (their key's
3888
+ * app is used) or pass their own app; a different app is rejected with
3889
+ * PermissionDenied. Portal/JWT callers pass it to create in a specific app in
3890
+ * their org; omitted selects the org's first active app.
3863
3891
  *
3864
3892
  * @generated from field: string app_id = 1;
3865
3893
  */
@@ -4088,7 +4116,10 @@ declare class DeleteWebhookEndpointResponse extends Message<DeleteWebhookEndpoin
4088
4116
  */
4089
4117
  declare class ListWebhookEndpointsRequest extends Message<ListWebhookEndpointsRequest> {
4090
4118
  /**
4091
- * App to list endpoints for.
4119
+ * Optional app filter. API-key callers may omit it (their key's app is used)
4120
+ * or pass their own app; a different app is rejected with PermissionDenied.
4121
+ * Portal/JWT callers pass it to list a specific app in their org; omitted
4122
+ * returns endpoints across all apps in the org.
4092
4123
  *
4093
4124
  * @generated from field: string app_id = 1;
4094
4125
  */
@@ -4198,7 +4229,10 @@ declare class RotateWebhookSecretResponse extends Message<RotateWebhookSecretRes
4198
4229
  */
4199
4230
  declare class ListEventsRequest extends Message<ListEventsRequest> {
4200
4231
  /**
4201
- * App to list events for.
4232
+ * Optional app filter. API-key callers may omit it (their key's app is used)
4233
+ * or pass their own app; a different app is rejected with PermissionDenied.
4234
+ * Portal/JWT callers pass it to list a specific app in their org; omitted
4235
+ * returns events across all apps in the org.
4202
4236
  *
4203
4237
  * @generated from field: string app_id = 1;
4204
4238
  */
@@ -6256,10 +6290,11 @@ declare class DRMConfig extends Message<DRMConfig> {
6256
6290
  /**
6257
6291
  * Content-aware encoding mode.
6258
6292
  *
6259
- * NOT YET SUPPORTED. The worker pipeline does not yet act on content-aware
6260
- * encoding, so any output carrying a ContentAwareConfig is rejected at CreateJob
6261
- * with error code `parameter_unsupported` (see issue #167). The enum values are
6262
- * retained for wire compatibility and will become active when the feature ships.
6293
+ * One of the two modes ships: `per_title` is accepted and acted on. `auto_abr`
6294
+ * is still rejected at CreateJob with error code `parameter_unsupported` and
6295
+ * the message "auto_abr is not available yet; per_title is" (issue #167),
6296
+ * because it would change the NUMBER of renditions after the job was already
6297
+ * quoted per rendition at create time.
6263
6298
  *
6264
6299
  * @generated from enum transcodely.v1.ContentAwareMode
6265
6300
  */
@@ -6269,15 +6304,18 @@ declare enum ContentAwareMode {
6269
6304
  */
6270
6305
  UNSPECIFIED = 0,
6271
6306
  /**
6272
- * Optimize CRF for target VMAF on specific content. NOT YET SUPPORTED —
6273
- * rejected at create.
6307
+ * Find the CRF this source needs to reach the VMAF target, and encode the
6308
+ * declared ladder at it. The search runs once per output, on the ladder's
6309
+ * highest-resolution quality-driven rendition; the lower rungs move by the
6310
+ * CRF offsets the ladder already declares. Priced at 1.5x. What the search
6311
+ * decided comes back on OutputReport.content_aware.
6274
6312
  *
6275
6313
  * @generated from enum value: CONTENT_AWARE_MODE_PER_TITLE = 1;
6276
6314
  */
6277
6315
  PER_TITLE = 1,
6278
6316
  /**
6279
- * Generate optimal bitrate ladder automatically. NOT YET SUPPORTED —
6280
- * rejected at create.
6317
+ * Generate the bitrate ladder automatically. NOT YET ACCEPTED — rejected at
6318
+ * create.
6281
6319
  *
6282
6320
  * @generated from enum value: CONTENT_AWARE_MODE_AUTO_ABR = 2;
6283
6321
  */
@@ -6286,9 +6324,9 @@ declare enum ContentAwareMode {
6286
6324
  /**
6287
6325
  * Auto ABR ladder generation constraints.
6288
6326
  *
6289
- * NOT YET SUPPORTED — see ContentAwareConfig. These constraints are validated
6290
- * for shape but never applied, because a request carrying content_aware is
6291
- * rejected at create.
6327
+ * NOT YET ACCEPTED — see ContentAwareConfig. These constraints are validated
6328
+ * for shape but never applied, because a request in auto_abr mode is rejected
6329
+ * at create.
6292
6330
  *
6293
6331
  * @generated from message transcodely.v1.AutoABRConfig
6294
6332
  */
@@ -6331,35 +6369,51 @@ declare class AutoABRConfig extends Message<AutoABRConfig> {
6331
6369
  /**
6332
6370
  * Content-aware encoding configuration for an output.
6333
6371
  *
6334
- * NOT YET SUPPORTED. Setting content_aware on any output causes CreateJob to
6335
- * fail with error code `parameter_unsupported` and the message "content-aware
6336
- * encoding (per_title/auto_abr) is not yet supported". The worker does not yet
6337
- * implement per-title CRF optimization or auto-ABR ladder generation — both
6338
- * modes would run the identical plain-encode path — so the API rejects the
6339
- * request rather than silently no-op it while charging the content-aware
6340
- * multiplier (issue #167 / transcodely/worker#90). The message and fields are
6341
- * retained for wire compatibility and forward-planning.
6372
+ * In `per_title` mode the encode is tuned to this particular source: the worker
6373
+ * measures short samples of it at several CRFs and encodes the declared ladder
6374
+ * at the cheapest one that reaches the VMAF target. The ladder itself is
6375
+ * unchanged — same renditions, same resolutions — so the price quoted at create
6376
+ * still holds, with the 1.5x per-title multiplier applied.
6377
+ *
6378
+ * Three requests are refused at create:
6379
+ * - `auto_abr` mode (`parameter_unsupported`) — not available yet;
6380
+ * - an output with no video renditions, or one whose every video rendition is
6381
+ * pinned to an explicit bitrate (`parameter_incompatible`) — a pinned
6382
+ * rendition ignores CRF, so the search would change nothing while still
6383
+ * being billed;
6384
+ * - a source shorter than 120 seconds, refused at probe with
6385
+ * `per_title_source_too_short` once the input has been measured.
6386
+ *
6387
+ * What the search decided is reported back on OutputReport.content_aware.
6342
6388
  *
6343
6389
  * @generated from message transcodely.v1.ContentAwareConfig
6344
6390
  */
6345
6391
  declare class ContentAwareConfig extends Message<ContentAwareConfig> {
6346
6392
  /**
6347
- * Encoding mode (required). NOT YET SUPPORTED — any value here causes the
6348
- * request to be rejected at create.
6393
+ * Encoding mode (required). `per_title` is accepted; `auto_abr` is rejected
6394
+ * at create.
6349
6395
  *
6350
6396
  * @generated from field: transcodely.v1.ContentAwareMode mode = 1;
6351
6397
  */
6352
6398
  mode: ContentAwareMode;
6353
6399
  /**
6354
- * Override VMAF target (70-99). NOT YET SUPPORTED — content-aware encoding is
6355
- * rejected at create, so this value is never applied.
6400
+ * Override VMAF target (80-97). Default: 93, regardless of quality tier.
6401
+ *
6402
+ * The range is the one the per-title search can actually work in, narrowed
6403
+ * from 70-99 before the feature was ever accepted: below 80 the result is not
6404
+ * a quality target anyone would ask for, and above 97 the search cannot
6405
+ * distinguish the last point from the one below it. Asking for a number we
6406
+ * would silently move is worse than refusing it.
6407
+ *
6408
+ * The value the analysis actually searched against is reported back on
6409
+ * OutputReport.content_aware.vmaf_target, which is the one to read.
6356
6410
  *
6357
6411
  * @generated from field: optional double vmaf_target = 2;
6358
6412
  */
6359
6413
  vmafTarget?: number;
6360
6414
  /**
6361
- * Auto ABR constraints (only for auto_abr mode). NOT YET SUPPORTED — rejected
6362
- * at create.
6415
+ * Auto ABR constraints (only for auto_abr mode). NOT YET ACCEPTED — an
6416
+ * auto_abr request is rejected at create whatever these say.
6363
6417
  *
6364
6418
  * @generated from field: optional transcodely.v1.AutoABRConfig auto_abr = 3;
6365
6419
  */
@@ -6376,9 +6430,10 @@ declare class ContentAwareConfig extends Message<ContentAwareConfig> {
6376
6430
  /**
6377
6431
  * Content analysis results from extended probe.
6378
6432
  *
6379
- * NOT YET POPULATED. Produced only when content-aware analysis is wired in the
6380
- * worker; today no job carries it, because content_aware requests are rejected
6381
- * at create (see ContentAwareConfig).
6433
+ * NOT YET POPULATED, and not carried by any RPC. The worker measures these
6434
+ * complexity scores but has nowhere to send them: the API stores the per-title
6435
+ * SEARCH RESULT (see OutputReportContentAware) and not the source scores behind
6436
+ * it. Retained for wire compatibility.
6382
6437
  *
6383
6438
  * @generated from message transcodely.v1.ContentAnalysis
6384
6439
  */
@@ -8751,7 +8806,10 @@ declare class OutputSpec extends Message<OutputSpec> {
8751
8806
  drm?: DRMConfig;
8752
8807
  /**
8753
8808
  * Content-aware encoding configuration.
8754
- * Enables per-title encoding or automatic ABR ladder generation.
8809
+ * Enables per-title encoding, which tunes this output's CRF to the source
8810
+ * rather than to its quality tier. Requires at least one video rendition that
8811
+ * is not pinned to an explicit bitrate, and a source of at least 120 seconds.
8812
+ * `auto_abr` mode is not accepted yet.
8755
8813
  *
8756
8814
  * @generated from field: optional transcodely.v1.ContentAwareConfig content_aware = 13;
8757
8815
  */
@@ -9206,6 +9264,18 @@ declare class JobOutput extends Message<JobOutput> {
9206
9264
  * @generated from field: optional string signed_url = 26;
9207
9265
  */
9208
9266
  signedUrl?: string;
9267
+ /**
9268
+ * What the produced file actually is, measured from the file itself, plus
9269
+ * the verdict of comparing those measurements against what this output
9270
+ * asked for. See OutputReport.
9271
+ *
9272
+ * Absent until the output has been measured: outputs that never produced a
9273
+ * file, and outputs produced before this field existed, carry no report.
9274
+ * Absence means "not measured" — never "nothing wrong".
9275
+ *
9276
+ * @generated from field: optional transcodely.v1.OutputReport report = 27;
9277
+ */
9278
+ report?: OutputReport;
9209
9279
  constructor(data?: PartialMessage<JobOutput>);
9210
9280
  static readonly runtime: typeof proto3;
9211
9281
  static readonly typeName = "transcodely.v1.JobOutput";
@@ -9215,6 +9285,440 @@ declare class JobOutput extends Message<JobOutput> {
9215
9285
  static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): JobOutput;
9216
9286
  static equals(a: JobOutput | PlainMessage<JobOutput> | undefined, b: JobOutput | PlainMessage<JobOutput> | undefined): boolean;
9217
9287
  }
9288
+ /**
9289
+ * OutputReport is what the produced file turned out to be: codec, profile,
9290
+ * pixel format, color signaling, dimensions, frame rate, audio and duration,
9291
+ * all read back from the encoded file after it was written — not copied from
9292
+ * the request and not inherited from the input. The one field that is not a
9293
+ * measurement is container, which states the delivery format (see below).
9294
+ *
9295
+ * Alongside the facts sits a verdict: whether the file matches what the job
9296
+ * asked for, and the exact field-by-field differences where it does not. The
9297
+ * facts are measured by the encoder host; the verdict is computed by the API,
9298
+ * so the same request always produces the same verdict.
9299
+ *
9300
+ * For a single-file output the facts describe that file. For a multi-rendition
9301
+ * output (an ABR ladder, HLS, DASH, adaptive) they describe the
9302
+ * HIGHEST-RESOLUTION rendition — the same one width, height and
9303
+ * average_bitrate_kbps already report, and the one the verdict is judged
9304
+ * against. Per-rendition detail stays in variant_results.
9305
+ *
9306
+ * Every value here is a parsed, named fact. The report never carries encoder
9307
+ * command lines, tool output, stack traces, log lines or storage paths, and
9308
+ * values that do not look like the short identifiers media tools emit are
9309
+ * dropped rather than passed through.
9310
+ *
9311
+ * The string-typed fields (container, codec, profile, level, pix_fmt, the
9312
+ * color fields, hdr_format) are deliberately strings and not enums: their
9313
+ * vocabularies belong to the media formats themselves, and a value we have not
9314
+ * catalogued yet must be reportable the day it appears rather than wait for a
9315
+ * new enum value to travel through every SDK. They are always lowercase, and
9316
+ * the documented spellings below are the ones you will see in practice.
9317
+ *
9318
+ * @generated from message transcodely.v1.OutputReport
9319
+ */
9320
+ declare class OutputReport extends Message<OutputReport> {
9321
+ /**
9322
+ * Delivery format of this output, lowercase: "mp4", "mov", "webm", "mkv",
9323
+ * "hls", "dash" or "adaptive" — the same vocabulary as the request's
9324
+ * OutputSpec.type, and what a container mismatch is stated in.
9325
+ *
9326
+ * It names what was DELIVERED, not what a demuxer called an intermediate
9327
+ * file: for a streaming output the delivered thing is the manifest and its
9328
+ * segments, while the measurements in the fields below were taken on the
9329
+ * encoded rendition before it was packaged.
9330
+ *
9331
+ * That makes this the one field the verdict cannot really police — a report
9332
+ * echoing the requested type always matches. The check that a file is in the
9333
+ * container it was promised runs on the encoder host, before delivery, and
9334
+ * fails the output outright rather than describing it. This field is here so
9335
+ * the report is self-describing, not as that check's second opinion.
9336
+ *
9337
+ * @generated from field: string container = 1;
9338
+ */
9339
+ container: string;
9340
+ /**
9341
+ * The produced video stream. Absent when the file carries no video stream.
9342
+ *
9343
+ * @generated from field: optional transcodely.v1.OutputReportVideo video = 2;
9344
+ */
9345
+ video?: OutputReportVideo;
9346
+ /**
9347
+ * The produced audio streams, in the order the container carries them.
9348
+ * Empty for an output encoded without audio.
9349
+ *
9350
+ * @generated from field: repeated transcodely.v1.OutputReportAudio audio = 3;
9351
+ */
9352
+ audio: OutputReportAudio[];
9353
+ /**
9354
+ * Measured playback duration of the produced file in seconds.
9355
+ *
9356
+ * This is read from the produced file. It is not the input's duration and
9357
+ * not the requested length, which is exactly what makes it able to catch an
9358
+ * encode that stopped early.
9359
+ *
9360
+ * @generated from field: optional double duration_seconds = 4;
9361
+ */
9362
+ durationSeconds?: number;
9363
+ /**
9364
+ * Whether the produced file matches what this output asked for, and where it
9365
+ * does not. Always present on a report.
9366
+ *
9367
+ * @generated from field: transcodely.v1.OutputReportVerdict verdict = 5;
9368
+ */
9369
+ verdict?: OutputReportVerdict;
9370
+ /**
9371
+ * When the produced file was measured.
9372
+ *
9373
+ * @generated from field: google.protobuf.Timestamp checked_at = 6;
9374
+ */
9375
+ checkedAt?: Timestamp;
9376
+ /**
9377
+ * What the content-aware analysis decided for this output, when the output
9378
+ * was encoded with per-title analysis.
9379
+ *
9380
+ * Present ONLY for an output whose encode ran that analysis. Absent on every
9381
+ * ordinary output, which is the overwhelming majority of them, and absent on
9382
+ * an output that requested content-aware encoding but whose analysis pass
9383
+ * never reported (it fell back to the quality tier's own CRF).
9384
+ *
9385
+ * @generated from field: optional transcodely.v1.OutputReportContentAware content_aware = 7;
9386
+ */
9387
+ contentAware?: OutputReportContentAware;
9388
+ constructor(data?: PartialMessage<OutputReport>);
9389
+ static readonly runtime: typeof proto3;
9390
+ static readonly typeName = "transcodely.v1.OutputReport";
9391
+ static readonly fields: FieldList;
9392
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OutputReport;
9393
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OutputReport;
9394
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OutputReport;
9395
+ static equals(a: OutputReport | PlainMessage<OutputReport> | undefined, b: OutputReport | PlainMessage<OutputReport> | undefined): boolean;
9396
+ }
9397
+ /**
9398
+ * What the content-aware analysis decided for one output: the quality it aimed
9399
+ * at, the quality it reached on its samples, and the encoder setting it chose.
9400
+ *
9401
+ * These describe the SEARCH, not the finished file. The search runs on short
9402
+ * samples taken from the source before the real encode starts, so
9403
+ * vmaf_achieved is the score those samples got at the chosen setting — not a
9404
+ * measurement of the delivered output, which is never scored. The facts about
9405
+ * the delivered file are the other fields of OutputReport.
9406
+ *
9407
+ * The fields are strings and numbers for the same reason the rest of the report
9408
+ * is: this records what an encoder did, and a value we have not catalogued must
9409
+ * be reportable the day it appears.
9410
+ *
9411
+ * @generated from message transcodely.v1.OutputReportContentAware
9412
+ */
9413
+ declare class OutputReportContentAware extends Message<OutputReportContentAware> {
9414
+ /**
9415
+ * Analysis mode that ran, lowercase: "per_title". Same vocabulary as the
9416
+ * request's ContentAwareMode.
9417
+ *
9418
+ * @generated from field: string mode = 1;
9419
+ */
9420
+ mode: string;
9421
+ /**
9422
+ * VMAF score the search aimed at, 0-100.
9423
+ *
9424
+ * This is the target actually used, which is not always the one requested:
9425
+ * a value outside the range the analysis can search is clamped into it, and
9426
+ * what you read here is the clamped one.
9427
+ *
9428
+ * @generated from field: optional double vmaf_target = 2;
9429
+ */
9430
+ vmafTarget?: number;
9431
+ /**
9432
+ * VMAF score the chosen setting reached on the analysis samples, 0-100.
9433
+ * Absent when the search ended without a scored result.
9434
+ *
9435
+ * @generated from field: optional double vmaf_achieved = 3;
9436
+ */
9437
+ vmafAchieved?: number;
9438
+ /**
9439
+ * Constant-rate-factor the search settled on, in the encoder's own scale
9440
+ * (lower is higher quality). Absent when the search produced none and the
9441
+ * encode fell back to the quality tier's default.
9442
+ *
9443
+ * For a multi-rendition output this is the highest-resolution rendition's
9444
+ * value; the lower rungs derive from it by the ladder's fixed offsets.
9445
+ *
9446
+ * @generated from field: optional int32 crf_chosen = 4;
9447
+ */
9448
+ crfChosen?: number;
9449
+ constructor(data?: PartialMessage<OutputReportContentAware>);
9450
+ static readonly runtime: typeof proto3;
9451
+ static readonly typeName = "transcodely.v1.OutputReportContentAware";
9452
+ static readonly fields: FieldList;
9453
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OutputReportContentAware;
9454
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OutputReportContentAware;
9455
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OutputReportContentAware;
9456
+ static equals(a: OutputReportContentAware | PlainMessage<OutputReportContentAware> | undefined, b: OutputReportContentAware | PlainMessage<OutputReportContentAware> | undefined): boolean;
9457
+ }
9458
+ /**
9459
+ * Measured properties of a produced video stream.
9460
+ *
9461
+ * @generated from message transcodely.v1.OutputReportVideo
9462
+ */
9463
+ declare class OutputReportVideo extends Message<OutputReportVideo> {
9464
+ /**
9465
+ * Codec the stream is encoded with, lowercase, e.g. "h264", "hevc", "vp9",
9466
+ * "av1". Note "hevc" — that is the decoder name for the codec this API calls
9467
+ * "h265" on a request.
9468
+ *
9469
+ * @generated from field: string codec = 1;
9470
+ */
9471
+ codec: string;
9472
+ /**
9473
+ * Encoded profile, lowercase and without spaces, e.g. "high", "main",
9474
+ * "main10", "baseline", "profile0". Absent when the codec has no profile
9475
+ * concept or the encoder reported none.
9476
+ *
9477
+ * @generated from field: optional string profile = 2;
9478
+ */
9479
+ profile?: string;
9480
+ /**
9481
+ * Encoded level as the codec expresses it, e.g. "4.0", "5.1". Absent when
9482
+ * not reported.
9483
+ *
9484
+ * @generated from field: optional string level = 3;
9485
+ */
9486
+ level?: string;
9487
+ /**
9488
+ * Pixel format, lowercase, e.g. "yuv420p" (8-bit) or "yuv420p10le"
9489
+ * (10-bit). This is how bit depth is read back: a 10-bit output that came
9490
+ * out 8-bit says so here.
9491
+ *
9492
+ * @generated from field: optional string pix_fmt = 4;
9493
+ */
9494
+ pixFmt?: string;
9495
+ /**
9496
+ * Encoded frame dimensions in pixels, as stored.
9497
+ *
9498
+ * @generated from field: int32 width = 5;
9499
+ */
9500
+ width: number;
9501
+ /**
9502
+ * @generated from field: int32 height = 6;
9503
+ */
9504
+ height: number;
9505
+ /**
9506
+ * Measured average frame rate in frames per second, e.g. 29.97, 30, 59.94.
9507
+ *
9508
+ * @generated from field: optional double frame_rate = 7;
9509
+ */
9510
+ frameRate?: number;
9511
+ /**
9512
+ * Measured video bitrate in kbps. Absent when the container does not carry a
9513
+ * per-stream bitrate.
9514
+ *
9515
+ * @generated from field: optional int32 bitrate_kbps = 8;
9516
+ */
9517
+ bitrateKbps?: number;
9518
+ /**
9519
+ * Color signaling carried by the stream.
9520
+ *
9521
+ * @generated from field: optional transcodely.v1.OutputReportColor color = 9;
9522
+ */
9523
+ color?: OutputReportColor;
9524
+ /**
9525
+ * HDR format the stream signals. Today this resolves to exactly one of
9526
+ * "none", "hdr10" or "hlg" — nothing else is ever emitted.
9527
+ *
9528
+ * It is derived from the color signaling above, so it is a reading of the
9529
+ * file and not an echo of the request: an SDR source that arrived wearing HDR
9530
+ * tags, and whose tags we rewrote, reports "none". Wide-gamut primaries with
9531
+ * a PQ transfer read as "hdr10"; with an HLG transfer, as "hlg".
9532
+ *
9533
+ * "hdr10_plus" and "dolby_vision" are RESERVED spellings — documented so
9534
+ * consumers can switch on them ahead of time, and NOT EMITTED. Telling HDR10+
9535
+ * from static HDR10, or finding a Dolby Vision RPU, needs the per-frame side
9536
+ * data this report does not carry. Until that lands, an HDR10+ or Dolby
9537
+ * Vision output reads as "hdr10" here, which is the static layer it also
9538
+ * genuinely signals. Do not read "hdr10" as proof the dynamic layer is
9539
+ * absent.
9540
+ *
9541
+ * @generated from field: string hdr_format = 10;
9542
+ */
9543
+ hdrFormat: string;
9544
+ constructor(data?: PartialMessage<OutputReportVideo>);
9545
+ static readonly runtime: typeof proto3;
9546
+ static readonly typeName = "transcodely.v1.OutputReportVideo";
9547
+ static readonly fields: FieldList;
9548
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OutputReportVideo;
9549
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OutputReportVideo;
9550
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OutputReportVideo;
9551
+ static equals(a: OutputReportVideo | PlainMessage<OutputReportVideo> | undefined, b: OutputReportVideo | PlainMessage<OutputReportVideo> | undefined): boolean;
9552
+ }
9553
+ /**
9554
+ * Color signaling read from a produced video stream. Each value is the
9555
+ * lowercase name the format assigns it; absent means the stream carries no
9556
+ * value for it.
9557
+ *
9558
+ * @generated from message transcodely.v1.OutputReportColor
9559
+ */
9560
+ declare class OutputReportColor extends Message<OutputReportColor> {
9561
+ /**
9562
+ * Color primaries, e.g. "bt709" (SDR), "bt2020" (wide gamut).
9563
+ *
9564
+ * @generated from field: optional string primaries = 1;
9565
+ */
9566
+ primaries?: string;
9567
+ /**
9568
+ * Transfer characteristics, e.g. "bt709" (SDR), "smpte2084" (PQ / HDR10),
9569
+ * "arib-std-b67" (HLG).
9570
+ *
9571
+ * @generated from field: optional string transfer = 2;
9572
+ */
9573
+ transfer?: string;
9574
+ /**
9575
+ * Matrix coefficients, e.g. "bt709", "bt2020nc".
9576
+ *
9577
+ * @generated from field: optional string matrix = 3;
9578
+ */
9579
+ matrix?: string;
9580
+ /**
9581
+ * Signal range: "tv" (limited) or "pc" (full).
9582
+ *
9583
+ * @generated from field: optional string range = 4;
9584
+ */
9585
+ range?: string;
9586
+ constructor(data?: PartialMessage<OutputReportColor>);
9587
+ static readonly runtime: typeof proto3;
9588
+ static readonly typeName = "transcodely.v1.OutputReportColor";
9589
+ static readonly fields: FieldList;
9590
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OutputReportColor;
9591
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OutputReportColor;
9592
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OutputReportColor;
9593
+ static equals(a: OutputReportColor | PlainMessage<OutputReportColor> | undefined, b: OutputReportColor | PlainMessage<OutputReportColor> | undefined): boolean;
9594
+ }
9595
+ /**
9596
+ * Measured properties of a produced audio stream.
9597
+ *
9598
+ * @generated from message transcodely.v1.OutputReportAudio
9599
+ */
9600
+ declare class OutputReportAudio extends Message<OutputReportAudio> {
9601
+ /**
9602
+ * Codec the stream is encoded with, lowercase, e.g. "aac", "opus", "mp3",
9603
+ * "flac".
9604
+ *
9605
+ * @generated from field: string codec = 1;
9606
+ */
9607
+ codec: string;
9608
+ /**
9609
+ * Channel count: 1 for mono, 2 for stereo, 6 for 5.1.
9610
+ *
9611
+ * @generated from field: optional int32 channels = 2;
9612
+ */
9613
+ channels?: number;
9614
+ /**
9615
+ * Sampling rate in hertz, e.g. 48000.
9616
+ *
9617
+ * @generated from field: optional int32 sample_rate_hz = 3;
9618
+ */
9619
+ sampleRateHz?: number;
9620
+ /**
9621
+ * Measured audio bitrate in kbps. Absent when the container does not carry
9622
+ * a per-stream bitrate.
9623
+ *
9624
+ * @generated from field: optional int32 bitrate_kbps = 4;
9625
+ */
9626
+ bitrateKbps?: number;
9627
+ /**
9628
+ * Language tag carried by the stream, e.g. "eng", "spa". Absent when the
9629
+ * stream is untagged.
9630
+ *
9631
+ * @generated from field: optional string language = 5;
9632
+ */
9633
+ language?: string;
9634
+ constructor(data?: PartialMessage<OutputReportAudio>);
9635
+ static readonly runtime: typeof proto3;
9636
+ static readonly typeName = "transcodely.v1.OutputReportAudio";
9637
+ static readonly fields: FieldList;
9638
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OutputReportAudio;
9639
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OutputReportAudio;
9640
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OutputReportAudio;
9641
+ static equals(a: OutputReportAudio | PlainMessage<OutputReportAudio> | undefined, b: OutputReportAudio | PlainMessage<OutputReportAudio> | undefined): boolean;
9642
+ }
9643
+ /**
9644
+ * The result of comparing a produced file against what the job asked for.
9645
+ *
9646
+ * @generated from message transcodely.v1.OutputReportVerdict
9647
+ */
9648
+ declare class OutputReportVerdict extends Message<OutputReportVerdict> {
9649
+ /**
9650
+ * True when every property we can check matched the request.
9651
+ *
9652
+ * Properties the request left open — "keep the original frame rate", a
9653
+ * container that does not pin its audio codec — are not checked and cannot
9654
+ * make this false.
9655
+ *
9656
+ * @generated from field: bool matches_request = 1;
9657
+ */
9658
+ matchesRequest: boolean;
9659
+ /**
9660
+ * Every property that did not match, one entry each. Empty when
9661
+ * matches_request is true; a mismatch list is never empty when it is false.
9662
+ *
9663
+ * @generated from field: repeated transcodely.v1.OutputReportMismatch mismatches = 2;
9664
+ */
9665
+ mismatches: OutputReportMismatch[];
9666
+ constructor(data?: PartialMessage<OutputReportVerdict>);
9667
+ static readonly runtime: typeof proto3;
9668
+ static readonly typeName = "transcodely.v1.OutputReportVerdict";
9669
+ static readonly fields: FieldList;
9670
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OutputReportVerdict;
9671
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OutputReportVerdict;
9672
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OutputReportVerdict;
9673
+ static equals(a: OutputReportVerdict | PlainMessage<OutputReportVerdict> | undefined, b: OutputReportVerdict | PlainMessage<OutputReportVerdict> | undefined): boolean;
9674
+ }
9675
+ /**
9676
+ * One property of the produced file that does not match what was requested.
9677
+ *
9678
+ * @generated from message transcodely.v1.OutputReportMismatch
9679
+ */
9680
+ declare class OutputReportMismatch extends Message<OutputReportMismatch> {
9681
+ /**
9682
+ * Which property differs, from a fixed vocabulary: "container",
9683
+ * "video.present", "video.codec", "video.profile", "video.pix_fmt",
9684
+ * "video.resolution", "video.width", "video.height", "video.frame_rate",
9685
+ * "video.color.transfer", "video.color.primaries", "audio.present",
9686
+ * "duration_seconds".
9687
+ *
9688
+ * "video.resolution" carries resolution tier names ("1080p") and appears
9689
+ * when the request named a tier; "video.width" / "video.height" carry pixel
9690
+ * counts and appear when the request named exact dimensions.
9691
+ *
9692
+ * Branch on this, not on the values beside it.
9693
+ *
9694
+ * @generated from field: string field = 1;
9695
+ */
9696
+ field: string;
9697
+ /**
9698
+ * What the request asked for, as a short value, e.g. "h264", "1920",
9699
+ * "high", "present". Where the request allows several answers — a
9700
+ * multi-codec ABR ladder, for instance — this is the alternatives joined
9701
+ * with "|", e.g. "h264|hevc".
9702
+ *
9703
+ * @generated from field: string expected = 2;
9704
+ */
9705
+ expected: string;
9706
+ /**
9707
+ * What the produced file carries instead, in the same vocabulary as
9708
+ * expected, e.g. "hevc", "1280", "main", "absent".
9709
+ *
9710
+ * @generated from field: string actual = 3;
9711
+ */
9712
+ actual: string;
9713
+ constructor(data?: PartialMessage<OutputReportMismatch>);
9714
+ static readonly runtime: typeof proto3;
9715
+ static readonly typeName = "transcodely.v1.OutputReportMismatch";
9716
+ static readonly fields: FieldList;
9717
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): OutputReportMismatch;
9718
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): OutputReportMismatch;
9719
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): OutputReportMismatch;
9720
+ static equals(a: OutputReportMismatch | PlainMessage<OutputReportMismatch> | undefined, b: OutputReportMismatch | PlainMessage<OutputReportMismatch> | undefined): boolean;
9721
+ }
9218
9722
  /**
9219
9723
  * Measured encode results for one variant of a multi-variant output.
9220
9724
  * Reported by the worker after encoding; index matches the variant's
@@ -10196,8 +10700,16 @@ declare class CreateJobRequest extends Message<CreateJobRequest> {
10196
10700
  */
10197
10701
  outputPathTemplate?: string;
10198
10702
  /**
10199
- * Write outputs to managed hosting storage and create a video record.
10200
- * When true, output_origin_id is not required.
10703
+ * Write outputs to Transcodely-managed storage and create a hosted video
10704
+ * record, playable over our CDN. When true, output_origin_id is not required.
10705
+ *
10706
+ * Managed hosting is enabled for the app the first time a job asks for it —
10707
+ * there is no dashboard step and no AppService.EnableHosting call to make
10708
+ * first. That first request provisions the app's storage bucket, its managed
10709
+ * origin and its CDN pull zone, so it can take a few seconds longer than the
10710
+ * ones after it. If provisioning fails the request is rejected with error
10711
+ * code `hosting_provisioning_failed` (gRPC `unavailable`) and no job is
10712
+ * created; the request is safe to retry unchanged.
10201
10713
  *
10202
10714
  * @generated from field: optional bool managed = 20;
10203
10715
  */
@@ -11029,12 +11541,25 @@ declare class VideoTextTrack extends Message<VideoTextTrack> {
11029
11541
  /**
11030
11542
  * Request to create a presigned upload URL for direct client upload.
11031
11543
  *
11544
+ * Managed hosting is enabled for the app the first time a video is created —
11545
+ * there is no dashboard step and no AppService.EnableHosting call to make
11546
+ * first. That first request provisions the app's storage bucket, its managed
11547
+ * origin and its CDN pull zone, so it can take a few seconds longer than the
11548
+ * ones after it. If provisioning fails the request is rejected with error code
11549
+ * `hosting_provisioning_failed` (gRPC `unavailable`) and no video is created;
11550
+ * the request is safe to retry unchanged.
11551
+ *
11032
11552
  * @generated from message transcodely.v1.CreateUploadRequest
11033
11553
  */
11034
11554
  declare class CreateUploadRequest extends Message<CreateUploadRequest> {
11035
11555
  /**
11036
- * App to create the video under. Required. The app must have managed hosting
11037
- * enabled (AppService.EnableHosting) or the call fails with FailedPrecondition.
11556
+ * App to create the video under. API-key callers may omit it (their key's app
11557
+ * is used) or pass their own app; a different app is rejected with
11558
+ * PermissionDenied. Portal/JWT callers pass it to create in a specific app in
11559
+ * their org; omitted selects the org's first active app.
11560
+ *
11561
+ * Managed hosting does not have to be enabled on it first — see the note on
11562
+ * this message; the call enables it.
11038
11563
  *
11039
11564
  * @generated from field: string app_id = 8;
11040
11565
  */
@@ -11076,7 +11601,11 @@ declare class CreateUploadRequest extends Message<CreateUploadRequest> {
11076
11601
  */
11077
11602
  tags: string[];
11078
11603
  /**
11079
- * Visibility setting. Defaults to "unlisted" if not specified.
11604
+ * Visibility setting: "public", "unlisted" or "private".
11605
+ *
11606
+ * When omitted (or sent as an empty string), the app's hosting
11607
+ * default_visibility applies; if the app has no default_visibility set
11608
+ * either, the video is created "unlisted".
11080
11609
  *
11081
11610
  * @generated from field: optional string visibility = 7;
11082
11611
  */
@@ -11200,12 +11729,25 @@ declare class CompleteUploadResponse extends Message<CompleteUploadResponse> {
11200
11729
  /**
11201
11730
  * Request to create a hosted video from a remote URL (one-call ingest).
11202
11731
  *
11732
+ * Managed hosting is enabled for the app the first time a video is created —
11733
+ * there is no dashboard step and no AppService.EnableHosting call to make
11734
+ * first. That first request provisions the app's storage bucket, its managed
11735
+ * origin and its CDN pull zone, so it can take a few seconds longer than the
11736
+ * ones after it. If provisioning fails the request is rejected with error code
11737
+ * `hosting_provisioning_failed` (gRPC `unavailable`) and no video is created;
11738
+ * the request is safe to retry unchanged.
11739
+ *
11203
11740
  * @generated from message transcodely.v1.CreateFromUrlRequest
11204
11741
  */
11205
11742
  declare class CreateFromUrlRequest extends Message<CreateFromUrlRequest> {
11206
11743
  /**
11207
- * App to create the video under. Required. The app must have managed hosting
11208
- * enabled (AppService.EnableHosting) or the call fails with FailedPrecondition.
11744
+ * App to create the video under. API-key callers may omit it (their key's app
11745
+ * is used) or pass their own app; a different app is rejected with
11746
+ * PermissionDenied. Portal/JWT callers pass it to create in a specific app in
11747
+ * their org; omitted selects the org's first active app.
11748
+ *
11749
+ * Managed hosting does not have to be enabled on it first — see the note on
11750
+ * this message; the call enables it.
11209
11751
  *
11210
11752
  * @generated from field: string app_id = 1;
11211
11753
  */
@@ -11239,7 +11781,11 @@ declare class CreateFromUrlRequest extends Message<CreateFromUrlRequest> {
11239
11781
  */
11240
11782
  tags: string[];
11241
11783
  /**
11242
- * Visibility setting. Defaults to "unlisted" if not specified.
11784
+ * Visibility setting: "public", "unlisted" or "private".
11785
+ *
11786
+ * When omitted (or sent as an empty string), the app's hosting
11787
+ * default_visibility applies; if the app has no default_visibility set
11788
+ * either, the video is created "unlisted".
11243
11789
  *
11244
11790
  * @generated from field: optional string visibility = 6;
11245
11791
  */
@@ -11363,12 +11909,25 @@ declare class CompletedPart extends Message<CompletedPart> {
11363
11909
  /**
11364
11910
  * Request to create a multipart upload for large files.
11365
11911
  *
11912
+ * Managed hosting is enabled for the app the first time a video is created —
11913
+ * there is no dashboard step and no AppService.EnableHosting call to make
11914
+ * first. That first request provisions the app's storage bucket, its managed
11915
+ * origin and its CDN pull zone, so it can take a few seconds longer than the
11916
+ * ones after it. If provisioning fails the request is rejected with error code
11917
+ * `hosting_provisioning_failed` (gRPC `unavailable`) and no video is created;
11918
+ * the request is safe to retry unchanged.
11919
+ *
11366
11920
  * @generated from message transcodely.v1.CreateMultipartUploadRequest
11367
11921
  */
11368
11922
  declare class CreateMultipartUploadRequest extends Message<CreateMultipartUploadRequest> {
11369
11923
  /**
11370
- * App to create the video under. Required. The app must have managed hosting
11371
- * enabled (AppService.EnableHosting) or the call fails with FailedPrecondition.
11924
+ * App to create the video under. API-key callers may omit it (their key's app
11925
+ * is used) or pass their own app; a different app is rejected with
11926
+ * PermissionDenied. Portal/JWT callers pass it to create in a specific app in
11927
+ * their org; omitted selects the org's first active app.
11928
+ *
11929
+ * Managed hosting does not have to be enabled on it first — see the note on
11930
+ * this message; the call enables it.
11372
11931
  *
11373
11932
  * @generated from field: string app_id = 1;
11374
11933
  */
@@ -11424,7 +11983,11 @@ declare class CreateMultipartUploadRequest extends Message<CreateMultipartUpload
11424
11983
  */
11425
11984
  tags: string[];
11426
11985
  /**
11427
- * Visibility setting. Defaults to "unlisted" if not specified.
11986
+ * Visibility setting: "public", "unlisted" or "private".
11987
+ *
11988
+ * When omitted (or sent as an empty string), the app's hosting
11989
+ * default_visibility applies; if the app has no default_visibility set
11990
+ * either, the video is created "unlisted".
11428
11991
  *
11429
11992
  * @generated from field: optional string visibility = 13;
11430
11993
  */
@@ -12585,106 +13148,1120 @@ declare class Events {
12585
13148
  } & CallOptions): Promise<WebhookDelivery[]>;
12586
13149
  }
12587
13150
 
13151
+ declare class Health {
13152
+ private readonly transport;
13153
+ constructor(transport: Transport);
13154
+ check(opts?: CallOptions): Promise<HealthCheckResponse>;
13155
+ }
13156
+
12588
13157
  /**
12589
- * Health status.
13158
+ * Which provider shape an inbound event arrived in. Detected from the payload;
13159
+ * you never declare it.
12590
13160
  *
12591
- * @generated from enum transcodely.v1.HealthStatus
13161
+ * @generated from enum transcodely.v1.StorageEventSource
12592
13162
  */
12593
- declare enum HealthStatus {
13163
+ declare enum StorageEventSource {
12594
13164
  /**
12595
- * @generated from enum value: HEALTH_STATUS_UNSPECIFIED = 0;
13165
+ * @generated from enum value: STORAGE_EVENT_SOURCE_UNSPECIFIED = 0;
12596
13166
  */
12597
13167
  UNSPECIFIED = 0,
12598
13168
  /**
12599
- * Service is healthy and operational.
13169
+ * Amazon S3 event notification delivered through an SNS HTTPS subscription.
12600
13170
  *
12601
- * @generated from enum value: HEALTH_STATUS_HEALTHY = 1;
13171
+ * @generated from enum value: STORAGE_EVENT_SOURCE_S3_SNS = 1;
12602
13172
  */
12603
- HEALTHY = 1,
13173
+ S3_SNS = 1,
12604
13174
  /**
12605
- * Service is degraded but operational.
13175
+ * Google Cloud Storage notification delivered by a Pub/Sub push
13176
+ * subscription.
12606
13177
  *
12607
- * @generated from enum value: HEALTH_STATUS_DEGRADED = 2;
13178
+ * @generated from enum value: STORAGE_EVENT_SOURCE_GCS_PUBSUB = 2;
12608
13179
  */
12609
- DEGRADED = 2,
13180
+ GCS_PUBSUB = 2,
12610
13181
  /**
12611
- * Service is unhealthy and not operational.
13182
+ * Supabase Storage, delivered by a database webhook on storage.objects.
12612
13183
  *
12613
- * @generated from enum value: HEALTH_STATUS_UNHEALTHY = 3;
13184
+ * @generated from enum value: STORAGE_EVENT_SOURCE_SUPABASE = 3;
12614
13185
  */
12615
- UNHEALTHY = 3
13186
+ SUPABASE = 3,
13187
+ /**
13188
+ * The generic shape: {"bucket", "key", "etag", "size", "content_type"}.
13189
+ * Used by the Cloudflare R2 queue-consumer template and anything you write
13190
+ * yourself.
13191
+ *
13192
+ * @generated from enum value: STORAGE_EVENT_SOURCE_GENERIC = 4;
13193
+ */
13194
+ GENERIC = 4
12616
13195
  }
12617
13196
  /**
12618
- * Response from health check.
13197
+ * What happened to a storage event.
12619
13198
  *
12620
- * @generated from message transcodely.v1.HealthCheckResponse
13199
+ * @generated from enum transcodely.v1.StorageEventStatus
12621
13200
  */
12622
- declare class HealthCheckResponse extends Message<HealthCheckResponse> {
13201
+ declare enum StorageEventStatus {
12623
13202
  /**
12624
- * Overall service status.
13203
+ * @generated from enum value: STORAGE_EVENT_STATUS_UNSPECIFIED = 0;
13204
+ */
13205
+ UNSPECIFIED = 0,
13206
+ /**
13207
+ * Accepted and stored; not processed yet.
12625
13208
  *
12626
- * @generated from field: transcodely.v1.HealthStatus status = 1;
13209
+ * @generated from enum value: STORAGE_EVENT_STATUS_RECEIVED = 1;
12627
13210
  */
12628
- status: HealthStatus;
13211
+ RECEIVED = 1,
12629
13212
  /**
12630
- * Service version.
13213
+ * Matched the rule's filters; the job is being created.
12631
13214
  *
12632
- * @generated from field: string version = 2;
13215
+ * @generated from enum value: STORAGE_EVENT_STATUS_MATCHED = 2;
12633
13216
  */
12634
- version: string;
13217
+ MATCHED = 2,
12635
13218
  /**
12636
- * Individual component statuses.
13219
+ * Deliberately not turned into a job. `reason` says why — the filters did
13220
+ * not match, the object is in a different bucket than the rule's origin, the
13221
+ * rule is disabled, or the same object was already ingested.
12637
13222
  *
12638
- * @generated from field: repeated transcodely.v1.ComponentHealth components = 3;
13223
+ * @generated from enum value: STORAGE_EVENT_STATUS_SKIPPED = 3;
12639
13224
  */
12640
- components: ComponentHealth[];
12641
- constructor(data?: PartialMessage<HealthCheckResponse>);
12642
- static readonly runtime: typeof proto3;
12643
- static readonly typeName = "transcodely.v1.HealthCheckResponse";
12644
- static readonly fields: FieldList;
12645
- static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): HealthCheckResponse;
12646
- static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): HealthCheckResponse;
12647
- static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): HealthCheckResponse;
12648
- static equals(a: HealthCheckResponse | PlainMessage<HealthCheckResponse> | undefined, b: HealthCheckResponse | PlainMessage<HealthCheckResponse> | undefined): boolean;
13225
+ SKIPPED = 3,
13226
+ /**
13227
+ * A job was created. `job_id` names it.
13228
+ *
13229
+ * @generated from enum value: STORAGE_EVENT_STATUS_CREATED = 4;
13230
+ */
13231
+ CREATED = 4,
13232
+ /**
13233
+ * Job creation was refused and will not be retried. `reason` carries the API
13234
+ * error code that refused it, e.g. `limit_exceeded` or `billing_past_due`.
13235
+ *
13236
+ * @generated from enum value: STORAGE_EVENT_STATUS_FAILED = 5;
13237
+ */
13238
+ FAILED = 5
13239
+ }
13240
+ /**
13241
+ * IngestRule is one standing instruction on one origin.
13242
+ *
13243
+ * @generated from message transcodely.v1.IngestRule
13244
+ */
13245
+ declare class IngestRule extends Message<IngestRule> {
13246
+ /**
13247
+ * Rule ID, e.g. "ing_a1b2c3d4e5f6".
13248
+ *
13249
+ * @generated from field: string id = 1;
13250
+ */
13251
+ id: string;
13252
+ /**
13253
+ * App that owns the rule.
13254
+ *
13255
+ * @generated from field: string app_id = 2;
13256
+ */
13257
+ appId: string;
13258
+ /**
13259
+ * Origin the objects live in. Must have read permission.
13260
+ *
13261
+ * @generated from field: string origin_id = 3;
13262
+ */
13263
+ originId: string;
13264
+ /**
13265
+ * Human-readable name.
13266
+ *
13267
+ * @generated from field: string name = 4;
13268
+ */
13269
+ name: string;
13270
+ /**
13271
+ * Whether the endpoint accepts events. A disabled rule answers 202 and
13272
+ * records the event as skipped, so a provider subscription does not start
13273
+ * failing while the rule is paused.
13274
+ *
13275
+ * @generated from field: bool enabled = 5;
13276
+ */
13277
+ enabled: boolean;
13278
+ /**
13279
+ * Which objects this rule acts on. An empty filter set matches everything in
13280
+ * the origin's bucket.
13281
+ *
13282
+ * @generated from field: transcodely.v1.IngestRuleFilters filters = 6;
13283
+ */
13284
+ filters?: IngestRuleFilters;
13285
+ /**
13286
+ * The job to create for a matching object.
13287
+ *
13288
+ * @generated from field: transcodely.v1.IngestRuleAction action = 7;
13289
+ */
13290
+ action?: IngestRuleAction;
13291
+ /**
13292
+ * Where the event sender posts. Computed; read-only.
13293
+ *
13294
+ * @generated from field: string endpoint_url = 8;
13295
+ */
13296
+ endpointUrl: string;
13297
+ /**
13298
+ * First 8 characters of the inbound secret, e.g. "ings_a1b". Enough to tell
13299
+ * two secrets apart in a log; never enough to use one.
13300
+ *
13301
+ * @generated from field: string secret_prefix = 9;
13302
+ */
13303
+ secretPrefix: string;
13304
+ /**
13305
+ * Last 4 characters of the inbound secret.
13306
+ *
13307
+ * @generated from field: string secret_hint = 10;
13308
+ */
13309
+ secretHint: string;
13310
+ /**
13311
+ * When the secret was last rotated. Absent if it has never been rotated.
13312
+ *
13313
+ * @generated from field: optional google.protobuf.Timestamp secret_rotated_at = 11;
13314
+ */
13315
+ secretRotatedAt?: Timestamp;
13316
+ /**
13317
+ * Until when the PREVIOUS secret is still accepted after a rotation, so the
13318
+ * sender can be updated without dropping an event. Absent when no rotation is
13319
+ * in flight.
13320
+ *
13321
+ * @generated from field: optional google.protobuf.Timestamp previous_secret_expires_at = 12;
13322
+ */
13323
+ previousSecretExpiresAt?: Timestamp;
13324
+ /**
13325
+ * How many events this rule has accepted, all time.
13326
+ *
13327
+ * @generated from field: int64 events_received = 13;
13328
+ */
13329
+ eventsReceived: bigint;
13330
+ /**
13331
+ * How many jobs this rule has created, all time.
13332
+ *
13333
+ * @generated from field: int64 jobs_created = 14;
13334
+ */
13335
+ jobsCreated: bigint;
13336
+ /**
13337
+ * When the last event arrived.
13338
+ *
13339
+ * @generated from field: optional google.protobuf.Timestamp last_event_at = 15;
13340
+ */
13341
+ lastEventAt?: Timestamp;
13342
+ /**
13343
+ * When the rule was created.
13344
+ *
13345
+ * @generated from field: google.protobuf.Timestamp created_at = 16;
13346
+ */
13347
+ createdAt?: Timestamp;
13348
+ /**
13349
+ * When the rule was last updated.
13350
+ *
13351
+ * @generated from field: google.protobuf.Timestamp updated_at = 17;
13352
+ */
13353
+ updatedAt?: Timestamp;
13354
+ constructor(data?: PartialMessage<IngestRule>);
13355
+ static readonly runtime: typeof proto3;
13356
+ static readonly typeName = "transcodely.v1.IngestRule";
13357
+ static readonly fields: FieldList;
13358
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): IngestRule;
13359
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): IngestRule;
13360
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): IngestRule;
13361
+ static equals(a: IngestRule | PlainMessage<IngestRule> | undefined, b: IngestRule | PlainMessage<IngestRule> | undefined): boolean;
13362
+ }
13363
+ /**
13364
+ * IngestRuleFilters narrows which objects a rule acts on. All set filters must
13365
+ * pass. An object that fails any of them is recorded as skipped, never as an
13366
+ * error.
13367
+ *
13368
+ * @generated from message transcodely.v1.IngestRuleFilters
13369
+ */
13370
+ declare class IngestRuleFilters extends Message<IngestRuleFilters> {
13371
+ /**
13372
+ * Object key prefix, e.g. "uploads/". Matched against the key as the
13373
+ * provider reports it, after URL-decoding.
13374
+ *
13375
+ * @generated from field: string prefix = 1;
13376
+ */
13377
+ prefix: string;
13378
+ /**
13379
+ * Case-insensitive key suffixes, e.g. [".mp4", ".mov"]. The object matches
13380
+ * if it ends with any one of them. Empty accepts every extension.
13381
+ *
13382
+ * @generated from field: repeated string suffixes = 2;
13383
+ */
13384
+ suffixes: string[];
13385
+ /**
13386
+ * Exact content types, e.g. ["video/mp4"]. The object matches if the event
13387
+ * reports any one of them. Empty accepts every content type — including an
13388
+ * event that reports none, which several providers do.
13389
+ *
13390
+ * @generated from field: repeated string content_types = 3;
13391
+ */
13392
+ contentTypes: string[];
13393
+ /**
13394
+ * Smallest object size to act on, in bytes. 0 means no lower bound. Useful
13395
+ * for ignoring the zero-byte placeholder some clients write first.
13396
+ *
13397
+ * @generated from field: int64 min_bytes = 4;
13398
+ */
13399
+ minBytes: bigint;
13400
+ /**
13401
+ * Largest object size to act on, in bytes. 0 means no upper bound.
13402
+ *
13403
+ * @generated from field: int64 max_bytes = 5;
13404
+ */
13405
+ maxBytes: bigint;
13406
+ constructor(data?: PartialMessage<IngestRuleFilters>);
13407
+ static readonly runtime: typeof proto3;
13408
+ static readonly typeName = "transcodely.v1.IngestRuleFilters";
13409
+ static readonly fields: FieldList;
13410
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): IngestRuleFilters;
13411
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): IngestRuleFilters;
13412
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): IngestRuleFilters;
13413
+ static equals(a: IngestRuleFilters | PlainMessage<IngestRuleFilters> | undefined, b: IngestRuleFilters | PlainMessage<IngestRuleFilters> | undefined): boolean;
13414
+ }
13415
+ /**
13416
+ * IngestRuleAction is the job a rule creates. It is the subset of
13417
+ * CreateJobRequest that can be decided ahead of time; the input is supplied by
13418
+ * the event (the rule's origin, and the key the event names).
13419
+ *
13420
+ * @generated from message transcodely.v1.IngestRuleAction
13421
+ */
13422
+ declare class IngestRuleAction extends Message<IngestRuleAction> {
13423
+ /**
13424
+ * Output specifications, exactly as CreateJobRequest.outputs. Presets may be
13425
+ * referenced by ID or slug.
13426
+ *
13427
+ * A rule always has at least one, enforced on the requests that can leave it
13428
+ * without one (`create_ingest_rule.outputs_required` and
13429
+ * `update_ingest_rule.clear_action_is_complete`) rather than on this field —
13430
+ * an Update that changes only the priority sends no outputs at all, and a
13431
+ * min_items here would refuse it.
13432
+ *
13433
+ * @generated from field: repeated transcodely.v1.OutputSpec outputs = 1;
13434
+ */
13435
+ outputs: OutputSpec[];
13436
+ /**
13437
+ * Write outputs to Transcodely-managed storage and create a hosted video,
13438
+ * playable over our CDN. Set this or output_origin_id, not both.
13439
+ *
13440
+ * @generated from field: bool managed = 2;
13441
+ */
13442
+ managed: boolean;
13443
+ /**
13444
+ * Origin to write outputs to. Must have write permission. Set this or
13445
+ * managed, not both.
13446
+ *
13447
+ * @generated from field: optional string output_origin_id = 3;
13448
+ */
13449
+ outputOriginId?: string;
13450
+ /**
13451
+ * Job-level output path template, as CreateJobRequest.output_path_template.
13452
+ * In addition to the job variables it accepts {input_key}, {input_name} (the
13453
+ * key's last segment without its extension) and {input_dir} (everything
13454
+ * before the last segment), so outputs can mirror the source layout.
13455
+ *
13456
+ * @generated from field: optional string output_path_template = 4;
13457
+ */
13458
+ outputPathTemplate?: string;
13459
+ /**
13460
+ * Thumbnail specifications, as CreateJobRequest.thumbnails.
13461
+ *
13462
+ * @generated from field: repeated transcodely.v1.ThumbnailSpec thumbnails = 5;
13463
+ */
13464
+ thumbnails: ThumbnailSpec[];
13465
+ /**
13466
+ * Job priority.
13467
+ *
13468
+ * @generated from field: transcodely.v1.JobPriority priority = 6;
13469
+ */
13470
+ priority: JobPriority;
13471
+ /**
13472
+ * Metadata copied onto every job the rule creates. The rule also adds
13473
+ * `ingest_rule_id` and `ingest_object_key` of its own, which you can read
13474
+ * back on the job and in webhook payloads.
13475
+ *
13476
+ * @generated from field: map<string, string> metadata = 7;
13477
+ */
13478
+ metadata: {
13479
+ [key: string]: string;
13480
+ };
13481
+ constructor(data?: PartialMessage<IngestRuleAction>);
13482
+ static readonly runtime: typeof proto3;
13483
+ static readonly typeName = "transcodely.v1.IngestRuleAction";
13484
+ static readonly fields: FieldList;
13485
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): IngestRuleAction;
13486
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): IngestRuleAction;
13487
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): IngestRuleAction;
13488
+ static equals(a: IngestRuleAction | PlainMessage<IngestRuleAction> | undefined, b: IngestRuleAction | PlainMessage<IngestRuleAction> | undefined): boolean;
13489
+ }
13490
+ /**
13491
+ * StorageEvent is one delivery from a storage provider, and what came of it.
13492
+ *
13493
+ * @generated from message transcodely.v1.StorageEvent
13494
+ */
13495
+ declare class StorageEvent extends Message<StorageEvent> {
13496
+ /**
13497
+ * Event ID, e.g. "sev_a1b2c3d4e5f6g7".
13498
+ *
13499
+ * @generated from field: string id = 1;
13500
+ */
13501
+ id: string;
13502
+ /**
13503
+ * Rule that received it.
13504
+ *
13505
+ * @generated from field: string rule_id = 2;
13506
+ */
13507
+ ruleId: string;
13508
+ /**
13509
+ * App that owns the rule.
13510
+ *
13511
+ * @generated from field: string app_id = 3;
13512
+ */
13513
+ appId: string;
13514
+ /**
13515
+ * Bucket the object is in, as the provider reported it.
13516
+ *
13517
+ * @generated from field: string bucket = 4;
13518
+ */
13519
+ bucket: string;
13520
+ /**
13521
+ * Object key, URL-decoded. S3 percent-encodes keys and writes a space as
13522
+ * "+"; what is stored here is the real key.
13523
+ *
13524
+ * @generated from field: string object_key = 5;
13525
+ */
13526
+ objectKey: string;
13527
+ /**
13528
+ * Object version identity, used for deduplication: an S3/R2 eTag, a GCS
13529
+ * generation, or a Supabase metadata eTag. Empty when the provider sent
13530
+ * none — the key alone then identifies the object.
13531
+ *
13532
+ * @generated from field: string etag = 6;
13533
+ */
13534
+ etag: string;
13535
+ /**
13536
+ * Object size in bytes, when the event reported one.
13537
+ *
13538
+ * @generated from field: int64 size_bytes = 7;
13539
+ */
13540
+ sizeBytes: bigint;
13541
+ /**
13542
+ * Content type, when the event reported one.
13543
+ *
13544
+ * @generated from field: string content_type = 8;
13545
+ */
13546
+ contentType: string;
13547
+ /**
13548
+ * Which provider shape the event arrived in.
13549
+ *
13550
+ * @generated from field: transcodely.v1.StorageEventSource source = 9;
13551
+ */
13552
+ source: StorageEventSource;
13553
+ /**
13554
+ * What happened to it.
13555
+ *
13556
+ * @generated from field: transcodely.v1.StorageEventStatus status = 10;
13557
+ */
13558
+ status: StorageEventStatus;
13559
+ /**
13560
+ * Why, for `skipped` and `failed`. A short machine-readable slug:
13561
+ * "filter_prefix", "filter_suffix", "filter_content_type", "filter_size",
13562
+ * "bucket_mismatch", "rule_disabled", "duplicate", or the API error code
13563
+ * that refused the job.
13564
+ *
13565
+ * @generated from field: string reason = 11;
13566
+ */
13567
+ reason: string;
13568
+ /**
13569
+ * The job created from this event, if one was.
13570
+ *
13571
+ * @generated from field: string job_id = 12;
13572
+ */
13573
+ jobId: string;
13574
+ /**
13575
+ * When the event was accepted.
13576
+ *
13577
+ * @generated from field: google.protobuf.Timestamp received_at = 13;
13578
+ */
13579
+ receivedAt?: Timestamp;
13580
+ /**
13581
+ * When the event reached a terminal status.
13582
+ *
13583
+ * @generated from field: optional google.protobuf.Timestamp processed_at = 14;
13584
+ */
13585
+ processedAt?: Timestamp;
13586
+ constructor(data?: PartialMessage<StorageEvent>);
13587
+ static readonly runtime: typeof proto3;
13588
+ static readonly typeName = "transcodely.v1.StorageEvent";
13589
+ static readonly fields: FieldList;
13590
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): StorageEvent;
13591
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): StorageEvent;
13592
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): StorageEvent;
13593
+ static equals(a: StorageEvent | PlainMessage<StorageEvent> | undefined, b: StorageEvent | PlainMessage<StorageEvent> | undefined): boolean;
13594
+ }
13595
+ /**
13596
+ * Request to create an ingest rule.
13597
+ *
13598
+ * @generated from message transcodely.v1.CreateIngestRuleRequest
13599
+ */
13600
+ declare class CreateIngestRuleRequest extends Message<CreateIngestRuleRequest> {
13601
+ /**
13602
+ * Origin the objects land in. Must be active and have read permission.
13603
+ *
13604
+ * @generated from field: string origin_id = 1;
13605
+ */
13606
+ originId: string;
13607
+ /**
13608
+ * Human-readable name.
13609
+ *
13610
+ * @generated from field: string name = 2;
13611
+ */
13612
+ name: string;
13613
+ /**
13614
+ * Which objects to act on. Omit to act on everything in the bucket.
13615
+ *
13616
+ * @generated from field: transcodely.v1.IngestRuleFilters filters = 3;
13617
+ */
13618
+ filters?: IngestRuleFilters;
13619
+ /**
13620
+ * The job to create for a matching object.
13621
+ *
13622
+ * @generated from field: transcodely.v1.IngestRuleAction action = 4;
13623
+ */
13624
+ action?: IngestRuleAction;
13625
+ /**
13626
+ * Whether the rule starts enabled. Defaults to true; send false to create it
13627
+ * paused and turn it on once the sender is configured.
13628
+ *
13629
+ * @generated from field: optional bool enabled = 5;
13630
+ */
13631
+ enabled?: boolean;
13632
+ /**
13633
+ * Optional target app. API-key callers may omit it (their key's app is used)
13634
+ * or pass their own app; a different app is rejected with PermissionDenied.
13635
+ * Portal/JWT callers pass it to create in a specific app in their org;
13636
+ * omitted selects the org's first active app.
13637
+ *
13638
+ * @generated from field: optional string app_id = 6;
13639
+ */
13640
+ appId?: string;
13641
+ constructor(data?: PartialMessage<CreateIngestRuleRequest>);
13642
+ static readonly runtime: typeof proto3;
13643
+ static readonly typeName = "transcodely.v1.CreateIngestRuleRequest";
13644
+ static readonly fields: FieldList;
13645
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateIngestRuleRequest;
13646
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateIngestRuleRequest;
13647
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateIngestRuleRequest;
13648
+ static equals(a: CreateIngestRuleRequest | PlainMessage<CreateIngestRuleRequest> | undefined, b: CreateIngestRuleRequest | PlainMessage<CreateIngestRuleRequest> | undefined): boolean;
13649
+ }
13650
+ /**
13651
+ * Response from creating an ingest rule.
13652
+ *
13653
+ * @generated from message transcodely.v1.CreateIngestRuleResponse
13654
+ */
13655
+ declare class CreateIngestRuleResponse extends Message<CreateIngestRuleResponse> {
13656
+ /**
13657
+ * The created rule.
13658
+ *
13659
+ * @generated from field: transcodely.v1.IngestRule rule = 1;
13660
+ */
13661
+ rule?: IngestRule;
13662
+ /**
13663
+ * The inbound secret, in full. Returned ONCE, here. We keep only enough of
13664
+ * it to verify a delivery and to show you its first and last characters, so
13665
+ * this value cannot be recovered later — rotate the rule to get a new one.
13666
+ *
13667
+ * @generated from field: string secret = 2;
13668
+ */
13669
+ secret: string;
13670
+ constructor(data?: PartialMessage<CreateIngestRuleResponse>);
13671
+ static readonly runtime: typeof proto3;
13672
+ static readonly typeName = "transcodely.v1.CreateIngestRuleResponse";
13673
+ static readonly fields: FieldList;
13674
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): CreateIngestRuleResponse;
13675
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): CreateIngestRuleResponse;
13676
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): CreateIngestRuleResponse;
13677
+ static equals(a: CreateIngestRuleResponse | PlainMessage<CreateIngestRuleResponse> | undefined, b: CreateIngestRuleResponse | PlainMessage<CreateIngestRuleResponse> | undefined): boolean;
13678
+ }
13679
+ /**
13680
+ * Request to get an ingest rule.
13681
+ *
13682
+ * @generated from message transcodely.v1.GetIngestRuleRequest
13683
+ */
13684
+ declare class GetIngestRuleRequest extends Message<GetIngestRuleRequest> {
13685
+ /**
13686
+ * ID of the rule.
13687
+ *
13688
+ * @generated from field: string id = 1;
13689
+ */
13690
+ id: string;
13691
+ constructor(data?: PartialMessage<GetIngestRuleRequest>);
13692
+ static readonly runtime: typeof proto3;
13693
+ static readonly typeName = "transcodely.v1.GetIngestRuleRequest";
13694
+ static readonly fields: FieldList;
13695
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetIngestRuleRequest;
13696
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetIngestRuleRequest;
13697
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetIngestRuleRequest;
13698
+ static equals(a: GetIngestRuleRequest | PlainMessage<GetIngestRuleRequest> | undefined, b: GetIngestRuleRequest | PlainMessage<GetIngestRuleRequest> | undefined): boolean;
13699
+ }
13700
+ /**
13701
+ * Response from getting an ingest rule.
13702
+ *
13703
+ * @generated from message transcodely.v1.GetIngestRuleResponse
13704
+ */
13705
+ declare class GetIngestRuleResponse extends Message<GetIngestRuleResponse> {
13706
+ /**
13707
+ * The requested rule.
13708
+ *
13709
+ * @generated from field: transcodely.v1.IngestRule rule = 1;
13710
+ */
13711
+ rule?: IngestRule;
13712
+ constructor(data?: PartialMessage<GetIngestRuleResponse>);
13713
+ static readonly runtime: typeof proto3;
13714
+ static readonly typeName = "transcodely.v1.GetIngestRuleResponse";
13715
+ static readonly fields: FieldList;
13716
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): GetIngestRuleResponse;
13717
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): GetIngestRuleResponse;
13718
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): GetIngestRuleResponse;
13719
+ static equals(a: GetIngestRuleResponse | PlainMessage<GetIngestRuleResponse> | undefined, b: GetIngestRuleResponse | PlainMessage<GetIngestRuleResponse> | undefined): boolean;
13720
+ }
13721
+ /**
13722
+ * Request to list ingest rules.
13723
+ *
13724
+ * @generated from message transcodely.v1.ListIngestRulesRequest
13725
+ */
13726
+ declare class ListIngestRulesRequest extends Message<ListIngestRulesRequest> {
13727
+ /**
13728
+ * Only rules on this origin.
13729
+ *
13730
+ * @generated from field: optional string origin_id = 1;
13731
+ */
13732
+ originId?: string;
13733
+ /**
13734
+ * Only enabled, or only disabled, rules.
13735
+ *
13736
+ * @generated from field: optional bool enabled = 2;
13737
+ */
13738
+ enabled?: boolean;
13739
+ /**
13740
+ * Pagination parameters.
13741
+ *
13742
+ * @generated from field: transcodely.v1.PaginationRequest pagination = 3;
13743
+ */
13744
+ pagination?: PaginationRequest;
13745
+ /**
13746
+ * Optional app filter. API-key callers may omit it (their key's app is used)
13747
+ * or pass their own app; a different app is rejected with PermissionDenied.
13748
+ * Portal/JWT callers pass it to list a specific app in their org; omitted
13749
+ * returns rules across all apps in the org.
13750
+ *
13751
+ * @generated from field: optional string app_id = 4;
13752
+ */
13753
+ appId?: string;
13754
+ constructor(data?: PartialMessage<ListIngestRulesRequest>);
13755
+ static readonly runtime: typeof proto3;
13756
+ static readonly typeName = "transcodely.v1.ListIngestRulesRequest";
13757
+ static readonly fields: FieldList;
13758
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListIngestRulesRequest;
13759
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListIngestRulesRequest;
13760
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListIngestRulesRequest;
13761
+ static equals(a: ListIngestRulesRequest | PlainMessage<ListIngestRulesRequest> | undefined, b: ListIngestRulesRequest | PlainMessage<ListIngestRulesRequest> | undefined): boolean;
13762
+ }
13763
+ /**
13764
+ * Response from listing ingest rules.
13765
+ *
13766
+ * @generated from message transcodely.v1.ListIngestRulesResponse
13767
+ */
13768
+ declare class ListIngestRulesResponse extends Message<ListIngestRulesResponse> {
13769
+ /**
13770
+ * The rules, newest first.
13771
+ *
13772
+ * @generated from field: repeated transcodely.v1.IngestRule rules = 1;
13773
+ */
13774
+ rules: IngestRule[];
13775
+ /**
13776
+ * Pagination metadata.
13777
+ *
13778
+ * @generated from field: transcodely.v1.PaginationResponse pagination = 2;
13779
+ */
13780
+ pagination?: PaginationResponse;
13781
+ constructor(data?: PartialMessage<ListIngestRulesResponse>);
13782
+ static readonly runtime: typeof proto3;
13783
+ static readonly typeName = "transcodely.v1.ListIngestRulesResponse";
13784
+ static readonly fields: FieldList;
13785
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListIngestRulesResponse;
13786
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListIngestRulesResponse;
13787
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListIngestRulesResponse;
13788
+ static equals(a: ListIngestRulesResponse | PlainMessage<ListIngestRulesResponse> | undefined, b: ListIngestRulesResponse | PlainMessage<ListIngestRulesResponse> | undefined): boolean;
13789
+ }
13790
+ /**
13791
+ * Request to update an ingest rule.
13792
+ *
13793
+ * Every field is optional and an update applies only what it carries: a field
13794
+ * you do not send keeps the value it has, down to the individual filters and
13795
+ * the individual parts of the action. This matters more here than on most
13796
+ * objects, because a rule is a standing instruction to spend money — its
13797
+ * filters are the only thing between "the objects I meant" and "everything that
13798
+ * lands in the bucket", and a request that silently cleared them would be paid
13799
+ * for one transcode at a time.
13800
+ *
13801
+ * Because the fields inside `filters` and `action` carry no presence of their
13802
+ * own, "not sent" means "left at its default" — the same rule
13803
+ * UpdateVideoRequest.tags states. Set `clear_filters` or `clear_action` when
13804
+ * you mean to remove something rather than change it.
13805
+ *
13806
+ * @generated from message transcodely.v1.UpdateIngestRuleRequest
13807
+ */
13808
+ declare class UpdateIngestRuleRequest extends Message<UpdateIngestRuleRequest> {
13809
+ /**
13810
+ * ID of the rule to update.
13811
+ *
13812
+ * @generated from field: string id = 1;
13813
+ */
13814
+ id: string;
13815
+ /**
13816
+ * New name. Omit to leave unchanged.
13817
+ *
13818
+ * @generated from field: optional string name = 2;
13819
+ */
13820
+ name?: string;
13821
+ /**
13822
+ * Enable or disable the rule. Omit to leave unchanged. Turning a rule back on
13823
+ * reports how many events it declined while it was off, in
13824
+ * `events_skipped_while_disabled`.
13825
+ *
13826
+ * @generated from field: optional bool enabled = 3;
13827
+ */
13828
+ enabled?: boolean;
13829
+ /**
13830
+ * Filters to change. Each one you send replaces that filter; each one you
13831
+ * leave out keeps the value it has. Narrowing a rule to a new prefix is
13832
+ * therefore `{"filters": {"prefix": "raw/"}}` and nothing else — the suffix,
13833
+ * content-type and size filters are untouched.
13834
+ *
13835
+ * A filter is removed rather than changed with `clear_filters`, which empties
13836
+ * the set before this one is applied. So `clear_filters` alone widens the rule
13837
+ * to everything in the bucket, and `clear_filters` together with a filter set
13838
+ * replaces the set outright.
13839
+ *
13840
+ * @generated from field: transcodely.v1.IngestRuleFilters filters = 4;
13841
+ */
13842
+ filters?: IngestRuleFilters;
13843
+ /**
13844
+ * Parts of the action to change. Each field you send replaces that part of
13845
+ * the action; each field you leave out keeps what it had. Repeated and map
13846
+ * fields replace whole — sending one output replaces the output list, and
13847
+ * sending one metadata pair replaces the metadata map — because neither
13848
+ * carries the presence needed to merge a single entry.
13849
+ *
13850
+ * The destination is a pair, so it changes as a pair: send `managed` or
13851
+ * `output_origin_id` to move the outputs, or neither to leave them where they
13852
+ * are. Sending both is refused.
13853
+ *
13854
+ * `managed: false` is not a way to turn managed storage off — a false boolean
13855
+ * is indistinguishable from an absent one, so it reads as "leave the
13856
+ * destination alone" and changes nothing. Send `output_origin_id` instead.
13857
+ *
13858
+ * Emptying a repeated or map field is not expressible by sending it empty, so
13859
+ * dropping the thumbnails or the metadata means `clear_action` with the action
13860
+ * you want kept.
13861
+ *
13862
+ * @generated from field: transcodely.v1.IngestRuleAction action = 5;
13863
+ */
13864
+ action?: IngestRuleAction;
13865
+ /**
13866
+ * Issue a new secret. The previous one keeps working for 24 hours so the
13867
+ * sender can be updated without dropping an event; the new secret is
13868
+ * returned once, on this response.
13869
+ *
13870
+ * @generated from field: bool rotate_secret = 6;
13871
+ */
13872
+ rotateSecret: boolean;
13873
+ /**
13874
+ * Empty the filter set before applying `filters`. On its own it widens the
13875
+ * rule to every object in the bucket; with `filters` it replaces the set
13876
+ * outright instead of merging into it.
13877
+ *
13878
+ * @generated from field: bool clear_filters = 7;
13879
+ */
13880
+ clearFilters: boolean;
13881
+ /**
13882
+ * Replace the action outright instead of merging into it. `action` must then
13883
+ * be complete — at least one output and exactly one destination — because
13884
+ * nothing is carried over. This is how thumbnails or metadata are removed.
13885
+ *
13886
+ * @generated from field: bool clear_action = 8;
13887
+ */
13888
+ clearAction: boolean;
13889
+ constructor(data?: PartialMessage<UpdateIngestRuleRequest>);
13890
+ static readonly runtime: typeof proto3;
13891
+ static readonly typeName = "transcodely.v1.UpdateIngestRuleRequest";
13892
+ static readonly fields: FieldList;
13893
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UpdateIngestRuleRequest;
13894
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UpdateIngestRuleRequest;
13895
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UpdateIngestRuleRequest;
13896
+ static equals(a: UpdateIngestRuleRequest | PlainMessage<UpdateIngestRuleRequest> | undefined, b: UpdateIngestRuleRequest | PlainMessage<UpdateIngestRuleRequest> | undefined): boolean;
13897
+ }
13898
+ /**
13899
+ * Response from updating an ingest rule.
13900
+ *
13901
+ * @generated from message transcodely.v1.UpdateIngestRuleResponse
13902
+ */
13903
+ declare class UpdateIngestRuleResponse extends Message<UpdateIngestRuleResponse> {
13904
+ /**
13905
+ * The updated rule.
13906
+ *
13907
+ * @generated from field: transcodely.v1.IngestRule rule = 1;
13908
+ */
13909
+ rule?: IngestRule;
13910
+ /**
13911
+ * The new inbound secret, in full. Present only when rotate_secret was set,
13912
+ * and returned only here.
13913
+ *
13914
+ * @generated from field: string secret = 2;
13915
+ */
13916
+ secret: string;
13917
+ /**
13918
+ * How many objects this rule declined while it was switched off, and can now
13919
+ * be replayed with ReplayEvent.
13920
+ *
13921
+ * Returned when an update turns a paused rule back on, because pausing is
13922
+ * advertised as safe and that is only half true: the deliveries were accepted
13923
+ * and recorded, but nothing will retry them on its own. This is the number
13924
+ * you would otherwise have to go and discover.
13925
+ *
13926
+ * @generated from field: int64 events_skipped_while_disabled = 3;
13927
+ */
13928
+ eventsSkippedWhileDisabled: bigint;
13929
+ constructor(data?: PartialMessage<UpdateIngestRuleResponse>);
13930
+ static readonly runtime: typeof proto3;
13931
+ static readonly typeName = "transcodely.v1.UpdateIngestRuleResponse";
13932
+ static readonly fields: FieldList;
13933
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): UpdateIngestRuleResponse;
13934
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): UpdateIngestRuleResponse;
13935
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): UpdateIngestRuleResponse;
13936
+ static equals(a: UpdateIngestRuleResponse | PlainMessage<UpdateIngestRuleResponse> | undefined, b: UpdateIngestRuleResponse | PlainMessage<UpdateIngestRuleResponse> | undefined): boolean;
13937
+ }
13938
+ /**
13939
+ * Request to delete an ingest rule.
13940
+ *
13941
+ * @generated from message transcodely.v1.DeleteIngestRuleRequest
13942
+ */
13943
+ declare class DeleteIngestRuleRequest extends Message<DeleteIngestRuleRequest> {
13944
+ /**
13945
+ * ID of the rule to delete.
13946
+ *
13947
+ * @generated from field: string id = 1;
13948
+ */
13949
+ id: string;
13950
+ constructor(data?: PartialMessage<DeleteIngestRuleRequest>);
13951
+ static readonly runtime: typeof proto3;
13952
+ static readonly typeName = "transcodely.v1.DeleteIngestRuleRequest";
13953
+ static readonly fields: FieldList;
13954
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): DeleteIngestRuleRequest;
13955
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): DeleteIngestRuleRequest;
13956
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): DeleteIngestRuleRequest;
13957
+ static equals(a: DeleteIngestRuleRequest | PlainMessage<DeleteIngestRuleRequest> | undefined, b: DeleteIngestRuleRequest | PlainMessage<DeleteIngestRuleRequest> | undefined): boolean;
13958
+ }
13959
+ /**
13960
+ * Response from deleting an ingest rule.
13961
+ *
13962
+ * @generated from message transcodely.v1.DeleteIngestRuleResponse
13963
+ */
13964
+ declare class DeleteIngestRuleResponse extends Message<DeleteIngestRuleResponse> {
13965
+ /**
13966
+ * The rule as it was at deletion.
13967
+ *
13968
+ * @generated from field: transcodely.v1.IngestRule rule = 1;
13969
+ */
13970
+ rule?: IngestRule;
13971
+ constructor(data?: PartialMessage<DeleteIngestRuleResponse>);
13972
+ static readonly runtime: typeof proto3;
13973
+ static readonly typeName = "transcodely.v1.DeleteIngestRuleResponse";
13974
+ static readonly fields: FieldList;
13975
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): DeleteIngestRuleResponse;
13976
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): DeleteIngestRuleResponse;
13977
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): DeleteIngestRuleResponse;
13978
+ static equals(a: DeleteIngestRuleResponse | PlainMessage<DeleteIngestRuleResponse> | undefined, b: DeleteIngestRuleResponse | PlainMessage<DeleteIngestRuleResponse> | undefined): boolean;
13979
+ }
13980
+ /**
13981
+ * Request to list storage events.
13982
+ *
13983
+ * @generated from message transcodely.v1.ListIngestEventsRequest
13984
+ */
13985
+ declare class ListIngestEventsRequest extends Message<ListIngestEventsRequest> {
13986
+ /**
13987
+ * Only events for this rule. Omit for every rule in scope.
13988
+ *
13989
+ * @generated from field: optional string rule_id = 1;
13990
+ */
13991
+ ruleId?: string;
13992
+ /**
13993
+ * Only events with this status.
13994
+ *
13995
+ * @generated from field: optional transcodely.v1.StorageEventStatus status = 2;
13996
+ */
13997
+ status?: StorageEventStatus;
13998
+ /**
13999
+ * Pagination parameters.
14000
+ *
14001
+ * @generated from field: transcodely.v1.PaginationRequest pagination = 3;
14002
+ */
14003
+ pagination?: PaginationRequest;
14004
+ /**
14005
+ * Optional app filter. API-key callers may omit it (their key's app is used)
14006
+ * or pass their own app; a different app is rejected with PermissionDenied.
14007
+ * Portal/JWT callers pass it to read a specific app in their org; omitted
14008
+ * returns events across all apps in the org.
14009
+ *
14010
+ * @generated from field: optional string app_id = 4;
14011
+ */
14012
+ appId?: string;
14013
+ constructor(data?: PartialMessage<ListIngestEventsRequest>);
14014
+ static readonly runtime: typeof proto3;
14015
+ static readonly typeName = "transcodely.v1.ListIngestEventsRequest";
14016
+ static readonly fields: FieldList;
14017
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListIngestEventsRequest;
14018
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListIngestEventsRequest;
14019
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListIngestEventsRequest;
14020
+ static equals(a: ListIngestEventsRequest | PlainMessage<ListIngestEventsRequest> | undefined, b: ListIngestEventsRequest | PlainMessage<ListIngestEventsRequest> | undefined): boolean;
14021
+ }
14022
+ /**
14023
+ * Response from listing storage events.
14024
+ *
14025
+ * @generated from message transcodely.v1.ListIngestEventsResponse
14026
+ */
14027
+ declare class ListIngestEventsResponse extends Message<ListIngestEventsResponse> {
14028
+ /**
14029
+ * The events, newest first.
14030
+ *
14031
+ * @generated from field: repeated transcodely.v1.StorageEvent events = 1;
14032
+ */
14033
+ events: StorageEvent[];
14034
+ /**
14035
+ * Pagination metadata.
14036
+ *
14037
+ * @generated from field: transcodely.v1.PaginationResponse pagination = 2;
14038
+ */
14039
+ pagination?: PaginationResponse;
14040
+ constructor(data?: PartialMessage<ListIngestEventsResponse>);
14041
+ static readonly runtime: typeof proto3;
14042
+ static readonly typeName = "transcodely.v1.ListIngestEventsResponse";
14043
+ static readonly fields: FieldList;
14044
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ListIngestEventsResponse;
14045
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ListIngestEventsResponse;
14046
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ListIngestEventsResponse;
14047
+ static equals(a: ListIngestEventsResponse | PlainMessage<ListIngestEventsResponse> | undefined, b: ListIngestEventsResponse | PlainMessage<ListIngestEventsResponse> | undefined): boolean;
12649
14048
  }
12650
14049
  /**
12651
- * Health status of an individual component.
14050
+ * Request to dry-run an object against a rule.
12652
14051
  *
12653
- * @generated from message transcodely.v1.ComponentHealth
14052
+ * @generated from message transcodely.v1.TestIngestRuleRequest
12654
14053
  */
12655
- declare class ComponentHealth extends Message<ComponentHealth> {
14054
+ declare class TestIngestRuleRequest extends Message<TestIngestRuleRequest> {
12656
14055
  /**
12657
- * Component name (e.g., "database", "storage", "queue").
14056
+ * ID of the rule to test.
12658
14057
  *
12659
- * @generated from field: string name = 1;
14058
+ * @generated from field: string id = 1;
12660
14059
  */
12661
- name: string;
14060
+ id: string;
12662
14061
  /**
12663
- * Component status.
14062
+ * Object key to test, e.g. "uploads/clip.mp4".
12664
14063
  *
12665
- * @generated from field: transcodely.v1.HealthStatus status = 2;
14064
+ * @generated from field: string object_key = 2;
12666
14065
  */
12667
- status: HealthStatus;
14066
+ objectKey: string;
12668
14067
  /**
12669
- * Optional message with additional details.
14068
+ * Bucket the object would be in. Omit to use the rule's origin bucket, which
14069
+ * is what a real event will almost always carry.
12670
14070
  *
12671
- * @generated from field: optional string message = 3;
14071
+ * @generated from field: string bucket = 3;
12672
14072
  */
12673
- message?: string;
12674
- constructor(data?: PartialMessage<ComponentHealth>);
14073
+ bucket: string;
14074
+ /**
14075
+ * Object size in bytes, for testing the size filters.
14076
+ *
14077
+ * @generated from field: int64 size_bytes = 4;
14078
+ */
14079
+ sizeBytes: bigint;
14080
+ /**
14081
+ * Content type, for testing the content-type filter.
14082
+ *
14083
+ * @generated from field: string content_type = 5;
14084
+ */
14085
+ contentType: string;
14086
+ /**
14087
+ * Version identity the real event would carry — an S3/R2 eTag, a GCS
14088
+ * generation, a Supabase metadata eTag.
14089
+ *
14090
+ * It changes no filter decision, and it is here for one reason: the
14091
+ * idempotency key on the returned job request is derived from it, so a dry
14092
+ * run that omits it predicts a key no real delivery will ever use. Supply it
14093
+ * when you want the preview to name the key the job will actually carry.
14094
+ *
14095
+ * @generated from field: string etag = 6;
14096
+ */
14097
+ etag: string;
14098
+ constructor(data?: PartialMessage<TestIngestRuleRequest>);
12675
14099
  static readonly runtime: typeof proto3;
12676
- static readonly typeName = "transcodely.v1.ComponentHealth";
14100
+ static readonly typeName = "transcodely.v1.TestIngestRuleRequest";
12677
14101
  static readonly fields: FieldList;
12678
- static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ComponentHealth;
12679
- static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ComponentHealth;
12680
- static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ComponentHealth;
12681
- static equals(a: ComponentHealth | PlainMessage<ComponentHealth> | undefined, b: ComponentHealth | PlainMessage<ComponentHealth> | undefined): boolean;
14102
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TestIngestRuleRequest;
14103
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TestIngestRuleRequest;
14104
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TestIngestRuleRequest;
14105
+ static equals(a: TestIngestRuleRequest | PlainMessage<TestIngestRuleRequest> | undefined, b: TestIngestRuleRequest | PlainMessage<TestIngestRuleRequest> | undefined): boolean;
14106
+ }
14107
+ /**
14108
+ * Request to replay a storage event.
14109
+ *
14110
+ * @generated from message transcodely.v1.ReplayIngestEventRequest
14111
+ */
14112
+ declare class ReplayIngestEventRequest extends Message<ReplayIngestEventRequest> {
14113
+ /**
14114
+ * ID of the event to re-queue.
14115
+ *
14116
+ * @generated from field: string event_id = 1;
14117
+ */
14118
+ eventId: string;
14119
+ constructor(data?: PartialMessage<ReplayIngestEventRequest>);
14120
+ static readonly runtime: typeof proto3;
14121
+ static readonly typeName = "transcodely.v1.ReplayIngestEventRequest";
14122
+ static readonly fields: FieldList;
14123
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ReplayIngestEventRequest;
14124
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ReplayIngestEventRequest;
14125
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ReplayIngestEventRequest;
14126
+ static equals(a: ReplayIngestEventRequest | PlainMessage<ReplayIngestEventRequest> | undefined, b: ReplayIngestEventRequest | PlainMessage<ReplayIngestEventRequest> | undefined): boolean;
14127
+ }
14128
+ /**
14129
+ * Response from a replay.
14130
+ *
14131
+ * @generated from message transcodely.v1.ReplayIngestEventResponse
14132
+ */
14133
+ declare class ReplayIngestEventResponse extends Message<ReplayIngestEventResponse> {
14134
+ /**
14135
+ * The event, back in `received` and waiting to be processed.
14136
+ *
14137
+ * @generated from field: transcodely.v1.StorageEvent event = 1;
14138
+ */
14139
+ event?: StorageEvent;
14140
+ constructor(data?: PartialMessage<ReplayIngestEventResponse>);
14141
+ static readonly runtime: typeof proto3;
14142
+ static readonly typeName = "transcodely.v1.ReplayIngestEventResponse";
14143
+ static readonly fields: FieldList;
14144
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ReplayIngestEventResponse;
14145
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ReplayIngestEventResponse;
14146
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ReplayIngestEventResponse;
14147
+ static equals(a: ReplayIngestEventResponse | PlainMessage<ReplayIngestEventResponse> | undefined, b: ReplayIngestEventResponse | PlainMessage<ReplayIngestEventResponse> | undefined): boolean;
14148
+ }
14149
+ /**
14150
+ * Response from a dry run.
14151
+ *
14152
+ * @generated from message transcodely.v1.TestIngestRuleResponse
14153
+ */
14154
+ declare class TestIngestRuleResponse extends Message<TestIngestRuleResponse> {
14155
+ /**
14156
+ * Whether the object would produce a job.
14157
+ *
14158
+ * @generated from field: bool matched = 1;
14159
+ */
14160
+ matched: boolean;
14161
+ /**
14162
+ * Why not, when it would not. Same slugs as StorageEvent.reason.
14163
+ *
14164
+ * @generated from field: string reason = 2;
14165
+ */
14166
+ reason: string;
14167
+ /**
14168
+ * The job request this rule would submit for the object. Present only when
14169
+ * matched. Nothing was created — this is what WOULD be sent.
14170
+ *
14171
+ * @generated from field: transcodely.v1.CreateJobRequest job_request = 3;
14172
+ */
14173
+ jobRequest?: CreateJobRequest;
14174
+ constructor(data?: PartialMessage<TestIngestRuleResponse>);
14175
+ static readonly runtime: typeof proto3;
14176
+ static readonly typeName = "transcodely.v1.TestIngestRuleResponse";
14177
+ static readonly fields: FieldList;
14178
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): TestIngestRuleResponse;
14179
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): TestIngestRuleResponse;
14180
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): TestIngestRuleResponse;
14181
+ static equals(a: TestIngestRuleResponse | PlainMessage<TestIngestRuleResponse> | undefined, b: TestIngestRuleResponse | PlainMessage<TestIngestRuleResponse> | undefined): boolean;
12682
14182
  }
12683
14183
 
12684
- declare class Health {
14184
+ /**
14185
+ * Ingest rules — standing instructions that turn an object landing in a watched
14186
+ * bucket into a job, with no server of yours in the path.
14187
+ *
14188
+ * A rule hangs off one readable storage origin. Your provider posts its
14189
+ * object-created events to the rule's `endpointUrl`, authenticated with the
14190
+ * rule's secret; a delivery that passes the filters becomes a job. Duplicate
14191
+ * deliveries are absorbed — an object is identified by (rule, bucket, key,
14192
+ * etag) and produces exactly one job.
14193
+ *
14194
+ * The inbound endpoint itself is not part of this SDK: your storage provider
14195
+ * calls it, not you.
14196
+ */
14197
+ declare class IngestRules {
12685
14198
  private readonly transport;
12686
14199
  constructor(transport: Transport);
12687
- check(opts?: CallOptions): Promise<HealthCheckResponse>;
14200
+ /**
14201
+ * Creates a rule on a readable origin. The full response is returned because
14202
+ * `secret` rides on it — the inbound secret is shown once, here, and cannot
14203
+ * be read back. Store it wherever the event sender will read it from.
14204
+ */
14205
+ create(req: PartialMessage<CreateIngestRuleRequest>, opts?: CallOptions): Promise<CreateIngestRuleResponse>;
14206
+ /**
14207
+ * Fetches a rule by ID (`ing_*`). The secret is never returned again — the
14208
+ * rule carries only `secretPrefix` and `secretHint`.
14209
+ */
14210
+ get(id: string, opts?: CallOptions): Promise<IngestRule>;
14211
+ /** Rules in scope, newest first. Narrow with `originId` or `enabled`. */
14212
+ list(req?: PartialMessage<ListIngestRulesRequest>, opts?: CallOptions): Page<IngestRule>;
14213
+ /**
14214
+ * Updates name, enabled state, filters or action, and optionally rotates the
14215
+ * secret. It MERGES: an update applies only what it carries, down to the
14216
+ * individual filters and the individual parts of the action. Narrowing a
14217
+ * rule to a new prefix is `{ filters: { prefix: "raw/" } }` and nothing
14218
+ * else — the suffix, content-type and size filters are untouched.
14219
+ *
14220
+ * Removing something rather than changing it takes the two clear flags.
14221
+ * `clearFilters` empties the filter set before `filters` is applied, so on
14222
+ * its own it widens the rule to everything in the bucket. `clearAction`
14223
+ * replaces the action outright, and `action` must then be complete — at
14224
+ * least one output and exactly one destination. That is the only way to drop
14225
+ * an action's thumbnails or metadata, since a repeated or map field sent
14226
+ * empty reads as "not sent".
14227
+ *
14228
+ * For the same reason `managed: false` does not turn managed storage off; it
14229
+ * leaves the destination alone. Send `outputOriginId` instead.
14230
+ *
14231
+ * The full response is returned: a rotation puts the new secret on it (once),
14232
+ * and switching a paused rule back on reports how many deliveries it declined
14233
+ * while off in `eventsSkippedWhileDisabled`. After a rotation the previous
14234
+ * secret keeps working for 24 hours.
14235
+ */
14236
+ update(req: PartialMessage<UpdateIngestRuleRequest>, opts?: CallOptions): Promise<UpdateIngestRuleResponse>;
14237
+ /**
14238
+ * Deletes a rule; its endpoint stops accepting events immediately. The events
14239
+ * it already received are kept, and the rule as it stood is returned.
14240
+ */
14241
+ delete(id: string, opts?: CallOptions): Promise<IngestRule>;
14242
+ /**
14243
+ * Every delivery received and what came of it, newest first. Omit `ruleId`
14244
+ * for all rules in scope; set `status` to read only the skipped or failed.
14245
+ */
14246
+ listEvents(req?: PartialMessage<ListIngestEventsRequest>, opts?: CallOptions): Page<StorageEvent>;
14247
+ /**
14248
+ * Dry-runs an object key against a rule: whether the filters match and, when
14249
+ * they do, the exact job request the rule would submit. Nothing is stored and
14250
+ * no job is created.
14251
+ *
14252
+ * Supply `etag` when you want the preview to name the idempotency key a real
14253
+ * delivery would carry — the key is derived from it.
14254
+ */
14255
+ test(req: PartialMessage<TestIngestRuleRequest>, opts?: CallOptions): Promise<TestIngestRuleResponse>;
14256
+ /**
14257
+ * Re-queues a skipped or refused event (`sev_*`), giving the object one more
14258
+ * pass through the rule.
14259
+ *
14260
+ * It exists because deduplication is permanent: re-sending the event, or
14261
+ * re-uploading the same bytes, is absorbed and produces nothing. The event is
14262
+ * reset rather than duplicated, so it keeps its id and its history.
14263
+ */
14264
+ replayEvent(eventId: string, opts?: CallOptions): Promise<StorageEvent>;
12688
14265
  }
12689
14266
 
12690
14267
  declare class Jobs {
@@ -14505,6 +16082,225 @@ declare class Presets {
14505
16082
  archive(id: string, opts?: CallOptions): Promise<Preset>;
14506
16083
  }
14507
16084
 
16085
+ /**
16086
+ * Byte uploader for hosted videos.
16087
+ *
16088
+ * The API hands out presigned S3 URLs but never touches the bytes itself, so
16089
+ * pushing a file at it is three steps: open an upload, PUT the bytes, tell the
16090
+ * API the bytes landed. This module does all three, picking a single PUT for a
16091
+ * file that fits in one part and an S3 multipart upload for anything larger.
16092
+ *
16093
+ * Everything here is plain `fetch` + Web Streams. `node:fs` is imported
16094
+ * dynamically and only when the caller passes a filesystem path, so a bundler
16095
+ * targeting the browser never pulls it in.
16096
+ */
16097
+
16098
+ /** Smallest part S3 accepts, except for the final part (5 MiB). */
16099
+ declare const MIN_PART_SIZE: number;
16100
+ /** Part size used when the caller doesn't pick one (25 MiB — the API default). */
16101
+ declare const DEFAULT_PART_SIZE: number;
16102
+ /** S3's hard ceiling on parts per multipart upload. */
16103
+ declare const MAX_PARTS = 10000;
16104
+ /** Platform upload ceiling enforced by the API (5 GB). */
16105
+ declare const MAX_UPLOAD_SIZE_BYTES = 5368709120;
16106
+ /** Parts uploaded at once when the caller doesn't pick a number. */
16107
+ declare const DEFAULT_CONCURRENCY = 4;
16108
+ /** Retries per part after the first attempt. */
16109
+ declare const DEFAULT_MAX_RETRIES = 4;
16110
+ /** First backoff step; doubles per retry, jittered, capped at 10 s. */
16111
+ declare const DEFAULT_RETRY_BASE_DELAY_MS = 500;
16112
+ /**
16113
+ * Anything {@link Uploads.putFile} can read bytes from.
16114
+ *
16115
+ * - `string` — a filesystem path. Size and filename come from the path itself.
16116
+ * - `Blob` / `File` — size comes from the blob; a `File` also supplies the name.
16117
+ * - `ReadableStream<Uint8Array>` — you must pass `sizeBytes` and `filename`,
16118
+ * because the API needs both before the first byte moves.
16119
+ */
16120
+ type UploadSource = string | Blob | ReadableStream<Uint8Array>;
16121
+ /** Progress snapshot, reported once per completed part. */
16122
+ interface UploadProgress {
16123
+ uploadedBytes: number;
16124
+ totalBytes: number;
16125
+ partsCompleted: number;
16126
+ totalParts: number;
16127
+ /** 0–100, rounded. */
16128
+ percent: number;
16129
+ }
16130
+ interface PutFileOptions {
16131
+ /**
16132
+ * App the video is created under. Optional for an API-key client: omit it
16133
+ * and the key's own app is used. Pass it to be explicit, or when the client
16134
+ * authenticates as a portal user, where omitting it selects the
16135
+ * organization's first active app. An API key given a different app's ID is
16136
+ * refused with `permission_denied`.
16137
+ *
16138
+ * The app does not have to have managed hosting turned on first: the create
16139
+ * call provisions the bucket, the managed origin and the CDN pull zone on an
16140
+ * app that has never hosted anything, which is why a first upload can take a
16141
+ * few seconds longer than the ones after it. If that provisioning fails the
16142
+ * request is refused with `hosting_provisioning_failed` and nothing is
16143
+ * created, so the same call is safe to retry. A refusal on billing or
16144
+ * admission grounds carries its own code instead (`billing_past_due`,
16145
+ * `outstanding_balance_exceeded`, `limit_exceeded`, `intake_paused`, …).
16146
+ */
16147
+ appId?: string;
16148
+ /** Required for a `Blob` or stream; inferred from the path or `File.name` otherwise. */
16149
+ filename?: string;
16150
+ /** Inferred from the extension (or `Blob.type`) when omitted. */
16151
+ contentType?: string;
16152
+ /** Required for a `ReadableStream`; ignored for a path or blob. */
16153
+ sizeBytes?: number;
16154
+ title?: string;
16155
+ description?: string;
16156
+ tags?: string[];
16157
+ /** "public", "unlisted" or "private". Omit to take the app's default. */
16158
+ visibility?: string;
16159
+ /** Preset ID or slug driving the auto-transcode. */
16160
+ preset?: string;
16161
+ hoverPreviews?: boolean;
16162
+ autoCaptions?: boolean;
16163
+ /** Bytes per part. Clamped up to 5 MiB, and raised further if 10,000 parts would not cover the file. */
16164
+ partSize?: number;
16165
+ /** Parts in flight at once. Default 4. */
16166
+ concurrency?: number;
16167
+ /** Retries per part after the first attempt. Default 4. */
16168
+ maxRetries?: number;
16169
+ /** First backoff step in ms. Default 500. */
16170
+ retryBaseDelayMs?: number;
16171
+ /** Called after each part lands. Progress is per part, not per byte. */
16172
+ onProgress?: (progress: UploadProgress) => void;
16173
+ /** Abort the upload. In-flight parts are canceled and the multipart upload is aborted server-side. */
16174
+ signal?: AbortSignal;
16175
+ }
16176
+ /**
16177
+ * Part size for a file: the requested size (or the default), never below the
16178
+ * 5 MiB S3 minimum, and raised as far as it takes to keep the part count
16179
+ * inside S3's 10,000-part ceiling.
16180
+ */
16181
+ declare function calculatePartSize(fileSize: number, requestedPartSize?: number): number;
16182
+ /** Number of parts a file of `fileSize` splits into at `partSize`. */
16183
+ declare function calculateTotalParts(fileSize: number, partSize: number): number;
16184
+ /** Best-effort MIME type from a filename extension. */
16185
+ declare function contentTypeForFilename(filename: string): string;
16186
+ /** The subset of VideoService the uploader drives. Lets tests stand in a double. */
16187
+ interface UploadRpcClient {
16188
+ createUpload(req: {
16189
+ appId?: string;
16190
+ filename: string;
16191
+ contentType: string;
16192
+ sizeBytes: bigint;
16193
+ title?: string;
16194
+ description?: string;
16195
+ tags?: string[];
16196
+ visibility?: string;
16197
+ preset?: string;
16198
+ hoverPreviews?: boolean;
16199
+ autoCaptions?: boolean;
16200
+ }): Promise<{
16201
+ video?: Video;
16202
+ uploadUrl: string;
16203
+ }>;
16204
+ completeUpload(req: {
16205
+ id: string;
16206
+ }): Promise<{
16207
+ video?: Video;
16208
+ }>;
16209
+ createMultipartUpload(req: {
16210
+ appId?: string;
16211
+ filename: string;
16212
+ contentType: string;
16213
+ sizeBytes: bigint;
16214
+ totalParts: number;
16215
+ partSizeBytes: bigint;
16216
+ title?: string;
16217
+ description?: string;
16218
+ tags?: string[];
16219
+ visibility?: string;
16220
+ preset?: string;
16221
+ hoverPreviews?: boolean;
16222
+ autoCaptions?: boolean;
16223
+ }): Promise<{
16224
+ video?: Video;
16225
+ uploadId: string;
16226
+ parts: UploadPart[];
16227
+ }>;
16228
+ getUploadPartUrls(req: {
16229
+ id: string;
16230
+ uploadId: string;
16231
+ partNumbers: number[];
16232
+ }): Promise<{
16233
+ parts: UploadPart[];
16234
+ }>;
16235
+ completeMultipartUpload(req: {
16236
+ id: string;
16237
+ uploadId: string;
16238
+ parts: {
16239
+ partNumber: number;
16240
+ etag: string;
16241
+ }[];
16242
+ }): Promise<{
16243
+ video?: Video;
16244
+ }>;
16245
+ abortMultipartUpload(req: {
16246
+ id: string;
16247
+ uploadId: string;
16248
+ }): Promise<unknown>;
16249
+ }
16250
+ /**
16251
+ * The upload state machine, decoupled from the transport so it can be driven
16252
+ * by a double in tests. `client.uploads` is the wired-up subclass in
16253
+ * `resources/uploads.ts`.
16254
+ *
16255
+ * The API's own transcode fires as soon as the upload is marked complete, so
16256
+ * the returned `Video` is already in `processing` — watch it with
16257
+ * `client.videos.watch(video.id)`.
16258
+ */
16259
+ declare class UploadEngine {
16260
+ private readonly rpc;
16261
+ private readonly fetchImpl;
16262
+ constructor(rpc: UploadRpcClient, fetchImpl: typeof fetch);
16263
+ /**
16264
+ * Upload a file and return the hosted video it created.
16265
+ *
16266
+ * A file that fits in one part goes up as a single PUT; anything larger uses
16267
+ * an S3 multipart upload with `concurrency` parts in flight, per-part retry
16268
+ * with jittered backoff, automatic re-signing when a presigned URL expires,
16269
+ * and a server-side abort if the upload can't finish.
16270
+ *
16271
+ * @example
16272
+ * ```ts
16273
+ * const video = await client.uploads.putFile("./talk.mp4", {
16274
+ * appId: "app_k1l2m3n4o5",
16275
+ * title: "Conference talk",
16276
+ * onProgress: (p) => process.stdout.write(`\r${String(p.percent)}%`),
16277
+ * });
16278
+ * ```
16279
+ */
16280
+ putFile(source: UploadSource, opts: PutFileOptions): Promise<Video>;
16281
+ private run;
16282
+ private single;
16283
+ private multipart;
16284
+ /**
16285
+ * One part, with retry/backoff. `invalidate` is what makes a 403 retryable:
16286
+ * pass it on the multipart path, where the URL can be re-signed, and omit it
16287
+ * for the single PUT, where there is nothing new to try.
16288
+ */
16289
+ private attempt;
16290
+ }
16291
+
16292
+ /**
16293
+ * `client.uploads` — the byte-pushing half of hosted video creation.
16294
+ *
16295
+ * The API only ever hands out presigned URLs; the bytes travel straight from
16296
+ * the caller to object storage. This namespace wires {@link UploadEngine} to
16297
+ * the SDK transport so `putFile` is one call.
16298
+ */
16299
+
16300
+ declare class Uploads extends UploadEngine {
16301
+ constructor(transport: Transport);
16302
+ }
16303
+
14508
16304
  /**
14509
16305
  * User account status.
14510
16306
  *
@@ -15066,8 +16862,10 @@ declare class Transcodely {
15066
16862
  private readonly transport;
15067
16863
  private _jobs;
15068
16864
  private _videos;
16865
+ private _uploads;
15069
16866
  private _presets;
15070
16867
  private _origins;
16868
+ private _ingestRules;
15071
16869
  private _apps;
15072
16870
  private _apiKeys;
15073
16871
  private _organizations;
@@ -15082,8 +16880,19 @@ declare class Transcodely {
15082
16880
  get lastRequestId(): string | undefined;
15083
16881
  get jobs(): Jobs;
15084
16882
  get videos(): Videos;
16883
+ /**
16884
+ * Byte uploads for hosted videos. `client.uploads.putFile(path, { appId })`
16885
+ * runs the whole create → PUT → complete dance, picking a single PUT or an
16886
+ * S3 multipart upload by file size.
16887
+ */
16888
+ get uploads(): Uploads;
15085
16889
  get presets(): Presets;
15086
16890
  get origins(): Origins;
16891
+ /**
16892
+ * Ingest rules: watch a bucket, transcode what lands in it. See
16893
+ * {@link IngestRules}.
16894
+ */
16895
+ get ingestRules(): IngestRules;
15087
16896
  get apps(): Apps;
15088
16897
  get apiKeys(): ApiKeys;
15089
16898
  get organizations(): Organizations;
@@ -15106,8 +16915,29 @@ declare class Transcodely {
15106
16915
  get webhooks(): typeof Webhooks;
15107
16916
  }
15108
16917
 
16918
+ /**
16919
+ * JSON serialization for the Transcodely wire format. Wraps protojson
16920
+ * (`MessageType.toJson` / `fromJson`) with snake_case field names + lowercase
16921
+ * simplified enum values, mirroring `internal/connect/codec.go` on the server.
16922
+ */
16923
+
16924
+ interface SerializeOptions {
16925
+ /** Always emit unpopulated fields (matches server's EmitUnpopulated). */
16926
+ emitDefaultValues?: boolean;
16927
+ }
16928
+ /**
16929
+ * Render a generated message as a plain JSON value in the Transcodely wire
16930
+ * format — snake_case field names, simplified lowercase enums, exactly what
16931
+ * the REST/Connect API returns. Useful for logging and for tools that print
16932
+ * API entities (the `transcodely` CLI's `--json` mode uses it).
16933
+ *
16934
+ * Unlike {@link serialize} it takes no MessageType: the message carries its
16935
+ * own descriptor.
16936
+ */
16937
+ declare function toWireJson<T extends Message<T>>(msg: T, opts?: SerializeOptions): JsonValue;
16938
+
15109
16939
  /** SDK version. Bumped by release-please from package.json on each tag. */
15110
- declare const SDK_VERSION = "0.3.7";
16940
+ declare const SDK_VERSION = "0.3.8";
15111
16941
  /**
15112
16942
  * API version this SDK release is pinned to. Sent on every request as
15113
16943
  * `Transcodely-Version`. Customers can override per-client via the
@@ -15117,4 +16947,121 @@ declare const API_VERSION = "2026-05-03";
15117
16947
  /** Default base URL for the production Transcodely API. */
15118
16948
  declare const DEFAULT_BASE_URL = "https://api.transcodely.com";
15119
16949
 
15120
- export { APIConnectionError, APIError, Event as APIEvent, APIKey, API_VERSION, AV1Options, AbortMultipartUploadRequest, App, AppStatus, ArchiveAppRequest, ArchiveOriginRequest, ArchivePresetRequest, AudioCodec, AudioSettings, AudioStreamInfo, AudioTrackConfig, AuthenticationError, AutoABRConfig, AutoProfileDefaults, BYOKConfig, BillingPaymentMethod, BillingPortalSession, BillingProfile, BillingStanding, BillingTreatment, BitrateMode, Budget, BurnInStyle, type CallOptions, CancelJobRequest, CancelJobResponse, CaptionStyle, ChapterPoint, ChapterResult, CheckSlugRequest, CheckSlugResponse, ClipConfig, CompleteMultipartUploadRequest, CompleteMultipartUploadResponse, CompleteUploadRequest, CompleteUploadResponse, CompletedPart, ConfirmJobRequest, ConfirmJobResponse, ConflictError, Container, ContentAnalysis, ContentAwareConfig, ContentAwareMode, ContentType, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateAppRequest, CreateAppResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateFromUrlRequest, CreateFromUrlResponse, CreateJobRequest, CreateJobResponse, CreateMultipartUploadRequest, CreateMultipartUploadResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOriginRequest, CreateOriginResponse, CreatePresetRequest, CreatePresetResponse, CreateUploadRequest, CreateUploadResponse, CreateWebhookEndpointRequest, CreateWebhookEndpointResponse, DASHConfig, DEFAULT_BASE_URL, DEFAULT_TOLERANCE_SECONDS, DRMConfig, DRMSystem, DailyUsage, DeleteVideoRequest, DeleteWebhookEndpointRequest, DeleteWebhookEndpointResponse, DeliveryFormat, DunningStage, DuplicatePresetRequest, DuplicatePresetResponse, EVENT_ID_HEADER, EnableHostingRequest, EnableHostingResponse, EncryptionScheme, EndpointHealthSummary, ErrorDetails, type EventBase, ExecutionTiming, ExposureThresholdSource, type FieldViolation, GOPAlignmentMode, GcsCredentials, GcsOriginConfig, GetAPIKeyRequest, GetAPIKeyResponse, GetAppRequest, GetAppResponse, GetBillingProfileRequest, GetBillingProfileResponse, GetBudgetRequest, GetBudgetResponse, GetEndpointHealthRequest, GetEndpointHealthResponse, GetInvoiceRequest, GetInvoiceResponse, GetJobRequest, GetJobResponse, GetMeRequest, GetMeResponse, GetMembershipRequest, GetMembershipResponse, GetOrganizationRequest, GetOrganizationResponse, GetOriginRequest, GetOriginResponse, GetOutstandingBalanceRequest, GetOutstandingBalanceResponse, GetPresetBySlugRequest, GetPresetBySlugResponse, GetPresetRequest, GetPresetResponse, GetSpendRequest, GetSpendResponse, GetStatsRequest, GetStatsResponse, GetUpcomingInvoiceRequest, GetUpcomingInvoiceResponse, GetUploadPartUrlsRequest, GetUploadPartUrlsResponse, GetUsageRequest, GetUsageResponse, GetUserRequest, GetUserResponse, GetVideoRequest, GetVideoResponse, H264Options, H265Options, HDRConfig, HDRFormat, HDRMode, HLSConfig, HLSPlaylistType, HLSSegmentFormat, HealthBucket, HostingConfig, HttpCredentials, HttpOriginConfig, InputMetadata, InvalidRequestError, Invoice, InvoiceLineItem, InvoiceLineType, InvoiceStatus, Job, JobCostBreakdown, JobCostLine, JobCostLineType, JobFee, JobOutput, JobPriority, JobStatus, KeyServerConfig, type KnownWebhookEvent, ListAPIKeysRequest, ListAPIKeysResponse, ListAppsRequest, ListAppsResponse, ListEventsRequest, ListEventsResponse, ListInvoicesRequest, ListInvoicesResponse, ListJobsRequest, ListJobsResponse, ListMembershipsRequest, ListMembershipsResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListOriginsRequest, ListOriginsResponse, ListPresetsRequest, ListPresetsResponse, ListTopVideosRequest, ListTopVideosResponse, ListUsersRequest, ListUsersResponse, ListVideosRequest, ListVideosResponse, ListWebhookDeliveriesRequest, ListWebhookDeliveriesResponse, ListWebhookEndpointsRequest, ListWebhookEndpointsResponse, type LogEvent, Membership, MembershipRole, MembershipStatus, MembershipWithUser, NotFoundError, Organization, OrganizationStatus, Origin, OriginPermission, OriginProvider, OriginRef, OriginStatus, OutputFormat, OutputSpec, OutputStatus, OutputVariantResult, OutstandingBalance, Page, PaginationRequest, PaginationResponse, PaymentMethodState, PermissionError, PlayerConfig, PreconditionError, Preset, PresetVariant, PricingSnapshot, QualityTier, R2Jurisdiction, R2OriginConfig, RateLimitError, RemoveMembershipRequest, ResendEventRequest, ResendEventResponse, Resolution, RetrieveEventRequest, RetrieveEventResponse, RetrieveWebhookEndpointRequest, RetrieveWebhookEndpointResponse, RevokeAPIKeyRequest, RotateWebhookSecretRequest, RotateWebhookSecretResponse, S3Credentials, S3OriginConfig, SDK_VERSION, SIGNATURE_HEADER, SegmentConfig, SendTestWebhookRequest, SendTestWebhookResponse, SettleOutstandingBalanceRequest, SettleOutstandingBalanceResponse, Settlement, type SpendLimitNotification, StreamingConfig, SubtitleFormat, SubtitleOperation, SubtitleResult, SubtitleStreamInfo, SubtitleTrack, ThumbnailFormat, ThumbnailMode, ThumbnailResult, ThumbnailSpec, ToneMapping, TopVideo, Transcodely, type TranscodelyConfig, TranscodelyError, TrustTier, type UnknownWebhookEvent, UpdateAppRequest, UpdateAppResponse, UpdateBudgetRequest, UpdateBudgetResponse, UpdateHostingConfigRequest, UpdateHostingConfigResponse, UpdateMeRequest, UpdateMeResponse, UpdateMembershipRoleRequest, UpdateMembershipRoleResponse, UpdateOrganizationRequest, UpdateOrganizationResponse, UpdateOriginRequest, UpdateOriginResponse, UpdatePlayerConfigRequest, UpdatePlayerConfigResponse, UpdatePresetRequest, UpdatePresetResponse, UpdateSpendLimitRequest, UpdateSpendLimitResponse, UpdateVideoRequest, UpdateVideoResponse, UpdateWebhookEndpointRequest, UpdateWebhookEndpointResponse, UploadPart, UsageSummary, User, UserApprovalStatus, UserOrganization, UserStatus, UserWithOrganizations, VP9Options, ValidateOriginRequest, ValidateOriginResponse, ValidationResult, VariantPricingSnapshot, type VerifyOptions, Video, VideoCodec, VideoRendition, VideoSettings, VideoStatsDay, VideoStatsTotals, VideoStatus, VideoStreamInfo, VideoTextTrack, VideoVariant, VideoVisibility, WEBHOOK_EVENT_TYPES, WatchEventType, WatchJobRequest, WatchJobResponse, WatchVideoRequest, WatchVideoResponse, WatermarkAnchor, WatermarkConfig, WatermarkPixelPlacement, WebhookDelivery, WebhookEndpoint, WebhookError, type WebhookEvent, type WebhookEventType, WebhookPayloadError, WebhookSignatureError, WebhookTimestampError, Webhooks, constructEvent, isEventType, isKnownEvent, verifySignature };
16950
+ /**
16951
+ * Health status.
16952
+ *
16953
+ * @generated from enum transcodely.v1.HealthStatus
16954
+ */
16955
+ declare enum HealthStatus {
16956
+ /**
16957
+ * @generated from enum value: HEALTH_STATUS_UNSPECIFIED = 0;
16958
+ */
16959
+ UNSPECIFIED = 0,
16960
+ /**
16961
+ * Service is healthy and operational.
16962
+ *
16963
+ * @generated from enum value: HEALTH_STATUS_HEALTHY = 1;
16964
+ */
16965
+ HEALTHY = 1,
16966
+ /**
16967
+ * Service is degraded but operational.
16968
+ *
16969
+ * @generated from enum value: HEALTH_STATUS_DEGRADED = 2;
16970
+ */
16971
+ DEGRADED = 2,
16972
+ /**
16973
+ * Service is unhealthy and not operational.
16974
+ *
16975
+ * @generated from enum value: HEALTH_STATUS_UNHEALTHY = 3;
16976
+ */
16977
+ UNHEALTHY = 3
16978
+ }
16979
+ /**
16980
+ * Request for health check.
16981
+ *
16982
+ * @generated from message transcodely.v1.HealthCheckRequest
16983
+ */
16984
+ declare class HealthCheckRequest extends Message<HealthCheckRequest> {
16985
+ /**
16986
+ * Optional: specific service to check (empty = all).
16987
+ *
16988
+ * @generated from field: optional string service = 1;
16989
+ */
16990
+ service?: string;
16991
+ constructor(data?: PartialMessage<HealthCheckRequest>);
16992
+ static readonly runtime: typeof proto3;
16993
+ static readonly typeName = "transcodely.v1.HealthCheckRequest";
16994
+ static readonly fields: FieldList;
16995
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): HealthCheckRequest;
16996
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): HealthCheckRequest;
16997
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): HealthCheckRequest;
16998
+ static equals(a: HealthCheckRequest | PlainMessage<HealthCheckRequest> | undefined, b: HealthCheckRequest | PlainMessage<HealthCheckRequest> | undefined): boolean;
16999
+ }
17000
+ /**
17001
+ * Response from health check.
17002
+ *
17003
+ * @generated from message transcodely.v1.HealthCheckResponse
17004
+ */
17005
+ declare class HealthCheckResponse extends Message<HealthCheckResponse> {
17006
+ /**
17007
+ * Overall service status.
17008
+ *
17009
+ * @generated from field: transcodely.v1.HealthStatus status = 1;
17010
+ */
17011
+ status: HealthStatus;
17012
+ /**
17013
+ * Service version.
17014
+ *
17015
+ * @generated from field: string version = 2;
17016
+ */
17017
+ version: string;
17018
+ /**
17019
+ * Individual component statuses.
17020
+ *
17021
+ * @generated from field: repeated transcodely.v1.ComponentHealth components = 3;
17022
+ */
17023
+ components: ComponentHealth[];
17024
+ constructor(data?: PartialMessage<HealthCheckResponse>);
17025
+ static readonly runtime: typeof proto3;
17026
+ static readonly typeName = "transcodely.v1.HealthCheckResponse";
17027
+ static readonly fields: FieldList;
17028
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): HealthCheckResponse;
17029
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): HealthCheckResponse;
17030
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): HealthCheckResponse;
17031
+ static equals(a: HealthCheckResponse | PlainMessage<HealthCheckResponse> | undefined, b: HealthCheckResponse | PlainMessage<HealthCheckResponse> | undefined): boolean;
17032
+ }
17033
+ /**
17034
+ * Health status of an individual component.
17035
+ *
17036
+ * @generated from message transcodely.v1.ComponentHealth
17037
+ */
17038
+ declare class ComponentHealth extends Message<ComponentHealth> {
17039
+ /**
17040
+ * Component name (e.g., "database", "storage", "queue").
17041
+ *
17042
+ * @generated from field: string name = 1;
17043
+ */
17044
+ name: string;
17045
+ /**
17046
+ * Component status.
17047
+ *
17048
+ * @generated from field: transcodely.v1.HealthStatus status = 2;
17049
+ */
17050
+ status: HealthStatus;
17051
+ /**
17052
+ * Optional message with additional details.
17053
+ *
17054
+ * @generated from field: optional string message = 3;
17055
+ */
17056
+ message?: string;
17057
+ constructor(data?: PartialMessage<ComponentHealth>);
17058
+ static readonly runtime: typeof proto3;
17059
+ static readonly typeName = "transcodely.v1.ComponentHealth";
17060
+ static readonly fields: FieldList;
17061
+ static fromBinary(bytes: Uint8Array, options?: Partial<BinaryReadOptions>): ComponentHealth;
17062
+ static fromJson(jsonValue: JsonValue, options?: Partial<JsonReadOptions>): ComponentHealth;
17063
+ static fromJsonString(jsonString: string, options?: Partial<JsonReadOptions>): ComponentHealth;
17064
+ static equals(a: ComponentHealth | PlainMessage<ComponentHealth> | undefined, b: ComponentHealth | PlainMessage<ComponentHealth> | undefined): boolean;
17065
+ }
17066
+
17067
+ export { APIConnectionError, APIError, Event as APIEvent, APIKey, API_VERSION, AV1Options, AbortMultipartUploadRequest, App, AppStatus, ArchiveAppRequest, ArchiveOriginRequest, ArchivePresetRequest, AudioCodec, AudioSettings, AudioStreamInfo, AudioTrackConfig, AuthenticationError, AutoABRConfig, AutoProfileDefaults, BYOKConfig, BillingPaymentMethod, BillingPortalSession, BillingProfile, BillingStanding, BillingTreatment, BitrateMode, Budget, BurnInStyle, type CallOptions, CancelJobRequest, CancelJobResponse, CaptionStyle, ChapterPoint, ChapterResult, CheckSlugRequest, CheckSlugResponse, ClipConfig, CompleteMultipartUploadRequest, CompleteMultipartUploadResponse, CompleteUploadRequest, CompleteUploadResponse, CompletedPart, ComponentHealth, ConfirmJobRequest, ConfirmJobResponse, ConflictError, Container, ContentAnalysis, ContentAwareConfig, ContentAwareMode, ContentType, CreateAPIKeyRequest, CreateAPIKeyResponse, CreateAppRequest, CreateAppResponse, CreateBillingPortalSessionRequest, CreateBillingPortalSessionResponse, CreateFromUrlRequest, CreateFromUrlResponse, CreateIngestRuleRequest, CreateIngestRuleResponse, CreateJobRequest, CreateJobResponse, CreateMultipartUploadRequest, CreateMultipartUploadResponse, CreateOrganizationRequest, CreateOrganizationResponse, CreateOriginRequest, CreateOriginResponse, CreatePresetRequest, CreatePresetResponse, CreateUploadRequest, CreateUploadResponse, CreateWebhookEndpointRequest, CreateWebhookEndpointResponse, DASHConfig, DEFAULT_BASE_URL, DEFAULT_CONCURRENCY, DEFAULT_MAX_RETRIES, DEFAULT_PART_SIZE, DEFAULT_RETRY_BASE_DELAY_MS, DEFAULT_TOLERANCE_SECONDS, DRMConfig, DRMSystem, DailyUsage, DeleteIngestRuleRequest, DeleteIngestRuleResponse, DeleteVideoRequest, DeleteWebhookEndpointRequest, DeleteWebhookEndpointResponse, DeliveryFormat, DunningStage, DuplicatePresetRequest, DuplicatePresetResponse, EVENT_ID_HEADER, EnableHostingRequest, EnableHostingResponse, EncryptionScheme, EndpointHealthSummary, ErrorDetails, type EventBase, ExecutionTiming, ExposureThresholdSource, type FieldViolation, GOPAlignmentMode, GcsCredentials, GcsOriginConfig, GetAPIKeyRequest, GetAPIKeyResponse, GetAppRequest, GetAppResponse, GetBillingProfileRequest, GetBillingProfileResponse, GetBudgetRequest, GetBudgetResponse, GetEndpointHealthRequest, GetEndpointHealthResponse, GetIngestRuleRequest, GetIngestRuleResponse, GetInvoiceRequest, GetInvoiceResponse, GetJobRequest, GetJobResponse, GetMeRequest, GetMeResponse, GetMembershipRequest, GetMembershipResponse, GetOrganizationRequest, GetOrganizationResponse, GetOriginRequest, GetOriginResponse, GetOutstandingBalanceRequest, GetOutstandingBalanceResponse, GetPresetBySlugRequest, GetPresetBySlugResponse, GetPresetRequest, GetPresetResponse, GetSpendRequest, GetSpendResponse, GetStatsRequest, GetStatsResponse, GetUpcomingInvoiceRequest, GetUpcomingInvoiceResponse, GetUploadPartUrlsRequest, GetUploadPartUrlsResponse, GetUsageRequest, GetUsageResponse, GetUserRequest, GetUserResponse, GetVideoRequest, GetVideoResponse, H264Options, H265Options, HDRConfig, HDRFormat, HDRMode, HLSConfig, HLSPlaylistType, HLSSegmentFormat, HealthBucket, HealthCheckRequest, HealthCheckResponse, HealthStatus, HostingConfig, HttpCredentials, HttpOriginConfig, IngestRule, IngestRuleAction, IngestRuleFilters, InputMetadata, InvalidRequestError, Invoice, InvoiceLineItem, InvoiceLineType, InvoiceStatus, Job, JobCostBreakdown, JobCostLine, JobCostLineType, JobFee, JobOutput, JobPriority, JobStatus, KeyServerConfig, type KnownWebhookEvent, ListAPIKeysRequest, ListAPIKeysResponse, ListAppsRequest, ListAppsResponse, ListEventsRequest, ListEventsResponse, ListIngestEventsRequest, ListIngestEventsResponse, ListIngestRulesRequest, ListIngestRulesResponse, ListInvoicesRequest, ListInvoicesResponse, ListJobsRequest, ListJobsResponse, ListMembershipsRequest, ListMembershipsResponse, ListOrganizationsRequest, ListOrganizationsResponse, ListOriginsRequest, ListOriginsResponse, ListPresetsRequest, ListPresetsResponse, ListTopVideosRequest, ListTopVideosResponse, ListUsersRequest, ListUsersResponse, ListVideosRequest, ListVideosResponse, ListWebhookDeliveriesRequest, ListWebhookDeliveriesResponse, ListWebhookEndpointsRequest, ListWebhookEndpointsResponse, type LogEvent, MAX_PARTS, MAX_UPLOAD_SIZE_BYTES, MIN_PART_SIZE, Membership, MembershipRole, MembershipStatus, MembershipWithUser, NotFoundError, Organization, OrganizationStatus, Origin, OriginPermission, OriginProvider, OriginRef, OriginStatus, OutputFormat, OutputReport, OutputReportAudio, OutputReportColor, OutputReportContentAware, OutputReportMismatch, OutputReportVerdict, OutputReportVideo, OutputSpec, OutputStatus, OutputVariantResult, OutstandingBalance, Page, PaginationRequest, PaginationResponse, PaymentMethodState, PermissionError, PlayerConfig, PreconditionError, Preset, PresetVariant, PricingSnapshot, type PutFileOptions, QualityTier, R2Jurisdiction, R2OriginConfig, RateLimitError, RemoveMembershipRequest, ReplayIngestEventRequest, ReplayIngestEventResponse, ResendEventRequest, ResendEventResponse, Resolution, RetrieveEventRequest, RetrieveEventResponse, RetrieveWebhookEndpointRequest, RetrieveWebhookEndpointResponse, RevokeAPIKeyRequest, RotateWebhookSecretRequest, RotateWebhookSecretResponse, S3Credentials, S3OriginConfig, SDK_VERSION, SIGNATURE_HEADER, SegmentConfig, SendTestWebhookRequest, SendTestWebhookResponse, SettleOutstandingBalanceRequest, SettleOutstandingBalanceResponse, Settlement, type SpendLimitNotification, StorageEvent, StorageEventSource, StorageEventStatus, StreamingConfig, SubtitleFormat, SubtitleOperation, SubtitleResult, SubtitleStreamInfo, SubtitleTrack, TestIngestRuleRequest, TestIngestRuleResponse, ThumbnailFormat, ThumbnailMode, ThumbnailResult, ThumbnailSpec, ToneMapping, TopVideo, Transcodely, type TranscodelyConfig, TranscodelyError, TrustTier, type UnknownWebhookEvent, UpdateAppRequest, UpdateAppResponse, UpdateBudgetRequest, UpdateBudgetResponse, UpdateHostingConfigRequest, UpdateHostingConfigResponse, UpdateIngestRuleRequest, UpdateIngestRuleResponse, UpdateMeRequest, UpdateMeResponse, UpdateMembershipRoleRequest, UpdateMembershipRoleResponse, UpdateOrganizationRequest, UpdateOrganizationResponse, UpdateOriginRequest, UpdateOriginResponse, UpdatePlayerConfigRequest, UpdatePlayerConfigResponse, UpdatePresetRequest, UpdatePresetResponse, UpdateSpendLimitRequest, UpdateSpendLimitResponse, UpdateVideoRequest, UpdateVideoResponse, UpdateWebhookEndpointRequest, UpdateWebhookEndpointResponse, UploadAbortedError, UploadError, UploadPart, type UploadProgress, type UploadSource, Uploads, UsageSummary, User, UserApprovalStatus, UserOrganization, UserStatus, UserWithOrganizations, VP9Options, ValidateOriginRequest, ValidateOriginResponse, ValidationResult, VariantPricingSnapshot, type VerifyOptions, Video, VideoCodec, VideoRendition, VideoSettings, VideoStatsDay, VideoStatsTotals, VideoStatus, VideoStreamInfo, VideoTextTrack, VideoVariant, VideoVisibility, WEBHOOK_EVENT_TYPES, WatchEventType, WatchJobRequest, WatchJobResponse, WatchVideoRequest, WatchVideoResponse, WatermarkAnchor, WatermarkConfig, WatermarkPixelPlacement, WebhookDelivery, WebhookEndpoint, WebhookError, type WebhookEvent, type WebhookEventType, WebhookPayloadError, WebhookSignatureError, WebhookTimestampError, Webhooks, calculatePartSize, calculateTotalParts, constructEvent, contentTypeForFilename, isEventType, isKnownEvent, toWireJson, verifySignature };