transcodely 0.3.9__tar.gz → 0.3.11__tar.gz

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.
Files changed (98) hide show
  1. {transcodely-0.3.9 → transcodely-0.3.11}/PKG-INFO +61 -6
  2. {transcodely-0.3.9 → transcodely-0.3.11}/README.md +60 -5
  3. {transcodely-0.3.9 → transcodely-0.3.11}/pyproject.toml +1 -1
  4. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/__init__.py +8 -0
  5. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/videos.py +17 -0
  6. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/types.py +26 -0
  7. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/job_pb2.py +70 -68
  8. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/job_pb2.pyi +22 -4
  9. transcodely-0.3.11/src/transcodely/v1/subtitles_pb2.py +102 -0
  10. transcodely-0.3.11/src/transcodely/v1/subtitles_pb2.pyi +278 -0
  11. transcodely-0.3.11/src/transcodely/v1/video_pb2.py +223 -0
  12. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/video_pb2.pyi +31 -4
  13. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/version.py +1 -1
  14. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/webhooks/types.py +3 -1
  15. transcodely-0.3.9/src/transcodely/v1/subtitles_pb2.py +0 -75
  16. transcodely-0.3.9/src/transcodely/v1/subtitles_pb2.pyi +0 -132
  17. transcodely-0.3.9/src/transcodely/v1/video_pb2.py +0 -210
  18. {transcodely-0.3.9 → transcodely-0.3.11}/.gitignore +0 -0
  19. {transcodely-0.3.9 → transcodely-0.3.11}/LICENSE +0 -0
  20. {transcodely-0.3.9 → transcodely-0.3.11}/src/buf/__init__.py +0 -0
  21. {transcodely-0.3.9 → transcodely-0.3.11}/src/buf/validate/__init__.py +0 -0
  22. {transcodely-0.3.9 → transcodely-0.3.11}/src/buf/validate/validate_pb2.py +0 -0
  23. {transcodely-0.3.9 → transcodely-0.3.11}/src/buf/validate/validate_pb2.pyi +0 -0
  24. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/_codec/__init__.py +0 -0
  25. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/_codec/json_codec.py +0 -0
  26. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/_transport/__init__.py +0 -0
  27. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/_transport/error_mapping.py +0 -0
  28. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/_transport/headers.py +0 -0
  29. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/_transport/transport.py +0 -0
  30. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/client.py +0 -0
  31. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/errors.py +0 -0
  32. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/pagination.py +0 -0
  33. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/py.typed +0 -0
  34. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/__init__.py +0 -0
  35. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/_helpers.py +0 -0
  36. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/api_keys.py +0 -0
  37. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/apps.py +0 -0
  38. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/billing.py +0 -0
  39. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/events.py +0 -0
  40. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/health.py +0 -0
  41. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/ingest_rules.py +0 -0
  42. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/jobs.py +0 -0
  43. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/memberships.py +0 -0
  44. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/organizations.py +0 -0
  45. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/origins.py +0 -0
  46. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/presets.py +0 -0
  47. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/users.py +0 -0
  48. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/resources/webhook_endpoints.py +0 -0
  49. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/streaming.py +0 -0
  50. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/api_key_pb2.py +0 -0
  51. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/api_key_pb2.pyi +0 -0
  52. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/app_pb2.py +0 -0
  53. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/app_pb2.pyi +0 -0
  54. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/billing_pb2.py +0 -0
  55. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/billing_pb2.pyi +0 -0
  56. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/codec_av1_pb2.py +0 -0
  57. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/codec_av1_pb2.pyi +0 -0
  58. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/codec_h264_pb2.py +0 -0
  59. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/codec_h264_pb2.pyi +0 -0
  60. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/codec_h265_pb2.py +0 -0
  61. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/codec_h265_pb2.pyi +0 -0
  62. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/codec_vp9_pb2.py +0 -0
  63. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/codec_vp9_pb2.pyi +0 -0
  64. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/common_pb2.py +0 -0
  65. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/common_pb2.pyi +0 -0
  66. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/content_aware_pb2.py +0 -0
  67. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/content_aware_pb2.pyi +0 -0
  68. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/drm_pb2.py +0 -0
  69. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/drm_pb2.pyi +0 -0
  70. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/hdr_pb2.py +0 -0
  71. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/hdr_pb2.pyi +0 -0
  72. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/health_pb2.py +0 -0
  73. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/health_pb2.pyi +0 -0
  74. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/ingest_rule_pb2.py +0 -0
  75. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/ingest_rule_pb2.pyi +0 -0
  76. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/media_pb2.py +0 -0
  77. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/media_pb2.pyi +0 -0
  78. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/membership_pb2.py +0 -0
  79. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/membership_pb2.pyi +0 -0
  80. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/organization_pb2.py +0 -0
  81. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/organization_pb2.pyi +0 -0
  82. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/origin_pb2.py +0 -0
  83. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/origin_pb2.pyi +0 -0
  84. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/preset_pb2.py +0 -0
  85. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/preset_pb2.pyi +0 -0
  86. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/streaming_pb2.py +0 -0
  87. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/streaming_pb2.pyi +0 -0
  88. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/thumbnails_pb2.py +0 -0
  89. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/thumbnails_pb2.pyi +0 -0
  90. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/user_pb2.py +0 -0
  91. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/user_pb2.pyi +0 -0
  92. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/watermark_pb2.py +0 -0
  93. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/watermark_pb2.pyi +0 -0
  94. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/webhook_pb2.py +0 -0
  95. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/v1/webhook_pb2.pyi +0 -0
  96. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/webhooks/__init__.py +0 -0
  97. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/webhooks/construct_event.py +0 -0
  98. {transcodely-0.3.9 → transcodely-0.3.11}/src/transcodely/webhooks/signature.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: transcodely
3
- Version: 0.3.9
3
+ Version: 0.3.11
4
4
  Summary: Official Python SDK for Transcodely — encode video to HLS, DASH and MP4 into your own S3, GCS or R2 bucket, with DRM and signed playback.
5
5
  Project-URL: Homepage, https://www.transcodely.com
6
6
  Project-URL: Documentation, https://www.transcodely.com/docs
@@ -115,10 +115,22 @@ same one the verdict judges; per-rendition detail stays in `variant_results`.
115
115
 
116
116
  An output encoded with per-title content-aware analysis also carries
117
117
  `report.content_aware`: the VMAF target the search aimed at, the score it reached
118
- on its samples, and the CRF it chose. It describes the SEARCH, not the delivered
119
- file — `vmaf_achieved` scores short samples taken before the real encode, which
120
- is never scored itself. Check `report.HasField("content_aware")`; an ordinary
121
- output has none.
118
+ on its samples, the CRF it chose, and — since API 5.23.0 — the whole curve the
119
+ search measured to get there: `seed_crf` (what the rung would have used without
120
+ the search), `met_target` (whether any probe reached the VMAF target), and
121
+ `probes` (every sample point, in order, each with `crf`, `vmaf`, and
122
+ `bitrate_kbps`). It describes the SEARCH, not the delivered file — every number
123
+ is measured on short samples cut from the source, and the delivered file is
124
+ never itself scored. Check `report.HasField("content_aware")`; an ordinary
125
+ output has none. `probes` and `met_target` are empty/absent for workers older
126
+ than 1.29.0, which ran the search but didn't report its curve.
127
+
128
+ A probe's `bitrate_kbps` is derived from a sample encoded **video-only** — the
129
+ search's cuts drop audio, subtitles and data — so it's the sample's video
130
+ bitrate, not a muxed file's rate. The only defensible saving is the ratio
131
+ between the `seed_crf` probe's bitrate and the `crf_chosen` probe's: same cut,
132
+ same settings, only the CRF differs. Comparing a probe's bitrate against the
133
+ delivered output's `average_bitrate_kbps` compares two different things.
122
134
 
123
135
  ## AI captions
124
136
 
@@ -149,6 +161,49 @@ for fee in job.fees:
149
161
  print(fee.fee_type, fee.amount, fee.currency) # "captions" 0.51 "eur"
150
162
  ```
151
163
 
164
+ ## Transcripts and insights
165
+
166
+ Every `generate` track also writes the transcript as `json`, `txt` and `md`. Ask for the opt-in insights pass (summary, key points, chapters, questions, terms, highlights) on the same track:
167
+
168
+ ```python
169
+ import urllib.request
170
+
171
+ from transcodely.types import InsightsStatus, TranscriptFormat
172
+
173
+ client.jobs.create(
174
+ input_video_id="vid_a1b2c3d4e5f6g7",
175
+ outputs=[{"subtitle_tracks": [{
176
+ "operation": "generate",
177
+ "transcript": {"style": "clean"}, # default; "literal" keeps fillers
178
+ "insights": {"enabled": True, "hint": "conference talk for developers"},
179
+ }]}],
180
+ )
181
+
182
+ # On a hosted video each rendition carries a short-lived signed_url, re-issued on
183
+ # every read, so fetch the video right before downloading.
184
+ video = client.videos.get("vid_a1b2c3d4e5f6g7")
185
+ for track in video.text_tracks:
186
+ for r in track.transcript_renditions:
187
+ if r.format == TranscriptFormat.TRANSCRIPT_FORMAT_TXT and r.signed_url:
188
+ with urllib.request.urlopen(r.signed_url) as resp:
189
+ print(resp.read().decode("utf-8"))
190
+
191
+ for ins in video.insights:
192
+ if ins.status == InsightsStatus.INSIGHTS_STATUS_READY:
193
+ print(ins.summary, list(ins.key_points))
194
+ for ch in ins.chapters:
195
+ print(ch.start_seconds, ch.title)
196
+
197
+ # Ready-to-paste JSON-LD, video-sitemap entry and HTML fragment for your own page.
198
+ kit = client.videos.get_seo_markup(
199
+ video_id="vid_a1b2c3d4e5f6g7",
200
+ watch_url="https://example.com/watch/42",
201
+ )
202
+ print(kit.json_ld, kit.sitemap_entry, kit.html_fragment)
203
+ ```
204
+
205
+ Jobs carry the same data on `job.subtitle_results[i].transcript_renditions` and `job.insights`. The `job.insights.ready` and `job.insights.failed` webhook events tell you when an insights pass finishes.
206
+
152
207
  ## Authentication
153
208
 
154
209
  ```python
@@ -161,7 +216,7 @@ API keys are opaque `ak_`-prefixed secrets — pass the full value shown once at
161
216
 
162
217
  ```python
163
218
  client.jobs # create / get / list / cancel / confirm / watch
164
- client.videos # upload helpers, multipart, create_from_url, get / list / update / delete / watch, get_stats / list_top_videos
219
+ client.videos # upload helpers, multipart, create_from_url, get / list / update / delete / watch, get_stats / list_top_videos / get_seo_markup
165
220
  client.presets # create / get / get_by_slug / list / update / duplicate / archive
166
221
  client.origins # create / get / list / update / validate / archive
167
222
  client.ingest_rules # create / get / list / update / delete / list_events / test / replay_event
@@ -78,10 +78,22 @@ same one the verdict judges; per-rendition detail stays in `variant_results`.
78
78
 
79
79
  An output encoded with per-title content-aware analysis also carries
80
80
  `report.content_aware`: the VMAF target the search aimed at, the score it reached
81
- on its samples, and the CRF it chose. It describes the SEARCH, not the delivered
82
- file — `vmaf_achieved` scores short samples taken before the real encode, which
83
- is never scored itself. Check `report.HasField("content_aware")`; an ordinary
84
- output has none.
81
+ on its samples, the CRF it chose, and — since API 5.23.0 — the whole curve the
82
+ search measured to get there: `seed_crf` (what the rung would have used without
83
+ the search), `met_target` (whether any probe reached the VMAF target), and
84
+ `probes` (every sample point, in order, each with `crf`, `vmaf`, and
85
+ `bitrate_kbps`). It describes the SEARCH, not the delivered file — every number
86
+ is measured on short samples cut from the source, and the delivered file is
87
+ never itself scored. Check `report.HasField("content_aware")`; an ordinary
88
+ output has none. `probes` and `met_target` are empty/absent for workers older
89
+ than 1.29.0, which ran the search but didn't report its curve.
90
+
91
+ A probe's `bitrate_kbps` is derived from a sample encoded **video-only** — the
92
+ search's cuts drop audio, subtitles and data — so it's the sample's video
93
+ bitrate, not a muxed file's rate. The only defensible saving is the ratio
94
+ between the `seed_crf` probe's bitrate and the `crf_chosen` probe's: same cut,
95
+ same settings, only the CRF differs. Comparing a probe's bitrate against the
96
+ delivered output's `average_bitrate_kbps` compares two different things.
85
97
 
86
98
  ## AI captions
87
99
 
@@ -112,6 +124,49 @@ for fee in job.fees:
112
124
  print(fee.fee_type, fee.amount, fee.currency) # "captions" 0.51 "eur"
113
125
  ```
114
126
 
127
+ ## Transcripts and insights
128
+
129
+ Every `generate` track also writes the transcript as `json`, `txt` and `md`. Ask for the opt-in insights pass (summary, key points, chapters, questions, terms, highlights) on the same track:
130
+
131
+ ```python
132
+ import urllib.request
133
+
134
+ from transcodely.types import InsightsStatus, TranscriptFormat
135
+
136
+ client.jobs.create(
137
+ input_video_id="vid_a1b2c3d4e5f6g7",
138
+ outputs=[{"subtitle_tracks": [{
139
+ "operation": "generate",
140
+ "transcript": {"style": "clean"}, # default; "literal" keeps fillers
141
+ "insights": {"enabled": True, "hint": "conference talk for developers"},
142
+ }]}],
143
+ )
144
+
145
+ # On a hosted video each rendition carries a short-lived signed_url, re-issued on
146
+ # every read, so fetch the video right before downloading.
147
+ video = client.videos.get("vid_a1b2c3d4e5f6g7")
148
+ for track in video.text_tracks:
149
+ for r in track.transcript_renditions:
150
+ if r.format == TranscriptFormat.TRANSCRIPT_FORMAT_TXT and r.signed_url:
151
+ with urllib.request.urlopen(r.signed_url) as resp:
152
+ print(resp.read().decode("utf-8"))
153
+
154
+ for ins in video.insights:
155
+ if ins.status == InsightsStatus.INSIGHTS_STATUS_READY:
156
+ print(ins.summary, list(ins.key_points))
157
+ for ch in ins.chapters:
158
+ print(ch.start_seconds, ch.title)
159
+
160
+ # Ready-to-paste JSON-LD, video-sitemap entry and HTML fragment for your own page.
161
+ kit = client.videos.get_seo_markup(
162
+ video_id="vid_a1b2c3d4e5f6g7",
163
+ watch_url="https://example.com/watch/42",
164
+ )
165
+ print(kit.json_ld, kit.sitemap_entry, kit.html_fragment)
166
+ ```
167
+
168
+ Jobs carry the same data on `job.subtitle_results[i].transcript_renditions` and `job.insights`. The `job.insights.ready` and `job.insights.failed` webhook events tell you when an insights pass finishes.
169
+
115
170
  ## Authentication
116
171
 
117
172
  ```python
@@ -124,7 +179,7 @@ API keys are opaque `ak_`-prefixed secrets — pass the full value shown once at
124
179
 
125
180
  ```python
126
181
  client.jobs # create / get / list / cancel / confirm / watch
127
- client.videos # upload helpers, multipart, create_from_url, get / list / update / delete / watch, get_stats / list_top_videos
182
+ client.videos # upload helpers, multipart, create_from_url, get / list / update / delete / watch, get_stats / list_top_videos / get_seo_markup
128
183
  client.presets # create / get / get_by_slug / list / update / duplicate / archive
129
184
  client.origins # create / get / list / update / validate / archive
