transcodely 0.3.6__py3-none-any.whl → 0.3.8__py3-none-any.whl

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.
transcodely/__init__.py CHANGED
@@ -55,6 +55,10 @@ from .types import (
55
55
  App,
56
56
  AudioTrackConfig,
57
57
  AutoABRConfig,
58
+ BillingPaymentMethod,
59
+ BillingPortalSession,
60
+ BillingProfile,
61
+ BillingStanding,
58
62
  ChapterPoint,
59
63
  ChapterResult,
60
64
  ClipConfig,
@@ -77,6 +81,7 @@ from .types import (
77
81
  OutputFormat,
78
82
  OutputSpec,
79
83
  OutputStatus,
84
+ PaymentMethodState,
80
85
  Preset,
81
86
  PresetVariant,
82
87
  Resolution,
@@ -127,6 +132,10 @@ __all__ = [
127
132
  "AudioTrackConfig",
128
133
  "AuthenticationError",
129
134
  "AutoABRConfig",
135
+ "BillingPaymentMethod",
136
+ "BillingPortalSession",
137
+ "BillingProfile",
138
+ "BillingStanding",
130
139
  "ChapterPoint",
131
140
  "ChapterResult",
132
141
  "ClipConfig",
@@ -158,6 +167,7 @@ __all__ = [
158
167
  "OutputStatus",
159
168
  "Page",
160
169
  "PageContents",
170
+ "PaymentMethodState",
161
171
  "PermissionError",
162
172
  "PreconditionError",
163
173
  "Preset",
@@ -1,4 +1,4 @@
1
- """Billing resource — an organization's invoices, read-only."""
1
+ """Billing resource — an organization's invoices, budget and outstanding balance."""
2
2
 
3
3
  from __future__ import annotations
4
4
 
@@ -25,10 +25,13 @@ class Billing:
25
25
  upcoming = client.billing.retrieve_upcoming()
26
26
 
27
27
  Invoices are generated automatically when a period closes. There is no API
28
- to create, edit, or delete one — a statement records what happened.
28
+ to create, edit, or delete one — a statement records what happened. The one
29
+ exception is :meth:`settle_outstanding_balance`, which closes the period
30
+ early and produces an ordinary statement for what is owed so far.
29
31
 
30
32
  Monetary amounts are integer minor units (cents) of the invoice currency:
31
- ``total_cents == 1250`` in EUR is 12.50 EUR.
33
+ ``total_cents == 1250`` in EUR is 12.50 EUR. The budget is the exception —
34
+ it is stated in whole EUR as a float, matching how a customer types it.
32
35
  """
33
36
 
34
37
  def __init__(self, transport: Transport) -> None:
@@ -88,3 +91,176 @@ class Billing:
88
91
  billing_pb2.GetUpcomingInvoiceResponse(),
89
92
  opts,
90
93
  ).invoice
94
+
95
+ def retrieve_profile(self, opts: CallOptions | None = None) -> billing_pb2.BillingProfile:
96
+ """Retrieve the organization's payment standing.
97
+
98
+ Reports whether the payment provider holds a chargeable method, and
99
+ whatever it will say about that method for display. Read-only and
100
+ side-effect free — it never creates provider resources. An organization
101
+ that has never touched billing reports ``PAYMENT_METHOD_STATE_NONE``
102
+ and no payment methods.
103
+
104
+ ``payment_method_state`` is the only reliable signal. A method's
105
+ ``brand`` and ``last4`` are frequently absent even for a working card,
106
+ because the provider does not always expose card metadata; render such
107
+ a method as "Card on file" rather than treating the missing digits as
108
+ an error.
109
+ """
110
+ req = billing_pb2.GetBillingProfileRequest()
111
+ return self._t.unary(
112
+ _SERVICE,
113
+ "GetBillingProfile",
114
+ req,
115
+ billing_pb2.GetBillingProfileResponse(),
116
+ opts,
117
+ ).profile
118
+
119
+ def retrieve_budget(self, opts: CallOptions | None = None) -> billing_pb2.Budget:
120
+ """Retrieve the organization's monthly budget and the spend against it.
121
+
122
+ A budget is the organization's own telemetry and it NEVER enforces
123
+ anything: crossing 100% sends an email and changes nothing else. The
124
+ hard cap is the per-app spend limit
125
+ (:meth:`~transcodely.resources.apps.Apps.set_spend_limit`), which does
126
+ refuse new jobs. Limits block; budgets notify.
127
+
128
+ Always returns a budget: an organization that has never set one gets
129
+ ``amount_eur`` absent with ``spent_eur`` still populated, so the current
130
+ period's spend can be shown before a budget exists.
131
+ """
132
+ req = billing_pb2.GetBudgetRequest()
133
+ return self._t.unary(
134
+ _SERVICE,
135
+ "GetBudget",
136
+ req,
137
+ billing_pb2.GetBudgetResponse(),
138
+ opts,
139
+ ).budget
140
+
141
+ def update_budget(
142
+ self,
143
+ amount_eur: float | None = None,
144
+ opts: CallOptions | None = None,
145
+ ) -> billing_pb2.Budget:
146
+ """Set or clear the organization's monthly budget.
147
+
148
+ Pass ``amount_eur`` (must be > 0) to set the budget, or leave it
149
+ ``None`` to clear it and stop the alert emails. :meth:`set_budget` and
150
+ :meth:`clear_budget` are the ergonomic shorthands.
151
+
152
+ Moving the amount never re-arms an alert step already sent this period —
153
+ read ``notified_steps`` on the returned budget to see which have fired.
154
+ """
155
+ req = billing_pb2.UpdateBudgetRequest()
156
+ if amount_eur is not None:
157
+ # Setting the optional field marks presence; leaving it unset omits
158
+ # it from the request, which the server reads as "clear the budget".
159
+ req.amount_eur = amount_eur
160
+ return self._t.unary(
161
+ _SERVICE,
162
+ "UpdateBudget",
163
+ req,
164
+ billing_pb2.UpdateBudgetResponse(),
165
+ opts,
166
+ ).budget
167
+
168
+ def set_budget(self, amount_eur: float, opts: CallOptions | None = None) -> billing_pb2.Budget:
169
+ """Set the organization's monthly budget in EUR (must be > 0).
170
+
171
+ Alert emails go out as spend crosses each step in ``alert_steps`` (50%,
172
+ 80% and 100% today). Nothing is restricted at any of them.
173
+ """
174
+ return self.update_budget(amount_eur, opts)
175
+
176
+ def clear_budget(self, opts: CallOptions | None = None) -> billing_pb2.Budget:
177
+ """Clear the monthly budget, turning the alert emails off (the default)."""
178
+ return self.update_budget(None, opts)
179
+
180
+ def retrieve_outstanding_balance(
181
+ self, opts: CallOptions | None = None
182
+ ) -> billing_pb2.OutstandingBalance:
183
+ """Retrieve the unsettled balance and the threshold it is measured against.
184
+
185
+ Usage that has been accrued and not yet captured onto a statement,
186
+ across every app in the organization. It is a different number from
187
+ :meth:`retrieve_upcoming` (which is what the *current period* accrued,
188
+ while this also carries anything an earlier period left uncaptured) and
189
+ from ``Budget.spent_eur`` (which keeps counting after an invoice is
190
+ issued, while this drops to zero when one is).
191
+
192
+ Reminder emails go out at 80%, 100%, 125%, 150% and 175% of
193
+ ``threshold_cents`` and restrict nothing. Only at ``hard_stop_cents`` —
194
+ twice the threshold — are new jobs refused, with error code
195
+ ``outstanding_balance_exceeded``; work already queued or running still
196
+ finishes and videos keep playing. ``blocked`` reads the same numbers the
197
+ admission gate reads.
198
+
199
+ Always returns a balance: an organization that owes nothing gets one
200
+ with ``outstanding_cents`` 0 and its threshold still populated.
201
+ """
202
+ req = billing_pb2.GetOutstandingBalanceRequest()
203
+ return self._t.unary(
204
+ _SERVICE,
205
+ "GetOutstandingBalance",
206
+ req,
207
+ billing_pb2.GetOutstandingBalanceResponse(),
208
+ opts,
209
+ ).balance
210
+
211
+ def settle_outstanding_balance(
212
+ self, opts: CallOptions | None = None
213
+ ) -> billing_pb2.SettleOutstandingBalanceResponse:
214
+ """Pay the outstanding balance now, without waiting for the period to end.
215
+
216
+ Closes the current period at this instant and produces a real statement
217
+ for everything owed, which the payment provider then charges. On success
218
+ the balance is zero, any admission block is lifted immediately, and the
219
+ trust tier re-evaluates once the statement is paid.
220
+
221
+ Takes no amount on purpose: the figure is whatever the ledger says at
222
+ the instant the settlement runs, so a stale page cannot pay less than is
223
+ owed and leave the difference looking settled.
224
+
225
+ Returns both the :class:`~transcodely.types.Settlement` and the balance
226
+ as it now stands, so a caller that just paid can render the new state
227
+ without a second request.
228
+
229
+ Raises :class:`~transcodely.errors.PreconditionError` with code
230
+ ``settlement_unavailable`` when the deployment has mid-cycle settlement
231
+ switched off — check ``settlement_available`` on the balance before
232
+ offering a "pay now" action — and ``nothing_outstanding`` when there is
233
+ nothing to pay.
234
+ """
235
+ req = billing_pb2.SettleOutstandingBalanceRequest()
236
+ return self._t.unary(
237
+ _SERVICE,
238
+ "SettleOutstandingBalance",
239
+ req,
240
+ billing_pb2.SettleOutstandingBalanceResponse(),
241
+ opts,
242
+ )
243
+
244
+ def create_portal_session(
245
+ self, opts: CallOptions | None = None
246
+ ) -> billing_pb2.BillingPortalSession:
247
+ """Create a session for the payment provider's hosted billing portal.
248
+
249
+ The portal is where a payment method is added or replaced and where
250
+ receipts live — card details never touch this SDK.
251
+
252
+ The first call for an organization also links it to the payment
253
+ provider, so the returned portal is already attached to this
254
+ organization's billing account. Safe to call repeatedly.
255
+
256
+ The session is single-use and expires; request a fresh one per visit
257
+ rather than storing the URL.
258
+ """
259
+ req = billing_pb2.CreateBillingPortalSessionRequest()
260
+ return self._t.unary(
261
+ _SERVICE,
262
+ "CreateBillingPortalSession",
263
+ req,
264
+ billing_pb2.CreateBillingPortalSessionResponse(),
265
+ opts,
266
+ ).session
transcodely/types.py CHANGED
@@ -61,9 +61,34 @@ from transcodely.v1.app_pb2 import (
61
61
  # token for an organization owner plus ``organization_id`` — an API key is
62
62
  # scoped to one app, while an invoice settles a whole organization, so API keys
63
63
  # are rejected.
64
+ #
65
+ # ``BillingProfile`` reports whether the payment provider holds a chargeable
66
+ # method; a portal session is the only place a card is added or replaced, so
67
+ # card details never reach this SDK. Branch on ``PaymentMethodState``, not on
68
+ # the card fields — ``brand`` and ``last4`` are frequently absent even for a
69
+ # working card.
70
+ #
71
+ # ``Budget`` and ``OutstandingBalance`` are three different numbers away from
72
+ # each other and from an invoice: a budget notifies and never enforces, an
73
+ # upcoming invoice is what the CURRENT PERIOD has accrued, and an outstanding
74
+ # balance is what is UNSETTLED — the one that decides whether new jobs are
75
+ # admitted.
64
76
  from transcodely.v1.billing_pb2 import (
77
+ BillingPaymentMethod,
78
+ BillingPortalSession,
79
+ BillingProfile,
80
+ Budget,
81
+ CreateBillingPortalSessionRequest,
82
+ CreateBillingPortalSessionResponse,
83
+ ExposureThresholdSource,
84
+ GetBillingProfileRequest,
85
+ GetBillingProfileResponse,
86
+ GetBudgetRequest,
87
+ GetBudgetResponse,
65
88
  GetInvoiceRequest,
66
89
  GetInvoiceResponse,
90
+ GetOutstandingBalanceRequest,
91
+ GetOutstandingBalanceResponse,
67
92
  GetUpcomingInvoiceRequest,
68
93
  GetUpcomingInvoiceResponse,
69
94
  Invoice,
@@ -72,13 +97,36 @@ from transcodely.v1.billing_pb2 import (
72
97
  InvoiceStatus,
73
98
  ListInvoicesRequest,
74
99
  ListInvoicesResponse,
100
+ OutstandingBalance,
101
+ PaymentMethodState,
102
+ Settlement,
103
+ SettleOutstandingBalanceRequest,
104
+ SettleOutstandingBalanceResponse,
105
+ TrustTier,
106
+ UpdateBudgetRequest,
107
+ UpdateBudgetResponse,
75
108
  )
76
109
  from transcodely.v1.codec_av1_pb2 import AV1Options
77
110
  from transcodely.v1.codec_h264_pb2 import H264Options
78
111
  from transcodely.v1.codec_h265_pb2 import H265Options
79
112
  from transcodely.v1.codec_vp9_pb2 import VP9Options
113
+
114
+ # ``BillingStanding`` is ``BillingProfile.standing`` — derived from the
115
+ # organization's billing facts rather than assigned, so there is nothing to set.
116
+ # ``FREE`` and ``DELINQUENT`` both resolve usage limits to the free tier's, but
117
+ # ``DELINQUENT`` still bills; neither is a suspension. An organization exempt
118
+ # from the payment-method requirement always reports ``ACTIVE``.
119
+ #
120
+ # ``BillingTreatment`` is ``Organization.billing_treatment`` — orthogonal to
121
+ # standing, and assigned rather than derived: standing is a fact about payment
122
+ # health, treatment is the decision about whether automation may act on it. It
123
+ # is populated on admin reads only. ``DunningStage`` belongs to the same wave
124
+ # but reaches no message this SDK can receive, so it stays unexported; reach it
125
+ # at ``transcodely.v1.common_pb2.DunningStage`` if you are decoding admin JSON.
80
126
  from transcodely.v1.common_pb2 import (
81
127
  AudioCodec,
128
+ BillingStanding,
129
+ BillingTreatment,
82
130
  BitrateMode,
83
131
  Container,
84
132
  ContentType,
@@ -388,7 +436,13 @@ __all__ = [
388
436
  "AutoABRConfig",
389
437
  "AutoProfileDefaults",
390
438
  "BYOKConfig",
439
+ "BillingPaymentMethod",
440
+ "BillingPortalSession",
441
+ "BillingProfile",
442
+ "BillingStanding",
443
+ "BillingTreatment",
391
444
  "BitrateMode",
445
+ "Budget",
392
446
  "BurnInStyle",
393
447
  "CancelJobRequest",
394
448
  "CancelJobResponse",
@@ -414,6 +468,8 @@ __all__ = [
414
468
  "CreateAPIKeyResponse",
415
469
  "CreateAppRequest",
416
470
  "CreateAppResponse",
471
+ "CreateBillingPortalSessionRequest",
472
+ "CreateBillingPortalSessionResponse",
417
473
  "CreateFromUrlRequest",
418
474
  "CreateFromUrlResponse",
419
475
  "CreateJobRequest",
@@ -450,6 +506,7 @@ __all__ = [
450
506
  "EventRequest",
451
507
  "EventType",
452
508
  "ExecutionTiming",
509
+ "ExposureThresholdSource",
453
510
  "GOPAlignmentMode",
454
511
  "GcsCredentials",
455
512
  "GcsOriginConfig",
@@ -457,6 +514,10 @@ __all__ = [
457
514
  "GetAPIKeyResponse",
458
515
  "GetAppRequest",
459
516
  "GetAppResponse",
517
+ "GetBillingProfileRequest",
518
+ "GetBillingProfileResponse",
519
+ "GetBudgetRequest",
520
+ "GetBudgetResponse",
460
521
  "GetEndpointHealthRequest",
461
522
  "GetEndpointHealthResponse",
462
523
  "GetInvoiceRequest",
@@ -471,6 +532,8 @@ __all__ = [
471
532
  "GetOrganizationResponse",
472
533
  "GetOriginRequest",
473
534
  "GetOriginResponse",
535
+ "GetOutstandingBalanceRequest",
536
+ "GetOutstandingBalanceResponse",
474
537
  "GetPresetBySlugRequest",
475
538
  "GetPresetBySlugResponse",
476
539
  "GetPresetRequest",
@@ -557,8 +620,10 @@ __all__ = [
557
620
  "OutputSpec",
558
621
  "OutputStatus",
559
622
  "OutputVariantResult",
623
+ "OutstandingBalance",
560
624
  "PaginationRequest",
561
625
  "PaginationResponse",
626
+ "PaymentMethodState",
562
627
  "Preset",
563
628
  "PresetVariant",
564
629
  "PricingSnapshot",
@@ -581,6 +646,9 @@ __all__ = [
581
646
  "SegmentConfig",
582
647
  "SendTestWebhookRequest",
583
648
  "SendTestWebhookResponse",
649
+ "SettleOutstandingBalanceRequest",
650
+ "SettleOutstandingBalanceResponse",
651
+ "Settlement",
584
652
  "StreamingConfig",
585
653
  "SubtitleFormat",
586
654
  "SubtitleOperation",
@@ -593,8 +661,11 @@ __all__ = [
593
661
  "ThumbnailSpec",
594
662
  "ToneMapping",
595
663
  "TopVideo",
664
+ "TrustTier",
596
665
  "UpdateAppRequest",
597
666
  "UpdateAppResponse",
667
+ "UpdateBudgetRequest",
668
+ "UpdateBudgetResponse",
598
669
  "UpdateHostingConfigRequest",
599
670
  "UpdateHostingConfigResponse",
600
671
  "UpdateMeRequest",
transcodely/v1/app_pb2.py CHANGED
@@ -27,13 +27,23 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__
27
27
  from transcodely.v1 import common_pb2 as transcodely_dot_v1_dot_common__pb2
28
28
 
29
29
 
30
- DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18transcodely/v1/app.proto\x12\x0etranscodely.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1btranscodely/v1/common.proto\"\x89\x06\n\x03\x41pp\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x31\n\x06status\x18\x06 \x01(\x0e\x32\x19.transcodely.v1.AppStatusR\x06status\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12@\n\x0b\x61rchived_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\narchivedAt\x88\x01\x01\x12,\n\x0fhosting_enabled\x18\n \x01(\x08H\x02R\x0ehostingEnabled\x88\x01\x01\x12*\n\x0ehosting_status\x18\x0b \x01(\tH\x03R\rhostingStatus\x88\x01\x01\x12&\n\x0c\x63\x64n_hostname\x18\x0c \x01(\tH\x04R\x0b\x63\x64nHostname\x88\x01\x01\x12I\n\x0ehosting_config\x18\r \x01(\x0b\x32\x1d.transcodely.v1.HostingConfigH\x05R\rhostingConfig\x88\x01\x01\x12\x16\n\x06object\x18\x0e \x01(\tR\x06object\x12:\n\x17monthly_spend_limit_eur\x18\x0f \x01(\x01H\x06R\x14monthlySpendLimitEur\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0e\n\x0c_archived_atB\x12\n\x10_hosting_enabledB\x11\n\x0f_hosting_statusB\x0f\n\r_cdn_hostnameB\x11\n\x0f_hosting_configB\x1a\n\x18_monthly_spend_limit_eurJ\x04\x08\x05\x10\x06R\x07webhook\"\xfa\x01\n\x10\x43reateAppRequest\x12\x35\n\x06org_id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^org_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x05orgId\x12 \n\x04name\x18\x02 \x01(\tB\x0c\xbaH\tr\x04\x10\x01\x18<\xc8\x01\x01R\x04name\x12/\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\xf4\x03H\x00R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0e\x65nable_hosting\x18\x05 \x01(\x08H\x01R\renableHosting\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x11\n\x0f_enable_hostingJ\x04\x08\x04\x10\x05R\x07webhook\"P\n\x11\x43reateAppResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61ppJ\x04\x08\x02\x10\x03R\x0ewebhook_secret\"?\n\rGetAppRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\"7\n\x0eGetAppResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"\xbf\x01\n\x10UpdateAppRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\x12\"\n\x04name\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18<H\x00R\x04name\x88\x01\x01\x12/\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\xf4\x03H\x01R\x0b\x64\x65scription\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionJ\x04\x08\x04\x10\x05R\x07webhook\"P\n\x11UpdateAppResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61ppJ\x04\x08\x02\x10\x03R\x0ewebhook_secret\"\xb6\x01\n\x0fListAppsRequest\x12\x35\n\x06org_id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^org_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x05orgId\x12\x41\n\npagination\x18\x02 \x01(\x0b\x32!.transcodely.v1.PaginationRequestR\npagination\x12)\n\x10include_archived\x18\x03 \x01(\x08R\x0fincludeArchived\"\x7f\n\x10ListAppsResponse\x12\'\n\x04\x61pps\x18\x01 \x03(\x0b\x32\x13.transcodely.v1.AppR\x04\x61pps\x12\x42\n\npagination\x18\x02 \x01(\x0b\x32\".transcodely.v1.PaginationResponseR\npagination\"C\n\x11\x41rchiveAppRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\";\n\x12\x41rchiveAppResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"F\n\x14\x45nableHostingRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\">\n\x15\x45nableHostingResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"\xb1\x03\n\rHostingConfig\x12\x32\n\x12\x64\x65\x66\x61ult_visibility\x18\x01 \x01(\tH\x00R\x11\x64\x65\x66\x61ultVisibility\x88\x01\x01\x12\x36\n\x15max_upload_size_bytes\x18\x02 \x01(\x03H\x01R\x12maxUploadSizeBytes\x88\x01\x01\x12\x30\n\x14\x63ors_allowed_origins\x18\x03 \x03(\tR\x12\x63orsAllowedOrigins\x12\\\n\x15\x61uto_profile_defaults\x18\x04 \x01(\x0b\x32#.transcodely.v1.AutoProfileDefaultsH\x02R\x13\x61utoProfileDefaults\x88\x01\x01\x12<\n\x18\x64\x65lete_source_after_days\x18\x05 \x01(\x05H\x03R\x15\x64\x65leteSourceAfterDays\x88\x01\x01\x42\x15\n\x13_default_visibilityB\x18\n\x16_max_upload_size_bytesB\x18\n\x16_auto_profile_defaultsB\x1b\n\x19_delete_source_after_days\"\x96\x02\n\x13\x41utoProfileDefaults\x12\x1b\n\x06\x66ormat\x18\x01 \x01(\tH\x00R\x06\x66ormat\x88\x01\x01\x12\x19\n\x05\x63odec\x18\x02 \x01(\tH\x01R\x05\x63odec\x88\x01\x01\x12*\n\x0emax_resolution\x18\x03 \x01(\tH\x02R\rmaxResolution\x88\x01\x01\x12&\n\x0cquality_tier\x18\x04 \x01(\tH\x03R\x0bqualityTier\x88\x01\x01\x12(\n\rencoding_mode\x18\x05 \x01(\tH\x04R\x0c\x65ncodingMode\x88\x01\x01\x42\t\n\x07_formatB\x08\n\x06_codecB\x11\n\x0f_max_resolutionB\x0f\n\r_quality_tierB\x10\n\x0e_encoding_mode\"\x92\x01\n\x1aUpdateHostingConfigRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\x12\x44\n\x0ehosting_config\x18\x02 \x01(\x0b\x32\x1d.transcodely.v1.HostingConfigR\rhostingConfig\"D\n\x1bUpdateHostingConfigResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"\xc1\x01\n\x17UpdateSpendLimitRequest\x12\x35\n\x06\x61pp_id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x05\x61ppId\x12S\n\x17monthly_spend_limit_eur\x18\x02 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x85\xeb\xff\x1f_\xa0\x02\x42!\x00\x00\x00\x00\x00\x00\x00\x00H\x00R\x14monthlySpendLimitEur\x88\x01\x01\x42\x1a\n\x18_monthly_spend_limit_eur\"A\n\x18UpdateSpendLimitResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"H\n\x0fGetSpendRequest\x12\x35\n\x06\x61pp_id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x05\x61ppId\"\xef\x02\n\x10GetSpendResponse\x12=\n\x0cperiod_start\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bperiodStart\x12\x39\n\nperiod_end\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tperiodEnd\x12\x1b\n\tspent_eur\x18\x03 \x01(\x01R\x08spentEur\x12:\n\x17monthly_spend_limit_eur\x18\x04 \x01(\x01H\x00R\x14monthlySpendLimitEur\x88\x01\x01\x12\x1a\n\x08\x63urrency\x18\x05 \x01(\tR\x08\x63urrency\x12+\n\x11warning_triggered\x18\x06 \x01(\x08R\x10warningTriggered\x12#\n\rlimit_reached\x18\x07 \x01(\x08R\x0climitReachedB\x1a\n\x18_monthly_spend_limit_eur*q\n\tAppStatus\x12\x1a\n\x16\x41PP_STATUS_UNSPECIFIED\x10\x00\x12\x15\n\x11\x41PP_STATUS_ACTIVE\x10\x01\x12\x17\n\x13\x41PP_STATUS_ARCHIVED\x10\x02\x12\x18\n\x14\x41PP_STATUS_SUSPENDED\x10\x03\x32\x91\x06\n\nAppService\x12M\n\x06\x43reate\x12 .transcodely.v1.CreateAppRequest\x1a!.transcodely.v1.CreateAppResponse\x12\x44\n\x03Get\x12\x1d.transcodely.v1.GetAppRequest\x1a\x1e.transcodely.v1.GetAppResponse\x12M\n\x06Update\x12 .transcodely.v1.UpdateAppRequest\x1a!.transcodely.v1.UpdateAppResponse\x12I\n\x04List\x12\x1f.transcodely.v1.ListAppsRequest\x1a .transcodely.v1.ListAppsResponse\x12P\n\x07\x41rchive\x12!.transcodely.v1.ArchiveAppRequest\x1a\".transcodely.v1.ArchiveAppResponse\x12\\\n\rEnableHosting\x12$.transcodely.v1.EnableHostingRequest\x1a%.transcodely.v1.EnableHostingResponse\x12n\n\x13UpdateHostingConfig\x12*.transcodely.v1.UpdateHostingConfigRequest\x1a+.transcodely.v1.UpdateHostingConfigResponse\x12\x65\n\x10UpdateSpendLimit\x12\'.transcodely.v1.UpdateSpendLimitRequest\x1a(.transcodely.v1.UpdateSpendLimitResponse\x12M\n\x08GetSpend\x12\x1f.transcodely.v1.GetSpendRequest\x1a .transcodely.v1.GetSpendResponseb\x06proto3')
30
+ DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x18transcodely/v1/app.proto\x12\x0etranscodely.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1btranscodely/v1/common.proto\"\xe3\x06\n\x03\x41pp\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x15\n\x06org_id\x18\x02 \x01(\tR\x05orgId\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12%\n\x0b\x64\x65scription\x18\x04 \x01(\tH\x00R\x0b\x64\x65scription\x88\x01\x01\x12\x31\n\x06status\x18\x06 \x01(\x0e\x32\x19.transcodely.v1.AppStatusR\x06status\x12\x39\n\ncreated_at\x18\x07 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x39\n\nupdated_at\x18\x08 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\x12@\n\x0b\x61rchived_at\x18\t \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x01R\narchivedAt\x88\x01\x01\x12,\n\x0fhosting_enabled\x18\n \x01(\x08H\x02R\x0ehostingEnabled\x88\x01\x01\x12*\n\x0ehosting_status\x18\x0b \x01(\tH\x03R\rhostingStatus\x88\x01\x01\x12&\n\x0c\x63\x64n_hostname\x18\x0c \x01(\tH\x04R\x0b\x63\x64nHostname\x88\x01\x01\x12I\n\x0ehosting_config\x18\r \x01(\x0b\x32\x1d.transcodely.v1.HostingConfigH\x05R\rhostingConfig\x88\x01\x01\x12\x16\n\x06object\x18\x0e \x01(\tR\x06object\x12:\n\x17monthly_spend_limit_eur\x18\x0f \x01(\x01H\x06R\x14monthlySpendLimitEur\x88\x01\x01\x12\x46\n\rplayer_config\x18\x10 \x01(\x0b\x32\x1c.transcodely.v1.PlayerConfigH\x07R\x0cplayerConfig\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x0e\n\x0c_archived_atB\x12\n\x10_hosting_enabledB\x11\n\x0f_hosting_statusB\x0f\n\r_cdn_hostnameB\x11\n\x0f_hosting_configB\x1a\n\x18_monthly_spend_limit_eurB\x10\n\x0e_player_configJ\x04\x08\x05\x10\x06R\x07webhook\"Z\n\x0cPlayerConfig\x12=\n\x08\x63\x61ptions\x18\x01 \x01(\x0b\x32\x1c.transcodely.v1.CaptionStyleH\x00R\x08\x63\x61ptions\x88\x01\x01\x42\x0b\n\t_captions\"\xf0\x02\n\x0c\x43\x61ptionStyle\x12K\n\x10\x62\x61\x63kground_color\x18\x01 \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^(#[0-9a-fA-F]{6})?$H\x00R\x0f\x62\x61\x63kgroundColor\x88\x01\x01\x12K\n\x12\x62\x61\x63kground_opacity\x18\x02 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\xf0?)\x00\x00\x00\x00\x00\x00\x00\x00H\x01R\x11\x62\x61\x63kgroundOpacity\x88\x01\x01\x12?\n\ntext_color\x18\x03 \x01(\tB\x1b\xbaH\x18r\x16\x32\x14^(#[0-9a-fA-F]{6})?$H\x02R\ttextColor\x88\x01\x01\x12;\n\nfont_scale\x18\x04 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x00\x00\x00\x00\x00\x00\x00@)\x00\x00\x00\x00\x00\x00\xe0?H\x03R\tfontScale\x88\x01\x01\x42\x13\n\x11_background_colorB\x15\n\x13_background_opacityB\r\n\x0b_text_colorB\r\n\x0b_font_scale\"\x8e\x01\n\x19UpdatePlayerConfigRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\x12\x41\n\rplayer_config\x18\x02 \x01(\x0b\x32\x1c.transcodely.v1.PlayerConfigR\x0cplayerConfig\"C\n\x1aUpdatePlayerConfigResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"\xfa\x01\n\x10\x43reateAppRequest\x12\x35\n\x06org_id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^org_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x05orgId\x12 \n\x04name\x18\x02 \x01(\tB\x0c\xbaH\tr\x04\x10\x01\x18<\xc8\x01\x01R\x04name\x12/\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\xf4\x03H\x00R\x0b\x64\x65scription\x88\x01\x01\x12*\n\x0e\x65nable_hosting\x18\x05 \x01(\x08H\x01R\renableHosting\x88\x01\x01\x42\x0e\n\x0c_descriptionB\x11\n\x0f_enable_hostingJ\x04\x08\x04\x10\x05R\x07webhook\"P\n\x11\x43reateAppResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61ppJ\x04\x08\x02\x10\x03R\x0ewebhook_secret\"?\n\rGetAppRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\"7\n\x0eGetAppResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"\xbf\x01\n\x10UpdateAppRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\x12\"\n\x04name\x18\x02 \x01(\tB\t\xbaH\x06r\x04\x10\x01\x18<H\x00R\x04name\x88\x01\x01\x12/\n\x0b\x64\x65scription\x18\x03 \x01(\tB\x08\xbaH\x05r\x03\x18\xf4\x03H\x01R\x0b\x64\x65scription\x88\x01\x01\x42\x07\n\x05_nameB\x0e\n\x0c_descriptionJ\x04\x08\x04\x10\x05R\x07webhook\"P\n\x11UpdateAppResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61ppJ\x04\x08\x02\x10\x03R\x0ewebhook_secret\"\xb6\x01\n\x0fListAppsRequest\x12\x35\n\x06org_id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^org_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x05orgId\x12\x41\n\npagination\x18\x02 \x01(\x0b\x32!.transcodely.v1.PaginationRequestR\npagination\x12)\n\x10include_archived\x18\x03 \x01(\x08R\x0fincludeArchived\"\x7f\n\x10ListAppsResponse\x12\'\n\x04\x61pps\x18\x01 \x03(\x0b\x32\x13.transcodely.v1.AppR\x04\x61pps\x12\x42\n\npagination\x18\x02 \x01(\x0b\x32\".transcodely.v1.PaginationResponseR\npagination\"C\n\x11\x41rchiveAppRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\";\n\x12\x41rchiveAppResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"F\n\x14\x45nableHostingRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\">\n\x15\x45nableHostingResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"\xb1\x03\n\rHostingConfig\x12\x32\n\x12\x64\x65\x66\x61ult_visibility\x18\x01 \x01(\tH\x00R\x11\x64\x65\x66\x61ultVisibility\x88\x01\x01\x12\x36\n\x15max_upload_size_bytes\x18\x02 \x01(\x03H\x01R\x12maxUploadSizeBytes\x88\x01\x01\x12\x30\n\x14\x63ors_allowed_origins\x18\x03 \x03(\tR\x12\x63orsAllowedOrigins\x12\\\n\x15\x61uto_profile_defaults\x18\x04 \x01(\x0b\x32#.transcodely.v1.AutoProfileDefaultsH\x02R\x13\x61utoProfileDefaults\x88\x01\x01\x12<\n\x18\x64\x65lete_source_after_days\x18\x05 \x01(\x05H\x03R\x15\x64\x65leteSourceAfterDays\x88\x01\x01\x42\x15\n\x13_default_visibilityB\x18\n\x16_max_upload_size_bytesB\x18\n\x16_auto_profile_defaultsB\x1b\n\x19_delete_source_after_days\"\x96\x02\n\x13\x41utoProfileDefaults\x12\x1b\n\x06\x66ormat\x18\x01 \x01(\tH\x00R\x06\x66ormat\x88\x01\x01\x12\x19\n\x05\x63odec\x18\x02 \x01(\tH\x01R\x05\x63odec\x88\x01\x01\x12*\n\x0emax_resolution\x18\x03 \x01(\tH\x02R\rmaxResolution\x88\x01\x01\x12&\n\x0cquality_tier\x18\x04 \x01(\tH\x03R\x0bqualityTier\x88\x01\x01\x12(\n\rencoding_mode\x18\x05 \x01(\tH\x04R\x0c\x65ncodingMode\x88\x01\x01\x42\t\n\x07_formatB\x08\n\x06_codecB\x11\n\x0f_max_resolutionB\x0f\n\r_quality_tierB\x10\n\x0e_encoding_mode\"\x92\x01\n\x1aUpdateHostingConfigRequest\x12.\n\x02id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x02id\x12\x44\n\x0ehosting_config\x18\x02 \x01(\x0b\x32\x1d.transcodely.v1.HostingConfigR\rhostingConfig\"D\n\x1bUpdateHostingConfigResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"\xc1\x01\n\x17UpdateSpendLimitRequest\x12\x35\n\x06\x61pp_id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x05\x61ppId\x12S\n\x17monthly_spend_limit_eur\x18\x02 \x01(\x01\x42\x17\xbaH\x14\x12\x12\x19\x85\xeb\xff\x1f_\xa0\x02\x42!\x00\x00\x00\x00\x00\x00\x00\x00H\x00R\x14monthlySpendLimitEur\x88\x01\x01\x42\x1a\n\x18_monthly_spend_limit_eur\"A\n\x18UpdateSpendLimitResponse\x12%\n\x03\x61pp\x18\x01 \x01(\x0b\x32\x13.transcodely.v1.AppR\x03\x61pp\"H\n\x0fGetSpendRequest\x12\x35\n\x06\x61pp_id\x18\x01 \x01(\tB\x1e\xbaH\x1br\x16\x32\x14^app_[a-zA-Z0-9_-]+$\xc8\x01\x01R\x05\x61ppId\"\xef\x02\n\x10GetSpendResponse\x12=\n\x0cperiod_start\x18\x01 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0bperiodStart\x12\x39\n\nperiod_end\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tperiodEnd\x12\x1b\n\tspent_eur\x18\x03 \x01(\x01R\x08spentEur\x12:\n\x17monthly_spend_limit_eur\x18\x04 \x01(\x01H\x00R\x14monthlySpendLimitEur\x88\x01\x01\x12\x1a\n\x08\x63urrency\x18\x05 \x01(\tR\x08\x63urrency\x12+\n\x11warning_triggered\x18\x06 \x01(\x08R\x10warningTriggered\x12#\n\rlimit_reached\x18\x07 \x01(\x08R\x0climitReachedB\x1a\n\x18_monthly_spend_limit_eur*q\n\tAppStatus\x12\x1a\n\x16\x41PP_STATUS_UNSPECIFIED\x10\x00\x12\x15\n\x11\x41PP_STATUS_ACTIVE\x10\x01\x12\x17\n\x13\x41PP_STATUS_ARCHIVED\x10\x02\x12\x18\n\x14\x41PP_STATUS_SUSPENDED\x10\x03\x32\xfe\x06\n\nAppService\x12M\n\x06\x43reate\x12 .transcodely.v1.CreateAppRequest\x1a!.transcodely.v1.CreateAppResponse\x12\x44\n\x03Get\x12\x1d.transcodely.v1.GetAppRequest\x1a\x1e.transcodely.v1.GetAppResponse\x12M\n\x06Update\x12 .transcodely.v1.UpdateAppRequest\x1a!.transcodely.v1.UpdateAppResponse\x12I\n\x04List\x12\x1f.transcodely.v1.ListAppsRequest\x1a .transcodely.v1.ListAppsResponse\x12P\n\x07\x41rchive\x12!.transcodely.v1.ArchiveAppRequest\x1a\".transcodely.v1.ArchiveAppResponse\x12\\\n\rEnableHosting\x12$.transcodely.v1.EnableHostingRequest\x1a%.transcodely.v1.EnableHostingResponse\x12n\n\x13UpdateHostingConfig\x12*.transcodely.v1.UpdateHostingConfigRequest\x1a+.transcodely.v1.UpdateHostingConfigResponse\x12k\n\x12UpdatePlayerConfig\x12).transcodely.v1.UpdatePlayerConfigRequest\x1a*.transcodely.v1.UpdatePlayerConfigResponse\x12\x65\n\x10UpdateSpendLimit\x12\'.transcodely.v1.UpdateSpendLimitRequest\x1a(.transcodely.v1.UpdateSpendLimitResponse\x12M\n\x08GetSpend\x12\x1f.transcodely.v1.GetSpendRequest\x1a .transcodely.v1.GetSpendResponseb\x06proto3')
31
31
 
32
32
  _globals = globals()
33
33
  _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals)
34
34
  _builder.BuildTopDescriptorsAndMessages(DESCRIPTOR, 'transcodely.v1.app_pb2', _globals)
35
35
  if not _descriptor._USE_C_DESCRIPTORS:
36
36
  DESCRIPTOR._loaded_options = None
37
+ _globals['_CAPTIONSTYLE'].fields_by_name['background_color']._loaded_options = None
38
+ _globals['_CAPTIONSTYLE'].fields_by_name['background_color']._serialized_options = b'\272H\030r\0262\024^(#[0-9a-fA-F]{6})?$'
39
+ _globals['_CAPTIONSTYLE'].fields_by_name['background_opacity']._loaded_options = None
40
+ _globals['_CAPTIONSTYLE'].fields_by_name['background_opacity']._serialized_options = b'\272H\024\022\022\031\000\000\000\000\000\000\360?)\000\000\000\000\000\000\000\000'
41
+ _globals['_CAPTIONSTYLE'].fields_by_name['text_color']._loaded_options = None
42
+ _globals['_CAPTIONSTYLE'].fields_by_name['text_color']._serialized_options = b'\272H\030r\0262\024^(#[0-9a-fA-F]{6})?$'
43
+ _globals['_CAPTIONSTYLE'].fields_by_name['font_scale']._loaded_options = None
44
+ _globals['_CAPTIONSTYLE'].fields_by_name['font_scale']._serialized_options = b'\272H\024\022\022\031\000\000\000\000\000\000\000@)\000\000\000\000\000\000\340?'
45
+ _globals['_UPDATEPLAYERCONFIGREQUEST'].fields_by_name['id']._loaded_options = None
46
+ _globals['_UPDATEPLAYERCONFIGREQUEST'].fields_by_name['id']._serialized_options = b'\272H\033r\0262\024^app_[a-zA-Z0-9_-]+$\310\001\001'
37
47
  _globals['_CREATEAPPREQUEST'].fields_by_name['org_id']._loaded_options = None
38
48
  _globals['_CREATEAPPREQUEST'].fields_by_name['org_id']._serialized_options = b'\272H\033r\0262\024^org_[a-zA-Z0-9_-]+$\310\001\001'
39
49
  _globals['_CREATEAPPREQUEST'].fields_by_name['name']._loaded_options = None
@@ -62,50 +72,58 @@ if not _descriptor._USE_C_DESCRIPTORS:
62
72
  _globals['_UPDATESPENDLIMITREQUEST'].fields_by_name['monthly_spend_limit_eur']._serialized_options = b'\272H\024\022\022\031\205\353\377\037_\240\002B!\000\000\000\000\000\000\000\000'
63
73
  _globals['_GETSPENDREQUEST'].fields_by_name['app_id']._loaded_options = None
64
74
  _globals['_GETSPENDREQUEST'].fields_by_name['app_id']._serialized_options = b'\272H\033r\0262\024^app_[a-zA-Z0-9_-]+$\310\001\001'
65
- _globals['_APPSTATUS']._serialized_start=3871
66
- _globals['_APPSTATUS']._serialized_end=3984
75
+ _globals['_APPSTATUS']._serialized_start=4638
76
+ _globals['_APPSTATUS']._serialized_end=4751
67
77
  _globals['_APP']._serialized_start=136
68
- _globals['_APP']._serialized_end=913
69
- _globals['_CREATEAPPREQUEST']._serialized_start=916
70
- _globals['_CREATEAPPREQUEST']._serialized_end=1166
71
- _globals['_CREATEAPPRESPONSE']._serialized_start=1168
72
- _globals['_CREATEAPPRESPONSE']._serialized_end=1248
73
- _globals['_GETAPPREQUEST']._serialized_start=1250
74
- _globals['_GETAPPREQUEST']._serialized_end=1313
75
- _globals['_GETAPPRESPONSE']._serialized_start=1315
76
- _globals['_GETAPPRESPONSE']._serialized_end=1370
77
- _globals['_UPDATEAPPREQUEST']._serialized_start=1373
78
- _globals['_UPDATEAPPREQUEST']._serialized_end=1564
79
- _globals['_UPDATEAPPRESPONSE']._serialized_start=1566
80
- _globals['_UPDATEAPPRESPONSE']._serialized_end=1646
81
- _globals['_LISTAPPSREQUEST']._serialized_start=1649
82
- _globals['_LISTAPPSREQUEST']._serialized_end=1831
83
- _globals['_LISTAPPSRESPONSE']._serialized_start=1833
84
- _globals['_LISTAPPSRESPONSE']._serialized_end=1960
85
- _globals['_ARCHIVEAPPREQUEST']._serialized_start=1962
86
- _globals['_ARCHIVEAPPREQUEST']._serialized_end=2029
87
- _globals['_ARCHIVEAPPRESPONSE']._serialized_start=2031
88
- _globals['_ARCHIVEAPPRESPONSE']._serialized_end=2090
89
- _globals['_ENABLEHOSTINGREQUEST']._serialized_start=2092
90
- _globals['_ENABLEHOSTINGREQUEST']._serialized_end=2162
91
- _globals['_ENABLEHOSTINGRESPONSE']._serialized_start=2164
92
- _globals['_ENABLEHOSTINGRESPONSE']._serialized_end=2226
93
- _globals['_HOSTINGCONFIG']._serialized_start=2229
94
- _globals['_HOSTINGCONFIG']._serialized_end=2662
95
- _globals['_AUTOPROFILEDEFAULTS']._serialized_start=2665
96
- _globals['_AUTOPROFILEDEFAULTS']._serialized_end=2943
97
- _globals['_UPDATEHOSTINGCONFIGREQUEST']._serialized_start=2946
98
- _globals['_UPDATEHOSTINGCONFIGREQUEST']._serialized_end=3092
99
- _globals['_UPDATEHOSTINGCONFIGRESPONSE']._serialized_start=3094
100
- _globals['_UPDATEHOSTINGCONFIGRESPONSE']._serialized_end=3162
101
- _globals['_UPDATESPENDLIMITREQUEST']._serialized_start=3165
102
- _globals['_UPDATESPENDLIMITREQUEST']._serialized_end=3358
103
- _globals['_UPDATESPENDLIMITRESPONSE']._serialized_start=3360
104
- _globals['_UPDATESPENDLIMITRESPONSE']._serialized_end=3425
105
- _globals['_GETSPENDREQUEST']._serialized_start=3427
106
- _globals['_GETSPENDREQUEST']._serialized_end=3499
107
- _globals['_GETSPENDRESPONSE']._serialized_start=3502
108
- _globals['_GETSPENDRESPONSE']._serialized_end=3869
109
- _globals['_APPSERVICE']._serialized_start=3987
110
- _globals['_APPSERVICE']._serialized_end=4772
78
+ _globals['_APP']._serialized_end=1003
79
+ _globals['_PLAYERCONFIG']._serialized_start=1005
80
+ _globals['_PLAYERCONFIG']._serialized_end=1095
81
+ _globals['_CAPTIONSTYLE']._serialized_start=1098
82
+ _globals['_CAPTIONSTYLE']._serialized_end=1466
83
+ _globals['_UPDATEPLAYERCONFIGREQUEST']._serialized_start=1469
84
+ _globals['_UPDATEPLAYERCONFIGREQUEST']._serialized_end=1611
85
+ _globals['_UPDATEPLAYERCONFIGRESPONSE']._serialized_start=1613
86
+ _globals['_UPDATEPLAYERCONFIGRESPONSE']._serialized_end=1680
87
+ _globals['_CREATEAPPREQUEST']._serialized_start=1683
88
+ _globals['_CREATEAPPREQUEST']._serialized_end=1933
89
+ _globals['_CREATEAPPRESPONSE']._serialized_start=1935
90
+ _globals['_CREATEAPPRESPONSE']._serialized_end=2015
91
+ _globals['_GETAPPREQUEST']._serialized_start=2017
92
+ _globals['_GETAPPREQUEST']._serialized_end=2080
93
+ _globals['_GETAPPRESPONSE']._serialized_start=2082
94
+ _globals['_GETAPPRESPONSE']._serialized_end=2137
95
+ _globals['_UPDATEAPPREQUEST']._serialized_start=2140
96
+ _globals['_UPDATEAPPREQUEST']._serialized_end=2331
97
+ _globals['_UPDATEAPPRESPONSE']._serialized_start=2333
98
+ _globals['_UPDATEAPPRESPONSE']._serialized_end=2413
99
+ _globals['_LISTAPPSREQUEST']._serialized_start=2416
100
+ _globals['_LISTAPPSREQUEST']._serialized_end=2598
101
+ _globals['_LISTAPPSRESPONSE']._serialized_start=2600
102
+ _globals['_LISTAPPSRESPONSE']._serialized_end=2727
103
+ _globals['_ARCHIVEAPPREQUEST']._serialized_start=2729
104
+ _globals['_ARCHIVEAPPREQUEST']._serialized_end=2796
105
+ _globals['_ARCHIVEAPPRESPONSE']._serialized_start=2798
106
+ _globals['_ARCHIVEAPPRESPONSE']._serialized_end=2857
107
+ _globals['_ENABLEHOSTINGREQUEST']._serialized_start=2859
108
+ _globals['_ENABLEHOSTINGREQUEST']._serialized_end=2929
109
+ _globals['_ENABLEHOSTINGRESPONSE']._serialized_start=2931
110
+ _globals['_ENABLEHOSTINGRESPONSE']._serialized_end=2993
111
+ _globals['_HOSTINGCONFIG']._serialized_start=2996
112
+ _globals['_HOSTINGCONFIG']._serialized_end=3429
113
+ _globals['_AUTOPROFILEDEFAULTS']._serialized_start=3432
114
+ _globals['_AUTOPROFILEDEFAULTS']._serialized_end=3710
115
+ _globals['_UPDATEHOSTINGCONFIGREQUEST']._serialized_start=3713
116
+ _globals['_UPDATEHOSTINGCONFIGREQUEST']._serialized_end=3859
117
+ _globals['_UPDATEHOSTINGCONFIGRESPONSE']._serialized_start=3861
118
+ _globals['_UPDATEHOSTINGCONFIGRESPONSE']._serialized_end=3929
119
+ _globals['_UPDATESPENDLIMITREQUEST']._serialized_start=3932
120
+ _globals['_UPDATESPENDLIMITREQUEST']._serialized_end=4125
121
+ _globals['_UPDATESPENDLIMITRESPONSE']._serialized_start=4127
122
+ _globals['_UPDATESPENDLIMITRESPONSE']._serialized_end=4192
123
+ _globals['_GETSPENDREQUEST']._serialized_start=4194
124
+ _globals['_GETSPENDREQUEST']._serialized_end=4266
125
+ _globals['_GETSPENDRESPONSE']._serialized_start=4269
126
+ _globals['_GETSPENDRESPONSE']._serialized_end=4636
127
+ _globals['_APPSERVICE']._serialized_start=4754
128
+ _globals['_APPSERVICE']._serialized_end=5648
111
129
  # @@protoc_insertion_point(module_scope)
@@ -21,7 +21,7 @@ APP_STATUS_ARCHIVED: AppStatus
21
21
  APP_STATUS_SUSPENDED: AppStatus
22
22
 
23
23
  class App(_message.Message):
24
- __slots__ = ("id", "org_id", "name", "description", "status", "created_at", "updated_at", "archived_at", "hosting_enabled", "hosting_status", "cdn_hostname", "hosting_config", "object", "monthly_spend_limit_eur")
24
+ __slots__ = ("id", "org_id", "name", "description", "status", "created_at", "updated_at", "archived_at", "hosting_enabled", "hosting_status", "cdn_hostname", "hosting_config", "object", "monthly_spend_limit_eur", "player_config")
25
25
  ID_FIELD_NUMBER: _ClassVar[int]
26
26
  ORG_ID_FIELD_NUMBER: _ClassVar[int]
27
27
  NAME_FIELD_NUMBER: _ClassVar[int]
@@ -36,6 +36,7 @@ class App(_message.Message):
36
36
  HOSTING_CONFIG_FIELD_NUMBER: _ClassVar[int]
37
37
  OBJECT_FIELD_NUMBER: _ClassVar[int]
38
38
  MONTHLY_SPEND_LIMIT_EUR_FIELD_NUMBER: _ClassVar[int]
39
+ PLAYER_CONFIG_FIELD_NUMBER: _ClassVar[int]
39
40
  id: str
40
41
  org_id: str
41
42
  name: str
@@ -50,7 +51,40 @@ class App(_message.Message):
50
51
  hosting_config: HostingConfig
51
52
  object: str
52
53
  monthly_spend_limit_eur: float
53
- def __init__(self, id: _Optional[str] = ..., org_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., status: _Optional[_Union[AppStatus, str]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., archived_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., hosting_enabled: bool = ..., hosting_status: _Optional[str] = ..., cdn_hostname: _Optional[str] = ..., hosting_config: _Optional[_Union[HostingConfig, _Mapping]] = ..., object: _Optional[str] = ..., monthly_spend_limit_eur: _Optional[float] = ...) -> None: ...
54
+ player_config: PlayerConfig
55
+ def __init__(self, id: _Optional[str] = ..., org_id: _Optional[str] = ..., name: _Optional[str] = ..., description: _Optional[str] = ..., status: _Optional[_Union[AppStatus, str]] = ..., created_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., updated_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., archived_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., hosting_enabled: bool = ..., hosting_status: _Optional[str] = ..., cdn_hostname: _Optional[str] = ..., hosting_config: _Optional[_Union[HostingConfig, _Mapping]] = ..., object: _Optional[str] = ..., monthly_spend_limit_eur: _Optional[float] = ..., player_config: _Optional[_Union[PlayerConfig, _Mapping]] = ...) -> None: ...
56
+
57
+ class PlayerConfig(_message.Message):
58
+ __slots__ = ("captions",)
59
+ CAPTIONS_FIELD_NUMBER: _ClassVar[int]
60
+ captions: CaptionStyle
61
+ def __init__(self, captions: _Optional[_Union[CaptionStyle, _Mapping]] = ...) -> None: ...
62
+
63
+ class CaptionStyle(_message.Message):
64
+ __slots__ = ("background_color", "background_opacity", "text_color", "font_scale")
65
+ BACKGROUND_COLOR_FIELD_NUMBER: _ClassVar[int]
66
+ BACKGROUND_OPACITY_FIELD_NUMBER: _ClassVar[int]
67
+ TEXT_COLOR_FIELD_NUMBER: _ClassVar[int]
68
+ FONT_SCALE_FIELD_NUMBER: _ClassVar[int]
69
+ background_color: str
70
+ background_opacity: float
71
+ text_color: str
72
+ font_scale: float
73
+ def __init__(self, background_color: _Optional[str] = ..., background_opacity: _Optional[float] = ..., text_color: _Optional[str] = ..., font_scale: _Optional[float] = ...) -> None: ...
74
+
75
+ class UpdatePlayerConfigRequest(_message.Message):
76
+ __slots__ = ("id", "player_config")
77
+ ID_FIELD_NUMBER: _ClassVar[int]
78
+ PLAYER_CONFIG_FIELD_NUMBER: _ClassVar[int]
79
+ id: str
80
+ player_config: PlayerConfig
81
+ def __init__(self, id: _Optional[str] = ..., player_config: _Optional[_Union[PlayerConfig, _Mapping]] = ...) -> None: ...
82
+
83
+ class UpdatePlayerConfigResponse(_message.Message):
84
+ __slots__ = ("app",)
85
+ APP_FIELD_NUMBER: _ClassVar[int]
86
+ app: App
87
+ def __init__(self, app: _Optional[_Union[App, _Mapping]] = ...) -> None: ...
54
88
 
55
89
  class CreateAppRequest(_message.Message):
56
90
  __slots__ = ("org_id", "name", "description", "enable_hosting")