130
185
  client.ingest_rules # create / get / list / update / delete / list_events / test / replay_event
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "transcodely"
7
- version = "0.3.9"
7
+ version = "0.3.11"
8
8
  description = "Official Python SDK for Transcodely — encode video to HLS, DASH and MP4 into your own S3, GCS or R2 bucket, with DRM and signed playback."
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -68,6 +68,7 @@ from .types import (
68
68
  HDRConfig,
69
69
  HLSConfig,
70
70
  IngestRule,
71
+ InsightsOptions,
71
72
  Invoice,
72
73
  InvoiceLineItem,
73
74
  InvoiceLineType,
@@ -94,6 +95,9 @@ from .types import (
94
95
  SubtitleTrack,
95
96
  ThumbnailResult,
96
97
  ThumbnailSpec,
98
+ TranscriptInsights,
99
+ TranscriptOptions,
100
+ TranscriptRendition,
97
101
  User,
98
102
  UserWithOrganizations,
99
103
  Video,
@@ -154,6 +158,7 @@ __all__ = [
154
158
  "HDRConfig",
155
159
  "HLSConfig",
156
160
  "IngestRule",
161
+ "InsightsOptions",
157
162
  "InvalidRequestError",
158
163
  "Invoice",
159
164
  "InvoiceLineItem",
@@ -189,6 +194,9 @@ __all__ = [
189
194
  "ThumbnailSpec",
190
195
  "Transcodely",
191
196
  "TranscodelyError",
197
+ "TranscriptInsights",
198
+ "TranscriptOptions",
199
+ "TranscriptRendition",
192
200
  "User",
193
201
  "UserWithOrganizations",
194
202
  "Video",
@@ -152,3 +152,20 @@ class Videos:
152
152
  """
153
153
  req = fill_from_dict(video_pb2.ListTopVideosRequest(), kwargs)
154
154
  return self._t.unary(_SERVICE, "ListTopVideos", req, video_pb2.ListTopVideosResponse())
155
+
156
+ def get_seo_markup(self, **kwargs: Any) -> video_pb2.GetSeoMarkupResponse:
157
+ """Ready-to-paste SEO markup for a hosted video, built for YOUR watch page.
158
+
159
+ Pass ``video_id`` and ``watch_url`` (required; the absolute ``https://``
160
+ URL of the page that shows the video), plus optional ``deep_link_param``
161
+ (query parameter your page reads to start at a time, default ``"t"``)
162
+ and ``language`` (ISO 639-2, when the video has several transcripts).
163
+ Returns the full ``GetSeoMarkupResponse``: ``.json_ld`` (schema.org
164
+ VideoObject, with chapter Clip key moments when insights are ready),
165
+ ``.sitemap_entry`` (a video-sitemap ``<url>`` entry) and
166
+ ``.html_fragment`` (server-renderable summary, key points, chapter links
167
+ and the full transcript). Every string is escaped for its context;
168
+ paste it as-is.
169
+ """
170
+ req = fill_from_dict(video_pb2.GetSeoMarkupRequest(), kwargs)
171
+ return self._t.unary(_SERVICE, "GetSeoMarkup", req, video_pb2.GetSeoMarkupResponse())
@@ -241,6 +241,7 @@ from transcodely.v1.job_pb2 import (
241
241
  OutputReportAudio,
242
242
  OutputReportColor,
243
243
  OutputReportContentAware,
244
+ OutputReportContentAwareProbe,
244
245
  OutputReportMismatch,
245
246
  OutputReportVerdict,
246
247
  OutputReportVideo,
@@ -350,10 +351,20 @@ from transcodely.v1.subtitles_pb2 import (
350
351
  BurnInStyle,
351
352
  ChapterPoint,
352
353
  ChapterResult,
354
+ InsightsHighlight,
355
+ InsightsOptions,
356
+ InsightsQuestion,
357
+ InsightsStatus,
358
+ InsightsTerm,
353
359
  SubtitleFormat,
354
360
  SubtitleOperation,
355
361
  SubtitleResult,
356
362
  SubtitleTrack,
363
+ TranscriptFormat,
364
+ TranscriptInsights,
365
+ TranscriptOptions,
366
+ TranscriptRendition,
367
+ TranscriptStyle,
357
368
  )
358
369
  from transcodely.v1.thumbnails_pb2 import (
359
370
  ThumbnailFormat,
@@ -393,6 +404,8 @@ from transcodely.v1.video_pb2 import (
393
404
  CreateUploadResponse,
394
405
  DailyUsage,
395
406
  DeleteVideoRequest,
407
+ GetSeoMarkupRequest,
408
+ GetSeoMarkupResponse,
396
409
  GetStatsRequest,
397
410
  GetStatsResponse,
398
411
  GetUploadPartUrlsRequest,
@@ -588,6 +601,8 @@ __all__ = [
588
601
  "GetPresetBySlugResponse",
589
602
  "GetPresetRequest",
590
603
  "GetPresetResponse",
604
+ "GetSeoMarkupRequest",
605
+ "GetSeoMarkupResponse",
591
606
  "GetSpendRequest",
592
607
  "GetSpendResponse",
593
608
  "GetStatsRequest",
@@ -620,6 +635,11 @@ __all__ = [
620
635
  "IngestRuleAction",
621
636
  "IngestRuleFilters",
622
637
  "InputMetadata",
638
+ "InsightsHighlight",
639
+ "InsightsOptions",
640
+ "InsightsQuestion",
641
+ "InsightsStatus",
642
+ "InsightsTerm",
623
643
  "Invoice",
624
644
  "InvoiceLineItem",
625
645
  "InvoiceLineType",
@@ -678,6 +698,7 @@ __all__ = [
678
698
  "OutputReportAudio",
679
699
  "OutputReportColor",
680
700
  "OutputReportContentAware",
701
+ "OutputReportContentAwareProbe",
681
702
  "OutputReportMismatch",
682
703
  "OutputReportVerdict",
683
704
  "OutputReportVideo",
@@ -732,6 +753,11 @@ __all__ = [
732
753
  "ThumbnailSpec",
733
754
  "ToneMapping",
734
755
  "TopVideo",
756
+ "TranscriptFormat",
757
+ "TranscriptInsights",
758
+ "TranscriptOptions",
759
+ "TranscriptRendition",
760
+ "TranscriptStyle",
735
761
  "TrustTier",
736
762
  "UpdateAppRequest",
737
763
  "UpdateAppResponse",
@@ -40,7 +40,7 @@ from transcodely.v1 import hdr_pb2 as transcodely_dot_v1_dot_hdr__pb2
40
40
  from transcodely.v1 import content_aware_pb2 as transcodely_dot_v1_dot_content__aware__pb2
41
41
 
42
42
 
43
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18transcodely/v1/job.proto\x12\x0etranscodely.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1btranscodely/v1/common.proto\x1a\x1atranscodely/v1/media.proto\x1a\x1ftranscodely/v1/codec_h264.proto\x1a\x1ftranscodely/v1/codec_h265.proto\x1a\x1etranscodely/v1/codec_vp9.proto\x1a\x1etranscodely/v1/codec_av1.proto\x1a\x1btranscodely/v1/origin.proto\x1a\x1etranscodely/v1/streaming.proto\x1a\x1ftranscodely/v1/thumbnails.proto\x1a\x1etranscodely/v1/subtitles.proto\x1a\x1etranscodely/v1/watermark.proto\x1a\x18transcodely/v1/drm.proto\x1a\x18transcodely/v1/hdr.proto\x1a\"transcodely/v1/content_aware.proto\"\xe9\x01\n\x10\x41udioTrackConfig\x12\x30\n\x08language\x18\x01 \x01(\tB\x14\xbaH\x11r\x0c\x32\n^[a-z]{3}$\xc8\x01\x01R\x08language\x12\"\n\x05label\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x18@H\x00R\x05label\x88\x01\x01\x12\x31\n\x0csource_track\x18\x03 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x18\x0f(\x00H\x01R\x0bsourceTrack\x88\x01\x01\x12\"\n\nis_default\x18\x04 \x01(\x08H\x02R\tisDefault\x88\x01\x01\x42\x08\n\x06_labelB\x0f\n\r_source_trackB\r\n\x0b_is_default\"\x94\x06\n\x0cVideoVariant\x12=\n\x05\x63odec\x18\x01 \x01(\x0e\x32\x1a.transcodely.v1.VideoCodecB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x01R\x05\x63odec\x12\x44\n\nresolution\x18\x02 \x01(\x0e\x32\x1a.transcodely.v1.ResolutionB\x08\xbaH\x05\x82\x01\x02\x10\x01R\nresolution\x12?\n\x07quality\x18\x03 \x01(\x0e\x32\x1b.transcodely.v1.QualityTierB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07quality\x12-\n\tframerate\x18\x04 \x01(\x05\x42\n\xbaH\x07\x1a\x05\x18\xf0\x01(\x00H\x00R\tframerate\x88\x01\x01\x12&\n\x05width\x18\x05 \x01(\x05\x42\x0b\xbaH\x08\x1a\x06\x18\x80<(\x80\x01H\x01R\x05width\x88\x01\x01\x12(\n\x06height\x18\x06 \x01(\x05\x42\x0b\xbaH\x08\x1a\x06\x18\xe0!(\x80\x01H\x02R\x06height\x88\x01\x01\x12*\n\x07\x62itrate\x18\x07 \x01(\x05\x42\x0b\xbaH\x08\x1a\x06\x18\x80\xd3\x0e(dH\x03R\x07\x62itrate\x88\x01\x01\x12\x34\n\x04h264\x18\n \x01(\x0b\x32\x1b.transcodely.v1.H264OptionsH\x04R\x04h264\x88\x01\x01\x12\x34\n\x04h265\x18\x0b \x01(\x0b\x32\x1b.transcodely.v1.H265OptionsH\x05R\x04h265\x88\x01\x01\x12\x31\n\x03vp9\x18\x0c \x01(\x0b\x32\x1a.transcodely.v1.VP9OptionsH\x06R\x03vp9\x88\x01\x01\x12\x31\n\x03\x61v1\x18\r \x01(\x0b\x32\x1a.transcodely.v1.AV1OptionsH\x07R\x03\x61v1\x88\x01\x01\x12\x30\n\x03hdr\x18\x0e \x01(\x0b\x32\x19.transcodely.v1.HDRConfigH\x08R\x03hdr\x88\x01\x01\x42\x0c\n\n_framerateB\x08\n\x06_widthB\t\n\x07_heightB\n\n\x08_bitrateB\x07\n\x05_h264B\x07\n\x05_h265B\x06\n\x04_vp9B\x06\n\x04_av1B\x06\n\x04_hdrR\x0ch264_optionsR\x0ch265_optionsR\x0bvp9_optionsR\x0b\x61v1_options\"\xba\x03\n\tHLSConfig\x12:\n\x08manifest\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x18@2\x10^[a-zA-Z0-9_-]+$H\x00R\x08manifest\x88\x01\x01\x12Q\n\x0esegment_format\x18\x02 \x01(\x0e\x32 .transcodely.v1.HLSSegmentFormatB\x08\xbaH\x05\x82\x01\x02\x10\x01R\rsegmentFormat\x12N\n\rplaylist_type\x18\x03 \x01(\x0e\x32\x1f.transcodely.v1.HLSPlaylistTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0cplaylistType\x12\xac\x01\n\x0fvariant_pattern\x18\x04 \x01(\tB~\xbaH{r\x18\x18\x80\x01\x32\x13^[a-zA-Z0-9_.{}-]+$\xba\x01^\n\x1fhls_config.variant_pattern_safe\x12%variant_pattern must not contain `..`\x1a\x14!this.contains(\'..\')H\x01R\x0evariantPattern\x88\x01\x01\x42\x0b\n\t_manifestB\x12\n\x10_variant_pattern\"U\n\nDASHConfig\x12:\n\x08manifest\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x18@2\x10^[a-zA-Z0-9_-]+$H\x00R\x08manifest\x88\x01\x01\x42\x0b\n\t_manifest\"\xd1\x01\n\rSegmentConfig\x12*\n\x08\x64uration\x18\x01 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x18\x1e(\x01H\x00R\x08\x64uration\x88\x01\x01\x12O\n\rgop_alignment\x18\x02 \x01(\x0e\x32 .transcodely.v1.GOPAlignmentModeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0cgopAlignment\x12)\n\x08gop_size\x18\x03 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x18\n(\x01H\x01R\x07gopSize\x88\x01\x01\x42\x0b\n\t_durationB\x0b\n\t_gop_size\"\xd5\x14\n\nOutputSpec\x12:\n\x04type\x18\x01 \x01(\x0e\x32\x1c.transcodely.v1.OutputFormatB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12<\n\x05video\x18\x02 \x03(\x0b\x32\x1c.transcodely.v1.VideoVariantB\x08\xbaH\x05\x92\x01\x02\x10\x14R\x05video\x12@\n\x05\x61udio\x18\x03 \x03(\x0b\x32 .transcodely.v1.AudioTrackConfigB\x08\xbaH\x05\x92\x01\x02\x10\x08R\x05\x61udio\x12\x30\n\x03hls\x18\x04 \x01(\x0b\x32\x19.transcodely.v1.HLSConfigH\x00R\x03hls\x88\x01\x01\x12\x33\n\x04\x64\x61sh\x18\x05 \x01(\x0b\x32\x1a.transcodely.v1.DASHConfigH\x01R\x04\x64\x61sh\x88\x01\x01\x12>\n\x08segments\x18\x06 \x01(\x0b\x32\x1d.transcodely.v1.SegmentConfigH\x02R\x08segments\x88\x01\x01\x12\xce\x01\n\rpath_template\x18\x07 \x01(\tB\xa3\x01\xbaH\x9f\x01r\x03\x18\x80\x04\xba\x01\x96\x01\n\x1eoutput_spec.path_template_safe\x12\x35path_template must not start with `/` or contain `..`\x1a=this == \'\' || (!this.startsWith(\'/\') && !this.contains(\'..\'))H\x03R\x0cpathTemplate\x88\x01\x01\x12\'\n\x06preset\x18\n \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\x80\x01H\x04R\x06preset\x88\x01\x01\x12P\n\x0fsubtitle_tracks\x18\x0b \x03(\x0b\x32\x1d.transcodely.v1.SubtitleTrackB\x08\xbaH\x05\x92\x01\x02\x10\x08R\x0esubtitleTracks\x12\x30\n\x03\x64rm\x18\x0c \x01(\x0b\x32\x19.transcodely.v1.DRMConfigH\x05R\x03\x64rm\x88\x01\x01\x12L\n\rcontent_aware\x18\r \x01(\x0b\x32\".transcodely.v1.ContentAwareConfigH\x06R\x0c\x63ontentAware\x88\x01\x01\x12<\n\rencoding_mode\x18\x0e \x01(\tB\x12\xbaH\x0fr\rR\x05\x66ixedR\x04\x61utoH\x07R\x0c\x65ncodingMode\x88\x01\x01\x12\x45\n\x17\x65\x66\x66\x65\x63tive_path_template\x18\x0f \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x04H\x08R\x15\x65\x66\x66\x65\x63tivePathTemplate\x88\x01\x01\x12(\n\rdisable_audio\x18\x10 \x01(\x08H\tR\x0c\x64isableAudio\x88\x01\x01\x12\x42\n\twatermark\x18\x11 \x01(\x0b\x32\x1f.transcodely.v1.WatermarkConfigH\nR\twatermark\x88\x01\x01:\xea\n\xbaH\xe6\n\x1a\xd7\x02\n\x1coutput_spec.preset_or_inline\x12\x8e\x01\x65ither preset must be specified, or type with video[] array must be provided (or a captions-only output with extract/generate subtitle tracks)\x1a\xa5\x01has(this.preset) || (this.type != 0 && size(this.video) > 0) || (size(this.subtitle_tracks) > 0 && this.subtitle_tracks.all(t, t.operation == 4 || t.operation == 5))\x1a\xdf\x01\n\x1aoutput_spec.video_required\x12,video[] array must have at least one variant\x1a\x92\x01has(this.preset) || size(this.video) >= 1 || (size(this.subtitle_tracks) > 0 && this.subtitle_tracks.all(t, t.operation == 4 || t.operation == 5))\x1a\xb2\x01\n#output_spec.audio_require_streaming\x12>audio is only valid for HLS, DASH, or ADAPTIVE streaming types\x1aKsize(this.audio) == 0 || this.type == 5 || this.type == 6 || this.type == 7\x1a\x85\x01\n\x1boutput_spec.hls_config_type\x12\x32hls config is only valid for HLS or ADAPTIVE types\x1a\x32!has(this.hls) || this.type == 5 || this.type == 7\x1a\x89\x01\n\x1coutput_spec.dash_config_type\x12\x34\x64\x61sh config is only valid for DASH or ADAPTIVE types\x1a\x33!has(this.dash) || this.type == 6 || this.type == 7\x1a\xad\x01\n output_spec.segments_config_type\x12>segments config is only valid for HLS, DASH, or ADAPTIVE types\x1aI!has(this.segments) || this.type == 5 || this.type == 6 || this.type == 7\x1a\xae\x01\n#output_spec.disable_audio_no_tracks\x12=disable_audio cannot be combined with explicit audio[] tracks\x1aH!has(this.disable_audio) || !this.disable_audio || size(this.audio) == 0B\x06\n\x04_hlsB\x07\n\x05_dashB\x0b\n\t_segmentsB\x10\n\x0e_path_templateB\t\n\x07_presetB\x06\n\x04_drmB\x10\n\x0e_content_awareB\x10\n\x0e_encoding_modeB\x1a\n\x18_effective_path_templateB\x10\n\x0e_disable_audioB\x0c\n\n_watermarkJ\x04\x08\x08\x10\tJ\x04\x08\t\x10\nR\tstreaming\"\xc7\x03\n\x0fPricingSnapshot\x12\x1d\n\nbase_price\x18\x01 \x01(\x01R\tbasePrice\x12)\n\x10\x63odec_multiplier\x18\x02 \x01(\x01R\x0f\x63odecMultiplier\x12\x33\n\x15resolution_multiplier\x18\x03 \x01(\x01R\x14resolutionMultiplier\x12\x31\n\x14\x66ramerate_multiplier\x18\x04 \x01(\x01R\x13\x66ramerateMultiplier\x12-\n\x12quality_multiplier\x18\x05 \x01(\x01R\x11qualityMultiplier\x12\x43\n\x0fresolution_tier\x18\x06 \x01(\x0e\x32\x1a.transcodely.v1.ResolutionR\x0eresolutionTier\x12)\n\x10\x61\x63tual_framerate\x18\x07 \x01(\x01R\x0f\x61\x63tualFramerate\x12$\n\x0bpixel_count\x18\x08 \x01(\x03H\x00R\npixelCount\x88\x01\x01\x12-\n\x12\x66\x65\x61ture_multiplier\x18\t \x01(\x01R\x11\x66\x65\x61tureMultiplierB\x0e\n\x0c_pixel_count\"\x9d\x07\n\x16VariantPricingSnapshot\x12\x14\n\x05index\x18\x01 \x01(\x05R\x05index\x12\x30\n\x05\x63odec\x18\x02 \x01(\x0e\x32\x1a.transcodely.v1.VideoCodecR\x05\x63odec\x12:\n\nresolution\x18\x03 \x01(\x0e\x32\x1a.transcodely.v1.ResolutionR\nresolution\x12\x1c\n\tframerate\x18\x04 \x01(\x05R\tframerate\x12\x35\n\x07quality\x18\x05 \x01(\x0e\x32\x1b.transcodely.v1.QualityTierR\x07quality\x12\x19\n\x05width\x18\x06 \x01(\x05H\x00R\x05width\x88\x01\x01\x12\x1b\n\x06height\x18\x07 \x01(\x05H\x01R\x06height\x88\x01\x01\x12\x1d\n\nbase_price\x18\n \x01(\x01R\tbasePrice\x12)\n\x10\x63odec_multiplier\x18\x0b \x01(\x01R\x0f\x63odecMultiplier\x12\x33\n\x15resolution_multiplier\x18\x0c \x01(\x01R\x14resolutionMultiplier\x12\x31\n\x14\x66ramerate_multiplier\x18\r \x01(\x01R\x13\x66ramerateMultiplier\x12-\n\x12quality_multiplier\x18\x0e \x01(\x01R\x11qualityMultiplier\x12\x43\n\x0fresolution_tier\x18\x0f \x01(\x0e\x32\x1a.transcodely.v1.ResolutionR\x0eresolutionTier\x12)\n\x10\x61\x63tual_framerate\x18\x10 \x01(\x01R\x0f\x61\x63tualFramerate\x12$\n\x0bpixel_count\x18\x11 \x01(\x03H\x02R\npixelCount\x88\x01\x01\x12*\n\x0e\x65stimated_cost\x18\x12 \x01(\x01H\x03R\restimatedCost\x88\x01\x01\x12$\n\x0b\x61\x63tual_cost\x18\x13 \x01(\x01H\x04R\nactualCost\x88\x01\x01\x12\x16\n\x06status\x18\x14 \x01(\tR\x06status\x12\x1a\n\x08progress\x18\x15 \x01(\x05R\x08progress\x12-\n\x12\x66\x65\x61ture_multiplier\x18\x16 \x01(\x01R\x11\x66\x65\x61tureMultiplierB\x08\n\x06_widthB\t\n\x07_heightB\x0e\n\x0c_pixel_countB\x11\n\x0f_estimated_costB\x0e\n\x0c_actual_cost\"\xb4\x0b\n\tJobOutput\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12.\n\x04spec\x18\x02 \x01(\x0b\x32\x1a.transcodely.v1.OutputSpecR\x04spec\x12\x34\n\x06status\x18\x03 \x01(\x0e\x32\x1c.transcodely.v1.OutputStatusR\x06status\x12\x1a\n\x08progress\x18\x04 \x01(\x05R\x08progress\x12\"\n\noutput_url\x18\x05 \x01(\tH\x00R\toutputUrl\x88\x01\x01\x12/\n\x11output_size_bytes\x18\x06 \x01(\x03H\x01R\x0foutputSizeBytes\x88\x01\x01\x12.\n\x10\x64uration_seconds\x18\x07 \x01(\x03H\x02R\x0f\x64urationSeconds\x88\x01\x01\x12\x39\n\x07pricing\x18\x08 \x01(\x0b\x32\x1f.transcodely.v1.PricingSnapshotR\x07pricing\x12\x41\n\x1a\x65stimated_duration_seconds\x18\t \x01(\x03H\x03R\x18\x65stimatedDurationSeconds\x88\x01\x01\x12*\n\x0e\x65stimated_cost\x18\n \x01(\x01H\x04R\restimatedCost\x88\x01\x01\x12$\n\x0b\x61\x63tual_cost\x18\x0b \x01(\x01H\x05R\nactualCost\x88\x01\x01\x12\"\n\nerror_code\x18\x0c \x01(\tH\x06R\terrorCode\x88\x01\x01\x12(\n\rerror_message\x18\r \x01(\tH\x07R\x0c\x65rrorMessage\x88\x01\x01\x12>\n\nstarted_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x08R\tstartedAt\x88\x01\x01\x12\x42\n\x0c\x63ompleted_at\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.TimestampH\tR\x0b\x63ompletedAt\x88\x01\x01\x12 \n\tpreset_id\x18\x10 \x01(\tH\nR\x08presetId\x88\x01\x01\x12$\n\x0bpreset_slug\x18\x11 \x01(\tH\x0bR\npresetSlug\x88\x01\x01\x12O\n\x0fvariant_pricing\x18\x14 \x03(\x0b\x32&.transcodely.v1.VariantPricingSnapshotR\x0evariantPricing\x12\x16\n\x06object\x18\x15 \x01(\tR\x06object\x12\x19\n\x05width\x18\x16 \x01(\x05H\x0cR\x05width\x88\x01\x01\x12\x1b\n\x06height\x18\x17 \x01(\x05H\rR\x06height\x88\x01\x01\x12\x35\n\x14\x61verage_bitrate_kbps\x18\x18 \x01(\x05H\x0eR\x12\x61verageBitrateKbps\x88\x01\x01\x12L\n\x0fvariant_results\x18\x19 \x03(\x0b\x32#.transcodely.v1.OutputVariantResultR\x0evariantResults\x12\"\n\nsigned_url\x18\x1a \x01(\tH\x0fR\tsignedUrl\x88\x01\x01\x12\x39\n\x06report\x18\x1b \x01(\x0b\x32\x1c.transcodely.v1.OutputReportH\x10R\x06report\x88\x01\x01\x42\r\n\x0b_output_urlB\x14\n\x12_output_size_bytesB\x13\n\x11_duration_secondsB\x1d\n\x1b_estimated_duration_secondsB\x11\n\x0f_estimated_costB\x0e\n\x0c_actual_costB\r\n\x0b_error_codeB\x10\n\x0e_error_messageB\r\n\x0b_started_atB\x0f\n\r_completed_atB\x0c\n\n_preset_idB\x0e\n\x0c_preset_slugB\x08\n\x06_widthB\t\n\x07_heightB\x17\n\x15_average_bitrate_kbpsB\r\n\x0b_signed_urlB\t\n\x07_report\"\xd2\x03\n\x0cOutputReport\x12\x1c\n\tcontainer\x18\x01 \x01(\tR\tcontainer\x12<\n\x05video\x18\x02 \x01(\x0b\x32!.transcodely.v1.OutputReportVideoH\x00R\x05video\x88\x01\x01\x12\x37\n\x05\x61udio\x18\x03 \x03(\x0b\x32!.transcodely.v1.OutputReportAudioR\x05\x61udio\x12.\n\x10\x64uration_seconds\x18\x04 \x01(\x01H\x01R\x0f\x64urationSeconds\x88\x01\x01\x12=\n\x07verdict\x18\x05 \x01(\x0b\x32#.transcodely.v1.OutputReportVerdictR\x07verdict\x12\x39\n\nchecked_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcheckedAt\x12R\n\rcontent_aware\x18\x07 \x01(\x0b\x32(.transcodely.v1.OutputReportContentAwareH\x02R\x0c\x63ontentAware\x88\x01\x01\x42\x08\n\x06_videoB\x13\n\x11_duration_secondsB\x10\n\x0e_content_aware\"\xd3\x01\n\x18OutputReportContentAware\x12\x12\n\x04mode\x18\x01 \x01(\tR\x04mode\x12$\n\x0bvmaf_target\x18\x02 \x01(\x01H\x00R\nvmafTarget\x88\x01\x01\x12(\n\rvmaf_achieved\x18\x03 \x01(\x01H\x01R\x0cvmafAchieved\x88\x01\x01\x12\"\n\ncrf_chosen\x18\x04 \x01(\x05H\x02R\tcrfChosen\x88\x01\x01\x42\x0e\n\x0c_vmaf_targetB\x10\n\x0e_vmaf_achievedB\r\n\x0b_crf_chosen\"\xa4\x03\n\x11OutputReportVideo\x12\x14\n\x05\x63odec\x18\x01 \x01(\tR\x05\x63odec\x12\x1d\n\x07profile\x18\x02 \x01(\tH\x00R\x07profile\x88\x01\x01\x12\x19\n\x05level\x18\x03 \x01(\tH\x01R\x05level\x88\x01\x01\x12\x1c\n\x07pix_fmt\x18\x04 \x01(\tH\x02R\x06pixFmt\x88\x01\x01\x12\x14\n\x05width\x18\x05 \x01(\x05R\x05width\x12\x16\n\x06height\x18\x06 \x01(\x05R\x06height\x12\"\n\nframe_rate\x18\x07 \x01(\x01H\x03R\tframeRate\x88\x01\x01\x12&\n\x0c\x62itrate_kbps\x18\x08 \x01(\x05H\x04R\x0b\x62itrateKbps\x88\x01\x01\x12<\n\x05\x63olor\x18\t \x01(\x0b\x32!.transcodely.v1.OutputReportColorH\x05R\x05\x63olor\x88\x01\x01\x12\x1d\n\nhdr_format\x18\n \x01(\tR\thdrFormatB\n\n\x08_profileB\x08\n\x06_levelB\n\n\x08_pix_fmtB\r\n\x0b_frame_rateB\x0f\n\r_bitrate_kbpsB\x08\n\x06_color\"\xbf\x01\n\x11OutputReportColor\x12!\n\tprimaries\x18\x01 \x01(\tH\x00R\tprimaries\x88\x01\x01\x12\x1f\n\x08transfer\x18\x02 \x01(\tH\x01R\x08transfer\x88\x01\x01\x12\x1b\n\x06matrix\x18\x03 \x01(\tH\x02R\x06matrix\x88\x01\x01\x12\x19\n\x05range\x18\x04 \x01(\tH\x03R\x05range\x88\x01\x01\x42\x0c\n\n_primariesB\x0b\n\t_transferB\t\n\x07_matrixB\x08\n\x06_range\"\xfc\x01\n\x11OutputReportAudio\x12\x14\n\x05\x63odec\x18\x01 \x01(\tR\x05\x63odec\x12\x1f\n\x08\x63hannels\x18\x02 \x01(\x05H\x00R\x08\x63hannels\x88\x01\x01\x12)\n\x0esample_rate_hz\x18\x03 \x01(\x05H\x01R\x0csampleRateHz\x88\x01\x01\x12&\n\x0c\x62itrate_kbps\x18\x04 \x01(\x05H\x02R\x0b\x62itrateKbps\x88\x01\x01\x12\x1f\n\x08language\x18\x05 \x01(\tH\x03R\x08language\x88\x01\x01\x42\x0b\n\t_channelsB\x11\n\x0f_sample_rate_hzB\x0f\n\r_bitrate_kbpsB\x0b\n\t_language\"\x84\x01\n\x13OutputReportVerdict\x12\'\n\x0fmatches_request\x18\x01 \x01(\x08R\x0ematchesRequest\x12\x44\n\nmismatches\x18\x02 \x03(\x0b\x32$.transcodely.v1.OutputReportMismatchR\nmismatches\"`\n\x14OutputReportMismatch\x12\x14\n\x05\x66ield\x18\x01 \x01(\tR\x05\x66ield\x12\x1a\n\x08\x65xpected\x18\x02 \x01(\tR\x08\x65xpected\x12\x16\n\x06\x61\x63tual\x18\x03 \x01(\tR\x06\x61\x63tual\"\xdc\x01\n\x13OutputVariantResult\x12\x14\n\x05index\x18\x01 \x01(\x05R\x05index\x12\x14\n\x05width\x18\x02 \x01(\x05R\x05width\x12\x16\n\x06height\x18\x03 \x01(\x05R\x06height\x12\x35\n\x14\x61verage_bitrate_kbps\x18\x04 \x01(\x05H\x00R\x12\x61verageBitrateKbps\x88\x01\x01\x12\"\n\nsize_bytes\x18\x05 \x01(\x03H\x01R\tsizeBytes\x88\x01\x01\x42\x17\n\x15_average_bitrate_kbpsB\r\n\x0b_size_bytes\"\x9c\x0c\n\x0f\x45xecutionTiming\x12$\n\x0binstance_id\x18\x01 \x01(\tH\x00R\ninstanceId\x88\x01\x01\x12(\n\rinstance_type\x18\x02 \x01(\tH\x01R\x0cinstanceType\x88\x01\x01\x12\x30\n\x11instance_location\x18\x03 \x01(\tH\x02R\x10instanceLocation\x88\x01\x01\x12\"\n\nvcpu_count\x18\x04 \x01(\x05H\x03R\tvcpuCount\x88\x01\x01\x12 \n\tmemory_mb\x18\x05 \x01(\x05H\x04R\x08memoryMb\x88\x01\x01\x12-\n\x10\x62oot_duration_ms\x18\n \x01(\x03H\x05R\x0e\x62ootDurationMs\x88\x01\x01\x12\x35\n\x14\x64ownload_duration_ms\x18\x0b \x01(\x03H\x06R\x12\x64ownloadDurationMs\x88\x01\x01\x12/\n\x11probe_duration_ms\x18\x0c \x01(\x03H\x07R\x0fprobeDurationMs\x88\x01\x01\x12\x31\n\x12\x65ncode_duration_ms\x18\r \x01(\x03H\x08R\x10\x65ncodeDurationMs\x88\x01\x01\x12\x31\n\x12upload_duration_ms\x18\x0e \x01(\x03H\tR\x10uploadDurationMs\x88\x01\x01\x12\x37\n\x15packaging_duration_ms\x18\x0f \x01(\x03H\nR\x13packagingDurationMs\x88\x01\x01\x12/\n\x11total_duration_ms\x18\x10 \x01(\x03H\x0bR\x0ftotalDurationMs\x88\x01\x01\x12*\n\x0e\x64ownload_bytes\x18\x14 \x01(\x03H\x0cR\rdownloadBytes\x88\x01\x01\x12\x33\n\x13\x64ownload_speed_mbps\x18\x15 \x01(\x01H\rR\x11\x64ownloadSpeedMbps\x88\x01\x01\x12&\n\x0cupload_bytes\x18\x16 \x01(\x03H\x0eR\x0buploadBytes\x88\x01\x01\x12/\n\x11upload_speed_mbps\x18\x17 \x01(\x01H\x0fR\x0fuploadSpeedMbps\x88\x01\x01\x12+\n\x0f\x61vg_cpu_percent\x18\x1e \x01(\x01H\x10R\ravgCpuPercent\x88\x01\x01\x12-\n\x10peak_cpu_percent\x18\x1f \x01(\x01H\x11R\x0epeakCpuPercent\x88\x01\x01\x12\'\n\ravg_memory_mb\x18 \x01(\x05H\x12R\x0b\x61vgMemoryMb\x88\x01\x01\x12)\n\x0epeak_memory_mb\x18! \x01(\x05H\x13R\x0cpeakMemoryMb\x88\x01\x01\x12$\n\x0b\x63hunk_count\x18( \x01(\x05H\x14R\nchunkCount\x88\x01\x01\x12*\n\x0e\x63hunk_strategy\x18) \x01(\tH\x15R\rchunkStrategy\x88\x01\x01\x12 \n\texit_code\x18\x32 \x01(\x05H\x16R\x08\x65xitCode\x88\x01\x01\x12$\n\x0b\x65xit_reason\x18\x33 \x01(\tH\x17R\nexitReason\x88\x01\x01\x42\x0e\n\x0c_instance_idB\x10\n\x0e_instance_typeB\x14\n\x12_instance_locationB\r\n\x0b_vcpu_countB\x0c\n\n_memory_mbB\x13\n\x11_boot_duration_msB\x17\n\x15_download_duration_msB\x14\n\x12_probe_duration_msB\x15\n\x13_encode_duration_msB\x15\n\x13_upload_duration_msB\x18\n\x16_packaging_duration_msB\x14\n\x12_total_duration_msB\x11\n\x0f_download_bytesB\x16\n\x14_download_speed_mbpsB\x0f\n\r_upload_bytesB\x14\n\x12_upload_speed_mbpsB\x12\n\x10_avg_cpu_percentB\x13\n\x11_peak_cpu_percentB\x10\n\x0e_avg_memory_mbB\x11\n\x0f_peak_memory_mbB\x0e\n\x0c_chunk_countB\x11\n\x0f_chunk_strategyB\x0c\n\n_exit_codeB\x0e\n\x0c_exit_reason\"\x98\x12\n\x03Job\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06\x61pp_id\x18\x1d \x01(\tR\x05\x61ppId\x12\x1b\n\tinput_url\x18\x02 \x01(\tR\x08inputUrl\x12\x41\n\x0cinput_origin\x18\x16 \x01(\x0b\x32\x19.transcodely.v1.OriginRefH\x00R\x0binputOrigin\x88\x01\x01\x12\x43\n\routput_origin\x18\x17 \x01(\x0b\x32\x19.transcodely.v1.OriginRefH\x01R\x0coutputOrigin\x88\x01\x01\x12\x31\n\x06status\x18\x03 \x01(\x0e\x32\x19.transcodely.v1.JobStatusR\x06status\x12\x1a\n\x08progress\x18\x04 \x01(\x05R\x08progress\x12\x37\n\x08priority\x18\x05 \x01(\x0e\x32\x1b.transcodely.v1.JobPriorityR\x08priority\x12I\n\x0einput_metadata\x18\x06 \x01(\x0b\x32\x1d.transcodely.v1.InputMetadataH\x02R\rinputMetadata\x88\x01\x01\x12\x33\n\x07outputs\x18\x07 \x03(\x0b\x32\x19.transcodely.v1.JobOutputR\x07outputs\x12\x35\n\x14total_estimated_cost\x18\x08 \x01(\x01H\x03R\x12totalEstimatedCost\x88\x01\x01\x12/\n\x11total_actual_cost\x18\t \x01(\x01H\x04R\x0ftotalActualCost\x88\x01\x01\x12\"\n\nerror_code\x18\n \x01(\tH\x05R\terrorCode\x88\x01\x01\x12(\n\rerror_message\x18\x0b \x01(\tH\x06R\x0c\x65rrorMessage\x88\x01\x01\x12$\n\x0bwebhook_url\x18\x0c \x01(\tH\x07R\nwebhookUrl\x88\x01\x01\x12=\n\x08metadata\x18\r \x03(\x0b\x32!.transcodely.v1.Job.MetadataEntryR\x08metadata\x12\x39\n\ncreated_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12<\n\tprobed_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x08R\x08probedAt\x88\x01\x01\x12>\n\nstarted_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\tR\tstartedAt\x88\x01\x01\x12\x42\n\x0c\x63ompleted_at\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\nR\x0b\x63ompletedAt\x88\x01\x01\x12#\n\rdelayed_start\x18\x13 \x01(\x08R\x0c\x64\x65layedStart\x12\x42\n\x0c\x63onfirmed_at\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x0bR\x0b\x63onfirmedAt\x88\x01\x01\x12\x1a\n\x08\x63urrency\x18\x15 \x01(\tR\x08\x63urrency\x12=\n\texecution\x18\x18 \x01(\x0b\x32\x1f.transcodely.v1.ExecutionTimingR\texecution\x12=\n\nthumbnails\x18\x19 \x03(\x0b\x32\x1d.transcodely.v1.ThumbnailSpecR\nthumbnails\x12L\n\x11thumbnail_results\x18\x1c \x03(\x0b\x32\x1f.transcodely.v1.ThumbnailResultR\x10thumbnailResults\x12I\n\x10subtitle_results\x18 \x03(\x0b\x32\x1e.transcodely.v1.SubtitleResultR\x0fsubtitleResults\x12\x35\n\x14output_path_template\x18\x1a \x01(\tH\x0cR\x12outputPathTemplate\x88\x01\x01\x12\x16\n\x06object\x18\x1b \x01(\tR\x06object\x12\x35\n\x12minimum_charge_eur\x18\x1e \x01(\x01\x42\x02\x18\x01H\rR\x10minimumChargeEur\x88\x01\x01\x12\x38\n\x16minimum_charge_applied\x18\x1f \x01(\x08\x42\x02\x18\x01R\x14minimumChargeApplied\x12*\n\x04\x66\x65\x65s\x18! \x03(\x0b\x32\x16.transcodely.v1.JobFeeR\x04\x66\x65\x65s\x12$\n\x0einput_video_id\x18\" \x01(\tR\x0cinputVideoId\x12\x46\n\x0f\x63hapter_results\x18# \x03(\x0b\x32\x1d.transcodely.v1.ChapterResultR\x0e\x63hapterResults\x12\x33\n\x04\x63lip\x18$ \x01(\x0b\x32\x1a.transcodely.v1.ClipConfigH\x0eR\x04\x63lip\x88\x01\x01\x12\x1e\n\x08video_id\x18% \x01(\tH\x0fR\x07videoId\x88\x01\x01\x12G\n\x0e\x63ost_breakdown\x18& \x01(\x0b\x32 .transcodely.v1.JobCostBreakdownR\rcostBreakdown\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0f\n\r_input_originB\x10\n\x0e_output_originB\x11\n\x0f_input_metadataB\x17\n\x15_total_estimated_costB\x14\n\x12_total_actual_costB\r\n\x0b_error_codeB\x10\n\x0e_error_messageB\x0e\n\x0c_webhook_urlB\x0c\n\n_probed_atB\r\n\x0b_started_atB\x0f\n\r_completed_atB\x0f\n\r_confirmed_atB\x17\n\x15_output_path_templateB\x15\n\x13_minimum_charge_eurB\x07\n\x05_clipB\x0b\n\t_video_id\"\xcd\x01\n\x06JobFee\x12\x19\n\x08\x66\x65\x65_type\x18\x01 \x01(\tR\x07\x66\x65\x65Type\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x12\n\x04unit\x18\x03 \x01(\tR\x04unit\x12\x1a\n\x08quantity\x18\x04 \x01(\x01R\x08quantity\x12\x12\n\x04rate\x18\x05 \x01(\x01R\x04rate\x12\x16\n\x06\x61mount\x18\x06 \x01(\x01R\x06\x61mount\x12\x1a\n\x08\x63urrency\x18\x07 \x01(\tR\x08\x63urrency\x12\x0e\n\x02id\x18\x08 \x01(\tR\x02id\"\x9e\x02\n\x0bJobCostLine\x12\x33\n\x04type\x18\x01 \x01(\x0e\x32\x1f.transcodely.v1.JobCostLineTypeR\x04type\x12!\n\x0creference_id\x18\x02 \x01(\tR\x0breferenceId\x12 \n\x0b\x64\x65scription\x18\x03 \x01(\tR\x0b\x64\x65scription\x12\x35\n\x14\x65stimated_amount_eur\x18\x04 \x01(\x01H\x00R\x12\x65stimatedAmountEur\x88\x01\x01\x12/\n\x11\x61\x63tual_amount_eur\x18\x05 \x01(\x01H\x01R\x0f\x61\x63tualAmountEur\x88\x01\x01\x42\x17\n\x15_estimated_amount_eurB\x14\n\x12_actual_amount_eur\"\xdc\x01\n\x10JobCostBreakdown\x12\x31\n\x05lines\x18\x01 \x03(\x0b\x32\x1b.transcodely.v1.JobCostLineR\x05lines\x12\x35\n\x14total_estimated_cost\x18\x02 \x01(\x01H\x00R\x12totalEstimatedCost\x88\x01\x01\x12/\n\x11total_actual_cost\x18\x03 \x01(\x01H\x01R\x0ftotalActualCost\x88\x01\x01\x42\x17\n\x15_total_estimated_costB\x14\n\x12_total_actual_cost\"\xdf\x03\n\nClipConfig\x12\x89\x01\n\rstart_seconds\x18\x01 \x01(\x01\x42\x64\xbaHa\x12\x0b)\x00\x00\x00\x00\x00\x00\x00\x00@\x01\xba\x01Q\n\x13\x63lip.start_storable\x12&start_seconds must be at most 10000000\x1a\x12this <= 10000000.0R\x0cstartSeconds\x12\x81\x01\n\x0b\x65nd_seconds\x18\x02 \x01(\x01\x42`\xbaH]\x12\x0b)\x00\x00\x00\x00\x00\x00\x00\x00@\x01\xba\x01M\n\x11\x63lip.end_storable\x12$end_seconds must be at most 10000000\x1a\x12this <= 10000000.0R\nendSeconds:\xc0\x01\xbaH\xbc\x01\x1a\xb9\x01\n\x14\x63lip.end_after_start\x12Vend_seconds must be at least 0.001s greater than start_seconds (or 0 for end of input)\x1aIthis.end_seconds == 0.0 || this.end_seconds - this.start_seconds >= 0.001\"\xd2\x10\n\x10\x43reateJobRequest\x12?\n\tinput_url\x18\x01 \x01(\tB\"\xbaH\x1fr\x1a\x18\x80\x10\x32\x15^(gs|s3|https?)://.*$\xd8\x01\x01R\x08inputUrl\x12H\n\x0finput_origin_id\x18\t \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^ori_[a-zA-Z0-9_-]+$H\x00R\rinputOriginId\x88\x01\x01\x12,\n\ninput_path\x18\n \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x10H\x01R\tinputPath\x88\x01\x01\x12H\n\x0einput_video_id\x18\r \x01(\tB\x1d\xbaH\x1ar\x18\x18 2\x14^vid_[a-zA-Z0-9_-]+$H\x02R\x0cinputVideoId\x88\x01\x01\x12J\n\x10output_origin_id\x18\x0b \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^ori_[a-zA-Z0-9_-]+$H\x03R\x0eoutputOriginId\x88\x01\x01\x12@\n\x07outputs\x18\x02 \x03(\x0b\x32\x1a.transcodely.v1.OutputSpecB\n\xbaH\x07\x92\x01\x04\x08\x01\x10\nR\x07outputs\x12\x41\n\x08priority\x18\x03 \x01(\x0e\x32\x1b.transcodely.v1.JobPriorityB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08priority\x12\x31\n\x0bwebhook_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\x18\x80\x10\x88\x01\x01H\x04R\nwebhookUrl\x88\x01\x01\x12\x36\n\x0fidempotency_key\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x05R\x0eidempotencyKey\x88\x01\x01\x12\x63\n\x08metadata\x18\x06 \x03(\x0b\x32..transcodely.v1.CreateJobRequest.MetadataEntryB\x17\xbaH\x14\x9a\x01\x11\x10\x14\"\x06r\x04\x10\x01\x18@*\x05r\x03\x18\x80\x08R\x08metadata\x12#\n\rdelayed_start\x18\x07 \x01(\x08R\x0c\x64\x65layedStart\x12G\n\nthumbnails\x18\x08 \x03(\x0b\x32\x1d.transcodely.v1.ThumbnailSpecB\x08\xbaH\x05\x92\x01\x02\x10\x05R\nthumbnails\x12\xe8\x01\n\x14output_path_template\x18\x0c \x01(\tB\xb0\x01\xbaH\xac\x01r\x03\x18\x80\x04\xba\x01\xa3\x01\n$create_job.output_path_template_safe\x12<output_path_template must not start with `/` or contain `..`\x1a=this == \'\' || (!this.startsWith(\'/\') && !this.contains(\'..\'))H\x06R\x12outputPathTemplate\x88\x01\x01\x12\x1d\n\x07managed\x18\x14 \x01(\x08H\x07R\x07managed\x88\x01\x01\x12\x37\n\x06\x61pp_id\x18\x15 \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^app_[a-zA-Z0-9_-]+$H\x08R\x05\x61ppId\x88\x01\x01\x12\x33\n\x04\x63lip\x18\x16 \x01(\x0b\x32\x1a.transcodely.v1.ClipConfigH\tR\x04\x63lip\x88\x01\x01\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01:\xce\x05\xbaH\xca\x05\x1a\xf0\x02\n\x17\x63reate_job.input_source\x12Yexactly one input source must be specified: input_url, input_origin_id, or input_video_id\x1a\xf9\x01(this.input_url != \'\' && !has(this.input_origin_id) && !has(this.input_video_id)) || (this.input_url == \'\' && has(this.input_origin_id) && !has(this.input_video_id)) || (this.input_url == \'\' && !has(this.input_origin_id) && has(this.input_video_id))\x1a\x98\x01\n%create_job.input_path_requires_origin\x12;input_path can only be specified when using input_origin_id\x1a\x32!has(this.input_path) || has(this.input_origin_id)\x1a\xb9\x01\n!create_job.output_origin_required\x12\x35output_origin_id is required when managed is not true\x1a]has(this.output_origin_id) || (has(this.managed) && this.managed) || has(this.input_video_id)B\x12\n\x10_input_origin_idB\r\n\x0b_input_pathB\x11\n\x0f_input_video_idB\x13\n\x11_output_origin_idB\x0e\n\x0c_webhook_urlB\x12\n\x10_idempotency_keyB\x17\n\x15_output_path_templateB\n\n\x08_managedB\t\n\x07_app_idB\x07\n\x05_clip\"g\n\x11\x43reateJobResponse\x12%\n\x03job\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.JobR\x03job\x12\x1e\n\x08video_id\x18\x05 \x01(\tH\x00R\x07videoId\x88\x01\x01\x42\x0b\n\t_video_id\"?\n\rGetJobRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^job_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\"7\n\x0eGetJobResponse\x12%\n\x03job\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.JobR\x03job\"\xfb\x04\n\x0fListJobsRequest\x12\x36\n\x06status\x18\x01 \x01(\x0e\x32\x19.transcodely.v1.JobStatusH\x00R\x06status\x88\x01\x01\x12\x41\n\npagination\x18\x02 \x01(\x0b\x32!.transcodely.v1.PaginationRequestR\npagination\x12\x37\n\x06\x61pp_id\x18\x03 \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^app_[a-zA-Z0-9_-]+$H\x01R\x05\x61ppId\x88\x01\x01\x12\x44\n\rcreated_after\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02R\x0c\x63reatedAfter\x88\x01\x01\x12\x46\n\x0e\x63reated_before\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\rcreatedBefore\x88\x01\x01\x12J\n\x08statuses\x18\x06 \x03(\x0e\x32\x19.transcodely.v1.JobStatusB\x13\xbaH\x10\x92\x01\r\x10\x08\x18\x01\"\x07\x82\x01\x04\x10\x01 \x00R\x08statuses\x12\x62\n\x08metadata\x18\x07 \x03(\x0b\x32-.transcodely.v1.ListJobsRequest.MetadataEntryB\x17\xbaH\x14\x9a\x01\x11\x10\n\"\x06r\x04\x10\x01\x18@*\x05r\x03\x18\x80\x08R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\t\n\x07_statusB\t\n\x07_app_idB\x10\n\x0e_created_afterB\x11\n\x0f_created_before\"\x7f\n\x10ListJobsResponse\x12\'\n\x04jobs\x18\x01 \x03(\x0b\x32\x13.transcodely.v1.JobR\x04jobs\x12\x42\n\npagination\x18\x02 \x01(\x0b\x32\".transcodely.v1.PaginationResponseR\npagination\"B\n\x10\x43\x61ncelJobRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^job_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\":\n\x11\x43\x61ncelJobResponse\x12%\n\x03job\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.JobR\x03job\"C\n\x11\x43onfirmJobRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^job_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\";\n\x12\x43onfirmJobResponse\x12%\n\x03job\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.JobR\x03job\"A\n\x0fWatchJobRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^job_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\"\xac\x01\n\x10WatchJobResponse\x12%\n\x03job\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.JobR\x03job\x12\x34\n\x05\x65vent\x18\x02 \x01(\x0e\x32\x1e.transcodely.v1.WatchEventTypeR\x05\x65vent\x12;\n\x0bserver_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nserverTime*\x90\x02\n\tJobStatus\x12\x1a\n\x16JOB_STATUS_UNSPECIFIED\x10\x00\x12\x16\n\x12JOB_STATUS_PENDING\x10\x01\x12\x16\n\x12JOB_STATUS_PROBING\x10\x02\x12\x19\n\x15JOB_STATUS_PROCESSING\x10\x03\x12\x18\n\x14JOB_STATUS_COMPLETED\x10\x04\x12\x15\n\x11JOB_STATUS_FAILED\x10\x05\x12\x17\n\x13JOB_STATUS_CANCELED\x10\x06\x12\x16\n\x12JOB_STATUS_PARTIAL\x10\x07\x12$\n JOB_STATUS_AWAITING_CONFIRMATION\x10\x08*\x14JOB_STATUS_CANCELLED*\xd2\x01\n\x0cOutputStatus\x12\x1d\n\x19OUTPUT_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15OUTPUT_STATUS_PENDING\x10\x01\x12\x1c\n\x18OUTPUT_STATUS_PROCESSING\x10\x02\x12\x1b\n\x17OUTPUT_STATUS_COMPLETED\x10\x03\x12\x18\n\x14OUTPUT_STATUS_FAILED\x10\x04\x12\x1a\n\x16OUTPUT_STATUS_CANCELED\x10\x05*\x17OUTPUT_STATUS_CANCELLED*z\n\x0bJobPriority\x12\x1c\n\x18JOB_PRIORITY_UNSPECIFIED\x10\x00\x12\x18\n\x14JOB_PRIORITY_ECONOMY\x10\x01\x12\x19\n\x15JOB_PRIORITY_STANDARD\x10\x02\x12\x18\n\x14JOB_PRIORITY_PREMIUM\x10\x03*\xd4\x01\n\x0eWatchEventType\x12 \n\x1cWATCH_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19WATCH_EVENT_TYPE_SNAPSHOT\x10\x01\x12\x1d\n\x19WATCH_EVENT_TYPE_PROGRESS\x10\x02\x12\"\n\x1eWATCH_EVENT_TYPE_STATUS_CHANGE\x10\x03\x12\x1e\n\x1aWATCH_EVENT_TYPE_COMPLETED\x10\x04\x12\x1e\n\x1aWATCH_EVENT_TYPE_HEARTBEAT\x10\x05*\xba\x01\n\x0fJobCostLineType\x12\"\n\x1eJOB_COST_LINE_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19JOB_COST_LINE_TYPE_OUTPUT\x10\x01\x12%\n!JOB_COST_LINE_TYPE_MINIMUM_CHARGE\x10\x02\x12\x1a\n\x16JOB_COST_LINE_TYPE_FEE\x10\x03\x12!\n\x1dJOB_COST_LINE_TYPE_ADJUSTMENT\x10\x04\x32\xdb\x03\n\nJobService\x12M\n\x06\x43reate\x12 .transcodely.v1.CreateJobRequest\x1a!.transcodely.v1.CreateJobResponse\x12\x44\n\x03Get\x12\x1d.transcodely.v1.GetJobRequest\x1a\x1e.transcodely.v1.GetJobResponse\x12I\n\x04List\x12\x1f.transcodely.v1.ListJobsRequest\x1a .transcodely.v1.ListJobsResponse\x12M\n\x06\x43\x61ncel\x12 .transcodely.v1.CancelJobRequest\x1a!.transcodely.v1.CancelJobResponse\x12P\n\x07\x43onfirm\x12!.transcodely.v1.ConfirmJobRequest\x1a\".transcodely.v1.ConfirmJobResponse\x12L\n\x05Watch\x12\x1f.transcodely.v1.WatchJobRequest\x1a .transcodely.v1.WatchJobResponse0\x01\x62\x06proto3')
43
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18transcodely/v1/job.proto\x12\x0etranscodely.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1btranscodely/v1/common.proto\x1a\x1atranscodely/v1/media.proto\x1a\x1ftranscodely/v1/codec_h264.proto\x1a\x1ftranscodely/v1/codec_h265.proto\x1a\x1etranscodely/v1/codec_vp9.proto\x1a\x1etranscodely/v1/codec_av1.proto\x1a\x1btranscodely/v1/origin.proto\x1a\x1etranscodely/v1/streaming.proto\x1a\x1ftranscodely/v1/thumbnails.proto\x1a\x1etranscodely/v1/subtitles.proto\x1a\x1etranscodely/v1/watermark.proto\x1a\x18transcodely/v1/drm.proto\x1a\x18transcodely/v1/hdr.proto\x1a\"transcodely/v1/content_aware.proto\"\xe9\x01\n\x10\x41udioTrackConfig\x12\x30\n\x08language\x18\x01 \x01(\tB\x14\xbaH\x11r\x0c\x32\n^[a-z]{3}$\xc8\x01\x01R\x08language\x12\"\n\x05label\x18\x02 \x01(\tB\x07\xbaH\x04r\x02\x18@H\x00R\x05label\x88\x01\x01\x12\x31\n\x0csource_track\x18\x03 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x18\x0f(\x00H\x01R\x0bsourceTrack\x88\x01\x01\x12\"\n\nis_default\x18\x04 \x01(\x08H\x02R\tisDefault\x88\x01\x01\x42\x08\n\x06_labelB\x0f\n\r_source_trackB\r\n\x0b_is_default\"\x94\x06\n\x0cVideoVariant\x12=\n\x05\x63odec\x18\x01 \x01(\x0e\x32\x1a.transcodely.v1.VideoCodecB\x0b\xbaH\x08\x82\x01\x02\x10\x01\xc8\x01\x01R\x05\x63odec\x12\x44\n\nresolution\x18\x02 \x01(\x0e\x32\x1a.transcodely.v1.ResolutionB\x08\xbaH\x05\x82\x01\x02\x10\x01R\nresolution\x12?\n\x07quality\x18\x03 \x01(\x0e\x32\x1b.transcodely.v1.QualityTierB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x07quality\x12-\n\tframerate\x18\x04 \x01(\x05\x42\n\xbaH\x07\x1a\x05\x18\xf0\x01(\x00H\x00R\tframerate\x88\x01\x01\x12&\n\x05width\x18\x05 \x01(\x05\x42\x0b\xbaH\x08\x1a\x06\x18\x80<(\x80\x01H\x01R\x05width\x88\x01\x01\x12(\n\x06height\x18\x06 \x01(\x05\x42\x0b\xbaH\x08\x1a\x06\x18\xe0!(\x80\x01H\x02R\x06height\x88\x01\x01\x12*\n\x07\x62itrate\x18\x07 \x01(\x05\x42\x0b\xbaH\x08\x1a\x06\x18\x80\xd3\x0e(dH\x03R\x07\x62itrate\x88\x01\x01\x12\x34\n\x04h264\x18\n \x01(\x0b\x32\x1b.transcodely.v1.H264OptionsH\x04R\x04h264\x88\x01\x01\x12\x34\n\x04h265\x18\x0b \x01(\x0b\x32\x1b.transcodely.v1.H265OptionsH\x05R\x04h265\x88\x01\x01\x12\x31\n\x03vp9\x18\x0c \x01(\x0b\x32\x1a.transcodely.v1.VP9OptionsH\x06R\x03vp9\x88\x01\x01\x12\x31\n\x03\x61v1\x18\r \x01(\x0b\x32\x1a.transcodely.v1.AV1OptionsH\x07R\x03\x61v1\x88\x01\x01\x12\x30\n\x03hdr\x18\x0e \x01(\x0b\x32\x19.transcodely.v1.HDRConfigH\x08R\x03hdr\x88\x01\x01\x42\x0c\n\n_framerateB\x08\n\x06_widthB\t\n\x07_heightB\n\n\x08_bitrateB\x07\n\x05_h264B\x07\n\x05_h265B\x06\n\x04_vp9B\x06\n\x04_av1B\x06\n\x04_hdrR\x0ch264_optionsR\x0ch265_optionsR\x0bvp9_optionsR\x0b\x61v1_options\"\xba\x03\n\tHLSConfig\x12:\n\x08manifest\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x18@2\x10^[a-zA-Z0-9_-]+$H\x00R\x08manifest\x88\x01\x01\x12Q\n\x0esegment_format\x18\x02 \x01(\x0e\x32 .transcodely.v1.HLSSegmentFormatB\x08\xbaH\x05\x82\x01\x02\x10\x01R\rsegmentFormat\x12N\n\rplaylist_type\x18\x03 \x01(\x0e\x32\x1f.transcodely.v1.HLSPlaylistTypeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0cplaylistType\x12\xac\x01\n\x0fvariant_pattern\x18\x04 \x01(\tB~\xbaH{r\x18\x18\x80\x01\x32\x13^[a-zA-Z0-9_.{}-]+$\xba\x01^\n\x1fhls_config.variant_pattern_safe\x12%variant_pattern must not contain `..`\x1a\x14!this.contains(\'..\')H\x01R\x0evariantPattern\x88\x01\x01\x42\x0b\n\t_manifestB\x12\n\x10_variant_pattern\"U\n\nDASHConfig\x12:\n\x08manifest\x18\x01 \x01(\tB\x19\xbaH\x16r\x14\x18@2\x10^[a-zA-Z0-9_-]+$H\x00R\x08manifest\x88\x01\x01\x42\x0b\n\t_manifest\"\xd1\x01\n\rSegmentConfig\x12*\n\x08\x64uration\x18\x01 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x18\x1e(\x01H\x00R\x08\x64uration\x88\x01\x01\x12O\n\rgop_alignment\x18\x02 \x01(\x0e\x32 .transcodely.v1.GOPAlignmentModeB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x0cgopAlignment\x12)\n\x08gop_size\x18\x03 \x01(\x05\x42\t\xbaH\x06\x1a\x04\x18\n(\x01H\x01R\x07gopSize\x88\x01\x01\x42\x0b\n\t_durationB\x0b\n\t_gop_size\"\xd5\x14\n\nOutputSpec\x12:\n\x04type\x18\x01 \x01(\x0e\x32\x1c.transcodely.v1.OutputFormatB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x04type\x12<\n\x05video\x18\x02 \x03(\x0b\x32\x1c.transcodely.v1.VideoVariantB\x08\xbaH\x05\x92\x01\x02\x10\x14R\x05video\x12@\n\x05\x61udio\x18\x03 \x03(\x0b\x32 .transcodely.v1.AudioTrackConfigB\x08\xbaH\x05\x92\x01\x02\x10\x08R\x05\x61udio\x12\x30\n\x03hls\x18\x04 \x01(\x0b\x32\x19.transcodely.v1.HLSConfigH\x00R\x03hls\x88\x01\x01\x12\x33\n\x04\x64\x61sh\x18\x05 \x01(\x0b\x32\x1a.transcodely.v1.DASHConfigH\x01R\x04\x64\x61sh\x88\x01\x01\x12>\n\x08segments\x18\x06 \x01(\x0b\x32\x1d.transcodely.v1.SegmentConfigH\x02R\x08segments\x88\x01\x01\x12\xce\x01\n\rpath_template\x18\x07 \x01(\tB\xa3\x01\xbaH\x9f\x01r\x03\x18\x80\x04\xba\x01\x96\x01\n\x1eoutput_spec.path_template_safe\x12\x35path_template must not start with `/` or contain `..`\x1a=this == \'\' || (!this.startsWith(\'/\') && !this.contains(\'..\'))H\x03R\x0cpathTemplate\x88\x01\x01\x12\'\n\x06preset\x18\n \x01(\tB\n\xbaH\x07r\x05\x10\x01\x18\x80\x01H\x04R\x06preset\x88\x01\x01\x12P\n\x0fsubtitle_tracks\x18\x0b \x03(\x0b\x32\x1d.transcodely.v1.SubtitleTrackB\x08\xbaH\x05\x92\x01\x02\x10\x08R\x0esubtitleTracks\x12\x30\n\x03\x64rm\x18\x0c \x01(\x0b\x32\x19.transcodely.v1.DRMConfigH\x05R\x03\x64rm\x88\x01\x01\x12L\n\rcontent_aware\x18\r \x01(\x0b\x32\".transcodely.v1.ContentAwareConfigH\x06R\x0c\x63ontentAware\x88\x01\x01\x12<\n\rencoding_mode\x18\x0e \x01(\tB\x12\xbaH\x0fr\rR\x05\x66ixedR\x04\x61utoH\x07R\x0c\x65ncodingMode\x88\x01\x01\x12\x45\n\x17\x65\x66\x66\x65\x63tive_path_template\x18\x0f \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x04H\x08R\x15\x65\x66\x66\x65\x63tivePathTemplate\x88\x01\x01\x12(\n\rdisable_audio\x18\x10 \x01(\x08H\tR\x0c\x64isableAudio\x88\x01\x01\x12\x42\n\twatermark\x18\x11 \x01(\x0b\x32\x1f.transcodely.v1.WatermarkConfigH\nR\twatermark\x88\x01\x01:\xea\n\xbaH\xe6\n\x1a\xd7\x02\n\x1coutput_spec.preset_or_inline\x12\x8e\x01\x65ither preset must be specified, or type with video[] array must be provided (or a captions-only output with extract/generate subtitle tracks)\x1a\xa5\x01has(this.preset) || (this.type != 0 && size(this.video) > 0) || (size(this.subtitle_tracks) > 0 && this.subtitle_tracks.all(t, t.operation == 4 || t.operation == 5))\x1a\xdf\x01\n\x1aoutput_spec.video_required\x12,video[] array must have at least one variant\x1a\x92\x01has(this.preset) || size(this.video) >= 1 || (size(this.subtitle_tracks) > 0 && this.subtitle_tracks.all(t, t.operation == 4 || t.operation == 5))\x1a\xb2\x01\n#output_spec.audio_require_streaming\x12>audio is only valid for HLS, DASH, or ADAPTIVE streaming types\x1aKsize(this.audio) == 0 || this.type == 5 || this.type == 6 || this.type == 7\x1a\x85\x01\n\x1boutput_spec.hls_config_type\x12\x32hls config is only valid for HLS or ADAPTIVE types\x1a\x32!has(this.hls) || this.type == 5 || this.type == 7\x1a\x89\x01\n\x1coutput_spec.dash_config_type\x12\x34\x64\x61sh config is only valid for DASH or ADAPTIVE types\x1a\x33!has(this.dash) || this.type == 6 || this.type == 7\x1a\xad\x01\n output_spec.segments_config_type\x12>segments config is only valid for HLS, DASH, or ADAPTIVE types\x1aI!has(this.segments) || this.type == 5 || this.type == 6 || this.type == 7\x1a\xae\x01\n#output_spec.disable_audio_no_tracks\x12=disable_audio cannot be combined with explicit audio[] tracks\x1aH!has(this.disable_audio) || !this.disable_audio || size(this.audio) == 0B\x06\n\x04_hlsB\x07\n\x05_dashB\x0b\n\t_segmentsB\x10\n\x0e_path_templateB\t\n\x07_presetB\x06\n\x04_drmB\x10\n\x0e_content_awareB\x10\n\x0e_encoding_modeB\x1a\n\x18_effective_path_templateB\x10\n\x0e_disable_audioB\x0c\n\n_watermarkJ\x04\x08\x08\x10\tJ\x04\x08\t\x10\nR\tstreaming\"\xc7\x03\n\x0fPricingSnapshot\x12\x1d\n\nbase_price\x18\x01 \x01(\x01R\tbasePrice\x12)\n\x10\x63odec_multiplier\x18\x02 \x01(\x01R\x0f\x63odecMultiplier\x12\x33\n\x15resolution_multiplier\x18\x03 \x01(\x01R\x14resolutionMultiplier\x12\x31\n\x14\x66ramerate_multiplier\x18\x04 \x01(\x01R\x13\x66ramerateMultiplier\x12-\n\x12quality_multiplier\x18\x05 \x01(\x01R\x11qualityMultiplier\x12\x43\n\x0fresolution_tier\x18\x06 \x01(\x0e\x32\x1a.transcodely.v1.ResolutionR\x0eresolutionTier\x12)\n\x10\x61\x63tual_framerate\x18\x07 \x01(\x01R\x0f\x61\x63tualFramerate\x12$\n\x0bpixel_count\x18\x08 \x01(\x03H\x00R\npixelCount\x88\x01\x01\x12-\n\x12\x66\x65\x61ture_multiplier\x18\t \x01(\x01R\x11\x66\x65\x61tureMultiplierB\x0e\n\x0c_pixel_count\"\x9d\x07\n\x16VariantPricingSnapshot\x12\x14\n\x05index\x18\x01 \x01(\x05R\x05index\x12\x30\n\x05\x63odec\x18\x02 \x01(\x0e\x32\x1a.transcodely.v1.VideoCodecR\x05\x63odec\x12:\n\nresolution\x18\x03 \x01(\x0e\x32\x1a.transcodely.v1.ResolutionR\nresolution\x12\x1c\n\tframerate\x18\x04 \x01(\x05R\tframerate\x12\x35\n\x07quality\x18\x05 \x01(\x0e\x32\x1b.transcodely.v1.QualityTierR\x07quality\x12\x19\n\x05width\x18\x06 \x01(\x05H\x00R\x05width\x88\x01\x01\x12\x1b\n\x06height\x18\x07 \x01(\x05H\x01R\x06height\x88\x01\x01\x12\x1d\n\nbase_price\x18\n \x01(\x01R\tbasePrice\x12)\n\x10\x63odec_multiplier\x18\x0b \x01(\x01R\x0f\x63odecMultiplier\x12\x33\n\x15resolution_multiplier\x18\x0c \x01(\x01R\x14resolutionMultiplier\x12\x31\n\x14\x66ramerate_multiplier\x18\r \x01(\x01R\x13\x66ramerateMultiplier\x12-\n\x12quality_multiplier\x18\x0e \x01(\x01R\x11qualityMultiplier\x12\x43\n\x0fresolution_tier\x18\x0f \x01(\x0e\x32\x1a.transcodely.v1.ResolutionR\x0eresolutionTier\x12)\n\x10\x61\x63tual_framerate\x18\x10 \x01(\x01R\x0f\x61\x63tualFramerate\x12$\n\x0bpixel_count\x18\x11 \x01(\x03H\x02R\npixelCount\x88\x01\x01\x12*\n\x0e\x65stimated_cost\x18\x12 \x01(\x01H\x03R\restimatedCost\x88\x01\x01\x12$\n\x0b\x61\x63tual_cost\x18\x13 \x01(\x01H\x04R\nactualCost\x88\x01\x01\x12\x16\n\x06status\x18\x14 \x01(\tR\x06status\x12\x1a\n\x08progress\x18\x15 \x01(\x05R\x08progress\x12-\n\x12\x66\x65\x61ture_multiplier\x18\x16 \x01(\x01R\x11\x66\x65\x61tureMultiplierB\x08\n\x06_widthB\t\n\x07_heightB\x0e\n\x0c_pixel_countB\x11\n\x0f_estimated_costB\x0e\n\x0c_actual_cost\"\xb4\x0b\n\tJobOutput\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12.\n\x04spec\x18\x02 \x01(\x0b\x32\x1a.transcodely.v1.OutputSpecR\x04spec\x12\x34\n\x06status\x18\x03 \x01(\x0e\x32\x1c.transcodely.v1.OutputStatusR\x06status\x12\x1a\n\x08progress\x18\x04 \x01(\x05R\x08progress\x12\"\n\noutput_url\x18\x05 \x01(\tH\x00R\toutputUrl\x88\x01\x01\x12/\n\x11output_size_bytes\x18\x06 \x01(\x03H\x01R\x0foutputSizeBytes\x88\x01\x01\x12.\n\x10\x64uration_seconds\x18\x07 \x01(\x03H\x02R\x0f\x64urationSeconds\x88\x01\x01\x12\x39\n\x07pricing\x18\x08 \x01(\x0b\x32\x1f.transcodely.v1.PricingSnapshotR\x07pricing\x12\x41\n\x1a\x65stimated_duration_seconds\x18\t \x01(\x03H\x03R\x18\x65stimatedDurationSeconds\x88\x01\x01\x12*\n\x0e\x65stimated_cost\x18\n \x01(\x01H\x04R\restimatedCost\x88\x01\x01\x12$\n\x0b\x61\x63tual_cost\x18\x0b \x01(\x01H\x05R\nactualCost\x88\x01\x01\x12\"\n\nerror_code\x18\x0c \x01(\tH\x06R\terrorCode\x88\x01\x01\x12(\n\rerror_message\x18\r \x01(\tH\x07R\x0c\x65rrorMessage\x88\x01\x01\x12>\n\nstarted_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x08R\tstartedAt\x88\x01\x01\x12\x42\n\x0c\x63ompleted_at\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.TimestampH\tR\x0b\x63ompletedAt\x88\x01\x01\x12 \n\tpreset_id\x18\x10 \x01(\tH\nR\x08presetId\x88\x01\x01\x12$\n\x0bpreset_slug\x18\x11 \x01(\tH\x0bR\npresetSlug\x88\x01\x01\x12O\n\x0fvariant_pricing\x18\x14 \x03(\x0b\x32&.transcodely.v1.VariantPricingSnapshotR\x0evariantPricing\x12\x16\n\x06object\x18\x15 \x01(\tR\x06object\x12\x19\n\x05width\x18\x16 \x01(\x05H\x0cR\x05width\x88\x01\x01\x12\x1b\n\x06height\x18\x17 \x01(\x05H\rR\x06height\x88\x01\x01\x12\x35\n\x14\x61verage_bitrate_kbps\x18\x18 \x01(\x05H\x0eR\x12\x61verageBitrateKbps\x88\x01\x01\x12L\n\x0fvariant_results\x18\x19 \x03(\x0b\x32#.transcodely.v1.OutputVariantResultR\x0evariantResults\x12\"\n\nsigned_url\x18\x1a \x01(\tH\x0fR\tsignedUrl\x88\x01\x01\x12\x39\n\x06report\x18\x1b \x01(\x0b\x32\x1c.transcodely.v1.OutputReportH\x10R\x06report\x88\x01\x01\x42\r\n\x0b_output_urlB\x14\n\x12_output_size_bytesB\x13\n\x11_duration_secondsB\x1d\n\x1b_estimated_duration_secondsB\x11\n\x0f_estimated_costB\x0e\n\x0c_actual_costB\r\n\x0b_error_codeB\x10\n\x0e_error_messageB\r\n\x0b_started_atB\x0f\n\r_completed_atB\x0c\n\n_preset_idB\x0e\n\x0c_preset_slugB\x08\n\x06_widthB\t\n\x07_heightB\x17\n\x15_average_bitrate_kbpsB\r\n\x0b_signed_urlB\t\n\x07_report\"\xd2\x03\n\x0cOutputReport\x12\x1c\n\tcontainer\x18\x01 \x01(\tR\tcontainer\x12<\n\x05video\x18\x02 \x01(\x0b\x32!.transcodely.v1.OutputReportVideoH\x00R\x05video\x88\x01\x01\x12\x37\n\x05\x61udio\x18\x03 \x03(\x0b\x32!.transcodely.v1.OutputReportAudioR\x05\x61udio\x12.\n\x10\x64uration_seconds\x18\x04 \x01(\x01H\x01R\x0f\x64urationSeconds\x88\x01\x01\x12=\n\x07verdict\x18\x05 \x01(\x0b\x32#.transcodely.v1.OutputReportVerdictR\x07verdict\x12\x39\n\nchecked_at\x18\x06 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcheckedAt\x12R\n\rcontent_aware\x18\x07 \x01(\x0b\x32(.transcodely.v1.OutputReportContentAwareH\x02R\x0c\x63ontentAware\x88\x01\x01\x42\x08\n\x06_videoB\x13\n\x11_duration_secondsB\x10\n\x0e_content_aware\"\xfa\x02\n\x18OutputReportContentAware\x12\x12\n\x04mode\x18\x01 \x01(\tR\x04mode\x12$\n\x0bvmaf_target\x18\x02 \x01(\x01H\x00R\nvmafTarget\x88\x01\x01\x12(\n\rvmaf_achieved\x18\x03 \x01(\x01H\x01R\x0cvmafAchieved\x88\x01\x01\x12\"\n\ncrf_chosen\x18\x04 \x01(\x05H\x02R\tcrfChosen\x88\x01\x01\x12\x1e\n\x08seed_crf\x18\x05 \x01(\x05H\x03R\x07seedCrf\x88\x01\x01\x12\"\n\nmet_target\x18\x06 \x01(\x08H\x04R\tmetTarget\x88\x01\x01\x12\x45\n\x06probes\x18\x07 \x03(\x0b\x32-.transcodely.v1.OutputReportContentAwareProbeR\x06probesB\x0e\n\x0c_vmaf_targetB\x10\n\x0e_vmaf_achievedB\r\n\x0b_crf_chosenB\x0b\n\t_seed_crfB\r\n\x0b_met_target\"~\n\x1dOutputReportContentAwareProbe\x12\x10\n\x03\x63rf\x18\x01 \x01(\x05R\x03\x63rf\x12\x12\n\x04vmaf\x18\x02 \x01(\x01R\x04vmaf\x12&\n\x0c\x62itrate_kbps\x18\x03 \x01(\x01H\x00R\x0b\x62itrateKbps\x88\x01\x01\x42\x0f\n\r_bitrate_kbps\"\xa4\x03\n\x11OutputReportVideo\x12\x14\n\x05\x63odec\x18\x01 \x01(\tR\x05\x63odec\x12\x1d\n\x07profile\x18\x02 \x01(\tH\x00R\x07profile\x88\x01\x01\x12\x19\n\x05level\x18\x03 \x01(\tH\x01R\x05level\x88\x01\x01\x12\x1c\n\x07pix_fmt\x18\x04 \x01(\tH\x02R\x06pixFmt\x88\x01\x01\x12\x14\n\x05width\x18\x05 \x01(\x05R\x05width\x12\x16\n\x06height\x18\x06 \x01(\x05R\x06height\x12\"\n\nframe_rate\x18\x07 \x01(\x01H\x03R\tframeRate\x88\x01\x01\x12&\n\x0c\x62itrate_kbps\x18\x08 \x01(\x05H\x04R\x0b\x62itrateKbps\x88\x01\x01\x12<\n\x05\x63olor\x18\t \x01(\x0b\x32!.transcodely.v1.OutputReportColorH\x05R\x05\x63olor\x88\x01\x01\x12\x1d\n\nhdr_format\x18\n \x01(\tR\thdrFormatB\n\n\x08_profileB\x08\n\x06_levelB\n\n\x08_pix_fmtB\r\n\x0b_frame_rateB\x0f\n\r_bitrate_kbpsB\x08\n\x06_color\"\xbf\x01\n\x11OutputReportColor\x12!\n\tprimaries\x18\x01 \x01(\tH\x00R\tprimaries\x88\x01\x01\x12\x1f\n\x08transfer\x18\x02 \x01(\tH\x01R\x08transfer\x88\x01\x01\x12\x1b\n\x06matrix\x18\x03 \x01(\tH\x02R\x06matrix\x88\x01\x01\x12\x19\n\x05range\x18\x04 \x01(\tH\x03R\x05range\x88\x01\x01\x42\x0c\n\n_primariesB\x0b\n\t_transferB\t\n\x07_matrixB\x08\n\x06_range\"\xfc\x01\n\x11OutputReportAudio\x12\x14\n\x05\x63odec\x18\x01 \x01(\tR\x05\x63odec\x12\x1f\n\x08\x63hannels\x18\x02 \x01(\x05H\x00R\x08\x63hannels\x88\x01\x01\x12)\n\x0esample_rate_hz\x18\x03 \x01(\x05H\x01R\x0csampleRateHz\x88\x01\x01\x12&\n\x0c\x62itrate_kbps\x18\x04 \x01(\x05H\x02R\x0b\x62itrateKbps\x88\x01\x01\x12\x1f\n\x08language\x18\x05 \x01(\tH\x03R\x08language\x88\x01\x01\x42\x0b\n\t_channelsB\x11\n\x0f_sample_rate_hzB\x0f\n\r_bitrate_kbpsB\x0b\n\t_language\"\x84\x01\n\x13OutputReportVerdict\x12\'\n\x0fmatches_request\x18\x01 \x01(\x08R\x0ematchesRequest\x12\x44\n\nmismatches\x18\x02 \x03(\x0b\x32$.transcodely.v1.OutputReportMismatchR\nmismatches\"`\n\x14OutputReportMismatch\x12\x14\n\x05\x66ield\x18\x01 \x01(\tR\x05\x66ield\x12\x1a\n\x08\x65xpected\x18\x02 \x01(\tR\x08\x65xpected\x12\x16\n\x06\x61\x63tual\x18\x03 \x01(\tR\x06\x61\x63tual\"\xdc\x01\n\x13OutputVariantResult\x12\x14\n\x05index\x18\x01 \x01(\x05R\x05index\x12\x14\n\x05width\x18\x02 \x01(\x05R\x05width\x12\x16\n\x06height\x18\x03 \x01(\x05R\x06height\x12\x35\n\x14\x61verage_bitrate_kbps\x18\x04 \x01(\x05H\x00R\x12\x61verageBitrateKbps\x88\x01\x01\x12\"\n\nsize_bytes\x18\x05 \x01(\x03H\x01R\tsizeBytes\x88\x01\x01\x42\x17\n\x15_average_bitrate_kbpsB\r\n\x0b_size_bytes\"\x9c\x0c\n\x0f\x45xecutionTiming\x12$\n\x0binstance_id\x18\x01 \x01(\tH\x00R\ninstanceId\x88\x01\x01\x12(\n\rinstance_type\x18\x02 \x01(\tH\x01R\x0cinstanceType\x88\x01\x01\x12\x30\n\x11instance_location\x18\x03 \x01(\tH\x02R\x10instanceLocation\x88\x01\x01\x12\"\n\nvcpu_count\x18\x04 \x01(\x05H\x03R\tvcpuCount\x88\x01\x01\x12 \n\tmemory_mb\x18\x05 \x01(\x05H\x04R\x08memoryMb\x88\x01\x01\x12-\n\x10\x62oot_duration_ms\x18\n \x01(\x03H\x05R\x0e\x62ootDurationMs\x88\x01\x01\x12\x35\n\x14\x64ownload_duration_ms\x18\x0b \x01(\x03H\x06R\x12\x64ownloadDurationMs\x88\x01\x01\x12/\n\x11probe_duration_ms\x18\x0c \x01(\x03H\x07R\x0fprobeDurationMs\x88\x01\x01\x12\x31\n\x12\x65ncode_duration_ms\x18\r \x01(\x03H\x08R\x10\x65ncodeDurationMs\x88\x01\x01\x12\x31\n\x12upload_duration_ms\x18\x0e \x01(\x03H\tR\x10uploadDurationMs\x88\x01\x01\x12\x37\n\x15packaging_duration_ms\x18\x0f \x01(\x03H\nR\x13packagingDurationMs\x88\x01\x01\x12/\n\x11total_duration_ms\x18\x10 \x01(\x03H\x0bR\x0ftotalDurationMs\x88\x01\x01\x12*\n\x0e\x64ownload_bytes\x18\x14 \x01(\x03H\x0cR\rdownloadBytes\x88\x01\x01\x12\x33\n\x13\x64ownload_speed_mbps\x18\x15 \x01(\x01H\rR\x11\x64ownloadSpeedMbps\x88\x01\x01\x12&\n\x0cupload_bytes\x18\x16 \x01(\x03H\x0eR\x0buploadBytes\x88\x01\x01\x12/\n\x11upload_speed_mbps\x18\x17 \x01(\x01H\x0fR\x0fuploadSpeedMbps\x88\x01\x01\x12+\n\x0f\x61vg_cpu_percent\x18\x1e \x01(\x01H\x10R\ravgCpuPercent\x88\x01\x01\x12-\n\x10peak_cpu_percent\x18\x1f \x01(\x01H\x11R\x0epeakCpuPercent\x88\x01\x01\x12\'\n\ravg_memory_mb\x18 \x01(\x05H\x12R\x0b\x61vgMemoryMb\x88\x01\x01\x12)\n\x0epeak_memory_mb\x18! \x01(\x05H\x13R\x0cpeakMemoryMb\x88\x01\x01\x12$\n\x0b\x63hunk_count\x18( \x01(\x05H\x14R\nchunkCount\x88\x01\x01\x12*\n\x0e\x63hunk_strategy\x18) \x01(\tH\x15R\rchunkStrategy\x88\x01\x01\x12 \n\texit_code\x18\x32 \x01(\x05H\x16R\x08\x65xitCode\x88\x01\x01\x12$\n\x0b\x65xit_reason\x18\x33 \x01(\tH\x17R\nexitReason\x88\x01\x01\x42\x0e\n\x0c_instance_idB\x10\n\x0e_instance_typeB\x14\n\x12_instance_locationB\r\n\x0b_vcpu_countB\x0c\n\n_memory_mbB\x13\n\x11_boot_duration_msB\x17\n\x15_download_duration_msB\x14\n\x12_probe_duration_msB\x15\n\x13_encode_duration_msB\x15\n\x13_upload_duration_msB\x18\n\x16_packaging_duration_msB\x14\n\x12_total_duration_msB\x11\n\x0f_download_bytesB\x16\n\x14_download_speed_mbpsB\x0f\n\r_upload_bytesB\x14\n\x12_upload_speed_mbpsB\x12\n\x10_avg_cpu_percentB\x13\n\x11_peak_cpu_percentB\x10\n\x0e_avg_memory_mbB\x11\n\x0f_peak_memory_mbB\x0e\n\x0c_chunk_countB\x11\n\x0f_chunk_strategyB\x0c\n\n_exit_codeB\x0e\n\x0c_exit_reason\"\xd8\x12\n\x03Job\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06\x61pp_id\x18\x1d \x01(\tR\x05\x61ppId\x12\x1b\n\tinput_url\x18\x02 \x01(\tR\x08inputUrl\x12\x41\n\x0cinput_origin\x18\x16 \x01(\x0b\x32\x19.transcodely.v1.OriginRefH\x00R\x0binputOrigin\x88\x01\x01\x12\x43\n\routput_origin\x18\x17 \x01(\x0b\x32\x19.transcodely.v1.OriginRefH\x01R\x0coutputOrigin\x88\x01\x01\x12\x31\n\x06status\x18\x03 \x01(\x0e\x32\x19.transcodely.v1.JobStatusR\x06status\x12\x1a\n\x08progress\x18\x04 \x01(\x05R\x08progress\x12\x37\n\x08priority\x18\x05 \x01(\x0e\x32\x1b.transcodely.v1.JobPriorityR\x08priority\x12I\n\x0einput_metadata\x18\x06 \x01(\x0b\x32\x1d.transcodely.v1.InputMetadataH\x02R\rinputMetadata\x88\x01\x01\x12\x33\n\x07outputs\x18\x07 \x03(\x0b\x32\x19.transcodely.v1.JobOutputR\x07outputs\x12\x35\n\x14total_estimated_cost\x18\x08 \x01(\x01H\x03R\x12totalEstimatedCost\x88\x01\x01\x12/\n\x11total_actual_cost\x18\t \x01(\x01H\x04R\x0ftotalActualCost\x88\x01\x01\x12\"\n\nerror_code\x18\n \x01(\tH\x05R\terrorCode\x88\x01\x01\x12(\n\rerror_message\x18\x0b \x01(\tH\x06R\x0c\x65rrorMessage\x88\x01\x01\x12$\n\x0bwebhook_url\x18\x0c \x01(\tH\x07R\nwebhookUrl\x88\x01\x01\x12=\n\x08metadata\x18\r \x03(\x0b\x32!.transcodely.v1.Job.MetadataEntryR\x08metadata\x12\x39\n\ncreated_at\x18\x0e \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12<\n\tprobed_at\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x08R\x08probedAt\x88\x01\x01\x12>\n\nstarted_at\x18\x11 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\tR\tstartedAt\x88\x01\x01\x12\x42\n\x0c\x63ompleted_at\x18\x12 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\nR\x0b\x63ompletedAt\x88\x01\x01\x12#\n\rdelayed_start\x18\x13 \x01(\x08R\x0c\x64\x65layedStart\x12\x42\n\x0c\x63onfirmed_at\x18\x14 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x0bR\x0b\x63onfirmedAt\x88\x01\x01\x12\x1a\n\x08\x63urrency\x18\x15 \x01(\tR\x08\x63urrency\x12=\n\texecution\x18\x18 \x01(\x0b\x32\x1f.transcodely.v1.ExecutionTimingR\texecution\x12=\n\nthumbnails\x18\x19 \x03(\x0b\x32\x1d.transcodely.v1.ThumbnailSpecR\nthumbnails\x12L\n\x11thumbnail_results\x18\x1c \x03(\x0b\x32\x1f.transcodely.v1.ThumbnailResultR\x10thumbnailResults\x12I\n\x10subtitle_results\x18 \x03(\x0b\x32\x1e.transcodely.v1.SubtitleResultR\x0fsubtitleResults\x12\x35\n\x14output_path_template\x18\x1a \x01(\tH\x0cR\x12outputPathTemplate\x88\x01\x01\x12\x16\n\x06object\x18\x1b \x01(\tR\x06object\x12\x35\n\x12minimum_charge_eur\x18\x1e \x01(\x01\x42\x02\x18\x01H\rR\x10minimumChargeEur\x88\x01\x01\x12\x38\n\x16minimum_charge_applied\x18\x1f \x01(\x08\x42\x02\x18\x01R\x14minimumChargeApplied\x12*\n\x04\x66\x65\x65s\x18! \x03(\x0b\x32\x16.transcodely.v1.JobFeeR\x04\x66\x65\x65s\x12$\n\x0einput_video_id\x18\" \x01(\tR\x0cinputVideoId\x12\x46\n\x0f\x63hapter_results\x18# \x03(\x0b\x32\x1d.transcodely.v1.ChapterResultR\x0e\x63hapterResults\x12\x33\n\x04\x63lip\x18$ \x01(\x0b\x32\x1a.transcodely.v1.ClipConfigH\x0eR\x04\x63lip\x88\x01\x01\x12\x1e\n\x08video_id\x18% \x01(\tH\x0fR\x07videoId\x88\x01\x01\x12G\n\x0e\x63ost_breakdown\x18& \x01(\x0b\x32 .transcodely.v1.JobCostBreakdownR\rcostBreakdown\x12>\n\x08insights\x18\' \x03(\x0b\x32\".transcodely.v1.TranscriptInsightsR\x08insights\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\x0f\n\r_input_originB\x10\n\x0e_output_originB\x11\n\x0f_input_metadataB\x17\n\x15_total_estimated_costB\x14\n\x12_total_actual_costB\r\n\x0b_error_codeB\x10\n\x0e_error_messageB\x0e\n\x0c_webhook_urlB\x0c\n\n_probed_atB\r\n\x0b_started_atB\x0f\n\r_completed_atB\x0f\n\r_confirmed_atB\x17\n\x15_output_path_templateB\x15\n\x13_minimum_charge_eurB\x07\n\x05_clipB\x0b\n\t_video_id\"\xcd\x01\n\x06JobFee\x12\x19\n\x08\x66\x65\x65_type\x18\x01 \x01(\tR\x07\x66\x65\x65Type\x12 \n\x0b\x64\x65scription\x18\x02 \x01(\tR\x0b\x64\x65scription\x12\x12\n\x04unit\x18\x03 \x01(\tR\x04unit\x12\x1a\n\x08quantity\x18\x04 \x01(\x01R\x08quantity\x12\x12\n\x04rate\x18\x05 \x01(\x01R\x04rate\x12\x16\n\x06\x61mount\x18\x06 \x01(\x01R\x06\x61mount\x12\x1a\n\x08\x63urrency\x18\x07 \x01(\tR\x08\x63urrency\x12\x0e\n\x02id\x18\x08 \x01(\tR\x02id\"\x9e\x02\n\x0bJobCostLine\x12\x33\n\x04type\x18\x01 \x01(\x0e\x32\x1f.transcodely.v1.JobCostLineTypeR\x04type\x12!\n\x0creference_id\x18\x02 \x01(\tR\x0breferenceId\x12 \n\x0b\x64\x65scription\x18\x03 \x01(\tR\x0b\x64\x65scription\x12\x35\n\x14\x65stimated_amount_eur\x18\x04 \x01(\x01H\x00R\x12\x65stimatedAmountEur\x88\x01\x01\x12/\n\x11\x61\x63tual_amount_eur\x18\x05 \x01(\x01H\x01R\x0f\x61\x63tualAmountEur\x88\x01\x01\x42\x17\n\x15_estimated_amount_eurB\x14\n\x12_actual_amount_eur\"\xdc\x01\n\x10JobCostBreakdown\x12\x31\n\x05lines\x18\x01 \x03(\x0b\x32\x1b.transcodely.v1.JobCostLineR\x05lines\x12\x35\n\x14total_estimated_cost\x18\x02 \x01(\x01H\x00R\x12totalEstimatedCost\x88\x01\x01\x12/\n\x11total_actual_cost\x18\x03 \x01(\x01H\x01R\x0ftotalActualCost\x88\x01\x01\x42\x17\n\x15_total_estimated_costB\x14\n\x12_total_actual_cost\"\xdf\x03\n\nClipConfig\x12\x89\x01\n\rstart_seconds\x18\x01 \x01(\x01\x42\x64\xbaHa\x12\x0b)\x00\x00\x00\x00\x00\x00\x00\x00@\x01\xba\x01Q\n\x13\x63lip.start_storable\x12&start_seconds must be at most 10000000\x1a\x12this <= 10000000.0R\x0cstartSeconds\x12\x81\x01\n\x0b\x65nd_seconds\x18\x02 \x01(\x01\x42`\xbaH]\x12\x0b)\x00\x00\x00\x00\x00\x00\x00\x00@\x01\xba\x01M\n\x11\x63lip.end_storable\x12$end_seconds must be at most 10000000\x1a\x12this <= 10000000.0R\nendSeconds:\xc0\x01\xbaH\xbc\x01\x1a\xb9\x01\n\x14\x63lip.end_after_start\x12Vend_seconds must be at least 0.001s greater than start_seconds (or 0 for end of input)\x1aIthis.end_seconds == 0.0 || this.end_seconds - this.start_seconds >= 0.001\"\xd2\x10\n\x10\x43reateJobRequest\x12?\n\tinput_url\x18\x01 \x01(\tB\"\xbaH\x1fr\x1a\x18\x80\x10\x32\x15^(gs|s3|https?)://.*$\xd8\x01\x01R\x08inputUrl\x12H\n\x0finput_origin_id\x18\t \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^ori_[a-zA-Z0-9_-]+$H\x00R\rinputOriginId\x88\x01\x01\x12,\n\ninput_path\x18\n \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x10H\x01R\tinputPath\x88\x01\x01\x12H\n\x0einput_video_id\x18\r \x01(\tB\x1d\xbaH\x1ar\x18\x18 2\x14^vid_[a-zA-Z0-9_-]+$H\x02R\x0cinputVideoId\x88\x01\x01\x12J\n\x10output_origin_id\x18\x0b \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^ori_[a-zA-Z0-9_-]+$H\x03R\x0eoutputOriginId\x88\x01\x01\x12@\n\x07outputs\x18\x02 \x03(\x0b\x32\x1a.transcodely.v1.OutputSpecB\n\xbaH\x07\x92\x01\x04\x08\x01\x10\nR\x07outputs\x12\x41\n\x08priority\x18\x03 \x01(\x0e\x32\x1b.transcodely.v1.JobPriorityB\x08\xbaH\x05\x82\x01\x02\x10\x01R\x08priority\x12\x31\n\x0bwebhook_url\x18\x04 \x01(\tB\x0b\xbaH\x08r\x06\x18\x80\x10\x88\x01\x01H\x04R\nwebhookUrl\x88\x01\x01\x12\x36\n\x0fidempotency_key\x18\x05 \x01(\tB\x08\xbaH\x05r\x03\x18\x80\x01H\x05R\x0eidempotencyKey\x88\x01\x01\x12\x63\n\x08metadata\x18\x06 \x03(\x0b\x32..transcodely.v1.CreateJobRequest.MetadataEntryB\x17\xbaH\x14\x9a\x01\x11\x10\x14\"\x06r\x04\x10\x01\x18@*\x05r\x03\x18\x80\x08R\x08metadata\x12#\n\rdelayed_start\x18\x07 \x01(\x08R\x0c\x64\x65layedStart\x12G\n\nthumbnails\x18\x08 \x03(\x0b\x32\x1d.transcodely.v1.ThumbnailSpecB\x08\xbaH\x05\x92\x01\x02\x10\x05R\nthumbnails\x12\xe8\x01\n\x14output_path_template\x18\x0c \x01(\tB\xb0\x01\xbaH\xac\x01r\x03\x18\x80\x04\xba\x01\xa3\x01\n$create_job.output_path_template_safe\x12<output_path_template must not start with `/` or contain `..`\x1a=this == \'\' || (!this.startsWith(\'/\') && !this.contains(\'..\'))H\x06R\x12outputPathTemplate\x88\x01\x01\x12\x1d\n\x07managed\x18\x14 \x01(\x08H\x07R\x07managed\x88\x01\x01\x12\x37\n\x06\x61pp_id\x18\x15 \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^app_[a-zA-Z0-9_-]+$H\x08R\x05\x61ppId\x88\x01\x01\x12\x33\n\x04\x63lip\x18\x16 \x01(\x0b\x32\x1a.transcodely.v1.ClipConfigH\tR\x04\x63lip\x88\x01\x01\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01:\xce\x05\xbaH\xca\x05\x1a\xf0\x02\n\x17\x63reate_job.input_source\x12Yexactly one input source must be specified: input_url, input_origin_id, or input_video_id\x1a\xf9\x01(this.input_url != \'\' && !has(this.input_origin_id) && !has(this.input_video_id)) || (this.input_url == \'\' && has(this.input_origin_id) && !has(this.input_video_id)) || (this.input_url == \'\' && !has(this.input_origin_id) && has(this.input_video_id))\x1a\x98\x01\n%create_job.input_path_requires_origin\x12;input_path can only be specified when using input_origin_id\x1a\x32!has(this.input_path) || has(this.input_origin_id)\x1a\xb9\x01\n!create_job.output_origin_required\x12\x35output_origin_id is required when managed is not true\x1a]has(this.output_origin_id) || (has(this.managed) && this.managed) || has(this.input_video_id)B\x12\n\x10_input_origin_idB\r\n\x0b_input_pathB\x11\n\x0f_input_video_idB\x13\n\x11_output_origin_idB\x0e\n\x0c_webhook_urlB\x12\n\x10_idempotency_keyB\x17\n\x15_output_path_templateB\n\n\x08_managedB\t\n\x07_app_idB\x07\n\x05_clip\"g\n\x11\x43reateJobResponse\x12%\n\x03job\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.JobR\x03job\x12\x1e\n\x08video_id\x18\x05 \x01(\tH\x00R\x07videoId\x88\x01\x01\x42\x0b\n\t_video_id\"?\n\rGetJobRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^job_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\"7\n\x0eGetJobResponse\x12%\n\x03job\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.JobR\x03job\"\xfb\x04\n\x0fListJobsRequest\x12\x36\n\x06status\x18\x01 \x01(\x0e\x32\x19.transcodely.v1.JobStatusH\x00R\x06status\x88\x01\x01\x12\x41\n\npagination\x18\x02 \x01(\x0b\x32!.transcodely.v1.PaginationRequestR\npagination\x12\x37\n\x06\x61pp_id\x18\x03 \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^app_[a-zA-Z0-9_-]+$H\x01R\x05\x61ppId\x88\x01\x01\x12\x44\n\rcreated_after\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x02R\x0c\x63reatedAfter\x88\x01\x01\x12\x46\n\x0e\x63reated_before\x18\x05 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x03R\rcreatedBefore\x88\x01\x01\x12J\n\x08statuses\x18\x06 \x03(\x0e\x32\x19.transcodely.v1.JobStatusB\x13\xbaH\x10\x92\x01\r\x10\x08\x18\x01\"\x07\x82\x01\x04\x10\x01 \x00R\x08statuses\x12\x62\n\x08metadata\x18\x07 \x03(\x0b\x32-.transcodely.v1.ListJobsRequest.MetadataEntryB\x17\xbaH\x14\x9a\x01\x11\x10\n\"\x06r\x04\x10\x01\x18@*\x05r\x03\x18\x80\x08R\x08metadata\x1a;\n\rMetadataEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\x42\t\n\x07_statusB\t\n\x07_app_idB\x10\n\x0e_created_afterB\x11\n\x0f_created_before\"\x7f\n\x10ListJobsResponse\x12\'\n\x04jobs\x18\x01 \x03(\x0b\x32\x13.transcodely.v1.JobR\x04jobs\x12\x42\n\npagination\x18\x02 \x01(\x0b\x32\".transcodely.v1.PaginationResponseR\npagination\"B\n\x10\x43\x61ncelJobRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^job_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\":\n\x11\x43\x61ncelJobResponse\x12%\n\x03job\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.JobR\x03job\"C\n\x11\x43onfirmJobRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^job_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\";\n\x12\x43onfirmJobResponse\x12%\n\x03job\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.JobR\x03job\"A\n\x0fWatchJobRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^job_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\"\xac\x01\n\x10WatchJobResponse\x12%\n\x03job\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.JobR\x03job\x12\x34\n\x05\x65vent\x18\x02 \x01(\x0e\x32\x1e.transcodely.v1.WatchEventTypeR\x05\x65vent\x12;\n\x0bserver_time\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\nserverTime*\x90\x02\n\tJobStatus\x12\x1a\n\x16JOB_STATUS_UNSPECIFIED\x10\x00\x12\x16\n\x12JOB_STATUS_PENDING\x10\x01\x12\x16\n\x12JOB_STATUS_PROBING\x10\x02\x12\x19\n\x15JOB_STATUS_PROCESSING\x10\x03\x12\x18\n\x14JOB_STATUS_COMPLETED\x10\x04\x12\x15\n\x11JOB_STATUS_FAILED\x10\x05\x12\x17\n\x13JOB_STATUS_CANCELED\x10\x06\x12\x16\n\x12JOB_STATUS_PARTIAL\x10\x07\x12$\n JOB_STATUS_AWAITING_CONFIRMATION\x10\x08*\x14JOB_STATUS_CANCELLED*\xd2\x01\n\x0cOutputStatus\x12\x1d\n\x19OUTPUT_STATUS_UNSPECIFIED\x10\x00\x12\x19\n\x15OUTPUT_STATUS_PENDING\x10\x01\x12\x1c\n\x18OUTPUT_STATUS_PROCESSING\x10\x02\x12\x1b\n\x17OUTPUT_STATUS_COMPLETED\x10\x03\x12\x18\n\x14OUTPUT_STATUS_FAILED\x10\x04\x12\x1a\n\x16OUTPUT_STATUS_CANCELED\x10\x05*\x17OUTPUT_STATUS_CANCELLED*z\n\x0bJobPriority\x12\x1c\n\x18JOB_PRIORITY_UNSPECIFIED\x10\x00\x12\x18\n\x14JOB_PRIORITY_ECONOMY\x10\x01\x12\x19\n\x15JOB_PRIORITY_STANDARD\x10\x02\x12\x18\n\x14JOB_PRIORITY_PREMIUM\x10\x03*\xd4\x01\n\x0eWatchEventType\x12 \n\x1cWATCH_EVENT_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19WATCH_EVENT_TYPE_SNAPSHOT\x10\x01\x12\x1d\n\x19WATCH_EVENT_TYPE_PROGRESS\x10\x02\x12\"\n\x1eWATCH_EVENT_TYPE_STATUS_CHANGE\x10\x03\x12\x1e\n\x1aWATCH_EVENT_TYPE_COMPLETED\x10\x04\x12\x1e\n\x1aWATCH_EVENT_TYPE_HEARTBEAT\x10\x05*\xba\x01\n\x0fJobCostLineType\x12\"\n\x1eJOB_COST_LINE_TYPE_UNSPECIFIED\x10\x00\x12\x1d\n\x19JOB_COST_LINE_TYPE_OUTPUT\x10\x01\x12%\n!JOB_COST_LINE_TYPE_MINIMUM_CHARGE\x10\x02\x12\x1a\n\x16JOB_COST_LINE_TYPE_FEE\x10\x03\x12!\n\x1dJOB_COST_LINE_TYPE_ADJUSTMENT\x10\x04\x32\xdb\x03\n\nJobService\x12M\n\x06\x43reate\x12 .transcodely.v1.CreateJobRequest\x1a!.transcodely.v1.CreateJobResponse\x12\x44\n\x03Get\x12\x1d.transcodely.v1.GetJobRequest\x1a\x1e.transcodely.v1.GetJobResponse\x12I\n\x04List\x12\x1f.transcodely.v1.ListJobsRequest\x1a .transcodely.v1.ListJobsResponse\x12M\n\x06\x43\x61ncel\x12 .transcodely.v1.CancelJobRequest\x1a!.transcodely.v1.CancelJobResponse\x12P\n\x07\x43onfirm\x12!.transcodely.v1.ConfirmJobRequest\x1a\".transcodely.v1.ConfirmJobResponse\x12L\n\x05Watch\x12\x1f.transcodely.v1.WatchJobRequest\x1a .transcodely.v1.WatchJobResponse0\x01\x62\x06proto3')
44
44
 
45
45
  _globals = globals()
46
46
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
@@ -159,16 +159,16 @@ if not _descriptor._USE_C_DESCRIPTORS:
159
159
  _globals['_CONFIRMJOBREQUEST'].fields_by_name['id']._serialized_options = b'\272H\033r\0262\024^job_[a-zA-Z0-9_-]+$\310\001\001'
160
160
  _globals['_WATCHJOBREQUEST'].fields_by_name['id']._loaded_options = None
161
161
  _globals['_WATCHJOBREQUEST'].fields_by_name['id']._serialized_options = b'\272H\033r\0262\024^job_[a-zA-Z0-9_-]+$\310\001\001'
162
- _globals['_JOBSTATUS']._serialized_start=18546
163
- _globals['_JOBSTATUS']._serialized_end=18818
164
- _globals['_OUTPUTSTATUS']._serialized_start=18821
165
- _globals['_OUTPUTSTATUS']._serialized_end=19031
166
- _globals['_JOBPRIORITY']._serialized_start=19033
167
- _globals['_JOBPRIORITY']._serialized_end=19155
168
- _globals['_WATCHEVENTTYPE']._serialized_start=19158
169
- _globals['_WATCHEVENTTYPE']._serialized_end=19370
170
- _globals['_JOBCOSTLINETYPE']._serialized_start=19373
171
- _globals['_JOBCOSTLINETYPE']._serialized_end=19559
162
+ _globals['_JOBSTATUS']._serialized_start=18905
163
+ _globals['_JOBSTATUS']._serialized_end=19177
164
+ _globals['_OUTPUTSTATUS']._serialized_start=19180
165
+ _globals['_OUTPUTSTATUS']._serialized_end=19390
166
+ _globals['_JOBPRIORITY']._serialized_start=19392
167
+ _globals['_JOBPRIORITY']._serialized_end=19514
168
+ _globals['_WATCHEVENTTYPE']._serialized_start=19517
169
+ _globals['_WATCHEVENTTYPE']._serialized_end=19729
170
+ _globals['_JOBCOSTLINETYPE']._serialized_start=19732
171
+ _globals['_JOBCOSTLINETYPE']._serialized_end=19918
172
172
  _globals['_AUDIOTRACKCONFIG']._serialized_start=540
173
173
  _globals['_AUDIOTRACKCONFIG']._serialized_end=773
174
174
  _globals['_VIDEOVARIANT']._serialized_start=776
@@ -190,61 +190,63 @@ if not _descriptor._USE_C_DESCRIPTORS:
190
190
  _globals['_OUTPUTREPORT']._serialized_start=7808
191
191
  _globals['_OUTPUTREPORT']._serialized_end=8274
192
192
  _globals['_OUTPUTREPORTCONTENTAWARE']._serialized_start=8277
193
- _globals['_OUTPUTREPORTCONTENTAWARE']._serialized_end=8488
194
- _globals['_OUTPUTREPORTVIDEO']._serialized_start=8491
195
- _globals['_OUTPUTREPORTVIDEO']._serialized_end=8911
196
- _globals['_OUTPUTREPORTCOLOR']._serialized_start=8914
197
- _globals['_OUTPUTREPORTCOLOR']._serialized_end=9105
198
- _globals['_OUTPUTREPORTAUDIO']._serialized_start=9108
199
- _globals['_OUTPUTREPORTAUDIO']._serialized_end=9360
200
- _globals['_OUTPUTREPORTVERDICT']._serialized_start=9363
201
- _globals['_OUTPUTREPORTVERDICT']._serialized_end=9495
202
- _globals['_OUTPUTREPORTMISMATCH']._serialized_start=9497
203
- _globals['_OUTPUTREPORTMISMATCH']._serialized_end=9593
204
- _globals['_OUTPUTVARIANTRESULT']._serialized_start=9596
205
- _globals['_OUTPUTVARIANTRESULT']._serialized_end=9816
206
- _globals['_EXECUTIONTIMING']._serialized_start=9819
207
- _globals['_EXECUTIONTIMING']._serialized_end=11383
208
- _globals['_JOB']._serialized_start=11386
209
- _globals['_JOB']._serialized_end=13714
210
- _globals['_JOB_METADATAENTRY']._serialized_start=13372
211
- _globals['_JOB_METADATAENTRY']._serialized_end=13431
212
- _globals['_JOBFEE']._serialized_start=13717
213
- _globals['_JOBFEE']._serialized_end=13922
214
- _globals['_JOBCOSTLINE']._serialized_start=13925
215
- _globals['_JOBCOSTLINE']._serialized_end=14211
216
- _globals['_JOBCOSTBREAKDOWN']._serialized_start=14214
217
- _globals['_JOBCOSTBREAKDOWN']._serialized_end=14434
218
- _globals['_CLIPCONFIG']._serialized_start=14437
219
- _globals['_CLIPCONFIG']._serialized_end=14916
220
- _globals['_CREATEJOBREQUEST']._serialized_start=14919
221
- _globals['_CREATEJOBREQUEST']._serialized_end=17049
222
- _globals['_CREATEJOBREQUEST_METADATAENTRY']._serialized_start=13372
223
- _globals['_CREATEJOBREQUEST_METADATAENTRY']._serialized_end=13431
224
- _globals['_CREATEJOBRESPONSE']._serialized_start=17051
225
- _globals['_CREATEJOBRESPONSE']._serialized_end=17154
226
- _globals['_GETJOBREQUEST']._serialized_start=17156
227
- _globals['_GETJOBREQUEST']._serialized_end=17219
228
- _globals['_GETJOBRESPONSE']._serialized_start=17221
229
- _globals['_GETJOBRESPONSE']._serialized_end=17276
230
- _globals['_LISTJOBSREQUEST']._serialized_start=17279
231
- _globals['_LISTJOBSREQUEST']._serialized_end=17914
232
- _globals['_LISTJOBSREQUEST_METADATAENTRY']._serialized_start=13372
233
- _globals['_LISTJOBSREQUEST_METADATAENTRY']._serialized_end=13431
234
- _globals['_LISTJOBSRESPONSE']._serialized_start=17916
235
- _globals['_LISTJOBSRESPONSE']._serialized_end=18043
236
- _globals['_CANCELJOBREQUEST']._serialized_start=18045
237
- _globals['_CANCELJOBREQUEST']._serialized_end=18111
238
- _globals['_CANCELJOBRESPONSE']._serialized_start=18113
239
- _globals['_CANCELJOBRESPONSE']._serialized_end=18171
240
- _globals['_CONFIRMJOBREQUEST']._serialized_start=18173
241
- _globals['_CONFIRMJOBREQUEST']._serialized_end=18240
242
- _globals['_CONFIRMJOBRESPONSE']._serialized_start=18242
243
- _globals['_CONFIRMJOBRESPONSE']._serialized_end=18301
244
- _globals['_WATCHJOBREQUEST']._serialized_start=18303
245
- _globals['_WATCHJOBREQUEST']._serialized_end=18368
246
- _globals['_WATCHJOBRESPONSE']._serialized_start=18371
247
- _globals['_WATCHJOBRESPONSE']._serialized_end=18543
248
- _globals['_JOBSERVICE']._serialized_start=19562
249
- _globals['_JOBSERVICE']._serialized_end=20037
193
+ _globals['_OUTPUTREPORTCONTENTAWARE']._serialized_end=8655
194
+ _globals['_OUTPUTREPORTCONTENTAWAREPROBE']._serialized_start=8657
195
+ _globals['_OUTPUTREPORTCONTENTAWAREPROBE']._serialized_end=8783
196
+ _globals['_OUTPUTREPORTVIDEO']._serialized_start=8786
197
+ _globals['_OUTPUTREPORTVIDEO']._serialized_end=9206
198
+ _globals['_OUTPUTREPORTCOLOR']._serialized_start=9209
199
+ _globals['_OUTPUTREPORTCOLOR']._serialized_end=9400
200
+ _globals['_OUTPUTREPORTAUDIO']._serialized_start=9403
201
+ _globals['_OUTPUTREPORTAUDIO']._serialized_end=9655
202
+ _globals['_OUTPUTREPORTVERDICT']._serialized_start=9658
203
+ _globals['_OUTPUTREPORTVERDICT']._serialized_end=9790
204
+ _globals['_OUTPUTREPORTMISMATCH']._serialized_start=9792
205
+ _globals['_OUTPUTREPORTMISMATCH']._serialized_end=9888
206
+ _globals['_OUTPUTVARIANTRESULT']._serialized_start=9891
207
+ _globals['_OUTPUTVARIANTRESULT']._serialized_end=10111
208
+ _globals['_EXECUTIONTIMING']._serialized_start=10114
209
+ _globals['_EXECUTIONTIMING']._serialized_end=11678
210
+ _globals['_JOB']._serialized_start=11681
211
+ _globals['_JOB']._serialized_end=14073
212
+ _globals['_JOB_METADATAENTRY']._serialized_start=13731
213
+ _globals['_JOB_METADATAENTRY']._serialized_end=13790
214
+ _globals['_JOBFEE']._serialized_start=14076
215
+ _globals['_JOBFEE']._serialized_end=14281
216
+ _globals['_JOBCOSTLINE']._serialized_start=14284
217
+ _globals['_JOBCOSTLINE']._serialized_end=14570
218
+ _globals['_JOBCOSTBREAKDOWN']._serialized_start=14573
219
+ _globals['_JOBCOSTBREAKDOWN']._serialized_end=14793
220
+ _globals['_CLIPCONFIG']._serialized_start=14796
221
+ _globals['_CLIPCONFIG']._serialized_end=15275
222
+ _globals['_CREATEJOBREQUEST']._serialized_start=15278
223
+ _globals['_CREATEJOBREQUEST']._serialized_end=17408
224
+ _globals['_CREATEJOBREQUEST_METADATAENTRY']._serialized_start=13731
225
+ _globals['_CREATEJOBREQUEST_METADATAENTRY']._serialized_end=13790
226
+ _globals['_CREATEJOBRESPONSE']._serialized_start=17410
227
+ _globals['_CREATEJOBRESPONSE']._serialized_end=17513
228
+ _globals['_GETJOBREQUEST']._serialized_start=17515
229
+ _globals['_GETJOBREQUEST']._serialized_end=17578
230
+ _globals['_GETJOBRESPONSE']._serialized_start=17580
231
+ _globals['_GETJOBRESPONSE']._serialized_end=17635
232
+ _globals['_LISTJOBSREQUEST']._serialized_start=17638
233
+ _globals['_LISTJOBSREQUEST']._serialized_end=18273
234
+ _globals['_LISTJOBSREQUEST_METADATAENTRY']._serialized_start=13731
235
+ _globals['_LISTJOBSREQUEST_METADATAENTRY']._serialized_end=13790
236
+ _globals['_LISTJOBSRESPONSE']._serialized_start=18275
237
+ _globals['_LISTJOBSRESPONSE']._serialized_end=18402
238
+ _globals['_CANCELJOBREQUEST']._serialized_start=18404
239
+ _globals['_CANCELJOBREQUEST']._serialized_end=18470
240
+ _globals['_CANCELJOBRESPONSE']._serialized_start=18472
241
+ _globals['_CANCELJOBRESPONSE']._serialized_end=18530
242
+ _globals['_CONFIRMJOBREQUEST']._serialized_start=18532
243
+ _globals['_CONFIRMJOBREQUEST']._serialized_end=18599
244
+ _globals['_CONFIRMJOBRESPONSE']._serialized_start=18601
245
+ _globals['_CONFIRMJOBRESPONSE']._serialized_end=18660
246
+ _globals['_WATCHJOBREQUEST']._serialized_start=18662
247
+ _globals['_WATCHJOBREQUEST']._serialized_end=18727
248
+ _globals['_WATCHJOBRESPONSE']._serialized_start=18730
249
+ _globals['_WATCHJOBRESPONSE']._serialized_end=18902
250
+ _globals['_JOBSERVICE']._serialized_start=19921
251
+ _globals['_JOBSERVICE']._serialized_end=20396
250
252
  # @@protoc_insertion_point(module_scope)